
今天聚焦 Wireshark 抓包实操将本周所学的网络分层、TCP 握手、HTTP 协议全部串联到真实数据包分析中。今天内容以动手为主务必全程跟着操作。第一周·周五Wireshark 抓包实操——HTTP、DNS 过滤与三次握手分析 今日学习目标达成效果能独立启动 Wireshark并选择合适的网卡进行抓包知道何时使用混杂模式能熟练使用显示过滤器精准提取 HTTP、DNS、TCP 三次握手包掌握至少 5 个核心过滤语法能从数据包中还原一次完整的 HTTP 请求与响应识别请求方法、状态码、Cookie、Set-Cookie 等头部字段能过滤并分析一次完整的 TCP 三次握手准确找到 SYN、SYNACK、ACK 三个包并解释每个包的 Flags 和序列号变化能用 Wireshark 解析一次 DNS 查询过程找到查询域名、响应 IP、服务器地址能综合运用过滤语法将本周网络基础、HTTP 协议、TCP 知识点全部验证一遍彻底打通理论与实操。 一、Wireshark 基础与使用原则Wireshark 是一个开源的网络协议分析器它能够捕获流经选定网卡的原始数据帧并按协议栈逐层解析让你看到网络的“真实呼吸”。1. 安装与启动Windows/Mac从官网 https://www.wireshark.org 下载安装安装时务必勾选安装 WinPcap/NpcapWindows或相应抓包驱动。Linux可通过包管理器安装如sudo apt install wireshark注意权限配置通常需要将用户加入 wireshark 组或使用 sudo。2. 选择正确的网卡打开 Wireshark主界面会列出所有网络接口。你需要选择当前正在上网的网卡有线网卡通常标识为Ethernet或eth0无线网卡通常为Wi-Fi或WLAN如果抓本机访问本机的服务如 localhost需选择Loopback接口Windows 上可能需要安装 Npcap 的 loopback 支持。建议为避免大量干扰包请关闭不必要的下载、视频、即时通讯软件仅保留一个干净的浏览器用于测试。3. 混杂模式默认情况下Wireshark 会开启混杂模式使网卡接收线路上所有数据帧不仅是发给本机的。在共享式网络如古老的集线器环境中可抓取他人通信但在交换式网络现代交换机中通常只能看到广播包和发往本机的包。初学者无需纠结保持默认即可。 二、核心过滤语法今日必须掌握Wireshark 有捕获过滤器抓包前限定抓取内容减少资源占用和显示过滤器抓取后从已捕获包中筛选显示今天主要练习显示过滤器因为更灵活直观。以下为今天必会的过滤语法过滤器示例作用说明http显示所有 HTTP 协议包请求和响应dns显示所有 DNS 协议包tcp.port 80显示源或目的端口为 80 的 TCP 包HTTP 默认端口tcp.port 443显示 HTTPS 流量加密无法看到明文内容ip.addr 192.168.1.1显示与指定 IP 通信的所有包http.request.method GET仅显示 HTTP GET 请求包http.response.code 200仅显示 HTTP 200 响应包tcp.flags.syn 1 and tcp.flags.ack 0精确过滤出三次握手中的第一个 SYN 包tcp.flags.syn 1 and tcp.flags.ack 1过滤出 SYNACK 包第二次握手tcp.flags 0x010仅 ACK 包用于观察第三次握手及后续确认dns.qry.name contains example过滤 DNS 查询中域名包含 “example” 的请求!arp and !mdns and !ssdp排除常见干扰广播包使界面更清爽过滤技巧输入过滤器时输入框背景为绿色则表示语法正确红色为错误。可组合多个条件使用and/or/!。右键某个感兴趣的包 → “作为过滤器应用” → “选中” 或 “未选中”可快速生成过滤器。 三、动手实践一抓取并分析一次完整的 HTTP 请求目标使用 Wireshark 捕获访问一个 HTTP 网站非 HTTPS的完整交互找到请求和响应包并解读报文内容。操作步骤打开 Wireshark双击正在上网的网卡开始捕获。打开浏览器在地址栏输入一个HTTP 网站例如http://httpforever.com或http://testphp.vulnweb.com确保是 http 而不是 https。回车加载页面。页面完全显示后回到 Wireshark点击工具栏红色停止按钮。在过滤器输入框输入http按回车。此时包列表会只显示 HTTP 协议包。你将看到类似GET / HTTP/1.1的请求包以及带有200 OK的响应包。如果没有尝试再刷新一次页面或检查是否误用了 HTTPS。分析请求包点击任意 HTTP GET 请求包在Packet Details面板展开Hypertext Transfer Protocol你会看到请求方法GET请求 URI/或具体路径请求版本HTTP/1.1请求头部Host、User-Agent、Accept等周三学过的内容直接对应注意如果有 Cookie会显示在Cookie行。分析响应包点击对应的 HTTP 响应包查看响应版本和状态码HTTP/1.1 200 OK或其他状态码响应头部Server、Content-Type、Set-Cookie如果有响应体如果响应是 HTMLLine-based text data字段下会展示 HTML 源代码。安全发现你可以直接在包中看到完整的请求头和响应头如果是 HTTP表单提交的用户名密码也会明文出现在请求体中今天可尝试一个简单的搜索表单 GET 提交看 URL 参数。Set-Cookie如果没有HttpOnly或Secure标志说明存在潜在的安全风险这正是周四知识的应用。 四、动手实践二分析 TCP 三次握手目标从刚才抓取的 HTTP 流量中找出支撑该 HTTP 连接的那一次 TCP 三次握手并验证周二学到的序列号和标志位变化。操作步骤在上一步http过滤结果中找到任意一个 HTTP 请求包。右键该包 → “追踪流” → “TCP 流”你会看到整个 TCP 连接的全过程数据包括握手、HTTP 请求响应、挥手的部分。关闭流窗口。清除 Wireshark 过滤器输入tcp.stream eq XX 为刚才追踪流时显示的流编号这样会只显示该 TCP 流的所有包包括握手。现在你会看到这个连接从建立到断开的所有包。寻找最开始三个包通常按 Time 排序的前三个它们就是三次握手第一个包客户端 → 服务器Flags 中SYN置 1ACK为 0。Seq0Wireshark 默认相对序号真实序号看原始值第二个包服务器 → 客户端Flags 为SYNACKSeq0Ack1确认了客户端的序号1第三个包客户端 → 服务器Flags 为ACKSeq1Ack1确认服务器的序号1点击每个包在 Packet Details 中分别展开Transmission Control Protocol部分查看Flags确认 SYN 位和 ACK 位是否与理论一致。Sequence Number和Acknowledgment Number观察变化。注意 Wireshark 默认启用相对序号Relative Sequence Numbers便于阅读。若要查看绝对初始序列号可右键序号 → 取消协议首选项 → 关闭相对序号。尝试单独过滤三次握手包用tcp.flags.syn1 and tcp.flags.ack0过滤所有 SYN 包第一次握手用tcp.flags.syn1 and tcp.flags.ack1过滤 SYNACK第二次然后用流跟踪观察第三次 ACK。思考为什么抓到的三次握手包的目标端口是 80与我们访问的 HTTP 服务有什么关系 五、动手实践三抓取 DNS 查询过程目标观察浏览器请求一个域名时底层如何通过 DNS 查询到 IP 地址以及 DNS 基于 UDP或 TCP的细节。操作步骤清除之前显示的过滤器或新建捕获。开始新一次捕获。在终端执行nslookup example.comWindows或dig example.comLinux/Mac或者在浏览器中访问一个从未访问过的域名强制触发 DNS 查询。停止捕获在 Wireshark 过滤器输入dns回车。你会看到 DNS 查询包和响应包查询包Standard query 0x... A example.com通常是 UDP 协议端口 53。响应包Standard query response 0x... A example.com A 93.184.216.34展开 DNS 部分查看Queries内的查询名称和类型A 记录代表 IPv4在响应包的Answers内可看到返回的 IP 地址。注意观察传输层协议绝大多数 DNS 查询使用 UDP你可以在 Packet Details 的User Datagram Protocol部分确认。如果响应包很大可能会使用 TCP但目前少见。过滤小技巧使用dns.qry.name contains example可直接定位到特定域名的查询包。 六、综合实验搭建本地 HTTP 服务并用 Wireshark 抓包验证所有知识点为了深刻理解强烈建议今晚自己用 Python 搭建一个临时 HTTP 服务然后用 Wireshark 抓本机访问的全过程。步骤启动 Python HTTP 服务打开终端在一个空目录下运行python3-mhttp.server8080它会在本机 8080 端口提供一个静态文件服务器。选择网卡在 Wireshark 中选择Loopback接口名称可能是lo或Npcap Loopback Adapter开始捕获。浏览器访问打开浏览器访问http://127.0.0.1:8080。分析捕获停止捕获用过滤器tcp.port 8080查看与本机 8080 端口的交互。你会看到完整的 TCP 三次握手源和目标都是 127.0.0.1、HTTP 请求GET / HTTP/1.1、HTTP 响应200 OK服务器会返回目录列表以及四次挥手。验证 HTTP 头部在请求中找到Host: 127.0.0.1:8080证明 Host 头的作用。查看响应头Python 服务会设置Server: SimpleHTTP/0.6 Python/...这就是信息泄漏的例子。今日必须提交的结果截图 1Wireshark 过滤显示一次 HTTP 200 响应包且可见响应状态行和关键头部。截图 2过滤出一个 TCP 流的完整三次握手包并在图中标注 SYN、SYNACK、ACK。截图 3一个 DNS 查询和响应的对应包能看到域名和返回的 IP。 七、课后测试题与解析测试题 1如何在 Wireshark 中快速过滤出所有由本机发起的 TCP SYN 包不包含 SYNACK写出准确的显示过滤器表达式。参考答案tcp.flags.syn 1 and tcp.flags.ack 0如果要限定本机 IP可加上ip.src 你的IP如ip.src 192.168.1.10 and tcp.flags.syn 1 and tcp.flags.ack 0。测试题 2你用 Wireshark 过滤出http看到一个请求行是GET /search?qsecurity HTTP/1.1服务器返回了HTTP/1.1 302 Found且带有Location: /login。请解释这个交互的含义并从安全角度指出可能的问题。参考答案含义客户端尝试访问/search页面并传递参数qsecurity。服务器返回 302 临时重定向要求客户端跳转到/login很可能因为用户未登录系统强制跳转到登录页。安全角度如果/search页面包含敏感功能302 重定向可能在一定程度上保护了资源但需要确保/search在未授权时本身不返回数据否则可通过拦截 302 包看到响应体如果服务器在返回重定向前已输出内容。参数qsecurity明文出现在 URL 中如果是搜索内容并无大碍但如果是密码等敏感信息就有泄露风险。如果跳转的目标 URL 是外域且由参数指定可能存在开放重定向漏洞Open Redirect可被用于钓鱼。测试题 3在 Wireshark 中抓取 DNS 查询时发现一个 DNS 响应包包含多个Answers返回了 3 个不同的 IP 地址。这种现象通常说明什么服务器在做什么策略参考答案这通常说明该域名配置了DNS 轮询Round Robin或多条 A 记录用于实现简单的负载均衡。客户端会收到多个 IP通常会选择第一个或随机选择一个进行连接从而将流量分散到不同的服务器。这是最基础的负载均衡方式不涉及健康检查。✅ 今日学习效果自检清单我能独立打开 Wireshark选择正确网卡开始和停止捕获我可以用http过滤器查看 HTTP 请求和响应并读出状态码和 Cookie 头部我能够用tcp.port 80和流跟踪找到一次完整的三次握手我能识别 SYN、SYNACK 和 ACK 三个包的标志位和序列号关系我能用dns过滤器找到 DNS 查询请求与响应并读出解析出的 IP 地址我能组合过滤器如找出所有到某个 IP 的 SYN 包我理解 Wireshark 显示的数据就是本周理论知识的物理证据⚠️ 阶段避坑重点不要抓取加密流量 (HTTPS) 试图看内容TLS 加密后的 HTTP 头部和主体完全不可见你只能看到 TLS 握手包内容无法直接分析除非配置 SSLKEYLOG 等高阶玩法暂不涉及。今天务必只用 HTTP 网站练习。不要只过滤不分析看到包列表就过而是要点开每个协议的细节把周二、周三、周四学到的字段全部对应一遍。不要混淆捕获过滤器和显示过滤器捕获过滤器语法不同BPF 语法在捕获前设置显示过滤器则是事后筛选。今天只练习显示过滤器。不要跳过 Loopback 接口抓包这能让你最干净地观察三次握手和 HTTP 交互因为无其他设备干扰。明天周六我们将进行第一周综合实验搭建简易 HTTP 服务并用 Wireshark 抓取分析同时尝试修改响应头。今天的所有抓包练习就是为明天彻底自主完成综合任务打下基础。请务必保存今天抓包截图明天可能需要对比。