Mariana Trench:針對(duì)Android和Java應(yīng)用程序的靜態(tài)代碼分析工具
關(guān)于Mariana Trench
Mariana Trench是一款功能強(qiáng)大的靜態(tài)代碼分析平臺(tái),在該工具的幫助下,廣大研究人員可以輕松針對(duì)Android和Java應(yīng)用程序進(jìn)行靜態(tài)代碼分析。
在這篇文章中,我們將帶領(lǐng)大家在自己的設(shè)備上安裝并配置好Mariana Trench,然后利用Mariana Trench在一個(gè)小型的App中尋找出一個(gè)遠(yuǎn)程代碼執(zhí)行漏洞。
依賴組件
Mariana Trench的正常運(yùn)行要求本地設(shè)備上安裝并配置好最新版本的Python環(huán)境。在macOS上,我們可以通過homebrew來獲取最新版本的Python:
$ brew install python3
在Debian系統(tǒng)上(Ubuntu、Mint、Debian),我們可以使用apt-get來完成Python的安裝:
$ sudo apt-get install python3 python3-pip python3-venv
注意:大家還需要在本地設(shè)備上安裝并配置好AndroidSDK,并將“$ANDROID_SDK”環(huán)境變量設(shè)置為指向SDK的安裝路徑。除此之外,我們還需要在一個(gè)虛擬環(huán)境中運(yùn)行,這一步可以通過下列命令實(shí)現(xiàn):
$ python3 -m venv ~/.venvs/mariana-trench
$ source ~/.venvs/mariana-trench/bin/activate
(mariana-trench)$
如果你終端窗口的命令提示符前面顯示了虛擬環(huán)境的名稱,說明你的虛擬環(huán)境已經(jīng)激活成功。
工具安裝
在虛擬環(huán)境中安裝Mariana Trench非常簡單,只需要運(yùn)行下列命令即可:
(mariana-trench)$ pip install mariana-trench
工具運(yùn)行
我們將使用一個(gè)簡單的App來進(jìn)行測試,運(yùn)行下列命令即可獲取測試App:
(mariana-trench)$ git clone https://github.com/facebook/mariana-trench
(mariana-trench)$ cd mariana-trench/documentation/sample-app
接下來,我們就可以執(zhí)行靜態(tài)代碼分析了:
(mariana-trench)$ mariana-trench \
--system-jar-configuration-path=$ANDROID_SDK/platforms/android-30/android.jar \
--apk-path=sample-app-debug.apk \
--source-root-directory=app/src/main/java
# ...
INFO Analyzed 68886 models in 4.04s. Found 4 issues!
# ...
使用Mariana Trench對(duì)測試App執(zhí)行完分析后,會(huì)發(fā)現(xiàn)四個(gè)安全問題,分析的輸出結(jié)果將包含針對(duì)應(yīng)用程序中每一個(gè)方法的相關(guān)信息。
進(jìn)一步處理
分析的輸出結(jié)果其實(shí)并非人類可讀的,因此我們還需要對(duì)這些信息進(jìn)行進(jìn)一步處理,這里將使用到SAPP:
(mariana-trench)$ sapp --tool=mariana-trench analyze .
(mariana-trench)$ sapp --database-name=sapp.db server --source-directory=app/src/main/java
# ...
2021-05-12 12:27:22,867 [INFO] * Running on http://localhost:5000/ (Press CTRL+C to quit)
輸出的最后一行表明SAPP開啟了一臺(tái)本地Web服務(wù)器,并允許我們直接查看分析結(jié)果。
工具運(yùn)行結(jié)果
許可證協(xié)議
本項(xiàng)目的開發(fā)與發(fā)布遵循MIT開源許可證協(xié)議。
項(xiàng)目地址
Mariana Trench:【??GitHub傳送門??】