Wireshark实战:从流量分析到DNS欺骗攻击的检测与防御

📅 2026/7/27 21:56:04
Wireshark实战:从流量分析到DNS欺骗攻击的检测与防御
1. 项目概述从被动扫描到主动洞察在网络安全领域很多朋友尤其是刚入行的朋友容易陷入一个误区认为安全就是拿着扫描器扫漏洞。Nmap、AWVS、Nessus 这些工具固然强大但它们本质上是在“问”目标系统“你有这些已知的弱点吗”这是一种基于特征库的、相对被动的检测方式。然而真正的威胁往往发生在协议交互的“静默”层面攻击者不会总是触发你的漏洞扫描规则。今天我想分享一个更主动、更底层的实战技能使用 Wireshark 进行网络流量分析并聚焦于一种在局域网LAN内极具隐蔽性和危害性的攻击——DNS 欺骗DNS Spoofing。为什么是 DNS 欺骗因为 DNS 是互联网的“电话簿”它将我们熟悉的域名如www.baidu.com翻译成机器能识别的 IP 地址。一旦这个翻译过程被篡改你输入的明明是银行官网浏览器却可能把你带到一个精心伪造的钓鱼网站而这一切在用户层面可能毫无感知。在局域网环境中由于网络拓扑相对集中实施这种攻击的技术门槛和成本都更低危害却同样巨大。别再只把 Wireshark 当作一个“看看有没有人下载电影”的简单工具了。它是一把手术刀能让你直接“看到”数据包在网线里流动的原始模样。通过本次实战分析你将学会如何捕获并解读网络流量如何从海量的数据包中识别出 DNS 欺骗攻击的蛛丝马迹最终达到“一眼看穿”的境界。这不仅是一项技能更是一种思维模式的转变——从依赖工具的“黑盒测试”转向理解原理的“白盒分析”。2. 核心原理与攻击场景深度拆解要识别攻击必须先理解攻击是如何发生的。DNS 欺骗攻击也称为 DNS 缓存投毒DNS Cache Poisoning其核心在于“污染”DNS 解析的中间环节。2.1 DNS 查询的“信任链”是如何被打破的在一个正常的 DNS 查询过程中以简化的局域网为例你的电脑客户端想访问www.example.com。它首先查询本地 DNS 缓存如果没有记录则向预设的 DNS 服务器通常是路由器或运营商 DNS发送一个查询请求。这个请求是“递归查询”。DNS 服务器如果没有缓存则会代表客户端向根域名服务器、顶级域服务器、权威域名服务器发起一系列“迭代查询”最终获得正确的 IP 地址返回给客户端并缓存该记录。DNS 欺骗攻击者要做的就是抢在真正的 DNS 应答包到达之前向查询者发送一个伪造的 DNS 应答包。这个伪造的包包含了错误的 IP 地址例如将www.example.com指向攻击者控制的服务器 IP。为什么能“抢答”成功这里涉及两个关键点基于 UDP 协议传统的 DNS 查询使用 UDP 协议这是一种无连接的协议。服务器不会验证请求包的来源是否“可信”它只认请求包里的“事务 ID”Transaction ID和“端口号”Port。如果伪造的应答包拥有正确的事务 ID 和端口号客户端就会接受它。局域网环境优势在共享式网络或利用 ARP 欺骗后面会讲到构建的中间人环境中攻击者可以监听到局域网内所有的 DNS 请求。由于网络延迟极低攻击者有很大概率能比远端的真实 DNS 服务器更快地发出伪造应答。2.2 常见攻击场景与组合拳单纯的 DNS 欺骗往往需要结合其他技术才能最大化其效果形成经典的“组合拳”攻击链ARP 欺骗 DNS 欺骗这是局域网内最经典的攻击模式。攻击者首先通过 ARP 欺骗让自己成为客户端与网关之间的“中间人”Man-in-the-Middle, MITM。这样客户端所有的流量包括 DNS 请求都会流经攻击者的机器。此时攻击者不仅可以实施 DNS 欺骗还能对 HTTP 等未加密协议进行会话劫持、内容篡改。钓鱼热点攻击者搭建一个开放的 Wi-Fi 热点如“Starbucks-Free-WiFi”。用户连接后攻击者将自己设置为网关和 DNS 服务器。那么所有用户的 DNS 查询都会发向攻击者他可以任意地伪造任何域名的解析结果引导用户至钓鱼网站。恶意软件/流氓软件有些恶意软件会直接修改受害主机的 DNS 设置将 DNS 服务器指向攻击者控制的地址。这种攻击不依赖于局域网环境但原理相同。注意本文所有技术讨论及实验均应在自己完全可控的、隔离的实验室环境如虚拟机搭建的封闭网络中进行。未经授权对他人的网络进行任何形式的嗅探、欺骗或攻击都是非法行为务必遵守法律法规和职业道德。3. 实战环境搭建与 Wireshark 抓包准备“工欲善其事必先利其器”。我们的实战将在虚拟化环境中进行确保安全、可控、可复现。3.1 实验环境拓扑我们搭建一个最简单的三节点局域网受害者Victim一台普通的 Windows 或 Linux 客户端虚拟机。IP:192.168.1.10网关/合法 DNS 服务器Gateway一台 Linux 虚拟机模拟公司路由器或家庭光猫提供 NAT 和 DNS 转发服务。IP:192.168.1.1攻击者Attacker一台 Kali Linux 虚拟机集成了丰富的安全工具。IP:192.168.1.100三台机器通过 VirtualBox 或 VMware 的“仅主机Host-Only”网络适配器连接形成一个与宿主机物理网络隔离的纯实验局域网。3.2 Wireshark 安装与初始配置Wireshark 的安装过程很简单官网下载对应系统版本即可。安装后有几个关键配置点需要关注选择合适的网卡启动 Wireshark在主界面你会看到所有网络接口列表。在我们的实验中你需要选择连接到“仅主机网络”的那个接口在 Windows 上可能叫VirtualBox Host-Only Network在 Linux 上可能是eth1或ens33等。一个常见的坑是选错了网卡抓了半天发现是本地回环或者无线网卡的流量一无所获。抓包过滤器Capture Filter的慎用在开始抓包按钮旁边有一个输入框这是抓包过滤器语法为 BPFBerkeley Packet Filter。它会在抓包时直接丢弃不匹配的流量效率高但可能漏掉关键信息。对于初学者我建议在分析阶段之前不要设置抓包过滤器先全量抓取再用显示过滤器Display Filter进行分析。例如如果你一开始就设置port 53你会错过 ARP 欺骗等前置攻击流量导致分析链条断裂。关键配置以管理员/root权限运行在 Windows 上必须以管理员身份运行 Wireshark否则无法将网卡设置为“混杂模式”Promiscuous Mode。混杂模式是网卡的一种工作状态在此模式下网卡会接收所有流经其网络的数据包而不仅仅是发给它的数据包。这是网络嗅探的基础。Linux 下通常需要 root 权限。3.3 发起 DNS 欺骗攻击使用ettercap工具在攻击者机器Kali Linux上我们将使用ettercap这款经典的中间人攻击工具。它集成了 ARP 欺骗、DNS 欺骗等多种功能。操作步骤启动ettercap图形界面sudo ettercap -G扫描主机点击菜单Hosts-Scan for hosts稍等片刻Host List中会列出当前局域网内所有活跃的主机。添加目标在Host List中将网关 (192.168.1.1) 添加到Target 1将受害者 (192.168.1.10) 添加到Target 2。这表示我们要在网关和受害者之间进行中间人攻击。启动 ARP 欺骗点击菜单Mitm-ARP poisoning勾选Sniff remote connections然后点击OK。此时攻击者开始向双方发送伪造的 ARP 应答包告诉受害者“我是网关”告诉网关“我是受害者”从而成功插入通信链路。配置并启动 DNS 欺骗首先需要编辑ettercap的 DNS 欺骗配置文件sudo vim /etc/ettercap/etter.dns。在文件末尾添加一行www.example.com A 192.168.1.100。这表示将所有对www.example.com的查询都解析到攻击者的 IP (192.168.1.100)。回到ettercap界面点击菜单Plugins-Manage the plugins双击dns_spoof插件以激活它。开始嗅探点击菜单Start-Start sniffing。至此攻击已经部署完成。当受害者在浏览器中访问www.example.com时流量将被导向攻击者的机器。4. Wireshark 流量捕获与攻击特征分析现在切换到受害者机器打开 Wireshark 并开始在正确的网卡上抓包。然后在受害者的命令行中执行nslookup www.example.com或直接用浏览器访问。让我们看看 Wireshark 里发生了什么。4.1 识别 ARP 欺骗流量攻击前置在开始 DNS 查询之前你应该会看到大量的 ARP 包。正常的 ARP 通信是“一问一答”。而 ARP 欺骗的典型特征是ARP 应答包异常多你会看到攻击者 (192.168.1.100) 在不停地、未经询问就向受害者 (192.168.1.10) 和网关 (192.168.1.1) 发送 ARP 应答包。内容矛盾这些应答包声称“IP 地址192.168.1.1网关的 MAC 地址是[攻击者的MAC]”。这直接污染了受害者的 ARP 缓存表。Wireshark 显示过滤器arp可以只看 ARP 协议流量。观察Info列寻找Who has 192.168.1.1? Tell 192.168.1.10和随后大量的192.168.1.1 is at [攻击者MAC]这样的记录。4.2 捕获并分析 DNS 欺骗过程这是本次实战的核心。清空或停止之前的抓包在受害者发起nslookup www.example.com命令时开始抓包。正常的 DNS 查询请求首先你会看到一个来自受害者 (192.168.1.10) 的 DNS 标准查询Standard query请求包目的地是网关 (192.168.1.1)查询www.example.com的 A 记录。协议是 UDP目标端口是 53。关键字段Transaction ID: 一个随机生成的 2 字节数字例如0x9a3b。这是请求和应答匹配的凭证。Queries: 部分会明确显示查询的域名和类型A记录。伪造的 DNS 应答包紧接着甚至可能在前一个请求包之后毫秒内你会看到两个DNS 应答包第一个应答包伪造的源 IP 是攻击者 (192.168.1.100) 或网关 (192.168.1.1)这取决于ettercap的欺骗模式但源 MAC 地址一定是攻击者的 MAC。最关键的是这个包的Transaction ID与之前请求包中的完全一致例如0x9a3b。在Answers部分你会看到www.example.com的 IP 被解析成了192.168.1.100攻击者设定的假地址。第二个应答包真实的稍晚一点可能几毫秒到几百毫秒后来自真实 DNS 服务器经过网关转发的应答包到达。它的Transaction ID也是0x9a3b因为是对同一个请求的应答但在Answers部分www.example.com的 IP 是真实的公网 IP例如93.184.216.34。Wireshark 显示过滤器dns可以过滤出所有 DNS 流量。你可以进一步使用dns.qry.name contains “example.com”来聚焦于我们关心的域名。4.3 一眼看穿的关键特征如何从 Wireshark 的流量中“一眼看穿”DNS 欺骗同一事务 ID 的多个应答这是最直接的证据。Wireshark 会以不同颜色高亮显示数据包。通常第一个到达的伪造应答会被客户端接受而后到的真实应答则被忽略因为事务已完成。在数据包列表中找到同一个Transaction ID展开看如果有两个Answer部分且 IP 地址不同基本可以断定发生了 DNS 欺骗。应答源 IP 可疑虽然攻击者可以伪造成网关 IP 应答但结合之前 ARP 欺骗的流量你可以发现这个“网关 IP”发出的数据包其二层 MAC 地址并不是真正网关的 MAC而是攻击者的 MAC。在 Wireshark 中你可以添加eth.src和eth.dst列来直观对比 MAC 地址。TTL生存时间异常伪造的 DNS 应答包中DNS 记录的 TTL 值可能被设置为一个非常大的数例如 86400而真实记录的 TTL 通常较短。这可能是攻击者希望其伪造记录在受害者缓存中保存更久。流量模式异常在短时间内针对不同域名的 DNS 查询都出现了来自同一个非授权源非配置的 DNS 服务器的快速应答。5. 高级分析与防御策略探讨掌握了基本特征识别后我们可以进行更深入的分析并思考如何防御。5.1 使用 Wireshark 内置分析工具Wireshark 不仅仅是数据包查看器它内置了强大的分析功能专家信息Expert Info点击Analyze-Expert Info。在Warnings或Notes标签下Wireshark 有时会直接提示“Duplicate DNS response detected”检测到重复的 DNS 响应这能帮你快速定位问题。I/O 图表与流量图通过Statistics-I/O Graph你可以绘制 DNS 查询与应答的频率图。如果发现每个查询后立即紧跟着一个应答且延迟极低然后可能又有一个延迟稍高的应答这种模式在图形上会非常明显。Statistics-Flow Graph则可以生成会话流程图清晰展示客户端、攻击者、真实服务器之间的数据包交互时序。DNS 响应时间分析通过显示过滤器dns.flags.response 1过滤出所有应答包然后查看Time列需要设置显示为“自上一个捕获包的时间差”。伪造应答的响应时间通常远小于真实应答局域网内 vs 互联网查询。5.2 防御 DNS 欺骗的层层策略知其然更要知其所以然。了解攻击后防御思路就清晰了部署 DNSSECDNS Security Extensions这是从根本上解决问题的方案。DNSSEC 使用数字签名来验证 DNS 应答数据的真实性和完整性。客户端可以验证应答是否来自合法的权威服务器且未被篡改。这是治本之策但需要域名注册商和 DNS 服务器提供商的支持部署有一定复杂度。使用加密的 DNS 协议DNS over HTTPS (DoH)和DNS over TLS (DoT)将 DNS 查询和应答通过 HTTPS 或 TLS 加密隧道传输防止中间人窃听和篡改。现代操作系统和浏览器如 Firefox, Chrome都已支持。注意这可能会绕过企业内部的 DNS 安全策略。客户端加固禁用递归查询对于服务器如果不是 DNS 服务器应禁用递归查询功能只接受来自指定客户端的迭代查询。使用静态 ARP 绑定在重要的设备如服务器、网关上静态绑定 IP 地址与 MAC 地址的对应关系可以防止 ARP 欺骗。命令如arp -s 192.168.1.1 00-11-22-33-44-55Windows或ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev eth0 nud permanentLinux。缺点管理维护量大。定期清理本地 DNS 缓存ipconfig /flushdnsWindows或systemd-resolve --flush-cachesLinux可以减少已中毒记录的影响时间。网络层防御交换机端口安全在企业交换机上启用端口安全功能可以限制每个物理端口学习的 MAC 地址数量防止攻击者伪装多个 MAC 地址。DHCP Snooping 与 DAIDynamic ARP Inspection这是企业级交换机的安全功能。DHCP Snooping 建立合法的 IP-MAC 绑定表DAI 则依据此表检查 ARP 包的合法性直接丢弃伪造的 ARP 包。这是防御局域网中间人攻击非常有效的手段。网络分段与隔离将重要服务器置于独立的 VLAN 中与普通用户终端隔离限制攻击横向移动的范围。5.3 日常监控与应急响应对于网络管理员将 Wireshark 分析能力融入日常监控至关重要建立基线在业务正常时捕获一段时间的 DNS 流量了解正常的响应时间、响应源、TTL 分布等形成基线。设置告警规则在安全设备或流量分析系统如 Zeek, Suricata中可以编写规则来检测 DNS 欺骗特征例如检测同一事务 ID 的多个 DNS 应答。检测来自非授权 DNS 服务器的应答。检测 DNS 应答中的 TTL 值异常大。应急响应流程一旦怀疑发生 DNS 欺骗应立即隔离物理或逻辑隔离疑似被攻击的网段或主机。取证使用 Wireshark 在网关或核心交换机端口镜像处抓包确认攻击源MAC/IP。清除清除受影响主机的 ARP 缓存和 DNS 缓存。阻断在交换机或防火墙上封锁攻击源 IP/MAC。溯源结合其他日志如 DHCP 日志、认证日志定位攻击者主机。6. 常见问题与排查技巧实录在实际使用 Wireshark 和分析过程中你肯定会遇到各种问题。这里记录一些我踩过的坑和总结的技巧。6.1 抓不到包或包太少问题启动了 Wireshark但流量列表空空如也或者只有零星几个包。排查确认网卡百分之八十的问题源于选错了网卡。务必确认你选择的网卡对应着你的实验网络。可以尝试ping一下同网段其他机器同时观察 Wireshark 是否有 ICMP 包出现。权限问题在 Linux 下是否使用了sudo wireshark或当前用户是否在wireshark组中在 Windows 下是否以管理员身份运行过滤器误设检查是否无意中设置了抓包过滤器Capture Filter。清空它先尝试抓取所有流量。混杂模式确认网卡是否处于混杂模式。在 Wireshark 的捕获接口对话框对应网卡后应该有“Promiscuous”字样。如果不是可能需要调整驱动或权限。6.2 数据包太多眼花缭乱问题一抓包就是海量数据根本找不到想要的 DNS 包。技巧善用显示过滤器Display Filter这是 Wireshark 的核心技能。在过滤栏输入表达式只显示匹配的包。常用过滤器dns只看 DNS 协议。arp只看 ARP 协议。ip.addr 192.168.1.10只看与特定 IP 相关的流量源或目的。udp.port 53只看使用 53 端口的 UDP 流量传统 DNS。组合使用dns and ip.src192.168.1.100查看来自攻击者的 DNS 流量。使用“应用为过滤器”在数据包详情面板右键点击某个协议字段如“Domain Name System (query)”选择“应用为过滤器” - “选中”Wireshark 会自动生成对应的过滤表达式非常方便。着色规则Wireshark 有默认的着色规则如 DNS 是浅蓝色。你也可以自定义规则比如将所有包含“Transaction ID: 0x9a3b”的包标为红色这样重复应答就一目了然。6.3 如何证明是欺骗而不是网络故障场景你看到了两个 DNS 应答如何确定第一个是恶意的而不是网络抖动导致的合法重传分析要点检查 MAC 地址展开数据包的以太网帧头部对比源 MAC 地址。真实 DNS 应答来自网关或外部服务器的 MAC 应该是网关或下一跳设备的 MAC。如果第一个应答的源 IP 是网关但源 MAC 却是一个未知的攻击者的MAC这就是铁证。检查 IP 地址的合理性伪造应答中的 IP 地址是否是一个内网地址如192.168.x.x,10.x.x.x指向了公网域名或者指向了一个已知的恶意 IP可以通过威胁情报平台查询结合上下文观察欺骗发生前后是否有密集的、异常的 ARP 包这通常是 ARP 欺骗的前奏。孤立的异常 DNS 应答可能是故障但伴随 ARP 异常的 DNS 异常基本可以判定为攻击。6.4 在虚拟化环境中实验的注意事项网络模式务必使用“仅主机Host-Only”或“内部网络Internal Network”模式确保实验网络与你的生产环境或家庭网络完全隔离。虚拟机快照在发起攻击前为受害者和网关虚拟机创建快照。实验完成后可以快速回滚到干净状态避免残留的 ARP 或 DNS 缓存影响后续实验。防火墙干扰有时虚拟机的防火墙如 Windows Defender 防火墙、Linux 的ufw可能会丢弃某些类型的包。在实验初期可以暂时关闭防火墙以排除干扰但务必理解这在真实环境中是极不安全的。掌握 Wireshark 进行流量分析就像获得了一种“网络透视”能力。它让你不再依赖工具给出的“是”或“否”的结论而是能亲自审视原始数据做出独立判断。从识别 DNS 欺骗开始你可以将这套方法论应用到 HTTP 会话劫持、恶意软件 C2 通信分析、网络性能瓶颈定位等无数场景。真正的安全高手不仅会用工具更要懂工具背后的每一比特数据。