nmap掃描器的使用


找出網絡上的主機,測試哪些端口在監聽,這些工作通常是由掃描來實現的。掃描網絡是***進行***的第一步。通過使用掃描器(如Nmap)掃描網絡,尋找存在漏洞的目標主機。一旦發現了有漏洞的目標,接下來就是對監聽端口的掃描。Nmap通過使用TCP協議棧指紋準確地判斷出被掃主機的操作系統類型。 

本文全方位地介紹Nmap的使用方法,可以讓安全管理員瞭解在***眼中的站點。並通過使用它,安全管理員可以發現自己網站的漏洞,並逐步完善自己的系統。 

[Ping掃描(Ping Sweeping)]  
[端口掃描(Port Scanning)]  
[隱蔽掃描(Stealth Scanning)] 
[UDP掃描(UDP Scanning)] 
[操作系統識別(OS Fingerprinting)] 
[Ident掃描(Ident Scanning)]  
[選項(Options)] 
[小結]  

Nmap是在免費軟件基金會的GNU General Public License (GPL)下發布的,可從[url]www.insecure.org/nmap[/url]站點上免費下載。下載格式可以是tgz格式的源碼或RPM格式。目前較穩定的版本是2.12。帶有圖形終端,本文集中討論Nmap命令的使用。 Nmap的語法相當簡單。Nmap的不同選項和-s標誌組成了不同的掃描類型,比如:一個Ping-scan命令就是"-sP"。在確定了目標主機和網絡之後,即可進行掃描。如果以root來運行Nmap,Nmap的功能會大大的增強,因爲超級用戶可以創建便於Nmap利用的定製數據包。 

在目標機上,Nmap運行靈活。使用Nmap進行單機掃描或是整個網絡的掃描很簡單,只要將帶有"/mask"的目標地址指定給Nmap即可。地址是"victim/24", 則目標是c類網絡,地址是"victim/16", 則目標是B類網絡。 

另外,Nmap允許你使用各類指定的網絡地址,比如 192.168.7.*,是指192.168.7.0/24, 或 192.168.7.1,4,8-12,對所選子網下的主機進行掃描。 

Ping掃描(Ping Sweeping) 

***者使用Nmap掃描整個網絡尋找目標。通過使用" -sP"命令,進行ping掃描。缺省情況下,Nmap給每個掃描到的主機發送一個ICMP echo和一個TCP ACK, 主機對任何一種的響應都會被Nmap得到。 
舉例:掃描192.168.7.0網絡: 

# nmap -sP 192.168.7.0/24 
Starting nmap V. 2.12 by Fyodor ([email protected], [url]www.insecure.org/nmap/[/url]) 
Host (192.168.7.11) appears to be up. 
Host (192.168.7.12) appears to be up. 
Host (192.168.7.76) appears to be up. 
Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 1 second 

如果不發送ICMP echo請求,但要檢查系統的可用性,這種掃描可能得不到一些站點的響應。在這種情況下,一個TCP"ping"就可用於掃描目標網絡。 

一個TCP"ping"將發送一個ACK到目標網絡上的每個主機。網絡上的主機如果在線,則會返回一個TCP RST響應。使用帶有ping掃描的TCP ping選項,也就是"PT"選項可以對網絡上指定端口進行掃描(本文例子中指的缺省端口是80(http)號端口),它將可能通過目標邊界路由器甚至是防火牆。注意,被探測的主機上的目標端口無須打開,關鍵取決於是否在網絡上。 
# nmap -sP -PT80 192.168.7.0/24 
TCP probe port is 80 

Starting nmap V. 2.12 by Fyodor ([email protected], [url]www.insecure.org/nmap/[/url]) 
Host (192.168.7.11) appears to be up. 
Host (192.168.7.12) appears to be up. 
Host (192.168.7.76) appears to be up. 
Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 1 second 

當潛在***者發現了在目標網絡上運行的主機,下一步是進行端口掃描。 
Nmap支持不同類別的端口掃描TCP連接, TCP SYN, Stealth FIN, Xmas Tree,Null和UDP掃描。 

端口掃描(Port Scanning) 

一個***者使用TCP連接掃描很容易被發現,因爲Nmap將使用connect()系統調用打開目標機上相關端口的連接,並完成三次TCP握手。***登錄到主機將顯示開放的端口。一個tcp連接掃描使用"-sT"命令如下。 
# nmap -sT 192.168.7.12 
Starting nmap V. 2.12 by Fyodor ([email protected], [url]www.insecure.org/nmap/[/url]) 
Interesting ports on (192.168.7.12): 
Port State Protocol Service 
7 open tcp echo 
9 open tcp discard 
13 open tcp daytime 
19 open tcp chargen 
21 open tcp ftp 
... 
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds 

隱蔽掃描(Stealth Scanning) 

如果一個***者不願在掃描時使其信息被記錄在目標系統日誌上,TCP SYN掃描可幫你的忙,它很少會在目標機上留下記錄,三次握手的過程從來都不會完全實現。通過發送一個SYN包(是TCP協議中的第一個包)開始一次SYN的掃描。任何開放的端口都將有一個SYN|ACK響應。然而,***者發送一個RST替代ACK,連接中止。三次握手得不到實現,也就很少有站點能記錄這樣的探測。如果是關閉的端口,對最初的SYN信號的響應也會是RST,讓NMAP知道該端口不在監聽。"-sS"命令將發送一個SYN掃描探測主機或網絡: 

# nmap -sS 192.168.7.7 

Starting nmap V. 2.12 by Fyodor ([email protected], [url]www.insecure.org/nmap/[/url]) 
Interesting ports on saturnlink.nac.net (192.168.7.7): 
Port State Protocol Service 
21 open tcp ftp 
25 open tcp smtp 
53 open tcp domain 
80 open tcp http 
... 

Nmap run completed -- 1 IP address (1 host up) scanned in 1 second 

雖然SYN掃描可能不被注意,但他們仍會被一些***檢測系統捕捉。Stealth FIN,Xmas樹和Null scans可用於躲避包過濾和可檢測進入受限制端口的SYN包。這三個掃描器對關閉的端口返回RST,對開放的端口將吸收包。一個 FIN "-sF"掃描將發送一個FIN包到每個端口。 
然而Xmas掃描"-sX"打開FIN, URG和PUSH的標誌位,一個Null scans "-sN"關閉所有的標誌位。因爲微軟不支持TCP標準,所以FIN, Xmas Tree和Null scans在非微軟公司的操作系統下才有效。 


UDP掃描(UDP Scanning) 

如果一個***者尋找一個流行的UDP漏洞,比如 rpcbind漏洞或cDc Back Orifice。爲了查出哪些端口在監聽,則進行UDP掃描,即可知哪些端口對UDP是開放的。Nmap將發送一個O字節的UDP包到每個端口。如果主機返回端口不可達,則表示端口是關閉的。但這種方法受到時間的限制,因爲大多數的UNIX主機限制ICMP錯誤速率。幸運的是,Nmap本身檢測這種速率並自身減速,也就不會產生溢出主機的情況。 

# nmap -sU 192.168.7.7 

WARNING: -sU is now UDP scan -- for TCP FIN scan use -sF 
Starting nmap V. 2.12 by Fyodor ([email protected], [url]www.insecure.org/nmap/[/url]) 
Interesting ports on saturnlink.nac.net (192.168.7.7): 
Port State Protocol Service 
53 open udp domain 
111 open udp sunrpc 
123 open udp ntp 
137 open udp netbios-ns 
138 open udp netbios-dgm 
177 open udp xdmcp 
1024 open udp unknown 

Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds 


操作系統識別(OS Fingerprinting) 

通常一個***者可能對某個操作系統的漏洞很熟悉,能很輕易地進入此操作系統的機器。一個常見的選項是TCP/IP上的指紋,帶有"-O"選項決定遠程操作系統的類型。這可以和一個端口掃描結合使用,但不能和ping掃描結合使用。Nmap通過向主機發送不同類型的探測信號,縮小查找的操作系統系統的範圍。指紋驗證TCP包括使用FIN探測技術發現目標機的響應類型。BOGUS的標誌探測,發現遠程主機對發送的帶有SYN包的不明標誌的反應,TCP 初始序列號(ISN)取樣發現ISN數值的樣式,也可以用另外的方式決定遠程操作系統。有一篇權威的關於指紋(fingertprinting)的文章,作者:Fyodor,也是namp的作者,參見地址:[url]http://www.insecure.org/nmap/nmap-fingerprinting-article.html[/url] 

Nmap's操作系統的檢測是很準確也是很有效的,舉例:使用系統Solaris 2.7帶有SYN掃描的指紋驗證堆棧。 
# nmap -sS -O 192.168.7.12 

Starting nmap V. 2.12 by Fyodor ([email protected], [url]www.insecure.org/nmap/[/url]) 
Interesting ports on comet (192.168.7.12): 
Port State Protocol Service 
7 open tcp echo 
9 open tcp discard 
13 open tcp daytime 
19 open tcp chargen 
21 open tcp ftp 
... 
TCP Sequence Prediction: Class=random positive increments 
Difficulty=17818 (Worthy challenge) 
Remote operating system guess: Solaris 2.6 - 2.7 

Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds 


Ident掃描(Ident Scanning) 

一個***者常常尋找一臺對於某些進程存在漏洞的電腦。比如,一個以root運行的WEB服務器。如果目標機運行了identd,一個***者使用Nmap通過"-I"選項的TCP連接,就可以發現哪個用戶擁有http守護進程。我們將掃描一個Linux WEB服務器爲例: 

# nmap -sT -p 80 -I -O [url]www.yourserver.com[/url] 

Starting nmap V. 2.12 by Fyodor ([email protected], [url]www.insecure.org/nmap/[/url]) 
Interesting ports on [url]www.yourserver.com[/url] (xxx.xxx.xxx.xxx): 
Port State Protocol Service Owner 
80 open tcp http root 

TCP Sequence Prediction: Class=random positive increments 
Difficulty=1140492 (Good luck!) 
Remote operating system guess: Linux 2.1.122 - 2.1.132; 2.2.0-pre1 - 2.2.2 

Nmap run completed -- 1 IP address (1 host up) scanned in 1 second 

如果你的WEB服務器是錯誤的配置並以root來運行,象上例一樣,它將是黎明前的黑暗。 

Apache運行在root下,是不安全的實踐,你可以通過把/etc/indeed.conf中的auth服務註銷來阻止ident請求,並重新啓動ident。另外也可用使用ipchains或你的最常用的防火牆,在網絡邊界上執行防火牆規則來終止ident請求,這可以阻止來路不明的人探測你的網站用戶擁有哪些進程。 


選項(Options) 

除了以上這些掃描,Nmap還提供了無數選項。有一個是"-PT",,我們已經介紹過了。在目標機或網絡上常見的未經過濾的端口,進行TCP "ping"掃描。 

另一個選項是"-P0"。在缺省設置下試圖掃描一個端口之前,Nmap將用TCP ping" 和 ICMP echo命令ping一個目標機,如果ICMP 和TCP的探測掃描得不到響應,目標主機或網絡就不會被掃描,即使他們是運行着的。而"-P0"選項允許在掃描之前不進行ping,即可進行掃描。 

你應該習慣使用"-v"命令,它詳細列出所有信息,能和所有的掃描選項一起使用。你能反覆地使用這個選項,獲得有關目標機的更多信息。 

使用"-p "選項,可以指定掃描端口。比如 ,***者想探測你的web服務器的ftp(port 21),telnet (port 23), dns (port 53), http (port 80),想知道你所使用的操作系統,它將使用SYN掃描。 

# nmap -sS -p 21,23,53,80 -O -v [url]www.yourserver.com[/url] 


小結: 
使用什麼樣的方法來抵制一個***使用Nmap,這樣的工具是有的,比如 Scanlogd, Courtney, and Shadow;,然而使用這樣的工具並不能代替網絡安全管理員。因爲掃描只是***的前期準備,站點使用它只可以進行嚴密的監視。使用Nmap監視自己的站點,系統和網絡管理員能發現潛在***者對你的系統的探
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章