抓包工具(如Charles)抓取Https数据包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抓包工具(如Charles)抓取Https数据包相关的知识,希望对你有一定的参考价值。
参考技术A 1、HTTPS 不是单独的一个协议,它是 HTTP + SSL/TLS 的组合;2、TLS 是传输层安全性协议,它会对传输的 HTTP 数据进行加密,使用非对称加密和对称加密的混合方式;
3、抓包工具的原理就是“伪装“,对客户端伪装成服务器,对服务器伪装成客户端;
4、使用抓包工具抓 HTTPS 包必须要将抓包工具的证书安装到客户端本地,并设置信任;
5、HTTPS 数据只是在传输时进行了加密,而抓包工具是接收到数据后再重新加密转发,所以抓包工具抓到的 HTTPS 包可以直接看到明文;
1、HTTPS 的数据是加密的,常规下抓包工具代理请求后抓到的包内容是加密状态,无法直接查看。但是,正如前文所说,浏览器只会提示安全风险,如果用户授权仍然可以继续访问网站,完成请求。因此,只要客户端是我们自己的终端,我们授权的情况下,便可以组建中间人网络,而抓包工具便是作为中间人的代理。
2、通常HTTPS抓包工具的使用方法是会生成一个证书,用户需要手动把证书安装到客户端中,然后终端发起的所有请求通过该证书完成与抓包工具的交互,然后抓包工具再转发请求到服务器,最后把服务器返回的结果在控制台输出后再返回给终端,从而完成整个请求的闭环。
HTTPS可以防止用户在不知情的情况下通信链路被监听,对于主动授信的抓包操作是不提供防护的,因为这个场景用户是已经对风险知情。要防止被抓包,需要采用应用级的安全防护,例如采用私有的对称加密,同时做好移动端的防反编译加固,防止本地算法被破解。
Charles抓包以及解决抓取HTTPS请求unknown的问题
参考技术A在 Mac 下使用 Charles 工具进行抓包,然后抓取 HTTPS 请求时,出现 unknown,无法解析的情况如何处理呢?
请继续往下看,将会详细介绍一下整个过程...
过于简单,省略一万字...
包括电脑端和手机端,这也是抓取 HTTPS 请求的关键所在。
1. 电脑端
打开 Charles,然后在菜单栏选择 Help → SSL Proxying → Install Charles Root Certificate ,将证书安装至电脑,并打开 钥匙串访问 。
证书安装后,默认是 不被信任 的,所以我们需要将其设置为信任。
在 钥匙串 中找到该证书 Charles Proxy CA ,并设置为 始终信任 ,然后保存。
这样电脑端证书就安装完成了。
2. 手机端
同样在菜单栏选择 Help → SSL Proxying → Install Charles Root Certificate on a Mobile Device or Remote Browser ,将会有以下提示。
在手机打开: 设置 → Wi-Fi → 打开所连 WiFi → 设置 HTTP 代理 → 选择手动 ,接着将 IP 地址以及端口填写进去,然后存储即可。
输入过程中,服务器一栏 . 之间可能会自动插入空格,手动删除一下。
接着打开系统 Safari 浏览器 (其他浏览器可能无法唤起安装证书的弹窗),输入地址 chls.pro/ssl 打开页面,会自动唤起安装描述文件的弹窗,选择 允许 。
紧接着,前往: 设置 → 通用 → 描述文件 → 选择对应描述文件 → 安装 。
前往, 设置 → 通用 → 关于本机 → 证书信任设置(滑到屏幕最下面) → 将 Charles 证书勾选上 即可。(PS:我截图有两个是证书是两台不同的机器)
Charles 默认是 8888 ,不占用其他服务端口情况下,不修改问题也不大,根据实际情况自行调整。
这样我们就可以愉快地玩耍了
由于 Android 机型众多,各定制系统差别也不同,安装证书在不同 Android 版本也有限制,导致在使用 Charles 进行抓包时要比 iOS 难很多。
Android 7.0 之后默认不信任用户添加到系统的 CA 证书:
换句话说,就是对基于 SDK24 及以上的 APP 来说,即使你在手机上安装了抓包工具的证书也无法抓取 HTTPS 请求。
下面提供几个链接:
以上是关于抓包工具(如Charles)抓取Https数据包的主要内容,如果未能解决你的问题,请参考以下文章