Paper Note
Paper Note
Finished
- IOTFUZZER: Discovering Memory Corruptions in IoT Through App-based Fuzzing
ING
Towards Automated Dynamic Analysis for Linux-based Embedded Firmware
To Do
L. Constantin, “Hackers found 47 new vulnerabilities in 23 IoT devices at DEF CON,” http://www.csoonline.com/article/3119765/security/ hackers- found- 47- new- vulnerabilities- in- 23- iot- devices- at- def- con. html, Accessed: November 2017.
A. Costin, J. Zaddach, A. Francillon, and D. Balzarotti, “A Large-Scale Analysis of the Security of Embedded Firmwares,” in Proceedings of the 23rd USENIX Security Symposium, San Diego, CA, USA, August 20-22, 2014, 2014.
A. Costin, A. Zarras, and A. Francillon, “Automated Dynamic Firmware Analysis at Scale: A Case Study on Embedded Web Interfaces,” in Proceedings of the 11th ACM on Asia Conference on Computer and Communications Security (ASIACCS), Xi’an, China, May 30 - June 3, 2016, 2016.
A. Cui, “Embedded Device Firmware Vulnerability Hunting with FRAK,” DEF CON, vol. 20, p. 9, 2012.
A. Cui, M. Costello, and S. J. Stolfo, “When Firmware Modifications Attack: A Case Study of Embedded Exploitation,” in Proceedings of the 20th Annual Network and Distributed System Security Symposium (NDSS), San Diego, California, USA, February 24-27, 2013, 2013.
D. Davidson, B. Moench, T. Ristenpart, and S. Jha, “FIE on Firmware: Finding Vulnerabilities in Embedded Systems Using Symbolic Execu- tion,” in Proceedings of the 22th USENIX Security Symposium (USENIX Sec), Washington, DC, USA, August 14-16, 2013, 2013.
M. Sutton, A. Greene, and P. Amini, Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley, 2007.
J. Zaddach, L. Bruno, A. Francillon, and D. Balzarotti, “AVATAR: A Framework to Support Dynamic Security Analysis of Embedded Systems’ Firmwares,” in Proceedings of the 21st Annual Network and Distributed System Security Symposium (NDSS), San Diego, California, USA, February 23-26, 2014, 2014.
IOTFUZZER: Discovering Memory Corruptions in IoT Through App-based Fuzzing
(Jiongyi Chen∗, Wenrui Diao, Qingchuan Zhao, Chaoshun Zuo, Zhiqiang Lin, XiaoFeng Wang, Wing Cheong Lau, Menghan Sun, Ronghai Yang, and Kehuan Zhang, The Chinese University of Hong Kong)
設計細節
從大的方面來說,設計包括兩部分:app分析階段及fuzz階段。在app分析階段,將iot app作為輸入,分析它的UI並尋找網路觸發事件,同時跟蹤應用網路協議相關欄位。經過以上步驟,協議記錄下了所有的協議欄位以及用於生成它們的相應函式。在fuzz階段,我們對app進行動態插樁對感興趣的欄位進行變異,並對iot裝置進行監控。最後fuzzer生成相應的結果。
具體來說,有以下四步:
- UI分析階段。分析整個UI,找到觸發網路事件的控制元件,以使得可觸發網路事件,方便後續的資料流分析以及fuzz。
- 資料流分析階段。記錄跟蹤一系列元素以實現找到網路訊息欄位。
- 執行時變異。對相應的欄位進行變異。
- 執行監控。對iot裝置進行監控,對於TCP連線,crash表示為TCP連線突然中斷;UDP則是使用心跳機制來進行檢測。
UI 分析:呼叫路徑構建(使用Androguard以及EdgeMiner框架)–》 Activity轉換圖構造(使用Activity Transition Graph Construction)
資料流分析(主要是識別協議欄位以及相關函式)使用修改後的汙點分析框架TaintDroid,變異欄位通過變異相關函式的引數來實現。對於TaintDroid做的改變主要有以下:
- 汙點源。包括IoT應用程式中的所有字串、訊息中經常使用的系統API以及來自UI的使用者輸入。
- 汙點傳播。
- 汙點沉沒。添加了在加密函式時沉沒。
加密相關函式識別:首先,選擇包含算術和按位運算的函式。 儘管可能存在許多候選加密函式,但在執行訊息傳遞期間很少會呼叫它們。 然後,我們記錄訊息傳送事件的執行跟蹤,並根據相對於網路功能的位置細化候選函式。
執行時變異:主要是動態hook相應函式,並對相應函式欄位進行變異。有兩個好處:協議欄位在加密或編碼前被fuzz;無需逆向工程即可對未知協議進行fuzz。
函式hook-》Fuzz排程 fuzz演算法:
Input: c: number of identified fields in message M F: set of hooked functions Output: T: number of mutations for each protocol field parameter of F 1 P = {p1, p2, ..., pn} = extract_param(F) ; // get parameter set 2 n = count(P) ; // get the number of parameters 3 s = random_gen(c) ; // randomly generate s, (0<s<c) 4 T = {t1, t2, ..., tn} = get_solution(t1 + t2 + ...+ tn = s) ; // calculate one group of solutions 5 output T
fuzz策略:
- 更改字串長度以觸發棧溢位或堆溢位以及越界訪問。
- 改變整數、double以及浮點數以觸發整數溢位或越界。
- 更改型別或提供空值,以觸發混淆漏洞或未初始化漏洞。
執行監控:由於無法監控裝置狀態,所以只有通過裝置的響應來推斷裝置的狀態。
響應可能包括下面幾部分:
- 期望的響應。
- 不期待的響應。錯誤處理訊息
- 無響應。
- 斷開連線。
對於TCP連線,主要是看連線是否中斷或檢視連線狀態。 對於UDP連線,提取原有測試連線裝置的心跳包,用於測試IoT裝置。
實現及評估
實現
包括9100行java程式碼以及1400行python程式碼。
app分析階段主要使用Androguard 、 EdgeMiner以及Monkeyrunner來獲取呼叫圖以及活動傳遞資訊;依靠Xposed Module以及Monkeyrunner來進行汙點分析以及資訊傳遞的操作;使用TaintDroid模組來進行汙點追蹤;最後汙點追蹤資訊寫到了配置檔案中以進一步使用。
fuzz階段核心功能是基於Xposed框架實現的。
實驗設定
選擇了17款IoT裝置。
測試環境:Ubuntu 14.4,i7核心,2.81Ghz,8G記憶體;在Google’s Nexus 4進行汙點追蹤。
效能:在9個裝置中發現了15個嚴重漏洞(17款每款跑24小時):5個棧溢位、2個堆溢位、4個空指標引用以及4個crash。
效率:與sulley以及BED進行對比。
準確度:一些物聯網裝置實際設計不佳,無法完全保證網路可靠性,使得心跳響應消失以及TCP連線斷開,使得誤報率存在的主要原因。為解決該問題,解決方法是將payload重新發送以確定是否真的造成崩潰。
討論及缺陷
主要有以下不足:
- 測試範圍:韌體的覆蓋率以及攻擊面的覆蓋率是不足的。
- 連線模式:目前只支援wifi,對於藍芽等連線不支援。
- 雲依賴:沒有考慮提供雲服務的裝置。
- 結果評估:沒有進行crash評估。
- 準確性:誤報率以及錯誤率較高。
相關工作
基於汙點的fuzz:TaintScope
對android的fuzz:AuthScope、SmartGen、AppsPlayground、IntentFuzzer、Buzzer、Droid- Fuzzer
嵌入式裝置安全:RPFuzzer、DrE、FIE、Avatar
Towards Automated Dynamic Analysis for Linux-based Embedded Firmware
(Towards Automated Dynamic Analysis for Linux-based Embedded Firmware: D. D. Chen, M. Woo, D. Brumley, and M. Egele, “Towards Automated Dynamic Analysis for Linux-based Embedded Firmware,” in Proceed- ings of the 23nd Annual Network and Distributed System Security Symposium (NDSS), San Diego, California, USA, February 21-24, 2016, 2016.)
緒論
嵌入式裝置有一些共同特性:如基於ARM或MIPS 處理器的嵌入式片上系統設計;通過乙太網或WIFI的網路連線以及各種通訊介面,如GPI、I2C或SPI;這些裝置都是通過廠商提供的韌體以實現功能,且使用者很少會去更新。
一個無線路由器通常是使用者裝置的第一條也是最後一條防線。
FIRMADYNE可以實現自動動態分析,解決了嵌入式裝置面臨的眾多挑戰,例如各種硬體專用外設的存在,非易失性儲存器(NVRAM)中永續性配置的儲存以及動態生成的配置檔案。
FIRMADYNE首先自動解壓廠商韌體,因為目前裝置都是基於Linux系統的,所以該框架設計也是基於linux系統的嵌入式裝置;使用qemu 系統模式來模擬執行裝置;為了更好的分析系統,還提供了爬蟲去廠商網站獲取資料。