前期環境的搭建
Android SDK的安裝
adb的安裝
java jdk的安裝
備注:其中文章中xx.xx.xx是指該應用的包名
一、安裝
第一步:從http://download.csdn.net/detail/zzcliang/9886118下載Drozer
第二部:在windows機器上進行安裝,并把agent.apk安裝到要測試的android機器上面
第三部:驗證安裝是否成功
(1)打開cmd,運行adb forward tcp:31415 tcp:31415,如圖所示
(2)在Android設備上開啟Drozer Agent,如圖所示:
(3)在pc端cmd切換到drozer安裝目前,然后運行 drozer console connect,如圖所示:
這時手機上該drozer處于監聽狀態,如圖所示:
二、測試步驟
(1)獲取要測試應用的包名
dz>run app.package.list -f xxx ,其中xxx代碼你應用包名里面的某個字段,它是模糊拼配,會列出包含該字段的所有包名
(2)獲取應用的基本信息
run app.package.info -a com.xx.xx?? ,info后面跟的是具體包名
可以看到應用的版本信息,數據存儲的目錄,用戶ID,組ID,是否有共享庫,還有權限信息等
(3)確定存在可能被攻擊的界面
run app.package.attacksurface xx.xx.xx????? xx.xx.xx指具體包名
(4)獲取activity
run app.activity.info -a com.newborntown.android.solo.fitness
啟動activity
run app.activity.start --component com.newborntown.android.solo.fitness com.newborntown.android.solo.fitness.main.SplashActivity
如果組件存在拒絕服務就會產生異常,導致APP停止運行。
同樣可以通過其他組件的start模塊調用相應的組件進行測試
如果任何模塊有疑問的或者不會使用的,可以通過-h(help)來查看相應的幫助信息
備注:該命令是一條命令component 后面跟的是上一步查出的包名和activity
(5)獲取Content Provide信息
1、run app.provider.info -a com.newborntown.android.solo.fitness
content provider的具體信息,包括名字,權限,訪問路徑等。
2、獲取所有可以訪問的Url(數據泄露)
run scanner.provider.finduris -a com.newborntown.android.solo.fitness
run app.provider.query content://xx.xx.xx.DBContentProvider/Passwords/ --vertical
查詢到數據說明存在漏洞
3、同時檢測SQL注入和目錄遍歷
run scanner.provider.injection -a xx.xx.xx
run scanner.provider.traversal -a xx.xx.xx
(6)intent組件觸發(拒絕服務、權限提升)
利用intent對組件的觸發一般有兩類漏洞,一類是拒絕服務,一類的權限提升。拒絕服務危害性比較低,更多的只是影響應用服務質量;而權限提升將使得沒有該權限的應用可以通過intent觸發擁有該權限的應用,從而幫助其完成越權行為。
嘗試權限提升
權限提升其實和拒絕服務很類似,只不過目的變成構造更為完整、更能滿足程序邏輯的intent。由于activity一般多于用戶交互有關,所以基 于intent的權限提升更多針對broadcast receiver和service。與drozer相關的權限提升工具,可以參考IntentFuzzer,其結合了drozer以及hook技術,采用 feedback策略進行fuzzing。以下僅僅列舉drozer發送intent的命令:
(1)獲取service詳情
run app.service.info -a xx.xx.xx
不使用drozer啟動service
am startservice –n 包名/service名
(2)權限提升
run app.service.start --action xx.xx.xx.SEND_SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS
軟件測試交流群