一、反編譯保護
測試工具
Jadx
GitHub - skylot/jadx: Dex to Java decompiler
PKID
[下載]PKID-APP查殼工具-Android安全-看雪-安全社區|安全招聘|kanxue.com
測試流程
(1)通過Jadx對客戶端APK文件進行反編譯,觀察是否進行代碼混淆
(2)使用PKID查看APK是否已經進行加固
二、安裝包簽名
測試流程
(1)使用Jadx反編譯工具查看客戶端簽名狀態,觀察紅框部分是否為專用簽名
三、應用完整性校驗
測試工具
apktool
Apktool | Apktool
測試流程
(1)將需要測試的APK文件放到apktool目錄下
(2)通過apktool進行反編譯,命令執行完成后會在當前目錄下生成反編譯后的文件夾
java -jar apktool_2.11.1.jar d APK包名
java -jar apktool_2.11.1.jar d xxxxxxxxx.apk
(3)進入反編譯后的文件夾,在AndroidManifest.xml文件中檢索HTTP,修改任意一個URL的值為www.baidu.com
(4)回到apktool目錄下執行命令重新打包修改過的APK文件
java -jar apktool_2.11.1.jar b apk文件夾 -o 將要生成的apk文件名稱
java -jar apktool_2.11.1.jar b xxxxxxxxxxx -o xxxxxxxxxxx1.apk
(5)若出現如下報錯,刪除文件夾下的public.xml文件即可
(6)對重新打包編譯的APK文件進行簽名
java -jar signapk.jar testkey.x509.pem testkey.pk8 原apk文件名 新apk文件名
java -jar signapk.jar testkey.x509.pem testkey.pk8 xxxxxxxxxx1.apk xxxxxxxxxx2.apk
(7)手機安裝并運行重新打包的修改過的APP,如果出現閃退,卡第一屏等無法使用現象則說明應用存在自檢校驗,處于安全狀態。如果能正常運行修改后的APP,則APP應用不滿足完整性校驗,存在風險。
四、組件導出安全
測試工具
ADB
Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Mac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip
????????adb安裝目錄下啟動CMD窗口,執行adb version查看是否安裝成功
drozer安裝
GitHub - ReversecLabs/drozer at 3.1.0
(1)下載Github上的項目文件
(2)在drozer-3.1.0-py3-none-any.whl安裝目錄下啟動CMD窗口,執行下面命令會生成三個exe文件,生成的文件并不會出現在當前目錄下,需要到C盤python3目錄下的scripts文件夾中找到,將其移回drozer文件夾下。
pip install drozer-3.1.0-py3-none-any.whl
drozer-agent安裝
Release drozer-agent 3.1.0 · WithSecureLabs/drozer-agent · GitHub
????????手機安裝下面APK應用
測試流程
(1)手機USB接入電腦,進入開發者模式,打開USB調試模式
設置——>關于手機/關于本機——>版本信息——>點擊版本號6次即可進入開發者模式設置——>開發者選項——>下滑,開啟USB調試
(2)adb檢查設備連接情況
(3)adb開啟監聽端口
adb forward tcp:31415 tcp:31415
(4)手機打開drozer-agent監聽
(5)Drozer文件夾下開啟drozer控制臺
drozer console connect
(6)手機運行待測APP后在adb執行以下命令,找到待測APP的包名
adb shell dumpsys activity top|findstr ACTIVITY
(7)Drozer執行命令進行組件導出安全檢查,結合AI與網上教程進行可導出組件的調用測試
#查看可導出組件
run app.package.attacksurface 待測APP包名
run app.package.attacksurface 待測APP包名
run app.provider.info -a 待測APP包名
run app.activity.info -a 待測APP包名
run app.service.info -a 待測APP包名
run app.broadcast.info -a 待測APP包名