:::info 作者:
(1) Daniele Capone, SecSI srl, 那不勒斯, 義大利 (daniele.capone@secsi.io);
(2) Francesco Caturano, 那不勒斯費德里科二世大學電機工程與資訊技術系, 那不勒斯, 義大利 (francesco.caturano@unina.i)
(3) Angelo Delicato, SecSI srl, 那不勒斯, 義大利 (angelo.delicato@secsi.io);
(4) Gaetano Perrone, 那不勒斯費德里科二世大學電機工程與資訊技術系, 那不勒斯, 義大利 (gaetano.perrone@unina.it)
(5) Simon Pietro Romano, 那不勒斯費德里科二世大學電機工程與資訊技術系, 那不勒斯, 義大利 (spromano@unina.it).
:::
摘要與第一章 簡介
第二章 相關研究
第三章 Docker化Android:設計
第四章 Docker化Android架構
第五章 評估
第六章 結論與未來發展,以及參考文獻
本章節通過檢視多個方面來評估Docker化Android平台。首先,我們強調模擬器核心與實體裝置核心組件在功能方面的差異,並突顯與三種最常用作業系統的相容性。然後,我們提供Docker化Android的實際使用範例,並討論第三章中定義的需求覆蓋情況。
\
\ A. 模擬器核心與實體裝置核心的差異
\ 即使我們已投入大量努力創建一個對兩種裝置類型具有相同功能的系統,但使用模擬時仍存在一些限制:
\ • SMS ADB發送/接收功能:在模擬裝置中,可以通過ADB軟體自動化發送和接收SMS訊息。顯然,這在實體裝置上原生並不可行。因此,使用者必須手動發送和接收SMS訊息以實現SMS攻擊場景。解決此問題的方法可能是開發一個自定義Android應用程式,安裝在實體裝置上並進行設置以自動發送和接收訊息。
\ • 網路:模擬器和實體裝置版本之間的網路配置相當不同。在模擬器版本中,AVD是在Docker容器內創建的,因此它共享容器的IP地址。相反,實體裝置實際連接到運行容器的機器,並保持其自身的IP地址。
\ • 硬體虛擬化:對於硬體組件,情況也相當不同:某些硬體設備如GPS和麥克風可以被模擬。特別是,可以通過ADB設置裝置的GPS位置,並且主機的麥克風可以與模擬器共享。但有些硬體組件目前無法模擬,例如藍牙。
\ B. 跨平台相容性的主機評估
\ 非功能性需求NF04(跨平台相容性)指出,最終系統應該可以在任何主機作業系統中使用。這指的是運行Docker容器的機器的作業系統。表III提供了與Linux、Windows和OS X相容性的摘要。
\
\ Windows的問題在於,目前使用Docker的最佳方式是通過Windows Subsystem for Linux (WSL)框架。不幸的是,WSL尚不支持嵌套虛擬化,而這一功能是在Docker容器內運行Android模擬器所必需的。然而,此功能將在即將發布的WSL版本中提供。可能可以通過使用虛擬機在Windows上運行模擬器核心版本,但這會失去與容器化相關的所有性能優勢。OS X也存在類似問題,目前無法運行模擬器核心。此外,OS X不允許與Docker容器共享USB裝置。因此,使用實體裝置核心版本的唯一方法是通過Wi-Fi運行ADB,或從Docker容器內連接到主機ADB。
\ 在本節的其餘部分,我們將展示Docker化Android在使用模擬器核心和實體裝置核心重現安全攻擊鏈方面的有效性。
\ C. 在模擬器上重現安全攻擊
\ 我們在此關注與CVE-2018-7661[1]相關的漏洞場景示例。這個CVE與應用程式"Wi-Fi Baby Monitor"的免費版本有關。該應用程式需要安裝在兩個裝置上,以作為所謂的嬰兒監視器(一種用於遠程監聽嬰兒發出聲音的無線系統)。根據國家漏洞數據庫報告,"2.02.2版本之前的Wi-Fi Baby Monitor Free & Lite允許遠程攻擊者通過向TCP端口8258和8257發送特定請求來獲取音頻數據"。
\
\ 此應用程式的高級版本為使用者提供了在配對過程中指定密碼的功能。通過監控網路流量,可以觀察到:
\ • 初始連接發生在端口8257上;
\ • 始終發送相同的序列來啟動配對過程;
\ • 在配對過程結束時,會在端口8258上啟動新連接。此端口用於傳輸音頻數據;
\ • 連接到端口8258後,端口8257上的另一個連接保持開放,用作會話的心跳;
\ • 在心跳連接上,客戶端定期發送十六進制字節0x01(大約每秒一次);
\ 允許攻擊者獲取音頻數據的概念驗證在[21]中給出。這個概念驗證(PoC)可以通過實現由三個服務組成的基礎設施在Docker化Android上輕鬆重現:
\ • core-emulator:預裝了Baby Monitor應用程式作為發送方的核心組件實例;
\ • ui:用於控制進行中情況的UI組件;
\ • attacker:一個自定義版本的Kali Linux,自動安裝執行PoC所需的所有依賴項。
\ 這也是展示用於啟用通信的端口轉發功能的完美示例。
\ D. 在實體裝置上重現安全攻擊
\ 使用實體裝置,我們研究了另一個稱為BlueBorne的漏洞。"BlueBorne"一詞指的是與藍牙實現相關的多個安全漏洞。這些漏洞是由物聯網安全公司Armis Security的一組研究人員於2017年9月發現的。根據Armis的說法,在發現時,大約82億台裝置可能受到BlueBorne攻擊向量的影響,該攻擊向量影響了Android、iOS、Microsoft和Linux中的藍牙實現,因此影響了幾乎所有藍牙裝置類型,如智能手機、筆記本電腦和智能手錶。Ben Seri和Gregor Vishnepolsk在2017年9月12日發表的論文中詳細分析了BlueBorne[22]。攻擊向量中可以使用八種不同的漏洞。
\ 關於Android,所有裝置和版本(因此比2017年12月發布的Android Oreo更早的版本)都受到上述漏洞的影響,除了支持BLE(藍牙低功耗)的裝置。一般來說,利用該漏洞需要滿足兩個條件:(i)目標裝置必須啟用藍牙;(ii)攻擊者必須足夠接近目標裝置。由於模擬器核心中不提供藍牙功能,因此相關攻擊鏈只能在實體裝置上重現。
\ 1) 在Docker化Android上完整重現BlueBorne:為了展示Docker化Android的有效性,我們開發了一個攻擊鏈,利用了影響Android的兩個遠程代碼執行(RCE)漏洞,即CVE-2017-0781和CVE-2017-0782。這些漏洞屬於Armis Security的一組安全研究人員發現的藍牙漏洞集"BlueBorne"[23]。
\ 圖4中的圖表概述了開發的攻擊鏈:
\
\ 2) 釣魚電子郵件被發送到受害者的郵箱。
\ 3) 受害者閱讀釣魚電子郵件並錯誤地點擊郵件正文中包含的惡意連結。
\ 4) 惡意連結允許攻擊者觸發攻擊,下載並安裝假應用程式到受害者的移動裝置上。
\ 5) 惡意信息將相關移動信息發送給攻擊者。這些信息是利用這兩個漏洞所必需的。
\ 6) 攻擊者製作惡意有效載荷以利用漏洞。
\ 7) 攻擊者通過利用藍牙組件的漏洞發送攻擊,並獲得對受害者裝置的遠程訪問權限。
\
\ 這個複雜場景涵蓋了表I中定義的多個威脅。表V顯示了這些威脅以及允許場景重現的平台功能和組件。
\
\ 該場景需要複雜的網路通信(F07)並涉及藍牙的使用。因此,我們必須使用實體裝置(F10)。在提出的場景中,我們必須模擬用戶收到電子郵件時安裝惡意應用程式的情況。這可以手動完成(F02)或通過實現實用的ADB腳本(F03)。為了重現該場景,需要額外的元素:
\ • Gophish:一個允許製作和發送釣魚電子郵件的網頁應用,已有Docker版本。
\ • Ghidra:由美國國家安全局(NSA)創建的用於逆向工程目的的應用程式。在此上下文中,它用於獲取有關目標裝置的有用信息。此應用程式在主機上使用,不使用Docker。
\ • 假Spotify:一個看似良性的應用程式,聲稱為用戶提供知名Spotify Premium應用程式的免費版本,但實際上將被竊取的文件發送到攻擊者的服務器,這些文件在Ghidra上進行逆向工程。此應用程式也是在不使用Docker的情況下創建的。
\