
Active Directory 도메인 침해 이후 위협 행위자가 배포한 (잠재적인) 지속성 메커니즘을 발견하는 데 도움을 주기 위한 PowerShell 스크립트입니다.
FarsightAD는 Active Directory 도메인 침해 이후 위협 행위자가 배포한 (가능한) 지속성 메커니즘을 발견하는 데 도움을 주기 위해 설계된 PowerShell 스크립트입니다.
이 스크립트는 복제 메타데이터의 타임스탬프로 보강된 다양한 객체와 해당 속성들을 CSV/JSON 파일로 내보냅니다. 또한, 복제 권한으로 실행될 경우 Directory Replication Service (DRS) 프로토콜을 활용하여 완전 또는 부분적으로 숨겨진 객체를 탐지합니다.
자세한 내용은 SANS DFIR Summit 2022 소개 슬라이드를 참조하세요.
FarsightAD는 PowerShell 7과 PowerShell 7용으로 업데이트된 ActiveDirectory 모듈이 필요합니다.
Windows 10 / 11에서는 RSAT: Active Directory Domain Services and Lightweight Directory Services Tools를 통해 선택적 기능에서 모듈을 설치할 수 있습니다. 이미 설치된 모듈은 다음 명령어로 업데이트할 수 있습니다.
Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0
모듈이 올바르게 업데이트되면 Get-Command Get-ADObject 명령어의 출력이 다음과 같아야 합니다.
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-ADObject 1.0.X.X ActiveDirectory
. .\FarsightAD.ps1
Invoke-ADHunting [-Server <DC_IP | DC_HOSTNAME>] [-Credential <PS_CREDENTIAL>] [-ADDriveName <AD_DRIVE_NAME>] [-OutputFolder <OUTPUT_FOLDER>] [-OutputType <CSV | JSON>]
각 cmdlet 사용법에 대한 자세한 내용은 Get-Help -Full <CMDLET> 명령어로 확인할 수 있습니다.

완전히 숨겨진 사용자 추가

사용자의 SID History 특성 숨기기

Export-ADHuntingHiddenObjectsWithDRSRepData를 사용하여 완전 및 부분적으로 숨겨진 사용자 발견
DRS 요청을 위한 C# 코드는 다음에서 각색되었습니다:
MakeMeEnterpriseAdmin by @vletoux.Mimikatz by @gentilkiwi and @vletoux.SharpKatz by @b4rtik.Key Credentials를 구문 분석하는 함수는 ADComputerKeys PowerShell 모듈에서 가져왔습니다.
AD CS 관련 지속성은 다음 작업을 기반으로 합니다:
Service Principal Name 구문 분석 함수는 Adam Bertram의 작업을 기반으로 합니다.
CC BY 4.0 라이선스 - https://creativecommons.org/licenses/by/4.0/
| Cmdlet | 설명 |
|---|
Invoke-ADHunting | 아래에 언급된 모든 FarsightAD AD 헌팅 cmdlet을 실행합니다. |
Export-ADHuntingACLDangerousAccessRights | 도메인의 모든 객체에 대해 위험한 ACE(기본 객체를 탈취할 수 있는 ACE)를 내보냅니다. 대규모 도메인에서는 시간이 오래 걸릴 수 있습니다. |
Export-ADHuntingACLDefaultFromSchema | Schema 클래스의 defaultSecurityDescriptor 특성에 구성된 ACL을 내보냅니다. Microsoft 문서에 정의된 기본값과 다른 ACL을 식별하고 잠재적으로 위험한 ACE를 강조 표시합니다. |
Export-ADHuntingACLPrivilegedObjects | 도메인의 권한 있는 객체에 구성된 ACL을 내보내고 잠재적으로 위험한 액세스 권한을 강조 표시합니다. |
Export-ADHuntingADCSCertificateTemplates | 인증서 템플릿의 정보와 액세스 권한을 내보냅니다. 다음 주요 매개변수를 검색합니다: 인증서 템플릿 게시 상태, 인증서 용도, 주체가 사용자 제공 데이터로 구성되는지 여부, 액세스 제어(등록/수정). |
Export-ADHuntingADCSPKSObjects | 민감한 PKS 객체(NTAuthCertificates, certificationAuthority, pKIEnrollmentService)의 정보와 액세스 권한을 내보냅니다. |
Export-ADHuntingGPOObjectsAndFilesACL | GPO 객체 및 파일의 ACL 액세스 권한 정보를 내보내고, GPO가 권한 있는 사용자 또는 컴퓨터에 적용되었는지 강조 표시합니다. |
Export-ADHuntingGPOSettings | GPO로 구성되어 지속성에 활용될 수 있는 다양한 설정(권한 및 로그온 권한, 제한된 그룹 구성원, 예약된 작업 및 즉시 작업 V1/V2, 컴퓨터 및 사용자 로그온/로그오프 스크립트)에 대한 정보를 내보냅니다. |
Export-ADHuntingHiddenObjectsWithDRSRepData | 복제(Directory Replication Service (DRS) 프로토콜 사용)를 통해 액세스 가능하지만 직접 쿼리로는 접근할 수 없는 객체의 속성을 내보냅니다. 복제 작업에는 액세스 제어가 고려되지 않으므로, 특정 객체 속성에 대한 액세스를 차단하는 액세스 제어를 식별할 수 있습니다. 제한된 민감 속성 집합만 평가합니다. |
Export-ADHuntingKerberosDelegations | 위험한 것으로 간주되는 Kerberos 위임(제약 없는 위임, 권한 있는 서비스에 대한 제약 위임, 또는 권한 있는 서비스에 대한 리소스 기반 제약 위임)을 내보냅니다. |
Export-ADHuntingPrincipalsAddedViaMachineAccountQuota | 권한 없는 주체가 (ms-DS-MachineAccountQuota 메커니즘을 사용하여) 도메인에 추가한 컴퓨터를 내보냅니다. |
Export-ADHuntingPrincipalsCertificates | userCertificate 특성이 비어 있지 않은 계정의 인증서를 구문 분석하여 내보냅니다. 인증서를 구문 분석하여 여러 매개변수(인증서 유효 기간 타임스탬프, 인증서 용도, 인증서 주체 및 SubjectAltName 등)를 검색합니다. |
Export-ADHuntingPrincipalsDontRequirePreAuth | Kerberos 사전 인증이 필요하지 않은 계정을 내보냅니다. |
Export-ADHuntingPrincipalsOncePrivileged | 한 번이라도 권한 있는 그룹의 구성원이었던 계정을 내보냅니다. |
Export-ADHuntingPrincipalsPrimaryGroupID | 기본 primaryGroupID 특성이 아닌 값을 가진 계정을 내보내고, 권한 있는 그룹과 연결된 RID를 강조 표시합니다. |
Export-ADHuntingPrincipalsPrivilegedAccounts | 권한 있는 그룹 구성원에 대한 상세 정보를 내보냅니다. |
Export-ADHuntingPrincipalsPrivilegedGroupsMembership | 복제 메타데이터를 사용하여 검색한 권한 있는 그룹의 현재 및 과거 구성원을 내보냅니다. |
Export-ADHuntingPrincipalsSIDHistory | SID History 특성이 비어 있지 않은 계정을 내보내고, 연결된 도메인을 확인하고 권한 있는 SID를 강조 표시합니다. |
Export-ADHuntingPrincipalsShadowCredentials | msDS-KeyCredentialLink 특성이 비어 있지 않은 계정의 Key Credentials 정보를 구문 분석하여 내보냅니다. |
Export-ADHuntingPrincipalsTechnicalPrivileged | 기술적 권한 계정(SERVER_TRUST_ACCOUNT 및 INTERDOMAIN_TRUST_ACCOUNT)을 내보냅니다. |
Export-ADHuntingPrincipalsUPNandAltSecID | UserPrincipalName 또는 AltSecurityIdentities 특성을 정의하는 계정을 내보내고 잠재적 이상을 강조 표시합니다. |
Export-ADHuntingTrusts | 포리스트의 모든 도메인에 대한 트러스트를 내보냅니다. 각 트러스트에 대해 여러 매개변수(전이성, SID 필터링, TGT 위임)를 검색합니다. |