天天看點

nmap指令使用

[Ping掃描(Ping Sweeping)]  

 [端口掃描(Port Scanning)]   

[隐蔽掃描(Stealth Scanning)]  

[UDP掃描(UDP Scanning)]  

[作業系統識别(OS Fingerprinting)]  [Ident掃描(Ident Scanning)]   [選項(Options)]  簡介:  

黑客想要入侵一台電腦,首先要有一套完整的計劃。在入侵系統之前,黑客必須先找到一台目标主機,并查出哪些端口在監聽之後才能進行入侵。  

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

本文全方位地介紹Nmap的使用方法,可以讓安全管理者了解在黑客眼中的站點。并通過使用它,安全管理者可以發現自己網站的漏洞,并逐漸完善自己的系統。  

Nmap 是在免費軟體基金會的GNU General Public License (GPL)下釋出的,可從www.insecure.org/nmap站點上免費下載下傳。下載下傳格式可以是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], www.insecure.org/nmap/)  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.    var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);    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], www.insecure.org/nmap/)  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], www.insecure.org/nmap/)  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

 var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);

知道該端口不在監聽。"-sS"指令将發送一個SYN掃描探測主機或網絡:   

# nmap -sS 192.168.7.7   

Starting nmap V. 2.12 by Fyodor ([email protected], www.insecure.org/nmap/)  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], www.insecure.org/nmap/)  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  

作業系統識别(OS Fingerprinting)   

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

Nmap's作業系統的檢測是很準确也是很有效的,舉例:使用系統Solaris 2.7帶有SYN掃描的指紋驗證堆棧。  

# nmap -sS -O 192.168.7.12   

Starting nmap V. 2.12 by Fyodor ([email protected], www.insecure.org/nmap/)  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 www.yourserver.com   

Starting nmap V. 2.12 by Fyodor ([email protected], www.insecure.org/nmap/)  Interesting ports on www.yourserver.com (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 www.yourserver.com   

小結:  

使用什麼樣的方法來抵制一個黑客使用Nmap,這樣的工具是有的,比如 Scanlogd, Courtney, and Shadow;,然而使用這樣的工具并不能代替網絡安全管理者。因為掃描隻是攻擊的前期準備,站點使用它隻可以進行嚴密的監視。  

使用Nmap監視自己的站點,系統和網絡管理者能發現潛在入侵者對你的系統的探測。