引言 伴随着android app的越来越多的应用,关于android app的安全漏洞也在不断地出现,在面对一个安卓应用时,如何对它进行安全测试,我们在这里做个抛砖引玉的介绍。 1.我们需要准备什么? - 首先,我们需要有一台被root过的安卓手机(没有的话,各种模拟器和avd亦可,),为什么要被root?因为在测试过程中我们会需要提取app里的资源,查看app的数据,这些操作必须具备root权限。至于怎么root,可以根据不同的手机品牌及型号寻找合适的root方法。对于模拟器来讲,我们原本就拥有它的root权限。
- 数据线。用来连接手机与电脑,进行调试和查看app资源。
2.我们需要哪些基本的工具? 兵欲善其事,必先利其器,因此好用的测试工具是非常重要的,推荐下面几款很好用的工具。 - Android Killer。它是一款可视化的安卓应用逆向工具,集Apk反编译、Apk打包、Apk签名,编码互转,ADB通信(应用安装-卸载-运行-设备文件管理)等特色功能于一 身,支持logcat日志输出,语法高亮,基于关键字(支持单行代码或多行代码段)项目内搜索,可自定义外部工具;吸收融汇多种工具功能与特点,打造一站 式逆向工具操作体验,大大简化了用户在安卓应用/游戏修改过程中的各类繁琐工作。功能与之类似的工具有apk改之理。
- JEB。是一个功能强大的为安全专业人士设计的Android应用程序的反编译。反向工程或审计APK文件,并减少许多工程师的分析时间。其具备将Dalvik字节
码反编译为Java源代码的能力,无需DEX-JAR转换工具。JEB的强大的用户界面,使您可以检查交叉引用,重命名的方法,字段,类,代码和数据之间
导航,做笔记,添加注释。小提示:如果你下载的JEB闪退的话,使用文本编辑器打开jeb_wincon.bat,检查下面这个地址,是否是jdk安装地址,不是的话修改过来就可以了。 - [/url]
- IDAPro。用于APP逆向分析和动态调试。交互式反汇编器专业版(Interactive Disassembler Professional)是总部位于比利时列日市(Liège)的Hex-Rayd公司的一款产品。开发IDA的是一位编程天才,名叫Ilfak Guilfanov。IDA是一个世界顶级的交互式反汇编工具,有两种可用版本。标准版(Standard)支持二十多种处理器。高级版(Advanced)支持50多种处理器。
- Drozer。是一款针对Android系统的安全测试框架。drozer可以帮助Android app和设备变得更安全,其提供了很多Android平台下的渗透测试exploit供你使用和分享。对于远程的exploit,它可以生成shellcode帮助你进行远程设备管理。
- APKTool。是GOOGLE提供的APK编译工具,能够反编译及回编译apk,同时安装反编译系统apk所需要的framework-res框架,清理上次反编译文件夹等功能。
- dex2jar。是一个能操作Android的dalvik(.dex)文件格式和Java的(.class)的工具集
合。dex2jar可以将.dex文件转换成Java的.class文件的转换工具。dex2jar与JD-
GUI组合起来就能很好的对apk进行反编译。 - adb。安卓调试桥,它提供了与Android设备中原生级的组件进行交互所必须的功能。可以通过它读取文件系统目录,与包管理器,应用管理器,内核驱动接口以及初始化脚本进行交互。
- burpsuite和Fiddler,抓包工具,测试过程中的使用与web安全测试无异。
- Xposed Framework。Xposed 框架可以在未修改任何Android应用程序包(APK)或重新刷机的情况下更改系统或应用配置,以及运行时的行为。
- …….
实际上,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的功能远远不止这些。可以参考[url=http://www.tuicool.com/articles/mMNnYz]http://www.tuicool.com/articles/mMNnYz。
- 根据app应用本身的业务流程,分析源代码,观察是否能通过修改代码改变代码的运行逻辑,在二次编译打包后,能否达到破解app,绕过验证码等目的。
- 可在反编译工具中搜索关键字符,查看源代码中是否泄露了关键的接口和网络地址。
- 接口测试。这个与web应用测试如出一撤,命令执行、暴力破解、越权、xss、sql注入等等。
- 关注android的应用组件漏洞、WebView的漏洞、数据存储安全漏洞、本地拒绝服务漏洞、代码执行、中间人攻击等。
- 使用自动化检测工具如“爱加密APP漏洞分析平台”、“阿里聚安全”、“腾讯金刚审计系统”等探测该app中是否存在敏感权限、资源索引、字符串初始化等的风险,根据其提示的风险找到突破口,也是可尝试的方法。
- ……..
|