Certify

Post-Exploitation активный

Инструмент для злоупотребления сертификатами и службами сертификации Active Directory (AD CS).


Установка
dotnet build Certify.sln -c Release
показать оригинал переведено ИИ

Certify

Certify — это инструмент на C# для перечисления и злоупотребления неправильными конфигурациями в Active Directory Certificate Services (AD CS).

@harmj0y и @tifkin_ являются основными авторами Certify и связанных исследований AD CS (блог и белый документ).

Содержание

Использование

Обзор команд и подробные сведения об использовании можно найти в вики.

Оборонительные соображения

Certify был опубликован на Black Hat 2021 вместе с нашим докладом \"Certified Pre-Owned: Abusing Active Directory Certificate Services\".

См. наш белый документ для рекомендаций по предотвращению и обнаружению.

Инструкции по компиляции

Мы не планируем выпускать бинарные файлы для Certify, поэтому вам придётся скомпилировать его самостоятельно :)

Certify собран на .NET 4.7.2 и совместим с Visual Studio 2022 Community Edition. Просто откройте проект .sln, выберите «Release» и соберите.

Примечание: Запуск Certify через PowerShell

Если вы хотите запустить Certify в памяти через оболочку PowerShell, сначала скомпилируйте Certify и закодируйте получившуюся сборку в base64:

[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\Temp\Certify.exe")) | Out-File -Encoding ASCII C:\Temp\Certify.txt

Затем Certify можно загрузить в скрипт PowerShell следующим образом (где \"aa...\" заменяется строкой base64-кода сборки Certify):

$CertifyAssembly = [System.Reflection.Assembly]::Load([Convert]::FromBase64String("aa..."))

Затем метод Main() и любые аргументы можно вызвать следующим образом:

[Certify.Program]::Main("enum-templates --filter-enabled --filter-vulnerable".Split())

Примечание Примечание: Запуск Certify через PSRemoting

Из-за того, как PSRemoting обрабатывает вывод, нам нужно перенаправить stdout в строку и вернуть её вместо этого. К счастью, Certify имеет функцию, которая помогает с этим.

Если вы следуете инструкциям в Примечание: Запуск Certify через PowerShell для создания файла Certify.ps1, добавьте в скрипт примерно следующее:

[Certify.Program]::MainString("enum-templates --filter-enabled --filter-vulnerable")

Затем вы сможете запустить Certify через PSRemoting примерно следующим образом:

$s = New-PSSession dc.theshire.local
Invoke-Command -Session $s -FilePath C:\Temp\Certify.ps1

Альтернативно, аргумент Certify /outfile:C:\FILE.txt перенаправит все потоки вывода в указанный файл.

Размышления

Что касается публичного раскрытия информации, мы самоэмбаргонили выпуск нашего наступательного инструмента (Certify, а также ForgeCert) примерно на 45 дней после публикации нашего белого документа, чтобы дать организациям возможность разобраться с проблемами, связанными с Active Directory Certificate Services. Мы также заранее опубликовали некоторые сигнатуры YARA/IOC для обоих проектов и выпустили ориентированный на защиту проект PSPKIAudit PowerShell вместе с белым документом. Однако мы обнаружили, что организации и поставщики исторически часто не исправляли проблемы или не создавали детекции для «теоретических» атак, пока кто-то не докажет их осуществимость на примере proof‑of‑concept.

Благодарности

Certify использовал несколько ресурсов, найденных в сети, в качестве справки и вдохновения:

* Эта запись о запросе сертификатов из C#.

Работа с AD CS была построена на основе работ многих других. Белая книга содержит полное описание, но чтобы суммировать:

Войдите, чтобы оставить комментарий