本篇文章給大家分享的是有關基于統(tǒng)計分析的ICMP隧道檢測方法與實現(xiàn)是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
公司主營業(yè)務:成都網站建設、成都網站制作、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出西華免費做網站回饋大家。
在企業(yè)內網環(huán)境中,ICMP協(xié)議是必不可少的網絡通信協(xié)議之一,被用于檢測網絡連通狀態(tài),通常情況下,防火墻會默認放此協(xié)議。由于防火墻對ICMP協(xié)議開放,惡意攻擊者常會利用ICMP協(xié)議進行非法通信。例如,在黑客攻擊中經常出現(xiàn)一種情況是,黑客通過某一種方式取得了一臺主機的權限,得到了一些文件,比如域hash,密碼文件之類的東西,需要回傳至本地進行破解,但是防火墻阻斷了由內網發(fā)起的請求,只有icmp協(xié)議沒有被阻斷,而黑客又需要回傳文件,這個時候如果黑客可以ping通遠程計算機,就可以嘗試建立ICMP隧道,ICMP隧道是將流量封裝進 ping 數(shù)據(jù)包中,旨在利用 ping數(shù)據(jù)穿透防火墻的檢測。現(xiàn)在市面上已經有了很多類似的工具了,比如 icmptunnel、ptunnel、icmpsh等。
下面將為大家介紹一種簡單而有效的icmp隧道檢測技術。我們將利用Spark Streaming,來幫助我們檢測ICMP隧道。
ICMP(Internet ControlMessages Protocol,網間控制報文協(xié)議)是TCP/IP協(xié)議族的子協(xié)議,是一種面向無連接的協(xié)議。ICMP協(xié)議的結構,如圖1所示:

圖1
經常使用的ping命令就是基于ICMP協(xié)議,windows系統(tǒng)下ping默認傳輸?shù)氖牵?nbsp;abcdefghijklmnopqrstuvwabcdefghi,共32bytes,如圖2所示:

圖2
linux系統(tǒng)下,ping默認傳輸?shù)氖?8bytes,前8bytes隨時間變化,后面的固定不變,內容為!”#$%&’()+,-./01234567,如圖3所示:

圖3
此外,ping的包大小,也就是data大小是可以修改的,以windows為例,使用ping baidu.com -l 223,修改為223bytes,從包體內容來看,規(guī)律還是一樣,就是重復罷了,如圖4所示:

圖4
那能否改變這些data填充我們自己的數(shù)據(jù)呢? 答案是當然可以!
這就是ICMP隱蔽隧道的原理,改變操作系統(tǒng)默認填充的Data,替換成我們自己的數(shù)據(jù)。
比如使用icmp隧道可以構造一個包含有www.facebook.com字符串的自定義data的包,如圖5所示:

圖5
windows系統(tǒng)下ping默認傳輸?shù)氖牵篴bcdefghijklmnopqrstuvwabcdefghi,16進制內容為:
6162636465666768696a6b6c6d6e6f7071727374757677616263646566676869
linux系統(tǒng)下ping默認傳輸?shù)膬热荩サ糸_頭可變的8bytes后是:!”#$%&’()+,-./01234567,16進制內容為:
101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637
對自定義長度的ping,在linux下使用ping -s 500 baidu.com產生了492位大小的data,去掉開頭可變的8bytes,16進制內容為:
101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3
windows下自定義長度的ping類似,16進制內容為:
6162636465666768696a6b6c6d6e6f70717273747576776162636465666768696a6b6c6d6e6f70717273747576776162636465666768696a6b6c6d6e6f707172737475
因此,正常操作系統(tǒng)下通過ping產生的data,轉換為16進制后為從00開始不斷遞增然后一直到ff的重復序列中的一段或幾段。
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
對于icmp隧道產生的自定義data數(shù)據(jù)包,轉換為16進制后內容是亂序沒有規(guī)律的,比如構造一個內容為R5*êíwwwfacebookcom字符串的自定義data的包,其16進制內容為:
4500003e377d400040119c2f0a0001020a0052019d800035002a1a14eacd01000001000000000000037777770866616365626f6f6b03636f6d0000010001
因此,可以根據(jù)ping產生的data數(shù)據(jù)包,轉換為16進制后的內容是否有規(guī)律來做區(qū)分。
在這里使用AC自動機 字符串匹配方法進行特征匹配,具體做法為:
(1) 將正常操作系統(tǒng)產生的不斷重復序列,如下:
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
每4位切分成特征數(shù)組,生成的特征數(shù)組如下:
"0001", "0203","0405", ...... "feff"
對ping產生的data數(shù)據(jù),如以下linux產生的data:
e7cd0a0000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3
每4位切分成特征數(shù)組,生成的特征數(shù)組如下:
"e7cd", "0a00", ......, "1011","1213","1415",......, "feff"
(2) 使用ac自動機算法,將生成的特征數(shù)組和正常操作系統(tǒng)生成的特征數(shù)組進行匹配,將匹配到的特征的個數(shù)*4/payload長度作為匹配度,進行計算得到匹配度0.987。
匹配度算法:
匹配度 = 匹配到的特征的個數(shù)*4 / payload的長度
對于正常的ping數(shù)據(jù)產生的data,計算得到的匹配度結果都在0.9以上,Icmp隧道產生的自定義data的數(shù)據(jù)包通常匹配度很低,可以根據(jù)匹配度來區(qū)分是否是正常操作系統(tǒng)產生的數(shù)據(jù)包。
對于正常的ping命令產生的數(shù)據(jù),有以下特點:
每秒發(fā)送的數(shù)據(jù)包個數(shù)比較少,通常每秒最多只會發(fā)送兩個數(shù)據(jù)包;
請求數(shù)據(jù)包與對應的響應數(shù)據(jù)包內容一樣;
數(shù)據(jù)包中payload的大小固定,windows下為32bytes,linux下為48bytes;
數(shù)據(jù)包中payload的內容固定,windows下為abcdefghijklmnopqrstuvwabcdefghi,linux下為!”#$%&’()+,-./01234567,如果指定ping發(fā)送的長度,則為不斷重復的固定字符串;
type類型只有2種,0和8。0為請求數(shù)據(jù),8為響應數(shù)據(jù)。
對于ICMP隧道產生的數(shù)據(jù),有以下特點:
每秒發(fā)送的數(shù)據(jù)包個數(shù)比較多,在同一時間會產生成百上千個 ICMP 數(shù)據(jù)包;
請求數(shù)據(jù)包與對應的響應數(shù)據(jù)包內容不一樣;
數(shù)據(jù)包中 payload的大小可以是任意大小;
存在一些type為13/15/17的帶payload的畸形數(shù)據(jù)包;
個別ICMP隧道工具產生的數(shù)據(jù)包內容前面會增加 ‘TUNL’ 標記以用于識別隧道。
因此,根據(jù)正常ping和ICMP隧道產生的數(shù)據(jù)包的特點,可以通過以下幾點特征檢測ICMP隧道:
檢測同一來源數(shù)據(jù)包的數(shù)量。正常ping每秒只會發(fā)送2個數(shù)據(jù)包,而ICMP隧道可以每秒發(fā)送很多個;
檢測數(shù)據(jù)包中 payload 的大小。正常ping產生的數(shù)據(jù)包payload的大小為固定,而ICMP隧道數(shù)據(jù)包大小可以任意;
檢測響應數(shù)據(jù)包中 payload 跟請求數(shù)據(jù)包是否不一致。正常ping產生的數(shù)據(jù)包請求響應內容一致,而ICMP隧道請求響應數(shù)據(jù)包可以一致,也可以不一致;
檢測數(shù)據(jù)包中 payload 的內容。正常ping產生的payload為固定字符串,ICMP隧道的payload可以為任意;
檢測 ICMP 數(shù)據(jù)包的type是否為0和8。正常ping產生的帶payload的數(shù)據(jù)包,type只有0和8,ICMP隧道的type可以為13/15/17。
將基于統(tǒng)計的ICMP隧道檢測部署到生產環(huán)境中,需要考慮大數(shù)據(jù)規(guī)模對模型的時效性、吞吐量等性能指標的影響。經多方考量,最終選用Spark Streaming進行在線檢測。
Spark Streaming 是Spark核心API的一個擴展,可以實現(xiàn)高吞吐量、具備容錯機制的實時流數(shù)據(jù)處理。支持從多種數(shù)據(jù)源獲取數(shù)據(jù),包括Kafka、Flume、Twitter、ZeroMQ、Kinesis 以及TCP sockets,從數(shù)據(jù)源獲取數(shù)據(jù)之后,可以使用諸如map、reduce、join和window等高級函數(shù)進行復雜算法的處理。最后還可以將處理結果存儲到文件系統(tǒng),數(shù)據(jù)庫和現(xiàn)場儀表盤。在“One Stack rule them all”的基礎上,還可以使用Spark的其他子框架,如集群學習、圖計算等,對流數(shù)據(jù)進行處理。
整個過程主要分3個階段:
數(shù)據(jù)收集 => 匯總統(tǒng)計 => 檢出過濾,具體檢測邏輯,見圖6所示:

圖6
Spark Streaming中讀入實時流量數(shù)據(jù),設置15秒處理一次數(shù)據(jù),根據(jù)數(shù)據(jù)包的源ip、目的ip大小排序拼接后進行分組,將同一個ip向目的ip發(fā)送的請求/響應數(shù)據(jù)包分到一個組中,分組字段time_sort_sip_dip 加上時間戳timestamp,為了過濾掉上一次15秒內該源ip、目的ip之間的數(shù)據(jù)包,保證每個15秒內只處理當前15秒內的同一ip、目的ip的數(shù)據(jù)。
根據(jù)分組后的數(shù)據(jù),分別統(tǒng)計以下特征指標,作為最終是否檢出的依據(jù):
1. 在一個時間窗內,ICMP請求響應的數(shù)據(jù)包數(shù)量;
2. 捕獲到的ICMP請求響應中,其payload部分是否是操作系統(tǒng)的正常長度;
3. 序號相同的ICMP數(shù)據(jù)包應當屬于一對ICMP請求響應消息,他們的payload是否一致;
4. ICMP請求響應的payload內容是否正常(多模匹配);
5. ICMP請求是否是畸形Ping報文(Type是否異常);
對1/2/5直接使用統(tǒng)計組內的payload個數(shù)、payload_len長度值、是否有type不為0/8的數(shù)據(jù)包,直接得出。
對與3的判斷,需要根據(jù)正常ping和異常數(shù)據(jù)的不同點,依據(jù)組內統(tǒng)計得到的id_seq集合和payload集合去重后,做大小比較得出:
對于正常ping,源ip向目的ip發(fā)送的一系列數(shù)據(jù)包中id_seq全部不一樣,其中identify為當次請求隨機生成的序號不重復,同一批次identify一樣,seq是根據(jù)數(shù)據(jù)包個數(shù),從1開始一次遞增1的數(shù)字,同一個請求和響應數(shù)據(jù)包的id_seq一樣,payload內容也一樣。例:ping baidu.com產生了10個數(shù)據(jù)包,包括5次請求、5次響應,則id_seq去重后為5,payload去重后win下為1,linux下為5。
對于Icmp隧道,源ip向目的ip發(fā)送的一系列數(shù)據(jù)包中id_seq,可以一樣,也可以不一樣。同一個請求和響應數(shù)據(jù)包的id_seq可以一樣,也可以不一樣,payload內容不一樣。例:隧道產生了10個數(shù)據(jù)包,則id_seq去重后為5(seq依次遞增)或1(seq固定不遞增),payload去重后為10,極端情況下只有發(fā)送包,沒有響應包,則id_seq去重后為10。
可見不考慮一些極端情況,可以簡單通過 payloads_num > id_seq_num 即可認為請求響應內容不同,對與極端情況,可以根據(jù)別的條件進行檢出。
對于4的判斷,使用2.2中介紹的方法進行判斷payload是否異常。
為了減少誤報,過濾掉一些正常的路由器發(fā)送的數(shù)據(jù)包,使用3種條件結合進行是否檢出判斷:
存在有非法type的payload且去重后的payload的個數(shù)大于閾值(經內網測試,個別路由器會發(fā)送有畸形type的payload內容一樣的包,通過增加去重后的payload的個數(shù)大于閾值來過濾);
請求響應數(shù)據(jù)包不一致;
15秒內的數(shù)據(jù)包個數(shù)、非正常長度數(shù)據(jù)包個數(shù)、異常內容數(shù)據(jù)包個數(shù)、去重后的payload的個數(shù) 大于自定義的閾值檢出(經內網測試,個別路由器隔幾個小時會發(fā)送有異常內容的但是內容只有幾個字符不一樣的payload心跳包,通過增加去重(使用漢明距離去重,差別不超過3個字符的認為一樣)后的payload的個數(shù)大于閾值來過濾)。
鑒于Icmp隧道特點的多樣性,只要滿足3者之一,就會檢出,對于一些極端異常的ICMP隧道產生的包,比如隧道只有請求包沒有響應包即一直往外發(fā)數(shù)據(jù),則id_seq去重后為10(10次全是請求包,且seq遞增),payload去重后為10,無法單獨通過2檢出,但是可以滿足3,一樣會檢出,不會漏報。
目前測試過程中使用的已知負樣本有以下幾種:
icmpTunnel樣本,使用icmpTunnel隧道工具造的樣本;
icmptransmitter樣本,使用icmptransmitter隧道工具造的樣本;
icmpsh樣本,使用icmpsh隧道工具造的樣本;
badping樣本,使用python腳本手動造的icmp的異常數(shù)據(jù)包。
目前測試過程中使用的已知正樣本有以下幾種:
正常Ping數(shù)據(jù)包,Ping命令產生的數(shù)據(jù)包,平臺包括linux/win/mac/solaris/android/ios,payload內容如下:abcdefg12345等。
網絡設備心跳包,路由器等網絡設備會定時發(fā)送的一些心跳包,payload內容如下:DataBuffer 0000001、DataBuffer 0000002等。
以上就是基于統(tǒng)計分析的ICMP隧道檢測方法與實現(xiàn)是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當前名稱:基于統(tǒng)計分析的ICMP隧道檢測方法與實現(xiàn)是怎樣的
分享路徑:http://chinadenli.net/article4/jigpoe.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供自適應網站、電子商務、服務器托管、網站建設、面包屑導航、響應式網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)