初探android app安全测试
引言
伴随着android app的越来越多的应用,关于android app的安全漏洞也在不断地出现,在面对一个安卓应用时,如何对它进行安全测试,我们在这里做个抛砖引玉的介绍。
1.我们需要准备什么?
2.我们需要哪些基本的工具?
兵欲善其事,必先利其器,因此好用的测试工具是非常重要的,推荐下面几款很好用的工具。
实际上,androidkiller工具中就已经包含了apktool,dex2jar,adb和JD-GUI。JEB与JD-GUI都可以直接看到反编译后的android源代码,但jeb可以轻松地通过源代码定位到所对应的smali代码处,对修改smali代码很有帮助,而JD-GUI的视角更接近于android开发,查看和分析源代码更直观。
3.我们需要关注哪些测试点?
- 对apk进行反编译,查看其是否进行了代码混淆与加密,如果该apk能够被反编译成功,源码暴露的话,就意味着它能够被深入分析。常用反编译工具:AdroidKiller、apktool、JEB、dex2jar、apk改之理等等。 反编译后的尤其值得关注的文件之一:AndroidManifest.xml。这里面包括了该app的所有权限,服务,以及包括是否允许备份、是否允许调试,是否有共享用户组等等,这些都与app安全息息相关,存在很多Manifest不安全配置的风险。
- 每个运行的app在手机中都存放了其私有的相关的数据,一般情况下在根目录的“/data/data/包名”路径下,查看其各个子目录下的数据权限,如果最后一项其他用户权限未控制好的话,可能存在一定的安全隐患。此外,关注目录下面的文件是否明文存放了用户敏感信息,常用连接手机查看文件工具:Adb。
- 查看手机中正在运行的该app对应的进程的日志,某些程序员在开发过程中为了更好地观察应用运行状况及调试,会输出logcat日志信息,但开发完成后没有对其进行清除,这就可能会泄露网址、用户口令及相关的敏感信息。常用的查看日志信息的方法:Adb中的logcat命令、AdroidKiller中的“日志”选项。
- 使用工具Drozer,嗅探该app的受攻击面,查看是否有导出的ContentProvider、Service与Activiy等,如果有,使用该工具进行攻击,尤其是当有登录后才展示给用户的Activity处于导出状态时,则直接使用命令启动该导出页面,看是否能绕过登录限制。当然drozer的功能远远不止这些。可以参考http://www.tuicool.com/articles/mMNnYz。
- 根据app应用本身的业务流程,分析源代码,观察是否能通过修改代码改变代码的运行逻辑,在二次编译打包后,能否达到破解app,绕过验证码等目的。
- 可在反编译工具中搜索关键字符,查看源代码中是否泄露了关键的接口和网络地址。
- 接口测试。这个与web应用测试如出一撤,命令执行、暴力破解、越权、xss、SQL注入等等。
- 关注android的应用组件漏洞、WebView的漏洞、数据存储安全漏洞、本地拒绝服务漏洞、代码执行、中间人攻击等。
- 使用自动化检测工具如“爱加密APP漏洞分析平台”、“阿里聚安全”、“腾讯金刚审计系统”等探测该app中是否存在敏感权限、资源索引、字符串初始化等的风险,根据其提示的风险找到突破口,也是可尝试的方法。
- ……..
以上的内容属于笔者个人认为比较重要的一些知识归纳,包含的并不全面,后续我们将持续更新android app的安全测试关键技术和相关案例,会涉及到以上所说的工具和关注点,因此本文不单独对某项进行详细讲解。