[转]Android安全测试
上一篇 / 下一篇 2015-05-24 09:19:13 / 个人分类:APP安全
文章来源
- 文章来源:【转载】
一、通过在线工具进行测试
1.腾讯金刚审计系统
http://service.security.tencent.com51Testing软件测试网dQ$P1bQpp3j
优点:包含了修复建议51Testing软件测试网,JQ0OS_Xz
2.阿里聚安全检测
gZ%y4EI,w4F0网址: http://jaq.alibaba.com/
阿里聚安全下有自己的安全博客,包含一些:1.安全漏洞、2.病毒分析、3.技术研究、4.安全报告相关文档。51Testing软件测试网1J&Xk)lt
3.360捉虫猎手检测结果51Testing软件测试网"S"? yy M-gqm/T
网址: http://appscan.360.cn/
同样有自己的安全博客51Testing软件测试网Y+X w%y8|
4.爱加密
-T/g4~!zf F0网址:http://safe.ijiami.cn/analyze
优点:在导出的报告中可以看到对当前apk的评分51Testing软件测试网E9n7X!P0Y/d/[
`
[@%O
5.百度MTC51Testing软件测试网(K;S)B"r$C]Eync
网址: http://mtc.baidu.com/51Testing软件测试网)g"?#Y$b^8n8? p
总结:
经比较感觉腾讯金刚审计系统和360捉虫猎手检测结果更全面详细,而且包含修复建意
在线工具的缺点是会把apk暴露出来。
二、使用Drozer测试
1.Drozer简介
7un6|zydb0drozer是一款针对Android系统的安全测试框架。drozer可以帮助Android app和设备变得更安全,其提供了很多Android平台下的渗透测试exploit供你使用和分享。对于远程的exploit,它可以生成shellcode帮助你进行远程设备管理。51Testing软件测试网 C:T(tbc3?
1.更快的Android安全评估
drozer可以大大缩减Android安全评估的耗时,通过攻击测试暴露Android APP的漏洞。51Testing软件测试网O"W"Pwi7cM
2.基于真机的测试
drozer运行在Android模拟器和真实设备上,它不需要USB调试或其他开发即可使用。51Testing软件测试网I3|
vE?i:TJ O)v
3.自动化和扩展
drozer有很多扩展模块,你可以找到他们进行测试以发现Android安全问题。
2.Drozer的安装和使用51Testing软件测试网V g'f ]b@"D}
1.安装
Drozer下载地址:http://mwr.to/drozer
1.在客户端安装Drozer
2.在手机端或模拟器安装agent.apk51Testing软件测试网x9ZXD1u5U
3.在手机端或模拟器运行agent.apk点击开启-->Embedded Server-->Enable
.YYx/Ct)x04.建立端口转发,drozer使用31415端口,即执行命令:adb forward tcp:31415 tcp:3141551Testing软件测试网!k$Mw3? [`*s#bl@'O
5.drozer console connect
+USWSD[2V G!U06.安装包中还包含一个测试应用程序sieve.apk51Testing软件测试网#Y(i Kz^P)O+y-rJB
具体可参考:https://www.mwrinfosecurity.com/system/assets/559/original/mwri_drozer-users-guide_2013-09-11.pdf
1|@6PH V02.Drozer测试my.akp
_$n E9Ok$fY01)查看所有的安装的App的包名
cP U/?r^0?"rT0dz> run app.package.list
2)查找my.apk
dz> run app.package.list -f sample
com.xxx.xx (my)
3)获取my.apk的一些基本信息
3a#f6@o]%yL}o%I0dz>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,是否有共享库,还有权限信息等。51Testing软件测试网/K3y)h'{:CJ7O/|
4)APP攻击面分析51Testing软件测试网b p1p2P rc$iz
分析Activity/Broadcast Receiver/Content Provider/Service是否能被其他的的应用程序调用51Testing软件测试网@'b%{7WT
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绑定一个调试器到进程。51Testing软件测试网|0Pr$MH]$_
调试方法参见:http://bobao.360.cn/learning/detail/140.html
S"ZY9~"O%eN(Km05)Activity组件暴露51Testing软件测试网G0o6B6Z _ I8^"R
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的。51Testing软件测试网g+x[S9xx"_
我们可以通过命令run app.activity.start --component 包名 包名.类名启动Activity51Testing软件测试网@K'^:aIiO'\7~
dz#> run app.activity.start --component com.xxx.sample 包名.类名
dz#> run app.activity.start --component com.xxxx.sample com.xxx.xxxxx.WXEntryActivity
解决方案:51Testing软件测试网veM,G+AU/m5B
保护应用程序组件51Testing软件测试网RR(E B;a2X5{I'p@
① 设置android:exported属性为false51Testing软件测试网b \ W7Rm%c-\5{%S
在AndroidManifest.xml文件中,我们应该设置设置android:exported属性为false来保护应用。51Testing软件测试网.G(N:G}V9^!@6ZS
② 通过权限控制限制访问51Testing软件测试网 cI6]1l6c[:O
android:exported
属性不是唯一的限制措施。我们还可以通过基于权限的方法来定制一个Activity的权限。这个可以限制应用之间的访问权限。51Testing软件测试网#iRch-B
无需暴露的组件请设置exported=”false”;若需要外部调用,建议添加自定义signature或signatureOrSystem级别的私有权限保护;需要暴露的
t#h~*~m1PwC0组件请严格检查输入参数,避免应用出现拒绝服务。51Testing软件测试网!fH Z1y?*G$k7v~
6)ContentProvider组件暴露
P J!B&q&@&|O0dz>run app.provider.info -a com.xxxx.sample
Package: com.xxxxx.sample
No matching providers.
dz>
分析:我们可能没有用到Content Provider或者说是安全的。如果包含则会显示exported的content provider的具体信息,包括名字,权限,访问路径等,就可以做一此类如Sql注入的操作。