
GPOHound — Actualizado!
Herramienta ofensiva de volcado y análisis de GPO que aprovecha y enriquece los datos de BloodHound
GPOHound
GPOHound es una herramienta para volcar y analizar Objetos de directiva de grupo (GPO) extraídos del recurso compartido SYSVOL.
Proporciona un formato estructurado y formalizado para ayudar a descubrir configuraciones incorrectas, ajustes inseguros y rutas de escalada de privilegios en entornos de Active Directory.
La herramienta se integra con la base de datos Neo4j de BloodHound, utilizándola como una fuente similar a LDAP para información de Active Directory, al mismo tiempo que la enriquece agregando nuevas relaciones (bordes) y propiedades de nodo basadas en el análisis.
Características
Volcado
-
Volca GPOs en un formato JSON estructurado o en árbol
-
Maneja múltiples dominios
-
Resuelve nombres de GPO con GUIDs de GPO
-
Filtra la salida por archivos GPO, GUIDs de GPO y dominios
-
Busca en pares clave/valor usando expresiones regulares
Análisis
-
Agrupa configuraciones por objeto impactado (por ejemplo, Grupos locales, Registro)
-
Detecta miembros agregados a grupos locales privilegiados
-
Detecta configuraciones de registro inseguras, credenciales almacenadas y derechos de privilegio
-
Soporta descifrado de credenciales VNC y contraseñas GPP
-
Encuentra dominios, contenedores y UO afectados por GPOs
-
Obtiene GPOs aplicados a un usuario, equipo, UO, contenedor o dominio específico
-
Enriquece datos de BloodHound con relaciones y propiedades
Instalación
Instalar con pip
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
Instalar con pipx
pipx install "git+https://github.com/cogiceo/GPOHound"
Configurar APOC para Neo4j
Debes configurar Neo4j APOC para el enriquecimiento de datos de BloodHound:
-
Si estás usando la instalación estándar de Neo4j, puedes habilitar APOC copiando el archivo
jarde APOC a la carpeta de plugins y luego reiniciar Neo4j:cp /var/lib/neo4j/labs/apoc-* /var/lib/neo4j/plugins/ neo4j restart -
Si estás instalando Neo4j con "Docker Compose", agrega la variable de entorno
NEO4J_PLUGINS=["apoc"]:neo4j: image: neo4j:latest environment: - NEO4J_PLUGINS=["apoc"]
Para más detalles o métodos de instalación alternativos, consulta la Documentación oficial de APOC.
Agregar consultas de BloodHound
Para visualizar las relaciones y propiedades agregadas por GPOHound, puedes importar las consultas personalizadas del archivo customqueries.json en BloodHound. Por defecto, este archivo se encuentra en ~/.config/bloodhound/customqueries.json.
Requisitos previos
Volcado de SYSVOL
Comienza descargando el contenido de SYSVOL desde el controlador de dominio.
-
Descarga el
SYSVOLcompleto:gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD -
Descarga solo los GPOs:
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD --gpos -
Descarga con exclusiones:
gpohound sysvol --dc $DC_HOST -u $USER -p $PASSWORD --exclude '/Policydefinitions/','/scripts/' --max-size 100
Volcado de LDAP
Recupera todos los datos necesarios de LDAP:
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
BloodHound
Para el enriquecimiento de datos de BloodHound, debes recopilar datos de BloodHound usando un recopilador como bloodhound.py o SharpHound.exe e importar los datos recopilados en la interfaz de BloodHound.
Uso
Los archivos de ejemplo de GPOHound están disponibles en example.zip. Extráigalos con unzip example.zip.
Consulta CONFIG.md para instrucciones sobre cómo personalizar valores predeterminados y configuraciones.
gpohound --neo4j-user $USER --neo4j-pass $PASS dump
gpohound --neo4j-user $USER --neo4j-pass $PASS analysis
Analizar
gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"
Volcado
gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show
Análisis
gpohound analysis
gpohound analysis --affected
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL'
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --list
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --dump
gpohound analysis --enrich
gpohound analysis --enrich-ce
Análisis y enriquecimiento actual
[!IMPORTANT]
- Condiciones como filtros de seguridad, filtros WMI y segmentación a nivel de elemento no se interpretan.
- No se simulan conflictos de GPO, para evitar omitir configuraciones válidas.
Grupos locales
-
Detección de usuarios asignados a grupos locales privilegiados durante el inicio de sesión
-
Detección de grupos locales privilegiados integrados renombrados.
-
Detección de fideicomisarios agregados a grupos locales privilegiados usando "Variables de proceso de preferencia" (por ejemplo, %ComputerName%, %DomainName%)
-
Detección de fideicomisarios abusables mediante secuestro de
sAMAccountName -
Detección de cualquier fideicomisario agregado a grupos locales privilegiados:
Grupo Borde Administradores AdminToUsuarios de escritorio remoto CanRDPUsuarios COM distribuidos ExecuteDCOMUsuarios de administración remota CanPSRemoteOperadores de respaldo CanPrivEscOperadores de impresión CanPrivEscOperadores de configuración de red CanPrivEsc
Registro
| Análisis | Propiedad |
|---|---|
| El grupo "Todos" incluye "Inicio de sesión anónimo" | — |
| La firma de sesión del servidor SMB no está habilitada | smbSigningEnabled: false |
| La firma de sesión del servidor SMB no es obligatoria | smbSigningRequired: false |
| Se admite la autenticación NTLMv1 | NTLMv1Support: true |
| Contraseña predeterminada de inicio de sesión automático de Windows | — |
| Credenciales VNC (Genéricas: RealVNC, TightVNC, TigerVNC, etc.) | *VNC*PASS* (varios) |
| Contraseñas almacenadas de FileZilla | — |
| Contraseña de proxy de PuTTY | — |
| Credenciales almacenadas de TeamViewer | — |
| Sesiones guardadas de WinSCP | — |
| Contraseña almacenada de Picasa | — |
Derechos privilegiados
Los fideicomisarios privilegiados predeterminados, así como las cuentas de servicio con SID que comienzan con S-1-5-8, están excluidos del análisis.
| Privilegio | Descripción | Borde |
|---|---|---|
| SeDebugPrivilege | Permite al usuario depurar e interactuar con cualquier proceso | CanPrivEsc |
| SeBackupPrivilege | Otorga acceso a archivos sensibles | CanPrivEsc |
| SeRestorePrivilege | Omite permisos de objetos durante la restauración | CanPrivEsc |
| SeAssignPrimaryTokenPrivilege | Habilita la suplantación de tokens para escalada a SYSTEM | CanPrivEsc |
| SeImpersonatePrivilege | Permite la creación de procesos bajo el contexto de otro usuario | CanPrivEsc |
| SeTakeOwnershipPrivilege | Permite a los usuarios tomar propiedad de objetos del sistema | CanPrivEsc |
| SeTcbPrivilege | Otorga la capacidad de actuar como parte del SO | CanPrivEsc |
| SeCreateTokenPrivilege | Permite la creación de tokens de autenticación | CanPrivEsc |
| SeLoadDriverPrivilege | Autoriza la carga/descarga de controladores | CanPrivEsc |
| SeManageVolumePrivilege | Otorga privilegios de gestión de volúmenes o discos | CanPrivEsc |
| SeEnableDelegationPrivilege | Habilita que cuentas de equipo y usuario sean de confianza para delegación |
Mejoras
- Mejorar el registro
- Integrar LDAP
- Integrar SMB
- Analizar extensiones restantes
- Interfaz web
- Resaltar conflictos potenciales entre GPOs
Documentación de GPO
SYSVOL y LDAP
- [MS-GPAC] Extensión de configuración de auditoría
- [MS-GPCAP] Extensión de protocolo de políticas de acceso central
- [MS-GPEF] Extensión de sistema de archivos cifrados
- [MS-GPFAS] Estructura de datos de firewall y seguridad avanzada
- [MS-GPFR] Extensión de protocolo de redirección de carpetas
- [MS-GPIE] Extensión de mantenimiento de Internet Explorer
- [MS-GPNAP] Extensión de protección de acceso a redes (NAP)
- [MS-GPNRPT] Extensión de datos de tabla de políticas de resolución de nombres (NRPT)
- [MS-GPOL] Protocolo principal
- [MS-GPPREF] Estructura de datos de extensión de preferencias
- [MS-GPREG] Codificación de extensión de registro
- [MS-GPSB] Extensión de protocolo de seguridad
- [MS-GPSCR] Codificación de extensión de scripts
- [MS-GPSI] Extensión de protocolo de instalación de software
Solo LDAP
- [MS-GPDPC] Extensión de conexiones de impresora implementadas
- [MS-GPWL] Extensión de protocolo inalámbrico/cableado