ARP欺骗是怎么回事?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARP欺骗是怎么回事?相关的知识,希望对你有一定的参考价值。

病毒防火墙上都有"ARP欺骗防御"的设置,这是怎么回事?好像是针对局域网的吧?ADSL上网设置它有效吗?
我想得到专业的解释。

局域网内有人使用ARP欺骗的木马程序(比如:传奇盗号的软件,比较流行的叫网络执行官的管理软件,某些恶意策程序也被加载了此程序)。

要了解故障原理,我们先来了解一下ARP协议。

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

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
在命令行中使用arp -a命令,获得本机的ARP缓存.如果想知道一个局域网主机的MAC地址,可以先Ping它,然后再使用这个命令. 以下是我去获得非飞的主机的MAC地址的过程.获得本机的MAC可以用ipconfig/all获得.

C:\Documents and Settings\Administrator>ping feifei

Pinging feifei[10.1.28.23] with 32 bytes of data:

Reply from 10.1.28.23: bytes=32 time=1ms TTL=128
Reply from 10.1.28.23: bytes=32 time<1ms TTL=128
Reply from 10.1.28.23: bytes=32 time<1ms TTL=128
Reply from 10.1.28.23: bytes=32 time<1ms TTL=128

Ping statistics for 10.1.28.23:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms

C:\Documents and Settings\Administrator>arp -a

Interface: 10.1.28.11 --- 0x10003
Internet Address Physical Address Type
10.1.28.1 00-05-3b-04-2d-48 dynamic
10.1.28.23 00-14-85-82-16-a5 dynamic

注意Type是dynamic,就是动态的意思,这样就容易被欺骗.可以用asp -s设置为静态,就能防止ARP欺骗了.

每台安装有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欺骗的木马程序时,会欺骗局域网内所有主机和路由器,让所有上网的流量必须经过病毒主机。其他用户原来直接通过路由器上网现在转由通过病毒主机上网,切换的时候用户会断一次线。

一般ARP欺骗软件运行中,其他被控制电脑就不能上网.

由于ARP欺骗的木马程序发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的木马程序停止运行时,用户会恢复从路由器上网,切换过程中用户会再断一次线。

解决思路

1、不要把你的网络安全信任关系建立在IP基础上或MAC基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。

2、设置静态的MAC-->IP对应表,不要让主机刷新你设定好的转换表。

3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。

4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。

5、使用"proxy"代理IP的传输。

6、使用硬件屏蔽主机。设置好你的路由,确保IP地址能到达合法的路径。(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。

7、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。

【解决方案】

最好的方法是在交换机或者路由器上绑定用户,在用户主机绑定网关MAC.但大型网络工作量较大.一般只在用户那里绑定.
在PC上绑定路由器或者交换机的IP和MAC地址:

1)首先,获得路由器或者交换机的内网的MAC地址(例如C区A栋地址10.1.28.*段的交换机的MAC地址为00-05-3b-04-2d-48)。

在命令行中输入arp -a,显示

10.1.28.1 00-05-3b-04-2d-48 dynamic

2)编写一个批处理文件rarp.bat内容如下:

@echo off

arp -d

arp -s 10.1.28.1 00-05-3b-04-2d-48

将文件中的网关IP地址和MAC地址更改为您自己的网关IP地址和MAC地址即可。

将这个批处理软件拖到“windows--开始--程序--启动”中。

3)如果是网吧,可以利用收费软件服务端程序(pubwin或者万象都可以)发送批处理文件rarp.bat到所有客户机的启动目录。Windows2000的默认启动目录为“C:\Documents and Settings\All Users「开始」菜单程序启动”。
参考技术A 你自己上网 就不用啦

换了网卡之后出现“ARP timeout”是怎么回事?

换了网卡之后出现“ARP timeout”是是网卡的问题, service network restart 之后问题解决。以下是其原因和解决具体方法:

1、 PXE启动芯片出错代码表初始化/引导/载入Bootstrap错误代码。

PXE-E00:Could not find enough free base memory.PXE主代码和UNDI运行时模块从闪存或上位内存拷贝至基本内存顶部480K(78000h)至640K(A0000h)的剩余空间位置,这段内存必须被系统BIOS填零,如果这些内存没有填零,PXE ROM里的重布置代码将认为这些内存已经被系统BIOS或其它启动ROM占用了。

PXE-E01:PCI Vendor and Device IDs do not match!此信息在成品BIOS中不可能出现,当系统BIOS初始化基于PCI的ROM时,它将假设PCI总线/设备/模块(Bus/Device/Function)值已在AX寄存器里通过审核,如果AX寄存器里定义的PCI设备不匹配UNDI设备,将出现此错误代码。

PXE-E04:Error reading PCI configuration space如果任何PCI BIOS调用导致PCI设置空间返回错误代码,此信息将出现,此信息将不会在成品BIOS和硬件上出现。

PXE-E05:EEPROM checksum error如果网卡EEPROM内容被损坏,将出现此信息。EEPROM内容的损坏通常发生在正在对网卡EEPROM进行编程时系统突然复位(Reset)或掉电的情形下,如果出现此信息,PXE ROM将不执行引导。

PXE-E06:Option ROM requires DDIM support此信息将不会在成品BIOS中出现,PCI可选ROM通常必须被设置为DDIM可选ROM(通常必须被安置在读/写上位内存中)

PXE-E07:PCI BIOS calls not supported此信息将不会在成品BIOS中出现,PCI BIOS必须有PCI BIOS服务。

PXE-E08:Unexpected API error.API:xxxxh Status:xxxxh如果PXE API返回一个运行时加载器(Runtime Loader)预料之外的状态代码,将出现此信息

PXE-E09:Unexpected UNDI loader error.Status:xxxxh如果UNDI运行时加载器(Runtime Loader)返回预料之外的状态代码,将出现此信息

2、ARP错误代码。

PXE-E11:ARP timeout PXE ROM将重试四遍ARP请求,如果无法获取任何有效的ARP答复,将出现此信息,此信息通常源于一些网络和服务设置错误,通常的原因有:1.在DHCP主服务器上设置了DHCP类标识符(Option 60)却在另一台服务器上安装了ProxyDHCP服务。2.使用了不响应ARP请求的路由器

BIOS和BIS错误代码

PXE-E20:BIOS extended memory copy error.AH==nn如果BIOS扩展内存拷贝服务返回一个错误信息,此信息将出现,在成品BIOS中将不会遭遇此信息,代码"nn"为BIOS扩展内存拷贝服务(Int 15h,AH=87h)返回的错误代码。

PXE-E21:BIS integrity check failed如果在扩展内存中的BIS映像损坏,则将显示此信息

PXE-E22:BIS image/credential validation failed下载的映像和证书不匹配客户端关键字

PXE-E23:BIS initialization failed BIS无法被初始化,没有更多可用数据

PXE-E24:BIS shutdown failed BIS无法停止,没有更多可用数据

PXE-E25:BIS get boot object authorization check flag failed--2 PXE启动芯片出错代码表无法检测BIS已启用/已禁用

PXE-E26:BIS free memory failed无法释放BIS分配内存

PXE-E27:BIS get signature information failed请求BIS证书类型信息不能被确定。

PXE-E28:BIS bad entry structure checksum SM BIOS表中的BIS入口结构无效。

3、TFTP/MTFTP错误代码。

PXE-E32:TFTP open timeout TFTP"Open"请求没有应答,验证TFTP服务是否正在运行。

PXE-E35:TFTP read timeout未收到下一个TFTP数据包

PXE-E36:Error received from TFTP server从TFTP服务器上收到了一个错误的TFTP数据包

PXE-E38:TFTP cannot open connection当试图送出一个TFTP"Open"包时发生了一个硬件错

PXE-E39:TFTP cannot read from connection当试图送出一个TFTP应答包时发生了一个硬件错

PXE-E3A:TFTP too many packages.此信息意味着发生了下列两种情况中的一个:1.你试图用TFTP下载一个比分配的缓冲区更大的文件2.你作为一个从(Slave)客户端使用MTFTP开始下载一个文件,而当你变成一个主(Master)客户端时,此文件的大小发生了改变。

PXE-E3B:TFTP error– File not found请求的文件在TFTP服务器上无法找到。

PXE-E3C:TFTP error– Access violation已在TFTP服务器上找到了请求的文件,但TFTP服务没有足够的访问权限开启/读取文件。

PXE-E3F:TFTP packet size is invalid收到的TFTP包大小超过1456bytes BOOTP/DHCP错误代码

PXE-E51:No DHCP or proxyDHCP offers were received客户端没有收到任何有效的DHCP、BOOTP或proxyDHCP应答。

PXE-E52:proxyDHCP offers were received.No DHCP offers were received客户端没有收到任何有效的DHCP或BOOTP应答,但客户端收到了至少一个有效的proxyDHCP应答。

PXE-E53:No boot filename received客户端收到了至少一个有效的DHCP/BOOTP应答,但没有启动文件名可下载。

PXE-E55:proxyDHCP service did not reply to request on port 4011客户端发出一个proxyDHCP请求到DHCP服务器的4011端口并没有收到回复。

4、UNDI错误代码。

PXE-E60:Invalid UNDI API function number一个被基本代码所使用的API在UNDI ROM中无法执行。

PXE-E61:Media test failed,check cable网线没有插或没有连接,可能是网线坏、网卡坏或连接问题。

PXE-E63:Error while initializing the NIC初始化网卡硬件时出现错误,建议换网卡。

PXE-E64:Error while initializing the PHY试图初始化PHY硬件时出现错误,建议换网卡。--3 PXE启动芯片出错代码表PXE-E65:Error while reading the configuration data读取网卡设置数据时出现错误,建议换网卡。

PXE-E66:Error while reading the initialization data读取网卡初始化数据时出现错误,建议换网卡。

PXE-E67:Invalid MAC address存储在这块网卡中的MAC地址无效,建议换网卡

PXE-E68:Invalid EEPROM checksum EEPROM校验和错误,EEPROM内容已损坏,建议换网卡

PXE-E69:Error while setting interrupt无法配置硬件中断,建议换网卡。

Bootstrap和Discovery错误代码

PXE-E74:Bad or missing PXE menu and/or prompt information已检测到PXE标识但启动菜单和/或启动命令提示符标识未发现/不存在

PXE-E76:Bad or missing multicast discovery address多播创建已启动但多播创建地址标识不符

PXE-E77:Bad or missing discovery server list多播和广播创建(Discovery)都被禁用,或使用服务器列表启用,但服务器列表标识未发现/不存在

PXE-E78:Could not locate boot server有效的引导服务器应答未被客户端收到

PXE-E79:NBP is too big to fit in free base memory NBP太大,超过客户端基本内存容量

PXE-E7A:Client could not locate asecure server当客户端未从启动服务器收到任何安全信息并且客户端上的BIS已被启用,将显示此信息。

PXE-E7B:Missing MTFTP server IP address当ROM未收到PXE创建标识或proxyDHCP回应和DHCP SIADDR区域被设置为0.0.0.0,将显示此信息。

5、未分类错误代码。

PXE-EA0:Network boot canceled by keystroke用户在DHCP/创建/TFTP过程中按了"Esc"或"Ctrl C"键

基础代码/UNDI Loader错误代码

PXE-EC1:BaseCode ROM ID structure was not found UNDI引导模块不能发现基础代码ROM ID结构。如果系统中有基础代码ROM映像,它可能已经损坏了

PXE-EC3:BaseCode ROM ID structure is invalid基础代码ROM ID结构有问题,基础代码ROM映像已经损坏了

PXE-EC4:UNDI ROM ID structure was not found基础代码载入模块不能在UNDI ROM ID结构中定位

PXE-EC5:UNDI ROM ID structure is invalid UNDI ROM映像已经损坏了

PXE-EC6:UNDI driver image is invalid UNDI ROM映像已经损坏了

PXE-EC8:!PXE structure was not found in UNDI driver code segment UNDI ROM映像已经损坏了,或者未能被BIOS载入,此错误信息通常系如下一个或三个原因所致:1.当即将调用一个LOM映像的时间点,网卡映像正在被编程进BIOS 2.在PXE可选ROM开始启动之前,PXE可选ROM载入自检内存管理器(POST Memory Manager,$PMM)分配的内存期间被损坏或删除。3.在载入ROM结构期间UNDI_Loader结构未被正确载入

PXE-EC9:PXENV structure was not found in UNDI driver code segment UNDI ROM映像可能被损坏了,或未被BIOS载入,此错误信息通常系如下三个原因所致:1.当即将调用一个LOM映像的时间点,网卡映像正在被编程进BIOS 2.在PXE可选ROM开始启动之前,PXE可选ROM载入自检内存管理器(POST Memory Manager,$PMM)分配的内存期间被损坏或删除。3.在载入ROM结构期间UNDI_Loader结构未被正确载入。

参考技术A 这位大大的问题,有点吓人.
Arp timeout 通常简单的问题有两种:1、水晶头与网卡接触不好2、机器中了ARP病毒
你即然可以肯定不是病毒的话最后去买个测线器,电脑市场上有的喔,很便宜15块钱就能买到,可以测一下看看,是不是网线或不水晶头不好。
复杂的解释,还是给你解释一下吧。
首先有可能是DHCP服务器突冲,我想应该是在公司出现这样的问题吧,问下同事,是否他们也有此类问题发生,如果是的话,先重启一下服务器和交换机。如果这样还是不行的话,您只能用最复杂的,连自己都看不懂的DHCP SNOOPING来做了,网上很多例子,自己搜下就好了。
我建议最好还是从基本问题开始排除吧,最近ARP病毒还是蛮让人讨厌的,查一下比较放心。安安啦,祝你电脑早日回归

以上是关于ARP欺骗是怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章

ARP欺骗如何解决?

如何判断ARP欺骗?该怎么防护?

如何进行ARP欺骗攻击

Python黑客编程ARP欺骗

怎么进行ARP欺骗

arp欺骗进行流量截获-1