Hacking Team Android Browser Exploit代碼分析
0x0 前言
Hacking Team 415G泄露資料的vector-exploit-master\src\ht-webkit-Android4-src目錄中,包含一份Android Browser exploit代碼。用戶在瀏覽器中點(diǎn)擊攻擊者的鏈接,便會(huì)執(zhí)行惡意代碼。惡意代碼利用漏洞獲取root權(quán)限,并靜默安裝木馬apk。影響Android4.0-4.3版本。
0x1 漏洞利用的藝術(shù)
Exploit代碼利用了三個(gè)已知的libxslt漏洞,獲得對(duì)內(nèi)存地址的完整控制能力。
1. information leak (CVE-2011-1202)。
2. Arbitrary memory read (CVE-2012-2825)
3. Heap-buffer-overflow (CVE-2012-2871)
關(guān)鍵流程:

0x2 利用分析
1. 申請(qǐng)330塊1M大小的內(nèi)存,并給每一塊內(nèi)存區(qū)域打上標(biāo)記(0x70747468,‘HTTP’)。

2. 進(jìn)行內(nèi)存搜索,利用CVE-2012-2825可以檢查任意內(nèi)存地址是否為0x70747468(’HTTP’)的能力,找出第一步的標(biāo)記內(nèi)存,得到標(biāo)記內(nèi)存所在的地址。這里查找內(nèi)存的時(shí)候涉及一個(gè)技術(shù)細(xì)節(jié)。
When parsing a XSLT stylesheet containing a DTD, a structure of type xmlEntity is accessed as another type. The value of cur->ns->href is then compared with a string (“http://www.w3.org/1999/XSL/Transform"). If not equal, return null.

將ns->href和ns->prefix的值改為addr,然后利用二分法在[0x7a703030, 0x79303030]這塊內(nèi)存空間遍歷addr,如果找到"http://www.w3.org/1999/XSL/Transform",會(huì)返回一個(gè)正確的documentElement。

由于這塊地址在第一步中已經(jīng)申請(qǐng)。這塊內(nèi)存我們知道地址并可以隨意使用,這一步很關(guān)鍵??煽刂频膬?nèi)存約4MB,稱為ZoneX。
3.精心修改ZoneX,利用CVE-2011-1202泄漏堆對(duì)象的地址和CVE-2012-2871寫特定內(nèi)存地址為特定值的能力,把ZoneX標(biāo)記為已釋放,但JS仍然有讀寫的能力。



這一過程相當(dāng)復(fù)雜,暫且跳過。
4. 立即申請(qǐng)大量新的ArrayBuffer覆蓋ZoneX,由于JS仍然有讀寫ZoneX的能力,可以馬上修改一塊符合條件的ArrayBuffer的起始地址為0x00000000,結(jié)束地址為0xFFFFFFFF,即整個(gè)內(nèi)存區(qū)域。

5. 利用BufferMemoryObject對(duì)象,封裝對(duì)內(nèi)存地址的操作,至此JS已經(jīng)得到整個(gè)RING3內(nèi)存的完整讀寫能力。

6. 下載小馬module.so

7. 結(jié)合CVE-2011-1202信息泄漏漏洞,獲得libwebcore.so的基址進(jìn)而獲得libc.so的基址。

然后在libc和libwebcore中搜索可用的gadget。

8. 操作內(nèi)存,覆蓋JS對(duì)象的虛表,構(gòu)造假的vtable完成兩個(gè)gadget的拼接。并使用ROP攻擊手法,通過mprotect給堆上的shellcode代碼執(zhí)行的權(quán)限,并將執(zhí)行流程跳轉(zhuǎn)到真正的shellcode。


9. shellcode中激活已經(jīng)下載好的小馬module.so;

10. 接下來小馬下載ROOT提權(quán)程序(exploit,ELF)獲取ROOT權(quán)限;并留下一個(gè)shell /system/bin/rilcap,過程和rcs完全一致。

用IDA打開小馬,發(fā)現(xiàn)其使用了Obfuscator-clang對(duì)代碼進(jìn)行了混淆。

所涉及的兩種root方法,第一種是put_user,另一種是towel。
11. 隨后,小馬在ROOT權(quán)限下靜默安裝黑客指定的木馬程序。ALL DONE。
0x4 總結(jié)
從三個(gè)POC到一套完整的遠(yuǎn)程代碼執(zhí)行exploit,是一個(gè)復(fù)雜而艱難的過程。Hacking Team 的exploit演繹相當(dāng)之精彩,不得不說是漏洞利用的藝術(shù)。從遠(yuǎn)程代碼執(zhí)行,到下載rcs遠(yuǎn)程控制客戶端,Hacking Team構(gòu)建了一條完整的黑色鏈條??赐曛?,各位看官會(huì)不會(huì)和小編一樣,背后嚇出了一身冷汗。Android Browser Exploit僅僅是Hacking Team泄漏資料中的一個(gè)項(xiàng)目,其中的技術(shù)點(diǎn)便相當(dāng)復(fù)雜。其所泄漏的項(xiàng)目,不僅包括源代碼,還包括大量工程化的工具以及技術(shù)文檔。僅需簡(jiǎn)單地配置和修改即可自動(dòng)化生成黑客工具,很容易被不法分子利用。可想而知,這將大大降低黑產(chǎn)的技術(shù)門檻。黑產(chǎn)水平將在短時(shí)間內(nèi)顯著提升。守護(hù)用戶安全之路將任重而道遠(yuǎn)。
(行文如有疏漏,敬請(qǐng)斧正)