通過偽造IP地址和MAC地址實現ARP欺騙,能夠在網絡中產生大量的ARP通信量使網絡阻塞,攻擊者只要持續不斷的發出偽造的ARP響應包就能更改目標主機ARP緩存中的IP-MAC條目,造成網絡中斷或中間人攻擊。 本文介紹了四種利用自制批處理文件來防御ARP攻擊的方法。
一、把下面語句編成BAT處理文件就可以搞定
@echo off ::讀取本機Mac地址 if exist ipconfig.txt del ipconfig.txt ipconfig /all >ipconfig.txt if exist phyaddr.txt del phyaddr.txt find "Physical Address" ipconfig.txt >phyaddr.txt for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M ::讀取本機ip地址 if exist IPAddr.txt del IPaddr.txt find "IP Address" ipconfig.txt >IPAddr.txt for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I ::綁定本機IP地址和MAC地址 arp -s %IP% %Mac% ::讀取網關地址 if exist GateIP.txt del GateIP.txt find "Default Gateway" ipconfig.txt >GateIP.txt for /f "skip=2 tokens=13" %%G in (GateIP.txt) do set GateIP=%%G ::讀取網關Mac地址 if exist GateMac.txt del GateMac.txt arp -a %GateIP% >GateMac.txt for /f "skip=3 tokens=2" %%H in (GateMac.txt) do set GateMac=%%H ::綁定網關Mac和IP arp -s %GateIP% %GateMac% arp -s 網關IP 網關MAC exit |
這個批處理要查詢本機的ARP 緩存表,看里面是不是有網關的IP和MAC,有則能成功
綁定,但是沒有的話就綁不定了!!!不過可以改進一下,達到雙綁的目的,比如
加上arp -s 網關IP 網關MAC一行就可以了。。。
二、這個也不能實現真正意義的雙綁,只能綁定本機IP和MAC
@echo off for /f "delims=: tokens=2" %%a in (ipconfig /all^|find "Physical Address") do set local_mac=%%a for /f "delims=: tokens=2" %%a in (ipconfig /all^|find "IP Address") do set local_ip=%%a for /f "delims=: tokens=2" %%a in (ipconfig /all^|find "Default Gateway") do set gate_ip=%%a fo* /* %%* in (getmac /nh /s %local_ip%) do set gate_mac=%%a arp -s %local_ip% %local_mac% arp -s %gate_ip% %gate_mac% (這個地方有問題,改進中……) |
經測試,此批處理不能綁定網關IP和MAC,只能綁定本機IP和MAC
三、這個還不是很清楚,我要測試才行的,目前所知也能綁定本機IP和MAC
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION for /f "tokens=2 delims=[]=" %%i in (nbtstat -a %COMPUTERNAME%) do call set local=!local!%%i for /f "tokens=3" %%i in (netstat -r^|find " 0.0.0.0") do set gm=%%i for /f "tokens=1,2" %%i in (arp -a %gm%^|find /i /v "inter") do set gate=%%i %%j arp -s %gate% arp -s %local% arp -s 網關IP 網關MAC |
這個批處理可以綁定網關IP和MAC,但是還是有缺陷,要依賴于本機上存在的ARP緩存!
改進方法為在最后加一個arp -s 網關IP和MAC!
四、原理和第一個一樣,只是改進了一點點!
這個P通過ping網關三次得到了網關的MAC其實以上的批都可以通過這個來搞定網關的IP和MAC,
但是如果開機的時候正在發生ARP欺騙的話 這樣你綁的IP和MAC就是錯的,不能上網了。
@echo off :::::::::::::清除所有的ARP緩存 arp -d :::::::::::::讀取本地連接配置 ipconfig /all>ipconfig.txt :::::::::::::讀取內網網關的IP for /f "tokens=13" %%I in (find "Default Gateway" ipconfig.txt) do set GatewayIP=%%I ::::::::::::ING三次內網網關 ping %GatewayIP% -n 3 :::::::::::::讀取與網關arp緩存 arp -a|find "%GatewayIP%">arp.txt :::::::::::::讀取網關MAC并綁定 for /f "tokens=1,2" %%I in (find "%GatewayIP%" arp.txt) do if %%I==%GatewayIP% arp -s %%I %%J :::::::::::::讀取本機的 IP+MAC for /f "tokens=15" %%i in (find "IP Address" ipconfig.txt) do set ip=%%i for /f "tokens=12" %%i in (find "Physical Address" ipconfig.txt) do set mac=%%i :::::::::::::綁定本機的 IP+MAC arp -s %ip% %mac% :::::::::::::刪除所有的臨時文件 del ipconfig.txt del arp.txt exit |
不過這種情況很少,發過來試一下先吧!
以上P可以配合路由上對客戶機的IP和MAC進行綁定實現完全防ARP,只是單綁下面機和網關IP及MAC
沒有多大用處,關于路由上面的,因為大家用的路由不一樣,所以這個就不寫了