【网络攻防】ARP欺骗实验
实验概述
ARP欺骗是一类地址欺骗类病毒,属于木马病毒,自身不具备主动传播的特性,不会自我复制。但是由于其发作的时候会不断向全网发送伪造的ARP数据包,导致网络无法正常运行,严重的甚至可能带来整个网络的瘫痪。此外,黑客还会通过这种攻击手段窃取用户密码,如盗取QQ密码、盗取各种网络游戏密码和账号、盗窃网上银行账号,给用户造成了很大的不便和巨大的经济损失。因此,它的危害比一些蠕虫病毒还要厉害。
电脑感染ARP病毒后的表现为:网速时快时慢,极其不稳定,局域网内频繁性区域或整体掉线,重启计算机或网络设备后恢复正常;网上银行、游戏及QQ账号的频繁丢失。随着加密技术的不断提高,ARP病毒在盗取用户账号、密码时遇到了很大的难度。于是又出现了一类新的ARP病毒,该类ARP病毒保留了ARP病毒的基本功能,即向全网发送伪造的ARP欺骗广播,将自身伪装成网关。在此基础上,对用户发出的HTTP请求访问进行修改,在其中插入恶意网址链接,用户在不知情的情况下点击这些链接时,木马病毒就会利用系统漏洞种植到用户电脑中,从而使用户电脑感染病毒。
实验目的
- 掌握ARP协议的基本概念及其缺陷
- 认识到ARP欺骗的危害
- 掌握ARP欺骗的两种工作原理
- 掌握ARP欺骗时表现出的基本特征
- 掌握ARP欺骗的防范策略
- 学会在现实环境中解决ARP攻击
实验原理
一、什么是ARP协议
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。我们知道在局域网中,网络以“帧”的形式传输数据。一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址,目标主机的MAC地址理应就包含在数据帧中。显然在双方通信之初,发送方是无法知道目标MAC地址的,它的获得就是通过地址解析这个过程。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
二、ARP协议的工作原理
ARP数据包根据接收对象不同,可分为两种:
1. 广播包(Broadcast)。广播包目的MAC地址为FF-FF-FF-FF-FF-FF,网络设备如交换机接收到广播包后,会把它转发给局域网内的所有主机。
2. 非广播包(Non-Broadcast)。非广播包后只有指定的主机才能接收到。
ARP数据包根据功能不同,也可以分为两种:
- ARP请求包(ARP Request):作用是用于获取局域网内某IP对应的MAC地址。
- ARP回复包(ARP Reply):作用是告知别的主机,本机的IP地址和MAC是什么。
 广播的一般都是ARP请求包,非广播的一般都是ARP回复包。
 我们通过一个案例简单分析一下。假设局域网内有以下两台主机,主机名、IP地址、MAC地址分别如表 12.1.1所示:
 表1 两台主机的IP地址及MAC地址
  
 当主机A需要与主机B进行通讯时,它会先查一下本机的ARP缓存中,有没有主机B的MAC地址。如果有就可以直接通讯。如果没有,主机A就需要通过ARP协议来获取主机B的MAC地址。具体做法是主机A会形成一个ARP请求,以物理广播地址在本子网上广播,并等待目的主机的应答。这个请求包含发送方的IP地址、物理地址以及目标主机的IP地址。
 当主机B接收到来自主机A的“ARP广播-请求”数据包后,它会先把主机A的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,然后它会给主机A发送一个“ARP非广播-回复”数据包,当主机A接收到主机B的回复后,它会把主机B的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,之后主机A和B就可以进行通讯了。图 1显示了两台网络设备的ARP表。
  
 图 1 两台设备的ARP表
从上述局域网主机通讯过程可以看出,主机在两种情况下会保存、更新本机的ARP缓存表:
1. 接收到“ARP广播-请求”包时
2. 接收到“ARP非广播-回复”包时
通过以上分析我们可以看出,ARP协议是没有身份验证机制的,局域网内任何主机都可以随意伪造ARP数据包,ARP协议设计天生就存在严重缺陷。ARP欺骗的过程基本思路是PC03首先向PC02发送了一个ARP数据包,作用相当于告诉PC02:“我是10.0.0.1,我的MAC地址是03-03-03-03-03-03”,接着他也向GateWay也发送了一个ARP数据包,作用相当于告诉GateWay:“我是10.0.0.2,我的MAC地址是03-03-03-03-03-03”。欺骗成功后,主机PC02与GateWay之间的数据流向,以及它们各自的ARP缓存表就变成如图 2所示:

图 2 ARP欺骗后的网络设备保存的ARP表
三、ARP欺骗的防范策略
ARP欺骗木马只需成功感染一台电脑,就可能导致整个局域网都无法上网,严重的甚至可能带来整个网络的瘫痪。
1、 清空ARP缓存
点击“开始”按钮->选择“运行”->输入“arp -d”->点击“确定”按钮,然后重新尝试上网,如能恢复正常,则说明此次掉线可能是受ARP欺骗所致。
2 、个人主机ARP绑定
通过执行“arp -s 210.31.197.94 00-03-6b-7f-ed-02”,临时绑定主机IP与MAC地址。或者,通过建立一批处理文件,绑定IP和MAC。方法如下:
@echo off
arp -d
arp -s IP MAC
每次开机,计算机都会执行一次静态ARP地址绑定,从而较好地防范ARP欺骗。如果能在机器和路由器中都进行绑定,效果会更好。
3 采用适当的杀毒与防范软件
诺顿、卡巴斯基、瑞星等杀毒软件均可查杀此类病毒。蓝盾防火墙、蓝盾UTM、ARP防火墙、风云防火墙等,都是针对性较强的防ARP欺骗攻击软件,可以起到防范甚至追踪ARP攻击源的作用。
实验环境
ARP攻击源向服务器发送带有虚假MAC地址信息的ARP包给服务器(靶机),导致服务器收到错误的网路信息(实验拓扑图如下)。

图 3 实验拓扑图
备注:开启靶机windows和linux,在linux终端运行工具ettercap,对windows靶机进行攻击(linux终端运行:ettercap -G)。
实验步骤
- 打开ARP攻击源,在终端中输入ifconfig –a,可以查看攻击源的IP地址、广播地址、子网掩码等攻击源的相关网络信息。(图 4)

图 4 ARP攻击源相关网络信息
- 在终端中输入ipconfig /all,可以查看靶机的IP地址、广播地址、子网掩码等靶机的相关网络信息。(图 5)
 在windows靶机网络设置中添加DNS:8.8.8.8,并测试靶机能上网后才进行以下实验。

图 5 靶机相关网络信息
- 在靶机终端中输入“ping 172.16.2.254”,可以查看网关的畅通与否。此时再次输入“ping 172.16.2.10”, 可以看到网关可以ping通本网段的其他机器。这里以某一学生的靶机为例子。

图 6查看网关的畅通与否
打开浏览器IE,并输入百度的主页网址,结果表明网络畅通(图 7)。

图 7 网络畅通
- 在ARP攻击源的linux终端中,输入“sudo ettercap –G”,登录ettercap软件(图8)。

图 8 登录ettercap
- 依次点击:Sniff>Unified sniffing>Network interface中选择当前的网卡(图 9、图 10)。

图 9 点击sniff

图 10 选择当前网卡
- 扫描该网段的所有主机的相关信息,并显示主机列表。(图 11、图 12、图 13、图 14)

图 11 选择Scan for hosts
扫描完成后

图 12扫描所有主机的相关信息
即可查看扫描到的主机列表:

图 13 选择Hosts list

图 14查看扫描到的主机列表
- 向目标框中添加网关IP和靶机的IP,并执行ARP欺骗:
 选择网关IP MAC 添加 > add to target 1

图 15 add to target 1
添加目标ip,也就是要欺骗的ip,添加到target 2,如下图 16:

图 16添加目标ip
跳转到当前的目标,也就是点击targets->current targets,如下图 17:

图 17跳转到当前的目标
开始Arp欺骗,选择Mitm->Arp poisoning..,进行欺骗,如下图 18:

图 18选择Mitm->Arp poisoning
勾上,点击OK 开始欺骗。

图19 开始ARP欺骗
- 回到靶机的终端中,再依次输入“ping –n 5 172.16.2.254”和“ping –n 5 www.baidu.com”,发现网关地址和百度网址都ping不通,打开浏览器IE,并输入百度的主页网址,结果表明此时网络不通畅(图 20、图 21)。

图20 网关地址无法ping通

图21 网络不通畅
- 退出 ARP欺骗攻击,在靶机cmd中清理一下ARP缓存“arp -d”,再次测试查看靶机的网络情况(图 22、图 23)

图22 退出ARP欺骗攻击

图23 查看靶机网络情况
可以看到由于ARP欺骗攻击,会造成靶机的网络瘫痪,由此可见,防范ARP欺骗攻击对于保护自身网络安全的重要性。
思考总结
- ARP协议有哪些缺陷?
- ARP欺骗的两种工作原理分别是什么?
- ARP欺骗发生时,所表现出的基本特征是什么?
- 如何防范ARP欺骗?
【网络攻防】ARP欺骗实验的更多相关文章
- 20145306 张文锦 网络攻防 web基础
		20145306 网络攻防 web基础 实验内容 WebServer:掌握Apache启停配置修改(如监听端口)前端编程:熟悉HTML+JavaScript.了解表单的概念编写不同的HTML网页,放入 ... 
- kali Linux 渗透测试 | ettercap图形界面(ARP 欺骗 + DNS欺骗)
		上次我们使用 arpspoof 工具在命令行中完成了 arp 欺骗实验,今天我们用另一种工具 ettercap 工具来实现.ettercap支持图形化操作,对新手非常友好,并且操作非常简单, ette ... 
- ARP欺骗病毒,网页“篡改”,注入iframe代码!
		---------------权威资料看这里--------------- 清华大学信息网络工程研究中心-中国教育和科研计算机网应急响应组<ARP 欺骗网页劫持攻击分析>PDF文件,直接I ... 
- 20155313 杨瀚 《网络对抗技术》实验一  PC平台逆向破解(5)M
		exp1 PC平台逆向破解(5)M 一.实验内容 1.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 2.利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发 ... 
- 20169214 2016-2017-2 《网络攻防实践》第十一周实验 SQL注入
		20169214 2016-2017-2 <网络攻防实践>SQL注入实验 SQL注入技术是利用web应用程序和数据库服务器之间的接口来篡改网站内容的攻击技术.通过把SQL命令插入到Web表 ... 
- 20155201 网络攻防技术 实验九 Web安全基础
		20155201 网络攻防技术 实验九 Web安全基础 一.实践内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.报告内容: 1. 基础问题回答 1)SQL注入攻击 ... 
- 20155201 网络攻防技术 实验八 Web基础
		20155201 网络攻防技术 实验八 Web基础 一.实践内容 Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. We ... 
- 20155235 《网络攻防》 实验九 Web安全基础
		20155235 <网络攻防> 实验九 Web安全基础 实验内容 SQL注入攻击 XSS攻击 CSRF攻击 WebGoat WebGoat是OWASP组织研制出的用于进行web漏洞实验的应 ... 
- 【网络编程4】网络编程基础-ARP响应(ARP欺骗之中间人攻击)
		arp欺骗->arp响应 ARP 缓存中毒(ARP欺骗) arp传送原理在于主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址:收到返回消 ... 
- 20155201 网络攻防技术 实验五 MSF基础应用
		20155201 网络攻防技术 实验五 MSF基础应用 一.实践内容 一个主动攻击实践,如ms08_067 一个针对浏览器的攻击,如ms11_050 一个针对客户端的攻击,如Adobe 成功应用任何一 ... 
随机推荐
- vue基础4
			Q:1.动画的使用方法以及动画库的使用方式 2.vue中的指令有哪些? 3.vue中生命周期钩子函数有哪些?分别代表什么含义? 4.filter的语法是什么? 5.computed的特点是什么? 6. ... 
- 【BUG排查记】HttpUtil和SpringSecurity结合的坑
			一.背景 最近为了做微服务高可用和优化上线流程,我参与了一个微服务的改造开发. 主要包括redis切换哨兵模式.接入高可用xxljob集群.配置和升级脚本优化. 二.问题描述 项目改造提测后,测试 ... 
- 基于Qt的OFD阅读器开发原理与实践
			摘要 本文详细探讨了基于Qt开发OFD阅读器的原理与实践.通过解析OFD文件格式.构建文档结构.实现页面渲染.处理用户交互以及进行性能优化,本文展示了如何使用Qt框架开发一个功能强大.性能优异的OFD ... 
- 基于Fluss 的流式湖仓架构
			目录 1. What 2. 架构 2.1 CoordinatorServer 2.2 TabletServer 2.3 LogStore 2.4 KvStore 2.5 Tablet / Bucket ... 
- [rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(04):实现窗口主题(颜色)变换(暨menu菜单的使用)
			前言 本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发. iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动. 本合集是基于新版本的关于分 ... 
- Collection接口与其子接口实现类-----总复习
			数组与集合 1. 集合与数组存储数据概述:集合.数组都是对多个数据进行存储操作的结构,简称Java容器.说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi, ... 
- 0424-字节输出流FileOutputStream
			package A10_IOStream; import java.io.FileOutputStream; import java.io.IOException; import java.util. ... 
- Qt Quick 实现一个右下角弹出消息的组件
			目录 开发环境 简介 预览图 如何使用 代码 main.qml MessageView.qml Background.qml ScroolBar.qml MessageQueueView.qml 开发 ... 
- DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)
			大家好,我是汤师爷~ 最近,DeepSeek这款AI工具爆火国内外. 虽然许多人都开始尝试使用它,但有人吐槽说,没想象中那么牛. 其实问题不在工具,很多人的使用姿势就搞错了,用大炮打蚊子,白白浪费De ... 
- Ceph的crush算法与一致性hash对比介绍
			本文分享自天翼云开发者社区<Ceph的crush算法与一致性hash对比介绍>,作者:l****n 首先,我们先回顾下一致性hash以及其在经典存储系统中的应用. 一致性hash的基本原理 ... 
