一、 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
Internet 172.20.156.50000b.cd85.a193 ARPAVlan256
Internet 172.20.156.254 0000b.cd85.a193 ARPAVlan256
Internet 172.20.156.53 0000b.cd85.a193 ARPAVlan256
Internet 172.20.156.33 0000b.cd85.a193 ARPAVlan256
Internet 172.20.156.130000b.cd85.a193 ARPAVlan256
Internet 172.20.156.150000b.cd85.a193 ARPAVlan256
Internet 172.20.156.140000b.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"
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 攻击源头
主动