浅谈端口扫描
無(wú)意中看到的,算是科普類型的文章吧。簡(jiǎn)單收藏一下
按照目前的協(xié)議類型,我們大致可以知道有:
? 一個(gè)IP地址可以有65535(2^16)個(gè)端口,范圍則是從0到65535(2^16-1),每個(gè)端口按照協(xié)議又可以分為兩種類型:一種是TCP端口;另一種是UDP端口。
? TCP、UDP都是IP層的傳輸協(xié)議,其中TCP是面向連接、可靠的字節(jié)流服務(wù);UDP則是不可靠的,面向數(shù)據(jù)報(bào)的服務(wù)。每一個(gè)端口都會(huì)支持這兩種協(xié)議,因此可以基于這兩種協(xié)議進(jìn)行端口掃描。
以及現(xiàn)在還有通過(guò)在 TCP/IP 模型中的網(wǎng)絡(luò)層 ICMP 協(xié)議來(lái)探測(cè)端口的掃描技術(shù)。
TCP
TCP報(bào)文這里就不再細(xì)講了,也不是重點(diǎn),放一張TCP數(shù)據(jù)報(bào)文的圖,具體可以去百度百科了解:
TCP三次握手:
TCP CONNECT SCAN
原理很簡(jiǎn)單,與目標(biāo)端口建立3次握手,如果成功建立則為open,收到RST則為close
usage
MSF 模塊:
1 |
use auxiliary/scanner/portscan/tcp |
Nmap 選項(xiàng)參數(shù):
1 |
nmap -sT scanme.nmap.org |
TCP SYN SCAN
也稱為TCP半連接掃描,只發(fā)送三次握手的第一次SYN報(bào)文段,如果收到ACK+SYN則為open,收到RST則為close,這種好處是不必等待三次握手完全完成,速度快且不容易被防火墻記錄進(jìn)日志。
Nmap 處理方式:
| Probe Response | Assigned State |
|---|---|
| TCP SYN/ACK response | open |
| TCP RST response | closed |
| No response received (even after retransmissions) | filtered |
| ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13) | filtered |
usage
MSF 模塊:
1 |
use auxiliary/scanner/portscan/syn |
Nmap 參數(shù)
1 |
nmap -sS scanme.nmap.org |
TCP Xmas Tree SCAN
客戶端向服務(wù)端發(fā)送帶有PSH,FIN,URG標(biāo)識(shí)的數(shù)據(jù)包(即不含有ACK SYN RST),被稱為TCP Xmas Tree掃描。其利用的是RFC的規(guī)定:
? 如果不設(shè)置SYN,RST,或者ACK位的報(bào)文發(fā)送到開(kāi)放端口,理論上,這不應(yīng)該發(fā)生,如果您確實(shí)收到了,丟棄該報(bào)文,返回。
那么就有:
? 如果掃描系統(tǒng)遵循該RFC,當(dāng)端口關(guān)閉時(shí),任何不包含SYN,RST,或者ACK位的報(bào)文會(huì)導(dǎo)致 一個(gè)RST返回而當(dāng)端口開(kāi)放時(shí),應(yīng)該沒(méi)有任何響應(yīng)。只要不包含SYN,RST,或者ACK, 任何其它三種(FIN,PSH,and URG)的組合都行。
Nmap 對(duì) NULL, FIN, or Xmas 掃描的處理:
| Probe Response | Assigned State |
|---|---|
| No response received (even after retransmissions) | open or filtered |
| TCP RST packet | closed |
| ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13) | filtered |
usage
MSF 模塊:
1 |
use auxiliary/scanner/portscan/xmas |
Nmap 選項(xiàng)參數(shù):
1 |
Null scan (`-sN`) |
TCP NULL SCAN
空掃描即flag位全 0 ,如果沒(méi)有回復(fù)則為open,收到RST則為close
TCP ACK SCAN
使用TCP ACK掃描不能夠確定端口的關(guān)閉或者開(kāi)放,因?yàn)楫?dāng)發(fā)送給對(duì)方一個(gè)含有 ACK 表示的TCP報(bào)文的時(shí)候,都返回含有RST標(biāo)志的報(bào)文,無(wú)論端口是開(kāi)放或者關(guān)閉。所以,不能使用TCP ACK掃描來(lái)確定端口是否開(kāi)放或者關(guān)閉。但是可以利用它來(lái)掃描防火墻的配置,用它來(lái)發(fā)現(xiàn)防火墻規(guī)則,確定它們是有狀態(tài)的還是無(wú)狀態(tài)的,哪些端口是被過(guò)濾的。
向服務(wù)端發(fā)送一個(gè)帶有 ACK 標(biāo)識(shí)的數(shù)據(jù)包,如果收到帶有 RST 標(biāo)識(shí)的響應(yīng),則說(shuō)明服務(wù)端沒(méi)有過(guò)濾,不存在狀態(tài)防火墻。
usage
可以使用 msf 的模塊
1 |
use auxiliary/scanner/portscan/ack |
Nmap 可以用以下命令
1 |
nmap -sA scanme.nmap.org |
TCP WINDOW SCAN
TCP 窗口掃描的流程類似于 ACK 掃描,都是向服務(wù)端發(fā)送帶有 ACK 標(biāo)識(shí)的數(shù)據(jù)包,不同的在于 TCP 窗口掃描會(huì)檢查收到的 RST 數(shù)據(jù)包中的窗口大小,如果 RST 數(shù)據(jù)包中的窗口大小不為零,則說(shuō)明目標(biāo)端口是開(kāi)放的。
如果 RST 數(shù)據(jù)包中的窗口大小為零,則說(shuō)明目標(biāo)端口處于關(guān)閉狀態(tài)。
Nmap 對(duì) TCP Window 掃描的處理:
| Probe Response | Assigned State |
|---|---|
| TCP RST response with non-zero window field | open |
| TCP RST response with zero window field | closed |
| No response received (even after retransmissions) | filtered |
| ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13) | filtered |
usage
Nmap 掃描參數(shù):
1 |
nmap -sW docsrv.caldera.com |
TCP Idle Scan
1998年,安全研究員Antirez(曾參與編輯nmap中有關(guān)hping2工具的相關(guān)文章)在Bugtraq郵件列表中發(fā)布了一篇關(guān)于新的端口掃描技術(shù)的文章。Idle Scan,也就慢慢的為眾人所了解,它允許進(jìn)行完全盲目的端口掃描。事實(shí)上,攻擊者可以不用向目標(biāo)發(fā)送數(shù)據(jù)包就完成掃描工作!相反,用猥瑣的邊信道攻擊是能夠讓掃描映射到一個(gè)Zombie 主機(jī)上的。除了極其隱蔽的情況,這種掃描方式允許挖掘機(jī)器之間基于IP的信任關(guān)系。
雖然 Idle Scan 比目前討論的任何技術(shù)都復(fù)雜,但您無(wú)需成為TCP / IP專家就能理解它。你只需要知道這些就夠了:
確定TCP端口是否打開(kāi)的一種方法是向端口發(fā)送SYN(會(huì)話建立)數(shù)據(jù)包。如果端口打開(kāi),目標(biāo)機(jī)器將響應(yīng)SYN / ACK(會(huì)話請(qǐng)求確認(rèn))數(shù)據(jù)包,如果端口關(guān)閉,則響應(yīng)RST(重置)。這是前面討論的SYN掃描的基礎(chǔ)。
接收未經(jīng)請(qǐng)求的SYN / ACK數(shù)據(jù)包的計(jì)算機(jī)將使用RST進(jìn)行響應(yīng)。未經(jīng)請(qǐng)求的RST將被忽略。
Internet上的每個(gè)IP數(shù)據(jù)包都有一個(gè)片段標(biāo)識(shí)號(hào)(IP ID)。由于許多操作系統(tǒng)只是為它們發(fā)送的每個(gè)數(shù)據(jù)包遞增此數(shù)字,因此探測(cè)IPID可以告訴攻擊者自上次探測(cè)以來(lái)已發(fā)送了多少數(shù)據(jù)包。
結(jié)合以上特征,就可以偽造身份去掃描目標(biāo)網(wǎng)絡(luò),所以看起來(lái)就像是無(wú)辜的 Zombie 主機(jī)在掃描。
Idle Scan Step by Step
從本質(zhì)上來(lái)看,Idle Scan 只需要重復(fù)3個(gè)步驟就ok了。
探查Zombie的IP ID并記錄下來(lái)。
在Zombie主機(jī)上偽造一個(gè)包,然后把包發(fā)送給目標(biāo)主機(jī)端口。根據(jù)端口的狀態(tài),目標(biāo)主機(jī)可能會(huì)也有可能不會(huì)導(dǎo)致Zombie主機(jī)IPID值增加。
再探查Zombie主機(jī)的IP ID。比較兩次得到IPID值
經(jīng)過(guò)這樣一個(gè)流程,Zombie主機(jī)的 IP ID 應(yīng)該會(huì)增加1~2。如果只是增加了1,那么就可以說(shuō)明Zombie主機(jī)還沒(méi)有發(fā)出任何包,當(dāng)然,響應(yīng)攻擊者的探查請(qǐng)求除外。沒(méi)有發(fā)送包也就意味著目標(biāo)端口沒(méi)有被打開(kāi)(也可能是目標(biāo)主機(jī)向Zombie主機(jī)發(fā)送了一個(gè)RST包,導(dǎo)致請(qǐng)求被忽略,或者是根本就是什么都沒(méi)有做)。增加的如果是2,那就表明Zombie主機(jī)成功在兩個(gè)探測(cè)器之間發(fā)送了包。這種情況一般情況都意味著目標(biāo)端口是開(kāi)著的(目標(biāo)大概會(huì)向Zombie主機(jī)發(fā)送一個(gè)SYN/ACK包去響應(yīng)攻擊者偽造的SYN,從Zombie主機(jī)誘導(dǎo)RST包)。如果是增加了一個(gè)比2還大的數(shù)字,那么就說(shuō)明Zombie主機(jī)太糟糕了!它可能不能勝任預(yù)測(cè)IPID數(shù)值,也可能是正在忙于其他與Idle Scan無(wú)關(guān)的事情。
雖然關(guān)閉了端口和被過(guò)濾的端口會(huì)發(fā)生的事情稍微有點(diǎn)點(diǎn)不同,但是攻擊者處理的方法都一樣,IPID都只是增加1。所以,在Idel Scan中無(wú)法區(qū)別端口到底是關(guān)閉的還是已經(jīng)過(guò)濾了。當(dāng)Nmap記錄的IPID增加了1,也就被標(biāo)記成了close丨filterred。
以下三張圖大略可以說(shuō)明端口被打開(kāi),關(guān)閉,過(guò)濾的情況。
端口開(kāi)放:
端口關(guān)閉:
端口被過(guò)濾:
Idel Scan根本上來(lái)講就是一個(gè)隱性掃描,Nmap提供了decoy scanning (-D),幫助使用者保護(hù)自己的身份。如果不是使用的(類似Idel Scan掃描方式)仍然需要攻擊者通過(guò)自身真實(shí)IP向目標(biāo)發(fā)送數(shù)據(jù)包以獲取掃描結(jié)果。Idel Scan掃描結(jié)果其中之一就有入侵檢測(cè)系統(tǒng)通常會(huì)發(fā)送一個(gè)Zombie主機(jī)已經(jīng)開(kāi)始掃描的通知。所以它可以作為一個(gè)框架去掃描另外一個(gè)目標(biāo),當(dāng)你查閱入侵檢測(cè)系統(tǒng)(IDS)時(shí),請(qǐng)記住這種可能性。
Idel Scan的一個(gè)獨(dú)特優(yōu)勢(shì)便是,它可以繞開(kāi)某些過(guò)濾防火墻和路由器。IP源地址過(guò)濾,是一種常見(jiàn)的(雖然很弱)用于限制機(jī)器連接到敏感主機(jī)或者說(shuō)網(wǎng)絡(luò)上的安全機(jī)制。舉個(gè)例子,一個(gè)公司數(shù)據(jù)庫(kù)服務(wù)器,只允許公共網(wǎng)絡(luò)連接。或者,家庭用戶只允許SSH連接到工作機(jī)上面。
Idel Scanning有時(shí)也可以被用來(lái)映射信任關(guān)系,關(guān)鍵在于Idel Scan最終會(huì)從Zombie主機(jī)獲取開(kāi)放端口列表。一個(gè)正常的掃描對(duì)于上述數(shù)據(jù)庫(kù)服務(wù)器可能會(huì)顯示沒(méi)有端口開(kāi)放,但是當(dāng)將Zombie主機(jī)作為Web Sever的IP,使用Idel Scan就可能將數(shù)據(jù)庫(kù)相關(guān)開(kāi)放端口暴露出來(lái)。
映射出的這些信任關(guān)系就可能作為攻擊者優(yōu)先考慮的目標(biāo),上面所討論的方式手法很猥瑣哇!
Idel Scan有一個(gè)缺點(diǎn)就是它比其他一些掃描方式所花費(fèi)的時(shí)間更長(zhǎng)。盡管在《Idel Scan算法實(shí)現(xiàn)》章節(jié)中有對(duì)Idel Scan的優(yōu)化算法,一個(gè)只需要15秒就可以完成的SYN,Idel Scan或許需要15分鐘才能夠完成。另一個(gè)問(wèn)題就是你必須能夠發(fā)送欺騙包,偽裝成好像他們來(lái)自Zombie主機(jī)一般,讓他們到達(dá)目標(biāo)主機(jī)。許多ISP服務(wù)商(特別是撥號(hào)和住宅寬帶供應(yīng)商)目前執(zhí)行出口過(guò)濾來(lái)防止這類數(shù)據(jù)包欺騙。高端供應(yīng)商(比如說(shuō)主機(jī)托管,T1-Services)就不太可能這么做。如果實(shí)際存在這個(gè)過(guò)濾,Nmap會(huì)在你嘗試的每一個(gè)Zombie主機(jī)上顯示一個(gè)快速錯(cuò)誤消息。如果不能夠更換ISP服務(wù)商,那么最好嘗試在讓ISP服務(wù)商給你更換一個(gè)IP。有時(shí)候這個(gè)過(guò)濾僅僅只是阻止了客戶使用范圍之外的欺騙IP地址。Idel Scan另外一個(gè)難點(diǎn)就是你必須尋找一個(gè)正在工作的Zombie主機(jī)。
上述描述的是Idel Scan的基礎(chǔ)水平。在Nmap上實(shí)現(xiàn)卻是有些復(fù)雜,最關(guān)鍵的差異在于Nmap能夠同時(shí)執(zhí)行,而且誤報(bào)少。
Parallelizing idle scan由于是間接推導(dǎo)出端口所以,他比其他掃描方式要更加的猥瑣。如果Nmap探測(cè)目標(biāo)主機(jī)上的多個(gè)端口,然后檢測(cè)Zombie主機(jī)上新的IP ID值,IP ID的值增加了多少就顯示出目標(biāo)開(kāi)放了多少個(gè)端口。實(shí)際上這并不是一個(gè)和嚴(yán)重的問(wèn)題,絕大多數(shù)端口在大型掃描結(jié)果中基本上都是被關(guān)閉或者被過(guò)濾。由于只有開(kāi)放端口才可以讓IP ID值增加,Nmap會(huì)認(rèn)為沒(méi)有增加量,然后整個(gè)組的端口就被標(biāo)記成了關(guān)閉或者被過(guò)濾。Nmap可以并行掃描一百組端口。如果Nmap在探測(cè)一組端口的時(shí)候Zombie主機(jī)IP ID同時(shí)也增加了,就說(shuō)明在這一組端口中一定有開(kāi)放的端口。Nmap繼而使用二進(jìn)制搜索發(fā)現(xiàn)開(kāi)放的端口。它將數(shù)據(jù)組分成兩份,分別發(fā)送探測(cè)信息,如果一個(gè)數(shù)據(jù)組顯示沒(méi)有開(kāi)放端口,那么這一數(shù)據(jù)組的端口都將被標(biāo)記為被關(guān)閉或者被過(guò)濾。如果一個(gè)數(shù)據(jù)組顯示有開(kāi)放端口,那么在把這個(gè)數(shù)據(jù)組分成兩份,重復(fù)以上步驟,直到最終將開(kāi)放端口都找出來(lái)。雖然這種方式更復(fù)雜,但是這種方式可以節(jié)約掃描時(shí)間。
可靠性是Idel Scan的另一個(gè)問(wèn)題。如果Zombie主機(jī)在掃描時(shí)向任何不相干的機(jī)器發(fā)送數(shù)據(jù)包,其IP ID會(huì)增加。這就會(huì)讓Nmap誤以為已經(jīng)尋找到開(kāi)放的端口了。幸運(yùn)的是,并行掃描在這里也是有很大作用的。如果Nmap在一個(gè)組中掃描100個(gè)端口,那么IP ID就會(huì)增加標(biāo)識(shí)兩個(gè)開(kāi)放端口,Nmap將這組數(shù)據(jù)分成50端口一個(gè)小組。當(dāng)Nmap同時(shí)在兩個(gè)小組中進(jìn)行IP ID掃描時(shí),Zombie主機(jī)IP ID總的增加量就在加了一次。另外,Nmap如果探測(cè)到不一致,那么它會(huì)重新探測(cè)。基于檢測(cè)可靠的Zombie主機(jī),Nmap還會(huì)修改組大小以及掃描時(shí)間。如果Nmap發(fā)現(xiàn)有大量不一致的結(jié)果,它將退出,并提示用戶選擇更好的Zombie主機(jī)。
具體操作可以參考TCP Idle Scan (-sI)
TCP Maimon Scan
Maimon Scan 以其發(fā)現(xiàn)者 Uriel Maimon 命名。 他在 Phrack 雜志第49期(1996年11月)中描述了這種技術(shù)。 除了探測(cè)器是FIN / ACK之外,此技術(shù)與NULL,F(xiàn)IN和Xmas掃描完全相同。 根據(jù)RFC 793(TCP),響應(yīng)于這樣的探測(cè),應(yīng)該生成RST分組,無(wú)論端口是打開(kāi)還是關(guān)閉。 但是,如果端口打開(kāi),許多BSD派生系統(tǒng)只會(huì)丟棄數(shù)據(jù)包。 Nmap利用這一點(diǎn)來(lái)確定開(kāi)放端口,如下表所示:
Nmap 對(duì) TCP Maimon Scan 的處理:
| Probe Response | Assigned State |
|---|---|
| No response received (even after retransmissions) | open or filtered |
| TCP RST packet | closed |
| ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13) | filtered |
usage
1 |
nmap -sM para |
TCP FTP Bounce Scan
FTP協(xié)議(RFC 959)的一個(gè)有趣特性是支持代理FTP連接。這允許用戶連接到一個(gè)FTP服務(wù)器,然后要求將文件發(fā)送到第三方服務(wù)器。這樣的功能在很多層面上被濫用,因此大多數(shù)服務(wù)器已停止支持它。此功能允許的濫用功能之一是通過(guò) FTP 服務(wù)器進(jìn)行掃描其他主機(jī)端口。只需要求 FTP 服務(wù)器依次將文件發(fā)送到目標(biāo)主機(jī)的每個(gè)端口就可以了。回顯消息將描述端口是否打開(kāi)。這是繞過(guò)防火墻的好方法,因?yàn)閮?nèi)部的 FTP 服務(wù)器通常放置在比舊的 Internet 主機(jī)都能訪問(wèn)到的其他主機(jī)的位置上。
Nmap支持使用-b選項(xiàng)進(jìn)行FTP反彈掃描。它采用<username>:<password>@<server>:<port>形式的參數(shù)。<Server>是易受攻擊的FTP服務(wù)器的名稱或IP地址。與普通URL一樣,您可以省略<username>:<password>,在這種情況下,將使用匿名登錄憑據(jù)(user:anonymous password:-wwwuser@)。端口號(hào)(和前面的冒號(hào))也可以省略,在這種情況下,使用<server>上的默認(rèn)FTP端口(21)。
使用 FTP Bounce Scan 較為頻繁的用戶更好地習(xí)慣了對(duì)回顯消息的處理。這個(gè)漏洞在1997年Nmap發(fā)布時(shí)很普遍,但已在很大程度上得到修復(fù)。易受攻擊的服務(wù)器仍然存在,所以當(dāng)其他所有服務(wù)器都失敗時(shí),這個(gè)方法值得一試。如果您的目標(biāo)是繞過(guò)防火墻,請(qǐng)掃描目標(biāo)網(wǎng)絡(luò)以查找開(kāi)放的21端口(如果使用版本檢測(cè)掃描所有端口,則掃描任何FTP服務(wù)),然后嘗試使用每個(gè)端口進(jìn)行 Bounce Scan。 Nmap會(huì)告訴您主機(jī)是否容易受到攻擊。如果您只是試圖掩蓋您的曲目,您不需要(事實(shí)上,不應(yīng)該)限制目標(biāo)網(wǎng)絡(luò)上的主機(jī)。在為易受攻擊的FTP服務(wù)器掃描隨機(jī)Internet地址之前,請(qǐng)考慮系統(tǒng)管理員可能不會(huì)允許這樣濫用其服務(wù)器。
usage
Nmap 掃描方式:
1 |
nmap -p 22,25,135 -Pn -v -b XXX.YY.111.2 scanme.nmap.org |
UDP
在TCP/IP模型中,UDP為網(wǎng)絡(luò)層以上和應(yīng)用層以下提供了一個(gè)簡(jiǎn)單的接口。UDP只提供數(shù)據(jù)的不可靠傳遞,它一旦把應(yīng)用程序發(fā)給網(wǎng)絡(luò)層的數(shù)據(jù)發(fā)送出去,就不保留數(shù)據(jù)備份(所以UDP有時(shí)候也被認(rèn)為是不可靠的數(shù)據(jù)報(bào)協(xié)議)。UDP在IP數(shù)據(jù)報(bào)的頭部?jī)H僅加入了復(fù)用和數(shù)據(jù)校驗(yàn)字段。
UDP適用于不需要或在程序中執(zhí)行錯(cuò)誤檢查和糾正的應(yīng)用,它避免了協(xié)議棧中此類處理的開(kāi)銷。對(duì)時(shí)間有較高要求的應(yīng)用程序通常使用UDP,因?yàn)閬G棄數(shù)據(jù)包比等待或重傳導(dǎo)致延遲更可取。
UDP SCAN
UDP掃描比較簡(jiǎn)單,一般如果返回ICMP port unreachable說(shuō)明端口是關(guān)閉的,而如果沒(méi)有回應(yīng)或有回應(yīng)(有些UDP服務(wù)是有回應(yīng)的但不常見(jiàn))則認(rèn)為是open,但由于UDP的不可靠性,無(wú)法判斷報(bào)文段是丟了還是沒(méi)有回應(yīng),所以一般掃描器會(huì)發(fā)送多次,然后根據(jù)結(jié)果再判斷。這也是為什么UDP掃描這么慢的原因。
雖然因特網(wǎng)上最流行的服務(wù)運(yùn)行在TCP協(xié)議上,但UDP服務(wù)被廣泛部署。 DNS,SNMP和DHCP(注冊(cè)端口53,161 / 162和67/68)是最常見(jiàn)的三種。 由于UDP掃描通常比TCP更慢且更困難,因此某些安全審核員會(huì)忽略這些端口。 這是一個(gè)錯(cuò)誤,因?yàn)榭衫玫腢DP服務(wù)非常普遍,攻擊者肯定不會(huì)忽略整個(gè)協(xié)議。
UDP掃描通過(guò)向每個(gè)目標(biāo)端口發(fā)送UDP數(shù)據(jù)包來(lái)工作。 對(duì)于大多數(shù)端口,此數(shù)據(jù)包將為空(無(wú)有效負(fù)載),但對(duì)于一些更常見(jiàn)的端口,將發(fā)送特定于協(xié)議的有效負(fù)載。 根據(jù)響應(yīng)或缺少響應(yīng),端口被分配給四種狀態(tài)之一,如下表所示:
Nmap 對(duì) UDP Scan 的處理:
| Probe Response | Assigned State |
|---|---|
| Any UDP response from target port (unusual) | open |
| No response received (even after retransmissions) | open or filtered |
| ICMP port unreachable error (type 3, code 3) | closed |
| Other ICMP unreachable errors (type 3, code 1, 2, 9, 10, or 13) | filtered |
usage
Nmap 選項(xiàng)參數(shù):
1 |
nmap -sU scanme.nmap.org |
Nmap 有很多選項(xiàng)可以提升 UDP Scan 的準(zhǔn)確性與速度,這里不再深入講解,具體可以參考UDP Scan (-sU)
ICMP
ICMP 格式:
? 根據(jù)網(wǎng)絡(luò)協(xié)議,如果按照協(xié)議出現(xiàn)了錯(cuò)誤,那么接收端將產(chǎn)生一個(gè)icmp的錯(cuò)誤報(bào)文。這些錯(cuò)誤報(bào)文并不是主動(dòng)發(fā)送的,而是由于錯(cuò)誤,根據(jù)協(xié)議自動(dòng)產(chǎn)生。
ICMP 相關(guān)類型解釋:
一般如果數(shù)據(jù)包被防火墻過(guò)濾的話,會(huì)收到一個(gè) ICMP 數(shù)據(jù)包,其中類型為3,代碼為1,2,3,9,10或13。
ICMP SCAN
常見(jiàn)的利用:
SCTP
這里我們簡(jiǎn)單介紹一下 SCTP 協(xié)議。
流控制傳輸協(xié)議(英語(yǔ):Stream Control Transmission Protocol,縮寫:SCTP)是在2000年由IETF的SIGTRAN工作組定義的一個(gè)傳輸層協(xié)議。RFC 4960詳細(xì)地定義了SCTP,介紹性的文檔是RFC 3286。
作為一個(gè)傳輸層協(xié)議,SCTP可以理解為和TCP及UDP相類似的。它提供的服務(wù)有點(diǎn)像TCP,又同時(shí)將UDP的一些優(yōu)點(diǎn)相結(jié)合。是一種提供了可靠、高效、有序的數(shù)據(jù)傳輸協(xié)議。相比之下TCP是面向字節(jié)的,而SCTP是針對(duì)成幀的消息。
SCTP主要的貢獻(xiàn)是對(duì)多重聯(lián)外線路的支持,一個(gè)端點(diǎn)可以由多于一個(gè) IP地址 組成,使得傳輸可在主機(jī)間或網(wǎng)卡間做到透明的網(wǎng)絡(luò)容錯(cuò)備援。
SCTP最初是被設(shè)計(jì)用于在IP上傳輸電話協(xié)議(SS7),把 SS7 信令網(wǎng)絡(luò)的一些可靠特性引入IP。IETF 的這方面的工作稱為信令傳輸 SIGTRAN。
SCTP將數(shù)據(jù)傳給應(yīng)用層的方式,是將數(shù)據(jù)視為message(bytes的集合),SCTP的特征是message-oriented,意思就是說(shuō)它發(fā)送的是一串message(每一個(gè)message是byte為單位的集合),相對(duì)于TCP是以byte為單位,發(fā)送的是破碎的流。在SCTP發(fā)送端用一個(gè)動(dòng)作提交消息,接收端也是用一個(gè)動(dòng)作取出消息傳給對(duì)應(yīng)的應(yīng)用程序。相較于TCP,是一個(gè)流導(dǎo)向的協(xié)議,可靠地且有順序地發(fā)送以bytes為單位的流。然而TCP并不允許接收端知道發(fā)送端的應(yīng)用程序調(diào)用提交bytes集合的次數(shù)。在發(fā)送端TCP只是簡(jiǎn)單的附加更多bytes在queue里等待著送到網(wǎng)絡(luò)上,而SCTP是將要提交的outband message都保有自己獨(dú)立的queue。
簡(jiǎn)而言之,SCTP是TCP和UDP協(xié)議的一種相對(duì)較新的替代方案,它結(jié)合了TCP和UDP的大多數(shù)特性,還增加了多宿主和多流等新功能。它主要用于SS7 / SIGTRAN相關(guān)服務(wù),但也有可能用于其他應(yīng)用程序。
下圖是 TCP 與 SCTP 建立連接的對(duì)比圖:
SCTP INIT scan
SCTP INIT掃描是TCP SYN掃描的SCTP等效物。它可以快速執(zhí)行,在快速網(wǎng)絡(luò)上每秒掃描數(shù)千個(gè)端口,而不受限制性防火墻的限制。與SYN掃描一樣,INIT掃描相對(duì)不顯眼且隱蔽,因?yàn)樗肋h(yuǎn)不會(huì)完成SCTP關(guān)聯(lián)。它還允許在打開(kāi),關(guān)閉和過(guò)濾狀態(tài)之間進(jìn)行清晰,可靠的區(qū)分。
此技術(shù)通常稱為半開(kāi)掃描,因?yàn)槟淮蜷_(kāi)完整的SCTP關(guān)聯(lián)。您發(fā)送一個(gè)INIT塊,就好像您要打開(kāi)一個(gè)真正的關(guān)聯(lián),然后等待響應(yīng)。 INIT-ACK塊表示端口正在偵聽(tīng)(打開(kāi)),而ABORT塊表示非偵聽(tīng)器。如果在多次重新傳輸后未收到響應(yīng),則將端口標(biāo)記為已過(guò)濾。如果收到ICMP不可達(dá)錯(cuò)誤(類型3,代碼0,1,2,3,9,10或13),則端口也會(huì)被標(biāo)記為已過(guò)濾。
usage
1 |
nmap -sY ip |
SCTP COOKIE ECHO SCAN
SCTP COOKIE ECHO SCAN 是一種更先進(jìn)的SCTP掃描。 它利用了SCTP實(shí)現(xiàn)應(yīng)該在開(kāi)放端口上靜默丟棄包含COOKIE ECHO塊的數(shù)據(jù)包這一事實(shí),但如果端口關(guān)閉則發(fā)送ABORT。 這種掃描類型的優(yōu)點(diǎn)是端口掃描不像INIT掃描那么明顯。 此外,可能存在阻止INIT塊的非狀態(tài)防火墻規(guī)則集,但不阻止COOKIE ECHO塊。 不要誤以為這會(huì)使端口掃描不可見(jiàn); 一個(gè)好的IDS也能夠檢測(cè)到SCTP COOKIE ECHO掃描。 缺點(diǎn)是SCTP COOKIE ECHO掃描不能區(qū)分打開(kāi)和過(guò)濾的端口,在這兩種情況下都會(huì)打開(kāi)狀態(tài)。
usage
1 |
nmap -sZ ip |
IP
IP Scan
IP協(xié)議掃描允許您確定目標(biāo)計(jì)算機(jī)支持哪些IP協(xié)議(TCP,ICMP,IGMP等)。這在技術(shù)上不是端口掃描,因?yàn)樗h(huán)通過(guò)IP協(xié)議號(hào)而不是TCP或UDP端口號(hào)。然而,它仍然使用-p選項(xiàng)來(lái)選擇掃描的協(xié)議號(hào),以正常的端口表格式報(bào)告其結(jié)果,甚至使用與真正的端口掃描方法相同的底層掃描引擎。所以它足夠接近它所屬的端口掃描。
協(xié)議掃描的工作方式與UDP掃描類似。它不是遍歷UDP數(shù)據(jù)包的端口號(hào)字段,而是發(fā)送IP數(shù)據(jù)包標(biāo)頭并迭代通過(guò)8位IP協(xié)議字段。標(biāo)頭通常是空的,不包含任何數(shù)據(jù),甚至不包括所聲明協(xié)議的正確標(biāo)頭。某些流行協(xié)議(包括TCP,UDP和ICMP)例外。包含適當(dāng)?shù)膮f(xié)議頭,因?yàn)橐恍┫到y(tǒng)不會(huì)發(fā)送它們,因?yàn)镹map已經(jīng)具有創(chuàng)建它們的功能。協(xié)議掃描不是在觀察ICMP端口不可達(dá)消息,而是在尋找ICMP協(xié)議不可達(dá)消息。如下表顯示了對(duì)IP探測(cè)的響應(yīng)如何映射到端口狀態(tài)。
Nmap 對(duì) IP Scan 的處理:
| Probe Response | Assigned State |
|---|---|
| Any response in any protocol from target host | open(for protocol used by response, not necessarily probe protocol) |
| ICMP protocol unreachable error (type 3, code 2) | closed |
| Other ICMP unreachable errors (type 3, code 1, 3, 9, 10, or 13) | filtered(though they prove ICMP is open if sent from the target machine) |
| No response received (even after retransmissions) | open or filtered |
與TCP或UDP協(xié)議中的開(kāi)放端口一樣,每個(gè)開(kāi)放協(xié)議都是潛在的利用向量。此外,協(xié)議掃描結(jié)果有助于確定機(jī)器的用途以及采用何種類型的數(shù)據(jù)包過(guò)濾。終端主機(jī)通常只有TCP,UDP,ICMP和(有時(shí))IGMP打開(kāi),而路由器通常提供更多,包括路由相關(guān)協(xié)議,如GRE和EGP。防火墻和VPN網(wǎng)關(guān)可能會(huì)顯示與加密相關(guān)的協(xié)議,如IPsec和SWIPE。
與UDP掃描期間收到的ICMP端口不可達(dá)消息一樣,ICMP協(xié)議不可達(dá)消息通常是速率限制的。例如,默認(rèn)Linux 2.4.20框中每秒發(fā)送的ICMP目標(biāo)無(wú)法訪問(wèn)響應(yīng)不超過(guò)一個(gè)。由于只有256個(gè)可能的協(xié)議號(hào),因此與65,536端口UDP掃描相比,這不是問(wèn)題。
usage
協(xié)議掃描的使用方法與命令行上的大多數(shù)其他掃描技術(shù)的使用方法相同。除了一般的Nmap選項(xiàng)外,請(qǐng)簡(jiǎn)單指定-sO。普通端口-p選項(xiàng)用于選擇協(xié)議號(hào)。或者,您可以使用-F掃描nmap-protocols數(shù)據(jù)庫(kù)中列出的所有協(xié)議。默認(rèn)情況下,Nmap掃描所有256個(gè)可能的值。
1 |
nmap -sO 62.233.173.90 para |
總結(jié)
- 上一篇: MT、AMT、AT、CVT和双离合的区别
- 下一篇: 如何利用Excel电子表格缩放打印