再谈ARP病毒攻击技术分析与防御

linker14年前 (2007-03-31)系统安全185
一、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.1 0 000b.cd85.a193 ARPA Vlan256

Internet 172.20.156.5 0 000b.cd85.a193 ARPA Vlan256

Internet 172.20.156.254 0 000b.cd85.a193 ARPA Vlan256

Internet 172.20.156.53 0 000b.cd85.a193 ARPA Vlan256

Internet 172.20.156.33 0 000b.cd85.a193 ARPA Vlan256

Internet 172.20.156.13 0 000b.cd85.a193 ARPA Vlan256

Internet 172.20.156.15 0 000b.cd85.a193 ARPA Vlan256

Internet 172.20.156.14 0 000b.cd85.a193 ARPA Vlan256

二、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"

StartType = SERVICE_AUTO_START

ServiceType = SERVICE_KERNEL_DRIVER

DesiredAccess = SERVICE_ALL_ACCESS

DisplayName = "NetGroup Packet Filter Driver"

ServiceName = "Npf"

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下载到用户终端,如果能够加强用户上网的访问控制,就能极大的减少该问题的发生。 </DIV><DIV> </DIV><DIV>近些天,ARP病毒入侵网络,使大多很多用户都陷入苦难!!中招现象:掉线~~~~~~`

 在这里我在网上到的相关资料,网络高手的研究一下~~

 解决ARP攻击的方法

 【故障原因】

  局域网内有人使用ARP欺骗的木马程序(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此程序)。

  【故障原理】

  要了解故障原理,我们先来了解一下ARP协议。

  在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。

  ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。 

  每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如下表所示。  

  主机 IP地址 MAC地址

  A 192.168.16.1 aa-aa-aa-aa-aa-aa

  B 192.168.16.2 bb-bb-bb-bb-bb-bb

  C 192.168.16.3 cc-cc-cc-cc-cc-cc

  D 192.168.16.4 dd-dd-dd-dd-dd-dd  

  我们以主机A(192.168.16.1)向主机B(192.168.16.2)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问: “192.168.16.2的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应: “192.168.16.2的MAC地址是bb-bb-bb-bb-bb-bb”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

  从上面可以看出,ARP协议的基础就是信任局域网内所有的人,那么就很容易实现在以太网上的ARP欺骗。对目标A进行欺骗,A去Ping主机C却发送到了DD-DD-DD-DD-DD-DD这个地址上。如果进行欺骗的时候,把C的MAC地址骗为DD-DD-DD-DD-DD-DD,于是A发送到C上的数据包都变成发送给D的了。这不正好是D能够接收到A发送的数据包了么,嗅探成功。

  A对这个变化一点都没有意识到,但是接下来的事情就让A产生了怀疑。因为A和C连接不上了。D对接收到A发送给C的数据包可没有转交给C。

  做“man in the middle”,进行ARP重定向。打开D的IP转发功能,A发送过来的数据包,转发给C,好比一个路由器一样。不过,假如D发送ICMP重定向的话就中断了整个计划。

  D直接进行整个包的修改转发,捕获到A发送给C的数据包,全部进行修改后再转发给C,而C接收到的数据包完全认为是从A发送来的。不过,C发送的数据包又直接传递给A,倘若再次进行对C的ARP欺骗。现在D就完全成为A与C的中间桥梁了,对于A和C之间的通讯就可以了如指掌了。

  【故障现象】

  当局域网内某台主机运行ARP欺骗的木马程序时,会欺骗局域网内所有主机和路由器,让所有上网的流量必须经过病毒主机。其他用户原来直接通过路由器上网现在转由通过病毒主机上网,切换的时候用户会断一次线。

  切换到病毒主机上网后,如果用户已经登陆了传奇服务器,那么病毒主机就会经常伪造断线的假像,那么用户就得重新登录传奇服务器,这样病毒主机就可以盗号了。

  由于ARP欺骗的木马程序发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的木马程序停止运行时,用户会恢复从路由器上网,切换过程中用户会再断一次线。

  【HiPER用户快速发现ARP欺骗木马】

  在路由器的“系统历史记录”中看到大量如下的信息(440以后的路由器软件版本中才有此提示):

  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地址)。

  【在局域网内查找病毒主机】

  在上面我们已经知道了使用ARP欺骗木马的主机的MAC地址,那么我们就可以使用NBTSCAN(下载地址:http://www.utt.com.cn/upload/nbtscan.rar)工具来快速查找它。

  NBTSCAN可以取到PC的真实IP地址和MAC地址,如果有”传奇木马”在做怪,可以找到装有木马的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(这里需要根据用户实际网段输入),回车。  

  C:Documents and SettingsALAN>C:
btscan -r 192.168.16.1/24

  Warning: -r option not supported under Windows. Running without it.  

  Doing NBT name scan for addresses from 192.168.16.1/24  

  IP address NetBIOS Name Server User MAC address

  ------------------------------------------------------------------------------

  192.168.16.0 Sendto failed: Cannot assign requested address

  192.168.16.50 SERVER 00-e0-4c-4d-96-c6

  192.168.16.111 LLF ADMINISTRATOR 00-22-55-66-77-88

  192.168.16.121 UTT-HIPER 00-0d-87-26-7d-78

  192.168.16.175 JC 00-07-95-e0-7c-d7

  192.168.16.223 test123 test123 00-0d-87-0d-58-5f  

  3)通过查询IP--MAC对应表,查出“000d870d585f”的病毒主机的IP地址为“192.168.16.223”。

  【解决思路】

  1、不要把你的网络安全信任关系建立在IP基础上或MAC基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。

  2、设置静态的MAC-->IP对应表,不要让主机刷新你设定好的转换表。

  3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。

  4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。

  5、使用""proxy""代理IP的传输。

  6、使用硬件屏蔽主机。设置好你的路由,确保IP地址能到达合法的路径。(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。

  7、管理员定期用响应的IP包中获得一个rarp请求,然后检查ARP响应的真实性。

  8、管理员定期轮询,检查主机上的ARP缓存。

  9、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。

【HiPER用户的解决方案】

  建议用户采用双向绑定的方法解决并且防止ARP欺骗。

  1、在PC上绑定路由器的IP和MAC地址:

  1)首先,获得路由器的内网的MAC地址(例如HiPER网关地址192.168.16.254的MAC地址为0022aa0022aa局域网端口MAC地址>)。

  2)编写一个批处理文件rarp.bat内容如下:

  @echo off

  arp -d

  arp -s 192.168.16.254 00-22-aa-00-22-aa

  将文件中的网关IP地址和MAC地址更改为您自己的网关IP地址和MAC地址即可。

  将这个批处理软件拖到“windows--开始--程序--启动”中。
标签: asp攻防技巧

相关文章

15年前 (2006-03-19)
FLASH也能扫描13年前 (2007-08-17)
狙击4899肉鸡15年前 (2006-03-31)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。