nmap 使用介紹
nmap是目前為止最廣為使用的國(guó)外端口掃描工具之一。我們可以從http://www.insecure.org/進(jìn)行下載,可以很容易的安裝到Windows和unix操作系統(tǒng)中,包括mac os x(通過(guò)configure、make 、make install等命令)也可以直接從http://www.insecure.org/下載windows二進(jìn)制(包括所需要的winpcap)也可以從http://www.nmapwin.org/獲得nmap的圖形windows。
我們可以使用ping掃描的方法(-sP),與fping的工作方式比較相似,它發(fā)送icmp回送請(qǐng)求到指定范圍的ip地址并等待響應(yīng),F(xiàn)在很多主機(jī)在掃描的時(shí)候都做了處理,阻塞icmp請(qǐng)求,這種情況下。nmap將嘗試與主機(jī)的端口80進(jìn)行連接,如果可以接收到響應(yīng)(可以是syn/ack,也可以是rst),那么證明主機(jī)正在運(yùn)行,反之,則無(wú)法判斷主機(jī)是否開(kāi)機(jī)或者是否在網(wǎng)絡(luò)上互連。
掃描tcp端口
這里-sR是怎樣在打開(kāi)的端口上利用RPC命令來(lái)判斷它們是否運(yùn)行了RPC服務(wù)。
nmap可以在進(jìn)行端口掃描的tcp報(bào)文來(lái)做一些秘密的事情。首先,要有一個(gè)SYN掃描(-sS),它只做建立TCP連接的前面一些工作,只發(fā)送一個(gè)設(shè)置SYN標(biāo)志的TCP報(bào)文,一個(gè)RESET報(bào)文,那么nmap假設(shè)這個(gè)端口是關(guān)閉的,那么就不做任何事情了。如果接收到一個(gè)響應(yīng),它并不象正常的連接一樣對(duì)這個(gè)報(bào)文進(jìn)行確認(rèn),而是發(fā)送一個(gè)RET報(bào)文,TCP的三次握手還沒(méi)有完成,許多服務(wù)將不會(huì)記錄這次連接。
有的時(shí)候,nmap會(huì)告訴我們端口被過(guò)濾,這意味著有防火墻或端口過(guò)濾器干擾了nmap,使其不能準(zhǔn)確的判斷端口是打開(kāi)還是關(guān)閉的,有的防火墻只能過(guò)濾掉進(jìn)入的連接。
掃描協(xié)議
如果試圖訪問(wèn)另一端無(wú)程序使用的UDP端口,主機(jī)將發(fā)回一個(gè)icmp“端口不可達(dá)”的提示消息,IP協(xié)議也是一樣。每個(gè)傳輸層的IP協(xié)議都有一個(gè)相關(guān)聯(lián)的編號(hào),使用最多的是ICMP(1)、TCP(6)和UDP(17)。所有的IP報(bào)文都有一個(gè)“協(xié)議”域用于指出其中的傳輸層報(bào)文頭所使用的協(xié)議。如果我們發(fā)送一個(gè)沒(méi)有傳輸層報(bào)文頭的原始IP報(bào)文并把其協(xié)議域編號(hào)為130[該編號(hào)是指類似IPSEC協(xié)議的被稱為安全報(bào)文外殼或SPS協(xié)議],就可以判斷這個(gè)協(xié)議是否在主機(jī)上實(shí)現(xiàn)了。如果我們得到的是ICMP協(xié)議不可達(dá)的消息,意味著該協(xié)議沒(méi)有被實(shí)現(xiàn),否則就是已經(jīng)實(shí)現(xiàn)了,用法為-sO.
隱蔽掃描行為
nmap給出了幾個(gè)不同的掃描選項(xiàng),其中一些可以配套著隱藏掃描行為,使得不被系統(tǒng)日志、防火墻和IDS檢測(cè)到。提供了一些隨機(jī)的和欺騙的特性。具體例子如下:
FTP反彈,在設(shè)計(jì)上,F(xiàn)TP自身存在一個(gè)很大的漏洞,當(dāng)使用FTP客戶機(jī)連接到FTP服務(wù)器時(shí),你的客戶機(jī)在TCP端口21上與FTP服務(wù)器對(duì)話,這個(gè)TCP連接稱為控制連接。FTP服務(wù)器現(xiàn)在需要另一條與客戶機(jī)連接,該連接稱為數(shù)據(jù)連接,在這條連接上將傳送實(shí)際的文件數(shù)據(jù),客戶機(jī)將開(kāi)始監(jiān)聽(tīng)另一個(gè)TCP端口上從服務(wù)器發(fā)揮的數(shù)據(jù)連接,接下來(lái)執(zhí)行一個(gè)PORT命令到服務(wù)器,告訴它建立一條數(shù)據(jù)連接到客戶機(jī)的IP地址和一個(gè)新打開(kāi)的端口,這種操作方法稱為主動(dòng)傳輸。許多客戶機(jī)使用網(wǎng)絡(luò)地址轉(zhuǎn)換或通過(guò)防火墻與外界連接,所以主動(dòng)傳輸FTP就不能正常工作,因?yàn)橛煞⻊?wù)器建立的客戶機(jī)的連接通常不允許通過(guò)。
被動(dòng)傳輸是大多數(shù)FTP客戶機(jī)和服務(wù)器所使用的方法,因?yàn)榭蛻魴C(jī)既建立控制連接又建立數(shù)據(jù)連接,這樣可以通過(guò)防火墻或NAT了。
FTP的PORT命令,用來(lái)告訴FTP連接的服務(wù)器,使得與剛剛打開(kāi)的用于數(shù)據(jù)連接的端口之間建立一個(gè)連接。由于我們不僅指定端口而且指定連接所用的IP地址,所以客戶端也可以通過(guò)PORT命令讓服務(wù)器連接到任何地方。所以我們一樣可以讓nmap用這個(gè)方法進(jìn)行防火墻穿透。nmap做的所有工作是與一臺(tái)服務(wù)器建立一個(gè)主動(dòng)模式的FTP連接,并發(fā)送一個(gè)包含它試圖掃描的主機(jī)IP地址和端口號(hào)的PORT命令。
nmap -b [email protected] -p 6000 192.168.1.226
nmap 與ftp服務(wù)器的對(duì)話的例子:
server:220 target ftp server version 4 ready
client:user anonymous
server: 331 Guest login ok ,send e-mail as password
client:pass
server :230 login successful
client:PORT 192,168,1.226,23,112
server:200 PORT command successful
client:LIST
server:150 Opening ASCII connection for '/bin/ls'
server:226 Transfer complete
PORT命令起作用,可以制造是別人進(jìn)行端口掃描,掃描任何FTP服務(wù)器所能訪問(wèn)的主機(jī),繞過(guò)防火墻和端口過(guò)濾器,但還是存在一些危險(xiǎn)的,如果對(duì)方登陸到了你的這個(gè)匿名FTP服務(wù)器上,從日志查找到相應(yīng)的匿名FTP連接,從而知道你的IP地址,這樣就直接暴露了。
nmap -sI 空閑掃描,主要是欺騙端口掃描的源地址。
nmap -f 可以把TCP頭分片的IP報(bào)文進(jìn)行一些隱蔽的掃描。不完整的TCP報(bào)文不被防火墻阻塞也不被IDS檢測(cè)到。
nmap-D
選擇幾臺(tái)肉雞,并使用-D標(biāo)志在命令行中指定它們。namp通過(guò)誘騙的IP地址來(lái)進(jìn)行欺騙式端口掃描,而系統(tǒng)管理員可以同時(shí)看到不同的端口掃描,而只有一個(gè)是真實(shí)的,很好的保護(hù)了自己。
os指紋識(shí)別
這個(gè)是nmap最有用的功能之一,就是可以鑒別遠(yuǎn)程主機(jī)。通過(guò)簡(jiǎn)單的執(zhí)行網(wǎng)絡(luò)掃描,nmap通?梢愿嬖V你遠(yuǎn)程主機(jī)所運(yùn)行的OS,甚至詳細(xì)到版本號(hào)。當(dāng)你指定-Q標(biāo)志時(shí),nmap將用幾種不同的技術(shù)從主機(jī)返回IP報(bào)文中尋找這些鑒別信息。通過(guò)發(fā)送特別設(shè)計(jì)的TCP和UDP頭,nmap可以得到遠(yuǎn)程主機(jī)對(duì)TCP/IP協(xié)議棧的處理方法。它將分析結(jié)果與保存在文件中的已知特征信息進(jìn)行比較。
OS鑒別選項(xiàng)也可以讓nmap對(duì)TCP報(bào)文進(jìn)行分析以決定另外一些信息,如系統(tǒng)的啟動(dòng)時(shí)間,TCP序列號(hào),預(yù)測(cè)的序列號(hào)使我們更容易截獲報(bào)文并猜測(cè)序列號(hào)從而偽造TCP連接。
nmap命令使用詳細(xì)解釋
-P0 -PT -PS -PU -PE -PP -PM -PB 當(dāng)nmap進(jìn)行某種類型的端口或協(xié)議掃描時(shí),通常都會(huì)嘗試先ping 主機(jī),這種嘗試可使nmap不會(huì)浪費(fèi)時(shí)間在那些未開(kāi)機(jī)的主機(jī)上,但是許多主機(jī)與防火墻會(huì)阻塞ICMP報(bào)文,我們希望能通過(guò)控制使用。
-P0 告訴nmap不ping 主機(jī),只進(jìn)行掃描
-PT 告訴nmap使用TCP的ping
-PS 發(fā)送SYN報(bào)文。
-PU 發(fā)送一個(gè)udp ping
-PE 強(qiáng)制執(zhí)行直接的ICMP ping
-PB 這是默認(rèn)類型,可以使用ICMP ping 也可以使用TCP ping .
-6 該標(biāo)志允許IPv6支持
-v -d 使用-v選項(xiàng)可得到更詳細(xì)的輸出,而-d選項(xiàng)則增加調(diào)試輸出。
-oN 按照人們閱讀的格式記錄屏幕上的輸出,如果是在掃描多臺(tái)機(jī)器,則該選項(xiàng)很有用。
-oX 以xml格式向指定的文件記錄信息
-oG 以一種易于檢索的格式記錄信息,即每臺(tái)主機(jī)都以單獨(dú)的行來(lái)記錄所有的端口和0s信息。
-oA 使用為基本文件名,以普通格式(-oN)、XML格式(-oX)和易于檢索的格式(-oG)jilu xinxi
-oM 把輸出格式化為機(jī)器可閱讀的文件
-oS 把輸出進(jìn)行傻瓜型排版
--resume如果你取消了掃描,但生成了供人或者供機(jī)器閱讀的文件,那么可以把該文件提供給nmap繼續(xù)讓它掃描。
-iR-iL可以不在命令行中指定目標(biāo)主機(jī),而是使用-iR選項(xiàng)隨即產(chǎn)生待掃描的主機(jī),或者使用-iL選項(xiàng)從一個(gè)包含主機(jī)名或IP地址列表的文件中讀取目標(biāo)主機(jī),這些主機(jī)名或IP地址使用空格、制表符或換行隔開(kāi)。
-F nmap只掃描在nmap內(nèi)建的服務(wù)文件中已知的端口,如果不指定該選項(xiàng),nmap將掃描端口1-1024及包含在nmap-services文件中的所有其他端口。如果用-sO選項(xiàng)掃描協(xié)議,nmap將用它內(nèi)建的協(xié)議文件(nmap-protocols文件)而不是默認(rèn)地掃描所有256個(gè)協(xié)議。
-A nmap使用所有的高級(jí)掃描選項(xiàng)
-p 參數(shù)可以是一個(gè)單獨(dú)的端口、一個(gè)用逗號(hào)隔開(kāi)的端口列表、一個(gè)使用“-”表示的端口范圍或者上述格式的任意組合。如果沒(méi)有指定該選項(xiàng),nmap將對(duì)包含前1024個(gè)端口的所有端口進(jìn)行一次快速掃描。
-e在多穴主機(jī)中,可以指定你用來(lái)進(jìn)行網(wǎng)絡(luò)通信的網(wǎng)絡(luò)接口。
-g可以選擇一個(gè)源端口,從該端口執(zhí)行所有的掃描。
--ttlnmap其發(fā)送的任何報(bào)文在到中間路由器的跳后會(huì)失效。
--packet-trace 可以顯示掃描期間nmap發(fā)送和接收的各個(gè)報(bào)文的詳細(xì)列表,這對(duì)調(diào)試非常有用。要與-o選項(xiàng)之一聯(lián)合使用,需要根權(quán)限,以將所有的數(shù)據(jù)記錄到文件。
--scanflags可以使用這個(gè)選項(xiàng)手工的指定欲在掃描報(bào)文中設(shè)置的TCP標(biāo)志。也可以指定TCP標(biāo)志的OOred值的整數(shù)形式,或者標(biāo)志的字符串表示形式。
以上介紹的就是nmap在windows下和unix中的命令介紹。