乐于分享
好东西不私藏

又一种抓取手机APP https流量的方法

又一种抓取手机APP https流量的方法

前言

最近要研究一款APP,需要进行抓包才能获取到资源,按照惯例使用fidller进行抓包,结果APP对证书做了校验,不信任fiddler的证书,无法抓取https流量,报着尝试的心态对该APP进行反编译研究,结果发现又一种实用的抓取https数据包的方法,下面直接给出方法,有不对的地方请指正,欢迎大家关注和点赞。

声明:     本文内容仅用于网络安全教育、学术研究和防御能力建设目的,严禁将文本内容用于任何未经授权的系统、网络等恶意的非法活动,作者不负任何责任。

一、工具

工具:雷电模拟器5.0、fiddler5.0(其他抓包工具也可以)、安卓修改大师、adb

证书格式转换:https://www.ssleye.com/ssltool/crt_dpem.html[1]

涉及工具可以关注本公众号获取;

二、配置抓包工具

1、打开fiddler

2、Tools-Options

3、开启解密Https流量设置

切换到HTTPS,按照下图进行勾选

4、导出fiddler证书

点击”Actions“,点击”Trust Root Certificate“信任证书,再点”Export Root Certificate to Desktop“,把证书导出到桌面上,文件名”FiddlerRoot.cer“

5、设置开启代理

设置监听端口,这里我使用8080,点击OK按钮。

6、转换证书

浏览器中打开https://www.ssleye.com/ssltool/crt_dpem.html,把刚导出的FiddlerRoot.cer证书转换为pem格式,保存文件名为fiddler.pem,后面会使用到[2]

三、APP反编译

反编译目的主要需要修改AndroidManifest.xml文件和把之前转换的pem证书一起打包进去

1、复制证书

把fiddler.pem证书复制到\res\raw目录中

2、编辑AndroidManifest.xml文件

<!-- 添加调试权限 --><uses-permissionandroid:name="android.permission.DEBUGGER" /><applicationandroid:allowAudioPlaybackCapture="true"android:allowBackup="true"android:debuggable="true"android:networkSecurityConfig="@xml/network_security_config"android:usesCleartextTraffic="true"...>

增加调试权限和在application中配置开启调试,android:networkSecurityConfig 是 Android 系统中用于配置应用网络通信安全策略的重要属性。它允许开发者定义应用如何处理网络连接的安全性,特别是在 Android 9.0 (API 级别 28) 及更高版本中,默认禁止明文 HTTP 流量。

3、编辑network_security_config.xml文件

android:networkSecurityConfig对应文件路径是\res\xml\network_security_config.xml 通过 network_security_config.xml 文件,可以控制以下安全特性:

  • 明文流量处理‌:决定是否允许 HTTP 明文流量
  • 证书信任‌:配置信任的 CA 证书
  • 域名特定配置‌:为不同域名设置不同的安全策略
  • 调试配置‌:仅在调试模式下启用特定安全设置 按下面编辑该文件
<?xml version="1.0" encoding="utf-8"?><network-security-config><debug-overrides><trust-anchors><!-- 信任系统证书 --><certificatessrc="system" /><!-- 信任用户证书 --><certificatessrc="user" /></trust-anchors></debug-overrides><base-configcleartextTrafficPermitted="true"><trust-anchors><certificatessrc="system" /><certificatessrc="@raw/charles_123" /><certificatessrc="@raw/fiddler" /><certificatessrc="@raw/fiddler23" /></trust-anchors></base-config></network-security-config>

‌  – debug-overrides‌:仅在 android:debuggable="true" 时生效

  • trust-anchors‌:指定信任的证书来源
  • ‌**src=”system”**‌:信任系统证书
  • ‌**src=”user”**‌:信任用户安装的证书 **文件结构解析:**‌
  1. debug-overrides部分‌:
    • 仅在应用debuggable=true时生效
    • 信任系统证书和用户安装的证书
    • 允许开发者在调试时使用Charles/Fiddler等代理工具进行HTTPS抓包
  2. base-config部分‌:
    • 全局基础配置,始终生效
    • 允许明文HTTP流量(cleartextTrafficPermitted=”true”)
    • 信任系统证书和多个自定义CA证书(@raw/开头的证书)
    • 包含多个Charles和Fiddler的CA证书,便于团队协作调试 “ 这样配置后,当应用处于调试模式时,会信任系统和用户安装的证书,从而可以使用 Charles 等代理工具进行 HTTPS 抓包。 注意:@raw/fiddler这个对应着我们复制进去的证书

设置代理 adb shell adb shell settings put global http_proxy 192.168.1.6:8080

4、APP重新打包

使用反编译工具对已经修改好的文件重新打包为APK文件

四、设置模拟器

打开雷电模拟器,把”FiddlerRoot.cer“证书拖到模拟器中安装(实际可能不需要这步,证书已经打包到了APK里面了),在模拟器的WIFI设置中,配置代理代理

服务器端口要和fidller中配置的一致。 我在其他机器上这样设置代理就可以让流量走代理,但是我这里设置没用,我使用adb命令来设置

adb shelladb shell settings put global http_proxy 192.168.1.6:8080

五、抓取https流量

把重新打包的APK文件拖到模拟器中安装,完美抓到流量

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 又一种抓取手机APP https流量的方法

评论 抢沙发

8 + 4 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮