Tcp

如何快速獲取有關給定網路伺服器的資訊?

  • July 1, 2014
$ 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(版本檢測/作業系統檢測/積極計時)

引用自:https://unix.stackexchange.com/questions/14630