
Programmierung
Python ARP Spoof Detector
Das Nutzen von öffentlichen Netzwerken, wie z.B. WLAN im Hotel/Restaurant/Zug etc, bringt Risiken mit sich. Eines dieser Risiken ist das sogenannte "ARP-Spoofing". Was ARP-Spoofing ist, wie genau es funktioniert und wo man sonst noch ARP-Spoofing Angriffe antrifft, wird an einer anderen Stelle behandelt werden. Wichtig ist fürs Erste wie man sich gegen ARP-Spoofing schützen kann bzw. wie man diesen Angriff schnell genug erkennt um Gegenmaßnahmen einzuleiten.
Eine dieser Maßnahmen wird in folgender Python Datei erläutert:
python_arp_spoof_detector.py ~ 1KB
Das Nutzen dieser Datei in einem Netzwerk, das nicht Ihnen gehört, kann strafrechtlich relevant sein. Die Inhalte dienen lediglich zum Erlernen der Programmiersprache "Python" und zum Absichern des eigenen Netzwerkes.
Kurze Erklärung

Hier wird die Funktion "sniff" aus dem scapy.all-Modul importiert. Diese Funktion ermöglicht das Abhören von Netzwerkpaketen.

Hier wird ein leeres Dictionary "IP_MAC_Map" erstellt, das zur Speicherung der Zuordnung von IP-Adressen zu MAC-Adressen verwendet wird.

Dies ist die Definition der Funktion "processPacket", die als Parameter ein einzelnes Netzwerkpaket erhält und es verarbeitet. Desweiteren werden hier die Quell-IP und Quell-MAC, aus dem erhaltenem Paket, zu den jeweiligen Variablen zugewiesen.

Hier wird überprüft, ob die Quell-MAC-Adresse bereits im Dictionary "IP_MAC_Map" vorhanden ist. Falls die MAC-Adresse vorhanden ist, wird überprüft, ob die zugeordnete IP-Adresse in "IP_MAC_Map" mit der aktuellen Quell-IP-Adresse übereinstimmt. Wenn nicht, wird ein potenzieller ARP-Spoofing-Angriff vermutet.

Dieser Block wird verwendet, um eine Ausnahme abzufangen, falls es ein Problem beim Zugriff auf den Wert in "IP_MAC_Map" gibt.

Hier wird die Warnungsnachricht erstellt, die besagt, dass der Rechner mit der alten IP-Adresse "old_IP" vortäuschen könnte, der Rechner mit der aktuellen Quell-IP-Adresse "source_IP" zu sein. Die Funktion gibt die Warnung zurück.

Wenn die Quell-MAC-Adresse bereits im Dictionary "IP_MAC_Map" vorhanden ist und die zugeordnete IP-Adresse übereinstimmt, wird die Zuordnung aktualisiert oder hinzugefügt.

Hier wird die "sniff" Funktion aufgerufen, um den Netzwerkverkehr abzuhören. Es werden nur ARP-Pakete mit dem Filter "arp" erfasst. Der Parameter "count=0" bedeutet, dass der Vorgang nicht nach einer bestimmten Anzahl von Paketen gestoppt wird. "store=0" gibt an, dass die Pakete nicht im Speicher gespeichert werden, um Speicherplatz zu sparen. "prn=processPacket" gibt die Funktion an, die jedes gefangene Paket verarbeiten wird.
Gesamter Code:
