HTB Scrambled. Применяем ASREPRoast и Kerberoasting для атаки на SMB и MS SQL
the Matrix
Наша цель — захват тренировочной машины Scrambled с площадки Hack The Box.
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts, чтобы к ней было удобнее обращаться:
И запускаем сканирование портов.
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта.
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).

Нашлось много открытых портов, что типично для Windows:
Все перечисленные службы Microsoft пока что ничего нам дать не могут, поэтому первым делом смотрим сайт.

Сразу отмечаем полезную информацию: аутентификация NTLM отключена.
На одной из страниц находим скриншот консоли, а в нем видно пользователя ksimpson. Это очень важная информация!

На другой странице отмечаем инструкцию к ПО, работающему на порте 4411. Здесь обратим внимание на имя сервера и домен — dc1.scrm.local. Соответствующие записи добавляем в файл /etc/hosts.

А также находим информацию о том, что имя пользователя может выступить в качестве пароля.

Мы можем отправить запрос ASREP, существует ли тот или иной аккаунт. Есть возможность запросить ключ (AS key) Kerberos этого пользователя, ключ будет зашифрован с помощью его пароля. Но дело в том, что сервер различает ответы «данный флаг не установлен» и «учетная запись не существует». А значит, если пройдемся по именам пользователей и для какого‑то нам ответят, что флаг не установлен, мы узнаем, что эта учетка существует. Сделать такой перебор можно с помощью инструмента GetNPUsers из пакета impacket. Имя пользователя у нас уже есть.

Нам ответили, что флаг не установлен, а значит, учетная запись существует. Теперь с помощью kerbrute проверим пароль пользователя.

Учетные данные оказались верны, поэтому мы можем запросить тикет пользователя и применить его как аутентификатор, вместо пароля. В этом нам поможет скрипт getTGT из того же impacket.

Экспортируем полученный тикет и подключаемся к службе SMB. Чтобы удалось аутентифицироваться, время на твоем хосте и на сервере должно отличаться не больше чем на пять минут. Поэтому стоит обновить локальное время по протоколу NTP.

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

Там находим всего один документ. Скачиваем его командой get <file>. В самом документе рассказано о недавнем взломе службы MS SQL.

Раз мы имеем дело с MS SQL, значит, можем выполнить атаку Kerberoasting. Ее цель — собрать билеты TGS для служб, которые запускаются от имени пользователей, а не от системных учеток. Тикеты TGS зашифрованы ключами, полученными из паролей пользователей, а значит, их данные можно взломать простым перебором. Уязвимые учетные записи определим по полю SPN, которое не будет пустым. Выполним запрос TGS с помощью скрипта GetUserSPNs из все того же impacket.

Теперь сохраним тикет в файл и отдадим JTR для перебора. Пароль учетной записи получим очень быстро.

Мы получили пароль службы, и, чтобы с ней работать, следующим шагом должно быть получение «серебряного билета». Silver ticket — это реальный билет TGS для определенной службы, в котором используется NTLM пользователя. Он даст нам доступ к этой службе. Чтобы сгенерировать такой билет, нам нужно знать NTLM-хеш пароля и SID домена. SID домена получим из отладочной информации при выполнении impacket-secretsdump.

А хеш генерируем на сайте md5decrypt.net из полученного пароля.

А теперь генерируем билет.

Экспортируем созданный билет в рабочее окружение и подключаемся к службе MS SQL, используя аутентификацию Kerberos.

Перейдем к базе данных ScrambleHR и получим из нее таблицы.

Нас интересует таблица пользователей UserImport. Получаем все ее записи.

С найденными учетными данными подключиться никуда не удастся, поэтому попробуем получить управление через MS SQL. Первым делом нужно активировать xp_cmdshell. Из нашего интерпретатора это можно сделать встроенной командой enable_xp_cmdshell, после чего выполняем реконфигурацию.

Теперь мы можем выполнять команды через xp_cmdshell.

Сразу прокинем реверс‑шелл, который сгенерируем с помощью очень удобного Online Reverse Shell Generator. Для него нужно указать параметры, такие как локальные хост и порт, а также язык и целевую систему. Дополнительно задаем кодировку Base64. Листенер запускаем командой rlwrap -cAr nc -lvnp 4321.

Получаем бэкконнект и продвигаемся дальше.
У нас уже есть учетные данные пользователя MiscSvc, поэтому попробуем получить новую сессию PowerShell:

Так как команда была выполнена в другом контексте, пробросим наш реверс‑шелл и продолжим работу от имени MiscSvc:

Запросив подробную информацию о пользователе, замечаем, что он состоит в группах ITShare и ITUsers.

Перейдем к общим ресурсам и найдем там каталог IT. Если зайти еще дальше, то наткнемся на исполняемый файл ScrambleClient.exe.

С помощью netcat забираем файлы с хоста.
И так как это приложение .NET, мы можем его легко декомпилировать с помощью dnSpy. По классу LoginWindow понимаем, что это то самое приложение, которое работает на порте 4411.

Если мы выполним команду LIST_ORDERS, нам вернут ответ SUCCESS и сериализованный объект. Интересно.


В исходном коде находим функцию загрузки.

Так можно сериализовать объект и отправить его через команду UPLOAD_ORDER. Тогда при десериализации он должен будет выполниться. Для сериализации будем использовать ysoserial для .NET. Сначала скачаем со своего хоста netcat, для чего командой python3 -m http.server -p 8080 поднимаем веб‑сервер.


Когда файл будет загружен, повторим наш трюк. Но на этот раз реверс‑шелл создадим с помощью скачанного netcat. В созданный листенер должен прилететь бэкконект в контексте SYSTEM.

Забираем флаг рута, и машина захвачена!
Источник
Наши проекты:
- Кибер новости: the Matrix
- Хакинг: /me Hacker
- Кодинг: Minor Code
👁 Пробить человека? Легко через нашего бота: Мистер Пробиватор