前言
一直想要写这篇文章来着,结果懒癌犯病,一直拖到了现在。刚好最近闲来无事,突然想起决定水一篇文章,给自己以前的学习做一份总结,也算给自己一个交代,至少时间没白费。
1. 环境安装
1.1 Drozer安装与连接
drozer仅支持python2.7环境,因此在安装时一定要注意我们的python环境,不然会报错装不上。
1)首先在官网下载drozer.msi安装到电脑,drozer.apk安装至手机
2)手机端开启drozer,开关在页面右下角处
3)打开cmd命令行,使用命令 adb forward tcp:31415 tcp:31415
转发端口
4)在python2安装目录的scripts下,执行 drozer console connect
连接客户端
如果无法像上述步骤正常启动drozer,可以参考我博客里的一篇和drozer有关贴子,具体方法我就不在这里写了(https://foxcookie.github.io/)
另外,很多人的drozer在使用时都会有中文乱码的问题,解决方法我也一同写在博客里了,欢迎围观。
2. 常见漏洞测试方法
2.1 客户端未加固
客户端未加固就是我们平时所说的未加壳保护,我们可以先用apk查壳工具看下
比如上面这个就没有进行加固操作,不过只是这样当然不能下决断。所以我们还需要进行反编译查看下,这里我们直接使用jadx这款工具(类似的工具还有Androidkill、apktools等)
从上面的图里就可以看出,这款apk确实没有做任何加固,我打码的部分则是在代码中泄露的个人信息等。
当然,也有进行了加固操作的apk,比如下面的
可以很明显的看出加固和未加固的差别来。
一般来说,这里其实可以算多个漏洞,一种是产品未加固,另外一种则是我们常说的信息泄露、硬编码一类的。比如上述就是在代码中泄露很多个人隐私信息,还有就是内网IP一类的数据。
2.2 应用完整性校验
这块测试首先需要有Java环境,以及apktool.jar这款工具
1)首先用apktool反编译apk
1 | Java -jar apktool_2.4.1.jar d test.apk |
2)使用代码编辑器打开app目录中的res/values/strings.xml
文件,找打一处字符串(如apk的名字),修改为任意字符,然后保存退出
3)使用apktool对修改后的apk文件进行反编译
1 | Java –jar apktool_2.4.1.jar b test –o newtest.apk |
4)使用签名工具对我们重打包的newtest.apk进行签名,然后放入手机安装。如果正常使用,则存在该问题。
2.3 组件安全风险
我一般都是直接上drozer打一套,具体使用方法可以自行百度,有很多教程,我就不详细解释了,毕竟怪麻烦的。下面我也贴了一个网上找到的帖子,师傅写的很详细(https://www.jianshu.com/p/dfa92bab3a55)
2.4 Activity劫持
Activity劫持是很多apk普遍存在的一个问题,想学习Activity原理的小伙伴可以参考我给出的链接,这里我仅对如何测试做出讲解。
1)首先我们需要在模拟器/真机上安装劫持工具Hijack_Activity.apk
2)打开我们需要测试的app,随意选择一个窗口,这里我们选用最常见的登陆窗口
3)在cmd中执行adb shell am start com.hijack_activity/.MyLogin
,如果执行报错,也可以先输入adb shell,进入shell界面,在输入后面的命令。这里主要是针对权限不够报错,因为这行命令需要我们在root权限下运行。下面就是表示我们命令执行成功了,存在Activity劫持漏洞
2.5 日志泄露风险
这个检测方法其实很简单,在PC端打开cmd命令行,使用命令adb logcat >> aaa.txt
,然后在手机上做登陆等敏感信息操作,接着终止cmd命令行记录日志即可。
接下来就是分析dump下来的日志了,用文本编辑器打开,然后搜索敏感字符串。如username、password等等一类的信息。而且,由于我们是测试人员,也可以直接搜索我们输入的账户名和密码等信息来快速定位。像下面的就是,泄露了登陆的用户名及密码。
2.6 敏感界面可截图
这个问题其实算是安全检测一类的了,就是指在我们登陆账户以及输入交易密码的界面,可以被后台调用截图/录屏操作给记录下来,也算是危害的一种。
测试方法也很简单,使用adb shell screenrecord /sdcard/video.mp4
命令调用录屏功能,对APP进行录屏
打开APP,在登录界面进行认证登录。发现输入的用户名和密码可被录屏,且密码处有延迟显示。
2.7 动态调试
这个问题其实就很小了,主要是app开发过程中权限文件的编写问题。我们只需查看androidmanifest.xml中是否开启debugable属性,如果开启了则存在这个问题。
3. 总结
其实,还有很多测试方法和apk存在的问题没有列出,毕竟东西太多了。Android毕竟是一个已经很完善且成熟的架构系统了,所以它能测试的地方还有很多。而且并不是说你做了防护这个app就一定安全了,比如最常见的加壳加固,现在市面上的免费加固工具几乎都可以一键砸壳给搞下来,这样的加固方式和不加其实没什么区别。所以,各大厂商专门针对企业提出了付费服务,但是这种方式也基本可以通过Frida插桩技术来搞定。
就像电影里说的那样,没有绝对安全的系统,我们要走的路还很长,要学的东西也很多。
发布时间: 2022-01-19
最后更新: 2023-07-21
本文标题: 常见APK漏洞渗透测试
本文链接: https://foxcookie.github.io/2022/01/19/常见APK漏洞渗透测试/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!