十大黑客工具之一——nmap
端口掃描是指某些別有用心的人發(fā)送一組端口掃描消息,試圖以此侵入某臺(tái)計(jì)算機(jī),并了解其提供的計(jì)算機(jī)網(wǎng)絡(luò)服務(wù)類型(這些網(wǎng)絡(luò)服務(wù)均與端口號(hào)相關(guān)),但是端口掃描不但可以為黑客所利用,同時(shí)端口掃描還是網(wǎng)絡(luò)安全工作者的必備的利器,通過對(duì)端口的掃描,了解網(wǎng)站中出現(xiàn)的漏洞以及端口的開放情況,對(duì)網(wǎng)站安全方面有著不可或缺的貢獻(xiàn)。
端口的幾種狀態(tài)
掃描對(duì)于黑客和安全人員來說,掃描的流程是這樣的:
Nmap,也就是Network Mapper,最早是Linux下的網(wǎng)絡(luò)掃描和工具包。nmap是一個(gè)網(wǎng)絡(luò)連接端掃描軟件,用來掃描網(wǎng)上電腦開放的網(wǎng)絡(luò)連接端。確定哪些服務(wù)運(yùn)行在哪些連接端,并且推斷計(jì)算機(jī)運(yùn)行哪個(gè)操作系統(tǒng)(這是亦稱 fingerprinting)。它是網(wǎng)絡(luò)管理員必用的軟件之一,以及用以評(píng)估網(wǎng)絡(luò)系統(tǒng)安全。
其基本功能有三個(gè),一是探測(cè)一組主機(jī)是否在線;其次是掃描主機(jī)端口,所提供的網(wǎng)絡(luò)服務(wù);還可以推斷主機(jī)所用的操作系統(tǒng) 。Nmap可用于掃描僅有兩個(gè)節(jié)點(diǎn)的LAN,直至500個(gè)節(jié)點(diǎn)以上的網(wǎng)絡(luò)。Nmap 還允許用戶定制掃描技巧。通常,一個(gè)簡(jiǎn)單的使用ICMP協(xié)議的ping操作可以滿足一般需求;也可以深入探測(cè)UDP或者TCP端口,直至主機(jī)所 使用的操作系統(tǒng);還可以將所有探測(cè)結(jié)果記錄到各種格式的日志中,供進(jìn)一步分析操作。
Nmap使用TCP/IP協(xié)議棧指紋準(zhǔn)確地判斷目標(biāo)主機(jī)的操作系統(tǒng)類型。首先,Nmap通過對(duì)目標(biāo)主機(jī)進(jìn)行端口掃描,找出有哪些端口正在目標(biāo)主機(jī)上監(jiān)聽。當(dāng)偵測(cè)到目標(biāo)主機(jī)上有多于一個(gè)開放的TCP端口、一個(gè)關(guān)閉的TCP端口和一個(gè)關(guān)閉的UDP端口時(shí),Nmap的探測(cè)能力是最好的。Nmap工具的工作原理如表所示。
Nmap對(duì)目標(biāo)主機(jī)進(jìn)行一系列測(cè)試。利用得出的測(cè)試結(jié)果建立相應(yīng)目標(biāo)主機(jī)的Nmap指紋。最后,將此Nmap指紋與指紋庫(kù)中指紋進(jìn)行查找匹配,從而得出目標(biāo)主機(jī)的操作系統(tǒng)類型。
Nmap常用掃描類型
1. TCP掃描(-sT)
這是一種最為普通的掃描方法,這種掃描方法的特點(diǎn)是:掃描的速度快,準(zhǔn)確性高,對(duì)操作者沒有權(quán)限上的要求,但是容易被防火墻和IDS(防入侵系統(tǒng))發(fā)現(xiàn)
運(yùn)行的原理:通過建立TCP的三次握手連接來進(jìn)行信息的傳遞
- Client端發(fā)送SYN;
- Server端返回SYN/ACK,表明端口開放;
- Client端返回ACK,表明連接已建立;
- Client端主動(dòng)斷開連接。
2. SYN掃描(-sS)
這是一種秘密的掃描方式之一,因?yàn)樵赟YN掃描中Client端和Server端沒有形成3次握手,所以沒有建立一個(gè)正常的TCP連接,因此不被防火墻和日志所記錄,一般不會(huì)再目標(biāo)主機(jī)上留下任何的痕跡,但是這種掃描是需要root權(quán)限(對(duì)于windows用戶來說,是沒有root權(quán)限這個(gè)概念的,root權(quán)限是linux的最高權(quán)限,對(duì)應(yīng)windows的管理員權(quán)限)
運(yùn)行的原理圖如下:
3. NULL掃描
NULL掃描是一種反向的掃描方法,通過發(fā)送一個(gè)沒有任何標(biāo)志位的數(shù)據(jù)包給服務(wù)器,然后等待服務(wù)器的返回內(nèi)容。這種掃描的方法比前面提及的掃描方法要隱蔽很多,但是這種方法的準(zhǔn)確度也是較低的, 主要的用途是用來判斷操作系統(tǒng)是否為windows,因?yàn)閣indows不遵守RFC 793標(biāo)準(zhǔn),不論端口是開啟還是關(guān)閉的都返回RST包
但是雖然NULL具有這樣的一些用處,但是本人卻認(rèn)為不宜使用NULL:
- NULL方法的精確度不高,端口的狀態(tài)返回的不是很準(zhǔn)確
- 要獲取目標(biāo)主機(jī)的運(yùn)行系統(tǒng),可以使用參數(shù)(-O),來獲取對(duì)于一些操作系統(tǒng)無法準(zhǔn)確判斷的,可以加上參數(shù)(-osscan-guess)
- NULL掃描易被過濾
- FIN掃描
FIN掃描的原理與NULL掃描的原理基本上是一樣的在這里就不重復(fù)了。
4. ACK掃描
ACK掃描的原理是發(fā)送一個(gè)ACK包給目標(biāo)主機(jī),不論目標(biāo)主機(jī)的端口是否開啟,都會(huì)返回相應(yīng)的RST包,通過判斷RST包中的TTL來判斷端口是否開啟
運(yùn)行原理圖:
TTL值小于64端口開啟,大于64端口關(guān)閉。
大致上主要的掃描方法就是這些,除了我們可以按照這樣些參數(shù)去執(zhí)行掃描外,還可以自己定義一個(gè)TCP掃描包。
5. 自定義TCP掃描包的參數(shù)為(--scanflags)
例如:定制一個(gè)包含ACK掃描和SYN掃描的安裝包。
命令:nmap --scanflags ACKSYN nmap.org
好了,接下來還有各種掃描方法的端口列表參數(shù)。
- PS 端口列表用,隔開[tcp80 syn 掃描]-PA 端口列表用,隔開[ack掃描](PS+PA測(cè)試狀態(tài)包過濾防火墻【非狀態(tài)的PA可以過】)【默認(rèn)掃描端口1-1024】-PU 端口列表用,隔開[udp高端口掃描 穿越只過濾tcp的防火墻]
其他的常見命令
輸出命令
- oN 文件名 輸出普通文件
- oX 文件名 輸出xml文件
錯(cuò)誤調(diào)試:
- log-errors 輸出錯(cuò)誤日志
- packet-trace 獲取從當(dāng)前主機(jī)到目標(biāo)主機(jī)的所有節(jié)點(diǎn)