太干了,Android 抓包姿势总结!

VSole2021-09-24 08:30:00

App 服务端测试基本就是 Web 安全那一套,但如果抓不到服务器的包?哎~就很难受,空报告?

本篇文章总结了几个比较好用点的 Android 端抓包的姿势,当然远不止这几种。

0x01 知识点总结

因为图比较多,可能翻起来有点麻烦,所以先在这做个简单的知识点总结

  • 绕过 root 检测
  • 绕过 SSL Pinning
  • BurpSuite 抓包
  • Fiddler+BurpSuite 联动
  • Charles+Burp 联动
  • Proxifier+ 夜神模拟器 + BurpSuite 联动
  • Drony+BurpSuite 联动
  • 绕过双向验证
  • 小程序抓包

0x02 绕过 root 检测

一些插件需要在开启 root 的情况下使用,但部分安全措施做的较好的 app 又会对 root 环境做检测,所以尝试绕过 root 检测。

模拟器和测试手机的安卓版本建议在 7 以下,生态较好。

比较常见的是利用 xposed/VitualXposed 的插件来绕过(模拟器中的应用商店也可以安装 xposed 框架)

比如 xposed hide 插件

Magisk 环境下也可以安装 EdXposed 框架

Magisk 面具框架自带 MagiskHide 功能,可以开启来绕过 root 检测

同时也需要在具体抓包的 App 中设置 Hide 属性

0x03 BurpSuite 抓包

BurpSuite 就不多介绍了,先安装证书

浏览器挂上 BurpSuite 代理后,访问 http://burpsuite,下载证书

并把 der、crt 等格式证书转换成 pem 格式

x509 -inform der -in test.cer -out test.pem (记得添加路径)

之后再安装到手机当中

设置>安全>从 SD 卡安装证书

并为证书命名

查看信任的凭据,在用户一栏中查看已安装的证书

成功使用 BurpSuite 抓取流量

Magisk 有个插件叫做 Move Certificates ,该插件可以一键将所有用户证书自动转换为系统区证书

使用方法:所有证书安装为用户证书后,安装此插件,并重启。

后续各软件与 BurpSuite 联动的时候,都需要注意各软件之间的 IP 及端口保持一致。

0x04 绕过SSL Pinning

4.1 什么是 SSL Pinning:

开发者预先把证书相关信息预置到 App 中再打包,这样在 https 通讯过程中 App 本地可以与服务器返回的 CA 证书可以做合法性校验,如果发现不一致,那么可能就是由于中间人攻击(比如 Fiddler/Charles 抓包工具),App 客户端可以终止 https 链接。而在新版本的系统规则中,应用只信任系统默认预置的 CA 证书,如果是第三方安装的证书(比如 Fiddler 安装的)则不会信任

4.2 一句话总结 SSL Pinning 原理:

将服务端证书相关信息打包在客户端里,在进行通信时,对比客户端和服务端证书是否一致。

4.3 绕过 SSL Pinning 验证

4.3.1 Xposed插件

下载 JustTrustMe 安装包并安装到手机里,在 Xposted 中激活并重启手机,就可以抓取手机中的流量。

SSLUnpinning 2.0 插件和 JustMePlush 插件当然也可以

4.3.2 使用 Objection 绕过

Objection 是一个基于 Frida 开发的命令行工具,它可以很方便的 Hook Java 函数和类,并输出参数,调用栈,返回值。

因为 Objection 是基于 Frida 的所以必须先安装 Frida 然后才能安装 Objection

数据线连接手机后打开调试模式(PC 端已有 adb 环境的前提下)

先用 adb 命令查看有几台设备

把下载好的 frida-server 拷贝到手机中

进入到手机中,并提升为 root 权限,启动 frida-server 脚本

frida-ps -U命令查看,下图所示即为正常启动

使用adb shell pm list packages查看手机中的包名及数量

需要关闭手机上 Magisk 的 magisk hide 功能(不关闭会有冲突)

使用命令:objection —gadget 包名 explore

此时 Objection 将注入到目标应用程序上

关闭 app 的 SSL 校验:android sslpinning disable

上图所示即为关闭成功,下图所示为成功抓取流量

0x05 Fiddler+BurpSuite 联动

Fiddler 是一款非常专业的 http 协议调试代理工具,这款软件支持众多的 http 调试任务,包括通过捕获浏览器的会话以及使用它捕获 HTTPS 会话等

利用 Fiddler 与 BurpSuite 联动连抓取流量

首先对 Fiddler 进行设置,在 HTTPS →解密 HTTPS 流量→操作→根证书导出到桌面

接着将 FiddlerRoot.pem 安装到手机中

可以看到,Fiddler 的根证书安装好了

接着需要信任根证书

然后在连接→ Fiddler 在端口上侦听,默认为 8888 即可

接着在手机中,把网络的 IP 设置为 10.170.0.246,端口设置为 8888

在 Fiddler 的网关→手动代理配置,设置代理为 10.170.2.246:8080

BurpSuite 的 IP 及端口号与 Fiddler 保持一致

成功接收到转发的流量

0x06 Charles+BurpSuite 联动

Charles 是常用的网络封包截取工具,Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

可以利用 Charles 转发流量,配合 BurpSuite 做联动抓包使用。

将 charles 证书保存到本地,选择 help→SSL Proxying→Save Charles Certificate

设置>安全>从 SD 卡安装证书

安装成功后如图所示

默认 charles 只可以抓取 http 协议的包,https 的更安全,需要如下配置:

菜单栏 Proxy–>SSL Proxying Setting–>选择 SSL Proxying——>点击 add

在弹框中 port 里填写 443(443 代表通用 https 端口号), host 中的*代表抓取所有地址的包

第一次设置成功代理后,随便打开一个需要网络的应用,PC 端会自动弹出以下提示,选择 allow 允许 Charles 代理

需要和 BurpSuite 联动,需要额外添加代理

菜单栏 Proxy–>External Proxy Settings–>选择 Use external proxy servers

抓取 http 包则设置 Web Proxy(HTTP)选项(IP 及端口与 BurpSuite 保持一致)

抓取 https 包则设置 Secure Web Proxy(HTTPS)选项(IP 及端口与 BurpSuite 保持一致)

成功接收到转发流量

0x07 Proxifier+ 夜神模拟器+ BurpSuite 联动

Proxifier 软件是一款极其强大的 socks5 客户端,同时也是一款强大的工具。Proxifier 支持 TCP,UDP 协议,支持Xp,Vista,Win7,支持 socks4,socks5,http 代理协议,可以让不支持通过代理服务器工作的网络程序能通过HTTPS 或 SOCKS 代理或代理链。

利用 Proxifier 代理 PC 中模拟器的进程流量,并与 BurpSuite 联动来抓包。

BurpSuite
IP:10.170.0.246
端口:8080

手机WIFI
IP:10.170.0.246
端口:8080

Proxifier
IP:127.0.0.1
端口:8080

从任务管理器中查看夜神模拟器的进程,查看文件所在的位置

在 Proxifier 中设置夜神模拟器进程,并注意代理设置所在第一行

成功抓取夜神模拟器的进程流量

0x08 Drony+BurpSuite 联动

Drony 支持 App 定向的 http,https 抓包。手机上装的 app 多了,会很多数据上来,要加过滤规则,正式环境测试环境都要加连上了代理,有些普通使用的 app (非抓包 app)会没法使用,会出现经常要设置代理,关闭代理,需要又要设置(有些手机会保存代理 ip 还好,不保存的还要每次手写)。

Drony 可以解决上述痛点,不需要手机在 wifi 里设置代理。可以通过该 app 直接指定目标 app 才走代理,对其他 app 不可见。

将手机上的所有流量都重定向到 drony 自身

这样 drony 就可以管理所有手机上的网络流量,然后对手机上不同 APP 的流量进行单独配置,再转发到 BurpSuite上。

电脑开启 wifi,并查看

将 BurpSuite 的 IP 及端口设置为此

再打开 Drony 后往右滑动,打开设置界面,选择无线网络

选择 dronyTest

设置好主机名和端口后,代理类型选择手动(BurpSuite 的 IP 及端口也设置为如此,保持统一)

过滤默认值默认为允许全部,点击编辑过滤规则

添加过滤规则,其中行动一栏选择本地代理链全部

过滤规则添加好如下图所示

返回至日志模块,开启 Drony

手机谷歌浏览器访问 www.baidu.com,成功接收到转发流量 

0x09 绕过双向验证

9.1 一句话总结双向证书验证

当服务器启用了双向认证之后,除了客户端去验证服务器端的证书外,服务器也同时需要验证客户端的证书,也就是会要求客户端提供自己的证书,如果没有通过验证,则会拒绝连接,如果通过验证,服务器获得用户的公钥。

9.2 解决思路:

9.2.1 反编译找证书私钥
  • 先通过工具反编译 APK 文件,找到证书的文件。一般证书文件可能会放在 assets 或者 res 目录下可以直接搜索证书文件
  • 证书文件格式后缀如:crt、cer、p12、pfx等等。
  • 找到证书文件后打开它会发现是需要私钥的。拿到证书文件名后,在反编译好的源代码中查找相关函数,找到私钥。
  • 导入输入私钥后的证书到 burpsuite 后,即可正常抓包。
可以关键字搜索 “key”、“password”、“ssl” 等关键字,快速定位到私钥位置。 难点还是反编译后遇到难脱的壳和代码混淆的问题。
9.2.2 Hook SSL 对数据解密数据的地方

虽然 https 在传输过程中是加密的,但在终端显示的时候,必然会解密,不然 APP 上都没法显示了。

所以如果能知道安卓解密 SSL 加解密是哪个类, Hook 这个类, 类里相关方法的输入输出肯定就是传输的明文数据。

0x10 小程序抓包

10.1 绕SSL Ping、防代理抓包

基本步骤跟上述差不多,姿势足够用了。如果还不行的话,需要写 Hook 代码来 Hook 掉函数

10.2 双向验证绕过

基本步骤与上述差不多,只是小程序访问后,会把包下载到本地,可以破解本地小程序包来搞定。

小程序包下载机制:

当点开一个微信小程序,如果本地这个文件夹下找到即将运行的小程序,会从微信服务器下载到本地,在以后的某个时刻又运行这个小程序,运行时,微信服务器会通知有没有小程序新版本,如有新版本,会在后台静默下载,小程序继续运行,新版本要到下一次运行才会启用,这就是微信小程序的更新机制。

打开微信,打开想反编译的微信小程序,在小程序打开后,就可以切换到 RE 或 MT Plus 文件管理器去找源文件。

从根目录开始。/data/data/com.tencent.mm/MicroMsg/.../appbrand/pkg/,路径中有一段...,这里表示不确定具体一个,一般是很长的数字和字母组成的文件(如下图所示)

对于小程序 wxapkg 包的反编译主要是使用 js 插件 wxappUnpacker。

随着微信对于小程序的加密、混淆打包、分包及插件机制,小程序反编译的成功率大大降低

之后就是常规的破解小程序包的源码,找到证书,并根据证书名称找到私钥,再安装到抓包软件上的常规套路。

0x11 结语

这几种抓包姿势基本够用,或者换一些工具,比如 HttpCanary、Packet Capture、r0capture 等等,基本也是安装软件>下载证书>转换格式>安装证书>配置 IP、端口>开始抓包调试。如果还不够用,那可能就需要 Java 代码层面进行函数 hook,篇幅所限,以后有机会再介绍给各位大佬。

burpsuitefiddler
本作品采用《CC 协议》,转载必须注明作者和本文链接
安卓工具总结
2021-10-14 08:39:34
JRE:Java Runtime Environment是Java运行时环境,包含了java虚拟机,java基础类库安装过程:1)双击启动安装程序2)默认安装路径3)jre路径选择4)配置环境变量JAVA_HOME. 这里介绍几款不错的安卓模拟器。
App 服务端测试基本就是 Web 安全那一套,但如果抓不到服务器的包?模拟器和测试手机的安卓版本建议在 7 以下,生态较好。
常用的抓包工具有fiddler、wireshark、httpwatch、 firebug、F12/等。抓包抓的是协议,fiddler抓的是HTTP、HTTPS协议,wireshark抓的是其他协议。fiddler、wireshark可以修改接口的参数和返回值,常用的F12调试工具只可以查看接口的参数和响应值。
通过一些尝试后,问题暂时解决,特此记录一下。问题出现之前的测试环境:Pixel 4. 由于抓其他app的请求包是没问题的,比如该小程序的app版本,这时怀疑是不是微信又在防御抓包方面升级了。最终得到结论:PC端微信小程序抓包:Fiddler设置系统代理,并将网关代理设置为burp的127代理+Burp Suite的logger++插件记录流量。
0x01 开门见山首先回顾一下《微信绑定手机号数据库被脱库事件》,我也是第一时间得知了这个消息,然后跟踪了整件事情的经过。下面是这起事件的相关截图以及近日流出的一万条数据样本:个人认为这件事也没什么,还不如关注一下之前45亿快递数据查询渠道疑似在近日复活的消息。消息是这么传的,真假尚未确定,因为笔者不会冒着查询个人信息意味着账号和个人信息绑定的风险去测试是否为真,但是可以知道的是之前的查询渠道叫“
随着WAF产品从传统规则库到智能引擎的转型,通用漏洞类型已基本可以防护。在日常安全测试中,大部分发现的都是未授权访问和水平越权,本次讲解下水平越权。接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。
HTTPs双向认证及解决方案Https一般采用单向认证,但是一些特殊的APP在服务端也会对证书进行再次认证,这样的认证机制我们称为HTTPs双向认证。
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留。查看下pid所对应的进程文件路径,
PowerTool是一款免费的系统分析,手动杀毒工具。PowerTool 的特色在于它能够获取较高权限,从而执行一些底层的系统维护操作,如常用的强制结束进程、强制删除文件、强制编辑注册表、强制删除系统服务等等。
VSole
网络安全专家