今天給大家分享的writeup是一篇關于安卓app的靜態分析,由于該app存在不安全存儲和硬編碼密碼泄露問題,導致可以登錄其短信管理系統,劫持其短信接口配置,以下為相關分析研究,。
著手開始
由于眾測項目范圍涉及到相關廠商的某款安卓APP,所以我就在我的安卓手機中下載了這款APP應用,并把其APK文件拿出來做靜態分析。在此推薦兩個原生快速的APK下載網址:
https://apk.support/apk-downloaderhttps://apkpure.com/
獲得了APK文件之后,我們需要對它進行反編譯找到其中的Java類文件進行分析,這里可以安裝以下兩個工具:
https://github.com/pxb1988/dex2jar
https://mac.filehorse.com/download-jd-gui-java-decompiler/
安裝了上述工具后,我們把目標APP的APK文件放到另一個單獨文件夾中,把其后綴由.apk更改為.zip,然后解壓zip文件,之后我們就可以看到一些xml文檔、路徑文件、模板資源文件等,在這些文件中我們的目標是classes.dex文件,解壓后一般會發現一個或多個classes.dex文件。下一步,我們可以通過使用dex2jar 工具,將dex文件轉換為java文件,具體命令如下:
dex2jar classes.dex
如果該命令不管用,那么可以用dex2jar的另外一個版本命令:
d2j-dex2jar classes.dex
運行上述命令之后會在文件夾內生成如classes_dex2jar.jar的java文件,有了該文件后,我們就要用另一個好用的工具來對它反編譯了,這里我個人喜歡用的是JD-GUI,https://github.com/java-decompiler/jd-gui,用它打開生成的jar文件后我們就能看到很多java資源文件,還能把這些不同資源文件進行保存閱讀。
有了保存的資源文件代碼,我們要盡量從中找出一些問題來,這里我推薦一個工具-動化移動安全滲透測試框架: ? ?Mobile Security Framework(MobSF),它是一款智能、一體化的開源移動應用(android/ios)自動滲透測試框架,支持二進制文件(APK & IPA)和源碼壓縮包,用它可以進行靜態和動態的分析。 ? ? ? ?
代碼分析
完成以上工作后,我們可以深入分析目標安卓APP的代碼了。當我坐下來按照我的檢查列表分析時,不久我就發現其中一個叫Constant.java的文件,它位于APP的SMS路徑下,包含了一些零散的信息,如 Username、Loacation、Password等硬編碼服務信息以及短信發送接口(SMS API)的URL路徑。大概情況如下:
進一步分析發現,該APP使用了reson8公司的短信即時發送平臺進行商業化推廣,https://www.reson8.ae/,我瀏覽了reson8公司網站,發現其具備用戶登錄接口,所以我就想到了上述靜態分析中泄露的Username和Password信息,直接把它拿來這里登錄用看看,果然一輸入提交我就進入了目標APP公司的短信發送管理系統了:
該管理系統就是一個SMS API網關,通過它可以實現短信定向發送設置,營銷升級和充值等管理操作,更關鍵的是可以下載用戶的手機號碼。
總結
在對APP做動態和其它分析之前,建議對其做一些靜態分析,可以按照自己的檢查列表依次進行,從中或許可以獲取到一些意想不到的零散信息。對于APP應用公司來說,千萬要避免在APP中存儲一些密碼憑據相關的信息,即使有必要也需要進行一些恰當的加密處理。