adaudit
이 PowerShell 스크립트는 Microsoft Active Directory의 포괄적인 감사를 수행하여 일반적인 보안 취약점과 약점을 식별하는 데 중점을 둡니다. 실행을 통해 강화가 필요한 중요한 영역을 정확히 찾아내어 Active Directory를 대상으로 하는 측면 이동 또는 권한 상승 공격에 사용되는 일반적인 전술에 대해 인프라를 강화할 수 있습니다.
_____ ____ _____ _ _ _
| _ | \ | _ |_ _ _| |_| |_
| | | | | | | | . | | _|
|__|__|____/ |__|__|___|___|_|_|
by phillips321
스크립트에 사용할 수 있는 좋은 PowerShell 원라이너가 있다면 알려주세요. 이 스크립트는 외부 도구(ntdsutil 및 cmd.exe 제외)에 대한 요구 사항 없이 단일 파일로 유지하려고 합니다.
DC에서 DA 계정으로 직접 실행하세요. 코드를 신뢰할 수 없다면 먼저 읽어보시길 권장합니다. 모두 무해하다는 것을 알 수 있을 것입니다! (하지만 인터넷에서 다운로드한 코드를 DA로 실행하기 전에 그렇게 해야 하지 않을까요?)
이 기능이 하는 일
- 장치 정보
- 도메인 감사
- Get-LastWUDate
- Get-DCEval
- Get-TimeSource
- Get-PrivilegedGroupMembership
- Get-MachineAccountQuota
- Get-DefaultDomainControllersPolicy
- Get-SMB1Support
- Get-FunctionalLevel
- Get-DCsNotOwnedByDA
- Get-ReplicationType
- Get-RecycleBinState
- Get-CriticalServicesStatus
- Get-RODC
- 도메인 트러스트 감사
- 사용자 계정 감사
- Get-InactiveAccounts
- Get-DisabledAccounts
- Get-LockedAccounts
- Get-AdminAccountChecks
- Get-NULLSessions
- Get-PrivilegedGroupAccounts
- Get-ProtectedUsers
- 비밀번호 정보 감사
- Get-AccountPassDontExpire
- Get-UserPasswordNotChangedRecently
- Get-PasswordPolicy
- Get-PasswordQuality
- NTDS.dit 덤프
- 컴퓨터 개체 감사
- GPO 감사 (및 SYSVOL에서 비밀번호 확인)
- Get-GPOtoFile
- Get-GPOsPerOU
- Get-SYSVOLXMLS
- Get-GPOEnum
- 일반 그룹 AD 권한 확인
- 도메인 내 LAPS 존재 여부 확인
- 인증 정책 및 사일로 존재 여부 확인
- Get-AuthenticationPoliciesAndSilos
- 안전하지 않은 DNS 영역 확인
- 새로 생성된 사용자 및 그룹 확인
- ADCS 취약점(ESC1,2,3,4,8) 확인
- 고가치 Kerberoastable 계정 확인
- ASREPRoastable 계정 확인
- 사용자, 그룹 및 컴퓨터에 대한 위험한 ACL 권한 확인
- LDAP 및 LDAPs 설정 확인 (서명, null 세션 등)
런타임 인수
다음 스위치를 조합하여 사용할 수 있습니다.
-installdeps 선택적 기능(DSInternals) 설치
-hostdetails 호스트 이름 및 기타 유용한 감사 정보 검색
-domainaudit 기능 수준 등 AD에 대한 정보 검색
-trusts 모든 도메인 트러스트에 대한 정보 검색
-accounts 만료, 비활성화 등 계정 문제 식별
-passwordpolicy 암호 정책 정보 검색
-ntds ntdsutil을 사용하여 NTDS.dit 파일 덤프
-oldboxes 도메인에 가입된 XP/2003과 같은 오래된 OS 식별
-gpo GPO를 XML 및 HTML로 덤프하여 나중에 분석
-ouperms 일반 OU 권한 문제 확인
-laps LAPS가 설치되었는지 확인
-authpolsilos 인증 정책 및 사일로 존재 여부 확인
-insecurednszone 안전하지 않은 DNS 영역 확인
-recentchanges 최근 30일 내 새로 생성된 사용자 및 그룹 확인
-adcs ADCS 취약점(ESC1,2,3,4,8) 확인
-acl 사용자, 그룹 및 컴퓨터에 대한 위험한 ACL 권한 확인
-spn 고가치 Kerberoastable 계정 확인
-asrep ASREPRoastable 계정 확인
-ldapsecurity 여러 LDAP 문제 확인
-exclude adaudit.ps1 -all -exclude ouperms,ntds,adcs와 같이 사용 시 특정 검사를 제외할 수 있습니다.
-select adaudit.ps1 -all "gpo,ntds,acl"와 같이 사용 시 특정 검사를 선택할 수 있습니다.
-all 모든 검사 실행(예: AdAudit.ps1 -all)
하위 도메인 지원
이 스크립트는 이제 포리스트 루트 도메인과 하위 도메인을 모두 완벽하게 지원합니다.
- Schema Admins 및 Enterprise Admins는 하위 도메인에서 적절히 처리됩니다(포리스트 루트에만 존재).
- 포리스트 루트에만 존재하는 그룹이 없는 경우 스크립트는 적절한 정보 메시지와 함께 정상적으로 완료됩니다.
- 하위 도메인 시나리오에서 누락된 그룹으로 인한 충돌 또는 차단 실패가 없습니다.
- Windows Server 2022 하위 도메인에서 테스트 및 검증되었습니다.
오류 처리 및 견고성
스크립트는 전체적으로 포괄적인 오류 처리를 구현합니다.
- 선택적 감사 함수는 스크립트 실행을 차단하지 않고 정상적으로 실패합니다.
- GPO 보고서 생성 오류(예: 손상된 GPO)가 다른 감사 완료를 방해하지 않습니다.
- 방어적 검사를 통해 선택적 출력 파일에서 파일을 찾을 수 없음 예외가 발생하지 않습니다.
- 명확한 오류/경고/정보 메시지를 통해 심각한 실패와 예상되는 시나리오를 구분할 수 있습니다.
- 선택적 모듈(DSInternals, LAPS, AdmPwd.PS)이 없어도 핵심 감사 기능이 중단되지 않습니다.
Nessus XML 출력
- 사후 처리 없이 유효하고 올바른 형식의 Nessus XML을 생성합니다.
- 모든 특수 문자는 소스에서 적절히 이스케이프됩니다(&, <, >, ", ').
- 출력 파일은 수동 수정 없이 Nessus에 직접 가져올 준비가 됩니다.
- 사후 처리 단계나 추가 출력 파일이 필요하지 않습니다.
테스트 환경
- Windows Server 2022에서 검증됨 (포리스트 루트 및 하위 도메인 모두)
- Windows Server 2008R2부터 2022까지 지원
- 손상된 GPO 및 혼합 구성이 있는 복잡한 프로덕션 환경을 성공적으로 처리합니다.