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

这篇具有很好参考价值的文章主要介绍了Fiddler利用Edxposed框架+TrustMeAlready来突破SSL pinning抓取手机APP数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

在使用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框架。
 

二、证书锁定

证书锁定(CertificatePinningSSL 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

trustmealready,ssl,https,服务器

 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

trustmealready,ssl,https,服务器

大部分的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

trustmealready,ssl,https,服务器

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

11、fiddler配置

trustmealready,ssl,https,服务器 trustmealready,ssl,https,服务器

 12、手机配置

1、wifi配置

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

trustmealready,ssl,https,服务器 trustmealready,ssl,https,服务器

 2、证书下载

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

trustmealready,ssl,https,服务器 trustmealready,ssl,https,服务器

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

trustmealready,ssl,https,服务器

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

trustmealready,ssl,https,服务器

抓包成功

trustmealready,ssl,https,服务器

 13、系统代理检测

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

/*
* 检测代理
* 目前仅限OkHttp发出的请求
*/
switch_check_proxy.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public 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,切换到“設置”(左右滑动切换),选择“無線網絡”

trustmealready,ssl,https,服务器trustmealready,ssl,https,服务器

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

trustmealready,ssl,https,服务器

设置代理的ip地址和端口

  trustmealready,ssl,https,服务器

返回到日志,运行。

trustmealready,ssl,https,服务器

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

方式二

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

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

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

trustmealready,ssl,https,服务器

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

trustmealready,ssl,https,服务器

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

 trustmealready,ssl,https,服务器

 常见错误提示

400 No required SSL certificate was sent

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

trustmealready,ssl,https,服务器

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

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

https://download.csdn.net/download/u014644574/87149375文章来源地址https://www.toymoban.com/news/detail-795203.html

到了这里,关于Fiddler利用Edxposed框架+TrustMeAlready来突破SSL pinning抓取手机APP数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安卓渗透指南(二)-Kitsune Mask模块 绕ssl pinning,绕root检测,绕system动态分区

    安卓版本大于11,root之后,system分区无法操作,这让我们把证书安装到根目录泡汤了。现在装上这几个模块,可以绕ssl pinning,绕root检测,绕system动态分区,让抓包不在困难。 一台成功刷入狐狸面具(Kitsune Mask)的手机 magic_overlayfs LSPosed JustTrustMe TrustMeAlready https://github.com/

    2024年03月22日
    浏览(62)
  • 突破限制利用虚拟网轻松聊QQ的方法

    大家都知道在现在生活中,QQ是我们使用最多的交流工具,但是在一些公司或单位里,领导们以上班时间聊天影响工作为由命令网管采取各种手段 封杀QQ ,使得我们这些QQ迷们不能方便的与好友进行交流。其实不管采取何种手段,都得允许正常的网页浏览,这样我们就完全有

    2024年02月06日
    浏览(37)
  • 突破市场壁垒:如何利用关键词采集和市场调查找到你的细分市场?

    在市场竞争日益激烈的今天,寻找一个适合自己的细分市场成为了每个企业和创业者的必要之举。然而,许多人在寻找细分市场时陷入了困境,不知道如何找到一个符合自己产品的市场,因此,在这种情况下,利用采集和市场调查成为了一种非常有效的方法。本文将从

    2023年04月20日
    浏览(36)
  • 利用OpenSSL 自签CA证书制作链式SSL证书

    本文描述的是利用自签CA制作链式证书的步骤,主要是制作中间证书的关键步骤。 目前CA证书基本均为链式证书,其主要目的是利用中间证书的特性,既可以保护根证书的密钥安全性,又可以方便进行吊销操作。 0x00 制作根证书密钥(root.key): 参数含义: genrsa:  生成RSA密钥

    2024年02月11日
    浏览(40)
  • SSL/TLS 介绍以及如何利用openssl生成证书

    SSL:Secure Socket Layer 安全套接字层。 TLS:Transport layer Security 传输层安全性,是一种加密协议。 到2020年,SSL以及TLS1.0,TLS1.1已被弃用 Authentication:通信双方可以确认双方的身份,不被黑客拦截信息伪造身份。 Confidentiality:通信的内容经过加密,更加安全,不被授权的用户无法识别

    2024年02月04日
    浏览(46)
  • 利用SSL证书的SNI特性建立自己的爬虫ip服务器

    今天我要和大家分享一个关于自建多域名HTTPS爬虫ip服务器的知识,让你的爬虫ip服务器更加强大!无论是用于数据抓取、反爬虫还是网络调试,自建一个支持多个域名的HTTPS爬虫ip服务器都是非常有价值的。本文将详细介绍如何利用SSL证书的SNI(Server Name Indication)特性来自建

    2024年02月10日
    浏览(32)
  • OkHttp网络框架深入理解-SSL握手与加密

    由Square公司贡献的一个处理网络请求的开源项目,是目前Android使用最广泛的网络框架。从Android4.4开始HttpURLConnection的底层实现采用的是OkHttp。 特点: 支持HTTP/2并允许对同一主机的所有请求共享一个套接字 通过连接池,减少了请求延迟 默认通过GZip压缩数据 响应缓存,避免了

    2024年02月08日
    浏览(34)
  • 详细SpringBoot框架教程——SpringBoot配置SSL(https)

    本篇文章主要内容 SpringBoot配置SSL(https) SpringBoot全局异常处理 SpringBoot 404页面处理 SpringBoot可以通过在application.properties或application.yml配置文件中配置各种server.ssl.*属性来声明性使用SSL(https),比如下面的例子在application.properties中设置SSL属性: 如果使用了上面的配置就表示

    2023年04月09日
    浏览(30)
  • 基于netty框架不使用SSL证书,实现websocket数据加密传输

    1、简介 2、实现方式 3、服务端主要代码 4、客户端主要代码 5、调用方式 为什么不使用SSL证书? 1、服务器运行在专网环境,不能访问互联网。证书有有效期,CA机构规定,证书有效期最多2年。在客户的专网环境里更新和维护证书就会增加运营成本。 实现逻辑? 参照SSL的实

    2024年02月04日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包