Инструмент для злоупотребления сертификатами и службами сертификации Active Directory (AD CS).
C#-инструмент для атак на Kerberos в среде Active Directory: AS-REP Roasting, Kerberoasting, Pass-the-Ticket, Overpass-the-Hash, Golden/Silver Ticket, …
Инструмент для локального повышения привилегий в доменных средах Windows при отсутствии обязательной подписи LDAP.
Приложение на C#, использующее права редактирования объекта групповой политики (GPO) для компрометации управляемых им объектов.
Коллектор данных для BloodHound: собирает информацию об Active Directory — пользователи, группы, компьютеры, сессии, ACL, GPO, …
dotnet build Certify.sln -c Release
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 и закодируйте получившуюся сборку в 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())
Из-за того, как 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 использовал несколько ресурсов, найденных в сети, в качестве справки и вдохновения:
Работа с AD CS была построена на основе работ многих других. Белая книга содержит полное описание, но чтобы суммировать: