使用Drozer進行安全測試(Drozer github上開源專案)
在前面的文章中,我們已經介紹了Android的多種安全漏洞,在繼續學習其他漏洞之前,我們先來學習一個非常NB的工具:Drozer.
Drozer是MWR Labs開發的一款Android安全測試框架。是目前最好的Android安全測試工具之一。
其官方文件說道:“Drozer允許你一一個普通android應用的身份與其他應用和作業系統互動。”
在Web世界已經有了許多安全測試工具了,我們只需要給出一個目標,這些工具就會自動為我們安全測試報告。但Drozer與這樣的自動化掃描器不同,Drozer是一種互動式的安全測試工具。使用Drozer進行安全測試,使用者在自己的工作站上輸入命令,Drozer會將命令傳送到
實驗準備
實驗器材
1.工作站(本文使用Ubuntu),並安裝軟體:
a)JRE 或者JDK
b)Android SDK
2.執行Android2.1以後版本的Android裝置或者模擬器
下載Drozer和Agent.apk:
這個連結也可以下載到MWR Labs 提供的一份使用者手冊,但本文只對Drozer的安裝和使用做簡單介紹,以後涉及其他漏洞的時候再詳細介紹Drozer的使用者手冊。
本文假設讀者使用的是與我類似的環境,其他使用者請下載對應版本的Drozer安裝。
在安裝Drozer之前,記得需要安裝依賴。
Windows使用者直接像安全其他軟體一樣安裝就好了。
檢查安全是否成功,在終端中輸入命令:”drozer”:
現在在裝置或者模擬器上安裝先前下載的agetn.apk。
可以使用adb安裝,命令如下:
1 |
#adb install agent.apk
|
然後我們需要連結工作站上的Drozer控制檯和裝置上的代理程式。
首先執行裝置上的Drozer代理並啟動守護服務,然後執行下面的命令做埠轉發:
1 |
#adb forward tcp:31415 tcp:31415
|
使用下面的命令建立連結:
#drozer console connect
如下圖:
使用Drozer 進行安全測試
下面來見識下Drozer的魔力,使用
本系列的第一篇文章中介紹過如何攻擊暴露的Activity,現在我們把當時用的的測試應用安裝到裝置上,當然,像本文一樣使用模擬器也是可以的。
在正式開始之前,先來熟悉下Drozer的命令。
列出所有模組
1 |
#dz>list
|
該命令列出了當前可用的所有模組:
獲取包資訊
使用下面的命令列出安裝的所有應用包名:
1 |
#dz> run app.package.list
|
上圖中中有兩個高亮的應用,都是我們之前用過的。
使用”-f”選項搜尋特定的包名:
1 |
#dz> run app.package.list –f (string to be searched)
|
輸出如下:
com.isi.testapp
使用以下命令檢視制定包的資訊:
1 |
#dz> run app.package.info –a (package name)
|
比如:
1 |
#dz> run app.package.info –a com.isi.testapp
|
輸出了應用資料目錄,apk的路徑,是否有Shared User ID等。
識別攻擊面
這一節是Drozer中比較有趣的部分,我們只用一條命令就可用識別出應用的攻擊面,Drozer會告訴我們應用是否有暴露的元件,是否可除錯等。
我們使用Drozer來檢查testapp.apk的攻擊面,下面是一條典型的命令:
1 |
dz>run app.package.attacksurface (package name)
|
我們的包名是testapp.apk
1 |
dz>run app.package.attacksurface com.isi.testapp
|
如上圖,testapp中有兩個暴露的activity。現在我們需要找出暴露activity的名字並檢查是否有敏感資訊,如果有的話就可以用Drozer的其他模組進行攻擊。如果應用可除錯,我們就可以用偵錯程式附加到程序單步執行指令或執行特定的程式碼,關於除錯我們在之前的兩篇文章有過討論。
使用Drozer攻擊App漏洞
基於上一節的結果發起攻擊。
攻擊暴露的Activity
本節深入testapp.apk的漏洞比進行攻擊。
上一節中我們已經發現testapp.apk中存在暴露的activity,使用以下命令檢視app的activity。
1 |
Dz> run app.activity.info –a (package name)
|
比如我們的包名是com.isi.testapp
1 |
dz>run app.activity.info –a com.isi.testapp
|
上圖中列出了應用中暴露的activity。
com.isi.testapp.MainActivity很顯然是主介面,需要能啟動,所有是暴露的。
Com.isi.testapp.Welcome看名字像是登入後的介面。使用如下命令啟動。
1 |
dz> run app.activity.start --component (package name) (component name)
|
比如我們我們的testapp
1 |
dz> run app.activity.start –component com.isi.testapp com.isi.testapp.Welcome
|
該命令會生成一個合適的intent來啟動activity,其實更我們之前見到過的使用activity 管理工具(am)來啟動activity一樣。
如上圖,我們成功繞過了登入認證。
這是什麼原因造成的呢?
這其實在我們第一篇文章中提到過,是因為AndroidManifest.xml中,activity的”android:exported”屬性被設定為”true”
總結
本文對Drozer的Android應用滲透測試做了簡要介紹。以後的文章中會介紹其他的漏洞及其利用,還會介紹怎樣對Drozer進行擴充套件。
目錄