SMB Enumeration

smbclient

smbclient -L \\\\<target>\\                              # list shares, NULL session
smbclient -L <target-IP> -U username%password             # list shares, authenticated
smbclient //<target>/<share$> -U username%password        # connect to share
smbclient //<target>/<share$> -c 'ls' password -U username
smbclient //<target>/<share$> -c 'cd folder; ls' password -U username
smbclient //<target>/<share$> -c 'cd folder;get desired_file_name' password -U username
smbclient //<target>/<share$> -c 'put /local/file.txt .\target_folder\target_file.txt' password -U username
smbclient //<target>/<share$> -c 'mkdir .\target_folder\new_folder' password -U username
smbclient //<target>/<share$> -c 'rename current_file.txt new_file.txt' password -U username

enum4linux

enum4linux -a <target>                       # general, anonymous
enum4linux -a <target> -u <user> -p <pass>   # general, authenticated
enum4linux -u <user> -p <pass> -U <target>   # users
enum4linux -u <user> -p <pass> -G <target>   # groups + members
enum4linux -u <user> -p <pass> -P <target>   # password policy

Nmap SMB Scripts

# Enum users
nmap -p 445 --script smb-enum-users <target> --script-args smbuser=username,smbpass=password,smbdomain=domain
nmap -p 445 --script smb-enum-users <target> --script-args smbuser=username,smbhash=LM:NTLM,smbdomain=domain

# Enum groups
nmap -p 445 --script smb-enum-groups <target> --script-args smbuser=username,smbpass=password,smbdomain=domain

# Enum shares
nmap -p 445 --script smb-enum-shares <target> --script-args smbuser=username,smbpass=password,smbdomain=domain

# OS discovery
nmap -p 445 --script smb-os-discovery <target>

# Vuln checks
nmap -p 445 --script smb-vuln-ms06-025 <target>
nmap -p 445 --script smb-vuln-ms07-029 <target>
nmap -p 445 --script smb-vuln-ms08-067 <target>
nmap -p 445 --script smb-vuln-ms10-054 <target>
nmap -p 445 --script smb-vuln-ms10-061 <target>
nmap -p 445 --script smb-vuln-ms17-010 <target>
nmap -p 445 --script smb-vuln-cve-2017-7494 <target>
# Check nmap.org/nsedoc/scripts/ for updated list

# Brute force (mind account lockout!)
nmap -p 445 --script smb-brute --script-args userdb=user-list.txt,passdb=pass-list.txt <target>

Source reference: sharingsec.blogspot.com