APP渗透测试总结
Posted 李白你好
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APP渗透测试总结相关的知识,希望对你有一定的参考价值。
App面临的主要风险
客户端
- 传统逆向分析类(反编译、调试、加密/签名破解…)
- 用户已经中招类(输入记录、导出组件、进程注入…)
服务端
- 系统组件类(MS17-010脏牛、心脏滴血…)
- 业务应用类(注入,跨站,越权,执行,上传,下载,弱口令…)
APP测试=APP本地测试+WEB渗透测试
客户端测试
本地测试部分顾名思义,真正进行攻击或利用时也是要在本地才能实施。除了逆向分析和敏感信息泄露部分外,基本都是以用户手机已经运行了恶意程序为前提进行的,实际可利用性大多不高。
客户端测试-环境准备
JDK
- 因为android的环境是JAVA环境,开发和很多工具基于JAVA环境。
ADT(推荐Android Studio-官方IDE) - Eclipse的Android开发扩展包,包括adbe Monitor和安卓虚拟机。
IDA Pro - 跨平台调试工具,主要用于动态分析(Dump内存,脱壳等)
SDK、NDK - SDK用于编译Android不简版本使用的Java层可执行文件((Java.
dex文件) - NDK用于编译Android使用的Native层可执行文件(C/C++、So文件)
测试环境 - 真机Root+Xposed、Root+VirtualXposed.
- Arm(推荐)或x86虚拟机、模拟器
流量分析工具
- BurpSuite/Fiddler/Charles针对HTTP/HTTPS流量分析利器.
- Wireshark(定位代码)针对非HTTP协议流量分析(如Socket)
逆向分析工具 - AndroidKiller_v1.3.1/ApklDE反汇编工具(集成工具).
- Jadx/JEBJava层代码分析工具
- Frida/Xposed/SubstrateCydia动态注入框架
- MT管理器Android端反汇编工具(集成工具)
- IDA ProNative层代码分析工具(动态调试)
服务端测试
APP包含二进制指令的可执行程序,实现页面展示和部分逻辑控制,随着html5的发展,有些APP实际上是个“浏览器”。从这个角度看,APP有点像是WEB前端。
APK的构成
https://blog.csdn.net/hyg1165269653/article/details/90942882
https://www.jianshu.com/p/77ac6f6f2311
https://www.jb51.net/article/224643.htm
客户端静态安全-反编译保护
- 早期:解压Apk,使用dex2jar工具把classes.dex转jar,使
用jd-gui或luyten打开jar文件。 - 现在:直接把Apk文件拖入AndroidKiller_v1.3.1/ApkIDE/Jadx/JEB
客户端静态安全-代码混淆
- 测试方法:反汇编Apk (参考反编译保护测试项)查看类名是否可读
- 修复方法:使用混淆工具进行混淆(DexGuard、ProGuard)
客户端静态安全-安装包签名
- 测试方法:使用JDK中/jre/bin目录下的jarsigner和keytool
客户端静态安全-完整性检验
测试方法:
- 反汇编Apk(参考反编译保护测试项)
- 修改资源或代码文件
- 重打包签名安装(正常运行则说明有问题)
修复方法:
- 代码中对代码文件(classes.dex)做完整性校验
- 代码中对Apk包做完整性校验
- 代码中对签名文件(META-INF/MANIFEST.MF)中classes.dex哈希值的校验
操作方法
ApkTool+SignApk:
1.解包后可修改并重新打包;
2.可查看AndroidManifest.xml;
3.可查看smali源码(适用于JAVA反编译失败的情况);
解包:
java -jar apktool.jar d -f apk文件路径-o解包目标文件夹
打包:
java -jar apktool.jar b -f待打包的文件夹-o输出apk路径
APK必须进行签名后,方可安装和运行:
java -jar signapk.jar testkey.x509.pem testkey.pk8 待签名apk文件路径 签名后输出apk路径
客户端静态安全–组件导出安全
-
安装drozer客户端apk文件
-
在APP内开启31415监听
-
转发APP监听的31415端口流量到电脑的31415端口
-
启动电脑端的drozer.bat console connect
-
执行命令
run app.package.attacksurface Packagename
run app.activity.info -a Packagename
run app.provider.info -a Packagename
run app.service.info -a Packagename
run app.broadcast.info -a Packagename
以上是关于APP渗透测试总结的主要内容,如果未能解决你的问题,请参考以下文章