网络安全基础技术扫盲篇之'抓包'
一、概述
抓包是指在计算机网络中通过截获、重发、编辑、转存等操作,分析网络数据包的过程。网络数据包是计算机之间进行通信时发送和接收的信息单元。通过抓包,可以查看和分析网络通信中传输的数据,以便诊断网络问题、监控网络流量或进行安全审计。
本文介绍了网络抓包的基本概念及两种主流工具 Burp Suite 和 Wireshark 的使用方法。内容涵盖 Burp Proxy 模块的拦截配置、HTTP 数据包结构解析,以及 Wireshark 的网卡选择、过滤器语法和 TCP 流追踪功能。通过实际案例演示了如何捕获登录请求和分析数据库明文传输风险,强调了 HTTPS 加密的重要性,旨在帮助读者掌握网络流量分析与安全审计的基础技能。

抓包是指在计算机网络中通过截获、重发、编辑、转存等操作,分析网络数据包的过程。网络数据包是计算机之间进行通信时发送和接收的信息单元。通过抓包,可以查看和分析网络通信中传输的数据,以便诊断网络问题、监控网络流量或进行安全审计。
Proxy 代理模块作为 BurpSuite 的核心功能,拦截 HTTP/HTTPS 的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截、查看、修改在两个方向上的原始数据流。
该版本的 Burp 可不设置代理,直接点击 Open Browser 即可启动内置浏览器。打开浏览器输入网址后,即可抓到对应的数据包。点击放包后,浏览器才能访问到对应的页面。
如果觉得自带浏览器不好用,可以在其他浏览器上安装对应的插件。以 Firefox 为例:
foxyProxy 回车。此时我们的 Burp 工具就能拦截到对应的数据包了。
例如我们抓取一个后台登录的数据包,进行简单分析一下。
POST /?m=admin&c=index&a=check HTTP/1.1
Host: 172.17.200.25
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 64
Origin: http://172.17.200.25
Connection: close
Referer: http://172.17.200.25/?m=admin&c=index&a=login
Cookie: PHPSESSID=sm571fs1h3ngkf1dfo96bkkv45
t0=admin&t1=admin&t2=spxc&token=1660f5b3f4493aa51e0a19fa788df146
下面对每个部分进行简单解释:
① 请求行:
POST:表示这是一个 POST 请求方法,用于向服务器提交数据。/?m=admin&c=index&a=check:表示请求的路径和参数。在这个例子中,路径为根目录下的 admin,控制器为 index,方法为 check。HTTP/1.1:表示所使用的 HTTP 协议版本。② 请求头部:
Host:表示服务器的主机名。User-Agent:表示浏览器或客户端的相关信息。Accept:表示客户端能够接受的响应内容类型。Accept-Language:表示客户端所支持的语言偏好。Accept-Encoding:表示客户端能够接受的压缩编码方式。Content-Type:表示请求主体的数据格式为 URL 编码形式,字符集为 UTF-8。X-Requested-With:表示该请求是由 XMLHttpRequest 对象发起的。Content-Length:表示请求主体的数据长度。Origin:表示请求的来源。Connection:表示请求完成后关闭连接。Referer:表示请求的来源网页。Cookie:表示客户端发送的 Cookie 数据,这里包含了名为 PHPSESSID 的会话 ID。③ 请求主体:
t0=admin&t1=admin&t2=spxc&token=...:表示具体的表单数据,以 URL 编码形式展示。其中 t0、t1、t2 和 token 为参数名,后面的值为具体的参数值。t0 表示输入的用户名、t1 表示输入的密码、t2 表示输入的验证码。总结:该 POST 请求的目的是向服务器提交一些表单数据。请求头部提供了一些附加信息,如请求的主机名、浏览器信息、接受的响应类型等。请求主体中包含了具体的表单数据,也就是我们输入的账号密码。这整个数据包就是登录过程的请求。
在进行 HTTPS 抓包时,由于数据是加密传输的,需要安装 Burp 的 CA 证书到浏览器信任列表中,否则无法解密流量。具体步骤如下:
http://burpsuite 下载 CA 证书。Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换。
打开 Wireshark 后,第一步要做的就是选择对应的网卡。一般正常情况下,笔记本选择 "WLAN",有线连接选择对应的 "本地连接"。如果是与虚拟机交互的,那么就要选择对应的虚拟机网卡。
选择完对应的网卡后,会直接抓取数据包,点击红色的按钮可关闭捕获。
Wireshark 界面会有非常多的数据,我们需要在过滤器内输入相应的命令,对数据包进行过滤。
① 过滤特定 IP 地址:
ip.src == 192.168.1.100ip.dst == 192.168.1.200ip.addr == 192.168.1.100② 过滤特定协议:
tcpudpicmp③ 过滤端口号:
tcp.port == 80 or udp.port == 80④ 组合多个条件:
ip.src == 192.168.1.100 and tcp.dstport == 80像上述抓取 MySQL 登录过程的数据包,则需要筛选目的地址为 172.17.200.13,端口号为 3306 的数据包,可以使用以下过滤条件进行过滤:
ip.addr == 172.17.200.13 and tcp.dstport == 3306
通过过滤,我们很快就能找到在这个登录过程中传输了哪些数据。例如再抓取一个查询表的数据包,由于数据包比较多,我们可以右键 → 追踪流 → TCP 流。
Wireshark 中的 "追踪流" 功能是用于分析和展示特定协议或会话的整个数据流的功能。当观察特定协议或会话时,Wireshark 会将相关的数据包按照时间顺序进行排序并展示整个通信过程。通过 "追踪流" 功能,您可以按照报文的传输顺序,一次性地查看发送和接收的数据包,从而更好地理解协议的交互过程。
在这里我们可以直观地看到刚刚输入的数据,以及数据库返还给我们的数据,均是明文传输,统统被抓取到了。所以要设置 SSL 连接来保证数据传输过程中的保密性,如果 MySQL 开启了 SSL,不采用 SSL 则会被拒绝。
以上简单介绍了一下常用的抓包工具,仅作为介绍了解使用,更深入的用法需要自行搜索相应资料研究。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online