永发信息网

如何有限解决局域网内部网关欺骗和ARP攻击?

答案:3  悬赏:30  手机版
解决时间 2021-11-13 10:49
  • 提问者网友:末路
  • 2021-11-12 23:10
如何有限解决局域网内部网关欺骗和ARP攻击?
最佳答案
  • 五星知识达人网友:思契十里
  • 2021-11-12 23:29
简单说 只要在你局域网的总路由器上绑定下面每台pc的mac 然后每台pc绑定路由的mac就 可以防御arp了详细说呢:自从2006年,所有局域网用户真可谓是谈“ARP”色变!

网上流传的N种解决ARP欺骗的帖子更是多如牛毛,这篇帖子我就来和大家讨论一下传说中的“双绑”和ARP的相关知识。

一.ARP协议概述:(本段内容来源与互联网)

P数据包常通过以太网发送。太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一张表。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映象的协议。

ARP工作时,送出一个含有所希望的IP地址的以太网广播数据包。目的地主机,或另一个代表该主机的系统,以一个含有IP和以太网地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不必要的ARP通信。

如果有一个不被信任的节点对本地网络具有写访问许可权,那么也会有某种风险。这样一台机器可以发布虚假的ARP报文并将所有通信都转向它自己,然后它就可以扮演某些机器,或者顺便对数据流进行简单的修改。ARP机制常常是自动起作用的。在特别安全的网络上, ARP映射可以用固件,并且具有自动抑制协议达到防止干扰的目的。

二.ARP的工作原理:

太网设备比如网卡都有自己全球唯一的MAC地址,它们是以MAC地址来传输以太网数据包的,但是它们却识别不了我们IP包中的IP地址,所以我们在以太网中进行IP通信的时候就需要一个协议来建立IP地址与MAC地址的对应关系,以使IP数据包能发到一个确定的地方去。这就是ARP(Address Resolution Protocol,地址解析协议)。

讲到此处,我们可以在命令行窗口中,输入

arp –a

来看一下效果,类似于这样的条目

210.118.45.100 00-0b-5f-e6-c5-d7 dynamic

就是我们电脑里存储的关于IP地址与MAC地址的对应关系,dynamic表示是临时存储在ARP缓存中的条目,过一段时间就会超时被删除(xp/2003系统是2分钟)。

这样一来,比如我们的电脑要和一台机器比如210.118.45.1通信的时候,它会首先去检查arp缓存,查找是否有对应的arp条目,如果没有,它就会给这个以太网络发ARP请求包广播询问210.118.45.1的对应MAC地址,当然,网络中每台电脑都会收到这个请求包,但是它们发现210.118.45.1并非自己,就不会做出相应,而210.118.45.1就会给我们的电脑回复一个ARP应答包,告诉我们它的MAC地址是xx-xx-xx-xx-xx-xx,于是我们电脑的ARP缓存就会相应刷新,多了这么一条:

210.118.45.1 xx-xx-xx-xx-xx-xx dynamic

为什么要有这么一个ARP缓存呢,试想一下如果没有缓存,我们每发一个IP包都要发个广播查询地址,岂不是又浪费带宽又浪费资源? 而且我们的网络设备是无法识别ARP包的真伪的,如果我们按照ARP的格式来发送数据包,只要信息有效计算机就会根据包中的内容做相应的反应。

三.ARP攻击的原理

在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如下所示。

主机 IP地址 MAC地址

A 192.168.16.1 aa-aa-aa-aa-aa-aa
B 192.168.16.2 bb-bb-bb-bb-bb-bb
C 192.168.16.3 cc-cc-cc-cc-cc-cc
D 192.168.16.4 dd-dd-dd-dd-dd-dd

我们以主机A(192.168.16.1)向主机B(192.168.16.2)发送数据为例。

当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.16.2的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.16.2的MAC地址是bb-bb-bb-bb-bb-bb”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

从上面可以看出,ARP协议的基础就是信任局域网内所有的人,那么就很容易实现在以太网上的ARP欺骗。对目标A进行欺骗,A去Ping主机C却发送到了DD-DD-DD-DD-DD-DD这个地址上。如果进行欺骗的时候,把C的MAC地址骗为DD-DD-DD-DD-DD-DD,于是A发送到C上的数据包都变成发送给D的了。这不正好是D能够接收到A发送的数据包了么,嗅探成功。
A对这个变化一点都没有意识到,但是接下来的事情就让A产生了怀疑。因为A和C连接不上了。D对接收到A发送给C的数据包可没有转交给C。
做“man in the middle”,进行ARP重定向。打开D的IP转发功能,A发送过来的数据包,转发给C,好比一个路由器一样。不过,假如D发送ICMP重定向的话就中断了整个计划。
D直接进行整个包的修改转发,捕获到A发送给C的数据包,全部进行修改后再转发给C,而C接收到的数据包完全认为是从A发送来的。不过,C发送的数据包又直接传递给A,倘若再次进行对C的ARP欺骗。现在D就完全成为A与C的中间桥梁了,对于A和C之间的通讯就可以了如指掌了。

中了ARP后的一些现象:
1:能PING通网内其它客户机,但PING不通路由,上不了网(连接到INTERNET)。
2:能PING通网内其它客户机,同样PING不通路由,但能上网(能连接到INTERNET)。
3:当中毒的机器向网关路由发出请求时,网关路由的ARP缓存还未到刷新时间,网关路由内的ARP缓存表中保存的是客户机还未中毒前的MAC地址。而这个MAC地址,与客户机当前请求的MAC(被病毒修改过)不一致,客户机的连接请求被网关拒绝。即发生与网关断流。
4:当中毒的源头机器向局域网发出假MAC广播时,网关路由也接收到了此消息,并将这些假MAC地址与其IP相对应,并建立新的ARP缓存。导致客户机与服务器断开连接。

四.ARP解决思路

仔细阅读了我的那篇《局域网问题》的帖子的朋友,相信在做了屏蔽病毒网站,打系统补丁,装免疫软件之后,剩下来的就是“双绑”问题了。下面我们就详细谈谈 双绑。

要是哪位朋友使用的是华为等高端路由器并对该路由器操作不熟悉的话,建议放弃进入路由双绑,华为路由器的纯命令行操作是需要很强的专业知识的,我这里只谈一点利用批处理来绑定的简易操作方法。

第一种批处理:

此批处理有缺陷,有时不能实现真正意义的双绑!

引用: @echo off

arp -d & arp -s 你的网关IP 你的网关MAC

::读取本机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%

exit

这个批处理要查询本机的ARP 缓存表,看里面是不是有网关的IP和MAC,有则能成功

绑定,但是没有的话就绑不定了!!!不过可以改进一下,达到双绑的目的,比如

加上arp -s 网关IP 网关MAC一行就可以了。。。

二、这个也不能实现真正意义的双绑,只能绑定本机IP和MAC

(多谢中国DOS联盟lxmxn提供)

引用: @echo off

arp -d & arp -s 你的网关IP 你的网关MAC

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
for /f %%a in ('getmac /nh /s %local_ip%') do set gate_mac=%%a
arp -s %local_ip% %local_mac%
arp -s %gate_ip% %gate_mac%
exit

经测试,此批处理不能绑定网关IP和MAC,只能绑定本机IP和MAC

三、这个经测试,能绑定本机IP和MAC

引用: @ECHO OFF

SETLOCAL ENABLEDELAYEDEXPANSION

arp -d & arp -s 你的网关IP 你的网关MAC

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%

这个批处理可以绑定网关IP和MAC,但是还是有缺陷,要依赖于本机上存在的ARP缓存!
改进方法为在最后加一个arp -s 网关IP和MAC! 此P处理执行效率稍低一点不过够精简了

四、这个是一个兄弟的博客上找到的,原理和第一个一样,只是改进了一点点!

这个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

:::::::::::::PING三次内网网关
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

以上批处理可以配合路由上对客户机的IP和MAC进行绑定实现完全防ARP,只是单绑下面机和网关IP及MAC
没有多大用处,关于路由上面的,因为大家用的路由不一样,所以在这里不能全面的介绍《以亲身经历来谈谈局域网问题》这贴里介绍了应用比较广泛的ROS软路由和TP-LINK路由的脚本方法,华为,思科等高端路由器我就没办法做详细的介绍了。

好了,相信到此为止,大家对ARP,双绑等定义和方式有了一定的了解了,有什么写的不好的地方,请大家及时提出,有错误的地方,请一定要通知我,以便更正。

最后祝大家都能远离ARP的迫害!
全部回答
  • 1楼网友:神也偏爱
  • 2021-11-13 00:18
应该是没问题的,用360完全可以解决这样的问题
  • 2楼网友:三千妖杀
  • 2021-11-12 23:58
反P2P终结者就可以 建议最好将IP地址与MAC地址绑定
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯