在局域網中感染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
適合各種環境