1. 程式人生 > >【安全測試】Drozer安裝及使用

【安全測試】Drozer安裝及使用

一、Dorzer安裝

     需要用到如下兩個工具:如以前安裝過mercury,這兩個工具應該已經有了。

         Java Runtime Environment (JRE) or Java Development Kit (JDK)

          Android SDK

     下載安裝後需要把adb和java工具路徑寫入PATH環境變數中

1、下載:開啟此下載地址,windows環境選擇drozer (Windows Installer)並下載

https://www.mwrinfosecurity.com/products/drozer/community-edition/

2、安裝:解壓zip檔案並點選setup安裝,一路預設安裝就行;它會自動安裝到C:\drozer資料夾下。

3、檢測是否安裝成功:

開啟cmd視窗,鍵入C:\drozer\drozer.bat , 如出現如下提示說明安裝成功。

4、安裝agent客戶端到手機:

確保手機debug模式開啟,通過USB連線到PC上,通過如下命令安裝agent.apk客戶端。

adb install agent.apk

安裝完成後啟動drozerAgent

點選右下角“開啟”按鈕,開啟Agent

5、建立session連線:

保持手機與PC通過USB連線正常,然後通過cmd視窗鍵入如下命令

       adb forward tcp:31415 tcp:31415

      drozer console connect 或 C:\drozer\drozer.bat console connect

出現android頭像及:

dz>

命令提示符表示連線成功

6、具體安裝步驟和使用方法詳見檔案:mwri_drozer-users-guide_2013-09-11.pdf

https://www.mwrinfosecurity.com/system/assets/559/original/mwri_drozer-users-guide_2013-09-11.pdf

修復連線時java路徑找不到問題:

1、建立如下檔案並命名為:1.txt (如果為winXP,則可以直接命名為.drozer_config)

2、寫入內容如下幾行內容:此處為java.exe檔案的安裝位置,具體情況具體處理

[executables]

java =C:\Program Files\Java\jdk1.7.0_40\bin\java.exe

javac =C:\Program Files\Java\jdk1.7.0_04\bin\javac.exe

dx =F:\Android\android-sdk_r18-windows\android-sdk-windows\platform-tools\dx.bat

3、把此檔案放入個人目錄下資料夾:

英文:C:\Users\<youruser name>\

中文:C:\使用者\<你的使用者名稱名稱>\

4、通過cmd命令重新命名此檔案為:.drozer_config

rename  C:\Users\d00218136\1.txt .drozer_config

二、android元件安全分析

service元件風險分析

Service是後臺執行服務,它不在UI介面顯示,其安全相關特徵:      Exported設定為Ture就表示可以外部呼叫,暴露狀態;False為不可外部呼叫。           如果至少含有一個intent-filter,則其預設exported狀態為Ture。           如果一個intent-filter也沒有,則其預設exported狀態為False。     Permission設定,有此設定則只有申請此permission的應用才可以訪問。 風險Service的情況:      與某項功能或服務有聯絡,惡意應用通過偽造intent資訊進行Server欺騙攻擊來控制某項功能或服務。      應用內部通過隱式訊息(implicitintent)來呼叫其Service,使其含有潛在的Service劫持風險。

Content Provider元件風險分析

Contentprovider元件相當於應用的資料庫介面,應用通過此元件進行查詢更新其資料庫中的資料;其安全相關特徵: Exported設定為True就表示可以外部呼叫,暴露狀態;False為不可外部呼叫。          不同於其他三個元件:它不受到intent-filter的影響。          Exported預設為True: 當 minSdkVersion 或targetSdkVersion設定為"16"或更低時。          Exported預設為False: 當 minSdkVersion 或targetSdkVersion設定為"17"或更高時。 Permission設定,有此設定則只有申請此permission的應用才可以訪問。 同時還可單獨設定讀寫許可權:Read/Writepermission;如果這兩個許可權沒有設定(也即其讀寫許可權為null),則表示訪問此content provider不需要讀寫許可權

三、Drozer使用

獲取apk資訊

  •1)查詢終端裝置所有APK資訊

Run app.packege.list –f過濾資訊

2)具體檢視某個APK資訊

Run app.package.info –a apk

3)查詢APK存在的攻擊面(activitycontentproviderservice)

Run app.package.attacksurface  apk

繞過Activity鑑權

1)收集Activity的資訊進行收集,查詢暴露的Activity

Run app.activity.info –a apk包名

(2)構造intent資訊繞過鑑權直接執行Activity

Run app.activity.start –-componentcom.mwr.example.sieve包名

利用ContentProvider攻擊

1)收集ContentProvider的資訊進行收集,查詢暴露的ContentProvider

Run app.provider.info –a apk包名

2)發現暴露的ContentProvider後,可以對資料庫進行探測。探測出可以查詢的URI

Run scanner.provider.finduris –aapk包名

3)檢視資料庫中的內容

Run app.provider.queryURI –vertical

4)對資料庫表進行插入操作

Run app.provider.insert URI對應資料表中的欄位

5)對資料庫表進行刪除操作

Run app.provider.delete URI–-selection “條件

SQL注入 1)檢視URI對應的資料庫表

Run app.provider.query URI–-projection “ ‘ ”

Run app.provider.query URI–-selection “ ‘ ”

2)可以通過返回的錯誤資訊展示出改Content準備執行的語句,獲取資料庫中的資訊

Run app.provider.query URI–projection “* From SQLITE_MASTER WHERE type=‘table’;--”

Run app.provider.query URI–-selection “_id = ?”

預防

1)進行許可權控制,對此元件進行exported=“false”或者設定呼叫需要申請的許可權

2SQLiteStatementsqLiteStatement =db.compileStatement("insertinto chat(fromuid,touid,msg) values(?, ?, ?)");

sqLiteStatement.bindLong(1, 12);

sqLiteStatement.bindLong(2, 13);

sqLiteStatement.bindString(3,text);

long newRowId =sqLiteStatement.executeInsert();


四、使用示例

http://www.freebuf.com/tools/26503.html

http://www.freebuf.com/articles/terminal/33127.html

Drozer – Android APP安全評估工具(附測試案例)