參考:
Nmap中文手冊 http://www.nmap.com.cn/doc/manual.shtm
《Nmap滲透測試指南》商廣明
基礎
關於namp
nmap是一款用於網絡探測和安全審覈的工具。nmap使用原始IP報文來發現網絡上有哪些主機,提供什麼服務。
nmap的命令格式:nmap <選項> <目標>
~
目標格式
對於目標,namp提供了一種“八位字節”的方法進行設置。格式如下:
192.168.123.0-255
其等效於下面的CIDR表示法:
192.168.123.0/8
主機發現
nmap提供了很多主機發現的選項。用戶可以通過使用列表掃描(-sL)或者 通過關閉ping (-P0)跳過ping的步驟,也可以使用多個端口把TCP的SYN/ACK、UDP、ICMP 任意組合起來。
-sL
只列出網絡上的主機而不對它們發送報文。但是仍然可以獲取它們的名字。例如:
-sP
僅僅使用ping掃描,然後打印對掃描做出了相應的機器。
可以用來檢測網絡中有多少臺主機正在運行。
但是無法探測出使用了防火牆的主機。
-P0
完全跳過namp發現階段,這樣做的好處是穿透禁止ping的防火牆,也可以避免被防火牆發現。
端口掃描
端口的狀態
namp可以掃描超過1660個TCP端口,每個端口可以被分爲6種狀態:open(開放的), closed(關閉的),filtered(被過濾的), unfiltered(未被過濾的), open|filtered(開放或者被過濾的),或者 closed|filtered(關閉或者被過濾的)。
常見的幾種狀態如下圖。
注意能否訪問和端口是否開放沒有聯繫。
掃描方法
可以使用-T0 ~ -T5來設置掃描速度,較慢的速度可以逃避IDS,較快的速度對網絡要求較高,並且可能犧牲準確性。
使用-p指定要掃描的端口。
例如下圖指定掃描80端口,對於192.168.199.1,速度爲T5的快速掃描沒能得出正確結論(open),只能說是filtered。
nmap支持十幾種掃描技術,常見的如下。
-sS
TCP SYN掃描,最受歡迎,速度很快,可以一秒鐘掃描幾千個端口。
SYN又被稱爲半開放掃描,因爲它不打開一個完全的TCP連接。它發送一個SYN報文,然後等待響應。 SYN/ACK表示端口在監聽 (開放),而 RST (復位)表示沒有監聽者。
SYN掃描相對來說不易被注意到,因爲它從來不完成TCP連接。
-sU
UDP掃描,常見的UDP服務包括DNS,SNMP,和DHCP。
UDP掃描發送空的(沒有數據)UDP報頭到每個目標端口。 如果返回ICMP端口不可到達錯誤(類型3,代碼3), 該端口是closed(關閉的)。 其它ICMP不可到達錯誤(類型3, 代碼1,2,9,10,或者13)表明該端口是filtered(被過濾的)。
-sA
TCP ACK掃描,不能確定是open的還是open|filtered。
-sA用於發現防火牆規則。確定它們是有狀態的還是無狀態的,哪些端口是被過濾的。
探測
版本探測
除了探測到端口狀態之外,還可以對其上面運行的服務和版本號進行探測。
如果管理員對其進行了別有用心的設置,探測結果可能出錯。不過一般都是對的。
系統探測
還可以探測主機使用的操作系統。可能只能通過TTL來判斷吧。
逃避防火牆/IDS的檢測
-f
對報文分段,更容易逃避檢測。
-D
使用虛假的誘餌地址發包,讓對方的管理員以爲是誘餌而忽略掉你真正的請求。
可以使用-D 加 數個地址
也可以使用-D 加 RND:10 這種格式,意味着生成10個隨機的地址。
-sI
源地址欺騙
--source-port
源端口欺騙。
-g參數等效。
--spoof-mac
MAC地址欺騙
--data-length
附加隨機數據讓自己長得不像TCP或ICMP包。
輸出
默認的輸出是直接輸出到命令行界面,不過還有其它的輸出方式。
包括XML輸出,XML輸出是最重要的輸出形式。
-oN
將命令行輸出的內容保存到txt文件中,最簡單的輸出形式。
-oX
保存爲.xml格式。
信息蒐集
使用namp的NES腳本,可以對目標進行儘可能全面的信息收集。
--ip-geolocation-*
顯示IP的地理位置。
--script whois
顯示域名註冊運營商等信息。
--script ip2hosts
ip反查,可以查出一個網站上綁定的所有域名。
--script http-stored-xss.nse
探測xss漏洞。
--script dns-brute --script-args dms-brutr.domain=
探測子域名和DNS服務主機名