网络抓包01 - 环境搭建/抓包原理

抓包软件

  • charles

  • Wireshark

  • Burpsuite

我比较喜欢用 charles。但是它是收费软件,所以推荐一个网站:

https://www.zzzmode.com/mytools/charles/

charles 安装与配置

过程网上有许多,随便贴一篇:

https://blog.csdn.net/qq_38798840/article/details/125221320

抓包原理

上面,在配置 charles 的过程中,需要安装一个证书,我们来讨论一下为什么。

首先,需要了解为什么 https 是安全的,然后需要了解什么是中间人攻击。

为什么 https 是安全的?

https = http + ssl

当用户与HTTPS网站建立连接时,网站会与用户的浏览器进行一系列握手过程:

  • 服务器将其公钥和证书发送给用户的浏览器。

  • 浏览器验证证书的有效性。

  • 一旦验证通过,浏览器使用服务器的公钥加密信息,并将其发送回服务器。

  • 服务器使用私钥解密这些信息,并根据之前的协商结果使用共享密钥加密通信。

由于私钥只有服务器知道,即使通信过程中有人截获了数据,没有配套的私钥也无法解密信息。这保证了只有浏览器和服务器可以理解他们之间传递的信息。

中间人攻击

中间人攻击,就是将一段 https 分成了两段。

app 与中间人,中间人与服务器都是使用了 https 来通信,不过中间人既扮演了服务端也扮演了客户端,使用了两套公私钥,所以它能拿到明文信息。

为什么需要安装证书?

中间人攻击有一个前提,那就是客户端需要信任中间人下发过来的证书。

一般我们使用浏览器的时候,访问一个网站,如果发现它有个红色提示的话,就说明有危险:

这是在提示我们,浏览器拿到的证书与这个域名是不匹配的。

如果我们无视风险的话,那多半要倒霉。

charles 需要安装一个根证书的原因就是要我们信任这个证书,这样我们使用访问 charles 代理服务器的时候,就能通过这个根证书校验它下发的公钥证书。如果我们没有能力校验代理服务器下发的证书,那么 ssl 握手就会失败。

所以,这个事情告诉我们,不要安装盗版系统,鬼知道它里面预置了些什么东西。

证书链校验

能做一个假证书吗?或者说我们如何校验一个证书是否是有效的?

这里就涉及到一个信任链的问题,证书上是有数字签名的,这个签名使用的第三方机构的私钥加密生成的。把第三方机构理解成担保人即可。

那么,我们如果有了第三方机构的公钥,就可以校验这个证书是不是对的,证书里面有很多信息,也可以用来校验域名之类的。

接下来的问题是如何获取第三方机构的公钥,一般TLS协议允许服务器在TLS握手过程中提供完整的证书链(除了根CA证书)。如果你是服务器管理员,确保服务器配置正确,并且在TLS握手时提供所有必要的中间CA证书。

所以,并不是所有的设备和操作系统都会内置所有信任的中间CA,但通常都会内置受信任的根CA列表。通过证书链,用户无需手动安装每个新的中间CA证书;只要信任了根CA,就能通过证书链认证其下所有的证书。

我们安装了 charles 的根证书,那么就能校验通过它签发的所有公钥证书了。

证书链的好处: 如果某个中间CA的安全性受到威胁,那么不必吊销所有由该CA签发的证书,只需吊销该中间CA的证书即可。因为证书链可以立即显示哪些证书与被吊销的中间CA相关联。

Android 的证书校验

Android的证书校验流程大体也是与上面说的一致,但是从7.0开始,APP 默认不信任用户域的证书。我们安装 charles 证书的时候,只能安装在用户域,所以使用 charles 代理的时候依然无法通过证书校验,导致抓不到包。

如果是自己的应用,需要设置 networkSecurityConfig:

https://developer.android.com/privacy-and-security/security-config?hl=zh-cn

如果不是自己的应用,只能想办法把证书放到受系统信任的系统证书中去。

比如,使用 magisk,安装 move cert 模块,重启就能将安装的证书移动到系统目录(system/etc/security/cacerts),然后就可以正常抓包了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二手的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值