本發(fā)明涉及計算機信息技術領域,具體涉及一種規(guī)避防火墻檢測的無狀態(tài)掃描方法。
背景技術:
TCP是可靠的面向連接的協(xié)議,一個完整的TCP會話每個過程都有不同的狀態(tài)。正是操作系統(tǒng)在底層已經保存了這些狀態(tài)我們在應用層使用起來才更方便可靠,但可靠的同時帶來的是資源占用。
無狀態(tài)掃描是指無需關心TCP狀態(tài),不占用系統(tǒng)TCP/IP協(xié)議棧資源,忘記SYN、ACK、FIN、TIMEWAIT等狀態(tài),不進行會話組包,在實現(xiàn)上也有可能需要把必要的信息存放在數(shù)據包本身中。如13年曾以44分鐘掃描完全部互聯(lián)網的ZMAP,之后出現(xiàn)的MASSCAN,都使用了這種無狀態(tài)掃描技術,掃描速度比以往任何工具都有質的提升,后者更是提出了3分鐘掃完互聯(lián)網的極速。
目前被廣泛使用的無狀態(tài)掃描引擎有ZMAP、MASSCAN,由于其無需維護連接狀態(tài),因此可以達到極高的掃描速度。
ZMAP是美國密歇根大學研究者開發(fā)出一款工具,在第22屆USENIX安全研討會,以超過NMAP 1300倍的掃描速度聲名鵲起,相比大名鼎鼎的NMAP全網掃描速度是他最大的亮點,在千兆網卡狀態(tài)下,45分鐘內掃描全網絡IPv4地址。
SYN(synchronous)是TCP/IP建立連接時使用的握手信號。在客戶機和服務器之間建立正常的TCP網絡連接時,客戶機首先發(fā)出一個SYN消息,服務器使用SYN+ACK應答表示接收到了這個消息,最后客戶機再以ACK消息響應。這樣在客戶機和服務器之間才能建立起可靠的TCP連接,數(shù)據才可以在客戶機和服務器之間傳遞。
現(xiàn)有技術就是利用無狀態(tài)掃描在掃描速度上優(yōu)勢大大提升掃描速度,但其更加側重于包的發(fā)送速率和無狀態(tài)掃描的實現(xiàn)方案,較少考慮防火墻的規(guī)避問題。
在正常的網絡通信中,由于單一SYN包中各協(xié)議字段的值具有非常大的不確定性,防火墻很難針對這樣的數(shù)據流量編寫特定的過濾規(guī)則。但是當類似ZMAP這樣的專注于端口掃描的工具所發(fā)出的SYN包中具有硬編碼的協(xié)議字段時,防火墻就很容易針對這些這些特定的協(xié)議字段編寫特定的過濾規(guī)則,而不用擔心這樣的過濾規(guī)則誤傷正常的網絡流量,造成掃描結果的漏報,如圖1所示。
另外,上述無狀態(tài)掃描技術中,單純的出于發(fā)包速率等原因考慮,發(fā)出的SYN包并非現(xiàn)代TCP/IP協(xié)議中常見的完整SYN包,而是一種精簡的SYN包,即缺少Options字段的SYN包,目的是實現(xiàn)同等網絡帶寬下更高的發(fā)包速率。但此種精簡的SYN包因其結構的特殊性,可能觸發(fā)某些防火墻的BUG,導致此類SYN包被防火墻直接丟棄。
技術實現(xiàn)要素:
為克服現(xiàn)有技術中存在的不足,本發(fā)明的目的在于提供一種規(guī)避防火墻檢測的無狀態(tài)掃描方法,盡可能讓無狀態(tài)掃描所發(fā)出的SYN包模仿正常的網絡通信流量,做到去特征化,并避免包中存在特異結構觸發(fā)通信鏈路中設備的實現(xiàn)BUG。
為解決上述技術問題,本發(fā)明采用的具體方案為:
一種規(guī)避防火墻檢測的無狀態(tài)掃描方法,其步驟為:
1)掃描器生成基礎SYN包并隨機化該基礎SYN包中的設定的協(xié)議字段;其中,基礎SYN包為不攜帶Options段的SYN數(shù)據包;
2)掃描器在步驟1)處理后的SYN包中增加TCP/IP協(xié)議中的Options段;
3)掃描器發(fā)送經過步驟2)處理后的SYN包進行無狀態(tài)掃描。
進一步的,該設定的協(xié)議字段為基礎SYN包的包頭中的Identification字段。
進一步的,步驟1)中,掃描器使用隨機數(shù)生成函數(shù)生成一隨機數(shù),然后將基礎SYN包的包頭中的Identification字段替換為該隨機數(shù)。
進一步的,該隨機數(shù)為一個二進制長度不超過16bit的隨機數(shù)。
進一步的,將TCP/IP協(xié)議中的Options段作為步驟1)處理后的SYN包中的最后一個協(xié)議字段,附加在步驟1)處理后的SYN包中。
進一步的,所述Options段的類型為MSS類型、長度為8bit、值為1460,Options段總長度32bit。
本發(fā)明主要步驟包括:
1)無狀態(tài)掃描工具生成不攜帶Options段的SYN數(shù)據包;
2)隨機化所述SYN包中的Identification字段;
3)在SYN包中增加現(xiàn)代TCP/IP協(xié)議中常見的Options段;
4)發(fā)送經過上述處理的SYN包進行無狀態(tài)掃描。
所述無狀態(tài)掃描工具包括ZMAP和MASSCAN。
本發(fā)明的有益效果是:
(1)通過隨機化協(xié)議字段,無狀態(tài)掃描中所發(fā)SYN包與正常的網絡通信流量中的SYN包幾乎沒有差別,盡可能避免協(xié)議字段的硬編碼,防火墻不再有可能從中找到特征,從而對掃描發(fā)包進行過濾,提高了端口發(fā)現(xiàn)比例。
(2)通過在精簡的SYN包中增加現(xiàn)代TCP/IP協(xié)議中常見的Options段,避免了特殊包結構觸發(fā)通信鏈路中網絡設備的BUG,進一步提高了端口發(fā)現(xiàn)比例。
附圖說明
圖1為現(xiàn)有方案中目標主機探測失敗場景圖。
圖2為本方案中提供的無狀態(tài)掃描方法流程圖。
具體實施方式
為使本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合所附圖作詳細說明如下。
本實施例提供一種規(guī)避防火墻檢測的無狀態(tài)掃描方法,具體步驟如圖2所示,具體步驟如下:
(1)組裝不攜帶Options段的SYN包。
(2)使用隨機數(shù)生成函數(shù)生成一個隨機數(shù),并將步驟(1)中生成的SYN包頭中的Identification字段替換為該隨機數(shù)。
(3)在步驟(2)生成的SYN包后附加Options段。
(4)向服務端某端口發(fā)送修改后的SYN包。
(5)掃描器在完成SYN包的發(fā)送后即進入等待狀態(tài),等待被掃描的服務端返回SYN+ACK包。
(6)當SYN包經過數(shù)據鏈路中的防火墻設備時,防火墻先對SYN包的有效性進行校驗,校驗通過后再解析出SYN包中各字段的值,并與已配置防火墻規(guī)則進行對比,如沒有觸發(fā)防火墻策略則防火墻設備繼續(xù)向后轉發(fā)該SYN包。
(7)服務器收到SYN包后,根據TCP/IP協(xié)議中規(guī)定的三次握手機制向掃描器端返回SYN+ACK包。
(8)掃描器收到SYN+ACK包,判斷服務端端口開放,完成目標主機探測。
SYN包的具體修改方式如下:
(1)將SYN包頭中的Identification字段設置為隨機值。如下所示:
其中,Identification字段為從SYN包頭起始位置開始偏移32bit,長度為16bit的字段。當初始SYN包生成后,該字段為一固定值,這里需要使用隨機數(shù)生成函數(shù)獲得一個二進制長度不超過16bit的隨機數(shù),并將該隨機數(shù)賦值給Identification字段。
(2)為步驟(1)中獲得的SYN包添加Options段,Options段添加后的SYN包數(shù)據結構如下所示:
其中,Options段為從SYN包頭起始位置開始偏移160bit,長度因Options段的類型而異。此處使用現(xiàn)代TCP/IP協(xié)議頭中常見的MSS類型Options段,此類型的Options段長度為4byte,即32bit。其中包括Options段類型(op_kind)8bit,Options段長度(op_len)8bit,Options段中的值(mss_val)16bit。op_kind賦值為2,op_len賦值為4,mss_val同樣使用最常出現(xiàn)的值1460。
通過上述兩步獲得本實施例中所屬的修改后的SYN包。
對于本實施例針對的掃描鏈路中存在特定防火墻設備的場景,修改前的主機探測成功率為0%,修改后的主機探測成功率為100%,成功率提升100%。