| 基于ARP协议的欺骗及其预防 |
近来, 校园网用户反映网络经常断线, 网络链接速度变慢, 甚至无法上网。我们通过MRTG流量分析和网络协议分析发现是一种ARP欺骗程序的攻击所致。运行了ARP欺骗程序的计算机冒充网络网关, 截取其他用户的通讯, 导致这些用户的计算机无法正常连接到网关, 严重地影响了用户的正常上网和信息安全。
1 ARP协议及欺骗原理ARP是地址解析协议(Address Resolution Protocol)的缩写。在局域网中, 网络中实际传输的是“帧”, 帧里面需要主机网卡的MAC地址。一个主机要和另一个主机进行直接通信, 必须要知道目标主机的MAC地址, 而机主是通过ARP协议获得目标主机的MAC地址。所谓“地址解析”就是主机在发送“帧”之前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址, 查询目标设备的MAC地址, 以保证通信的顺利进行。
每台安装有TCP/IP协议的计算机主机里都有一个ARP缓存表, 表中的IP地址与MAC地址是一一对应的, 如表 1所示。
| 表 1 ARP缓存表 |
![]() |
| 点击放大 |
现以主机B(192.168.16.2)向主机C(192.168.16.3)发送数据(如表 1所示)为例来说明。当发送数据时, 表 1 ARP缓存表主机B会在自己的ARP缓存表中寻找是否有目标主机C的IP地址。如果找到了, 也就知道了目标主机C的MAC地址, 则直接把目标主机C的MAC地址写入帧里面发送就可以了; 如果在ARP缓存表中没有找到相对应的IP地址, 主机B就会在网络上发送一个广播, 即目标MAC地址是“FF.FF.FF.FF.FF. FF”的广播包, 并向同一网段内的所有主机发出这样的询问:“192.168.16.2的MAC地址是什么?”网络上其他主机并不响应ARP询问, 只有IP地址为“192.168.16.3”的主机C接收到这个帧时, 才会向主机B做出这样的回应:“192.168.16.3的MAC地址是0013.d322.a2bf”。这样, 主机B就知道了目标主机C的MAC地址, 因此就可以向主机C发送信息了。同时它还更新自己的ARP缓存表, 使得下次再向主机C发送信息时, 可直接从ARP缓存表里查找。ARP缓存表采用了老化机制, 如果表中的某一行记录在约定的时间内没有使用, 就会被删除, 这样可以减少ARP缓存表的长度, 加快查询速度。
在局域网中, 是通过ARP协议来完成第三层网络IP地址到第二层物理地址(即MAC地址)转换的, 从MAC地址到IP地址的转换则是通过RARP协议进行的。ARP协议对网络安全具有重要的意义, ARP协议的基础就是信任局域网内所有的人。但别有用心的人则利用这种信任, 通过伪造IP地址和MAC地址实现ARP欺骗。
如图 1所示, 假设主机B进行ARP欺骗的时候, 会在局域网内发广播包, 声称网关A的MAC地址是0013.d3bd.a7b0, 同时声称IP地址为192.168.16.3和192.168.16.4的主机的MAC地址为0013.d3bd.a7b0, 于是主机C和D与外部网络之间的通信数据都先发送到主机B, 由B对数据包修改后再进行转发, 使得通信的双方都察觉不到B的存在; 而此时的主机B则可以对通信的内容进行监听, 从而盗取用户名、密码等有用的信息, 并可以随时切断与被欺骗主机的连接。当局域网中的主机数量很多, 主机B要冒充大量主机时, 将持续发送大量伪造的ARP包, 从而造成局域网内主机的ARP缓存混乱, 使得局域网内主机上网不稳定, 容易出现掉线的现象。图 2是校园网中的一个的典型的ARP欺骗攻击的实际案例。
![]() |
| 图 1 ARP欺骗原理 |
![]() |
| 图 2 ARP 欺骗实例 |
从图 2可知, IP地址为202.197.59.123的主机在局域网内滥发ARP包, 冒充网关202.197.59.254和其他主机。
2 ARP欺骗行为的判定如果用户发现突然不能上网, 可以通过以下步骤进行ARP欺骗行为的判定。
2.1 检查计算机ARP缓存列表点击“开始”菜单, 选择“运行”, 然后输入“cmd”, 点击“确定”按钮, 在命令提示符窗口中输入“arp –d”命令清除本机的ARP缓存表, 然后重新尝试上网, 如果能恢复正常, 则说明此次掉线可能是受ARP欺骗攻击所致。“arp –d”命令能清除ARP缓存表, 系统会自动重建新的ARP缓存表, “arp –d”命令并不能抵御ARP欺骗攻击, 执行“arp –d”命令后仍有可能再次遭受ARP病毒攻击。
2.2 检查计算机是否有“ARP欺骗攻击”木马进程同时按住键盘上的“CTRL”和“ALT”键再按“DEL”键, 选择“任务管理器”, 点选“进程”标签。察看其中是否有一个名为“MIR0.dat”的进程。如果有, 则说明已经中毒(多数ARP欺骗木马的名称都是这个, 但也有一些其他的, 请仔细辨别)。
3 ARP欺骗的解决方案由于在实际的网络运行当中, 有很多用户根本不知道自己的计算机已经中了木马病毒, 是在不知情的情况下对别的计算机发起攻击或进行ARP欺骗的。因此, 不单要从技术上对病毒发作的计算机进行防范, 更要从管理上进行防范, 要在第一时间通知存在ARP欺骗的计算机的使用者, 告之其处理方法, 尽快解决中毒计算机的问题, 以恢复网络的正常使用。在技术上应做到以下几点。
(1) 对所管理的计算机定期进行系统升级, 确保所用的计算机都安装了最新的系统补丁, 杀毒软件的病毒特征库都升级到最新版本。
(2) 不要把你的网络安全信任关系建立在IP或MAC基础上, 应该建立在IP+MAC基础上, 即IP和MAC的绑定, RARP协议同样存在欺骗的问题。
(3) 设置静态的MAC→IP对应表, 不要让主机刷新你设定好的转换表。
(4) 管理员定期轮询, 检查主机上的ARP缓存, 检查ARP响应的真实性。
4 结语中南大学通过以上的相应措施, 在一定程度上保证了校园网络的安全、正常运行。但由于ARP欺骗病毒是发生在局域网内部, 很容易被系统管理人员或用户误判为网络主干设备工作不稳定, 而且必须通过协议分析才能定位进行ARP欺骗攻击的计算机, 这些, 都极大地增加了系统管理员的工作量。因此, 如何自动地发现、定位在进行ARP欺骗攻击的计算机, 并通知有关人员处理这些有害的计算机, 减轻系统管理员的负担是下一步需要重点解决的问题。
2007, Vol. 21


