Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ForgeCert — Форжинг сертификатов для аутентификации в Active Directory с использованием украденных закрытых ключей Центра сертификации, что обеспечивает постоянный доступ к домену с помощью поддельных .pfx-файлов. | Kitploit
Инструменты/GitHubGitHub/ghostpack/forgecert
Генерация полезной нагрузкиМеханизмы персистентностиЭксплуатацияАутентификация
GitHubghostpack/forgecert

ForgeCert

Форжинг сертификатов для аутентификации в Active Directory с использованием украденных закрытых ключей Центра сертификации, что обеспечивает постоянный доступ к домену с помощью поддельных .pfx-файлов.

Репозиторий
71511553 лет назадПроверено Kitploit

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

ForgeCert

ForgeCert использует BouncyCastle C# API и украденный сертификат центра сертификации (CA) + закрытый ключ для создания поддельных сертификатов для произвольных пользователей, способных пройти аутентификацию в Active Directory.

Эта атака обозначена как DPERSIST1 в нашей технической статье "Certified Pre-Owned". Данный код был опубликован примерно через 45 дней после публикации статьи.

@tifkin_ является основным автором ForgeCert.

@tifkin_ и @harmj0y являются основными авторами сопутствующего исследования служб сертификации Active Directory (блог и техническая статья).

Background

Как описано в разделах Background и Forging Certificates with Stolen CA Certificates - DPERSIST1 нашей технической статьи, закрытый ключ сертификата центра сертификации (CA) защищается на сервере CA либо с помощью DPAPI, либо аппаратно (HSM/TPM). Кроме того, сам сертификат (без закрытого ключа) публикуется в лесном объекте , который определяет сертификаты CA, разрешающие аутентификацию в AD. В совокупности, CA, чей сертификат присутствует в , использует свой закрытый ключ для подписи запросов на подпись сертификатов (CSR) от клиентов. Эта диаграмма суммирует процесс:

NTAuthCertificates
NTAuthCertificates

Безопасность закрытого ключа CA имеет первостепенное значение. Как уже упоминалось, если закрытый ключ не защищен аппаратным решением, таким как TPM или HSM, ключ будет зашифрован с помощью API защиты данных (DPAPI) и сохранен на диске сервера CA. Если злоумышленнику удастся скомпрометировать сервер CA, он сможет извлечь закрытый ключ для любого сертификата CA, не защищенного аппаратно, используя Mimikatz от @gentilkiwi или проект SharpDPAPI от GhostPack. THEFT3 в технической статье описывает этот процесс для машинных сертификатов.

Поскольку единственным ключевым материалом, используемым для подписи выданных сертификатов, является закрытый ключ CA, если злоумышленник украдет такой ключ (для сертификата в NTAuthCertificates), он сможет подделать сертификаты, способные обеспечить аутентификацию в домене. Эти поддельные сертификаты могут быть созданы для любого участника домена (хотя учетная запись должна быть "активной" для возможности аутентификации, поэтому такие учетные записи, как krbtgt, не подойдут), и сертификаты будут действительны до тех пор, пока действителен сертификат CA (обычно 5 лет по умолчанию, но может быть установлен более длительный срок).

Кроме того, поскольку эти сертификаты не являются продуктом обычного процесса выдачи, CA не знает об их создании. Таким образом, сертификаты не могут быть отозваны.

Примечание: закрытый ключ ЛЮБОГО сертификата CA в NTAuthCertificates (корневого или подчиненного CA) может быть использован для подделки сертификатов, способных обеспечить аутентификацию в лесу. Если сертификат/ключ от подчиненного CA, необходимо предоставить легитимный CRL для проверки цепочки сертификатов.

ForgeCert использует BouncyCastle's X509V3CertificateGenerator для выполнения подделок.

Command Line Usage

root@kitploit:~
C:\Temp>ForgeCert.exe
ForgeCert 1.0.0.0
Copyright c  2021

ERROR(S):
  Required option 'CaCertPath' is missing.
  Required option 'SubjectAltName' is missing.
  Required option 'NewCertPath' is missing.
  Required option 'NewCertPassword' is missing.

  --CaCertPath         Required. CA private key as a .pfx or .p12 file

  --CaCertPassword     Password to the CA private key file

  --Subject            (Default: CN=User) Subject name in the certificate

  --SubjectAltName     Required. UPN of the user to authenticate as

  --NewCertPath        Required. Path where to save the new .pfx certificate

  --NewCertPassword    Required. Password to the .pfx file

  --CRL                ldap path to a CRL for the forged certificate

  --help               Display this help screen.

  --version            Display version information.

Usage

Примечание: полное описание кражи закрытого ключа CA и подделки сертификатов аутентификации см. в разделе DPERSIST1 в технической статье.

Контекст:

  • Украденный сертификат CA — ca.pfx, зашифрованный паролем Password123!
  • Субъект произволен, так как мы указываем альтернативное имя субъекта для сертификата.
  • Альтернативное имя субъекта (т.е. пользователь, для которого мы создаем поддельный сертификат) — [email protected].
  • Поддельный сертификат будет сохранен как localadmin.pfx, зашифрованный паролем NewPassword123!
root@kitploit:~
C:\Tools\ForgeCert>ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword "Password123!" --Subject "CN=User" --SubjectAltName "[email protected]" --NewCertPath localadmin.pfx --NewCertPassword "NewPassword123!"
CA Certificate Information:
  Subject:        CN=theshire-DC-CA, DC=theshire, DC=local
  Issuer:         CN=theshire-DC-CA, DC=theshire, DC=local
  Start Date:     1/4/2021 10:48:02 AM
  End Date:       1/4/2026 10:58:02 AM
  Thumbprint:     187D81530E1ADBB6B8B9B961EAADC1F597E6D6A2
  Serial:         14BFC25F2B6EEDA94404D5A5B0F33E21

Forged Certificate Information:
  Subject:        CN=User
  SubjectAltName: [email protected]
  Issuer:         CN=theshire-DC-CA, DC=theshire, DC=local
  Start Date:     7/26/2021 3:38:45 PM
  End Date:       7/26/2022 3:38:45 PM
  Thumbprint:     C5789A24E91A40819EFF7CFD77150595F8B9878D
  Serial:         3627A48F90F6869C3215FF05BC3B2E42

Done. Saved forged certificate to localadmin.pfx with the password 'NewPassword123!'

Эту подделку можно выполнить на системе, контролируемой злоумышленником, и полученный сертификат можно использовать с Rubeus для запроса TGT (и/или получения NTLM хеша пользователя ;)

Defensive Considerations

TypeRefHash текущей кодовой базы ForgeCert: b26b451ff2c947ae5904f962e56facbb45269995fbb813070386472f307cfcf0.

TypeLib GUID ForgeCert: bd346689-8ee6-40b3-858b-4ed94f08d40a. Это отражено в Yara-правилах, находящихся в этом репозитории.

См. разделы PREVENT1, DETECT3 и DETECT5 в нашей технической статье для получения рекомендаций по предотвращению и обнаружению.

Fabian Bader опубликовал отличный пост о том, как смягчить многие случаи использования "Golden Certificates" с помощью настроек Microsoft OCSP. Однако обратите внимание, что в разделе Final Thoughts он упоминает: This method is not bulletproof at all. Since the attacker is in charge of the certificate creation process, she could just change the serial number to a valid one. Это было реализовано в его PR, хотя помните, что по умолчанию серийный номер будет рандомизирован, что означает, что защита с помощью OCSP должна работать во многих случаях, и, по нашему мнению, ее стоит внедрить.

Мы считаем, что могут быть возможности для создания Yara/других правил обнаружения для типов поддельных сертификатов, которые создает этот проект — если какие-либо исследователи защиты найдут хороший способ сигнатурирования этих файлов, пожалуйста, сообщите нам, и мы обновим Yara-правила/рекомендации по защите здесь.

Reflections

Существует явная параллель между "Golden Tickets" (поддельные TGT) и этими "Golden Certificates" (поддельные сертификаты AD CS). Как хеш krbtgt, так и закрытый ключ CA являются криптографическим материалом, критически важным для безопасности среды Active Directory, и оба могут быть использованы для подделки аутентификаторов для произвольных пользователей. Однако, в то время как хеш krbtgt можно получить удаленно через DCSync, закрытый ключ CA должен быть (по крайней мере, насколько нам известно) восстановлен путем выполнения кода на самой машине CA. В то время как хеш krbtgt можно сменить относительно легко, смена закрытого ключа CA значительно сложнее.

Что касается публичного раскрытия, мы добровольно наложили эмбарго на выпуск наших наступательных инструментов (ForgeCert, а также Certify) примерно на 45 дней после публикации нашей технической статьи, чтобы дать организациям возможность разобраться с проблемами, связанными со службами сертификации Active Directory. Однако мы обнаружили, что организации и поставщики исторически часто не исправляли проблемы и не создавали средства обнаружения для "теоретических" атак до тех пор, пока кто-то не доказывал возможность атаки с помощью доказательства концепции.

Это отражается в реакции некоторых людей на исследование: this IS StUPId, oF COurse YoU Can FORge CERts WITH ThE ca PriVAtE KeY. На что мы отвечаем: да, многие вещи возможны, но PoC||GTFO

Скачать инструмент