360再次發現典型的APT攻擊 呼籲網民提高安全意識

2018年6月1日,360核心安全高級威脅應對團隊在全球範圍內率先捕獲了新的一起使用Flash 零日漏洞的在野攻擊,黑客精心構造了一個從遠程加載Flash漏洞的Office文檔,打開文檔後所有的漏洞利用代碼和惡意荷載均通過遠程的服務器下發,此次攻擊主要針對中東地區。

該樣本具有比較誘惑性的文件名basic_salary.xlsx(基本工資),其內容也與標題符合,為各個時間階段的工資,語言採用阿拉伯語。

basic_salary.xlsx(MD5: c8aaaa517277fb0dbb4bbf724245e663)文檔內容完整,其部分內容截圖如下:

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖1

黑客通過activex控件和數據嵌入了一個遠程的flash文件鏈接,相關的漏洞攻擊代碼由遠程的服務器腳本控制下發。

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖2

運行該xlsx後會從遠端(C&C:people.dohabayt.com)下載釋放惡意swf文件(MD5: ee34f466491a5c5cd7423849f32b58f5)並運行,該swf文件會再次請求服務端,下載加密數據以及解密KEY,解密後的文件swf(md5: f63a51e78116bebfa1780736d343c9eb),該文件為Flash 0day exploit,漏洞觸發後請求遠端下載惡意shell並執行。在實時分析的過程中,我們發現攻擊者已關閉最終木馬荷載的下發。

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖 3

漏洞攻擊的多個階段流程如下:

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖4

漏洞的flash攻擊代碼經過了高度混淆,經過調試分析我們在攻擊樣本中定位到了零日漏洞攻擊代碼。

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖5

經過還原後的關鍵代碼如下:

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖6

代碼中Static-init methods Flash會使用解釋器去處理,解釋器在處理try catch語句時沒有正確的處理好異常的作用域,導致代碼中li8(123456)指令觸發異常後會被catch塊捕獲。

而處理try catch語句時由於Flash認為沒有代碼能執行到catch語句塊,所以也沒有對catch語句塊中的字節碼做檢查,攻擊者通過在catch語句塊中使用getlocal,setlocal指令來實現對棧上容易地址讀寫。最終,攻擊者通過交換棧上的2個對象指針來將漏洞轉為類型混淆問題完成攻擊。

Flash will use the interpreter to handle Static-init methods. The interpreter handles the try catch statement does not correctly handle the exception, and this will make li8 (123456) instruction caught by the catch block when it triggers the exception.

Because Flash assumes that it is impossible to execute to the catch block when processing the try catch statement, it does not check the bytecode in the catch block. The attacker uses the getlocal, setlocal instruction in the catch block to read and write arbitrary addresses on the stack.

In this wild used 0 day, the attacker switches the vulnerability to a type confusion by exchanging two object pointers on the stack and finally completes the attack.

進一步調試攻擊代碼,可以觀察到漏洞利用的字節碼,發現函數的localcount 值為2,而在catch塊中getlocal,setlocal已經操作448和498位置的數據。

The vulnerability exploited bytecode discovery function has a localcount value of 2, whereas in the catch block getlocal, setlocal has manipulated the data at locations 448 and 498.

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖7

調試觀察利用中setlocal操作棧數據,圖中可以看到ecx的值是class5對象的指針,068fc1a0正是class7的指針。

Let’s observe setlocal operation stack data. The value of ecx is the pointer of the class5 object, and 068fc1a0 is the pointer of class7.

360再次發現典型的APT攻擊 呼籲網民提高安全意識

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖9

交換完2個對象的指針後攻擊者通過比較對象成員的值來判斷利用是否成功。

After exchanging the pointers of two objects, the attacker judges whether the exploited is successful by comparing the values of the object members.

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖10

漏洞攻擊的C&C是people.dohabayt.com,其對應的ip地址為185.145.128.57(荷蘭),從該域名的whois信息顯示該域名註冊時間為2018-02-18,說明攻擊者在今年2月期間就開始籌備攻擊。

直接訪問people.dohabayt.com ,訪問會被強制重定向到https://people.bayt.com/sushasolomon/ 一名卡塔爾航空的職員介紹主頁。

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖11

360再次發現典型的APT攻擊 呼籲網民提高安全意識

圖12

people.bayt.com是一箇中東地區的求職網站,攻擊者使用的C&C只是多了一個doha(多哈),明顯有偽裝域名進行釣魚的意圖,因此我們大膽猜測攻擊者針對地區為卡塔爾多哈。

通過分析我們可以發現此次攻擊不計成本使用了零日漏洞,攻擊者在雲端開發了精巧的攻擊方案,並花了至少三個月以上籌備攻擊,針對攻擊目標定製了詳細的釣魚攻擊內容,是一起典型的APT攻擊。請相關單位和普通用戶都需提高安全防範意識,及時更新Flash版本,並使用360安全衛士防禦可能出現的漏洞威脅。


分享到:


相關文章: