Hacking Team Flash New 0Day 利用代碼分析
周末大清早起來,就看到知道創(chuàng)宇在微博上說,Hacking Team又泄露新的Flash 0Day,在當(dāng)前最新實(shí)測(cè)可用。于是筆者下載了一份利用代碼,經(jīng)測(cè)試確實(shí)在最新版上可利用,目前Adobe官方未發(fā)布補(bǔ)丁。此次泄露的0day并沒有在泄露的工具庫(kù)里面,而是在郵件附件中被發(fā)現(xiàn)的。

【利用代碼分析】
1、這次的漏洞主要出現(xiàn)在AS3 "opaqueBackground” 屬性上,它主要用于設(shè)置背景顏色。首先創(chuàng)建_ar Array數(shù)組,然后用vector.對(duì)象填充。

2、接著創(chuàng)建TextLine對(duì)象,然后設(shè)置它的opaqueBackground屬性,再自定義valueOf函數(shù),這個(gè)函數(shù)是觸發(fā)漏洞的關(guān)鍵,跟前幾個(gè)flash漏洞類似。

3、設(shè)置opaqueBackground屬性,將_mc(MyClass類型)賦予opaqueBackground,由于數(shù)據(jù)類型不同,AVM會(huì)進(jìn)行類型轉(zhuǎn)換,此時(shí)自定義的valueOf2就會(huì)被調(diào)用。


4、調(diào)用recreateTextLine函數(shù)重建TextLine,導(dǎo)致原分配的TextLine對(duì)象內(nèi)存被釋放,但程序依然保留著對(duì)它的引用,所以漏洞也是個(gè)UAF漏洞。接著重新設(shè)置_ar[i].length的長(zhǎng)度值(_vLen 大于原始長(zhǎng)度值 ),會(huì)導(dǎo)致重新分配內(nèi)存,從而占用已釋放的內(nèi)存,此時(shí)里面都是vector.對(duì)象。最后返回_vLen+8的值給_ar[_cnt].opaqueBackground,如果利用成功,它剛好會(huì)去篡改某個(gè)vector.對(duì)象的長(zhǎng)度值為106。

5、找到被篡改了長(zhǎng)度的vector對(duì)象,由于其長(zhǎng)度值被更改,再用這個(gè)被改的vector去覆蓋下一個(gè)vector長(zhǎng)度為0x40000000,允許讀取到更大內(nèi)存空間的數(shù)據(jù),從而獲取需要調(diào)用的函數(shù)地址,繞過ASLR保護(hù)。根據(jù)不同的系統(tǒng)平臺(tái),選擇不同的shellcode代碼執(zhí)行,這些跟前2個(gè)flash 漏洞的利用模板基本一致。

6、內(nèi)存搜索的方式也是采用搜索“MZ”PE頭這種暴力方式,再去解析PE文件格式,從導(dǎo)入表中的找到kernel32.dll庫(kù),再?gòu)钠浜瘮?shù)名列表里找到VirtualProtect函數(shù),進(jìn)而找到對(duì)應(yīng)的函數(shù)地址進(jìn)行調(diào)用。

7、看下ShellWin32.Exec函數(shù),通過內(nèi)存搜索找到VirtualProtect函數(shù)地址,將包含執(zhí)行calc的shellcode設(shè)置為可執(zhí)行權(quán)限,以此繞過DEP保護(hù),并用指向shellcode的指針替換payload對(duì)應(yīng)的JIT函數(shù)指針,當(dāng)調(diào)用Payload.call 時(shí)則執(zhí)行的正是shellcode。

【防范方案】
Adobe官方剛剛已經(jīng)發(fā)布安全公告,對(duì)應(yīng)的CVE號(hào)為:CVE-2015-5122,并稱12號(hào)將發(fā)布安全補(bǔ)丁,相當(dāng)于北京時(shí)間周一早上。TSRC建議大家在官方發(fā)布補(bǔ)丁前,先禁用Flash插件。
【總結(jié)】
此次漏洞主要是AS3 opaqueBackground 屬性導(dǎo)致的UAF漏洞,依然是valueOf導(dǎo)致的漏洞,此次Hacking Team 曝光的3個(gè)漏洞均是valueOf問題,用的基本是同一套利用模板,并且支持多個(gè)平臺(tái)環(huán)境,都是采用vector exploit技術(shù)去實(shí)現(xiàn)信息泄露,從而繞過ASLR,再調(diào)用virtualProtect去賦予shellcode可執(zhí)行權(quán)限,以此繞過DEP保護(hù)??梢灶A(yù)見未來將會(huì)有很多flash exploit 采用類似技術(shù),甚至可能在一些惡意樣本中找到Hacking Team的Flash利用模板,未來的利用代碼將會(huì)更加工程化,通用化。
PS:分析時(shí)間倉(cāng)促,如有誤,歡迎指正!