Tcp
如何快速獲取有關給定網路伺服器的資訊?
$ time nmap -q -sV -P0 -p80 google.com | fgrep '80/tcp open' 80/tcp open http Google httpd 2.0 (GFE) real 0m6.563s user 0m0.280s sys 0m0.016s $
有沒有更快的方法來獲取有關網路伺服器的資訊?
Google httpd 2.0 (GFE) 就足夠了
對於大多數 HTTP 伺服器,Nmap 只是抓取 Server 標頭,這樣就足夠了。要獲取該資訊,請嘗試以下操作:
printf "HEAD / HTTP/1.0\r\nHost: $TARGET\r\n\r\n" | nc $TARGET 80 | awk '$1=="Server:"{$1="";print}'
否則,如果你想使用 Nmap,有一些方法可以加快速度。
- 用於
-n
避免進行名稱解析- 使用
--version-light
或--version-intensity 0
減少發送的探測數。這對大多數 HTTP 伺服器沒有影響,因為預設探測通常是匹配的。- 用於
-Pn
跳過主機發現。你已經有了這個 as-P0
,它可以工作,但是是較舊的語法。總之,這些將節省幾毫秒。不幸的是,您看到的 6 秒是 Nmap 等待伺服器首先發送數據。Nmap 以特定順序嘗試服務檢測探測:首先是 NULL 探測(等待伺服器首先發送),然後是“用於”正在掃描的埠的任何探測,然後是任何其他稀有度低於版本強度的探測(預設7)。探針及其埠和稀有度在
nmap-service-probes
文件中定義,您可以對其進行編輯。不過,這是一個全域設置,因此如果您對其進行編輯,您將降低 Nmap 對於一般版本檢測的用處。找到該Probe TCP NULL
行,並將其totalwaitms
下方的值更改為較小的值,例如100
. 它應該看起來像這樣:# This is the NULL probe that just compares any banners given to us ##############################NEXT PROBE############################## Probe TCP NULL q|| # Wait for at least 6 seconds for data. It used to be 5, but some # smtp services have lately been instituting an artificial pause (see # FEATURE('greet_pause') in Sendmail, for example) totalwaitms 100
為避免在所有其他掃描中弄亂 Nmap,請製作
nmap-service-probes
文件副本並使用選項參考其位置--datadir
。這是我得到的結果:$ time nmap -Pn -sV -n -p80 $TARGET --datadir=. | grep '^80/tcp' 80/tcp open http Google httpd 2.0 (GFE) real 0m0.753s user 0m0.472s sys 0m0.032s
好吧,這取決於您要查找的“資訊”。假設您知道正在執行的 HTTP(S) 服務和版本(IIS / Apache / nginx),那麼您可以了解底層作業系統是什麼。
您要查找的資訊越多,掃描所需的時間就越長(如果您觸發 IDS,掃描可能需要很長時間):
使用 nmap (FAST):
$ nmap -PN -sV -n -T4 --host-timeout 20s -p80 www.website.tld
使用 nmap(更慢但更多資訊)
$ nmap -PN -n -sU -sS -A www.website.tld
-A 等價於 -sV -O -T4(版本檢測/作業系統檢測/積極計時)