Charles抓包工具使用

news/2024/9/27 14:06:09

Charles客户端下载

官网地址:https://www.charlesproxy.com/download/

选择适合自己的系统版本下载(这里我选择Windows):

image.png

下载完成后激活

激活网站地址:https://www.zzzmode.com/mytools/charles/

image.png

image.png

打开Charles:

image.png

image.png

打开安装好的Charles,菜单栏 Help->Register Charles 弹出注册的窗口填入Registered Name和生成的license key,点击 Register。

Right On!注册成功

image.png

Charles 配置

打开Charles,先安装证书并且信任

image.png

证书下载好之后,找到证书文件,双击进行安装证书(I),将其安装到【受信任】目录中,出现信任选项,点击始终信任即可。

可以看到当前证书不被信任

image.png

image.png

image.png

image.png

image.png

image.png

点击完成后提示导入成功。此时需要重新进入Help -> SSL Proxying -> Install Charles Root Certificate,查看证书结果,成功时如下提示:

image.png

证书状态显示:该证书没有问题就表示导入成功了。

设置SSL,保证可以抓取https协议的请求:

image.png

image.png

点击OK,添加信息。

查看某一个端口是否被占用

netstat -ano | findstr "8080"

image.png

image.png

image.png

工具栏展示:

image.png

什么是证书?为何需要证书?

首先明确一点,安装证书的目的是为了是的抓包工具可以抓取https协议的请求。

抓包的定义?

  1. 抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作
  2. 用来检查网络安全。也经常被用来进行数据截取等。

对HTTP请求进行抓包

对于HTTP协议,因为本身就是明文传输,所以可以直接看到数据报文,除非对这些明文在传输时进行二次加密,但那是另一种情况,这里暂不分析。

对HTTPS请求进行抓包

对于双向加密的HTTPS,正常情况下,即使能以中间人的方式拿到通信报文,但是因为没有密钥,同样也不能看到具体的传输内容。基于HTTPS加密通信的建立过程,和密钥交换方式,如果在加密通信建立之前,截取服务端发送的包含证书的报文,伪装成服务端,把自己的证书发给客户端,然后拿到客户端返回的包含对称加密通信密钥的报文,以服务端自己的公钥加密后发给服务端,这样一来,双向加密通信建立完成,而中间人实际拿到了通信的密钥,所以可以查看、修改HTTPS的通信报文,这就是典型的Man-in-the-middle attack即MITM中间人攻击。

这样似乎看起来,HTTPS也不是那么安全,当然不能这么说了,实现MITM最关键的一点,是中间人要把服务端证书替换成自己的证书发给客户端,让客户端相信自己就是服务端,那么问题是,客户端为什么会信任而进行替换呢?HTTPS之所以安全,是因为它用来建立加密通信的证书是由权威的CA机构签发的,受信的CA机构的根证书都会被内嵌在Windows, Linux, macOS, Android, iOS这些操作系统里,用来验证服务端发来的证书是否是由CA签发的。CA机构当然不可能随便给一个中间人签发不属于它的域名证书,那么只有一个很明显的办法了,把中间人的根证书,导入到客户端的操作系统里,以此来完成建立加密通信时对中间人证书的验证。

看到这里你应该明白,我们前面为什么要把证书安装并存储到 受信任的根证书颁发路径 了吧。

所以,在一定的情况下,HTTPS通信是可以被监听的,抓包的实现基础,是Android测试机导入Fiddler或者Charles的根证书。

  • 无论是fidder和charles都是充当了一个中间人代理的角色来对HTTPS进行抓包:
  • 截获客户端向发起的HTTPS请求,佯装客户端,向真实的服务器发起请求。
  • 截获真实服务器的返回,佯装真实服务器,向客户端发送数据。
  • 获取了用来加密服务器公钥的非对称秘钥和用来加密数据的对称秘钥。

image.png

http协议是不安全的

在https诞生之前,所有网站都使用http协议,而http协议在数据传输的过程中都是明文,所以可能存在数据泄露和篡改。

image.png

使用对称秘钥进行数据加密

为了防止数据泄露和篡改,我们对数据进行加密,如:生成一个对称密码【DKUFHNAF897123F】,将对称秘钥分别交给浏览器和服务器端,他们之间传输的数据都使用对称秘钥进行加密和解密。

image.png

请求和响应流程如下:

  1. 客户端使用对称秘钥对请求进行加密,并发送给服务端。
  2. 服务端接收到密文之后,使用对称秘钥对密文进行解密,然后处理请求。 最后再使用对称秘钥把要返回的内容再次加密,返回给客户端。
  3. 客户端接收到密文之后,使用对称秘钥进行解密,并获取最终的响应内容。

如此一来,数据传输都是密文,解决了明文传输数据的问题。但是,这么干有bug。

  • 浏览器如何获取对称秘钥?
  • 如果每个客户端的对称秘钥相同,浏览器能拿到对称秘钥,那么黑客也可以拿到,所以,数据加密也就没有意义了。

非对称秘钥加密

公钥私钥对儿:公钥负责加密,私钥负责解密

image.png

如此一来,解决了 动态对称秘钥 和 数据加密的问题,因为每个用户的对称秘钥都是随机生成且传输的过程中都使用公钥加密(公钥加密的数据只有私钥能解密),所有黑客无法截获对称秘钥。而数据传输是通过对称秘钥加密过的,所以黑客即使能获取数据也无法去解密看到真实的内容。 看似无懈可击,但是,这么干还是又bug:如果黑客在上图 【步骤2】劫持,黑客把自己的公钥返回给客客户端,那么客户端会使用黑客的公钥来加密对称秘钥,黑客在【步骤6】截获请求,使用自己的私钥获取对称秘钥,后面过程全都会完蛋…

CA出现

image.png

使用 ca 证书可以解决黑客劫持的问题

如此一来,就解决了黑客劫持的问题,因为即使黑客劫持后的给浏览器即使返回了证书也无法通过校验,同时浏览器也会提示错误信息。

https可以保证数据安全,但由过程需要反复加密解密所有访问速度会有所下降(鱼和熊掌不能兼得)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/65390.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

全选和反选

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>Document</title> </head><body><input type="checkbox" id="d1">全选/反选<br><form action…

pbootcms提示“提交失败,请使用POST方式提交”

当你将在线留言栏目的URL名称设置为message时,这个名称与PbootCMS系统的保留关键字冲突。PbootCMS系统会默认执行与message相关的控制器,而不是你期望的在线留言表单提交逻辑。 PbootCMS系统的保留关键字 PbootCMS系统中有一些保留关键字,这些关键字不能用作URL名称。以下是…

【20zr提高组十连测day10】信

无。【20zr提高组十连测day10】信 给定 \(n,m\),\(n,m\le 10^5\),给定分别长度为 \(n-1,m,n,m-1\) 的单调不减的序列 \(A,B,C,D\),然后形如该图建边:考虑到序列是递增的,对于除最左上角以外的每个点,每个点一定要选和自己相连的一条边才能形成一棵树。那么选择左边或上边…

自动加载类文件时发生错误,类名【core\\basic\\Kernel】

当你使用PbootCMS时遇到了自动加载类文件时发生的错误,具体错误信息如下:自动加载类文件时发生错误,类名【core\\basic\\Kernel】这个问题通常是由于Kernel.php文件丢失或被误删除导致的。特别是在阿里云虚拟主机环境下,可能会因为安全策略而删除某些文件。以下是详细的解决…

算法与数据结构——归并排序

归并排序 归并排序(merge sort)是一种基于分治策略的排序算法,包含下图所示的“划分”和“合并”阶段。划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 *合并阶段**:当子数组长度为1时终止划分,开始合并,持续地讲左右两个较短…

[ABC274G] Security Camera 3

无。[ABC274G] Security Camera 3 给你一个 \(n\times m\) 的网格图,\(n,m\le 300\),每个空地上可以放任意多个任意方向的监控,一个监控视野覆盖对应方向最长连续空地,问监控覆盖所有空地最小化监控数量。 对于一个极长的连续空地,我们一定是在边边放置一个监控,而且两边…

manim边学边做--图形间集合关系

几何图形间的集合关系,是数学和几何学中的一个基本概念, 通过计算不同形状(如圆形、矩形、三角形等)的交集和并集等关系,可以实现复杂的图形处理和视觉效果。 manim中提供了4种计算几何形状间集合关系的模块:Difference:从形状A中减去与形状B相交的部分 Exclusion:减去…

java窗口登录界面实现随机验证码

创建窗口内容及验证码更换 代码示例: package frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class Jframe…