drozer安裝使用教程(Windows)


drozer和adb一樣,又不是新出的工具,本不該出了這么久還要由我這樣半懂不懂的再寫篇東西了。但是還是一樣每次使用都得百度和篩選半天,所以記下來算給自己看。以后看到我還寫些老掉牙的東西都是這個原因,不再重復。

drozer的基本功能感覺就是通過分析AndroidManifest.xml,看四大組件中有沒有可export的,如果有那么就去詳細查看這些可export的組件是不是真有問題。

本教程第一大節講安裝,第二大節講使用drozer連接手機,第三大節講通過drozer檢測app安全性。本教程主要參官方github主頁說明官方文檔

 

一、安裝

1.1 電腦下載安裝依賴

python2.7----drozer使用python2.7編寫不支持python3.x,所以只能裝python2.7,。使用minicoda版python時一直報“ImportError: No module named drozer.cli.console”,改裝官方版python2.7未出現問題未深究原因。

python其他庫----pip install protobuf pyOpenSSL Twisted service_identity

jdk1.7----Java是安卓的主要開發語言,應該是與手機交互時使用。jdk安裝可參考鏈接

adb----Android Debug Bridge,一般在Android SDK安裝目錄下的platform-tools文件夾下就有,也可以另外下載安裝。安裝使用可參考鏈接

 

1.2 電腦下載安裝drozer

下載鏈接:https://github.com/mwrlabs/drozer/releases/

選擇系統相應的包,我這里選windows的msi安裝包

雙擊下載的安裝程序

drozer是python2.7寫的,如果沒在環境變量中配置python2.7的路徑,那么就要手動指定

另外drozer不支持python3.x,所以如下圖即便安裝程序識別出了python3.x也要自己指定python2.7的位置

另外可能有小伙伴到這里就會感覺到drozer感覺就是python的第三方庫那直接用pip安裝不更省事?

第三方庫是對的,pip中也可以找到drozer但實際發現使用pip安裝時沒有drozer.bat運行不起來,至於為什么不直接加上drozer.bat還是這兩種途徑有更深的區別沒深究。

 

1.3 下載安裝手機agent

使用usb線將手機連接到電腦(或開啟一個模擬設備),使用adb將agent安裝到手機。

agent下載地址:https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk

到手機打開啟agent,如下圖確保右下角按鈕顯示為“開啟”(如果顯示為關閉,在其上點擊將其切換為開啟即可)

 

二、連接

2.1 環境變量配置

首先,python需要加入到環境變量,不然在執行drozer.bat console connect時會報“'python.exe' 不是內部或外部命令,也不是可運行的程序或批處理文件。”

其次,drozer會和其他第三方python庫一樣安裝到python的各文件夾下,其中主要執行的drozer.bat在$PYTHON_HOME\Scripts文件夾下,所以scripts為了方便也加入到環境變量。

可以直接編緝環境變量,但修改環境變量比較麻煩,而且我已安裝python3.7不想影響python版本所以這里使用set path來臨時修改環境變量。

我修改命令如下,修改成自己的目錄。要注意最后的%path%,不然原先的path的值就被覆蓋了。至於大小寫,cmd不區分大小寫。

set path=D:\Language\Python27;D:\Language\Python27\Scripts;%path%

 

2.2 切換到drozer安裝目錄

如果cmd的當前路徑和drozer.bat如果不在同一驅動器(比如cmd當前在c盤,drozer.bat在d盤),那么雖然使用drozer.bat console connect也可以進入drozer控制台,但是執行run時會報錯。

比入我這里drozer安裝在D盤,在我當前路徑是“C:\Users\ls”,直接進入drozer控制台。報錯“unknown module: 'app.package.list'”,如下圖所示:

處理這個問題,只要將cmd路徑切換到drozer.bat同驅動器下即可(比如我這里要做的就是切換到D盤)。

結合網上說法,為了確保萬無一失,這里直接接切換到drozer.bat所在的“D:\Language\Python27\Scripts”目錄

 

2.3 使用drozer連接手機

有些文檔說如果是真機,dorzer.bat console connect后要加上ip,ip那是網絡連接通過usb連接后並不需要ip(所以,我也不懂adb forward tcp:31415 tcp:31415這句有什么用

adb forward tcp:31415 tcp:31415
drozer.bat console connect

 如果報錯“[Errno 10054]”那應該是手機agent處於關閉狀態,請按1.3中的說明去開啟。

 

 三、使用drozer對app進行測試

官方直接給出的drozer支持命令及其命令說明列表如下

Command Description
run Executes a drozer module
list Show a list of all drozer modules that can be executed in the current session. This hides modules that you do not have suitable permissions to run.
shell Start an interactive Linux shell on the device, in the context of the Agent process.
cd Mounts a particular namespace as the root of session, to avoid having to repeatedly type the full name of a module.
clean Remove temporary files stored by drozer on the Android device.
contributors Displays a list of people who have contributed to the drozer framework and modules in use on your system.
echo Print text to the console.
exit Terminate the drozer session.
help Display help about a particular command or module.
load Load a file containing drozer commands, and execute them in sequence.
module Find and install additional drozer modules from the Internet.
permissions Display a list of the permissions granted to the drozer Agent.
set Store a value in a variable that will be passed as an environment variable to any Linux shells spawned by drozer.
unset Remove a named variable that drozer passes to any Linux shells that it spawns.

 

 

 

 

 

 

 

 

 

 

 

當然也可以在drozer console中直接使用help查看;然后進一步使用help command可查看各命令更具體的使用方法。

按我理解,簡單來說drozer的基本用法就是:

首先,使用list查看支持哪些模塊;

然后,使用help module_name,或者run module_name -h查看各module的用法;

最后,通過run module_name module_options來對app進行檢測。

dorzer的使用基本流程就是以下3.1-3.6。

 

3.1 通過app.package.list模塊獲取要檢測的app的包名

要檢測的app可以通過手機市場安裝,也可以使用adb install package_path安裝這里就不贅述了。

 run app.package.list -f filter_str

 

3.2 使用app.package.info模塊查看apk基本信息

run app.package.info -a package_name

 

3.3 使用app.package.attacksurface模塊識別攻擊面

所謂攻擊面,應該就是指可export的安卓四大組件(activaty、broadcast receiver、content provider、service)

如果查看到四大組件中有可export的,就去具體看可export的組件有沒有問題(后續3.4、3.5、3.6就是干這事,為什么沒有receiver沒深究)

run app.package.attacksurface package_name

 

3.4 使用app.activity.info模塊查看activity組件信息

run app.activity.info -a package_name

 

3.5 使用app.provider.info模塊查看content provider組件信息

 run app.provider.info -a package_name

 

3.6 使用app.service.info模塊查看service組件信息

run app.service.info -a package_name

 

參考:

https://github.com/mwrlabs/drozer

https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf

https://blog.csdn.net/qq_23212697/article/details/69177654

http://www.360doc.com/content/16/0405/14/25472073_548029178.shtml

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM