文章轉載自:http://blog.chinaunix.net/uid-28811518-id-5601227.html
1998年,安全研究員Antirez在Bugtraq郵件列表上,提到了一個巧妙的端口掃描技術–空閑掃描。眾所周知,它允許進行端口完全欺騙掃 描。使得攻擊者能夠不使用自己的IP向目標主機發送數據包。它的巧妙之處在於,利用不活躍的“僵屍主機”反彈給攻擊者一個旁通信道,從而使得攻擊者可以進 行端口掃描。入侵檢測系統(Intrusion detection system)也就會把無辜的僵屍主機當成攻擊者。除了異常隱蔽外,該種掃描還可以 用於發現基於IP的機器間的信任關系。
因為空閑掃描比目前任何一種掃描技術都要復雜,所以要理解它,你不必成為TCP/IP專家。總而言之可以概括為以下幾個方面:
判斷一個TCP端口是否開放,其中一種方法是向該端口發送SYN(會話建立)包。若端口開放,則目標主機會返回一個SYN/ACK(會話建立確認)包;若端口關閉,則目標主機會返回RST(重置)包。這就是前面所討論的半開掃描基本概念。
機器收到SYN/ACK包后會返回一個RST包,而收到的RST包則會被忽略掉。
互聯網上的每個IP數據包都有一個分段身份識別號(IP ID)。許多操作系統只是簡單的把該識別號遞增,因此分析最后一次的IPID就可以告訴攻擊者已經發送了多少數據包。
結合這些特征,通過偽造你的身份,就可以掃描一個目標網絡,而看起來就像無辜的僵屍主機在掃描。本質上,空閑掃描在掃描每個端口時都由以下三步組成:
探測僵屍主機的IP ID並記錄。
向需要掃描的目標主機端口發送一個偽造成來自僵屍主機的SYN包。根據目標主機端口狀態的不同,目標主機返回的數據包會使得僵屍主機的IP ID遞增或否。
再次探測僵屍主機的IP ID。並對比第一步記錄的IP ID就可以確定目標主機端口的狀態。
每次掃描后,僵屍主機數據包的IP ID應該增加1或2。增加1說明僵屍主機沒有發送任何數據包,只有攻擊者探測時導致的加1。而未發送任何數據包 則說明目標端口是未打開的(目標主機向僵屍主機發送了RST包,該包會被忽略,或者什么也沒發送)。增加2說明僵屍主機在兩次探測之間發送了一個額外的數 據包。這個額外的數據包表明目標端口是開放的(即目標主機收到偽造的SYN包后向僵屍主機發送SYN/ACK包,僵屍主機向目標主機回復一個RST包)。 增加數大於2則說明我們選擇的中間層不適合做僵屍主機。它可能含有不可預測的IP ID,或者說在進行空閑掃描時該端口有其他的通訊。空閑掃描利用的是空 閑的端口,如果該端口有其他的通訊,就會導致掃描程序誤判目標主機的端口狀態。建議選擇打印機、考勤機或者不活躍的web服務器做僵屍主機
盡管被過濾的端口與關閉的端口有少許的不同,但是攻擊者會得到相同的結果,即IPID都增加1。因此利用空閑掃描技術不能區分關閉的端口或被過濾掉 的端口。所以,當nmap收到增長為1的IPID后就會把該端口標記為closed|filtered(關閉的或者被過濾的)。