【轉】手機安全測試

1、經過在線工具進行測試html

1.騰訊金剛審計系統service.security.tencent
優勢:包含了修復建議
2.阿里聚安全檢測網址:  jag.alibaba
阿里聚安全下有本身的安全博客,包含一些:
1.安全漏洞、2.病毒分析、3.技術研究、4.安全報告相關文檔。
3.360捉蟲獵手檢測結果appscan.360.cn/一樣有本身的安全博客
4.愛加密網址:safe.ijiami.cn/analyze
優勢:在導出的報告中能夠看到對當前apk的評分
5.百度MTC網址mtc.baidu.com/總結:經比較感受 騰訊金剛審計系統和 360捉蟲獵手檢測結果更全面詳細,並且包含修復建意在線工具的缺點是會把apk暴露出來。
2、使用Drozer測試
1.Drozer簡介drozer是一款針對 Android系統的 安全測試框架。drozer能夠幫助Android app和設備變得更安全,其提供了不少Android平臺下的滲透測試exploit供你使用和分享。對於遠程的exploit,它能夠生成shellcode幫助你進行遠程設備管理。
1.更快的Android安全評估drozer能夠大大縮減Android安全評估的耗時,經過攻擊測試暴露Android APP的漏洞。
2.基於真機的測試drozer運行在Android模擬器和真實設備上,它不須要USB調試或其餘開發便可使用。
3.自動化和擴展drozer有不少擴展模塊,你能夠找到他們進行測試以發現Android安全問題。
 
2.Drozer的安裝和使用
1.安裝Drozer下載地址:mwr.to/drozer 
1.在客戶端安裝Drozer2.在 手機端或模擬器安裝agent.apk
 
3.在手機端或模擬器運行agent.apk點擊開啓-->Embedded Server-->Enable
4.創建端口轉發,drozer使用31415端口,即執行命令:adb forward tcp:31415 tcp:31415
5.drozer console connect
6.安裝包中還包含一個測試應用程序sieve.apk具體可參考www.mwrinfosecurity.com/system/assets/559/original/mwri_drozer-users-guide_2013-09-11.pdf 
2.Drozer測試my.akp
1)查看全部的安裝的App的包名dz> run app.package.list
2)查找my.apkdz> run app.package.list -f samplecom.xxx.xx (my)
3)獲取my.apk的一些基本信息dz>run app.package.info -a com.xx.xxx Package: com.xx.xxx Application Label: my Process Name: my Version: 1.0 Data Directory: /data/data/com.xxxx.xxxx APK Path: /data/app/com.xxx.xx-1.apk UID: 10217 GID:[3003, 1028, 1015] Shared Libraries: null Shared User ID: null Uses Permissions: - android.permission.READ_LOGS - android.permission.INTERNET - android.permission.ACCESS_NETWORK_STATE - android.permission.READ_PHONE_STATE - android.permission.ACCESS_WIFI_STATE - android.permission.WRITE_EXTERNAL_STORAGE - android.permission.WAKE_LOCK - android.permission.VIBRATE - android.permission.WRITE_SETTINGS - org.agoo.android.permission.MESSAGE - android.permission.CHANGE_NETWORK_STATE - android.permission.CHANGE_WIFI_STATE - android.permission.GET_TASKS - android.permission.SEND_SMS - android.permission.READ_EXTERNAL_STORAGE - android.permission.RECEIVE_SMS - android.permission.SYSTEM_ALERT_WINDOW - android.permission.ACCESS_COARSE_LOCATION - android.permission.ACCESS_FINE_LOCATION - android.permission.RESTART_PACKAGES - android.permission.MANAGE_ACCOUNTS - android.permission.GET_ACCOUNTS - android.permission.READ_CONTACTS Defines Permissions: - org.agoo.android.permission.MESSAGE dz>
分析:能夠看到myapk的版本信息,數據存儲的目錄,用戶ID,組ID,是否有共享庫,還有權限信息等。
4)APP攻擊面分析分析Activity/Broadcast Receiver/Content Provider/Service是否能被其餘的的應用程序調用dz>run app.package.attacksurface com.xxx.xxxx Attack Surface: 
 5 activities exported 0 broadcast receivers exported 0 content providers exported 0 services exported is debuggable dz>分析:結果顯示了潛在能夠利用的組件個數: 「exported」表示組件能夠被其餘App使用。 services is debuggable表示咱們能夠用adb綁定一個調試器到進程。調試方法見:bobao.360.cn/learning/detail/140.html5)Activity組件暴露dz>run app.activity.info -a com.xxx.xxxx Package: com.xxxx.xxxx com.xxxxx.xxx.xSinaWeiboActivity Permission: null com.tencent.tauth.AuthActivity Permission: null com.xxx.xxxx.xxxx.WXEntryActivity Permission: null com.xxx.xxx.ContainerActivity Permission: null com.xxxxx.xxxx.MainActivity Permission: null dz>分析:其中上圖的MainActivity是程序啓動時主界面,必須是exported,其餘幾個activity是理論上說是不能exported的。咱們能夠經過命令run app.activity.start --component 包名 包名.類名啓動Activitydz#> run app.activity.start --component com.xxx.sample 包名.類名dz#> run app.activity.start --component com.xxxx.sample com.xxx.xxxxx.WXEntryActivity解決方案:保護應用程序組件
① 設置android:exported屬性爲false在AndroidManifest.xml文件中,咱們應該設置設置android:exported屬性爲false來保護應用。
② 經過權限控制限制訪問android:exported屬性不是惟一的限制措施。咱們還能夠經過基於權限的方法來定製一個Activity的權限。這個能夠限制應用之間的訪問權限。無需暴露的組件請設置exported=」false」;若須要外部調用,建議添加自定義signature或signatureOrSystem級別的私有權限保護;須要暴露的組件請嚴格檢查輸入參數,避免應用出現拒絕服務。
6)ContentProvider組件暴露dz>run app.provider.info -a com.xxxx.sample Package: com.xxxxx.sample No matching providers. dz>分析:咱們可能沒有用到Content Provider或者說是安全的。若是包含則會顯示exported的content provider的具體信息,包括名字,權限,訪問路徑等,就能夠作一此類如Sql注入的操做。
① 檢查是否有sql注入dz>run scanner.provider.injection -a com.xxxxx.sample Scanning com.xxxx.sample... D:\Java\jdk1.8.0_11\bin\javac.exe -cp C:\drozer\lib\drozer\lib\android.jar ZipUtil.java C:\drozer\lib\drozer\lib\dx.bat --dex --output 4a78a7a38b67b985beccf6efac92375b.apk ZipUtil.class trouble processing: bad class file magic(cafebabe)or version(0034.0000)...while parsing ZipUtil.class ...while processing ZipUtil.class 1 warning no classfiles specified drozer could not find or compile a required extension library. dz>
② 檢查是否存在遍歷文件的漏洞dz>run scanner.provider.traversal -a com.xxxxx.sample Scanning com.xxxx.sample... D:\Java\jdk1.8.0_11\bin\javac.exe -cp C:\drozer\lib\drozer\lib\android.jar ZipUtil.java C:\drozer\lib\drozer\lib\dx.bat --dex --output 4a78a7a38b67b985beccf6efac92375b.apk ZipUtil.class trouble processing: bad class file magic(cafebabe)or version(0034.0000)...while parsing ZipUtil.class ...while processing ZipUtil.class 1 warning no classfiles specified drozer could not find or compile a required extension library. dz>7)Broadcast receivers組件暴露經過反編譯能夠看到有三個廣播接收器被註冊,且未設置exported=「false」風險描述導出的組件能夠被第三方app任意調用,致使敏感信息泄露或者惡意攻擊者精心構造攻擊載荷達到攻擊的目的。修復建議若是組件不須要與其餘app共享數據或交互,請將AndroidManifest.xml 配置文件中設置該組件爲exported = 「False」。若是組件須要與其餘app共享數據或交互, 請對組件進行權限控制和參數校驗。
8)Service組件暴露
① 獲取是exported狀態的services的dz>run app.service.info -a com.xxxxx.sample Package: com.xxxxx.sample No exported services. dz>分析:沒有exported的services
② 關於Services模塊dz>cdappdz#app>cdservicedz#app.service>ls app.service.info Get information about exported services app.service.send Send a Message to a service, and display the reply app.service.start Start Service app.service.stop Stop Service dz#app.service>
3.Logcat安全android.permission.READ_LOGS:app讀取日誌權限,android 4.1以前版本經過申請READ_LOGS權限就能夠讀取其餘應用的log了。可是 谷歌發現這樣存在安全風險,因而android 4.1以及以後版本,即便申請了READ_LOGS權限也沒法讀取其餘應用的日誌信息了。4.1版本中 Logcat的簽名變爲「signature|system|development」了,這意味着只有系統簽名的app或者root權限的app才能使用該權限。普通用戶能夠經過ADB查看全部日誌。經過 adb shell logcat能夠查看全部logcat信息有些人認爲任何log都不該該在發行版本打印。可是爲**p的錯誤採集,異常反饋,必要的日誌仍是要被輸出的,只要遵循安全編碼規範就能夠將風險控制在最小範圍。建議:Log.e()/w()/i():建議打印操做日誌Log.d()/v():建議打印開發日誌
一、敏感信息不該用Log.e()/w()/i(), System.out/err 打印。二、若是須要打印一些敏感信息建議使用 Log.d()/v()。(前提:release版本將被自動去除)三、Log.d()/v()的返回值不該被使用。(僅作開發調試觀測)參考:http://www.droidsec.cn/android-logcat-security/4.反編譯查看myapk.apk是否安全1.使用APKTOOL反編譯AndroidManifest.xml文件2.檢查AndroidManifest.xml文件是否有以下內容:android:debuggable="true"若是你在其中發現了這樣的內容,該應用是能夠被調試的。很顯示咱們的xxxxx_sample是可被調試的。調試方法參見:http://bobao.360.cn/learning/detail/140.html3.反編譯查看配置文件AndroidManifest.xml中activity組件(關注配置了intent-filter的及未設置export=「false」的)經過分析AndroidManifest.xml,咱們得到了如下信息:包名:com.xxx.sample入口」com.xxxx.sample.MainActivity其它組件的export同Activity
3、參考資料1.《Android 安全測試初探》合集:testerhome.com/topics/16982.Android Hacking and Security英文原文: resources.infosecinstitute.com/android-hacking-security-part-1-exploiting-securing-application-components/中文:bobao.360.cn/learning/detail/122.html3.Android安全中文網站:/www.droidsec.cn
相關文章
相關標籤/搜索