扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
介于现在ARP欺骗病毒太多。。所以写了这个。。事先说明。我也参考了前人的经验做的。只不过我自己修改完善下。有言在先,我是个外行,如此法不管用,不要骂我哦!权当我放屁!!还有记得看完,偶表达能力有限如果看不懂那别怪我哦。。。
说明:我们这里是局域网共享Internet上网,用到的真实网关是192.168.1.113,本机地址192.168.1.239。
现在先看一下修改前的状态:(即默认上网状态)
现在我们开始-运行--CMD--route print 会出现如图
这样一个路由表(这个是我本机的路由表。你们IP可能会不同),最后一个Metric为路由指定一个整数成本值(从 1 至 9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。数值越小成本代价越小,路由优先选择度越高;反之成本代价越大,路由优先选择度越低!
前面两行为网络接口索引,可以看到联网网卡为inter<R> PRO/100 VE….,其物理地址为00 11 43 4f 30 b3。
然后是内存中的路由表:
Network Destination:指定该路由的网络目标。
Netmask :指定与网络目标相关的网络掩码(也被称作子网掩码)。
Gateway:指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点IP 地址。
Metric:为路由指定一个整数成本值标(从 1 至 9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。数值越小成本代价越小,路由优先选择度越高;反之成本代价越大,路由优先选择度越低!
Interface:这里一般指本机。
这里0.0.0.0严格意义上来说,已经不是真正意义上的IP地址了。它表示的是这样一个集合,所有不清楚的主机和目的网络。这里的不清楚是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个收容所,所有不认识的三无人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统就会自动产生一个目的地址为0.0.0.0的缺省路由。
如第一行的意思是如果我要访问Internet的话,从本机(192.168.1.239)通过网关(192.168.1.113)到任何Internet的服务器。简单的说,如果你要访问Internet先经过本机的路由表再到路由器(网关)再到你要访问的Internet服务器
这里后面几行路由表无关紧要 ,但你会在最后几行看到default gateway(目前默认网管)是192.168.1.113。
嗯,现在我们知道路由表的作用了。
在修改之前先介绍Route基本用法:
route [-f] [-p] [command [destination] [mask netmask] [gateway] [metric metric] [if interface]
参数说明:
-f
清除所有不是主路由(子网掩码为255.255.255.255的路由)、环回网络路由(目标为127.0.0.0,子网掩码为255.255.255.0的路由)或多播路由(目标为224.0.0.0,子网掩码为240.0.0.0的路由)的条目的路由表。如果它与命令之一(例如Add、Change或Delete)结合使用,表会在运行命令之前清除。
-p
与Add命令共同使用时,指定路由被添加到注册表并在启动TCP/IP协议的时候初始化IP路由表。默认情况下,启动TCP/IP协议时不会保存添加的路由,与Print命令一起使用时,则显示永久路由列表。所有其他的命令都忽略此参数。永久路由存储在注册表中的位置是(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \Tcpip\Parameters\ PersistentRoutes)
command 指定要运行的命令。下表列出了有效的命令。
destination
指定路由的网络目标地址。目标地址可以是一个IP网络地址(其中网络地址的主机地址位设置为0),对于主机路由是IP地址,对于默认路由是0.0.0.0。
Mask subnetmask
指定与网络目标地址相关联的网掩码(又称子网掩码)。子网掩码对于IP网络地址可以是一适当的子网掩码,对于主机路由是255.255.255.255,对于默认路由是0.0.0.0。如果忽略,则使用子网掩码255.255.255.255。定义路由时目标地址和子网掩码之间的关系。
gateway
指定由网络目标和子网掩码定义的可达到的地址集的前一个或下一个跃点IP地址。对于本地连接的子网路由,网关地址是分配给连子网接口的IP地址。对于要经过一个或多个路由器才可用到的远程路由,网关地址是一个分配给相邻路由器的、可直接达到的IP地址。
metric metric
为路由指定所需跃点数的整数值(范围是1~9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。
if interface 指定目标可以到达的接口的接口索引。使用Route print命令可以显示接口及其对应接口索引的列表。对于接口索引可以使用十进制或十六进制的值。对于十六进制值,要在十六进制数的前面加上0x。忽略if参数时,接口由网关地址确定。
注意:路由表中跃点数一列的值较大是由于允许TCP/IP根据每个LAN接口的IP地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数造成的。默认启动的自动确定接口跃点数确定了每个接口的速度,调整了每个接口的路由跃点数,因此最快接口所创建的路由具有最低的跃点数。要删除大跃点数,请在每个LAN连接的TCP/IP协议的高级属性中禁用自动确定接口跃点数。
如果是Print或Delete命令,可以忽略Gateway参数,使用通配符来表示目标和网关。Destination的值可以是由星号(*)指定的通配符。如果指定目标含有一个星号(*)或问号(?),它被看作是通配符,只打印或删除匹配的目标路由。星号代表任意一字符序列,问号代表任一字符。例如,10.*.1、192.168.*、127.*和*224*都是星号通配符的有效使用。
使用了无效的目标和子网掩码(网掩码)值的组合,会显示"Route bad gateway address
netmask"错误消息。目标中有一位或多位设置为1,而其在子网掩码中的对应位设置为0时会发生这个错误。可以通过二进制表示法表示目标和子网掩码来检查这种情况。以二进制表示的子网掩码包括表示目标网络地址部分的一连串的1和表示目标主机地址部分的一连串的0两个部分。查看目标以确定目标的主机地址部分(由子网掩码所定义)是否有些位设置成了1。
Windows 98 的Route命令不支持-p参数。
只有当TCP/IP协议在网络连接中安装为网络适配器属性的组件时,该命令才可用。
目前ARP病毒是读取本机TCP/IP设置里的真实网关IP,然后绑定自己的MAC地址。不断的发虚假广播包,来覆盖其他联网的计算机中的ARP表中真实的网关绑定,来起到重定向共享上网客户机的数据流至病毒主机,以达到破坏共享上网功能、侦听用户数据,截取用户敏感信息的目的。嘿嘿,知道了这个原理,我们就可以其人之身还其人之道!这也是我们反欺骗arp欺骗的基础。(以后的ARP变种会不会读路由表那我不知道)。
废话说了不少啦,现在我开始修改。。
方法:(反欺骗ARP病毒)
比如你现在网关(本地连接属性tcp/ip里设置的那个,后面同是)是192.168.1.113,那我们现在要把网关IP换成除192.168.1.113以外的192.168.1.1-192.168.1.254之间的任意一个(即虚假网关地址)。但不能和其他客户机冲突。最好换个不用的IP,(其实这个方法网关IP随便你添什么。那怕123.123.123.123都没事,但为了能反欺骗ARP和避免被怀疑,我们最好能用同网段的IP。)我们现在换成192.168.1.184,上不了网了吧?(网关不对当然上不了。白痴都知道~!-_-!)好了第一步做好了!
现在我们CMD-route print看下路由表。第一行的网关IP变成了你刚才设置的IP了。。而且这个网关IP是上不了网的。。。中国人都知道。
接下来。我们在CMD下输入 route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.113 metric 1 回车,我们加入一条静态的路由表 优先权限是1(最大的)。然后在CMD下面输入route print 再查看一下路由表。从最后两行看到刚才那一条静态路由已经添加成功了!(这里192.168.1.113为真实的网关地址)!
上图表中第二行的网关192.168.1.184是我们在本地连接-- 属性-- tcp/ip 里设置的那个假的 优先等级是20(最小的)
第一行的网关是我们通过手工加上去的真网关192.168.1.113。优先等级是 1(最大的)
如果我们要访问Internet的话。它优先读取优先等级是1的那个真网关,即192.168.1.113。
而ARP读取的是读取本机TCP/IP里的网关的。以后的ARP变种会不会读路由表那我不知道。所以就算它发网关IP冲突也只不过冲突假网关,狂发网关IP欺骗包也是假网关的,而这个假网关可以是上面所说的不用的空IP,也可以胡编一个IP,或者是病毒主机自己的真实IP。呵呵,效果可想而知,明白了吗?这样我们已经完成了。
下面附上修改后的一些图,方便与前面修改前作一比较:
这里我们添加的静态路由储存在注册表中的(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes)中。
在看看TCP/IP的设置修改前后并没有变化。
下面的网络连接信息中看到了变化了,路由表也变了!
注明:如果你加了案上述方法添加了静态路由,但重启后无法上网,(我试验没问题的!)那么在开机启动时加个自动批处理来添加路由。命令如下:
route add 0.0.0.0 mask 0.0.0.0 192.168.1.113 metric 1
(这里192.168.1.113为真实的网关地址)
这样对病毒主机做了以后。病毒主机对网关IP的冲突和ARP欺骗就象没头苍蝇,失去了正确的目标,也就起不了作用了!!!帮不绑定IP-MAC都无所谓。我是没绑定。前段时间老掉线。这样做了后没掉过。。要掉也是中ARP病毒那个机器掉。其他机器和网关没影响。
网内其他的主机也可以用此方法作免疫处理,这样即使染上ARP病毒,也会使其发出攻击实效!当然这样的话,如果中毒主机过多,其攻击还是会消耗极大的带宽,所以建议还是及时隔离它们处理为好!!
要回复原状:(即恢复系统原来默认的上网方式):只需删除刚才我们添加的储存在注册表中的相关静态路由(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Services \Tcpip\Parameters\PersistentRoutes),然后在TCP/IP设置中改回原来的参数设置,重启即可!如下图:
总结一下:其实对付此类攻击根本的解决办法是对病毒主机的快速发现和及时隔离处理,以及计算机的使用者人的管理。
上述方法比较另类,其实对于ARP攻击的方法还有很多,原理也大同小异,如:
1、双向绑定法:添加要保护的机器(arp命令自动批处理法,arp防火墙法『选择内外ARP攻击都拦的那种,有主动维护功能(慎用)』)
2、划分VLAN法
3、如果交换机支持,做端口保护(PROT PROTECTED),也叫端口隔离:
端口隔离(port protected/pvlan edge直译应该是端口保护)就是被隔离的端口之间不能在二层互相访问,要访问需通过三层路由,要不是三层以上的交换机,就不能访问。病毒要传播,总要寻找其他的机器,找到后总要传输点什么东西给其他机器,隔离后就找不到、传不了。未隔离的端口还是能找到,但这些机器都不是跟关键业务相关的,中毒的我可以隔离单独处理而不影响业务。
4、选择带ARP防护的网络设备
5、其他
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者