资讯详情

局域网嗅探与ARP欺骗实战:从中间人攻击到口令还原

📅 2026/10/22 20:19:49 | 华诺云谱 👁 阅读
局域网嗅探与ARP欺骗实战:从中间人攻击到口令还原
做内网渗透或者网络排障这么多年我越来越觉得搞懂局域网里的数据是怎么流动的比会打什么高大上的漏洞重要得多。Kali里那些嗅探和欺骗的工具看起来简单但背后牵扯到ARP协议、交换机转发逻辑、TCP/IP协议栈的信任机制一套组合拳下来你才真正理解什么叫内网裸奔。这篇文章我就拿我最近在模拟环境里做的一次完整局域网嗅探与欺骗实操为例拆成5步带你走一遍。这不是纸上谈兵是我真机环境实测过的流程包括中间踩的坑、抓包回来怎么分析、怎么从一堆乱七八糟的流量里捞出有用的东西以及最关键的——怎么在合法的前提下做这些事情。整个过程全部在自建的虚拟化靶机环境里完成没有对任何真实网络造成影响。先说清楚一个底线也是这篇文章所有内容的前提所有操作必须在你拥有合法授权的网络环境中进行。可以是自己的实验室、公司的授权渗透测试项目或者CTF靶场。没有授权就去对别人的网络搞这些事情那是违法犯罪不是技术。这篇文章的所有内容目的是让你理解网络协议的弱点以及怎么防御而不是教你去做坏事。1. 项目概述先搞清楚嗅探与欺骗到底能干些什么1.1 这个项目解决的是什么问题局域网嗅探与欺骗本质上解决的是一个信息不对称的问题。在同一个二层网络也就是同一个交换机域里数据包本来是按MAC地址精确转发到目标设备的正常情况下你没资格看别人的流量。但网络协议在设计之初比如ARP协议是建立在所有设备都是可信的这个前提下的这就给了攻击者插一脚的机会。通过ARP欺骗我可以把一个目标IP的流量先骗到我这台机器上然后再转发出去。这样目标机器完全感觉不到异常但我不但能看到它的明文数据包还能随便改。这就是经典的中间人Man-in-the-MiddleMITM攻击模型。在渗透测试里这种手段的价值非常高我不用费劲去猜口令、找漏洞只要目标网络里有人用HTTP明文协议登录什么后台、访问什么服务我蹲点抓包就能拿到凭证。1.2 适用场景与合法边界这个技术组合拳适合的场景其实很清晰授权渗透测试中的内网横向已经拿到一台内网机器的权限但需要进一步收集凭据、劫持会话嗅探与欺骗是效率极高的手段。企业红队演练验证网络内部是否存在ARP欺骗、DNS劫持等风险检验安全设备能不能发现这类异常行为。网络故障排查有些时候一台机器老是掉线、或者网络时通时不通很可能是有人在搞ARP缓存投毒。懂原理才能排查。边界就是一句话你只能对你拥有授权的目标做这件事。所以下面所有步骤里我会非常明确地标注哪里是靶机哪里是攻击机环境是怎么搭的你在自己实验环境里照着做没问题但别往外拿。1.3 环境准备最小化实验拓扑这次实操我用了非常小的拓扑但足够把原理讲透一台Kali虚拟机当作攻击机网卡桥接到虚拟交换机。一台Windows 10虚拟机当作目标机模拟内网用户。还有一个虚拟化平台自带的虚拟网关负责给这两台机器分发IP并作为外部通信出口。所有虚拟机都在同一个虚拟二层网络里没有做端口隔离这模拟的就是一个普通的办公/宿舍局域网。Kali的IP是192.168.1.10Windows靶机是192.168.1.20网关是192.168.1.1。这个环境我建议你也这样搭别直接用真实网络去试出了事不是小事。2. 核心思路拆解为什么是这5步2.1 ARP欺骗为什么它是局域网中间人的入口要理解后面5步为什么这么设计必须先吃透ARP欺骗的原理。ARP协议解决的是已知IP求MAC的问题。主机A要给主机B发数据需要知道B的MAC地址于是会发一个广播谁是192.168.1.20 正常情况下B回应自己的MAC。然后A就把这个映射关系写进自己的ARP缓存表里下次直接用。问题出在这个机制没有任何校验。谁都可以说我是192.168.1.20只要我发一个ARP应答包说这个IP对应我的MACA的ARP缓存就会被我污染。如果我只骗A让A以为网关的IP对应我的MAC那A要发往外网的所有数据就都会先发给我这台机器。而我只需要开启IP转发把这些数据原样转给真正的网关目标用户全程无感。这就是中间人的入场券。拿到这个转交权后面的嗅探才有意义因为流量全都主动送到你嘴边了。2.2 5步流程的整体逻辑这次的5步流程每一步都有明确的目的信息收集搞清楚网段里有哪些机器、谁是网关、目标机器的IP和MAC是什么。这一步的目的是把攻击面摸清避免瞎打。开启IP转发并实施欺骗让目标流量经过你但又不至于断网。这是中间人的技术前提。流量嗅探流量到了你手上你要能把它抓下来、看出来里面有什么。这一步是把经过变成看见。数据提取与口令还原流量里最有价值的就是凭据、敏感信息。这一步是把看见变成拿到。会话维持与清理渗透测试要持续稳定地获取数据不能打一下就崩最后还得把现场清理干净不留痕迹。这就是为什么是5步而不是1步每一步解决的都是一个独立的工程问题。3. 5步实战全流程从摸清目标到拿到数据3.1 第一步主机发现与目标确认进入Kali终端先用通用的主机发现命令把整个网段的存活设备扫出来。我常用的是nmap虽然它主要用于端口扫描但用来做存活性探测也很顺手nmap -sn 192.168.1.0/24参数-sn的意思是只做主机发现不扫端口。看到的结果大概是这样的我把具体的输出结构保留下来方便你对照Nmap scan report for 192.168.1.1 MAC Address: 52:54:00:12:35:02 (QEMU virtual NIC) Nmap scan report for 192.168.1.10 MAC Address: 52:54:00:88:9A:4B (QEMU virtual NIC) Nmap scan report for 192.168.1.20 MAC Address: 52:54:00:1A:2B:3C (QEMU virtual NIC)看到这三行我心里就有底了。192.168.1.1是网关192.168.1.10是我自己Kali192.168.1.20就是要测试的靶机。MAC地址也要记下来后续做欺骗和验证都需要用到。3.2 第二步开启IP转发准备ARP欺骗在正式欺骗之前我必须先把我的Kali变成一台能转发IP数据包的路由器。如果不开启转发我用欺骗把目标流量引过来之后这些数据包会因为我的机器没有开启转发而直接丢弃目标机就彻底断网了大家立刻就会发现不对劲。开启转发的方法很简单echo 1 /proc/sys/net/ipv4/ip_forward这条命令的意思是把内核里的IPv4转发开关打开。注意这个改动是临时的重启就失效了。如果想让它永久生效需要去改/etc/sysctl.conf把net.ipv4.ip_forward那一行配置成1。但渗透测试一般不搞永久配置临时开启够用了。为了确认开启成功可以执行cat /proc/sys/net/ipv4/ip_forward输出1就说明我已经变成了一台合格的透明路由器。3.3 第三步实施ARP欺骗接下来就到了核心环节。Kali里做ARP欺骗的工具不少我这次用了比较知名的arpspoof它来自dsniff套件简单可靠。它的基本用法是同时对目标机和网关发欺骗包。先骗目标机让它把网关的IP192.168.1.1和我的MAC地址绑定arpspoof -i eth0 -t 192.168.1.20 192.168.1.1参数含义-i eth0指定网卡-t 192.168.1.20 192.168.1.1的意思是告诉目标192.168.1.20网关192.168.1.1的MAC地址实际上是我Kali的MAC。同时再开一个终端骗网关让网关把目标机的IP和我的MAC绑定arpspoof -i eth0 -t 192.168.1.1 192.168.1.20两个终端都要运行因为欺骗是双向的。目标机发给网关的包会到我这里网关回给目标机的包也会到我这里。这样一整个双向流量都经过我了。执行成功后arpspoof会持续不断地发送伪造的ARP应答包维持污染状态。注意观察命令的运行界面会一直刷新这表示它在持续工作不要因为什么都没发生就把它关掉。3.4 第四步流量嗅探与数据提取中间人状态建立之后我就可以开始抓流量了。这一步我用的是tcpdump先做整体抓包再把抓回来的包用Wireshark做精细分析。先用tcpdump把流量落地tcpdump -i eth0 -w /tmp/mitm.pcap-w参数会把原始数据包写进文件方便后面分析。让它先跑着然后我在靶机上做一些模拟操作打开浏览器访问一个测试用的HTTP登录页面随便输入一个用户名和密码比如testuser / Passw0rd123点登录再打开一个HTTP的文件下载链接。等这些操作做完CtrlC停掉tcpdump然后用Wireshark打开/tmp/mitm.pcap。重点看HTTP协议因为HTTP是明文不需要解密。直接在上方过滤栏输入http.request这会过滤出所有HTTP请求。我看到了靶机发出去的POST请求展开之后表单提交的表里清清楚楚写着username: testuser password: Passw0rd123就这么简单明文凭据直接到手。我这次是故意用的HTTP明文环境真实环境里很多老旧系统内置管理后台、打印机Web界面、智能设备配置页都还在用HTTP这就是嗅探的价值。3.5 第五步会话维持与清理现场拿到凭据之后中间人状态还要维持一段时间因为渗透测试里你还需要持续观察流量或者做进一步的会话劫持。维持阶段除了让arpspoof继续跑还要留意一件事不要让目标机的ARP缓存表反复变化否则容易引起对方的防欺骗机制报警。相关操作做完之后清理现场很重要。先CtrlC停掉所有arpspoof进程。这时候目标机和网关的ARP缓存表里还留有我的MAC地址的映射如果不清理流量还会往我这边跑但我不开了转发就变成断网了。恢复方式是发送一次正常的ARP广播让它们重新学习到正确的MAC地址。直接用arpingarping -U -I eth0 192.168.1.1 arping -U -I eth0 192.168.1.20-U参数表示发送无请求UnsolicitedARP广播相当于我主动说各位注意我不是网关也不是目标机你们自己重新广播一下吧。 这在绝大多数情况下能让网络恢复正常。测一下目标机的网络能ping通外网就说明清理成功了。4. 实测结果分析与数据解读流量里到底能捞出什么4.1 抓到的流量长什么样中间人状态下抓到的东西比直接用Wireshark在不做欺骗的情况下抓到的多得多。原因很简单不做欺骗时交换机能转发给你的只有广播包和发给你的单播包做了欺骗之后整个会话的数据包全都会在你的网卡上过一遍。我这次抓的MITM包里除了我模拟的HTTP登录之外还撞见了不少有意思的东西。其中有一小段流量是这台Windows靶机开机后后台自动访问某软件更新服务器的请求虽然没啥敏感内容但它暴露了操作系统版本信息、当前登录用户名等指纹数据。还有一种情况在真实测试里很常见某些老旧设备会通过HTTP明文方式发送NTP同步请求、SNMP查询、配置备份等管理流量这些全都能被捞出来。我把这次抓包结果里的关键信息整理成一张表方便你参考流量类型协议能否明文读取渗透测试价值登录表单提交HTTP POST能极高直接获得用户名密码网页CookieHTTP能高可用于会话劫持DNS查询DNS能中能了解目标访问了哪些域名软件更新请求HTTP/HTTPS部分中低能获取系统指纹信息文件下载HTTP能高如果是敏感文件直接能拿到4.2 数据包分析要点打开Wireshark之后不要光盯着红色警告的包看那很多是重组错误意义不大。我通常会按这几个优先级来分析第一优先级是看HTTP POST请求和带有Cookie的请求。过滤表达式用http.request.method POST可以精确地把所有表单提交找出来。现代Web应用大多用的是JSON格式但老系统里还有大量的application/x-www-form-urlencoded格式直接就能看到键值对。第二优先级是看ARP层的异常。在统计菜单里选择协议分级可以看到ARP包的数量占比。如果在正常网络里ARP包占比突然变得很高比如超过5%极大概率是有人在跑欺骗工具。第三优先级是DNS请求。这个常被人忽略。我只要在过滤栏输入dns就能看到目标机访问的每一个域名。有一次在某授权项目里我就通过DNS请求发现目标内网有一台机器在周期性访问一个国内云厂商的存储域名顺藤摸瓜找到了数据外传的秘密通道。5. 常见问题与排查技巧实战中踩过的坑5.1 一欺骗目标就断网怎么回事这是最常见的坑。出现这种问题第一件事就是检查IP转发有没有开。很多教程让你开echo 1 /proc/sys/net/ipv4/ip_forward但你执行完之后可能被某些系统服务重置了。直接在开启欺骗之前再确认一次sysctl net.ipv4.ip_forward如果输出的值是0那就再开一次或者干脆用sysctl -w net.ipv4.ip_forward1。还有一种情况是开转发了但防火墙开了rp_filter反向路径过滤这个机制会把从A网卡进来但路由表说应该走B网卡的包直接丢弃。在Kali默认状态下一般没问题但某些做了安全加固的Linux发行版上就会导致目标机时通时断。排查方法sysctl net.ipv4.conf.all.rp_filter看到值为1先临时改成0再测试。5.2 抓到了流量但全是HTTPS加密的看不到明文怎么办真实网络里HTTP明文已经越来越少了HTTPS是大势所趋。但不要慌HTTPS流量里不是完全没有可用的东西。虽然请求体的内容是加密的但Server Name Indication (SNI)字段是明文的DNS查询也是明文的。我可以知道目标访问了哪个域名虽然不知道具体内容。想进一步解HTTPS有两条路一条是让目标信任我自签的CA证书这需要配合DNS欺骗而且现在的浏览器会有安全提示容易被发现另一条是拿到目标机器本身的使用权限从内存中去读解密后的内容。所以在这个5步流程里我没有强行去搞HTTPS解密而是重点盯那些明文协议这才是嗅探的真正用法——它天然就是为明文流量准备的。5.3 同时运行了两个arpspoof但目标还是偶尔丢包单向欺骗的时间差导致的。两个方向欺骗的ARP包是分开发送的目标机的ARP缓存可能一会儿是正确网关的MAC一会儿是我的MAC。如果这个切换频率太高或者目标机本身开启了静态ARP就会表现为丢包。解决办法按3.3节的命令同时启动尽量保持两端欺骗包发送频率一致。arpspoof默认发送频率是每2秒一次不用改但要确保两个进程同时启动。另外如果对方开了静态ARP绑定这是很多企业网管抵御ARP欺骗的标准操作那arpspoof基本没用这种情况就换压力更大的工具或者走其他渗透路径别死磕。5.4 反入侵视角怎么发现有人在搞ARP欺骗最后聊一个防御视角的问题因为你在做测试的时候目标网络的安全设备也可能在盯着你。自己怎么发现这类攻击呢很简单在正常Linux主机上看ARP缓存表的变化。执行arp -a查看IP与MAC的映射如果发现同一个IP反复出现不同的MAC地址或者网关的MAC地址变成了一个陌生的值那就说明网络里有人在搞事情。有一种更主动的检测方式在网关或者核心交换机上做流量审计如果某个MAC地址收到的流量远大于它自己产生的流量那它大概率是一台中间人。管理型交换机上的端口镜像功能配合Wireshark分析就是企业里防御ARP欺骗的常用手段之一。6. 合规建议与后续扩展6.1 合法授权是这条路的生命线说到最后我得再强调一次合规这件事。网络嗅探与欺骗是一把极其锋利的刀它能让你看到网络里几乎所有明文的秘密。但也正因为如此它也是网络安全法里重点关注的行为。我在模拟环境里折腾这些工具是为了研究协议弱点是为了防御。你在看这篇文章之后如果想动手实验请在下面这些环境里操作自己搭建的虚拟化靶场里所有虚拟机都是你自己的。公司明确授权你做的渗透测试项目且有书面的测试范围和测试时间。各类公开的CTF竞赛和靶场平台。出了这个边界一次未经授权的ARP欺骗就可能涉嫌违法。这不是吓唬你是我见过太多同行在这个问题上栽跟头。技术本身是中性的但使用技术的人必须清楚自己的责任。6.2 这个技能树往后还能怎么长这5步只是入门把原理打通之后可以往这几个方向继续深入一是DNS欺骗。建立在ARP中间人基础上当目标机的DNS请求经过你时你可以回复一个伪造的DNS应答把它指向一个你控制的钓鱼服务器。这个手法的危害程度比单纯的嗅探高很多也更容易引发安全问题动手前更要慎之又慎。二是会话劫持。如果你抓到的HTTP请求里带着有效的Session Cookie你可以不用知道密码直接把Cookie放到自己的浏览器里以目标身份的登录状态访问Web应用。这种攻击方式在局域网内非常隐蔽。三是结合漏洞利用。当你从流量里看到目标在访问某个特定版本的老旧Web系统时可以直接针对这个系统的已知漏洞发起攻击把被动收集升级为主动入侵。我个人在实际操作中的体会是嗅探和欺骗这组技能表面上是工具的使用本质上是对网络协议信任模型的理解。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑