Наша цель — машина Search с площадки Hack The Box. Ее уровень сложности — hard.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
10.10.11.129 search.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;
- 80 (HTTP) — веб‑сервер Microsoft IIS/10.0;
- 88 — служба Kerberos;
- 135 — служба удаленного вызова процедур (Microsoft RPC). Используется для операций взаимодействия контроллер — контроллер и контроллер — клиент;
- 139 — служба сеансов NetBIOS, NetLogon;
- 389 — служба LDAP;
- 443 (HTTPS) — веб‑сервер Microsoft IIS/10.0;
- 445, 8172 — служба SMB;
- 464 — служба смены пароля Kerberos;
- 593 (HTTP-RPC-EPMAP) — используется в службах DCOM и MS Exchange;
- 636 — LDAP с шифрованием SSL или TLS;
- 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
- порт 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
- порт 9389 — веб‑службы AD DS.
На хосте работает много служб. Первым делом проверяем SMB и DNS, но они ничего не дают. Остается только веб. Так как на порте 443 используется протокол HTTPS, сразу обратим внимание на его сертификат. Поле commonName
содержит доменные имена, для которых действителен данный сертификат. Nmap показывает эти настройки в результатах сканирования, что позволяет нам быстро определить используемое имя. Добавляем его в файл /
:
10.10.11.129 search.htb research
Изучая сайт, обращаем внимание на список сотрудников.
Так как на хосте работает Kerberos, мы можем проверить, существует ли какая‑то учетная запись. В этом нам поможет атака ASRep Roasting. Смысл в том, что мы посылаем на сервер аутентификации анонимный запрос для предоставления определенному пользователю доступа к какой‑либо услуге. На что сервер отвечает одним из трех действий:
- предоставляет хеш;
- отвечает, что у этого пользователя не выставлен флаг
UAF
;Dont Require PreAuth - говорит, что такого пользователя нет в базе Kerberos.
Но сперва составим список пользователей. С помощью следующего кода мы можем составить все возможные комбинации имени пользователя:
#!/usr/bin/python3names = ["Keely Lyons", "Dax Santiago", "Sierra Frye", "Kyla Stewart", "Kaiara Spencer", "Dave Simpson", "Ben Thompson", "Chris Stewart"]list = ["Administrator", "Guest"]for name in names: n1, n2 = name.split(' ') list.append(n1) list.append(n1+n2) list.append(n1+"."+n2) list.append(n1+n2[0]) list.append(n1+"."+n2[0]) list.append(n2[0]+n1) list.append(n2[0]+"."+n1) list.append(n2) list.append(n2+n1) list.append(n2+"."+n1) list.append(n2+n1[0]) list.append(n2+"."+n1[0]) list.append(n1[0]+n2) list.append(n1[0]+"."+n2)for n in list: print(n)
Сохраним список в файл и выполним проверку с помощью kerbrute. Для этого используем опцию userenum
и укажем адрес (--dc
), домен (-d
) и список с вероятными именами учетных записей.
kerbrute_linux_amd64 userenum --dc search.htb -d search.htb users.txt
Все сканирование заняло примерно секунду, а мы получаем три существующих аккаунта. С помощью скрипта GetNPUsers.py из пакета impacket применяем к полученным именам ASRep Roasting в надежде получить зашифрованный пароль пользователя. Но безуспешно.
GetNPUsers.py search.htb/ -usersfile users.txt
Потратив очень много времени на поиск дальнейшего пути, я нашел на сайте фотографию http://
каких‑то записей.
При увеличении картинки стало понятно, что это список дел, среди которых есть такая строчка: «Send password to Hope Sharp».
Проверяем это имя и узнаем, что такой аккаунт в системе есть.
Теперь мы можем проверить и указанный пароль с помощью CrackMapExec.
crackmapexec smb search.htb -u users.txt -p 'IsolationIsKey?'
И получаем первую учетку!
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»