China Open source community
站内导航:
站内排行前50热点文章

精华文章  GDB调试精粹及使用实例
普通文章  STL中map用法详解
精华文章  负载均衡软件比较(Hapr...
普通文章  头文件的重复引用
普通文章  递归函数的调用过程
普通文章  TCP三次握手/四次挥手详解
普通文章  贪心策略的理论基础——...
普通文章  BMH算法原理与实现(模...
普通文章  排列组合与回溯算法
普通文章  DP动态规划
精华文章  Android线程模型
普通文章  Linux socket编程之套接字
普通文章  Linux内核中的红黑树
精华文章  linux下使用minicom的几...
普通文章  Java开源Html解析类库
精华文章  enum类型的本质
普通文章  memcached server LRU ...
普通文章  linux设置环境变量的方法
普通文章  android核心模块及相关...
普通文章  linux源代码包(.tar.g...
普通文章  L.A.M.P配置过程
普通文章  在ubuntu9.10下安装QT4...
普通文章  C/C++程序员常见面试题...
普通文章  gcc编译过程概述
普通文章  python的memcache和jso...
普通文章  应用程序二进制接口---ABI
普通文章  linux内核编译问题
普通文章  Java多线程实现简单实例
普通文章  Python程序员常用的IDE...
普通文章  brk和sbrk详述
普通文章  优化C语言代码(程序员必...
普通文章  python非贪婪,多行匹配...
普通文章  函数指针传递和全局指针...
普通文章  Unix操作系统的历史演变
普通文章  网络编程之C10K问题
普通文章  发行版发布:CentOS 5.4
普通文章  在windows中构建gtk开发...
普通文章  i++循环与i--循环的执行...
普通文章  关于Qvariant类--万能的...
普通文章  Debian sudo 设置
普通文章  busybox1.15.x 交叉编译
普通文章  关于僵死进程zombie
普通文章  递归思想的妙用
普通文章  判断链表是否存在环并找...
普通文章  Android Porting Exper...
普通文章  关于/etc/bashrc和$HOM...
普通文章  [翻译]Django初窥
普通文章  Python list的排序
普通文章  Django实现大数据量分页...
普通文章  Debug方式取代printf满...

 
 
 
当前位置: 首页 >> 网络协议与安全 >> ARP病毒攻击技术分析与防御
 
 

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

作者:peanut_pro      来源:     发表时间:2006-06-27     浏览次数:      字号:    

ARP病毒攻击技术分析与防御 
[     点击数:795    更新时间:2006-6-6    文章录入:admin ]
 
一、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下载到用户终端,如果能够加强用户上网的访问控制,就能极大的减少该问题的发生。

c.在发生ARP攻击时,及时找到病毒攻击源头,并收集病毒信息,可以使用趋势科技的SIC2.0,同时收集可疑的病毒样本文件,一起提交到趋势科技的TrendLabs进行分析,TrendLabs将以最快的速度提供病毒码文件,从而可以进行ARP病毒的防御。

编辑 webmaster

 
 
 
评论
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •  
    中国源码网 - www.YuanMa.org - 中国 开放源代码+编程 社区