ARP是Address Resolution Protocal(地址转换协议)的简称,是TCP/IP协议中最底层的协议之一。它的作用是完成IP地址到MAC(物理地址)的转换。在局域网中两台计算机之间的通讯,或者局域网中的计算机将IP数据报转发给网关的时候,网卡都需要知道目标计算机的物理地址,以填充物理帧中的目的地址。
现在假设同一以太网中的计算机A(192.168.0.1)需要向计算机B(192.168.0.2)发送数据报,而此时A尚不知道B的物理地址。为了获得B的物理地址,A在局域网上发送ARP广播,查询192.168.0.2这个物理地址,同时在ARP包中填入自己的物理地址Mac,相当于发出这样的询问“谁拿了192.168.0.2这个地址?请回我(我就是Mac这个物理地址)。”计算机B在收到了这个查询以后,以Mac为目的地址发回一个ARP包,里面包含了自己的物理地址。这样通讯的双方都了解了对方的物理地址,通讯过程正式建立。在实际的ARP协议软件的实现中还有一些应该注意的事项:每台计算机上都有一个ARP缓冲,它保存了一定数量的从IP地址到MAC地址的映射,同时当一个ARP广播到来时,虽然这个ARP广播可能与它无关,但ARP协议软件也会把其中的物理地址与IP地址的映射记录下来,这样做的好处是能够减少ARP报在局域网上发送的次数。同时,ARP缓冲中IP地址与物理地址之间的映射并不是一但生成就永久有效,每一个ARP映射表项都有自己的时延,如果过了一定的时间还没有新的ARP到来,那么这个ARP映射就从缓冲中被删除了。那么下一次计算机向这个IP地址发送数据包的时候必须来一次新的查询。
通常ARP协议都在支持广播的网络上使用,比方以太网,这种数据包不能跨物理网段使用,即不能跨越一个路由器(除路由器本身还用作ARP代理以外)。
我们知道系统向一个ip地址发送数据的时候总是先通过子网掩码来计算是否在同一网内,如果在,arp查询这个ip的MAC地址,向这个MAC地址发送数据;如果计算后,发现不再同一个网内,那就ARP询问网关的MAC地址,发送数据直接丢给网关处理,问题就出在这了,我们上网,ip地址99.9%的不再同一个网内,必定通过网关。例如:主机B上网,要发送数据给外网电脑K,但是必须经过网关A,这个时候B就会通过广播进行arp询问(询问网关的MAC):我是主机B,我的IP地址是123,MAC是QQWW,请问网关001你的MAC是多少?网关收到数据包后回复主机123(MAC是QQWW):我是网关001,我的MAC是OOPP。就上面的一喊一答,漏洞很多。
2.1 冒充网关,欺骗受害主机(如网络执法官);
C不想让B上网,就等B喊完了A回答完了,再冒充一次网关A回答(回答时让IP是真的,MAC却是一个不存在的地址),B第一次得到正确值,但是当第二次假地址来的时候仍然当真,把第一次的抹杀,B上网的数据全丢了(因为网关的MAC与IP不对应,数据给不到网关),不能上网了。(其实C不用等到B喊或A答,就平白无故的,不间断的告诉冒充网关告诉B假的MAC就ok了);
ARP防火墙的对策:我会帮助B记住正确的地址,你来假的,我就会紧随其后来个真的。
2.1 冒充受害机,欺骗网关A(如网络剪刀手);
上面我们说到的B是喊(广播)的,当A听到后,并不是单单回答,而且会默默地把B的地址记在心里(网关也会建立ARP缓冲表)。这就是利用之处,C不想让B上网,就代替B 询问(不是喊了,因为如果被B听到会“地址冲突”)格式这样:我是主机B,ip123,MAC是HTY(假的),主机IP001,MAC是OOPP。这样网关也会默默记住。断网原理,B虽然把数据给了网关,但是网关回复数据的时候却丢了(因为在网关的ARP缓冲内,B的IP与MAC不对应)。
ARP防火墙的对策:网卡混杂模式,无论你C怎样说话,我都能听到(问什么呢?因为网线上的电流变化就像水波一样,到处蔓延,只是不混杂的,不是发给自己MAC或广播的就不理睬,哪怕是冒充自己的)。然后发送正确的报文。
大部分ARP防火墙的原理通过在系统内核层拦截虚假ARP数据包以及在攻击时主动向网关发包,主动通告网关本机正确的MAC地址,使之网关能够正确识别客户端,而发包的速度多少就可能影响网速,所以在大型网内在攻击时都有可能影响网速,在客户端进行防御是不能够完全抵御的,ARP攻击应该从源头上解决才行!(风云不支持VISTA);
3.1.建立DHCP服务器(建议建在网关上,因为DHCP不占用多少CPU,而且ARP欺骗攻击一般总是先攻击网关,我们就是要让他先攻击网关,因为网关这里有监控程序的,网关地址建议选择192.168.10.2,把192.168.10.1留空,如果犯罪程序愚蠢的话让他去攻击空地址吧),另外所有客户机的IP地址及其相关主机信息,只能由网关这里取得,网关这里开通DHCP服务,但是要给每个网卡,绑定固定唯一IP地址。 一定要保持网内的机器IP/MAC一一对应的关系。这样客户机虽然是DHCP取地址,但每次开机的IP地址都是一样的。
3.2.建立MAC数据库,把网吧内所有网卡的MAC地址记录下来,每个MAC和IP、地理位置统统装入数据库,以便及时查询备案。
3.3.网关机器关闭ARP动态刷新的过程,使用静态路邮,这样的话,即使犯罪嫌疑人使用ARP欺骗攻击网关的话,这样对网关也是没有用的,确保主机安全。
3.4.网关监听网络安全。网关上面使用TCPDUMP程序截取每个ARP程序包,弄一个脚本分析软件分析这些ARP协议。ARP欺骗攻击的包一般有以下两个特点,满足之一可视为攻击包报警:第一以太网数据包头的源地址、目标地址和ARP数据包的协议地址不匹配。或者,ARP数据包的发送和目标地址不在自己网络网卡MAC数据库内,或者与自己网络MAC数据库 MAC/IP不匹配。这些统统第一时间报警,查这些数据包(以太网数据包)的源地址(也有可能伪造),就大致知道那台机器在发起攻击了。
3.5.偷偷摸摸的走到那台机器,看看使用人是否故意,还是被任放了什么木马程序陷害的。如果后者,不声不响的找个借口支开他,拔掉网线(不关机,特别要看看Win98里的计划任务),看看机器的当前使用记录和运行情况,确定是否是在攻击。
4.1如果发现断网,
WIN+R>CMD>IPConfig:查看自己的IP地址和MAC地址是否被更改;
ARP –a:查看网关的IP和MAC是否被更改;
4.2 arp -d;
4.3 先断开antiarp;然后再打开,此时可把正确的MAC地址改回来;
4.4 运行以下批处理文件:
@echo off
arp -d
netsh -c "i i" add neighbors 11 "192.168.1.1" "00-21-27-b2-eb-96"
netsh -c "i i" add neighbors 11 "192.168.1.100" "00-1f-16-68-ea-b7"
rem 将网关和自己网卡的IP地址和MAC绑定(即由动态变为静态)
rem 命令:netsh -c "i i" add neighbors 本地连接的idx "网关IP" "网关mac"
rem 查询本地连接的idx:用命令netsh i i show in查询;
rem 查询本机IP地址和MAC地址:ipconfig /all
rem 查询网关的IP和Mac地址:arp -a
rem netsh -c interface ip dump > c:\NetPC.TXT,可以查询到上述的地址绑定,类似于arp -a的操作;
4.5 禁用本地连接,启用本地连接
1 ARP -a:查看ARP缓存,包括网关IP和MAC;
2 ARP -D:清空ARP缓存;
3 ARP -S 网关IP 网关MAC:手工将网关IP和正确的MAC绑定(未绑定前是动态的,绑定后则会变成动态了);
可以使用 Netsh.exe 工具执行以下任务:
· 配置接口。
· 配置路由协议。
· 配置筛选器。
· 配置路由。
· 配置基于 Windows 的远程访问路由器(它运行路由和远程访问服务器 (RRAS) 服务)的远程访问行为。
· 显示任何计算机上当前运行路由器的配置。
· 使用脚本功能以批处理模式运行一组针对指定路由器的命令。
Netsh.exe 工具的语法为
netsh [-r router name] [-a AliasFile] [-c Context] [Command | -f ScriptFile]
要显示在上下文中可以使用的子上下文和命令的列表,请在 netsh> 命令提示符处键入上下文名称,后跟空格和 ?。例如,要显示可以在 /routing 上下文使用的子上下文和命令的列表,应在 netsh> 命令提示符处键入 routing ?,然后按 Enter。
Netsh 是命令行脚本实用工具,它允许从本地或远程显示或修改当前正在运行的计算机的网络配置。 Netsh 还提供了一个脚本功能,对于指定计算机,可以通过此功能以批处理模式运行一组命令。为了存档或配置其他服务器,Netsh 也可以将配置脚本保存在文本文件中。 只要利用Netsh命令,进入到DOS下的网络配置状态,就能实现各种网络配置。
在DOS环境中,设置网络参数之前,必须先进入IP设置模式才可以。先打开系统运行对话框,执行“CMD ”命令,将主界面切换到DOS环境中,在命令行中输入“Netsh”命令,单击回车键后,DOS命令提示符 将自动变为“netsh>”,再依次执行“Interface”|“IP”命令后,DOS命令提示符就会变成 “Interface ip>”(如图1所示),此时你就进入了IP设置模式。在该模式下,你可以利用“set”命令设置网络IP地址、网络掩码、DNS服务器,也可以利用“show”命令,查看各种网络参数,包括与本机建立的各种TCP/IP连接等。
设置IP地址:在IP设置模式下,执行“set address name static [addr] [mask] [gateway] [gwmetric]”命令,就能给指定网络连接分配IP地址、掩码地址、网关地址。其中,“set address”是设置IP地址的专用命令,name表示指定的网络连接名称,Win2000下的name应设置 为“Internet连接”,WinXP、Win2003下的name应设置为“本地连接”;static是表示设置静态地址,“[addr]”指的是具体IP地址,“[mask]”指的是具体掩码地址,“[gateway]”指的是具体网关地址 ,“[gwmetric]”指的是具体网关跃点数,一般情况下,该数值应设置为“1”。
例如,现在要为局域网中的某Win2000工作站,分配一固定IP地址为“10.192.168.10”,同时将该工作站的掩码地址设置为 “255.255.255.0”,将网关地址设置为“10.192.168.1”。那么你就可以在IP设置模式下,执行字符 串命令“set address Internet连接 static 10.192.168.10 255.255.255.0 10.192.168.1 1”,要不了多久,系统将会返回“确定”的提示(如图2所示),这表明IP地址设置成功。倘若你是一位拨号用 户,需要为自己的计算机分配一个动态IP地址时,就必须在IP设置模式下,输入字符串命令“set address Internet连接 source=dhcp”,单击回车键后,倘若系统返回“确定”提示,就表示为该计算机成功启用了DHCP服务,以后计算机的IP地址将会自动获取。
设置DNS服务器:在IP设置模式下,你还能为指定的网络连接设置DNS服务器,只要执行“set dns name static [addr]”命令就可以了。其中 “set dns”是设置DNS服务器的专用命令,“static”表示设置静态DNS服务器,“[addr]”是具体的 DNS服务器IP地址。例如,现在要将当前计算机的DNS服务器,设置为“202.100.100.202”时,那么你 可以在IP设置模式下,输入字符串命令“set dns Internet连接 static 202.100.100.202”,单击回车后,系统将返回“确定”提示,这表明配置静态DNS服务器已经成功。此时,你可以执行“show dns ”命令,看看当前计算机的DNS服务器,是否已经被设置成指定的IP地址了,如图3所示。倘若需要为计算机启动动态DNS服务器时,可以执行“set dns Internet连接 source=dhcp”命令。
查询配置信息:大家知道在DOS环境中,利用“Ipconfig”命令,也能查看到当前计算机的网络配置信息,可是该命令查 看到的信息很有限,只限于IP地址、掩码地址、网关地址等。而在IP设置模式下,你能查看到各种网络配置信息。例如,执行“show config”命令后,你除了可以看到“Ipconfig”命令能查询的信息外, 还能知道网关跃点数是多少,DNS服务器是什么,WINS服务器是什么等。执行“show tcpconn”命令, 你能查看到当前有哪些Internet主机,与本地机器建立了连接,也可以查看到本地端口的工作状态,是处于关闭状态还是监听状态(如图4所示)。灵活运用该命令,你能及时发现系统是否受到了外来入侵 ,要是有陌生的主机与本地主机的陌生端口,建立了连接时,那系统十有八九受到了攻击,此时你必须尽快采取措施,确保系统安全。当然,Netsh还为你提供了许多查询网络信息的命令,例如查询IP统计信息的命令,查询TCP统计信息的命令,查询UDP、ICMP统计信息的命令等,这些命令使用都比较简单, 在这里就不一一详细介绍了。
快速修改配置:倘若你的笔记本电脑,需要在不同的网络环境中工作,那么每次工作之前,总需要重新修改网络参数,这实在太麻烦了。现在,你可以在Netsh模式下,很轻松地 实现快速修改网络配置的目的,具体步骤为:在DOS命令行状态下,输入字符串命令“netsh -c interface dump>c:\net1.txt”,单击回车键后,当前工作站的网络配置信息,就全部被保存到C盘 net1.txt文件中了(该文件保存着网络1环境中的上网参数);下面,打开net1.txt文件,你可以看到 如图5所示的配置信息,包括工作站的IP地址、掩码IP地址、网关IP地址等。现在,你可以用笔记本电 脑可能使用到的其他网络环境中的配置参数,替换这里的对应参数,其余内容保持不变,然后再将该文 本文件另存为“net2.txt”(该文件保存着网络2环境中的上网参数);同样地,你可以生成net3.txt 、net4.txt……netn.txt,让这些文件保存着网络3、网络4……网络n环境中的上网参数。以后,笔记 本电脑无论接入到哪个网络环境中,只要在DOS命令行状态下,执行“netsh exec c:\netn.txt”命令 ,就能实现快速修改网络配置的目的了(这里的“netn.txt”文件,必须对应着指定的网络环境)。
1、首先以管理员身份运行CMD打开命令行程序(开始-程序-附件-命令提示符 击右键选择“以管理员身份运行” )
2、运行 netsh i i show in
显示:(电脑中网卡的数量不同,网卡的安装次数会影响以下显示内容)
Idx Met MTU 状态 名称
--- --- ----- ----------- -------------------
1 50 4294967295 connected Loopback Pseudo-Interface 1
11 25 1500 connected 本地连接
3、在以上显示内容中找到你用来上网连接的Idx那个号码,在下面命令中使用 (我上网的网卡是“本地链接”所以Idx为 8)。然后在命令提示符窗口输入:
netsh -c "i i" add neighbors 11 "192.168.1.1" "00-23-cd-a4-b3-ce"回车
4、然后在命令提示符输入运行 arp -a 就可以看到绑定好的网关处于静态了
5、如过想解除绑定在CMD命令行程序里输入netsh i i reset 回车就可以,不过需要重启才能生效
netsh -c “i i” add neighbors idx IP MAC”进行ARP绑定,这里的idx就是上一步查到的网卡的idx编号,IP和MAC就是你要绑定的IP地址和MAC地址。
C:\Users\wwu>netsh i i show in直接运行cmd,运行arp -d * ,arp -s会出现下面的错误提示:
ARP 项删除失败: 请求的操作需要提升。
ARP 项添加失败: 拒绝访问。或提示:ARP 项添加失败: 请求的操作需要提升。
(英文版提示:The ARP entry addition failed: Access is denied. )
如何解决呢?
运行arp -d * 需要用管理员身份运行,进入windows\system32文件夹找到cmd.exe,右键“以管理员身份运行”,这样打开cmd程序就能运行arp -d命令了。但是这样还是不能运行arp -s 进行静态mac绑定,大概是win7禁用了这个命令,需要用netsh命令。
具体做法是:
1、先运行:netsh i i show in 找到正在使用的网卡idx号
2、然后运行:netsh -c i i add neighbors 11 192.168.1.1 00-21-27-bc-89-48 就可以进行绑定了,这里11是idx号。
在Win7和Vista上用ARP -D并不能完全的删除绑定
必须使用
netsh -c "i i" delete neighbors IDX (IDX改为相应的数字)
才可删除MAC地址绑定
在vista中也会产生同样的错误!
0. 使用 arp -a 命令 查看网关的MAC网卡物理地址
1. 使用 netsh i i show in 命令 查看 本地连接的 idx编号
2.使用 netsh -c "i i" add neighbors 本地连接的idx "网关IP" "网关mac“ 命令绑定
3.使用 arp -a 查看结果
网络环境:
ADSL接入,通过ISP上网,
上网服务器:win2ks+isa2k
IP:192.168.0.1
subnetmask:255.255.255.0
DNS为ISP的DNS IP:202.101.10.10
客户机全部win2kpro(并装有还原卡)
IP:192.168.0.2---192.168.0.102
subnetmask:255.255.255.0
网关和DNS都为代理服务器的IP:192.168.0.1并且都装了ISA的防火墙客户端软件。
学校规定:学生帐号登陆不能上Internet,而老师通过自己帐号登陆则可以连接Internet;
多数情况下上网权限的控制,都是通过IP地址来实现(当然,ISA在AD的支持下是可以通过帐户来实现上网权限的控 制,这不是本文讨论范围内),也就是说同一台电脑,学生用过后,如果老师使用时要Internet的话,就必须更改计算机的IP地址,但有些菜鸟老师更 改,都教了N次了,还是不会......
在默认情况下,客户机是全部不能上internet的,ISA的规则上是禁止 192.168.0.2---192.168.0.102的IP上internet,另外在ISA再创建一规则,允许 192.168.0.103-192.168.0.203上internet (这不是本文的重点,如果有需要,大家可以查看相关资料)。
netsh派上用场了,我们客户机PC18上运行CMD进入MS-DOS,输入
netsh -c interface ip dump > c:\NetPC.TXT
(该命令是显示当前”本地连接" 的接口IP 配置,并保存在NetPC.TXT文本文件中)
查看一下c:\NetPC.TXT这个文件,显示的是当前”本地连接”的接口的IP配置,是否跟用ipconfig /all命令,看到的一样的。
{
TPYE c:\NetPC.TXT
# ----------------------------------
# 接口 IP 配置
# ----------------------------------
pushd interface ip
# "本地连接" 的接口 IP 配置
set address name="本地连接" source=static addr=192.168.0.18 mask=255.255.255.0
set address name="本地连接" gateway=192.168.0.1 gwmetric=0
set dns name="本地连接" source=static addr=192.168.0.1 register=PRIMARY
add dns name="本地连接" addr=202.101.10.10 index=2
set wins name="本地连接" source=static addr=none
popd
# 接口 IP 配置结束
}
我们打开NetPC.TXT这个文件,把“addr=192.168.0.18”的IP改为“addr=192.168.0.118”,再保存。
然后,在老师帐户的桌面上创建一个IP.BAT文件,内容输入“netsh -f c:\NetPC.TXT”(注意文件的路径,我们刚才是把NetPC.TXT放在C盘根目录下)。
用老师的帐户登陆后,双击桌面上的IP.BAT文件,我们用ipconfig /all看看结果,显示IP地址换成192.168.0.118了,别的配置都没有变。
我们知道192.168.0.103―192.168.0.203的IP地址是可以上网的。也就是说,如果老师想上网的话,只要双击IP.BAT这个文件就可以了;
以上的设置是在PC18这台机器上做的,如果我们要在别的机器上设置,我们只在把NetPC.TXT这个文件的里的 IP地址换成192.168.0.103-192.168.0.203范围内的IP(当然要保证使用的IP是唯一的,以免产生IP冲突),再新建一个 IP.BAT文件,内容可以一样,不过要注意NetPC.TXT这个文件的路径;补允一点,老师帐户都为管理员组,学生帐户为普通用户组。
通过以上设置,基本上达到我们的目的,老师上机的时候,只要双击桌面上IP.BAT这个文件,IP地址就会换成192.168.0.103―192.168.0.203这个网段的IP,也就是说可以上网了,电脑重启,因为有还原卡,机器又会被变成192.168.0.2―192.168.0.102这个网段的IP,也就不能上网了。通过netsh这个命令,我们能感觉到他的强大,可以为我们免去一些烦琐的事情。