Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
PSPKIAudit — PSPKI 도구 키트를 기반으로 하는 AD CS 감사용 PowerShell 도구 키트. | Kitploit
도구/GitHubGitHub/ghostpack/pspkiaudit
Privilege EscalationPenetration Testing
GitHubghostpack/pspkiaudit

PSPKIAudit

PSPKI 도구 키트를 기반으로 하는 AD CS 감사용 PowerShell 도구 키트.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

PSPKIAudit

Active Directory Certificate Services (AD CS) 감사를 위한 PowerShell 툴킷.

해당 툴킷은 PKISolution의 PSPKI 툴킷(Microsoft Public License)을 기반으로 구축되었습니다. 이 리포지토리에는 PSGallery에서 사용 가능한 버전보다 최신 버전의 PSPKI가 포함되어 있습니다(PSPKI 디렉토리 참조). Vadims Podans(PSPKI의 창시자)님께서 여러 버그 패치가 포함된 이 버전을 친절하게 제공해 주셨습니다.

이 README는 출발점일 뿐입니다. 완전한 세부 정보 및 방어 지침은 "Certified Pre-Owned" 백서를 참조하십시오.

모듈에는 다음과 같은 주요 기능이 포함되어 있습니다.

  1. Invoke-PKIAudit - 현재 포리스트의 AD CS 설정을 감사하며, 주로 CA 서버와 게시된 템플릿을 분석하여 잠재적인 권한 상승 기회를 찾습니다.
  2. Get-CertRequest - CA의 데이터베이스를 쿼리하여 CA가 발급한 인증서를 검사합니다. 주 목적은 인증서 템플릿 권한 상승 취약점을 악용했을 수 있는 인증서 요청을 발견하는 것입니다. 또한, 사용자 또는 컴퓨터가 손상된 경우 사고 대응자가 손상된 사용자/컴퓨터에 CA 서버가 발급한 인증서(폐기되어야 함)를 찾는 데 사용할 수 있습니다.

경고: 이 코드는 베타 버전입니다! Invoke-PKIAudit은 쿼리하는 데이터 양이 매우 제한적이므로 환경에 영향을 미치지 않을 것이라고 확신합니다. 일반적인 CA 서버 워크로드에 대한 Get-CertRequest의 엄격한 테스트는 수행하지 않았습니다. Get-CertRequest는 CA 데이터베이스를 직접 쿼리하며 수천 개의 결과를 처리해야 할 수 있으므로 성능에 영향을 미칠 수 있습니다.

결과가 없다고 해서 환경이 안전하다는 보장은 없습니다!!

또한 당사의 완화 권장 사항이 환경을 안전하게 만들거나 운영을 중단시키지 않을 것이라고 보장할 수 없습니다!

환경에 가장 적합한 완화 조치를 결정하려면 Active Directory/PKI/아키텍처 팀과 상담하는 것은 귀하의 책임입니다.

코드가 손상되거나 누락된 부분이 있으면 수정을 위해 이슈 또는 풀 리퀘스트를 제출해 주세요!

  • 설정
  • AD CS 잘못된 구성 감사
    • 출력 설명
    • ESC1 - 잘못 구성된 인증서 템플릿
    • ESC2 - 잘못 구성된 인증서 템플릿
    • ESC3 - 잘못 구성된 등록 에이전트 템플릿
    • ESC4 - 취약한 인증서 템플릿 액세스 제어
    • ESC5 - 취약한 PKI AD 개체 액세스 제어
    • ESC6 - EDITF_ATTRIBUTESUBJECTALTNAME2
    • ESC7 - 취약한 인증 기관 액세스 제어
    • ESC8 - AD CS HTTP 엔드포인트로 NTLM 릴레이
    • 기타 - 명시적 매핑
  • 기존 발급 인증서 요청 분류

설정

요구 사항

상승된 PowerShell 프롬프트(PowerShell 버전 5.1 이상)를 사용하여 Windows 머신에 다음을 설치합니다.

  • RSAT의 인증서 서비스 및 Active Directory 기능. 다음 명령으로 설치합니다.``` Get-WindowsCapability -Online -Name "Rsat.*" | where Name -match "CertificateServices|ActiveDirectory" | Add-WindowsCapability -Online
* [PSPKI PowerShell module](https://github.com/PKISolutions/PSPKI). 다음 명령어로 설치합니다:```
Install-Module -Name PSPKI

가져오기

모듈을 다운로드하고 폴더에 압축을 푸세요. 그런 다음, 다음 명령어를 사용하여 모듈을 가져오세요:``` cd PSPKIAudit Get-ChildItem -Recurse | Unblock-File

Import-Module .\PSPKIAudit.psd1

# AD CS 오류 구성 감사

`Invoke-PKIAudit`을 실행하면 현재 도메인의 AD CS에 대해 모든 감사 검사를 실행하며, 다양한 인증 기관 및 인증서 템플릿 설정을 열거합니다. 특정 CA를 감사하려면 `Invoke-PKIAudit -CAComputerName CA.DOMAIN.COM` 또는 `Invoke-PKIAudit -CAName X-Y-Z`를 실행하면 됩니다.

발견된 특정 오류 구성을 식별하기 위해 표시된 CA/템플릿 결과에 오류 구성(ESC1-8)이 속성으로 나타납니다.

등록/액세스 제어를 테스트하는 데 사용되는 그룹/사용자를 변경하려면 `Invoke-PKIAudit.ps1` 상단에 있는 `$CommonLowprivPrincipals` 정규식을 수정하세요.

모든 CA 정보를 csv로 내보내려면 다음을 실행하세요: `Get-AuditCertificateAuthority [-CAComputerName CA.DOMAIN.COM | -CAName X-Y-Z] | Export-Csv -NoTypeInformation CAs.csv`

모든 게시된 템플릿 정보를 csv로 내보내려면(취약한 템플릿뿐만 아니라) 다음을 실행하세요: `Get-AuditCertificateTemplate [-CAComputerName CA.DOMAIN.COM | -CAName X-Y-Z] | Export-Csv -NoTypeInformation templates.csv`


## 출력 설명

출력에는 두 가지 주요 섹션이 있습니다: 발견된 CA에 대한 세부 정보와 잠재적으로 취약한 템플릿에 대한 세부 정보입니다.

인증 기관 결과의 경우:

| 인증 기관 속성 | 설명 |
| ------------------------------ | ------------------------------------------------------------------ |
| ComputerName                   | CA가 실행 중인 시스템입니다.                                   |
| CAName                         | CA의 이름입니다.                                                |
| ConfigString                   | 전체 COMPUTER\CA_NAME 구성 문자열입니다.                    |
| IsRoot                         | CA가 루트 CA인지 여부입니다.                                            |
| AllowsUserSuppliedSans         | CA에 `EDITF_ATTRIBUTESUBJECTALTNAME2` 플래그가 설정되어 있는지 여부입니다.       |
| VulnerableACL                  | CA에 취약한 ACL 설정이 있는지 여부입니다.                       |
| EnrollmentPrincipals           | CA 수준에서 `Enroll` 권한이 있는 주체입니다.        |
| EnrollmentEndpoints            | CA의 웹 서비스 등록 엔드포인트입니다.                        |
| NTLMEnrollmentEndpoints        | NTLM이 활성화된 CA의 웹 서비스 등록 엔드포인트입니다. |
| DACL                           | 전체 액세스 제어 정보입니다.                               |
| Misconfigurations              | 존재하는 특정 오류 구성을 나타내는 ESCX(있는 경우).    |


인증서 템플릿 결과의 경우:

| 속성                | 설명                                                                                              |
| ----------------------- | -------------------------------------------------------------------------------------------------------- |
| CA                      | 템플릿이 게시된 전체 CA ConfigString입니다(게시되지 않은 경우 null).                          |
| Name                    | 템플릿 이름입니다.                                                                                       |
| SchemaVersion           | 템플릿의 스키마 버전(1/2/3)입니다.                                                              |
| OID                     | 템플릿의 고유 개체 식별자입니다.                                                           |
| VulnerableTemplateACL   | 템플릿에 취약한 ACL 설정이 있는 경우 True입니다.                                                       |
| LowPrivCanEnroll        | 낮은 권한의 사용자가 템플릿에 등록할 수 있는 경우 True입니다.                                                 |
| EnrolleeSuppliesSubject | `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` 플래그가 있는 경우 True입니다(즉, 사용자가 임의의 SAN을 제공할 수 있음). |
| EnhancedKeyUsage        | 템플릿에서 활성화된 사용 EKU입니다.                                                                  |
| HasAuthenticationEku    | 템플릿에 인증을 허용하는 EKU가 있는 경우 True입니다.                                          |
| HasDangerousEku         | 템플릿에 "위험한"(임의 목적 또는 null) EKU가 있는 경우 True입니다.                                        |
| EnrollmentAgentTemplate | 템플릿에 "Certificate Request Agent" EKU가 있는 경우 True입니다.                                            |
| CAManagerApproval       | 등록에 관리자 승인이 필요한 경우 True입니다.                                                     |
| IssuanceRequirements    | 인증된 서명 정보입니다.                                                                        |
| ValidityPeriod          | 인증서가 유효한 기간입니다.                                                                   |
| RenewalPeriod           | 인증서의 갱신 기간입니다.                                                                  |
| Owner                   | 인증서를 소유한 주체입니다.                                                                  |
| DACL                    | 전체 액세스 제어 정보입니다.                                                                     |
| Misconfigurations       | 존재하는 특정 오류 구성을 나타내는 ESCX(있는 경우).                                          |


## ESC1 - 잘못 구성된 인증서 템플릿

### 세부 사항 <!-- omit in toc -->

이 권한 상승 시나리오는 다음 조건이 충족될 때 발생합니다:

1. **엔터프라이즈 CA가 낮은 권한의 사용자에게 등록 권한을 부여합니다.** 엔터프라이즈 CA의 구성은 낮은 권한의 사용자가 인증서를 요청할 수 있도록 허용해야 합니다. 자세한 내용은 백서 시작 부분의 "배경 - 등록" 섹션을 참조하십시오.

2. **관리자 승인이 비활성화되었습니다.** 이 설정은 인증서 "관리자" 권한이 있는 사용자가 요청된 인증서를 검토하고 승인해야 인증서가 발급됩니다. 자세한 내용은 백서 시작 부분의 "배경 - 발급 요구 사항" 섹션을 참조하십시오.

3. **인증된 서명이 필요하지 않습니다.** 이 설정은 모든 CSR이 기존 인증된 인증서로 서명되어야 합니다. 자세한 내용은 백서 시작 부분의 "배경 - 발급 요구 사항" 섹션을 참조하십시오.

4. **지나치게 허용적인 인증서 템플릿 보안 설명자가 낮은 권한의 사용자에게 인증서 등록 권한을 부여합니다.** 인증서 등록 권한이 있으면 낮은 권한의 공격자가 템플릿을 기반으로 인증서를 요청하고 획득할 수 있습니다. 등록 권한은 인증서 템플릿 AD 개체의 보안 설명자를 통해 부여됩니다.
도구 다운로드