现在局域网中感染ARP病毒的情况比较多,清理和防范都比较困难,给不少的网络管理员造成了很多的困扰。下面就是个人在处理这个问题的一些经验,同时也在网上翻阅了不少的参考资料。
ARP病毒的症状
有时候无法正常上网,有时候有好了,包括访问网上邻居也是如此,拷贝文件无法完成,出现错误;局域网内的ARP包爆增,使用ARP查询的时候会发现不正常的MAC地址,或者是错误的MAC地址对应,还有就是一个MAC地址对应多个IP的情况也会有出现。
ARP攻击的原理
ARP欺骗攻击的包一般有以下两个特点,满足之一可视为攻击包报警:第一以太网数据包头的源地址、目标地址和ARP数据包的协议地址不匹配。或者,ARP数据包的发送和目标地址不在自己网络网卡MAC数据库内,或者与自己网络MAC数据库MAC/IP不匹配。这些统统第一时间报警,查这些数据包(以太网数据包)的源地址(也有可能伪造),就大致知道那台机器在发起攻击了。现在有网络管理工具比如网络执法官、P2P终结者也会使用同样的方式来伪装成网关,欺骗客户端对网关的访问,也就是会获取发到网关的流量,从而实现网络流量管理和网络监控等功能,同时也会对网络管理带来潜在的危害,就是可以很容易的获取用户的密码等相关信息。
处理的办法:
写个脚本提供大家参考,解决局域网内部的APR攻击
c:
cd\
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >c:\ipconfig.txt //获取本地MAC地址
if exist GateMac.txt del GateMac.txt
arp -a %GateIP% >c:\GateMac.txt
for /f "skip=3 tokens=2"%%H in(GateMac.txt)do set GateMac=%%H //获取出口路由(即网关)的MAc地址
if exist GateIP.txt del GateIP.txt
find "Default Gateway" ipconfig.txt >c:\GateIP.txt
for /f "skip=2 tokens=13"%%G in (GateIP.txt) do set GateIP=%%G
echo set Ws= Wscript.Createobject("Wscript.Shell") >c:\banding.vbs
echo count =0>>banding.vbs
echo for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_>>banding.vbs
间隔6秒重新将网关的IP地址与MAC地址进行绑定
echo if ps.name="wscript.exe" then count=count+1>>banding.vbs
echo if count >2 then wscript.quit>>banding.vbs
echo i=1 >>banding.vbs
echo for i= 1 to 5>>banding.vbs
echo i=i-1>>banding.vbs
echo Wscript.sleep(1000*60*0.1)每6秒钟绑定一次 >>banding.vbs
echo ws.run "arp-d",0>>banding.vbs
echo ws.run "arp -s %GateIP% %GateMac%",0>>banding.vbs
echo next >>banding.vbs
清除ARP缓存,重新将本机的Ip地址与MAC地址进行绑定
c:
cd \
start banding.vbs
del /f /q GateMac.txt
del /f /q ipconfig.txt
del /f /q GateIP.txt
copy banding.vbs c:\ windows\system32
echo Windows Registry Editor Version 5.00 >c:\arp.reg
echo.>>arp.reg
echo [HKEY_LOC AL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>>arp.reg
echo "arptom"="c:\\windows\\system32\\banding.vbs">>arp.reg
regedit -is arp.reg
del /f /q arp.reg
del /f /q banding.vbs
exit
把这些代码复制放入记事本,后缀名保存为.bat
适合各种环境。