adaudit
Este script de PowerShell está diseñado para realizar una auditoría exhaustiva de Microsoft Active Directory, centrándose en la identificación de vulnerabilidades y debilidades de seguridad comunes. Su ejecución facilita la localización de áreas críticas que requieren refuerzo, fortaleciendo así su infraestructura contra tácticas prevalentes utilizadas en movimientos laterales o ataques de escalada de privilegios dirigidos a Active Directory.
_____ ____ _____ _ _ _
| _ | \ | _ |_ _ _| |_| |_
| | | | | | | | . | | _|
|__|__|____/ |__|__|___|___|_|_|
by phillips321
Si tiene algún "one-liner" de PowerShell decente que pueda usarse en el script, hágamelo saber. Estoy tratando de mantener este script como un solo archivo sin requisitos de herramientas externas (aparte de ntdsutil y cmd.exe)
Ejecútelo directamente en un DC usando una cuenta DA. Si no confía en el código, le sugiero leerlo primero y verá que es completamente inofensivo. (Pero ¿no debería hacer eso de todos modos con el código que descarga de internet y luego ejecuta como DA?)
Qué hace esto
- Información del dispositivo
- Auditoría de dominio
- 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
- Auditoría de confianzas de dominio
- Auditoría de cuentas de usuario
- Get-InactiveAccounts
- Get-DisabledAccounts
- Get-LockedAccounts
- Get-AdminAccountChecks
- Get-NULLSessions
- Get-PrivilegedGroupAccounts
- Get-ProtectedUsers
- Auditoría de información de contraseñas
- Get-AccountPassDontExpire
- Get-UserPasswordNotChangedRecently
- Get-PasswordPolicy
- Get-PasswordQuality
- Volcado de NTDS.dit
- Auditoría de objetos de equipo
- Auditoría de GPO (y comprobación de contraseñas en SYSVOL)
- Get-GPOtoFile
- Get-GPOsPerOU
- Get-SYSVOLXMLS
- Get-GPOEnum
- Comprobación de permisos genéricos de grupo en AD
- Comprobación de existencia de LAPS en el dominio
- Comprobación de existencia de políticas de autenticación y silos
- Get-AuthenticationPoliciesAndSilos
- Comprobación de zonas DNS inseguras
- Comprobación de usuarios y grupos recién creados
- Comprobación de vulnerabilidades de ADCS, ESC1,2,3,4 y 8.
- Comprobación de cuentas kerberoastables de alto valor
- Comprobación de cuentas ASREPRoastables
- Comprobación de permisos ACL peligrosos en usuarios, grupos y equipos.
- Comprobación de configuraciones LDAP y LDAPs (firmado, sesiones nulas, etc.)
Argumentos de ejecución
Se pueden usar los siguientes modificadores en combinación:
-installdeps instala características opcionales (DSInternals)
-hostdetails recupera el nombre del host y otra información de auditoría útil
-domainaudit recupera información sobre el AD, como el nivel funcional
-trusts recupera información sobre cualquier confianza de dominio
-accounts identifica problemas de cuentas como caducadas, deshabilitadas, etc.
-passwordpolicy recupera información de la política de contraseñas
-ntds vuelca el archivo NTDS.dit usando ntdsutil
-oldboxes identifica sistemas operativos obsoletos (como XP/2003) unidos al dominio
-gpo vuelca los GPO en XML y HTML para su posterior análisis
-ouperms comprueba problemas de permisos genéricos de OU
-laps comprueba si LAPS está instalado
-authpolsilos comprueba la existencia de políticas de autenticación y silos
-insecurednszone comprueba zonas DNS inseguras
-recentchanges comprueba usuarios y grupos recién creados (últimos 30 días)
-adcs comprueba vulnerabilidades de ADCS, ESC1,2,3,4 y 8.
-acl comprueba permisos ACL peligrosos en usuarios, grupos y equipos.
-spn comprueba cuentas kerberoastables de alto valor
-asrep comprueba cuentas ASREPRoastables
-ldapsecurity comprueba múltiples problemas de LDAP
-exclude permite excluir comprobaciones específicas al usar adaudit.ps1 -all -exclude ouperms,ntds,adcs
-select permite seleccionar comprobaciones específicas al usar adaudit.ps1 -all "gpo,ntds,acl"
-all ejecuta todas las comprobaciones, por ejemplo, AdAudit.ps1 -all
Soporte para dominios secundarios
El script ahora soporta completamente tanto dominios raíz del bosque como dominios secundarios:
- Los grupos Schema Admins y Enterprise Admins se manejan correctamente en dominios secundarios (donde solo existen en la raíz del bosque)
- El script se completa exitosamente con mensajes informativos apropiados para grupos faltantes que solo existen en la raíz del bosque
- No hay fallos ni errores bloqueantes debido a grupos faltantes en escenarios de dominios secundarios
- Probado y validado en dominios secundarios de Windows Server 2022
Manejo de errores y robustez
El script implementa un manejo de errores exhaustivo en todo el código:
- Las funciones de auditoría opcionales fallan de manera controlada sin bloquear la ejecución del script
- Los errores de generación de informes de GPO (por ejemplo, GPO corruptos) no impiden que se completen otras auditorías
- Las comprobaciones defensivas evitan excepciones de archivo no encontrado en archivos de salida opcionales
- Mensajes claros de error/advertencia/información distinguen entre fallos críticos y escenarios esperados
- Los módulos opcionales faltantes (DSInternals, LAPS, AdmPwd.PS) no impiden las funciones de auditoría principales
Salida XML de Nessus
- Genera XML Nessus válido y correctamente formateado sin necesidad de posprocesamiento
- Todos los caracteres especiales se escapan correctamente en el origen (&, <, >, ", ')
- El archivo de salida está listo para importarse directamente en Nessus sin modificaciones manuales
- Elimina la necesidad de pasos de posprocesamiento o archivos de salida adicionales
Entornos probados
- Validado en Windows Server 2022 (tanto dominios raíz del bosque como secundarios)
- Soporta Windows Server 2008R2 hasta 2022
- Maneja exitosamente entornos de producción complejos con GPO corruptos y configuraciones mixtas