内网横向移动中的中间人攻击:ARP欺骗、DNS劫持与防御实战
搞内网攻防的朋友应该都有这种体会外网点打下来只是第一关真正决定一个项目能走多远的是内网里的横向移动能不能顺利展开。而横向移动过程中中间人攻击永远是一张绕不开的牌。无论你做的是授权攻防、红蓝对抗还是给客户做内网安全评估只要遇到工作组局域网这种对等网络环境ARP欺骗、DNS劫持这些手法就会频繁出现。所以我想把这条链路里最容易踩坑、也最容易被忽略的细节汇总一下单双向欺骗怎么选、断网截获到底是怎么回事、流量怎么一步一步被引到攻击机上的都会写清楚顺便把检测和防御的逻辑也补上。这个内容适合三类人看一是刚接触内网攻防、想系统理解横向移动方法论的读者二是负责内网安全的蓝队同学明白攻击者手法才能在排查和加固时更有针对性三是做网络运维的朋友哪怕不搞对抗也会用到里面的检测手段。1. 内网对抗与横向移动整体链路拆解1.1 为什么横向移动是内网对抗的核心拿到一台边缘主机的权限之后内网里真正有价值的目标比如核心业务系统、数据库、备份服务器基本都不会直接暴露在外网。攻击者要继续深入就必须在现有权限基础上沿着网络拓扑一步步“跳”这个阶段在对抗术语里就叫横向移动。横向移动的方式很多SMB远程执行、WMI调用、计划任务、远程桌面、服务弱口令、哈希传递都可以用但所有这些方式都有一个共同前提要么手里有可用的凭据要么能拿到一个可以执行命令的会话。凭据从哪来除了已经抓到的本地哈希很多时候就是从明文流量里截获的。这时候中间人攻击就成了“账号收集”的关键一环。很多刚接触攻防的同学有个误区以为横向移动等于堆工具、跑脚本。实际上横向移动更像是一道“凭据应用题”先想办法收集到足够的账号和会话信息再选择合适的传递手段把它们变成新的命令执行通道。如果直接跨网段往核心区打目标主机可能根本不在同一广播域内就算有漏洞也难以触达而中间人攻击恰恰能把“流量经过”这件事变成“流量归我控制”从而精准收集横向移动所需的认证材料。所以从整个攻击链看中间人攻击承上启下上行承接“已进入内网”的能力下行给“应用凭据”提供燃料。1.2 工作组局域网没有域控制器时的真实网络形态很多中小型内网并不是活动目录域环境而是工作组模式。在这个模式下每台机器自己维护本地账户机器之间没有统一的信任关系通信更多地依赖同一广播域内的协议发现。NetBIOS名称解析、LLMNR、mDNS、SMB直接广播都属于这类端口上常见的有139、445、5353、5355。这种环境与域环境最大的区别在于域环境里域控制器是一个集中的认证和信任根工作组环境里几乎没有任何集中式信任保障。从攻击者视角看工作组局域网有几个特点很值得注意。一是同网段内主机互信程度高不少人为了方便共享会开启Guest访问或者空密码共享这让凭据收集后的利用门槛变低。二是监控设备往往不到位很多小型内网只有傻瓜交换机看不到ARP记录、没有端口安全攻击者在二层做手脚很难被发现。三是与域环境相比工作组里哈希传递、Kerberos票据这类域内手法受限因为缺少域控制器来验证访问令牌。反过来中间人攻击这种“土办法”反而成为主流只要攻击机进入同一网段通过伪造应答就能参与进正常的协议交互里。我常跟团队强调判断一个内网环境的对抗难度不要只看它有多少安全设备先看它是域环境还是工作组环境。域环境有集中的日志和策略管控蓝队反制手段多工作组环境往往“裸奔”攻击者打起来更顺手。但反过来也正因为没有域控制器工作组下攻击者能利用的认证凭据大多是本地账户一旦切到另一个网段这些凭据未必通用。这也是为什么利用中间人攻击拿到账号后还需要继续扩大收集范围。1.3 横向移动链路中中间人攻击扮演什么角色如果之前没有别的凭据横向移动的第一步通常就是先把自己安插进目标主机的“必经之路”上。中间人攻击的本质就是让两台正常通信的机器之间的流量绕经攻击机。攻击机可以静默观察、保存流量也可以在流量经过时做改动甚至可以直接中断目标的上网能力来诱导用户暴露更多信息。有了抓到的明文账号密码、Web登录会话或者SMB会话信息横向移动才有下一步。举个例子假设攻击机通过ARP欺骗把目标主机去往网关的流量引到自己身上目标刚好在访问一个内网OA系统账号密码走HTTP明文传输那攻击机直接用软件就能把表单里的user和pass字段提取出来。拿到这个账号后攻击者可以试着用它登录其他文件服务器、邮件服务器甚至直接远程桌面到另一台机器这就是完整的“中间人收集凭据到横向移动”。整个过程里中间人攻击不是独立存在的它服务于“收集、验证、扩散”这个循环循环次数越多攻击者在内网里的立足点就越多蓝队要做的事就是在这个循环的每一环上想办法打断它。2. 中间人攻击的原理与形态2.1 ARP欺骗ARP协议自身就是个信任模型ARPAddress Resolution Protocol负责把IP地址解析成MAC地址。主机在发包时先在本地ARP缓存里查目标IP对应的MAC查不到就发广播询问“谁是这个IP”收到应答后会把映射写入缓存。整个过程有两个致命特点无状态、无认证。任何主机都可以主动发ARP应答包说“某个IP的MAC是我”而接收方通常不会验证这个映射是真是假只会默默更新缓存。这就是ARP欺骗的根基。以太网数据包里有三层信息源MAC、目的MAC以及上层IP地址。当攻击机告诉目标“网关IP的MAC是攻击机网卡的MAC”时目标发出的所有去往网关的流量二层目的地址就会写成攻击机的MAC攻击机收到后再决定转发、记录还是丢弃。这个机制本来是很简单的网络行为但利用方式非常多。很多新手不理解为什么一个“远古协议”到现在还能用其实正是因为升级代价太高——全网改造设备和协议栈不是一朝一夕能完成的所以二层信任问题至今仍然大量存在。ARP欺骗还有一个容易被忽略的点它不一定要等到目标发起ARP请求才应答。攻击机可以主动发送大量ARP应答包也就是“免费ARP”的滥用把目标的ARP缓存反复指向自己。这样做的好处是不用等系统去请求也不会因为缓存更新周期而对不上节奏。实际抓包时会看到一段IP地址持续发出指向同一个MAC的ARP应答频率高的时候一秒能有几十包这对后续检测团队来说也是一个非常明确的异常信号。2.2 单向欺骗与双向欺骗差别不只在包数量单向欺骗一般只欺骗一侧。最常见的就是欺骗目标主机让它误以为攻击机是网关。另一种是欺骗网关让网关把发往目标主机的流量交给攻击机。单独做单向欺骗只能截获一侧的流量如果目标是访问外网只做单向欺骗会看到目标发出的流量但服务器回程的流量确实没法收到于是目标访问很卡甚至完全打不开。为什么因为目标把去往网关的数据包都发给了攻击机攻击机如果不把包转出去目标等于“发而不达”即使攻击机开启转发网关返回给目标的包仍然会直接发给目标不会经过攻击机所以这种状态下目标也能上网但攻击机只能看到一半流量。双向欺骗就同时欺骗两端既骗目标主机让它以为攻击机是网关也骗网关让它以为目标主机的MAC是攻击机。这样一来目标发出去的包和网关返回的包都会经过攻击机只要攻击机开启IP转发或者用工具自带的转发逻辑网络就基本可用同时所有流量都被透明地记录。实际做双向欺骗时命令要开两个进程。经典工具arpspoof的用法大概是arpspoof -i eth0 -t 目标IP 网关IP arpspoof -i eth0 -t 网关IP 目标IP前后两条命令做一个“交叉欺骗”网络里就多了一个隐形的中间节点。我自己的体会是单纯做单向欺骗的坑在于很容易把整片网络弄断排查时动静太大双向欺骗更接近真实攻击者会采用的方式因为目标几乎无感。但双向欺骗对攻击机的转发能力要求高网卡吞吐、CPU处理都在无形中决定稳定性一旦攻击机负载过高目标网络的延迟和丢包会明显上升反而更容易暴露。所以在实验或者授权测试里我会先开单向、确认自己不转发时的效果再切到双向、确认业务受影响的程度把两种模式都踩一遍再出手。2.3 DNS劫持在可信解析路径上插一脚DNS劫持可以出现在很多层面改目标主机的hosts文件、在本地网关上做DNS篡改、在内网DNS服务器上做域名投毒、或者在ARP欺骗建立好通道后对DNS响应做伪造。后者最像“流量经过顺便改一下”的操作也是中间人攻击的一种自然延伸。工作原理并不复杂。正常流程是目标主机向DNS服务器查询一个域名DNS服务器返回真实的解析IP。当目标主机的流量全被ARP欺骗引到攻击机时如果攻击机能识别DNS查询包并抢先伪造应答把这个域名的解析结果指向攻击机准备的地址目标主机之后连接所有采用这个域名的服务都会连到攻击者指定的机器上。常见实验里会把example.com或者test.local伪造成攻击机的IP验证方法就是目标机器上nslookup一下看返回地址是否变成攻击机的IP。工具层面ettercap的dns_spoof插件是经典做法bettercap里面对应的是dns.spoof模块还能通过参数自定义要劫持的域名和解析结果。需要注意现在很多业务系统已经是HTTPS单纯改IP并不能绕过证书校验但改成攻击机自己的HTTPS站点加上伪造证书或者诱导目标降级到HTTP仍然有操作空间。所以这个手法的杀伤力更多体现在内网里那些“一直就没做过HTTPS强化”的业务上。我在实验里通常选一个测试域名来演示而不是拿真实业务域名既验证流程又不会给无关系统带来风险。2.4 断网截获把“网络故障”变成攻击面“断网截获”这四个字在有的资料里也叫“断网攻击”它并不是一个新协议而是一类组合手法。最常见的一种实现攻击机对目标执行ARP欺骗但同时不开启本机的IP转发。这样目标发出的包会到达攻击机但攻击机不转发给网关目标网络在用户眼里就“断”了。这个状态下目标依然会把所有流量发给攻击机攻击机可以保存这些数据包、等待目标重试、还能看到目标为了恢复网络而进行的探测和认证过程。为什么“断网”本身有价值因为断网状态下用户第一反应是检查网络设置、重新认证、找网管。攻击机在一旁等着目标重新发出的DHCP请求、DNS查询、SMB重协商都会暴露更多信息。有些攻击者还会配合钓鱼页面或伪DHCP服务器让用户以为真的需要重新登录结果凭据直接交到攻击者手上。从对抗视角看断网截获最大的价值不在“断”本身而在于“断”之后目标会暴露出更多的重连接行为这些行为往往带着认证信息。另一种变体是“阻断并重定向”攻击机开启转发但通过iptables把目标访问特定端口比如80或53的流量重定向到本地端口由攻击机上的服务来处理。比如iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080这样即使目标能正常上网只要是访问一个HTTP页面请求就会被送到攻击机本地攻击机能记录表单数据、能看到HTTP头也可以返回一个伪造页面。这种模式比完全断网更隐蔽因为业务表面上没断只是个别页面异常用户不会立刻联想到中间人攻击。当然在真实测试里把一台业务主机完全搞断是很敏感的操作我通常建议只在授权的实验环境里做这种极限验证生产环境里优先采用“重定向记录”的方案。3. 实验环境、工具选型与实操要点3.1 环境准备三台虚拟机加一个隔离网段想完整验证这些手法两三台虚拟机就够了。我习惯用VMware或者VirtualBox搭一个隔离的host-only或NAT网段里面放一台攻击机、一台目标Windows、再有一台能模拟网关的机器也可以直接用宿主的虚拟网卡当网关。要注意的是隔离网段不能用桥接模式直接接到办公网络里否则实验会波及别人这在安全演练里是底线问题。工具选择上我一般准备四类ARP欺骗工具用arpspoofdsniff套件、ettercap、bettercapDNS劫持/转发工具用ettercap的dns_spoof插件、dnsmasq、iptables加自建脚本抓包分析工具用Wireshark、tcpdump凭据收集靠前几类工具保存下来的流量文件。Bettercap对现代网卡更友好命令风格也更统一比如bettercap -iface eth0 net.probe on arp.spoof on set arp.spoof.targets 192.168.100.101再把dns.spoof模块打开set dns.spoof.domains *.test.local set dns.spoof.address 192.168.100.100 dns.spoof on新手我建议先用arpspoof加tcpdump把流程理顺以后再上功能复杂的工具避免一开始就在一个工具里迷失方向。每次实验前记下目标IP、网关IP、攻击机IP三种信息后续所有命令都会用到。我自己的习惯是制作一个简短的追踪表格把三个地址、开启的功能、抓包文件路径都写在里面这样复盘时不会混乱。3.2 ARP欺骗实操从单向到双向的完整过程第一步把攻击机网卡配置好IP在同一网段确定网卡名比如eth0。第二步确认目标IP和网关IP。第三步先开一条命令看效果echo 0 /proc/sys/net/ipv4/ip_forward arpspoof -i eth0 -t 192.168.100.101 192.168.100.1这个时候目标会明显感到断网因为它的包到了攻击机但是没有继续向外送。同时打开tcpdumptcpdump -i eth0 -nn -s 0 -w arp_uni.pcap host 192.168.100.101能看到目标主机发往网段的请求包HTTP、SMB查询、DNS查询都有可能在里面。这一步的目的不是收集数据而是验证“流量确实过来了”。如果抓不到任何包多半是ARP欺骗没生效检查一下目标会不会缓存了旧的MAC可以先ping一下再抓包。第三步把转发打开echo 1 /proc/sys/net/ipv4/ip_forward arpspoof -i eth0 -t 192.168.100.101 192.168.100.1 arpspoof -i eth0 -t 192.168.100.1 192.168.100.101两条同时跑目标网络恢复流量开始经过攻击机。用Wireshark过滤tcp.port80或者http能看到明文登录请求。如果目标开启的是HTTPS捕获到的是加密流量这时候就需要在目标环境里预置证书或者选择其他明文协议来演示。一个值得注意的细节arpspoof默认会持续发送ARP应答但最好把它放后台并且配合timeout或后台任务管理避免结束后ARP缓存残留导致网络持续被污染。3.3 DNS劫持实操让域名解析走到攻击机在ARP欺骗存活的前提下DNS劫持会非常顺。经典做法ettercap的dns_spoof插件会在捕获到DNS查询请求时向查询方返回一个伪造DNS应答ettercap -T -M arp:remote -P dns_spoof -i eth0 /192.168.100.1/ /192.168.100.101/ettercap的dns_spoof插件默认从/etc/ettercap/etter.dns读取要劫持的域名和要返回的IP格式类似*.test.local A 192.168.100.100 www.example.com A 192.168.100.100这些域名和IP都是测试用的实验里最好别拿真实业务域名去测避免产生不可控影响。实操时验证方法很简单目标机器上敲nslookup test.local如果返回的是192.168.100.100说明劫持生效。光改DNS解析还不够想让目标用户在浏览器里看到假页面通常还得在攻击机上把80、443端口都起来一个服务然后观察访问日志。我在实验里一般就用一个最简单的HTTP服务返回一个带提示的页面用来确认流量到底有没有被正确引过来。这一步最好配合Wireshark一起看在目标机器上访问页面后攻击机同时能看到DNS查询、TCP连接和HTTP请求整条链路一目了然。3.4 断网截获的正向复现断网截获的复现方式就是把IP转发关掉再配合一点流量观察。步骤是先对目标做单向欺骗再确认ip_forward还是0接着开tcpdump记录目标发来的所有包最后观察目标在重试连接时发出的数据。实验里能看到一个很典型的现象目标上所有需要访问网关的请求都会卡住但本地连接的流量基本不受影响这会导致用户感知“网关不通”而攻击机上持续收到目标发来的认证相关数据。实际操作中我还会配合一个“开—断—开”的节奏来验证先关转发让目标断网一分钟抓一把目标在重试时发出的探测包再开转发等目标网络恢复观察是否有新的DNS请求。这个节奏能帮助理解攻击者对网络的相对可控性。若配合iptables重定向可以把特定流量引导到攻击机本地比如前面提到的端口重定向命令能针对HTTP服务做定向截获。这种“阻断并重定向”的思路也是断网截获的进阶版本避开了完全断网带来的大动静。3.5 流量记录与凭据提取的实用技巧实验做完最重要的就是分析流量。Wireshark里最简单实用的是用Export Objects看HTTP对象用Follow TCP Stream看完整会话再配合过滤http.request.methodPOST能看到表单提交的账号密码。SMB凭据的提取稍微复杂一点需要用tcpdump或Wireshark抓完整交互再依靠响应的解密或哈希破解工具。不过这些都属于后处理阶段关键是在实验最开始就把pcap文件连续保存下来不然中途断流会丢失大量有价值的会话。我的习惯是只要开始欺骗立刻tcpdump -w文件.pcap哪怕后面忘记观察过程只要包在就能事后复盘。分析的时候可以分三步走。第一步抓协议先看捕获里有哪些协议HTTP、SMB、DNS、LDAP、FTP都可能是凭据来源。第二步抓关键字直接过滤user、pass、password、Authorization之类的内容快速定位表单和认证头。第三步抓会话找到可疑的TCP流右键Follow TCP Stream把整个交互读一遍。很多时候凭据就夹在会话的某一跳里只看单个包容易漏掉。我还会用capinfos看一眼pcap文件的基本统计比如包数、协议种类、平均包大小这些能帮我快速判断这次欺骗持续了多久、截获范围有多大。4. 从凭据到横向移动拿到账号之后的路数4.1 截获到的凭据有哪些类型中间人攻击截获的凭据并不限于传统意义上的“用户名加密码”。在流量里经常能碰到这几种HTTP Basic认证里的Base64编码账号密码、Web表单提交的POST字段、FTP和Telnet的明文会话、SMB的NTLM认证哈希、以及RDP会话中的认证信息。每种凭据的使用场景不一样账户密码可以直接登录应用系统NTLM哈希在特定条件下可以做哈希传递RDP会话若能恢复等于直接拿到远程桌面的控制权。我遇到过不少人只盯着“密码”两个字把明文密码拿到了就去找同一个账号忽略了哈希传递这种手法。工作组环境里的Windows主机虽然不像域环境下哈希传递那么顺手但只要目标机器之间使用相同本地密码哈希仍然可能在其他机器上通过。所以我的建议是从流量里提取到的每一类认证信息都要单独记录注明来源协议、目标IP、时间戳后续横向移动时逐项尝试。看起来麻烦但能避免漏掉隐藏的可用凭据。4.2 横向移动时如何选择下一步目标拿到一批凭据后不要急着全网扫先看这批凭据能触达哪些主机。方法很简单同网段内先看有没有共享文件夹、是否开放了445、3389端口如果能登录就把目标主机上加入过它信任列表的其他主机找出来。横向移动不是跑分不是找一台机器就完事而是要沿着信任关系逐步靠近核心数据区。比如通过一个OA账号登录了应用服务器再从应用服务器上看到数据库连接配置那下一步目标就很清晰了。从红队视角这个阶段会优先做“验证凭据”而不是“扩大攻击面”到每台机器上试一下账号能登录就收集本机信息和网络信息不登录就不打草惊蛇。从蓝队视角这个阶段的检测重点则是“异常登录行为”同一账号短时间内从多台机器登录、非工作时间出现远程登录、登录后出现大量内部信息查询这些特征拼起来往往就能定位到横向移动行为。可惜很多内网没有把这些基础日志汇总起来导致事件发生后复盘困难。4.3 为什么中间人攻击和横向移动经常配套出现横向移动的核心障碍是凭据和可达性。中间人攻击能解决“凭据”问题但不能凭空解决“可达性”问题。所以在真实对抗里攻方不会只用一个手法而是“中间人收集凭据→验证凭据→主机跳转→在下一网段重复中间人攻击”如此循环。对这个循环理解得越清楚做防御时就越知道该在哪个环节上发力。比如蓝队没法阻止正常业务使用HTTP但可以重点监控内网里所有明文POST请求也没法让ARP协议一夜之间变安全但可以部署交换机端口安全来压缩二层欺骗空间。红蓝双方在同一张网络里博弈拼的往往不是某个单点技术的先进性而是把基础细节做扎实的程度。5. 检测、防御与排查速查5.1 ARP欺骗的发现方法从蓝队角度最有效的检测手段其实不能全靠主机要靠交换机。看ARP表不稳定Windows里连续执行几次arp -a网关MAC如果一直在变基本可以确定有ARP欺骗。用Wireshark抓包看ARP应答风暴正常情况下网络里不会频繁出现“同IP、不同MAC”的ARP应答更不会持续以每秒几个到几十个的密度出现。对比交换机MAC地址表交换机端口上学习到的MAC地址如果出现“一个端口对应多个MAC”“同一个MAC出现在多个端口”就要排查是不是中间人流量转发。延迟和丢包突增正常直连时去往网关的延迟在1ms量级ARP欺骗后流量绕行延迟往往升到几十到几百ms并且伴随大量TCP重传。这个现象在排查“网络突然变慢”时非常值得怀疑。这些方法在复杂网络上并不是百分百可靠有时还需要终端EDR、服务器流量采集探针统一汇聚到分析平台上去判定。我在一个模拟项目X的复盘中遇到过一种情况攻击者用非常低速率去更新ARP缓存一秒只发一包传统抓包看起来不算“风暴”但对比正常环境仍然会发现包频率异常高而且只有特定主机的ARP表不稳定。所以检测逻辑不能只盯着“高频”一个特征还要看“是否具备周期性”“是否指向同一个异常MAC”这些细粒度特征。5.2 DNS劫持的异常判断DNS劫持的检测要分层做。先看主机端的DNS设置如果本来指定企业内部DNS服务器结果被改成别的IP这就是非常可疑的信号尤其是网关没有被改动、只有DNS被改的情况。再看解析结果是否异常拿一台干净的样本机去查询同一个域名和内网里有异常的机器做对比解析结果不一致就说明链路里有被篡改的环节。实操中最好做一条检查命令用nslookup分别查内网DNS和公共DNS比对解析结果并写进巡检脚本里。不少企业内网没有部署DNSSEC所以从协议层面很难完全防住DNS欺骗。这时更应该关注业务侧重要系统全部改成HTTPS关键域名做证书固定校验这样就算DNS被指到攻击机客户端校验证书时也会报错反而能提醒用户和网管“链路有问题”。我在排查时还会检查交换机上是否有异常的DNS重定向流量但这点要看设备型号是否支持深度包检测不支持的话就要靠主机端的检测脚本。5.3 交换机侧的安全加固内网防中间人攻击的几条关键配置都在交换机上。DHCP Snooping只信任连接合法网关、核心交换机的端口发出的DHCP应答避免伪DHCP服务器影响地址分配Dynamic ARP InspectionDAI基于DHCP Snooping的表校验ARP请求、应答里的IP-MAC映射不匹配的直接丢弃IP Source Guard限制端口上合法IP源避免主机伪造其他IP端口安全限定每个端口最多学习几个MAC地址防止一个端口上挂出大量地址。把这些配置写好中间人攻击能依托的协议漏洞就会被大幅压缩。可惜的是很多小型内网的交换机根本不支持这些高级特性甚至有些设备默认配置完全开放。这种情况下主机侧的自保就显得格外重要。如果预算有限先把核心交换机换了或者至少开启基础端口安全比堆一堆终端EDR更能在源头减少二层欺骗攻击面。我见过有的团队买了一堆安全设备却忽略了交换机上的DAI开关结果攻击者进内网后照样能畅通无阻地做ARP欺骗。配置安全永远是网络防御的地基。5.4 主机侧自我防护清单终端层面可以做几件事。把网关IP对应的MAC地址静态绑定Linux用ip neigh add命令Windows用arp -s但要注意换网卡或换网关时都得重新配置维护成本不低。尽量不用明文协议能用SSH就不要Telnet能用HTTPS就不要HTTP邮件走SMTPS、IMAPS流量被截获时加密协议就算被监听认证信息也不容易直接暴露。部署终端EDR或端点防火墙对异常ARP解析行为、DNS设置变更进行告警。对DNS查询做本地缓存和证书安全校验在客户端层面开DNSSEC会比较难但至少在访问重要系统前要确认证书有效。定期导出ARP快照和DNS配置文件留存基线文件出现异常时能立刻比对。主机侧防护有个现实难题静态ARP绑定在动态网络环境里容易摊上大事万一网关换了MAC全部门禁死。所以我在真实环境里更倾向于推荐交换机侧的DAI和DHCP Snooping主机侧只做“检测”和“告警”不做“强制固定”。只要攻击行为能被及时发现、及时隔离就已经赢了一大半。5.5 常见问题与排查速查表现象可能原因排查与处置用户反馈整个网段大面积断网有人对网关做了ARP欺骗且未开启转发登录交换机查ARP表、抓包确认定位欺骗源端口并隔离单个主机频繁断网、重传率高该主机被单向ARP欺骗流量不转发在主机上检查ARP缓存找网关MAC变化改用静态绑定临时恢复访问某域名时突然打开异常页面DNS应答被篡改或DNS配置被改用另一台干净机器对比解析结果检查DNS服务器地址设置全网时延升高并伴随丢包局部存在双向欺骗攻击机转发能力有限逐段抓包、查交换机MAC表寻找流量绕行的路径明文登录密码泄露风险明文应用协议经过被劫持链路升级加密协议排查交换机是否有异常端口治理内部明文业务攻防演练中被蓝队提前发现广播域过小、交换机有DAI、端口安全等防护攻方应换思路选择不需要二层欺骗的横向移动方法主机上ARP表里出现不相干的IP网段内存在恶意免费ARP包立即抓包持续观察发送源MAC在交换机上禁用对应端口同一IP在两个交换机端口上出现可能存在ARP欺骗或环路核对交换机MAC表收紧端口安全策略这个速查表是我在多次排查里慢慢攒出来的。尤其是“单个主机频繁断网”这个症状一旦出现就优先怀疑ARP欺骗比先把所有交换机配置翻一遍的效率高得多。很多网络问题表面上看像链路故障其实只是因为某个IP的ARP关系被篡改导致流量走到了一条“假网关”上。6. 收尾几个值得反复琢磨的小细节最后分享两个实操里的小体会。第一个中间人攻击看起来入门门槛很低几条命令就能跑起来但真正决定成败的其实是细节有没有持续发送ARP应答、有没有正确设置ip_forward、有没有把恶意的DNS应答调得比真实响应更快这些都会直接影响流量能不能平稳地经过攻击机。我在实验里翻车最多的就是忘了关闭系统自带的IPv6导致IPv6流量绕过ARP欺骗目标某些应用仍然能正常访问实验结论就完全偏了。所以开始测试前最好先确认目标主机主要走IPv4还是IPv6必要时直接在攻击机上关掉无关协议栈。第二个从蓝队视角出发花时间把交换机的DHCP Snooping和DAI配置好比给每个终端折腾静态ARP绑定靠谱得多因为协议层面的欺骗只有在网络设备上才能根治。内网的横向移动手法年年都在进化但越基础的手法往往越难彻底清除所以把ARP欺骗、DNS劫持这些老问题吃透不管你是红队还是蓝队关键时刻都顶得上大用场。这个内容后续还可以这样扩展把这里的流量截获能力接上密码喷洒、哈希传递、内网穿透就是一套完整的横向移动链路反过来把检测点接上SOC平台做自动告警就是一套野生防御系统。方向不同但核心规律是共通的。