你的指紋還安全嗎? - BlackHat 2015 黑帽大會總結 day 2

wyzsk發表於2020-08-19
作者: 蒸米 · 2015/08/07 17:49

0x00 序


今天是Black Hat 2015第二天,第一天的大會總結請參考:

看駭客如何遠端黑掉一輛汽車 - BlackHat 2015 黑帽大會總結 day 1

0x01 TRUSTKIT: CODE INJECTION ON IOS 8 FOR THE GREATER GOOD


本來打算去聽shendi的TrustZone crack的talk,但是因為shendi的visa沒有辦下來,最後就給cancel了。於是去聽了這個iOS injection的talk。

Talk首先介紹說在iOS 8之前是不允許動態載入library的,只允許靜態編譯。但在iOS 8之後加入了新的特性叫”Embedded Frameworks”。允許應用和它的extension進行通訊,但實際上無論有沒有extension都可以用這個新特性。

然後作者嘗試用substrate的方法來hook SSL方法在非越獄機器上,但是失敗了,原因是substrate在hook函式的時候需要patch函式的prologue,因此需要RWX許可權,但這在非越獄機器上是不可能的。最終作者採用的方法是facebook開發的fishhook框架用來進行HOOK。https://github.com/facebook/fishhook

最後作者利用上面講到的方法開發了trustkit。利用trustkit,可以在不修改原始碼的情況下用來hook SSL函式並加入pinning的功能。並且作者在今天釋出了原始碼。

PPT下載:

https://www.blackhat.com/docs/us-15/materials/us-15-Diquet-TrustKit-Code-Injection-On-iOS-8-For-The-Greater-Good.pdf

trustkit原始碼:

https://github.com/datatheorem/TrustKit

0x02 AH! UNIVERSAL ANDROID ROOTING IS BACK


enter code here

speaker是 Xu Wen,來自上海交通大學並且在keen實習。首先speaker提到想要實現萬能root必須要基於linux kernel的漏洞而不是靠驅動的漏洞。隨後speaker講述了怎麼樣發現漏洞的過程。

speaker首先採用https://github.com/kernelslacker/trinity這個system call fuzzer獲取到很多的log資訊。然後在分析fuzzer的log的過程中,發現kernel crash在一個很奇怪的地址0x200200。繼續分析發現問題是由ping_unash()這個函式引起的。但開始只能造成拒絕服務攻擊,這對於root來說是遠遠不夠的。隨後繼續分析發現sock_put(sk)被呼叫了2遍,會產生非常普遍的UAF(use-after-free)漏洞。既然有了UAF漏洞,下一步就是用UAF來控制核心。PingPong Root採用的方式是Ret2dir (Ret2dir: rethinking kernel isolate)。控制核心以後就是執行提權的shellcode了。PingPong root借鑑了towelroot中使用的通用提權shellcode,讓程式獲取root許可權。

speaker最後提到了如何root 64位的裝置。在64位上,UAF漏洞依然存在,但有一個問題是無法將shellcode return到user space。所以需要做kernel層的ROP。最後採用了類似rop的JOP(jump to program)的方法,並在某些ROMs中發現了一個GOD gadgets可以做到洩露記憶體資訊以及覆蓋資料的功能。最終做到了root提權。

PPT:

https://www.blackhat.com/docs/us-15/materials/us-15-Xu-Ah-Universal-Android-Rooting-Is-Back.pdf

0x03 FINGERPRINTS ON MOBILE DEVICES: ABUSING AND LEAKING


speaker是來自FireEye的Wei Tao和Zhang Yulong。Talk首先介紹了指紋系統的原理以及實現,比如如何進行特徵採集,如何對位元徵等。

enter image description here

隨後講了2種架構,一種是Fingerprint without TrustZone和Fingerprint with TrustZone。在root情況下without TrustZone是非常危險的,所有的資料都可以輕鬆獲取到。但是在有了TrustZone的情況下,hacker在獲取了root以後依然無法讀取TrustZone中的指紋資訊。如果想要獲取指紋資訊,理論上還需要破解TrustZone才行。

enter image description here

接著speaker介紹了四種攻擊手段:第一個攻擊是confused attack(迷惑性攻擊)。speaker提到fingerprint有兩種用處,一種是authentication另一種authorization。就像是passport和visa。一個用來做身份驗證,一個用來行使權力。Hacker可以採取一種迷惑性的攻擊,讓使用者僅僅是覺得做身份驗證,但實際上卻行使了權利,比如說在demo中使用者以為他在解鎖手機螢幕,而實際上卻使用指紋轉了錢給駭客。

enter image description here

第二個攻擊是不安全的資料儲存。最經典的例子就是HTC one的指紋儲存檔案。對所有人都是可讀可寫的。毫無安全性可言。

enter image description here

enter image description here

第三個攻擊是finger spy。雖然TrustZone非常安全,但是android系統是透過應用層的service和TrustZone進行通訊的。因此hacker可以偽造一個finger print app,並且和finger print sensor進行通訊,從而竊取到使用者的指紋。三星針對這個問題的解決方式是TrustZone UI。也就是當使用指紋進行授權的時候必須透過TrustZone UI來進行,因為TrustZone UI也是TrustZone的一部分,所以駭客必須要破解掉TrustZone才能獲取到指紋。

enter image description here

第四個攻擊是fingerprint backdoor。使用者在系統的設定中可以檢視當前記錄的指紋數量,但是這個數量資訊並沒有儲存在TrustZone當中。因此hacker可以留下自己的指紋作為後門,並且將增加的指紋的數量減掉。比如說在demo中fingerprint service顯示僅儲存了一個指紋,但是demo中卻成功的用三個指紋解鎖了手機螢幕,因為其中兩個指紋其實是駭客留下的,為了防止使用者發現,駭客將儲存的指紋數修改成了1。

PPT:

https://www.blackhat.com/docs/us-15/materials/us-15-Zhang-Fingerprints-On-Mobile-Devices-Abusing-And-Leaking.pdf

0x04 REVIEW AND EXPLOIT NEGLECTED ATTACK SURFACES IN IOS 8


這個talk來自盤古。speaker首先介紹了iOS的幾個攻擊點:本地攻擊,遠端攻擊,核心攻擊等,並舉了很多例子(比如之前jailbroken使用的漏洞)。

接著speaker介紹了在kernel層進行fuzzing的tips。speaker首先提到IOKit是最好的fuzz目標,因此對fuzzy IOkit的第一個建議是儘量fuzz更底層的函式。比如說IOConnectCallMethod裡有對引數大小的限制,但是如果呼叫io_connect_method就沒有引數大小的限制。第二個建議就是使用information leak的漏洞來獲取fuzzy過程中產生的資訊。

隨後speaker提到了Shared Memory。因為IOKit會share一些data到使用者層並且使用者層可以對這些資料進行修改。因此在fuzz io_connect_method的過程中可以對這些使用者層資料也進行fuzz。隨後IOKit在讀取了使用者層修改的資料之後就有可能產生漏洞。接著speaker又介紹了iokit_user_client_trap()這個使用者層函式的fuzzy,並demo了一個0day。

接下來speaker介紹瞭如何在使用者層挖XPC的洞。首先在應用上分別建立server端和client端,然後使用client端對server端進行通訊。

enter image description here

在進行通訊過程的中,有很多函式可以進行fuzz,如果函式對傳輸的資料處理有誤,有可能會產生空指標異常,記憶體越界以及遠端程式碼執行等漏洞。最後演講者分別展示這幾種漏洞的POC程式碼並簡單介紹瞭如何利用這些fuzz出來的漏洞。

PPT:

https://www.blackhat.com/docs/us-15/materials/us-15-Wang-Review-And-Exploit-Neglected-Attack-Surface-In-iOS-8.pdf

0x05 總結


最後一個talk本來想去聽360講的Android Fuzzing,結果又是因為簽證問題給cancel了。於是本屆BlackHat的會議部分就算結束了。明天開始將在隔壁酒店舉行DEFCON的會議以及CTF比賽。歡迎大家繼續關注。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章