1. 程式人生 > 其它 >一個利用CVE-2017-11292的APT樣本技術分析(一)

一個利用CVE-2017-11292的APT樣本技術分析(一)

1. 引言

最近沸沸揚揚的黑色綠洲(BlackOasis) APT 利用了Adobe Flash 的漏洞CVE-2017-11292。最近,我們發現除了黑色綠洲 APT 外,還有另外一個APT 攻擊也利用了CVE-2017-11292這個漏洞。

2. 樣本分析

這個APT 樣本是一個大小為14K左右的.doc 檔案,檔名為”World War3.doc”,這檔名就嚇死本寶寶了。雙擊執行的話,會發現Word 一閃而後退出,同時產生一個新的Word程序。

顯示的內容如下。大意是關於朝鮮核武器的評論。

濃濃的APT 攻擊味道啊。

解壓這個doc檔案,發現有個activeX1.bin檔案很可疑。

喂到十六進位制編輯工具裡面瞅瞅,

果然,是個doc檔案!

把這個doc檔案掃描一下,

發現裡面嵌套了2個 3.8K大小的SWF檔案, 事實上這兩個SWF檔案一模一樣。估計這裡攻擊者犯了一個小錯誤,同一個檔案嵌入了2次。

把SWF檔案喂到反編譯工具裡,

程式碼非常簡單,將binaryData裡的資料解壓縮,然後通過Loader.loadBytes() 載入。解壓後資料如下圖所示。

哦,賣高得,頭上3個位元組是C1 3B 69 這是個神馬檔案格式。Loader.loadBytes()怎麼能載入呢?

仔細看一下init程式碼,發現下面這3行,

原來悟空你又調皮了,偷偷把SWF的檔案頭給替換了。把’CWS’檔案頭補回去。再次餵給反編譯器,就可以看到第二層的真面目了。關鍵程式碼如下圖

這段程式碼非常清晰:

首先去伺服器“/p99uvs0.php”下載一個配置檔案:配置檔案內容如下:

k1=77wn6p1cl1k4&k2=3q1htxrk0ocm6uax&k3=131&k4=177

引數定義如下表:

k1

漏洞利用的 URL

k2

有效載荷(Payload)的URL

k3

漏洞利用模組解密的金鑰

k4

有效載荷(Payload)的解密的金鑰

獲取到配置檔案後,將從配置k2中指定的 URL去下載漏洞利用程式。這個漏洞利用程式是經過壓縮和加密的。

解密演算法較為簡單,如下圖所示

寫個python指令碼,可以解密出 漏洞利用程式。

解密後的漏洞利用程式是個混淆過的SWF程式。小樣的,你以為你加個花我就認不出你來了?

反混淆後再反編譯,發現如下程式碼:

這段程式碼,正是CVE-2017-11292的漏洞利用程式碼。在windbg中下斷點,我們可以看到控制轉移時發生的一幕

在地址5e1c699f 處,控制通過call edx指令轉移到了shellcode,地址0c0b0008處。

仔細分析該處指令不難發現,這種攻擊方法是Hacking Team 使用的破壞

MethodInfo._implGPR() 虛擬函式指標的方法。這個函式是進入JIT 生成程式碼的函式,這種攻擊的方法好處是可以繞過CFG的保護(這個函式並沒有被CFG保護)。

在 0c0b0008 處,即為shellcode的開始。Shellcode程式碼並不複雜:

1) 首先在記憶體中找到傳入的解密後的的有效載荷。它是個PE檔案,在shellcode的後面,可以通過搜尋PE檔案頭的方式定位到。 2) 然後通過ZwAllocateVirtualMemory()分配一塊記憶體 3) 在2)分配的記憶體中載入PE檔案,並將控制轉移到PE檔案入口點。

在這個攻擊中,有效載荷為一個137K左右的後門,具體功能將在後續篇章中繼續分析。

3. 樣本溯源分析

此APT 攻擊應該發生在今年10月份左右。既然是APT 攻擊,溯源分析必不可少。那麼攻擊者來自哪個組織呢。

無論從攻擊手法,還是攻擊中使用到的一些程式碼的細節,比如k1,k2,k3,k4的配置,還有解密方式,甚至是有效載荷,種種跡象都表明,這個攻擊應該出自APT28 之手。此APT攻擊和去年的一個APT28攻擊手法極為相似。

在我們的分析中還發現,CVE-2017-11292這個漏洞利用程式,包含有很多冗餘程式碼。為什麼會出現這種情形呢?我們不妨大膽的假設,(這個漏洞利用在攻擊時很有可能是 0 day), 這個攻擊程式碼很有可能是從 0 day 軍火商那裡購買後集成進來的。

那麼至於此次攻擊究竟針對哪個國家呢? 想想APT28來自於哪個國家,而樣本中doc檔案中提到的內容,我想聰明的讀者心裡一定已經有了答案了。