
简介西南科技大学网络攻防与对抗实验三的ARP欺骗实验报告面向学习网络安全攻防、网络协议安全的高校学生。报告基于Windows XP与Windows 7双虚拟机环境使用Cain与Winpcap工具完成对网关MAC地址的篡改详细演示了ARP欺骗的完整过程包括环境配置、主机扫描、欺骗规则添加、telnet与FTP服务搭建、抓包验证及ARP缓存对比分析并总结了实验中的常见问题与排错思路。资源共1个doc文件压缩包大小约1.99MB内容为完整验证型实验报告包含实验目的、步骤要点、讨论分析及自我评价可直接作为撰写实验报告或考前复习的参考模板。该资源已有2380人学习下载对理解ARP协议脆弱性和网络监听原理有实际帮助。1. ARP欺骗实验从“能通”到“被截”只差一条虚假应答如果你按实验手册把两台虚拟机搭好第一反应多半是“这也太顺利了”。XP装了CainWin7开着远程服务同一个网关下地址互ping全通——然后在Cain里点几下Win7上所有发给网关的流量就被硬生生转到XP这台机器上。西南科技大学网络攻防与对抗实验三做的就是这个ARP欺骗。它不是利用系统漏洞而是利用了ARP协议一个近乎裸奔的设计收到一条“我是网关”的应答不做任何校验就更新缓存。telnet和FTP的明文账号密码被Cain直接抓出来展示整个过程清晰、直观又带着一点“原来内网这么好欺负”的寒意。这个实验特别适合刚接触网络攻防、想亲手验证中间人攻击的学生和从业者。文章按实操复盘来写从环境搭建讲到抓包分析再讲到五个翻车现场和收尾验证照着做基本不会卡住。2. 实验环境搭建XP与Win7双虚拟机Cain和Winpcap的选型理由2.1 为什么用XP做攻击者而不是Win7实验手册里默认的搭配是XP做攻击者、Win7做被攻击者这个选择不是拍脑袋。Cain这个工具最活跃的时期就是XP和Server 2003时代它对XP的兼容性最好。Winpcap也一样早期版本在Win7上装容易蓝屏而XP上装Winpcap 4.1.2几乎不会出问题。更关键的是XP对ARP欺骗的响应机制非常“朴实”——收到一条声称自己是网关的ARP应答直接就更新缓存没有任何防御性检测。Win7虽然也没什么像样的ARP防护但它的协议栈在收到异常ARP时会稍微谨慎一些做演示实验没必要跟它较劲。所以攻击者选XP不是因为它高级而是因为它足够配合。Cain全称是Cain AbelWindows平台下经典的嗅探和密码破解工具几乎所有流传的ARP欺骗教程都基于它。它把嗅探、欺骗、密码提取集成在一个图形界面里对一个验证性实验来说操作路径比“Wireshark加手工构造ARP包”的组合短得多。你只需要点几下就能把ARP欺骗从原理变成事实。Winpcap是Cain的底层依赖它提供的是从网卡上抓取原始数据包的接口Cain的嗅探功能完全建立在它上面。装Cain之前必须先装Winpcap而且要装对版本这一点在避坑章节里会详细说。实验前还要确认一件事两台虚拟机用的是同一种网络模式。实验手册里给的IP是192.168.184.x网段这是VMware的NAT模式典型网段。如果你用的是VirtualBox或其他虚拟化环境IP会不一样但只要两台虚拟机在同一网段、网关一致逻辑就是通用的。不要手动去改IP——实验报告里特别提到有人以为要自己配IP结果发现环境本身就是通的动手改了反而把实验搞出别的问题。2.2 网络拓扑与IP规划网关、靶机、攻击者三者的关系ARP欺骗本质上是在“洗脑”别人的ARP缓存。每台主机都维护着一张ARP缓存表记录IP到MAC的映射。正常情况下IP 192.168.184.2对应网关的真实MAC但攻击者发送伪造的ARP应答后Win7就会把网关IP对应到攻击者XP的MAC上。从那一刻起Win7发往网关的数据包在数据链路层全部被送到XP的网卡上。角色IP地址在实验中的身份XP攻击机192.168.184.134安装Cain发送伪造的ARP应答Win7被攻击机192.168.184.131受害者正常访问网关和远程服务网关192.168.184.2被冒充的对象真实流量最终要转发给它ARP协议是广播协议ARP请求和应答只能在同一个二层广播域里传递。这也是为什么要强调两台虚拟机在同一网段——不在同一网段的ARP欺骗需要先做路由层面的妥协那已经不是这个实验的讨论范围。同网段是ARP欺骗成立的前提。实验环境里网关IP是192.168.184.2攻击者和受害者分别是.134和.131三者在同一个/24网段内广播域完全重叠欺骗条件天然满足。实验报告里提到“网关IP地址和虚拟机IP地址对应的MAC地址值与虚拟机的MAC地址值一样”这个观察是整场实验的判定依据。当你发现Win7的arp -a里网关那条记录的MAC变成了XP的MAC说明欺骗已经生效。在做这一步之前最好先在Win7上敲一次arp -d清空缓存再敲arp -a看原始状态这样后面对比起来更直观。不清缓存的话Win7可能还保留着几分钟前的正确网关MAC你看到的结果会误导判断。2.3 telnet和FTP服务搭建两条命令和一个容易漏掉的组为什么要在XP上开telnet和FTP因为ARP欺骗抓的是明文流量telnet和FTP都是明文协议账号密码直接在数据包里以ASCII码传输Cain抓下来可以直接读。用HTTPS或者SSH就不会有这个效果——加密流量抓下来是一堆乱码验证不了欺骗的效果。所以实验设计选这两个协议本质上是在挑“最好欺负”的服务来演示中间人攻击的价值。# 在XP上以管理员身份打开命令提示符 # 启动telnet服务 net start telnet # 将当前用户lab添加进telnet客户端组 net localgroup TelnetClients lab /add # 启动FTP服务 net start ftp net start msftpsvcnet start telnet是把Windows自带的telnet服务拉起来这一步经常失败原因大多是服务组件没装。XP默认不安装telnet服务端你需要先在“控制面板—添加或删除程序—添加删除Windows组件”里勾选telnet服务不勾选的话net start telnet会回报“服务名无效”。net localgroup TelnetClients lab /add这一行是常见的坑如果不把用户加进TelnetClients组Win7连接时会直接拒绝登录。FTP服务在XP上对应IIS里的FTP组件启动方式和telnet一样先补组件再net start ftp。参数说明net start本身没有太多参数成败看的是服务是否注册。如果系统提示“服务名无效”去组件安装里补IIS和telnet服务端如果提示“服务已启动”说明服务一直开着直接跳过即可。FTP的用户名密码用的是XP本地账户不是新建的FTP专用账户这一点在实验过程中让很多人翻了车后面专门讲。3. Cain操作全流程从MAC扫描到ARP欺骗触发3.1 启动Cain并扫描活动主机网卡选错一切白搭Cain装好之后双击打开它会默认选择第一块可用网卡。虚拟机里网卡通常只有一块但保险起见还是要确认一下Cain主界面最上方有个网卡图标点开后能看到所有可用的网络接口一定要选中实际参与实验的那块对应IP应该是192.168.184.134。选错网卡是后面“抓不到包”的头号原因因为Cain的嗅探和欺骗都依赖这张网卡做底层收发。第一次启动Cain时它要求Winpcap的支持。如果之前已经装过Winpcap它会直接跳过如果没有Cain会弹窗提示重启不必疑惑装完重启工具就好。Cain本身绿色免安装但Winpcap不行必须单独安装。扫描活动主机在主界面切到Sniffer标签页点击工具栏上的“MAC地址扫描”图标或者用“Sniffer—扫描MAC地址”菜单扫描方式选“所有主机和路由器之间的MAC地址”。这个扫描方式会把网关也同时加进来后面配置欺骗规则时需要用到网关的条目。扫描结果会列出网段内所有活动主机的IP、MAC和主机名看到Win7的IP 192.168.184.131在列表里就说明扫描成功。如果列表为空多半是Winpcap问题或者防火墙拦截排查方法在避坑章节。3.2 配置欺骗规则左边选网关、右边选目标顺序别反扫描完成后把界面从Sniffer切到ARP标签页。这是Cain做ARP欺骗的主战场。界面上有一个加号图标点击之后弹出“添加新目标”对话框。对话框分左右两个列表左边是路由器列表右边是目标主机列表。这里必须遵守固定操作左边选中网关192.168.184.2右边选中被攻击者192.168.184.131然后确定。这个顺序为什么不能反因为ARP欺骗模拟的是“网关的角色”。你要让被攻击者相信攻击者就是网关所以左边必须是它信任的网关IP右边是它的真实IP。如果反着选Cain会尝试去欺骗网关让网关相信攻击者是Win7这也会产生某种效果但实验里验证telnet和FTP的流量会失败——你截的是Win7发给网关的流量而不是网关发给Win7的流量。实验报告没有明确写这一步的逻辑但它决定了后面的抓包成败。配置完规则后ARP列表里会出现一行记录显示“192.168.184.2 - 192.168.184.131”这样的一对状态是待命。此时还没有开始欺骗只是把规则挂上了。这里的-方向只代表欺骗关系的两端不代表流量已经经过攻击者。3.3 执行欺骗黄色图标按下去的瞬间发生了什么工具栏上有一个黄色图标通常位于ARP标签页的右上方图标形状像一个闪电点击后Cain就开始对Win7持续发送伪造的ARP应答宣告自己是网关。从这一刻起Win7发给网关的数据帧就全被送到XP的网卡上。Cain负责把收到的包继续转发给真正的网关保证通信不断开实现透明中间人效果。为什么要持续发送ARP缓存是有时效的。Windows的ARP缓存条目一般存活120秒左右如果不持续刷新Win7过一两分钟就会因缓存超时而重新发送ARP请求此时如果攻击者不发应答它就会重新正常地给网关发数据欺骗中断。Cain的毒化功能就是定时补发伪造应答让受害者始终维持错误的缓存这个细节是理解ARP欺骗稳定性的关键。欺骗启动后Win7这边几乎没有任何感知。它的网络连接仍然正常访问网关、远程telnet都不受影响因为Cain会做透明的包转发。也正是因为这种“无感”中间人攻击才可怕。此时在Win7上敲arp -a会看到网关192.168.184.2对应的MAC已经变成了XP的MAC地址去VMware的网卡设置里对比两块虚拟网卡的物理地址可以确认。3.4 验证ARP缓存实验手册里“对应一致”的判定方法实验的最后一步是观察ARP缓存。在Win7的命令提示符里敲arp -a输出结果中网关那条记录的物理地址应该与XP网卡的MAC地址完全一致。实验报告里描述为“Xp的地址Win7的arp –a信息对应是一致的”意思就是Win7的ARP表被改写成功。这里有一个容易混淆的点ARP缓存里有动态条目和静态条目之分。ARP欺骗改写的是动态条目所以观察的时候不要刻意做静态绑定否则看不到变化。验证时还可以反向操作在XP上看着Cain的Sniffer记录同时让Win7去ping网关Cain里会出现对应的ICMP请求包。通过对比发包时间和Win7上的ping动作可以确认数据链路完全被攻击者接管。到这里ARP欺骗的核心流程已经闭环了。从环境准备、MAC扫描、规则配置到毒化启动、缓存验证五个步骤构成完整链路。很多人在这个流程里翻车不是原理不懂而是操作顺序和工具细节没理顺。下面把telnet和FTP两个场景单独剖开因为各自都有隐藏的坑。4. 抓包分析telnet与FTP凭据捕获的实操验证4.1 telnet明文抓取从连接成功到看见账号密码在Win7上打开命令提示符输入telnet 192.168.184.134输入实验设置的账号密码。连接建立后你的每次登录、每条命令都在以明文形式穿过局域网。回到XP上的Cain切换到Sniffer标签页打开密码面板就能看到刚才截获的telnet会话信息——用户名、密码甚至你登录后敲过的命令全部以可读文本展示。telnet的原理决定了它没有加密通道客户端和服务器之间传输的数据都是原始字节流。实验报告里说的“抓取到包含登录信息的包”在Cain中的表现就是密码面板中多了一条STelnet记录展开后能看到从Login到Password到登录成功的完整过程。整个抓包不需要额外配置前提是ARP欺骗已经处于生效状态——如果你的Cain没抓到telnet包先检查黄色图标是否还在毒化状态因为停止后ARP缓存会在一两分钟内恢复正常。这里有个观察点值得拿来说Cain并不是只抓登录那一个包而是抓了这条TCP连接的全部数据。你在telnet里敲的命令Cain都会记录下来只是密码面板优先展示账号密码字段。这也解释了实验报告里“在cain上仍然显示着信息”的现象——只要连接没断开Cain持续能看到后续流量。对初学者来说这个细节很容易误以为Cain“什么都能抓到”其实它抓的是流经攻击者网卡的数据流。4.2 FTP抓包第一次失败一个值得反思的“失败”实验设计里的FTP抓包流程是在Win7上执行ftp 192.168.184.134输入用户名密码。第一次输入时实验者以为需要创建一个新的FTP专用账号结果服务器直接拒绝。第二次改用XP的本地用户连接成功。这个“失败”揭示了FTP认证的一个关键机制IIS的FTP服务默认使用Windows本地账户做认证它没有自己独立的用户体系。用XP本地用户登录后回到Cain的密码面板FTP那条记录就会出现包含用户名和对应的明文密码。FTP和telnet一样没有加密甚至更危险FTP控制连接的所有命令都是明文密码就存在于前几个TCP载荷里。Cain抓包时会区分协议类型FTP记录以FTP前缀标出展开后能看到USER和PASS两个命令后的值这就是登录凭据。第一次失败时Cain的密码面板里也会出现一条FTP记录但那条记录里不会有密码只有失败的用户名——因为FTP客户端根本没有发送PASS命令。实验报告里对“第一次失败仍显示信息”的疑惑到这里就有了解释Cain抓的是网络层包不是“成功登录”事件。只要网络层有数据它就会记录并展示。这个细节对理解嗅探工具非常重要它忠实记录的是流量本身不是业务逻辑。4.3 从抓包结果反推ARP欺骗的完整链路把telnet和FTP的抓包结果放到一起可以画出完整的数据流向。Win7上的用户敲入命令数据包封装成IP包在二层封装帧头时查ARP缓存发现目的IP网关对应的是XP的MAC于是将帧发往XP。XP收到后Cain记录数据同时调用Winpcap把数据原样转发给真正的网关。网关把响应发回Win7同样要经过XPCain在中间做了一次既不改变IP层也不改动内容的中继只记录流量。从攻击者的视角看XP上所有流程几乎是自动的你只需要启动毒化、被动等待。Cain替代了手工构造ARP包和手工转发的全部工作这也是这类工具的价值让攻击者可以集中精力在分析流量上而不是纠结包怎么构造。实验里“在xp中开启ftp服务win7中使用ftp命令连接到xp”的操作本质上是创造一次可采集的流量让实验的观察点真正落地。需要提醒的是ARP欺骗只能捕获通过被欺骗目标发出或接收的、且路径经过网关的流量。目标与其他主机之间不经由网关的通信并不会被截获。这个边界在真实的多人局域网里尤其明显如果只欺骗了Win7而Win7直接和另一台机器通信那些包不走网关攻击者也看不到。理解这个边界才算真正理解ARP欺骗的适用范围——它截的是“穿过网关”的流量不是局域网内所有流量。5. ARP欺骗实验避坑指南五个翻车现场与解决路径ARP欺骗的原理一句话能讲完但实验真正做到顺会碰到一堆跟原理无关的工具问题。这一章把我做这个实验以及帮别人排查时遇到最多的五个现象列出来每一条按现象、原因、解决的顺序写方便你在自己的实验里对照检查。5.1 现象1Cain扫描MAC地址后列表为空点完扫描图标进度条跑完列表里一个IP都没有网关和Win7的MAC都找不到。原因最常见的是Winpcap没装好或版本不对。Cain需要Winpcap 4.x版本的驱动支持如果之前用过其他网络工具覆盖了驱动版本Cain会无法读取网卡。另一个原因是Windows防火墙开启拦截了Cain的探测包。解决先卸载当前Winpcap重新安装Winpcap 4.1.2然后重启虚拟机。如果装了之后扫描仍旧为空把XP的防火墙临时关闭或者对Cain添加例外规则。注意Winpcap是Cain的底层依赖不是Cain自带的必须单独安装。装完Winpcap之后重启是必须的不要偷懒跳过。5.2 现象2telnet服务启动失败或连接被拒绝在XP上执行net start telnet系统提示“服务名无效”。在Win7上telnet 192.168.184.134一直等到超时或直接连接失败。原因服务名无效说明telnet服务组件根本没安装XP默认不装。连接被拒绝则分两个分支一是telnet服务没启动成功二是用户没有被加入TelnetClients组。解决先打开控制面板的“添加或删除程序—添加/删除Windows组件”勾选telnet服务端安装完成后重启。然后执行net start telnet看到“Telnet服务已启动成功”才算就绪。最后把当前用户加进TelnetClients组命令是net localgroup TelnetClients lab /add注意lab要替换成实际使用的用户名。另外Win7默认也没有telnet客户端需要在Win7上安装telnet客户端组件这一步往往被忽略。5.3 现象3FTP登录第一次失败以为账号建错了在Win7上执行ftp 192.168.184.134输入一个自定义的用户名密码服务器提示登录失败常见报错是530 User cannot log in。原因误以为FTP服务有独立的账号体系。实际上IIS的FTP服务默认用Windows本地账户做认证账号必须存在于XP系统的用户列表里密码就是该用户的登录密码。解决不要创建新账号直接在FTP命令行里输入XP本地用户如Administrator或lab的账号密码。如果还是失败检查该用户密码是否为空、是否被锁定以及IIS FTP服务的身份验证方式是否允许除匿名之外的方式。还有一个操作细节在Win7的命令提示符里输入FTP密码时要手打不要从别处复制带上多余空格否则会提交一个含空格的用户名同样登录失败。5.4 现象4ARP欺骗图标点了Cain里却抓不到任何包黄色图标已经按下ARP标签页显示毒化状态但Sniffer标签页里没有出现新数据包密码面板也一直空白。原因先排查网卡选择。如果Cain用的是错误的网卡比如虚拟机里有多块网卡而你选了与192.168.184.x网段无关的那块欺骗包会被送到错误网络。再排查ARP欺骗规则确认左边是网关、右边是Win7同时Win7的ARP缓存是否已经更新。解决在Cain主界面重新选择网卡选定IP为192.168.184.134的那块。然后在Win7上执行arp -a查看网关条目是否已经是XP的MAC。如果不是回到ARP标签页重新点击黄色图标。如果再不行在Win7上执行arp -d清空缓存立刻ping 192.168.184.2制造一次ARP查询让欺骗更快生效。抓不到包的时候不要反复点图标先冷静看Win7上的ARP缓存状态那才是欺骗是否生效的最终依据。5.5 现象5Win7的arp -a里网关MAC没变欺骗没生效ARP缓存里网关192.168.184.2对应的MAC还是真实网关的MAC没有变成XP的MAC。原因ARP欺骗规则配置正确但未触发或者Cain版本与Winpcap之间不兼容。个别版本的安全软件也会拒绝不规则ARP应答导致欺骗数据包被本地协议栈忽略。解决检查Cain的ARP规则列表确认存在“192.168.184.2 - 192.168.184.131”这条记录且状态不是暂停或停止。然后重新点一次黄色图标在Win7上连续ping网关同时观察arp -a。多次尝试如果仍无效换一套Cain版本并重装Winpcap。虚拟机环境下版本匹配有时候是玄学换版本往往比反复调试更节省时间。这里要记住一个原则ARP欺骗依赖持续发送伪造应答任何中断都会让受害者恢复正确ARP条目所以排查时先确认毒化状态是在持续而不是点了一次就结束。6. 实验收尾技巧用ARP缓存对比与静态绑定验证结果实验做到最后验证不能只看Cain里有没有账号密码还要把“欺骗是否生效”这件事用数据确认下来。我的习惯操作是这样在Win7上先执行arp -d清空ARP缓存再执行arp -a拿到一张干净的缓存表做基线。然后启动Cain的毒化等十几秒再执行一次arp -a对比网关条目的MAC变化。两次对比比单独看一次结果更能说明问题。如果两次结果没差别说明欺骗没生效赶紧回到第5章的排查路径。# 在Win7上清空并重新查看ARP缓存 arp -d arp -a # 防御视角用静态绑定固定网关MAC arp -s 192.168.184.2 00-0c-29-xx-xx-xx第一行arp -d是清空整张动态ARP缓存第二行arp -a是重新查看当前缓存。清空后再观察能排除掉陈旧缓存对判断的干扰。如果你的环境中清空后网关那条记录迟迟不出现说明Win7还没有发起访问网关的流量先ping一下网关再arp -a。第三行arp -s是静态绑定的写法把网关IP固定到真实MAC上之后即使收到伪造ARP应答也不会改写这条记录。这是最简单的ARP欺骗防御手段适合实验室环境真实网络中需要依赖交换机的DAI功能但那是另一个话题了。从那以后我每次做完ARP欺骗实验都会强制走一遍“清缓存—毒化—对比缓存—抓包确认”的完整验证链路而不是看到Cain里出现一条记录就草草收工。毕竟一条记录可能来自多种原因只有ARP缓存的变化是不可抵赖的判定依据。这个实验不难但值得你耐心做透因为中间人攻击的模型以后会在很多攻防场景里反复出现。希望这个流程能帮你在做西南科技大学这门实验课时少走弯路。本文还有配套的精品资源点击获取