Содержание статьи
Наша цель — получение прав суперпользователя на машине Jab с учебной площадки Hack The Box. Уровень сложности — средний.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
10.10.11.4 jab.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bashports=$(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 потребуется какой‑нибудь клиент, например Pidgin.
Устанавливаем:
sudo apt install pidgin

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


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

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

Добавим его в файл /
.
10.10.11.4 jab.htb conference.jab.htb
Также можно получить список доступных комнат.

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


Список оказался намного больше, чем я ожидал, поэтому нужно найти способ сохранить свыше 2,5 тысячи пользователей в файл.
Точка опоры
Закрываем Pidgin и запускаем его снова, но на этот раз в режиме отладки, с сохранением логов в файл:
pidgin -d > log.txt
Повторяем все действия для получения списка пользователей и проверяем файл.

Теперь из файла log.
нужно вытащить имена пользователей и сохранить в другой файл.
grep -oP '<value>\K[^<]+@jab.htb(?=</value>)' log.txt | cut -d '@' -f 1 | sort | uniq > users.txt
Когда все готово, можно перебрать этих полученных пользователей через Kerbrute. Так мы убеждаемся в том, что пользователи реально существуют в домене.
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

Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»