Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/ghostpack/forgecert
Payload GenerationPersistence MechanismsExploitationAuthentication
GitHubghostpack/forgecert

ForgeCert

도난당한 인증 기관 개인 키를 사용하여 Active Directory 인증용 인증서를 위조하고, 위조된 .pfx 파일로 지속적인 도메인 액세스를 가능하게 합니다.

저장소 보기
7151153년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ForgeCert

ForgeCert는 BouncyCastle C# API와 도난당한 인증 기관(CA) 인증서 + 개인 키를 사용하여 Active Directory에 인증할 수 있는 임의의 사용자를 위한 인증서를 위조합니다.

이 공격은 "Certified Pre-Owned" 백서에서 DPERSIST1으로 명시되어 있습니다. 이 코드 베이스는 백서가 게시된 후 약 45일 후에 공개되었습니다.

@tifkin_은 ForgeCert의 주요 작성자입니다.

@tifkin_과 @harmj0y는 관련 Active Directory 인증서 서비스 연구(블로그 및 백서)의 주요 저자입니다.

배경

백서의 Background 및 Forging Certificates with Stolen CA Certificates - DPERSIST1 섹션에 설명된 대로, 인증 기관의 CA 인증서에 대한 개인 키는 DPAPI 또는 하드웨어(HSM/TPM)를 통해 CA 서버에서 보호됩니다. 또한, 개인 키가 없는 인증서는 NTAuthCertificates 포리스트 개체에 게시되며, 이는 AD에 대한 인증을 활성화하는 CA 인증서를 정의합니다. 종합하면, NTAuthCertificates에 인증서가 있는 CA는 자체 개인 키를 사용하여 요청 클라이언트의 인증서 서명 요청(CSR)에 서명합니다. 다음 그래픽이 이 프로세스를 요약합니다:

CA의 개인 키 보안은 가장 중요합니다. 언급했듯이, 개인 키가 TPM이나 HSM과 같은 하드웨어 솔루션으로 보호되지 않으면 키는 DPAPI(Data Protection API)로 암호화되어 CA 서버의 디스크에 저장됩니다. 공격자가 CA 서버를 손상시킬 수 있는 경우, @gentilkiwi의 Mimikatz 또는 GhostPack의 SharpDPAPI 프로젝트를 사용하여 하드웨어로 보호되지 않는 모든 CA 인증서의 개인 키를 추출할 수 있습니다. 백서의 THEFT3는 머신 인증서에 대한 이 프로세스를 설명합니다.

발급된 인증서에 서명하는 데 사용되는 유일한 키 자료는 CA의 개인 키이므로, 공격자가 (NTAuthCertificates에 있는 인증서에 대한) 이러한 키를 탈취하면 도메인 인증이 가능한 인증서를 위조할 수 있습니다. 이러한 위조 인증서는 도메인의 모든 사용자 계정(단, 인증이 가능하려면 계정이 "활성" 상태여야 하므로 krbtgt와 같은 계정은 작동하지 않음)에 대해 생성될 수 있으며, 인증서는 CA 인증서가 유효한 기간(기본적으로 일반적으로 5년이지만 더 길게 설정 가능) 동안 유효합니다.

또한, 이러한 인증서는 정상적인 발급 프로세스의 결과물이 아니므로 CA는 해당 인증서가 생성되었음을 인지하지 못합니다. 따라서 인증서는 취소될 수 없습니다.

참고: NTAuthCertificates에 있는 모든 CA 인증서(루트 또는 하위 CA)의 개인 키는 포리스트에서 인증이 가능한 인증서를 위조하는 데 사용될 수 있습니다. 인증서/키가 하위 CA에서 온 경우, 인증서 체인 검증을 위한 합법적인 CRL이 제공되어야 합니다.

ForgeCert는 BouncyCastle의 X509V3CertificateGenerator를 사용하여 위조를 수행합니다.

명령줄 사용법

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.

사용법

참고: 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 해시를 검색)할 수 있습니다.

방어 고려 사항

현재 ForgeCert 코드 베이스의 TypeRefHash는 b26b451ff2c947ae5904f962e56facbb45269995fbb813070386472f307cfcf0입니다.

ForgeCert의 TypeLib GUID는 bd346689-8ee6-40b3-858b-4ed94f08d40a입니다. 이는 현재 이 저장소의 Yara 규칙에 반영되어 있습니다.

예방 및 탐지 지침은 백서의 PREVENT1, DETECT3, DETECT5를 참조하세요.

Fabian Bader는 Microsoft OCSP 설정을 조정하여 "Golden Certificates"의 많은 사용을 완화하는 방법에 대한 훌륭한 글을 게시했습니다. 단, Final Thoughts 섹션에서 그는 이 방법은 전혀 무적이 아닙니다. 공격자가 인증서 생성 과정을 제어하고 있으므로 일련 번호를 유효한 것으로 변경할 수 있기 때문입니다.라고 언급했습니다. 이는 그의 PR에서 구현되었지만, 기본적으로 일련 번호는 무작위화되므로 OSCP 방지가 많은 경우에 작동할 수 있으며 구현할 가치가 있다고 생각합니다.

이 프로젝트에서 생성된 유형의 위조 인증서에 대한 Yara/기타 탐지 규칙을 구축할 기회가 있을 수 있다고 생각합니다. 방어 연구자 중 이 파일들에 서명하는 좋은 방법을 찾으시면 알려주시기 바랍니다. 그러면 여기 Yara 규칙/방어 지침을 업데이트하겠습니다.

고찰

"Golden Tickets"(위조 TGT)와 이러한 "Golden Certificates"(위조 AD CS 인증서) 사이에는 명확한 유사점이 있습니다. krbtgt 해시와 CA 개인 키 모두 Active Directory 환경의 보안에 중요한 암호화 자료이며, 둘 다 임의의 사용자에 대한 인증자를 위조하는 데 사용될 수 있습니다. 그러나 krbtgt 해시는 DCSync를 통해 원격으로 검색할 수 있는 반면, CA 개인 키는 (적어도 현재로서는) CA 머신 자체에서 코드 실행을 통해 복구해야 합니다. krbtgt 해시는 비교적 쉽게 교체할 수 있지만, CA 개인 키를 교체하는 것은 훨씬 더 어렵습니다.

공개 공개와 관련하여, 우리는 백서를 게시한 후 약 45일 동안 공격 도구(ForgeCert 및 Certify)의 공개를 자체 유예했습니다. 이는 조직이 Active Directory 인증서 서비스 관련 문제를 파악할 기회를 제공하기 위해서였습니다. 그러나 조직과 벤더는 누군가가 개념 증명을 통해 공격이 가능하다는 것을 증명하기 전까지는 종종 "이론적" 공격에 대한 문제를 수정하거나 탐지를 구축하지 않는 경향이 있습니다.

이는 일부 사람들의 반응에 반영됩니다: 이것은 멍청하다, CA 개인 키로 인증서를 위조할 수 있는 것은 당연하지. 이에 대해 우리는 말합니다: 네, 많은 것들이 가능하지만, PoC||GTFO입니다.

도구 다운로드