①什么是抓包:
抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,通过抓包可以分析网络问题、业务分析、分析网络信息流通量、网络大数据金融风险控制、探测企图入侵网络的攻击、探测由内部和外部的用户滥用网络资源、探测网络入侵后的影响、监测链接互联网宽频流量、监测网络使用流量(包括内部用户,外部用户和系统)、监测互联网和用户电脑的安全状态、渗透与欺骗;
②数据在网络上是以很小的帧的单位传输的,帧通过特定的称为网络驱动程序的程序进行成型,然后通过网卡发送到网线上,通过网线到达目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。
在这个传输和接收的过程,就可以使用抓包工具(Sniffers)进行抓包,作为前端开发者,通常是抓取应用层的 HTTP/HTTPS 的包;
③HTTP 抓包原理:
在 http 标准中,没有对通信端身份验证的标准。对于服务器来说,它接收的 HTTP 请求报文只要格式符合规范,就发送响应报文。对于客户端来说也是如此,它无法校验服务器的身份,比如它连接的 A 的主机,但由于中间节点的存在,最终连接的可能是 B 的主机。因此,对于 HTTP 抓包,无需做过多的处理,只需要让中间人负责转发客户端和服务端的数据包;
④HTTPS 抓包原理:
HTTPS 语义仍然是 HTTP,只不过是在 HTTP 协议栈中 http 与 tcp 之间插入安全层 SSL/TSL。安全层采用对称加密的方式加密传输数据和非对称加密的方式来传输对称密钥,解决 http 数据没有加密、无法验证身份、数据容易纂改三个核心问题。
其中验证身份问题是通过验证服务器的证书来实现的,证书是第三方组织(CA 证书签发机构)使用数字签名技术管理的,包括创建证书、存储证书、更新证书、撤销证书。
浏览器连接至一个 HTTPS 网站,服务器发送的不仅仅只是服务器实体证书,而是一个证书链,但不包含根证书,根证书会被内嵌在 Windows, Linux, macOS, Android, iOS 这些操作系统里。
其中校验证书分为两步,证书的签发者校验和服务器实体证书校验。中间人想要抓包,需在 HTTPS 加密通信之前:
1、截取客户端发送的包含证书的报文,伪装成服务端,把自己的证书发给客户端,然后拿到【客户端返回的包含对称加密通信密钥的报文】,生成中间人与客户端对称加密的密钥;
2、同样伪装成客户端,以服务端自己的非对称公钥加密【客户端返回的包含对称加密通信密钥的报文】发给服务端,获得服务端生成的对称加密密钥;
3、这样一来,加密通信建立完成,而中间人拿到了通信的数据密钥,可以查看、修改 HTTPS 的通信报文;
4、这里客户端与中间人通信、中间人与服务端通信,都是正常建立了 HTTPS 加密连接的;
其中很重要的一步是浏览器的根证书校验,CA 机构不可能随便给一个中间人签发不属于它的域名证书,也就不在客户端的操作系统上了,因此只能把中间人的根证书,导入到客户端的操作系统了,以此完成建立加密通信时对中间人证书的验证;
⑤电脑如何抓手机的包:
PC 端建立一个服务器中间人进程,伪装为 web 应用的目标服务器。手机端 web 应用发送的请求数据先经过中间人,中间人进行拦截处理再发送给目标服务器。反过来,目标服务器发送的数据包先通过中间人,再由中间人响应给浏览器客户端。这里要注意的是,无论是个人电脑PC,还是移动端手机,都需要接入互联网网络,可以相互找到对方才能建立通信。一般对开发来说,个人电脑本地起的服务器进程,在公网上是访问不到的。一般是无线局域网,个人电脑与手机端连接同一个路由器发出的 Wi-Fi,就可以相互通信。
具体步骤:1、在 PC 电脑本地起一个服务器进程,监听一个端口比如 8899;2、在手机上连接同一个局域网,配置网络代理,指向 PC 端的 IP 地址和 8899 端口;3、这样一来,手机上所有的网络通信都会被先转发到 PC 端的 8899 端口,就可以对数据包进行分析处理;
⑥抓包工具 whistle:Whistle 是基于 Node 实现的跨平台抓包免费调试工具。特点:完全跨平台、功能强大、操作简单;
(参考:mp.weixin.qq.com/s/n4CL96fP1…