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渗透测试总结的主要内容,如果未能解决你的问题,请参考以下文章

渗透实战-抓取微信小程序流量包

移动app传统测试流程优化

渗透测试思路总结

渗透测试实战分享—从app到网站沦陷

移动APP测试经验总结

APP渗透抓包