安全矩阵

 找回密码
 立即注册
搜索
查看: 1683|回复: 0

简述APP资产收集与突破抓包限制

[复制链接]

181

主题

182

帖子

721

积分

高级会员

Rank: 4

积分
721
发表于 2022-6-23 22:07:54 | 显示全部楼层 |阅读模式
本帖最后由 wangqiang 于 2022-6-23 22:17 编辑

简述APP资产收集与突破抓包限制
原创 oh1inge  Tide安全团队
2022-06-22 17:03 发表于山东
转载地址:简述APP资产收集与突破抓包限制

资产提取AppinfoScanner
首先还是我们经常使用的AppinfoScanner,AppinfoScanner是一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,
可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。
这里的下载地址为:https://github.com/kelvinBen/AppInfoScanner
这里我们下载好了之后,首先安装依赖库​​​​​​​
  1. cd AppInfoScanner
  2. python -m pip install -r requirements.txt
复制代码

安装依赖库之后,直接将APK放到该工具的文件夹中,使用该脚本去扫描该APK文件中所含的链接信息
这里运行命令为​​​​​​​
  1. 1.扫描Android应用的APK文件、DEX文件   
  2.     python app.py android -i xxx.apk
  3. 2.扫描IOS应用的IPA文件、Machine-o文件   
  4.     python app.py ios -i xxx.ipa
  5. 3.扫描web站点的文件、目录、需要缓存的站点URL
  6.     python app.py web -i www.xxx.com
复制代码

这里我们的目标是APK文件,所以我们直接使用第一条命令即可
  1. python app.py android -i 123.apk
复制代码


这时,AppinfoScanner就会将该APK中所涉及到的链接全部都提取出来,在扫描后会在AppinfoScanner中输出一个以当前时间命名的xls文件,其中就包含了
对该APP中所提取的一些资产信息,但是该xls中的资产提取的并不完整,可能是我APK的原因吧


在out文件夹中还会有一个以该APK名所命名的文件夹,里面存放这该APK所逆向出来的源代码,这里我们可以将该源代码导入到IDEA中


打开IEDA,然后选择打开,选择所输出的文件夹,单击确定


使用快捷键ctrl+shift+F全局搜索,去搜索该代码中的一些关键信息,如http://、https://等也可以获得一些关键信息


MonSF
移动安全框架 (MobSF) 是一种自动化的一体化移动应用程序 (Android/iOS/Windows) 渗透测试、恶意软件分析和安全评估框架,能够执行静态和动态分析。
MobSF 支持移动应用程序二进制文件(APK、XAPK、IPA 和 APPX)以及压缩源代码,并提供 REST API 以与您的 CI/CD 或 DevSecOps 管道无缝集成。动态分析器可帮助您执行运行时安全评估和交互式仪器测试。
MonSF是基于docker运行的,我们只需要找来一台安装docker的主机运行如下两条命令即可​​​​​​​
  1. docker pull opensecurity/mobile-security-framework-mobsf
  2. docker run -it -p 8008:8000 opensecurity/mobile-security-framework-mobsf:late
复制代码


这里拉取环境之后直接运行即可,由于我之前已经拉取了环境,所以比较快一些,如果刚开始的话会需要等待一段拉取时间,如果已经拉取成功环境之后,下次启动只需要​​​​​​​
  1. docker run -it -p 8008:8000 opensecurity/mobile-security-framework-mobsf:latest
复制代码

命令即可
启动好之后,直接访问docker主机的8008端口


这里就是我们搭建好的MobSF界面,为web图形化界面,这里我们直接将APK拖到或者上传MobSF中之后,它就会对当前APK进行一个扫描,扫描完成之后即可看到这个APK的一些安全信息


也可以去将该APK的java源代码、Smali源代码等


一些易受攻击的点


和网址、电子邮件等信息


还可以对目标生成一份报告等等其他功能,这里不再阐述


突破抓包限制
在测试APP中,经常会遇到一种情况,就是当我们打开代理之后,或者经常会出现抓不到包、一直检测失败
等各种情况,这里大概情况分为两点

  • APK做了防抓包机制,如反代理或反证书校验的检测
  • 该APK没有走http/S协议,走了其他协议

首先让我们先了解一下什么是反代理和反证书校验

  • 反代理,当该APK在启动时会判断客户端是否启动代理,如果启动代理则无法进行通信
  • 反证书检测,抓包时,无法连接网络并且也接收不到任何数据,将APP代码内置仅接受指定域名的证书,而不接收操作系统或浏览器内置的CA根证书

突破反代理

首先当我们的APK的检测机制为反代理时,我们该如何去进行一个绕过,这里他的判断机制是当检测到客户端启动代理时,不发送数据,那我们可以不使用模拟器的代理,
而使用本机的代理工具去包含安卓模拟器去启动,再将代理工具的流量转发到我们的burp上,哪这样我们的流量走向就成了下图,模拟器中并没有设置代理,但是他的整个
流量都会走proxifier,proxifier会将流量都转发到burp上面,从而达到绕过反代理的效果。


首先打开我们在内网渗透测试中经常使用的代理工具Proxifier,到配置文件中的代理服务器选项–>添加代理服务器–>服务器ip地址与端口为burp所监听的端口–>协议选择HTTPS,点击确定


在设置好代理之后,我们再来设置规则
点击确定之后,我们将夜神模拟器重启,可以看到数据包已经在传递了


这时我们再打开反代理的APK时,就可以看到我们的burp已经成功接收到了数据

突破证书校验进行抓包
那么如果APK是基于证书校验或者走了其他的比如SSL等协议,那这时候我们该如何去抓取该APK的数据包呢?
这里我们就可以尝试使用frida+r0capture+wireshark组合,使用frida和r0capture联动去抓取该APK的所有数据包,然后使用wireshark去进行分析该APK的流量详情。
首先各工具的下载地址为​​​​​​​
  1. https://github.com/r0ysue/r0capture
  2. https://github.com/frida/frida/releases
  3. https://www.wireshark.org/#download
复制代码
首先安装Frida
1、本地安装firdra和firdra-tools,使用pip安装
  1. pip install fridapip install frida-tool
复制代码
2、模拟器安装frida-server
这里在安装的时候需要注意以下两点
1、根据模拟器的位数去下载其相对应的frida-server脚本
在这里可以调用夜神模拟器路径下的nox_adb.exe去调用命令​​​​​​​
  1. nox_adb.exe shell  //进入到模拟器bash视图
  2. getprop ro.product.cpu.abi //查看位数信息
复制代码


这里可以看到我们的模拟器系统为x86操作系统
2、frida-server的版本要与本机pip安装的版本一致
可以使用pip list来查看我们所安装的frida的版本信息,这里我们本地所安装的frida版本为15.1.22,那么我们的模拟器也下载15.1.22版本的frida-server就可以了


通过刚刚的基本信息之后,我们了解到,我们要下载版本为15.1.22,x86的frida,这里我们直接打开下载界面找到该版本进行下载即可,这里arm为真机使用版本,
x86和x86_64为模拟器使用版本,这里我们下载frida-server-15.1.22-android-x86.xz文件即可


下载完成之后,我们将其放到夜神模拟器的bin目录下,使用Nox_adb.exe将其上传到模拟器中​​​​​​​
  1. nox_adb.exe push frida-server-15.1.22-android-x86 /data/local/frida-server
复制代码


运行frida
OK,上传成功,接下来进入到模拟器的bash视图下,执行frida-server即可​​​​​​​
  1. nox_adb.exe shellcd /data/local/frida-server

  2. ls -lh

  3. chmod u+x frida-server
复制代码


好,这里我们成功运行了frida-server,接下来就检查一下他是否正常运行并是否和我们本机的frida正常连接
模拟器中ps | grep frida-server,可以看到进程
本机中frida-ps -U or frida-ps -R可以正常返回


这里frida-ps -R报错,则使用adb forward tcp:27042 tcp:27042将流量转发出去


然后就是我们的最后一步,获取我们要抓取的APK包名,这里有两种查看方式,一种是在/data/data目录中存放这所有文件的包名,还有就是可以
使用APK资源提取器去查看APK的包名,这里我习惯用第二种方式比较可视化一些



然后就可以启动我们的r0capture工具进行抓包分析,命令为​​​​​​​
  1. python r0capture.py -U -f 包名 -v -p 文件名.pcap
复制代码
这时,r0capture就会自动启动该APK文件,并将我们在进行操作时的流量进行保存为pacp,当我们停止运行该APK后,就会在r0capture中看到命名的pacp文件


这里我们直接打开分析即可
​​

这里就成功抓取到了我在进行验证时的数据包,成功绕过证书检测等机制,但是该方法有些弊端,就是所导出的数据包我们并不能将其进行修改,后续
最佳的办法为frida+r0capture联动fillder和XPosed框架去绕过限制,但这里由于篇幅原因,下一篇再来说一说以下方法吧!






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 02:48 , Processed in 0.014781 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表