搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
从前慢现在也慢
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Android 从txt文件读数据生成曲线图_application/x-rar txt数据文件画图形曲线
2
DevEco Studio下载安装、创建项目详细教程(2024)
3
二、nginx访问路径[location]_nginx location获取路径
4
【安装】从VMware虚拟机到Centos,到FinalShell连接虚拟机,到Centos中安装docker,用Navicat Premium连接Centos中的docker中的mysql_finalshell怎么连接虚拟机
5
VSCode 连接远程 GitHub仓库 教程
6
用Spring Boot进行后端开发(二):与微信小程序的交互,在微信小程序端获取数据并显示_springboot如何实现与微信小程序前后端交互
7
Autojs 谁是卧底-炸弹猫计牌辅助_z2.tdav08.xyz
8
学习Dagger2笔记:【9】Bind系列注解_dagger.bindsoptionalof
9
人工智能2 -- 大数据时代下的机器学习导论篇_简述基于大数据的机器学习的特点
10
RK3399应用开发 | 01 - 基于ubuntu base安装桌面环境(arm64)
当前位置:
article
> 正文
如何使用Xposed+JustTrustMe来突破SSL Pinning_justrustme 安装证书
作者:从前慢现在也慢 | 2024-03-19 18:12:34
赞
踩
justrustme 安装证书
如何使用Xposed+JustTrustMe来突破SSL Pinning
本文由看雪论坛 etlpom 原创,原文链接:
https://bbs.pediy.com/thread-226435.htm
0x00 前面
如果你是一干Web安全的,当你在测试目前大多数的手机APP应用程序时,你一定遇到过burpsuite无法抓到数据包的情况,开始你以为只是https的问题,但是当你使用了burpsuite伪证书也无法抓取到时,你心里除了有句“MMP……”外,你一定也在思考这其中的蹊跷。
为什么https的网站使用伪证书可以抓到,而在app里面同样的方法就抓不到?答案是:app启用了SSL Pinning(又叫“ssl证书绑定“).
HTTPS的原理你必然懂,在建立ssl通道的过程中,当客户端向服务端发送了连接请求后,服务器会发送自己的证书(包括公钥、证书有效期、服务器信息等)给客户端,如果客户端是普通的浏览器,比如IE浏览器,则:
1. 使用内置的CA证书去校验服务器证书是否被信任,如果不被信任,则会弹出https的告警提示信息,由用户自己决定是否要继续。
2. 同样,用户也可以主动的将服务器证书导入到浏览器的受信任区,下次打开时该服务器证书将会自动被信任。
为啥中间人可以劫持https流量,以及在浏览器上我们为什么可以使用burp伪造证书,正是因为上面的2点,即:
1. 浏览器允许用户自行忽略证书告警,用户在无足够的信息安全意识时,可能会直接忽略刘浏览器的安全提示,在这篇文章的前2天以太坊钱包MyEtherWallet 就因为黑客使用“BGP流量劫持+HTTPS证书伪造“导致被干的鼻青脸肿。
2. 浏览器允许“导入证书到浏览器信任区“这个操作让浏览器信任burp伪造的证书。
这种伪造证书的中间人攻击给HTTPS带来了很大的威胁。
0x01 SSLPinning了解一下
如果能够这样做,是不是就可以解决这种“中间人劫持+伪造证书“攻击的问题:
客户端在收到服务器的证书后,对该证书进行强校验,验证该证书是不是客户端承认的证书,如果不是,则直接断开连接。
浏览器其实已经这样做了,但是如“前面”所说,选择权交给了用户,且浏览器由于其开放性允许让用户自导入自己的证书到受信任区域。
但是在APP里面就不一样,APP是HTTPS的服务提供方自己开发的客户端,开发者可以先将自己服务器的证书打包内置到自己的APP中,或者将证书签名内置到APP中,当客户端在请求服务器建立连接期间收到服务器证书后,先使用内置的证书信息校验一下服务器证书是否合法,如果不合法,直接断开。
当然攻击者也可以通过把这个APP源码给逆出来,然后找到证书校验这段逻辑,给他干掉,或者干脆把证书信息换成自己的服务器证书信息,然后重新打包签名,但是一旦APP做了代码加密和混淆,这个操作也会变得比较难搞。
因此这样看来,通过预先把服务器的证书信息“绑定“在APP的native端,然后建立连接时使用预先内置的绑定信息进行服务器证书校验,同时使用足够的代码加密或混淆,是比较合适的解决办法, 这个搞法就是“ssl pinning”.
补充:
不要将ssl pinning和https双向认证搞混了,HTTPS协议本身是支持双向认真的,既除了客户端对服务器证书进行验证外,服务器也可以要求客户端提供自己的证书信息并对其进行验证,在APP上,HTTPS双向认真的方案也可以防止中间人劫持,但这种双向认证开销较大,且安全性与”ssl pinning”一致,因此目前大多数APP都采用SSL Pinning这种方案。
0x02 使用Xposed + JustTruestMe来突破SSL pinning
如果你逆向比较在行,你就自己逆源码,然后过加密混淆,然后干掉SSL pinning。不过使用Xposed + JustTruestMe应该也不丢人。
Xposed是一个框架,它可以改变系统和应用程序的行为,而不接触任何APK。
它支持很多模块,每个模块可以用来帮助实现不同的功能。
JustTrustMe 是一个用来禁用、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查。
准备工作:
1. 准备一个有root权限的andorid手机或者andorid模拟器
使用手机装Xposed容易变砖,刷来刷去,很麻烦。个人习惯也推荐直接用andorid模拟器,现在很多andorid模拟器长又好看,广告又少,各个是人才。
本文使用网易的MUMU模拟器,下载地址:http://mumu.163.com/baidu/ 对应的andorid版本为4.4。
2. 下载Xposed的apk安装包,下载地址:
http://repo.xposed.info/module/de.robv.android.xposed.installer
在改页面找到点击下载即可,默认的版本支持Android 4.0.3 up to Android 4.4. 版本
Download:de.robv.android.xposed.installer_v33_36570c.apk (770.28 KB)
注意官方的说明,如果你的模拟器andorid版本为5.0以上,请按照如下说明操作:
For Android 5.0 or higher (Lollipop/Marshmallow), these versions don't work! Use this instead:http://forum.xda-developers.com/showthread.php?t=3034811
3. 下载JustTrustMe模块
https://github.com/Fuzion24/JustTrustMe/releases/tag/v.2
注意下载 JustTrustMe.apk版本
安装mumu模拟器
双击安装即可,自己看着办,安装完开机,就是这个样子的:
安装Xposed
点击MUMU主界面由下角的APK+图标,选择下载好的Xposed installer的apk包,即可开始安装,安装完成后,桌面会生成对应的图标,打开
第一次打开时,“框架”下面会有红色字体提示更新
不要管,点击框架,进去,点击“安装更新”,更新完成后,会提示重启,注意这个时候可能会卡死。
如果不卡死,说明你你比较厉害,点击下面的重启按钮重启。
如果卡死了,直接关闭模拟器,重新打开即可,再次进入框架页面,可以看到如下信息,则说明更新完成。
安装JustTrustMe
点击“模块”,此时还没有可用的模块, 同样的方法点击apk+导入之前下载好的JustTrustMe的apk安装包,系统会自动安装,安装完成后,在模块里面点击“软重启”,再次打开“模块”界面,即可看到JustTrustMe,勾选一下,启用这个模块:
到这里Xposed+JustTrustMe就安装和启动了。
接下来就是常规流程了:
1. 在你的MUMU模拟器所在的宿主机上打开burpsuite,并启用代理,主要使用实际的IP地址作为监听地址
2. 给你的MUMU模拟器设置一个代理,因为MUMU模拟器做了很多裁剪,默认不提供wifi配置选项,这里可以下载一个wifi万能钥匙,然后通过它呼唤出wifi设置界面:打开wifi万能钥匙---未登录---设置---设置为wifi管理器---立即设置,即可看到如下选项,选择wlan,进入wifi设置选项
鼠标左键长安“WiredSSID”这个ssid名词,会弹出如下选项,选择修改网络,进入代理配置页面
把代理选项配置成burp监听的代理地址,保存即可。
到这里你一定会想,这个MUMU模拟器到底用的的是什么方式与你的宿主机进行通信的,你可以使用adb shell来看一下,adb是一个连接andorid的命令行工具,windows下的安装和使用请自行GOOGLE。Mac下的安装和使用:
1. brew cask install android-platform-tools //安装adb工具
brew类似linux下的yum,不会用的自己google.
安装完成后,运行:adb shell 即可连接到mumu虚拟机
$ adb shell
cancro:/ #
cancro:/ #
cancro:/ #
在这里可以使用大多数的linux命令,必然ls,vi等,查看IP地址使用:netcfg
通过查看ip地址以及ping命令测试,可以发现mumu虚拟机是通过127.0.0.1进行桥接到宿主机的,因此可以直接使用宿主机的IP地址进行代理。
3. Xposed+JustTrustMe只是解决了SSLpinning的问题,因为通讯本身是HTTPS的因此我们还是需要安装burp伪证书,直接导出burp的证书,因为默认格式是.cer的,andorid不支持,需要将这个证书先导入到浏览器在导出成.pem(x509)格式,然后在MUMU模拟器的设置---安全—从SD卡安装证书,通过MUMU的提供的共享文件夹将证书选择到安装即可,中间需要提示开启PIN码认真,开启一下即可。
到这里,你必然可以抓到启用了SSL pinning的APP的HTTPS的数据包了。
#在网上找了一些资料,都写的不够完整,昨晚自己折腾了一下,算是一个笔记。劳动节快乐#
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/268343
推荐阅读
article
在
Flutter
中创建
自定义
的左
对齐
TabBar
组件...
在
某些情况下,我们希望
TabBar
的标签
在
水平方向上左
对齐
,而不是默认的居中
对齐
。例如,当我们有一个较宽的屏幕,并且希望...
赞
踩
article
远程
桌面
时
连接
不上
远程
计算机
是什么
问题
_
远程
桌面
连接
不上
远程
计算机
...
像是使用德迅云安全的服务器,是可以在控制台通过设置安全组功能,做指定IP
远程
访问,其他未指定的本地IP是无法
远程
连接
到服...
赞
踩
article
Flutter
-
自定义
表情
雨
下落
动画...
gpt第一次回答你的代码其实已经告诉你实现思路了,比如上面的代码,通过gpt的回答我们知道可以使用Stack控件,然后在...
赞
踩
article
oracle
日期
排序
语句
,
oracle
先
排序
再
分页
_
oracel
中对
时间
排序
并
分页
...
Oracle
排序
分页
查询和MySQL数据库的语句还不一样,这里做简单的记录。按操作
时间
排序
1SELECT A.*
,
RO...
赞
踩
article
vue3
h5
跳转到小程序,
h5
分享
微信
自定义
标题和图标_
app
分享
到
微信
的
h5
链接转发
自定义
标题...
配置
微信
sdk需要的方法和组件updateAppMessageShareData、updateTimelineShare...
赞
踩
article
关于
Rust
...
内存安全:
Rust
使用所有权、借用和生命周期的概念来确保内存安全,避免了常见的内存错误,如空指针和数据竞争。系统编程:R...
赞
踩
article
计算机视觉——
相机
标定
...
目录简介一、
相机
模型1.坐标系2.坐标系变化3.
相机
畸变模型二、
相机
标定
原理 三、张正友黑白棋盘格
标定
2.1.算法思想2...
赞
踩
article
【
网络安全
】
IDS
IPS
H
IDS
N
IDS
_主机ips
hids
...
IDS
,全称为入侵检测系统(Intrusion Detection System),主要关注网络流量的监控,通过分析数据...
赞
踩
article
vue
,
用户
从进入
页面
到
离开
页面
,统计
用户
停留
页面
的浏览
时长
_
vue
怎么判断
用户
是否
离开
...
data() { return { browseTime: 0, // 浏览
时长
初始值为 0 clearTimeSe...
赞
踩
article
Oracle
优化
11-
10046
事件...
思维导图
Oracle
优化
10-SQL_TRACE解读
Oracle
优化
11-
10046
事件
10046
事件概述上一篇博文中我...
赞
踩
article
矩阵
及
矩阵
快速
幂...
矩阵
是一个由实数组成的长方形集合。行数和列数相等的
矩阵
叫做方阵。下面就是一个方阵。
矩阵
及
矩阵
快速
幂 ...
赞
踩
article
ORACLE
-安装PL/SQL
develop
er连接
oracle
数据库
_pl/sql develo...
ORACLE
-安装PL/SQL
develop
er连接
oracle
数据库
1. 下载Instant ClientOracl...
赞
踩
article
Flutter
系列--
Row
属性_
flutter
row
的
宽度
...
mainAxisSize: 表示
Row
在主轴(水平)方向占用的空间,默认是MainAxisSize.max,表示尽可能多...
赞
踩
article
OSSEC
-
hids
主机
入侵
检测
系统概述_
ossec
hids
...
随着国家对网络安全的重视,国内各个企业也开始在安全方面增加投入,我们公司也不例外。作为防守方,实时了解主机状态(主机文件...
赞
踩
article
flutter
开发中遇到的问题总结_
expanded
singlechildscrollview
c...
文章目录
flutter
Error: Could not resolve the package ‘characters...
赞
踩
article
Magisk
+
Riru
版和
Zygisk
版
LSPosed
安装
_
riru
模块...
Magisk
+
Riru
版和
Zygisk
版
LSPosed
安装
_
riru
模块
riru
模块 #环境地址...
赞
踩
article
php
通过GD
库
实现
验证码
_
文字
验证码
可以显示多个
gd
库
...
首先看看
实现
的效果:再来看具体
实现
:vertify.
php
php
verifyImage();//通过GD
库
实现
验证码
...
赞
踩
article
关机
小
程序
(C
语言
版)_
c
语言
关机
代码
...
1.
程序
实现的功能2.
代码
实现3.细节讲解。_
c
语言
关机
代码
c
语言
关机
代码
目录 1.
程序
实现的...
赞
踩
article
在
微信
打开
H5
,
点击
右上方
(
三个
点)
分享
到
微信
好友
,
设施
分享
的
标题
,
图片和描述
_
微信
内
打开
h5使用三...
在
微信
打开
H5
,
点击
右上方
(
三个
点)
分享
到
微信
好友
,
设施
分享
的
标题
,
图片和描述
_
微信
内
打开
h5使用
三个
点
分享
微信
内
打开
h...
赞
踩
article
网络
协议
之
ARP
协议
解析
_
以太网
与
arp
协议
分析头歌...
ARP
协议
简介
ARP
(Address Resolution Protocol) 是个地址
解析
协议
。最直白的说法是:在...
赞
踩
相关标签
flutter
php
开发语言
数据库
小程序
微信
vue
rust
后端
计算机视觉
几何学
人工智能
安全
网络
网络安全
javascript
oracle
优化
10046事件
矩阵
c++
plsql
运维
服务器