學習***躲避技術---理解AET

學習***躲避技術---理解AET

 

Jack zhai

 

什麼是***躲避技術

20101018日,芬蘭的Stonesoft公司宣佈發現了一種新型的高級逃逸技術(AETAdvanced Evasion Technique),可以輕鬆躲避目前的IPS/IDS檢測,成功***目標服務器,震驚了信息安全界。作爲這個技術的佐證之一,就是近年來令大家迷惑的未知***越來越多,未知***就是隻知道被***了的事實,卻不知道***採用了什麼手段,何時進行的***,遺憾的是目前的安全措施都沒有發現其蹤跡。
後來,Stonesoft公開了其中的部分技術細節,大概40多種組合躲避技術,併發佈一個針對漏洞(CVE-2008-4250/CVE-2004-1315)的躲避技術演示工具軟件。演示結果簡單明瞭:***者對沒有打補丁的目標服務器直接***,成功建立遠程SHELL;中間部署IPS設備後,開啓安全防護策略,直接***則不再成功;通過調整軟件上的組合參數,如IP參數、TCP參數等,很快***成功的SHELL窗口再次打開。
其實早在1998NewshamPtacek就發表論文,討論利用IP碎片技術躲避網絡***檢測設備了,只是當時沒有引起安全界的重視,而他們的研究對***來說,可謂是思路廣開,隨後的幾年,這種技術被廣泛使用於實際的******中,尤其是APT***,針對性很強,效果非常好。

高級逃逸技術(AET)是***利用協議組合的技巧,躲過網絡上安全措施的檢查,成功抵達目標,實施******。我更喜歡翻譯成爲高級躲避技術,或者是***躲避技術;躲避是指還處在你監視環境下繼續生存,但我成功地“隱身”了自己,逃逸則是我設法逃出你的監視範圍。***躲避技術的目的還是要***,而不是逃走了事。下圖是***躲避技術的原理:

 

***躲避技術的分類:

***躲避技術可謂是種類繁多,實際上就是利用安全設備與目標主機對各種協議、各種字符集,以及他們的組合處理的差異,合理地躲避了檢查,成功***了目標。因此,***躲避技術是有針對性的,不是一種方式走天下,而是在具體的***環境中,選擇不同的參數組合、協議組合、字符集組合,達到躲避的目的。

 

根據躲避安全措施的不同分爲:
1.         網絡***躲避技術:躲避網絡上的安全檢查,如FW\IDS\IPS\WAF\UTM等,其中主要部分是IPS。需要躲避的是***時的***行爲,如漏洞探測,上傳的惡意代碼,如ShellCode,下傳敏感信息,如口令文件;
2.         主機***躲避技術:躲避主機(目標服務器)上的安全檢查,如主機防***防禦軟件\主機防病毒軟件等。典型的技術是進程注入、rootkit等。

 

其中網絡躲避又可以根據躲避的方向分爲:
1.         單向躲避:目標點沒有接應的,躲避了安全檢查的***流應該能被目標主機正常“理解”,完成***行爲,否則即使躲避了中間的安全檢查,也達不到***的目的。單向躲避一般應用在***過程中;
2.         雙向躲避:目標點有接應者,只要躲避了中間的安全檢查,到達目標後,接應者負責信息的還原。雙向躲避一般應用在***成功後的惡意代碼傳遞與遠程控制聯絡。

 

常見的網絡躲避技術有下面幾類:
1.         字符變換:IPS一般基於特徵比對與行爲模式識別,若把傳輸的內容變成檢查者不認識的“外文”,就容易矇混過關。這個方法常被用在注入***中的不同字符集之間的轉換。尋找到IPS與目標主機對某字符集解釋的差異,就可以實施躲避***;典型的方式是SQL注入;
2.         協議組合:每個業務鏈接會使用多個協議,利用網絡各種協議的參數組合,如包大小、碎片處理、重疊處理、多線程傳送等,由於IPS與目標主機解析協議的處理方式不同,就可以躲避IPS的特徵檢查,同時又可以達到***的目的;
3.         傳輸加密:加密本是直接躲避技術的首選,但加密需要到達目標解密後才能使用,而在***過程中,目標的解析者是標準的應用服務,加密就不能達到***效果。同時,越來越的網絡環境中限制加密的連接,因爲管理者不能監控你的通訊內容;因此,加密方法一般使用在雙向躲避的部分環境中。

 

    涉及主機躲避技術,本人在《服務器***加固的幾種方式》中有所介紹,本文主要討論網絡躲避技術,就重疊分片躲避與多線程躲避爲例,分析一下網絡躲避技術的原理。

 

重疊分片躲避技術分析

把一個大的數據包分成多個切片(IP)傳輸,是TCP協議的功能之一。正常的情況下接收端按照切片的編號、偏移量,再重新組裝成完整的數據包。
正常的協議解析過程是每個分片順序排列,並且按序號送達目的主機。由於網絡的不同路徑延遲不同,造成到達目標的分片不一定是順序的;某個分片或許中途損壞要重傳,延遲自然更大一些;有些系統本身的Bug,分片時偏移量寫錯了,造成分片之間有重疊
這裏只討論一種分片重疊的躲避技術,如下圖:
我們可以看到,在正常的分片中,第二個分片中有惡意代碼的特徵,IPS通過緩存各個分片的負載,就可以還原數據包,自然就可以發現這個特徵。
爲了躲避IPS的檢測,我們故意把第一分片的後面增加了一段隨機數據(其大小甚至可以覆蓋分片2,或更長),同時增加分片1的長度,分片2與分片3都不做改動。
這樣分片1與分片2的內容就有重合了,目標服務器接收時,對於重合的部分是選分片1的,還是選分片2的呢?我們知道,這個最終結果要根據目標服務器的操作系統而定,不同操作系統,或者有些版本之間的處理方式是不同,歸結爲TCP/IP協議棧的代碼編寫。有選分片1的,也有選分片2的,但告知發送方分片有錯誤,要求重傳的不多。
這樣就出現了一個問題:負責安全檢查的IPS採用的方式是前向的,還是後向的呢?目前大部分IPS廠商還不能確定其後邊的服務器採用什麼樣的操作系統,無法自動匹配具體的應用環境,要兩種方式都檢查的話,需要設立雙倍的緩衝區內存,顯然是不划算的。因此,大部分廠家都只選擇一種,比如是前向的,即分片重疊時,數據選擇前一個編號的數據爲準。
現在機會就來的,我們在分片1後面加了隨機數據,覆蓋了分片2的惡意代碼部分,IPS的協議棧中重組的數據包就是良性的數據包,成功地躲避了IPS的安全檢查。
而此時目標服務器的協議棧正好是後向方式,重疊部分採用分片2的數據,重組的數據包正是原來的***數據包,目標服務器被實施***。

 

重疊分片適用於單向躲避,尤其是***前的掃描、漏洞溢出、提權等階段。測試實際環境中IPS是前向的還是後向的,是比較容易的,正常訪問中帶些惡意代碼,測試一次就知道了。此後,就可以放心大膽地對IPS後面採用不同協議棧的應用放手***了。

 

多線程躲避技術分析

多線程技術大家應該不陌生,很多下載工具都在使用。我們知道,每個連接傳送數據包要一個一個地來,速度上是受限制的,不能充分利用網絡帶寬。多線程的意思就是在源和目的地址之間同時建立多個連接線程,把一個要下載的文件分成若干個部分,每個線程負責一個部分下載,當有線程閒置時,就繼續傳送下一個分塊。接收方按照文件切片的偏移量與編號重組文件。
很顯然,在每個線程中看到的全部數據流都是割裂的,小的、碎的數據塊;對每一個線程的數據緩存,都不能進行有效的特徵比對。由於IPS廠商是針對連接建立應用緩衝區的,三個線程的數據分佈在三個緩衝區中,並且每個分片的編號與位置信息,是收發雙方的主控進程管理的,並非通用協議可知信息,因此,IPS即使知道***者採用多線程在傳送,也無法還原原始的數據包。並且,由於IPS無法知道主控進程管理着哪些子線程,所以也無法判斷哪些連接屬於同一個多線程組合。
有人提出建議:多線程的特點是同源同目的地址,並且是同協議,還是同一個連接時段,有些安全策略甚至可以限制這樣的連接對大個數爲1,限制使用多線程技術。
但***者完全可以讓不同的線程採用不同的協議,只要是IPS允許的協議都可以,如線程1採用http,線程2採用FTP,線程3採用SNMP。在IPS看來,這完全就是同源同目的地址之間的三個業務連接,這這種業務模式是常見的,如員工連接到公司,發郵件,訪問網站等。

 

多線程躲避技術適用於雙向躲避,不同於加密通訊,又類似於加密技術。尤其是***者遠程控制肉雞時,多線程等於多條控制渠道,這些通道同時啓動,避免有些通道被發現,或被關閉時,對肉雞失控的狀態;同時也可以避免有人冒充自己,利用自己的肉雞。

 

小結:

    這裏只是對***躲避技術的一個初步認識,在今後的討論中我們再將進一步分析各種躲避技術的原理與方法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章