139,445 - Pentesting SMB
Порт 139
Система базового вводу-виводу мережі** (NetBIOS)** — це програмний протокол, розроблений для забезпечення взаємодії додатків, ПК та робочих станцій у локальній мережі (LAN) з мережевим обладнанням та сприяння передачі даних через мережу. Ідентифікація та розташування програмних додатків, що працюють у мережі NetBIOS, здійснюється через їхні імена NetBIOS, які можуть мати до 16 символів у довжину і часто відрізняються від імені комп'ютера. Сесія NetBIOS між двома додатками ініціюється, коли один додаток (який діє як клієнт) віддає команду "викликати" інший додаток (який діє як сервер), використовуючи TCP порт 139.
Port 445
Технічно, порт 139 називається «NBT over IP», тоді як порт 445 ідентифікується як «SMB over IP». Абревіатура SMB означає «Server Message Blocks», яка також сучасно відома як Common Internet File System (CIFS). Як протокол мережевого рівня додатків, SMB/CIFS в основному використовується для забезпечення спільного доступу до файлів, принтерів, послідовних портів та полегшення різних форм комунікації між вузлами в мережі.
Наприклад, у контексті Windows підкреслюється, що SMB може працювати безпосередньо через TCP/IP, усуваючи необхідність у NetBIOS через TCP/IP, за допомогою використання порту 445. Навпаки, на різних системах спостерігається використання порту 139, що вказує на те, що SMB виконується разом з NetBIOS через TCP/IP.
SMB
Протокол Server Message Block (SMB), що працює за моделлю клієнт-сервер, призначений для регулювання доступу до файлів, каталогів та інших мережевих ресурсів, таких як принтери та маршрутизатори. Переважно використовується в серії операційних систем Windows, SMB забезпечує зворотну сумісність, дозволяючи пристроям з новішими версіями операційної системи Microsoft безперешкодно взаємодіяти з тими, що працюють на старіших версіях. Крім того, проект Samba пропонує безкоштовне програмне забезпечення, що дозволяє реалізувати SMB на системах Linux та Unix, тим самим полегшуючи крос-платформену комунікацію через SMB.
Спільні ресурси, що представляють произвольні частини локальної файлової системи, можуть надаватися сервером SMB, що робить ієрархію видимою для клієнта частково незалежною від фактичної структури сервера. Списки контролю доступу (ACLs), які визначають права доступу, дозволяють точний контроль над дозволами користувачів, включаючи атрибути, такі як execute
, read
та full access
. Ці дозволи можуть бути призначені окремим користувачам або групам, залежно від спільних ресурсів, і відрізняються від локальних дозволів, встановлених на сервері.
IPC$ Share
Доступ до спільного ресурсу IPC$ можна отримати через анонімну нульову сесію, що дозволяє взаємодіяти з сервісами, які відкриті через іменовані канали. Утиліта enum4linux
корисна для цієї мети. Правильне використання дозволяє отримати:
Інформацію про операційну систему
Деталі про батьківський домен
Зведення локальних користувачів та груп
Інформацію про доступні SMB спільні ресурси
Діючу політику безпеки системи
Ця функціональність є критично важливою для мережевих адміністраторів та фахівців з безпеки для оцінки безпекової позиції служб SMB (Server Message Block) в мережі. enum4linux
надає всебічний огляд середовища SMB цільової системи, що є суттєвим для виявлення потенційних вразливостей та забезпечення належного захисту служб SMB.
Вищезазначена команда є прикладом того, як enum4linux
може бути використаний для виконання повної енумерації проти цілі, вказаної за допомогою target_ip
.
Що таке NTLM
Якщо ви не знаєте, що таке NTLM, або хочете дізнатися, як він працює і як його зловживати, вам буде дуже цікава ця сторінка про NTLM, де пояснюється як працює цей протокол і як ви можете скористатися ним:
NTLMЕнумерація сервера
Сканування мережі в пошуках хостів:
SMB сервер версія
Щоб шукати можливі експлойти для версії SMB, важливо знати, яка версія використовується. Якщо ця інформація не з'являється в інших використовуваних інструментах, ви можете:
Використати MSF допоміжний модуль _auxiliary/scanner/smb/smb_version
Або цей скрипт:
Пошук експлойтів
Можливі облікові дані
Ім'я користувача(ів) | Звичайні паролі |
(порожньо) | (порожньо) |
гість | (порожньо) |
Адміністратор, admin | (порожньо), пароль, адміністратор, admin |
arcserve | arcserve, backup |
tivoli, tmersrvd | tivoli, tmersrvd, admin |
backupexec, backup | backupexec, backup, arcada |
test, lab, demo | пароль, test, lab, demo |
Брутфорс
Інформація про середовище SMB
Отримати інформацію
Перерахунок користувачів, груп та увійшлих користувачів
Цю інформацію вже слід зібрати з enum4linux та enum4linux-ng
Перерахувати локальних користувачів
Oneliner
Metasploit - Перерахувати локальних користувачів
Перерахунок LSARPC та SAMR rpcclient
rpcclient enumerationGUI з'єднання з linux
У терміналі:
xdg-open smb://cascade.htb/
У вікні файлового браузера (nautilus, thunar тощо)
smb://friendzone.htb/general/
Перерахунок спільних папок
Список спільних папок
Завжди рекомендується перевірити, чи можете ви отримати доступ до чогось, якщо у вас немає облікових даних, спробуйте використати null облікові дані/гостевий користувач.
Підключення/Список спільної папки
Ручне перерахування Windows-спільних ресурсів та підключення до них
Можливо, ви обмежені у відображенні будь-яких спільних ресурсів хост-машини, і коли ви намагаєтеся їх перерахувати, здається, що немає жодних спільних ресурсів для підключення. Тому варто спробувати вручну підключитися до спільного ресурсу. Щоб вручну перерахувати спільні ресурси, ви можете звернути увагу на відповіді, такі як NT_STATUS_ACCESS_DENIED та NT_STATUS_BAD_NETWORK_NAME, використовуючи дійсну сесію (наприклад, нульову сесію або дійсні облікові дані). Це може вказувати на те, чи існує спільний ресурс, і ви не маєте до нього доступу, або спільний ресурс взагалі не існує.
Звичайні імена спільних ресурсів для цілей Windows:
C$
D$
ADMIN$
IPC$
PRINT$
FAX$
SYSVOL
NETLOGON
(Звичайні імена спільних ресурсів з Оцінки безпеки мережі, 3-тє видання)
Ви можете спробувати підключитися до них, використовуючи наступну команду
для цього скрипта (використовуючи нульову сесію)
приклади
Перерахувати спільні ресурси з Windows / без сторонніх інструментів
PowerShell
CMD консоль
MMC Snap-in (графічний)
explorer.exe (графічний), введіть \\<ip>\
, щоб побачити доступні неприховані спільні папки.
Підключити спільну папку
Завантажити файли
Прочитайте попередні розділи, щоб дізнатися, як підключитися з обліковими даними/Pass-the-Hash.
Команди:
mask: вказує маску, яка використовується для фільтрації файлів у каталозі (наприклад, "" для всіх файлів)
recurse: перемикає рекурсію в увімкнене положення (за замовчуванням: вимкнено)
prompt: перемикає запит на імена файлів у вимкнене положення (за замовчуванням: увімкнено)
mget: копіює всі файли, що відповідають масці, з хоста на клієнтську машину
(Інформація з man-сторінки smbclient)
Пошук спільних папок домену
Snaffler****
CrackMapExec павук.
-M spider_plus [--share <share_name>]
--pattern txt
Спеціально цікаві з загальних папок файли під назвою Registry.xml
, оскільки вони можуть містити паролі для користувачів, налаштованих на автологін через групову політику. Або файли web.config
, оскільки вони містять облікові дані.
SYSVOL share є доступним для читання для всіх автентифікованих користувачів у домені. Там ви можете знайти багато різних пакетних, VBScript та PowerShell скриптів. Вам слід перевірити скрипти всередині, оскільки ви можете знайти чутливу інформацію, таку як паролі.
Читання реєстру
Ви можете мати можливість читати реєстр, використовуючи деякі виявлені облікові дані. Impacket reg.py
дозволяє вам спробувати:
Post Exploitation
За замовчуванням конфігурація сервера Samba зазвичай знаходиться в /etc/samba/smb.conf
і може мати деякі небезпечні конфігурації:
Налаштування | Опис |
| Дозволити перегляд доступних спільних ресурсів у поточному ресурсі? |
| Заборонити створення та модифікацію файлів? |
| Дозволити користувачам створювати та модифікувати файли? |
| Дозволити підключення до служби без використання пароля? |
| Враховувати привілеї, призначені конкретному SID? |
| Які дозволи повинні бути призначені новоствореним файлам? |
| Які дозволи повинні бути призначені новоствореним каталогам? |
| Який скрипт потрібно виконати під час входу користувача? |
| Який скрипт повинен бути виконаний, коли скрипт закривається? |
| Де потрібно зберігати вихідні дані магічного скрипта? |
Команда smbstatus
надає інформацію про сервер та про те, хто підключений.
Authenticate using Kerberos
Ви можете автентифікуватися в kerberos за допомогою інструментів smbclient та rpcclient:
Виконати команди
crackmapexec
crackmapexec може виконувати команди зловживаючи будь-яким з mmcexec, smbexec, atexec, wmiexec, при цьому wmiexec є за замовчуванням методом. Ви можете вказати, який варіант ви віддаєте перевагу, за допомогою параметра --exec-method
:
Обидва варіанти створять нову службу (використовуючи \pipe\svcctl через SMB) на машині жертви і використовують її для виконання чогось (psexec завантажить виконуваний файл до ADMIN$ спільного доступу, а smbexec вказуватиме на cmd.exe/powershell.exe і передаватиме в аргументах корисне навантаження --безфайлова техніка--). Більше інформації про psexec та smbexec. У kali він розташований за адресою /usr/share/doc/python3-impacket/examples/
Використовуючи параметр-k
, ви можете аутентифікуватися за допомогою kerberos замість NTLM
wmiexec/dcomexec
Сховано виконайте командний оболонку, не торкаючись диска або не запускаючи нову службу, використовуючи DCOM через порт 135. У kali він розташований у /usr/share/doc/python3-impacket/examples/
Використовуючи параметр -k
, ви можете аутентифікуватися за допомогою kerberos замість NTLM.
Виконання команд через Планувальник завдань (використовуючи \pipe\atsvc через SMB). У kali він знаходиться за адресою /usr/share/doc/python3-impacket/examples/
Impacket reference
https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/
Брутфорс облікових даних користувачів
Це не рекомендується, ви можете заблокувати обліковий запис, якщо перевищите максимальну кількість спроб
SMB relay attack
Ця атака використовує набір інструментів Responder для захоплення SMB аутентифікаційних сесій в внутрішній мережі та пересилає їх на цільову машину. Якщо сесія аутентифікації є успішною, вона автоматично перенаправить вас у системну консоль. Більше інформації про цю атаку тут.
SMB-Trap
Бібліотека Windows URLMon.dll автоматично намагається аутентифікуватися до хоста, коли сторінка намагається отримати доступ до деякого контенту через SMB, наприклад: img src="\\10.10.10.10\path\image.jpg"
Це відбувається з функціями:
URLDownloadToFile
URLDownloadToCache
URLOpenStream
URLOpenBlockingStream
Які використовуються деякими браузерами та інструментами (такими як Skype)
SMBTrap using MitMf
NTLM Theft
Схоже на SMB Trapping, розміщення шкідливих файлів на цільовій системі (через SMB, наприклад) може викликати спробу аутентифікації SMB, що дозволяє перехопити хеш NetNTLMv2 за допомогою інструменту, такого як Responder. Хеш потім може бути зламаний офлайн або використаний в SMB relay attack.