Nmap即Network Mapper,它是在免費(fèi)軟件基金會(huì)的GNU General Public License (GPL)下發(fā)布的。其基本功能有:探測(cè)一組主機(jī)是否在線;掃描主機(jī)端口,嗅探提供的網(wǎng)絡(luò)服務(wù);判斷主機(jī)的操作系統(tǒng)。軟件下載后,執(zhí)行 configure、make和make install三個(gè)命令,將nmap二進(jìn)制碼安裝到系統(tǒng)上,就可以執(zhí)行nmap了。
官網(wǎng)下載:http://nmap.org/download.html
或下載包
rpm -vhU http://nmap.org/dist/nmap-5.21-1.i386.rpm
rpm -vhU http://nmap.org/dist/zenmap-5.21-1.noarch.rpm
測(cè)試系統(tǒng):CentOS6.4
Nmap的語(yǔ)法很簡(jiǎn)單,但功能十分強(qiáng)大。比如:Ping-scan命令就是“-sP”,在確定了目標(biāo)主機(jī)和網(wǎng)絡(luò)之后,即可進(jìn)行掃描。如果以root來(lái)運(yùn)行 Nmap,Nmap的功能會(huì)更加增強(qiáng),因?yàn)槌?jí)用戶(hù)可以創(chuàng)建便于Nmap利用的定制數(shù)據(jù)包。使用Nmap進(jìn)行單機(jī)掃描或是整個(gè)網(wǎng)絡(luò)的掃描很簡(jiǎn)單,只要將帶 有“/mask”的目標(biāo)地址指定給Nmap即可。另外,Nmap允許使用各類(lèi)指定的網(wǎng)絡(luò)地址,比如192.168.1.*,是對(duì)所選子網(wǎng)下的主機(jī)進(jìn)行掃 描。
nmap的使用方法
下面是Nmap支持的四種最基本的掃描方式:
* TCP connect()端口掃描(-sT參數(shù))。
* TCP同步(SYN)端口掃描(-sS參數(shù))。
* UDP端口掃描(-sU參數(shù))。
* Ping掃描(-sP參數(shù))
如果要勾畫(huà)一個(gè)網(wǎng)絡(luò)的整體情況,Ping掃描和TCP SYN掃描最為實(shí)用。
* Ping掃描通過(guò)發(fā)送ICMP(Internet Control Message Protocol,Internet控制消息協(xié)議)回應(yīng)請(qǐng)求數(shù)據(jù)包和TCP應(yīng)答(Acknowledge,簡(jiǎn)寫(xiě)ACK)數(shù)據(jù)包,確定主機(jī)的狀態(tài),非常適合 于檢測(cè)指定網(wǎng)段內(nèi)正在運(yùn)行的主機(jī)數(shù)量。
* TCP SYN掃描一下子不太好理解,但如果將它與TCP connect()掃描比較,就很容易看出這種掃描方式的特點(diǎn)。在TCP connect()掃描中,掃描器利用操作系統(tǒng)本身的系統(tǒng)調(diào)用打開(kāi)一個(gè)完整的TCP連接也就是說(shuō),掃描器打開(kāi)了兩個(gè)主機(jī)之間的完整握手過(guò)程(SYN, SYN-ACK,和ACK)。一次完整執(zhí)行的握手過(guò)程表明遠(yuǎn)程主機(jī)端口是打開(kāi)的。
* TCP SYN掃描創(chuàng)建的是半打開(kāi)的連接,它與TCP connect()掃描的不同之處在于,TCP SYN掃描發(fā)送的是復(fù)位(RST)標(biāo)記而不是結(jié)束ACK標(biāo)記(即,SYN,SYN-ACK,或RST):如果遠(yuǎn)程主機(jī)正在監(jiān)聽(tīng)且端口是打開(kāi)的,遠(yuǎn)程主機(jī)用 SYN-ACK應(yīng)答,Nmap發(fā)送一個(gè)RST;如果遠(yuǎn)程主機(jī)的端口是關(guān)閉的,它的應(yīng)答將是RST,此時(shí)Nmap轉(zhuǎn)入下一個(gè)端口。
-sS 使用SYN+ACK的方法,使用TCP SYN,
-sT 使用TCP的方法, 3次握手全做
-sU 使用UDP的方法
-sP ICMP ECHO Request 送信,有反應(yīng)的端口進(jìn)行調(diào)查
-sF FIN SCAN
-sX
-sN 全部FLAG OFF的無(wú)效的TCP包送信,根據(jù)錯(cuò)誤代碼判斷端口情況
-P0 無(wú)視ICMP ECHO request的結(jié)果,SCAN
-p scan port range 指定SCAN的目端口的范圍
1-100, 或者使用25,100的方式
-O 偵測(cè)OS的種類(lèi)
-oN 文件名 通常格式文件輸出
-oX 文件名 通過(guò)DTD,使用XML格式輸出結(jié)果
-oG 文件名,grep容易的格式輸出
-sV 服務(wù)的程序名和版本SCAN
Ping掃描:入侵者使用Nmap掃描整個(gè)網(wǎng)絡(luò)尋找目標(biāo)。通過(guò)使用“-sP”命令,缺省情況下,Nmap給每個(gè)掃描到的主機(jī)發(fā)送一個(gè)ICMP echo和一個(gè)TCP ACK,主機(jī)對(duì)任何一種的響應(yīng)都會(huì)被Nmap得到。如下所示。
[[email protected] ~]# nmap -sP 192.168.1.60
Starting Nmap 5.21 ( http://nmap.org ) at 2010-06-08 12:46
CST
Nmap scan report for 192.168.1.60
Host is up (0.00085s latency).
Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds
Nmap支持不同類(lèi)別的端口掃描,TCP連接掃描可以使用“-sT”命令,TCP
connect()端口掃描(-sT參數(shù))。具體如下所示:
[[email protected] ~]# nmap -sT 192.168.92.129
Starting Nmap 5.21 ( http://nmap.org ) at 2010-06-08 12:51
CST
Nmap scan report for 192.168.92.129
Host is up (0.0017s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
11111/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.48 seconds
隱蔽掃描(Stealth Scanning) 。在掃描時(shí),如果攻擊者不想使其信息被記錄在目標(biāo)系統(tǒng)日志上,TCP SYN掃描可幫你的忙。使用“-sS”命令,就可以發(fā)送一個(gè)SYN掃描探測(cè)主機(jī)或網(wǎng)絡(luò)。如下所示。
[[email protected] ~]# nmap -sS www.baidu.com
Starting Nmap 5.21 ( http://nmap.org ) at 2010-06-08 12:51
CST
Nmap scan report for www.baidu.com (220.181.6.175)
Host is up (0.0094s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 56.54 seconds
如果一個(gè)攻擊者想進(jìn)行UDP掃描,即可知哪些端口對(duì)UDP是開(kāi)放的。Nmap將發(fā)送一個(gè)O字節(jié)的UDP包到每個(gè)端口。如果主機(jī)返回端口不可達(dá),則表示端口是關(guān)閉的。UDP端口掃描(-sU參數(shù))。如下所示。
[[email protected] ~]# nmap -sU 192.168.92.129
Starting Nmap 5.21 ( http://nmap.org ) at 2010-06-08 12:53
CST
Nmap scan report for 192.168.92.129
Host is up (0.000019s latency).
Not shown: 996 closed ports
PORT
STATE SERVICE
68/udp open|filtered dhcpc
111/udp open
rpcbind
123/udp open|filtered ntp
631/udp open|filtered ipp
Nmap done: 1 IP address (1 host up) scanned in 1.93 secon
操作系統(tǒng)識(shí)別。通過(guò)使用“-O”選項(xiàng),就可以探測(cè)遠(yuǎn)程操作系統(tǒng)的類(lèi)型。Nmap通過(guò)向主機(jī)發(fā)送不同類(lèi)型的探測(cè)信號(hào),縮小查找的操作系統(tǒng)系統(tǒng)的范圍。如圖6所示。
[[email protected] ~]# nmap -sS -O 192.168.92.129
Starting Nmap 5.21 ( http://nmap.org ) at 2010-06-08 12:56
CST
Nmap scan report for 192.168.92.129
Host is up (0.00024s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
11111/tcp open unknown
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.15 – 2.6.30
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at
http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.72 seconds
Ident掃描。攻擊者都喜歡尋找一臺(tái)對(duì)于某些進(jìn)程存在漏洞的電腦,比如一個(gè)以root運(yùn)行的WEB服務(wù)器。如果目標(biāo)機(jī)運(yùn)行了identd,攻擊 者就可以通過(guò)“-I”選項(xiàng)的TCP連接發(fā)現(xiàn)哪個(gè)用戶(hù)擁有http守護(hù)進(jìn)程。我們以掃描一個(gè)Linux WEB服務(wù)器為例,使用如下命令即可:
[[email protected] ~]# nmap -sT -p 80 -O www.baidu.com
Starting Nmap 5.21 ( http://nmap.org ) at 2010-06-08 12:58
CST
Nmap scan report for www.baidu.com (220.181.6.175)
Host is up (0.0069s latency).
PORT STATE SERVICE
80/tcp filtered http
Warning: OSScan results may be unreliable because we could not find
at least 1 open and 1 closed port
Device type: general purpose|storage-misc|WAP|game console
Running (JUST GUESSING) : Apple Mac OS X 10.5.X (96%), BlueArc
embedded (87%), KCorp embedded (86%), Nintendo embedded (86%)
Aggressive OS guesses: Apple Mac OS X 10.5.5 (Leopard) (96%),
BlueArc Titan 2100 NAS device (87%), KCorp KLG-575 WAP (86%),
Nintendo DS game console (86%)
No exact OS matches for host (test conditions non-ideal).
OS detection performed. Please report any incorrect results at
http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.39 seconds
[[email protected] ~]# nmap -sT -p 80 -O 192.168.92.129
Starting Nmap 5.21 ( http://nmap.org ) at 2010-06-08 13:00
CST
Nmap scan report for 192.168.92.129
Host is up (0.00014s latency).
PORT STATE SERVICE
80/tcp open http
Warning: OSScan results may be unreliable because we could not find
at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.15 – 2.6.30
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at
http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 2.86 seconds
隱藏掃描的源地址:
假設(shè)你的系統(tǒng)IP是192.168.1.20,但是你希望你的系統(tǒng)發(fā)出的所有NMAP包都被標(biāo)注為IP地址20.20.20.20,那你可以用下面的命令來(lái)對(duì)名為sandi德系統(tǒng)發(fā)出數(shù)據(jù)包:
nmap -S 20.20.20.20 -e eth0 -P0 -sS -v sandi
-P0(不PING)和-sS(TCP SYN隱藏端口掃描)使得Nmap執(zhí)行基于 TCP掃描但不首先發(fā)ping 數(shù)據(jù)包。-sS選項(xiàng)能幫助進(jìn)行的掃描通過(guò)過(guò)濾初始SYN數(shù)據(jù)包的防火墻。
要讓系統(tǒng)使用端口53來(lái)發(fā)送數(shù)據(jù)包執(zhí)行和上面相似的掃描,可發(fā)出下面的命令
nmap -g 53 -S 20.20.20.20 -e eth0 -P0 -sS -v sandi
除了以上這些掃描,Nmap還提供了很多選項(xiàng),這是很多Linux攻擊者的必備法寶之一,通過(guò)這個(gè)軟件,我們就可以對(duì)系統(tǒng)了如指掌,從而為下面的攻擊打下良好的基礎(chǔ)。