关于代理抓包,ssl pinning解决方案

2023-11-03

**

详情见我的博客小生博客

**

抓包

代理抓包

Fiddler, charles能抓http/https/websocket属于应用层

优点:配置简单,抓取解析ssl方便

缺点:app对代理抓包的检测越发厉害

https:

http是明文传播,易被修改,易被拦截,网页弹广告

https实在http基础上加了一个安全层

https特点:

  • 数据加密,不再明文传播
  • 使用数字证书(CA Certificate Authority)做身份校验,防止数据被截获,只有合法证书持有者才能读取数据
  • 数据完整性,防止数据被篡改,对数据做签名

HTTP OVER SSL传输数据要先SSL加密处理
ssl握手协议
先商量好加密方式
交换证书
用证书加密
正式开始发送数据(用证书来给数据加密)

SSL层握手协议

  • 1.Client Hello 发给服务端:一串随机数 和 客户端支持哪些加密算法 一般是RSA加密
    2.Server Hello 回客户端:一串随机数 和 确定使用哪种加密算法
    3.Certificate: 服务端把要公匙证书发给客户端
    4.Client key Exchange: 客户端把自己的证书又发给服务端
    5.Session Ticket:开始传输数据/用key 给http数据加密 传输给服务端

代理抓不到包的几种原因

请求没有走代理

可以设置走自己代理,安卓系统会优先走APP设定的代理
http.route.default-proxy

判断方法

如何判断没有走我们的代理:
设置wifi代理后 关闭fiddler 如果APP还能正常访问 就是不走代理

解决方法:

ProxyDroid APP 全局代理 强制把IP转发到指定端口上
原理: 使用 iptable 命令 实现端口转发
mumu虚拟器iptable 会报错
案例:mm应用市场

ssl pining(ssl证书验证) 目前大部分是这种导致抓不到包

APP对服务端证书做校验 校验服务器的证书和域名。/这也叫单向认证
Fiddler/Charles等的证书肯定是校验不过的
回看 中间人攻击 图解 和 SSL层握手协议
APPssl pining的几种方式:
举例Python requests库对ssl的校验
requests.get(url, timeout=1, verify=false)

Python

requests
urllib
urlib3
aiohttp

Java的几种网络请求方式

HttpsURLConnection
okhttp
webview ssl pinning
Native SSL

ssl pinning解决办法:

部分 ssl pinning 失效的原因:

Hook 失败,APP的网络请求库代码被混淆,或者大厂自己实现了一套网络请求库

解决办法:

逆向APP,找到证书验证的地方,修改xposedjusttrustme 或者 fridaDroidSSLUnpinning 代码,
重新Hook

双向认证 使用者很少,会影响服务器性能

客服端对服务端发来的证书做校验
真实的服务端也对客服端证书做校验

双向认证解决办法:

客服端校验任然使用SSL unPinning方法
服务端校验,需把APP里的证书导入到代理抓包软件中,让代理抓包工具使用真实的APP证书。charles 比较方便
配置

如何找到APP里的证书

反编译APPassert文件夹里有.p12 .pem之类文件cer ssl
反编译后,在源代码里大量搜索
Hook 监听Assert文件夹 知道读了哪些文件
可能有密码 Hook java.security.KeyStore 查看密码

Wireshark

不需要对客服端做改变(设置代理IP),是对网卡抓包
能抓传输层/网络层 抓TCP
抓经过网卡的所有TCP

跟代理抓包的区别
如何抓手机上的数据:
在电脑上开wifi热点,手机联电脑的wifi热点,共用一个网卡
360wifi热点 http://wifi.360.cn/easy/pc/
安卓虚拟机可以直接抓包,不需要热点

抓包过滤wireshark

演示wireshark 如何过滤数据包
根据目的IP抓包
ip.dst == 192.168.0.1
ip.addr == 192.168.0.1
按端口过滤
tcp.port == 80
tcp.port == 443
按协议过滤
ssl
关联过滤
ssl and ip.addr

特点:

https需要把ssl证书导入到wireshark,不然没法解析https,这个操作难度较大
tcp以上的数据都能抓,http/https/socket

Hook 域名 把https 改成 http

app强行发http包,请求会失败,抓不到response数据,但是能抓到请求包
通用性太差

Hook网络请求库

请求前打印出请求参数,响应后打印出返回数据

注意事项:

1.安卓7.0(包括7.0)以后,安卓系统不再信任用户安装的证书。(例如 fiddler/charles的代理抓包证书) mumu
模拟器

解决7.0以后用户证书不信任问题两种方法:

(1)root手机,把代理证书放到系统证书根目录下
用户CA证书目录
/data/misc/user/0/cacerts-added
系统CA证书目录
/system/etc/security/cacerts
问题:
有的手机root /system 分区是只能读 仍然不能把证书放到系统根目录, 比如魅族pro5
df 命令
mount -o rw,remount /system
(2) hook 系统方法,强行让系统信任用户证书:
比如:使用xposed框架的justtrustme模块 和 fridaDroidSSLUnpinning

技巧:

1.优先使用安卓系统低版本抓包
优先使用安卓4.0 5.0 6.0抓包
2.优先使用APP低版本抓包
比如微信7.0以下 在安卓4.0-6.0上 容易抓包微信小程序
优先使用能用的APP最低版本

APP历史版本:
https://wap.pp.cn/
apkpure.com
当安卓抓包很艰难时,试试iOS抓包

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于代理抓包,ssl pinning解决方案 的相关文章

随机推荐

  • unity学习之怪物名称血条

    欢迎来到unity学习 unity培训 unity企业培训教育专区 这里有很多U3D资源 U3D培训视频 我们致力于打造业内unity3d培训 学习第一品牌 人物的名称与血条的绘制方法很简单 但是我们需要解决的问题是如何在3D世界中寻找合适
  • JVM调优工具总结(jConsole jmc jvisualvm)

    一 环境准备 centos7服务器一台 安装jdk1 8 一个可运行java的jar包 最好是有个服务器运维工具 我用的是宝塔面板 主要是用来开放端口 当然你是用命令开放也可以的 本地win10上安装jdk1 8 二 启动 1 将jar包放
  • 最易懂得 鸿蒙 实战 - 真机调试 原子服务

    升级到3 0 ide后 增加一些sdk 更新速度还是很快 广告也开始鸿蒙标识了 看来华为大动作很快 另外 体验了华为m6的超级终端 还是被震撼一下 速度上 性能上确实是万物互联的感觉 鸿蒙的动态效果 确实有点自己独有味道 但是缺少独特性 反
  • 前馈神经网络(一 神经元)

    声明 本文是博主在学习前馈神经网络时的笔记 仅供学术交流 非商用 内容可能涉及一些大佬的资料 包含网上电子的和实体书籍等 由于学习工程中查阅的资料多而杂 所以每一部分具体的参考资料并没有详细对应 如有侵权 还望海涵 并联系博主删除 本人才疏
  • apache编程思想--挂钩(HOOK)

    如果让你自己编写一个web服务器你会怎么设计 我曾经使用java语言实现了一个最简单的web服务器 我的做法是应用一个socket类启用去监听一个特定的端口 并根据http协议标准去解析这样一个长串 POST reg jsp HTTP CR
  • PHP代码导航编辑 PhpStorm 2022中文

    PhpStorm 2022提供最优秀的代码补全 重构 实时错误预防等等功能 能够为程序员提供更为效率的php开发 新版本改进了phpstorm软件的自动完成功能 还增加了代码清理工具 可以删除不必要的部分来优化全类名称 从而更好的提高用户的
  • sql计算用户留存率和时间留存率

    Sql 29 计算用户的平均次日留存率 题目 现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率 请你取出相应数据 解法1 表里的数据可以看作是全部第一天来刷题了的 那么我们需要构造出第二天来了的字段 因此可以考虑用left jo
  • Android 打包Jar(发布SDK)常见问题及解决方案

    在Android开发过程中 我们经常会有这种需求 需要将自己开发一个类库打包成jar包以供他人 其他人一般指开发者 调用 而不是直接打包apk文件供最终用户使用 在打包成jar后 你往往会自己先测试一下看jar包能不能直接使用 这时就会常常
  • mac下ssh报错:ssh_exchange_identification: read: Connection reset by peer

    1 美图 2 背景 base lcc lcc hadoop 2 7 4 sh sbin stop all sh This script is Deprecated Instead use stop dfs sh and stop yarn
  • Ant Design Pro入门之部署安装

    部署安装 下载地址 https github com ant design ant design pro 我们使用资料中提供的 已经下载好的文件 ant design pro master zip 第一步 将ant design pro m
  • VSCode 无法更新插件 XHR timeout error 解决办法

    注 本方案仅为XHR timeout error错误的其中一种解决方案 作者使用此方法修改后更新成功 但不保证对于所有的XHR Timeout Error错误 使用此方法后可解决问题 另注 依评论区要求 现已上传修改windows授时服务器
  • 为什么实时时钟的晶振都是32.768KHZ呢

    原来我也只知道实时时钟就应该用32 768KHZ的晶振但不知道为什么 今天突然想知道为什么就查了查 搞懂了 写下来 为了积累 为了分享 1 振荡电路用于实时时钟RTC 对于这种振荡电路只能用32 768KHZ 的晶体晶体被连接在OSC3 与
  • OpenWrt 快速入门(源码目录)

    文章目录 1 OpenWrt 优点 2 OpenWrt 版本发展 3 OpenWrt 源码 缩略语 Acronyms and Abbreviations OpenWrt Wrt Wirless Router 官网 www openwrt o
  • Namomo Test Round 2 C 序列

    题意 给定一个长度为 n n n的序列 a a a 每次可以选择 l
  • Python报错合集(1)

    1 slice None None None 0 is an invalid key X train X test y train y test train test split X resampled y resampled test s
  • MySQL启动过程中的问题

    1 创建my ini 进入MySQL的安装目录 创建配置文件my ini配置文件 写入内容 mysql 设置mysql客户端默认字符集 default character set utf8 mysqld 设置3306端口 port 3306
  • easyExcel设置水印

    1 依赖导入
  • Linux命令入门教程(五):系统管理篇

    Linux系统管理 包括权限管理 网络配置 软件安装 各类参数设置 开关机 系统运行状态等 5 1 权限管理 在linux系统中 用户类别有超级用户和普通用户 只有一个超级用户root 普通用户可以有多个 最根本的区别就是权限不同 在lin
  • iOS17可以更新了!网友实测炫酷值拉满,但续航嘛…

    丰色 发自 凹非寺量子位 公众号 QbitAI iOS 17终于来了 今天凌晨正式推送 有数码博主评价 实用性不高 但酷炫值拉满 旺柴 可以说是一句话概括了 不过有测评发现 更新后续航掉依然的厉害 特别是iPhone XR 可得谨慎了 还登
  • 关于代理抓包,ssl pinning解决方案

    详情见我的博客小生博客 抓包 代理抓包 Fiddler charles能抓http https websocket属于应用层 优点 配置简单 抓取解析ssl方便 缺点 app对代理抓包的检测越发厉害 https http是明文传播 易被修改