安全框架Drozer安裝和簡單使用
說明:
drozer(即以前的Mercury)是一個開源的Android安全測試框架
drozer不是什么新工具,但確實很實用,網上的資料教程都很多了,最近自己項目涉及一些移動端安全,所以就把自己的安裝過程記錄下來
一、安裝(win10)
-
工具准備
-
Drozer安裝
- drozer不支持python3.x,需提前安裝python2.7(配置好環境變量),安裝時選中安裝在python2.7的目錄里
- 成功安裝后Scripts文件夾內容
-
環境配置
-
在測試手機或虛擬機上安裝代理應用drozer-agent-2.3.4.apk並啟動服務,如下圖
-
手機連接電腦,提前打開usb調試,命令行進入python2.7的安裝目錄下/Scripts/文件夾,執行啟動命令:
adb devices #查看當前連接的手機 drozer.bat console connect #啟動drozer並連接手機
首次使用drozer會缺失運行所需的依賴,因此需一步步添加依賴庫,如果能成功直接連接手機可忽略以下排錯內容
-
更新pip
首次啟動drozer,會提示“No module named google.protobuf”,提示使用pip進行下載該依賴,但再次報錯,pip版本需更新(當前最新版為20.2.2)
以管理員身份在命令行執行(右鍵桌面開始進入)
python -m pip install –upgrade pip –i https://pupi.douban.com/simple #使用國內的源更新pip
-
添加google.protobuf依賴
執行以下命令:
pip install protobuf #添加protobuf庫
繼續添加依賴庫,執行:
pip install pyopenssl #添加py openssl庫 pip install pyyaml #添加pyyaml庫
-
添加twisted依賴庫
再次啟動drozer,仍報錯提示需要安裝twisted庫
執行命令:
pip install Twisted #添加Twisted庫
部分機器可能會報錯,提示需要C++運行環境,則需下載安裝Micorsoft Visual C++ Compiler for Python 2.7 環境包,點擊下載
-
添加service_identity庫
再次啟動drozer,部分機器可能仍會報錯,缺少service_identity部分庫,如下:
部分機器可能已有service_identity庫,僅缺失其中的依賴模塊,可參考以下鏈接:https://service-identity.readthedocs.io/en/stable/installation.html
將缺失的依賴模塊逐個安裝即可
-
-
-
連接手機
Drozer連接手機執行以下命令:
adb forward tcp:31415 tcp:31415 #31415為dozer占用的端口號,可在app上設置 drozer.bat console connect #啟動drozer並連接手機
至此,我們基本將所需要的庫全部添加,並成功連接手機
二、Drozer簡單使用
-
查看包信息:
命令:
run app.package.info -a <package name> run app.package.list -f <app name>
-
掃描可攻擊面:
命令:
run app.package.attacksurface <package name>
分析四大組價是否能被其他的的應用程序調用,以最近測試的一個通信APP和行業標桿微信作對比,暴露的activity組件比微信多36個,安全風險更高,我的理解一般盡量減少非必要對外暴露的組件以提高app安全
-
四大組件安全
- activity:
run app.activity.info -a <package name> -u #查看暴露的activity run app.activity.start --component <package name> <component name> #啟動暴露的activity
- provider:
run a pp.provider.info -a <package name> #查看對外暴露的provider run scanner.provider.finduris -a <package name> #獲取所有可訪問的uri run app.provider.query <uri> #查詢暴露的uri run app.provider.update <uri> --selection <conditions> <selection arg> <column> <data> run scanner.provider.sqltables -a <package name> #列出該app的表名 run scanner.provider.injection -a <package name> #provider的可sql注入點掃描 run scanner.provider.traversal -a <package name> #provider目錄遍歷
- broadcast:
run app.broadcast.info -a <package name> #查詢對外暴露的broadcast run app.broadcast.send --component <package name> <component name> --extra <type> <key> <value> #嘗試發送惡意廣播 run app.broadcast.sniff --action <action> #嗅探廣播中intent的數據
- service:
run app.service.info -a <package name> #查詢對外暴露的service run app.service.start --action <action> --component <package name> <component name> #用命令調用調用服務組件 run app.service.send <package name> <component name> --msg <what> <arg1> <arg2> --extra <type> <key> <value> --bundle-as-obj #使用 Message攻擊暴露的service