開發者時常會不正確的將敏感資訊 放在APP中或是不安全的傳遞 有些東西是值得去找像是 API key, DB 帳密, Oauth Token, Debugging 資訊, 敏感URL, Oauth Token 等等 這些東西在存放時應該適當的加密
或是把東西放在 遠程安全的服務器上 用安全方式連接 等等
在做靜態分析時會用到 JADX 與 APKtools 反編譯工具 JADX提供很多強大功能 例如 可以反編 .dex.aab,aar,zip 檔案 並把Dalvik Byte Code 轉成 Java Classes 並decode 一些資源檔案 並解遇到混淆的程式碼 可以透過分析 來重新命名方法名稱與變數
有時候開發者會把機敏資訊在寫在Activity中 我們可以先用APKTools拆
apktool d ./app.apk
可以透過一些linux cmd 來快速查找
grep -Rnw './app' -e 'api_key' -e 'password'
grep -Rnw './app' -e 'api_key' -e 'password' -e 'secret' -e 'token' -e 'private_key' -e 'oauth_token'
R: 遞迴
w: 完全匹配
可以cat 一下 查看smali Code
除了在Activity 去找之外 我們也可以透過 String.xml (Resources/resources.arsc/res/values/strings.xml) 來去尋找 硬編碼資訊
如果有找到一些密碼與API 可以去嘗試找一下 有沒有登入的端點
cat ./app/res/values/strings.xml | grep -e user -e pass -e login
除了嘗試透過HardCode 資訊登入外 也可以看一下Network Security 的設定來去找更多的URL 與 後台IP
/res/xml/network_security_config.xml 這個檔案也是值得去分析的
其中 表示APP 可以去使用手機裡面的已匯入的證書
APP 有時候會用Native Code 去寫功能 裡面也可能有硬編碼 存在/lib/x86_64/ 下的Share Library中 儘管不無法被JADX 分析 攻擊者可以透過ghidra來 反編譯C/C++ 程式碼 或是直接在.so 文件中收尋字串
有時候開發者 會把web檔放在/res/assets/ 下 我們可以去翻一下 javaScript 是否有Hardcode 的登入憑證
例如