ARP欺骗攻击技术讲座
作者:admin 日期:2007-08-07
最近一段时间,在很多校园或网吧局域网内的主机出现频繁断网的现象,引起这种现象的主要原因是局域网内部存在ARP欺骗攻击。以下就针对这种攻击的原理和防范方法进行简单介绍。
什么是ARP协议
要想了解ARP欺骗攻击的原理,首先就要了解什么是ARP协议。ARP是地址转换协议的英文缩写,它是一个链路层协议,工作在OSI模型的第二层,在本层和硬件接口间进行联系,同时为上层(网络层)提供服务。
我们知道,二层的以太网交换设备并不能识别32位的IP地址,它们是以48位以太网地址(就是我们常说的MAC地址)传输以太网数据包的。因此IP地址与MAC地址之间就必须存在一种对应关系,而ARP协议就是用来确定这种对应关系的协议。
ARP工作时,首先请求主机发送出一个含有所希望到达的IP地址的以太网广播数据包,然后目标IP的所有者会以一个含有IP和MAC地址对的数据包应答请求主机。这样请求主机就能获得要到达的IP地址对应的MAC地址,同时请求主机会将这个地址对放入自己的ARP表缓存起来,以节约不必要的ARP通信。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用(Windows系统这个时间为2分钟,而Cisco路由器的这个时间为5分钟),就会被删除。通过下面的例子我们可以很清楚地看出ARP的工作机制。
假定有如下五个IP地址的主机或者网络设备,它们分别是:
主机A 192.168.1.2
主机B 192.168.1.3
网关C 192.168.1.1
主机D 10.1.1.2
网关E 10.1.1.1
假如主机A要与主机B通信,它首先会检查自己的ARP缓存中是否有192.168.1.3这个地址对应的MAC地址,如果没有它就会向局域网的广播地址发送ARP请求包,大致的意思是192.168.1.3的MAC地址是什么请告诉192.168.1.2,而广播地址会把这个请求包广播给局域网内的所有主机,但是只有192.168.1.3这台主机才会响应这个请求包,它会回应192.168.1.2一个ARP包,大致的意思是192.168.1.3的MAC地址是02-02-02-02-02-02。这样的话主机A就得到了主机B的MAC地址,并且它会把这个对应的关系存在自己的ARP缓存表中。之后主机A与主机B之间的通信就依靠两者缓存表里的MAC地址来通信了,直到通信停止后2分钟,这个对应关系才会从表中被删除。
再来看一个非局域网内部的通信过程。假如主机A需要和主机D进行通信,它首先会发现这个主机D的IP地址并不是自己同一个网段内的,因此需要通过网关来转发,这样的话它会检查自己的ARP缓存表里是否有网关192.168.1.1对应的MAC地址,如果没有就通过ARP请求获得,如果有就直接与网关通信,然后再由网关C通过路由将数据包送到网关E,网关E收到这个数据包后发现是送给主机D(10.1.1.2)的,它就会检查自己的ARP缓存,看看里面是否有10.1.1.2对应的MAC地址,如果没有就使用ARP协议获得,如果有就是用该MAC地址与主机D通信。
通过上面的例子我们知道,在以太局域网内数据包传输依靠的是MAC地址,IP地址与MAC对应的关系依靠ARP表,每台主机(包括网关)都有一个ARP缓存表。在正常情况下这个缓存表能够有效保证数据传输的一对一性,像主机B之类的是无法截获A与D之间的通信信息的。
但是主机在实现ARP缓存表的机制中存在一个不完善的地方,当主机收到一个ARP的应答包后,它并不会去验证自己是否发送过这个ARP请求,而是直接将应答包里的MAC地址与IP对应的关系替换掉原有的ARP缓存表里的相应信息。这就导致主机B截取主机A与主机D之间的数据通信成为可能。
首先主机B向主机A发送一个ARP应答包说192.168.1.1的MAC地址是02-02-02-02-02-02,主机A收到这个包后并没有去验证包的真实性而是直接将自己ARP列表中的192.168.1.1的MAC地址替换成02-02-02-02-02-02,同时主机B向网关C发送一个ARP响应包说192.168.1.2的MAC是02-02-02-02-02-02,同样,网关C也没有去验证这个包的真实性就把自己ARP表中的192.168.1.2的MAC地址替换成02-02-02-02-02-02。当主机A想要与主机D通信时,它直接把应该发送给网关192.168.1.1的数据包发送到02-02-02-02-02-02这个MAC地址,也就是发给了主机B,主机B在收到这个包后经过修改再转发给真正的网关C,当从主机D返回的数据包到达网关C后,网关也使用自己ARP表中的MAC,将发往192.168.1.2这个IP地址的数据发往02-02-02-02-02-02这个MAC地址也就是主机B,主机B在收到这个包后再转发给主机A完成一次完整的数据通信,这样就成功地实现了一次ARP欺骗攻击。
因此简单点说,ARP欺骗的目的就是为了实现全交换环境下的数据监听。大部分的木马或病毒使用ARP欺骗攻击也是为了达到这个目的。
“AddressResolutionProtocol”“地址解析协议”的缩写),病毒发作时其症状表现为计算机网络连接正常,却无法打开网页;或由于ARP欺骗的木马程序(病毒)发作时发出大量的数据包,导致校园网用户上网不稳定,极大地影响了校园网用户的正常使用,给整个校园网的安全带来严重的隐患。
该病毒原理:
当局域网内某台主机运行ARP欺骗的木马程序时,会欺骗局域网内所有主机和交换机,让所有上网的流量必须经过病毒主机。其他用户原来直接通过交换机上网现在转由通过病毒主机上网,切换的时候用户会断一次线。由于ARP欺骗的木马程序发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的木马程序停止运行时,用户会恢复从交换机上网(此时交换机MAC地址表正常),切换过程中用户会再断一次线。该病毒发作时,仅影响同网段内机器的正常上网。
为此,特提醒校园网用户务必采取以下措施。
一、校园网用户要增强网络安全意识,不要轻易下载、使用盗版和存在安全隐患的软件;或浏览一些缺乏可信度的网站(网页);不要随便打开不明来历的电子邮件,尤其是邮件附件;不要随便共享文件和文件夹,即使要共享,也得设置好权限,一般指定特定帐号或特定机器才能访问,另外不建议设置可写或可控制,以免个人计算机受到木马病毒的侵入给校园网的安全带来隐患。
二、校园网计算机用户要及时下载和更新操作系统的补丁程序,安装正版的杀毒软件,增强个人计算机防御计算机病毒的能力。
三、用户检查和处理“ARP欺骗”木马的方法。
检查本机的“ARP欺骗”木马染毒进程,同时按住键盘上的“CTRL”和“ALT”键再按“DEL”键,选择“任务管理器”,点选“进程”标签。察看其中是否有一个名为“MIR0.dat”之类的进程。如果有,则说明已经中毒。右键点击此进程后选择“结束进程”。
在受到ARP欺骗木马程序(病毒)攻击时,用户可选择下列方法的一种处理。
方法一:下载AntiARPSniffer软件保护本地计算机正常运行(点击下载)。同时把此软件设为自动启动,步骤:先把Antiarp.exe生成桌面快捷方式->选"开始"->"程序"->双击"启动"->再把桌面上Antiarp.exe快捷键拷到"启动"中,以保证下次开机自动运行,起到保护的作用。
方法二:在“开始”-“程序”-“附件”菜单下调出“命令提示符”。输入并执行以下命令:ipconfig
记录网关IP地址,即“DefaultGateway”对应的值,例如“10.10.10.1”。再输入并执行以下命令:
arp–a
在“InternetAddress”下找到上步记录的网关IP地址,记录其对应的物理地址,即“PhysicalAddress”值,例如“00-01-e8-1f-35-54”。在网络正常时这就是网关的正确物理地址,在网络受“ARP欺骗”木马影响而不正常时,它就是木马所在计算机的网卡物理地址。也可以扫描本子网内的全部IP地址,然后再查ARP表。如果有一个IP对应的物理地址与网关的相同,那么这个IP地址和物理地址就是中毒计算机的IP地址和网卡物理地址。本方法可在一定程度上减轻中木马的其它计算机对本机的影响。用上边介绍的方法确定正确的网关IP地址和网关物理地址,然后在“命令提示符”窗口中输入并执行以下命令:
arp–s网关IP网关物理地址。
方法三:局域网ARP攻击免疫器(点击下载)。(1)将这里面3个dll文件复制到windows\system32里面,将npf这个文件复制到windows\system32\drivers里面。(2)将这4个文件在安全属性里改成只读。也就是不允许任何人修改。
四、以下程序带有此类ARP病毒(传奇杀手等),请不要使用:
传奇2冰橙子1.44版
传奇2及时雨PK版
"网吧传奇杀手"的木马软件进行传奇帐号和密码的扫描
网络执法官等类似程序
五、若用户未按上述要求采取任何安全措施,导致个人计算机在校园网上发送大量的病毒数据包,影响了校园网的安全,我中心将采取有效措施令其离线杀毒。
一、ARP Spoofing攻击原理分析
在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞或者实现“man in the middle” 进行ARP重定向和嗅探攻击。
用伪造源MAC地址发送ARP响应包,对ARP高速缓存机制的攻击。
每个主机都用一个ARP高速缓存存放最近IP地址到MAC硬件地址之间的映射记录。MS Windows高速缓存中的每一条记录(条目)的生存时间一般为60秒,起始时间从被创建时开始算起。
默认情况下,ARP从缓存中读取IP-MAC条目,缓存中的IP-MAC条目是根据ARP响应包动态变化的。因此,只要网络上有ARP响应包发送到本机,即会更新ARP高速缓存中的IP-MAC条目。
攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和 MAC地址存储在ARP缓存中。因此,B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A可不知道被伪造了)。
当攻击源大量向局域网中发送虚假的ARP信息后,就会造成局域网中的机器ARP缓存的崩溃。
Switch上同样维护着一个动态的MAC缓存,它一般是这样,首先,交换机内部有一个对应的列表,交换机的端口对应MAC地址表Port n <-> Mac记录着每一个端口下面存在那些MAC地址,这个表开始是空的,交换机从来往数据帧中学习。因为MAC-PORT缓存表是动态更新的,那么让整个 Switch的端口表都改变,对Switch进行MAC地址欺骗的Flood,不断发送大量假MAC地址的数据包,Switch就更新MAC-PORT缓存,如果能通过这样的办法把以前正常的MAC和Port对应的关系破坏了,那么Switch就会进行泛洪发送给每一个端口,让Switch基本变成一个 HUB,向所有的端口发送数据包,要进行嗅探攻击的目的一样能够达到。也将造成Switch MAC-PORT缓存的崩溃,如下下面交换机中日志所示:
Internet 172.20.156.10000b.cd85.a193 ARPAVlan256 |
二、ARP病毒分析
当局域网内某台主机运行ARP欺骗的木马程序时,会欺骗局域网内所有主机和路由器,让所有上网的流量必须经过病毒主机。其他用户原来直接通过路由器上网现在转由通过病毒主机上网,切换的时候用户会断一次线。切换到病毒主机上网后,如果用户已经登陆了传奇服务器,那么病毒主机就会经常伪造断线的假像,那么用户就得重新登录传奇服务器,这样病毒主机就可以盗号了。
由于ARP欺骗的木马程序发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的木马程序停止运行时,用户会恢复从路由器上网,切换过程中用户会再断一次线。
在路由器的“系统历史记录”中看到大量如下的信息:
MAC Chged 10.128.103.124 MAC Old 00:01:6c:36:d1:7f MAC New 00:05:5d:60:c7:18 |
这个消息代表了用户的MAC地址发生了变化,在ARP欺骗木马开始运行的时候,局域网所有主机的MAC地址更新为病毒主机的MAC地址(即所有信息的MAC New地址都一致为病毒主机的MAC地址),同时在路由器的“用户统计”中看到所有用户的MAC地址信息都一样。
如果是在路由器的“系统历史记录”中看到大量MAC Old地址都一致,则说明局域网内曾经出现过ARP欺骗(ARP欺骗的木马程序停止运行时,主机在路由器上恢复其真实的MAC地址)。
BKDR_NPFECT.A病毒引起ARP欺骗之实测分析
Part1. 病毒现象
中毒机器在局域网中发送假的APR应答包进行APR欺骗, 造成其他客户机无法获得网关和其他客户机的网卡真实MAC地址,导致无法上网和正常的局域网通信.
Part2. 病毒原理分析:
病毒的组件
本文研究的病毒样本有三个组件构成:
%windows%\SYSTEM32\LOADHW.EXE(108,386 bytes) ….. ”病毒组件释放者”
%windows%\System32\drivers\npf.sys(119,808 bytes) ….. ”发ARP欺骗包的驱动程序”
%windows%\System32\msitinit.dll (39,952 bytes)…”命令驱动程序发ARP欺骗包的控制者”
病毒运作基理:
1.LOADHW.EXE 执行时会释放两个组件npf.sys 和msitinit.dll .
LOADHW.EXE释放组件后即终止运行.
注意: 病毒假冒成winPcap的驱动程序,并提供winPcap的功能. 客户若原先装有winPcap,
npf.sys将会被病毒文件覆盖掉.
2.随后msitinit.dll将npf.sys注册(并监视)为内核级驱动设备: "NetGroup Packet Filter Driver"
msitinit.dll 还负责发送指令来操作驱动程序npf.sys (如发送APR欺骗包, 抓包, 过滤包等)
以下从病毒代码中提取得服务相关值:
BinaryPathName = "system32\drivers\npf.sys" |
3. npf.sys 负责监护msitinit.dll. 并将LOADHW.EXE注册为自启动程序:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
dwMyTest =LOADHW.EXE
注: 由于该项位于RunOnce下,该注册表启动项在每次执行后,即会被系统自动删除.
Part3. 反病毒应急响应解决方案
按以下顺序删除病毒组件
1) 删除 ”病毒组件释放者”
%windows%\SYSTEM32\LOADHW.EXE
2) 删除 ”发ARP欺骗包的驱动程序” (兼 “病毒守护程序”)
%windows%\System32\drivers\npf.sys
a. 在设备管理器中, 单击”查看”-->”显示隐藏的设备”
b. 在设备树结构中,打开”非即插即用….”
c. 找到” NetGroup Packet Filter Driver” ,若没找到,请先刷新设备列表
d. 右键点击” NetGroup Packet Filter Driver” 菜单,并选择”卸载”.
e. 重启windows系统,
f.删除%windows%\System32\drivers\npf.sys
3) 删除 ”命令驱动程序发ARP欺骗包的控制者”
%windows%\System32\msitinit.dll
2. 删除以下”病毒的假驱动程序”的注册表服务项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Npf
三、定位ARP攻击源头和防御方法
1.定位ARP攻击源头
主动定位方式:因为所有的ARP攻击源都会有其特征——网卡会处于混杂模式,可以通过ARPKiller这样的工具扫描网内有哪台机器的网卡是处于混杂模式的,从而判断这台机器有可能就是“元凶”。定位好机器后,再做病毒信息收集,提交给趋势科技做分析处理。
标注:网卡可以置于一种模式叫混杂模式(promiscuous),在这种模式下工作的网卡能够收到一切通过它的数据,而不管实际上数据的目的地址是不是它。这实际就是Sniffer工作的基本原理:让网卡接收一切它所能接收的数据。
被动定位方式:在局域网发生ARP攻击时,查看交换机的动态ARP表中的内容,确定攻击源的MAC地址;也可以在局域居于网中部署Sniffer工具,定位ARP攻击源的MAC。
也可以直接Ping网关IP,完成Ping后,用ARP –a查看网关IP对应的MAC地址,此MAC地址应该为欺骗的MAC。
使用NBTSCAN可以取到PC的真实IP地址、机器名和MAC地址,如果有”ARP攻击”在做怪,可以找到装有ARP攻击的PC的IP、机器名和MAC地址。
命令:“nbtscan -r 192.168.16.0/24”(搜索整个192.168.16.0/24网段, 即192.168.16.1-192.168.16.254);或“nbtscan 192.168.16.25-137”搜索192.168.16.25-137 网段,即192.168.16.25-192.168.16.137。输出结果第一列是IP地址,最后一列是MAC地址。
NBTSCAN的使用范例:
假设查找一台MAC地址为“000d870d585f”的病毒主机。
1)将压缩包中的nbtscan.exe 和cygwin1.dll解压缩放到c:下。
2)在Windows开始—运行—打开,输入cmd(windows98输入“command”),在出现的DOS窗口中输入:C: btscan -r 192.168.16.1/24(这里需要根据用户实际网段输入),回车。
3)通过查询IP--MAC对应表,查出“000d870d585f”的病毒主机的IP地址为“192.168.16.223”。
通过上述方法,我们就能够快速的找到病毒源,确认其MAC——〉机器名和IP地址。
2.防御方法
a.使用可防御ARP攻击的三层交换机,绑定端口-MAC-IP,限制ARP流量,及时发现并自动阻断ARP攻击端口,合理划分VLAN,彻底阻止盗用IP、MAC地址,杜绝ARP的攻击。
b.对于经常爆发病毒的网络,进行Internet访问控制,限制用户对网络的访问。此类ARP攻击程序一般都是从Internet下载到用户终端,如果能够加强用户上网的访问控制,就能极大的减少该问题的发生。
c.在发生ARP攻击时,及时找到病毒攻击源头,并收集病毒信息,可以使用趋势科技的SIC2.0,同时收集可疑的病毒样本文件,一起提交到趋势科技的TrendLabs进行分析,TrendLabs将以最快的速度提供病毒码文件,从而可以进行ARP病毒的防御。
局域网内一旦有ARP的攻击存在,会欺骗局域网内所有主机和网关,让所有上网的流量必须经过ARP攻击者控制的主机。其他用户原来直接通过网关上网,现在却转由通过被控主机转发上网。由于被控主机性能和程序性能的影响,这种转发并不会非常流畅,因此就会导致用户上网的速度变慢甚至频繁断线。另外ARP欺骗需要不停地发送ARP应答包,会造成网络拥塞。
一旦怀疑有ARP攻击我们就可以使用抓包工具来抓包,如果发现网内存在大量ARP应答包,并且将所有的IP地址都指向同一个MAC地址,那么就说明存在ARP欺骗攻击,并且这个MAC地址就是用来进行ARP欺骗攻击的主机MAC地址,我们可以查出它对应的真实IP地址,从而采取相应的控制措施。另外,我们也可以到路由器或者网关交换机上查看IP地址与MAC地址的对应表,如果发现某一个MAC对应了大量的IP地址,那么也说明存在ARP欺骗攻击,同时通过这个MAC地址查出用来ARP欺骗攻击的主机在交换机上所对应的物理端口,从而进行控制。
如何防范?
我们可以采取以下措施防范ARP欺骗。
(1)在客户端使用arp命令绑定网关的真实MAC地址命令如下:
arp (先清除错误的ARP表)
arp 192.168.1.1 03-03-03-03-03-03 (静态指定网关的MAC地址)
(2)在交换机上做端口与MAC地址的静态绑定。
(3)在路由器上做IP地址与MAC地址的静态绑定。
(4)使用“ARP SERVER”按一定的时间间隔广播网段内所有主机的正确IP-MAC映射表。
(5)最主要是要提高用户的安全意识,养成良好的安全习惯,包括:及时安装系统补丁程序;为系统设置强壮的密码;安装防火墙;安装有效的杀毒软件并及时升级病毒库;不主动进行网络攻击,不随便运行不受信任的软件。