一、背景

在使用fiddler做代理抓取应用数据包时,如果要抓取到HTTPS数据,需要将fiddler证书导入到浏览器或手机。
浏览器或手机设置好fiddler的代理地址,即可抓取到https数据包。

如果APP应用采用证书锁定后,将无法抓取到https数据,因为此时APP应用校验证书不通过,通常APP应用会断开网络连接,防止网络传输数据被抓取。

自从android 7.0之后xposed的开发者rovo89基本就不维护了,针对android 8.0的版本草草发布了一个测试版本撒手不管了。

现在越来越多的新机型出厂就是android 9.0系统,那么怎么才能继续使用xposed框架呢?

xposed虽然死了,但是还有后来的Edxposed框架,Edxposed全称 Elder driver Xposed Framework,简称edxp。

Edxposed框架现在支持android 8.0 -android 9.0 ,如果是android 7.0或更早的版本,推荐使用xposed框架。

二、证书锁定

证书锁定(CertificatePinning或SSL Pinning),即HTTPS的证书校验。HTTPS库在接收到证书以后,对证书进行校验,确保其跟自己保存的本地证书或硬编码数据相同,才可放行。否则视为被中间人监听,拒绝通信。

三、绕过证书锁定

绕过证书锁定,可使用xposed框架下的两大神器来突破证书锁定。使用JustTruestMe就可以绕过证书锁定。
前提是手机已ROOT并且安装好xposed框架。

四、Magisk手机ROOT

https://github.com/topjohnwu/Magisk/releases

版本:Magisk-v25.2.apk

教程:https://blog.csdn.net/u014644574/article/details/123501668

5、安装Riru

https://github.com/RikkaApps/Riru/releases

版本:riru-v25.4.4-release.zip

复制zip文件到手机,在 Magisk 模块界面点击从本地安装,选择 zip 模块文件,安装后重启手机。

6、安装EdXposed框架

https://github.com/ElderDrivers/EdXposed/releases

版本:EdXposed-v0.5.2.2_4683-master-release.zip

复制zip文件到手机,在 Magisk 模块界面点击从本地安装,选择 zip 模块文件,安装后重启手机。

7、安装EdXposedManager

https://github.com/ElderDrivers/EdXposedManager/releases

版本:EdXposedManager-4.6.2-46200-org.meowcat.edxposed.manager-release.apk

8、安装TrustMeAlready

https://github.com/Fuzion24/JustTrustMe/releases

版本:JustTrustMe.apk

我测试时使用 JustTrustMe 并没有成功,使用 TrustMeAlready 后成功。

https://github.com/ViRb3/TrustMeAlready/releases

版本:TrustMeAlready-v1.11-release.apk

安装好TrustMeAlready后,打开EdXposedManager的模块,勾选启用TrustMeAlready

大部分的app都可以用此方法解决ssl-pinning检测,不过有少部分app可能依然抓不到,需要专门去逆向app找ssl-pinning逻辑并解决。

9、测试代码后端源码

https://gitee.com/gloweds/myhttps

    //https请求:https://192.168.137.1:8443/hello?name=123@GetMapping("/hello")public String hello(String name) {return name;}

该代码涉及到的ip需要替换成自己的ip地址,该代码使用的https单向验证。

测试发现,当信任所有证书,https变得毫无意义,中间人可以随意抓取数据。

10、测试代码移动端源码

https://gitee.com/gloweds/httpsapp

打包后app:https://gitee.com/gloweds/httpsapp/raw/master/app/release/app-release.apk

测试时,将ip地址改成自己的ip,点击https按钮就行了。

11、fiddler配置

 

12、手机配置

1、wifi配置

手机与电脑连接同一wifi,或者手机连接电脑热点。我这里手机连接的电脑热点。

 

2、证书下载

手机浏览器输入上面的配置的地址:http://192.168.137.1:8888

 

小米手机在,设置 》密码、隐私与安全 》 系统安全 》加密与凭据 》信任的凭据

若要删除fiddler证书:
小米手机在,设置 》密码、隐私与安全 》 系统安全 》加密与凭据 》信任的凭据 》用户凭据

抓包成功

13、系统代理检测

除了校验HTTPS证书防止中间人抓包以外,常见的方法还有通过检测系统代理防止抓包,其原理是检测到设备开启系统代理后,APP中通过代码实现禁用代理,以OkHttp框架为例,示列代码如下:

/*
* 检测代理
* 目前仅限OkHttp发出的请求
*/
switch_check_proxy.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if(isChecked){client = new OkHttpClient().newBuilder().proxy(Proxy.NO_PROXY).build();}else {client = new OkHttpClient();}}
});
}

很多APP中会设置如下检测,我就知道一款app被检测出代理就被直接重新转发到一个固定的ip:127.0.0.1:7000

String proxyHost = System.getProperty("https.proxyHost");
String proxyPort = System.getProperty("https.proxyPort");
if(!TextUtils.isEmpty(proxyHost)){return new Proxy(Proxy,Type.HTTP, new InetSockerAddress(proxyHost, Integer.parseInt(proxyPort)))
}

为了绕过系统代理检测,可以使用iptables对请求进行强制转发或使用Proxy Droid,ProxyDroid全局代理工具就是通过iptables实现的,所以使用ProxyDroid开启代理,可以比较有效的绕过代理检测。手机root后,使用Proxy Droid 或Postern实现强制全局代理,让ssl代理证书生效,proxy Droid可以在UpToDown,ApkHere等的地方下载

另外一款软件Drony 不需要root,也不需要手机在 wifi 里设置代理。可以通过该 app 直接指定目标 app 才走代理,对其他 app 不可见

Drony镜像下载地址:https://www.apkmirror.com/apk/sandrob/drony/

Drony设置

Drony英文翻译成繁体、简体对比如下:
LOG(日誌):日志
SETTINGS(設置):设置
Wi-Fi(無線網絡):无线网络
Proxy type(代理類型):Manual(手冊/手動/手动)
Hostname(主機名):ip地址
Port(端口):端口
Filter default value(過濾默認值):Direct all(引導全部/直连全部不做任何处理),也可以选择Deny all拒絕全部
Rules(規則):规则
Action(行動):Local proxy chain(本地代理鏈全部)
Application(應用程序):应用程序

Filter default value(過濾默認值)是全局拦截设置,Rules(規則)是局部设置。
Rules(規則)的优先级高于Filter default value(過濾默認值)全局设置。
假如全局设置为直连,局部设置某个app为拒绝,那这个app所有请求都会被拒绝。
假如全局设置为拒绝拦截所有请求,局部设置某个app为直连,那这个app所有请求都会放行不会拦截。

方式一

打开Drony,切换到“設置”(左右滑动切换),选择“無線網絡”

选择电脑热点,或者一个wifi(手机和电脑都要连在这个wifi下)
我这里手机连接的电脑热点,选择电脑热点。

设置代理的ip地址和端口

返回到日志,运行。

这样设置默认全都都有走代理。

方式二

基础设置和方式一相同,多加如下配置

点击“過濾默認”,全局设置。

Filter default value(過濾默認值)是全局设置。
Direct all(引導全部):就是直连,转发,不做任何处理。
Deny all(拒絕全部):拒绝所有请求,在局部处理,防止不必要的请求干扰。我推荐这种。

点击“規則”,新增局部设置。

设置局部处理方式。
拒绝所有:拦截所有请求。
引導所有:直连,所有请求都放行,不做任何处理。
本地代理鏈全部: 所有请求,都会转发到代理ip和端口处理,也就是转发fiddler处理。

常见错误提示

400 No required SSL certificate was sent

这个错误是双向认证,请求没有携带客户端证书,

这种要逆向app,一般在证书放在assets目录下,还需要动态调式找出客户端证书密码

涉及到的安装包,打包下载

https://download.csdn.net/download/u014644574/87149375

Fiddler利用Edxposed框架+TrustMeAlready来突破SSL pinning抓取手机APP数据相关推荐

  1. Python爬虫+夜神模拟器+Fiddler抓取手机APP数据接口 -- 图文教程(霸霸看了都说好)

    Fiddler的抓包原理 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改. 代理就是 ...

  2. 使用Fiddler抓取手机APP数据包--360WIFI

    使用Fiddler抓取手机APP流量--360WIFI 操作步骤: 1.打开Fiddler,Tools-Fiddler Options-Connections,勾选Allow remote compu ...

  3. fiddler抓取手机app数据(手机开热点)

    一.准备工作 1. 下载并安装fiddler抓包工具.手机提前安装好fiddler证书,这个可以看以往的文章 二.手机配置 手机打开热点,电脑连接成功后 1.首先需要知道电脑ip地址.电脑ip地址可通 ...

  4. Fiddler利用Xposed框架+JustTrustMe抓取手机APP数据

    文章目录 1. Xposed安装 2. JustTrustMe安装 3. 确保Fiddler在模拟器里配置 此文只是针对Fiddler抓取APP数据失败情况下的方案,主要想解决的是安卓手机APP抓包H ...

  5. fiddler抓取手机APP数据

    1.下载fiddler Fiddler官网下载地址:http://www.fiddler2.com/fiddl 2.安装fiddler 安装过程就是下一步下一步最后完成即可,安装好了以后需要配置一些内 ...

  6. Fiddler抓取手机APP数据包

    https://my.oschina.net/jhao104/blog/605963 第一步:下载神器Fiddler,下载链接: http://w.x.baidu.com/alading/anquan ...

  7. 用Fiddler抓取手机APP数据包

    Fiddler下载地址 1.允许远程连接 2.允许监听https 3.重启Fiddler 这步很重要,不要忘了 4.手机配置 用ipconfig命令查询当前PC的局域网IP 将手机连接上同一个WIFI ...

  8. 爬虫进阶:使用fiddler抓取手机app数据

    前期准备 手机安装了豆果美食app,安装了fiddler证书,WLAN做了手动代理,手机与电脑在同一局域网下 实战开始 打开手机,发现请求已经在更新了,我们只需要找就可以了,我们要的数据其实有一定特点 ...

  9. 非常【刑】又可【拷】的fiddler抓包实战 涵盖使用教程/下载安装/抓取手机app

    Fiddler是一款非常强大的网络抓包工具,可以帮助我们分析HTTP/HTTPS协议的流量,从而深入了解网站的运行机制,发现安全风险和性能问题.下面是Fiddler工具的基础使用方法. 视频教程:非常 ...

最新文章

  1. jvm十二:自定义类加载器
  2. LetCode: 227. 简单计算器2
  3. FATAL ERROR in native method: JDWP No Transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_IN,ec
  4. 【Centos】修改系统字符集
  5. 【智能汽车与自动驾驶】
  6. 网易2019实习生招聘题目 被3整除
  7. 电影《麦田》的外景地其实是呼伦贝尔
  8. 解决RM删除没有释放空间问题
  9. 一探即将到来的 C# 10
  10. java类的加载顺序题目_Java 类的加载顺序(题)
  11. jackson框架java反序列化漏洞_Jackson CVE-2019-12384: 反序列化漏洞复现
  12. ffmpeg 推流命令记载
  13. appium for java教程_Java教程:Appium环境搭建
  14. 服务器虚拟化 可靠性,质疑:虚拟化真的可以提高系统可靠性吗
  15. 【寒假每日一题2022】acw1934. 贝茜放慢脚步【二路归并】
  16. 论文格式要求及字体大小
  17. 剑指offer 手刷python 汇总整理版本~
  18. 快速把PDF文档里的表格粘贴到excel的方法
  19. PRML笔记:1-介绍
  20. 基于python开发的DIY宠物桌面系统(附源码)--可自定义修改

热门文章

  1. 在内核目录中编译驱动与Kconfig
  2. 【转载】JAVA知识点集锦(上)
  3. flex与布局(基本网格布局、百分比布局、一侧固定一侧自适应、圣杯布局)
  4. WV.33-电阻并联
  5. 硬盘数据丢失怎么办?一招轻松恢复硬盘数据!
  6. java开发之服务器端开发
  7. 电子招标采购系统:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
  8. ubuntu18.04 (melodic)cartographer安装(详细)
  9. android平台的蝙蝠侠游戏有哪些,《蝙蝠侠》是最好的游戏?盘点蝙蝠侠7大真正实力...
  10. NFT Insider #45:游戏巨头育碧与 The Sandbox 达成合作,YGG SEA战略投资 Dappie Gang