學習入侵躲避技術---了解AET
Jack zhai
<b>什麼是入侵躲避技術</b>
2010年10月18日,芬蘭的Stonesoft公司宣布發現了一種新型的進階逃逸技術(AET:Advanced Evasion Technique),可以輕松躲避目前的IPS/IDS檢測,成功入侵目标伺服器,震驚了資訊安全界。作為這個技術的佐證之一,就是近年來令大家迷惑的未知攻擊越來越多,未知攻擊就是隻知道被攻擊了的事實,卻不知道黑客采用了什麼手段,何時進行的入侵,遺憾的是目前的安全措施都沒有發現其蹤迹。
其實早在1998年Newsham和Ptacek就發表論文,讨論利用IP碎片技術躲避網絡入侵檢測裝置了,隻是當時沒有引起安全界的重視,而他們的研究對黑客來說,可謂是思路廣開,随後的幾年,這種技術被廣泛使用于實際的入侵攻擊中,尤其是APT攻擊,針對性很強,效果非常好。
進階逃逸技術(AET)是黑客利用協定組合的技巧,躲過網絡上安全措施的檢查,成功抵達目标,實施入侵攻擊。我更喜歡翻譯成為進階躲避技術,或者是入侵躲避技術;躲避是指還處在你監視環境下繼續生存,但我成功地“隐身”了自己,逃逸則是我設法逃出你的監視範圍。入侵躲避技術的目的還是要入侵,而不是逃走了事。下圖是入侵躲避技術的原理:
<b>入侵躲避技術的分類:</b>
入侵躲避技術可謂是種類繁多,實際上就是利用安全裝置與目标主機對各種協定、各種字元集,以及他們的組合處理的差異,合理地躲避了檢查,成功入侵了目标。是以,入侵躲避技術是有針對性的,不是一種方式走天下,而是在具體的入侵環境中,選擇不同的參數組合、協定組合、字元集組合,達到躲避的目的。
根據躲避安全措施的不同分為:
1. 網絡入侵躲避技術:躲避網絡上的安全檢查,如FW\IDS\IPS\WAF\UTM等,其中主要部分是IPS。需要躲避的是入侵時的攻擊行為,如漏洞探測,上傳的惡意代碼,如ShellCode,下傳敏感資訊,如密碼檔案;
2. 主機入侵躲避技術:躲避主機(目标伺服器)上的安全檢查,如主機防入侵防禦軟體\主機防病毒軟體等。典型的技術是程序注入、rootkit等。
其中網絡躲避又可以根據躲避的方向分為:
1. 單向躲避:目标點沒有接應的,躲避了安全檢查的攻擊流應該能被目标主機正常“了解”,完成入侵行為,否則即使躲避了中間的安全檢查,也達不到入侵的目的。單向躲避一般應用在入侵過程中;
2. 雙向躲避:目标點有接應者,隻要躲避了中間的安全檢查,到達目标後,接應者負責資訊的還原。雙向躲避一般應用在攻擊成功後的惡意代碼傳遞與遠端控制聯絡。
常見的網絡躲避技術有下面幾類:
1. 字元變換:IPS一般基于特征比對與行為模式識别,若把傳輸的内容變成檢查者不認識的“外文”,就容易蒙混過關。這個方法常被用在注入攻擊中的不同字元集之間的轉換。尋找到IPS與目标主機對某字元集解釋的差異,就可以實施躲避攻擊;典型的方式是SQL注入;
2. 協定組合:每個業務連結會使用多個協定,利用網絡各種協定的參數組合,如包大小、碎片處理、重疊處理、多線程傳送等,由于IPS與目标主機解析協定的處理方式不同,就可以躲避IPS的特征檢查,同時又可以達到攻擊的目的;
3. 傳輸加密:加密本是直接躲避技術的首選,但加密需要到達目标解密後才能使用,而在攻擊過程中,目标的解析者是标準的應用服務,加密就不能達到入侵效果。同時,越來越的網絡環境中限制加密的連接配接,因為管理者不能監控你的通訊内容;是以,加密方法一般使用在雙向躲避的部分環境中。
涉及主機躲避技術,本人在《伺服器入侵加強的幾種方式》中有所介紹,本文主要讨論網絡躲避技術,就重疊分片躲避與多線程躲避為例,分析一下網絡躲避技術的原理。
<b>重疊分片躲避技術分析</b>
把一個大的資料包分成多個切片(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後面采用不同協定棧的應用放手攻擊了。
<b>多線程躲避技術分析</b>
多線程技術大家應該不陌生,很多下載下傳工具都在使用。我們知道,每個連接配接傳送資料包要一個一個地來,速度上是受限制的,不能充分利用網絡帶寬。多線程的意思就是在源和目的位址之間同時建立多個連接配接線程,把一個要下載下傳的檔案分成若幹個部分,每個線程負責一個部分下載下傳,當有線程閑置時,就繼續傳送下一個分塊。接收方按照檔案切片的偏移量與編号重組檔案。
很顯然,在每個線程中看到的全部資料流都是割裂的,小的、碎的資料塊;對每一個線程的資料緩存,都不能進行有效的特征比對。由于IPS廠商是針對連接配接建立應用緩沖區的,三個線程的資料分布在三個緩沖區中,并且每個分片的編号與位置資訊,是收發雙方的主要程序管理的,并非通用協定可知資訊,是以,IPS即使知道入侵者采用多線程在傳送,也無法還原原始的資料包。并且,由于IPS無法知道主要程序管理着哪些子線程,是以也無法判斷哪些連接配接屬于同一個多線程組合。
有人提出建議:多線程的特點是同源同目的位址,并且是同協定,還是同一個連接配接時段,有些安全政策甚至可以限制這樣的連接配接對大個數為1,限制使用多線程技術。
但入侵者完全可以讓不同的線程采用不同的協定,隻要是IPS允許的協定都可以,如線程1采用http,線程2采用FTP,線程3采用SNMP。在IPS看來,這完全就是同源同目的位址之間的三個業務連接配接,這這種業務模式是常見的,如員工連接配接到公司,發郵件,通路網站等。
多線程躲避技術适用于雙向躲避,不同于加密通訊,又類似于加密技術。尤其是入侵者遠端控制殭屍電腦時,多線程等于多條控制管道,這些通道同時啟動,避免有些通道被發現,或被關閉時,對殭屍電腦失控的狀态;同時也可以避免有人冒充自己,利用自己的殭屍電腦。
<b>小結:</b>
這裡隻是對入侵躲避技術的一個初步認識,在今後的讨論中我們再将進一步分析各種躲避技術的原理與方法。
本文轉自 zhaisj 51CTO部落格,原文連結:http://blog.51cto.com/zhaisj/1173352,如需轉載請自行聯系原作者