
Herramienta de enumeración de seguridad de Active Directory de baja observabilidad que utiliza interfaces ADSI/COM nativas. Enumera ACLs, delegación, trusts, ADCS, objetivos Kerberoast y rutas de ataque sin .NET ni PowerShell, produciendo resultados compatibles con BloodHound.
BloodHound te muestra el camino. Kestrel te muestra lo que ya está dentro.
Todos mapean lo mismo: la ruta de ataque - quién puede llegar a Domain Admin. Es la pregunta correcta, y las herramientas que la responden son excelentes. Pero un grafo de "quién puede llegar a quién" es ciego a toda una clase de problemas, porque algunas de las peores cosas en un Active Directory no son una ruta en absoluto.
Son una puerta trasera soldada dentro de un atributo. Un certificado que sigue autenticando mucho después de que se restablezca la contraseña. Un permiso estampado en el propio esquema, de modo que cada objeto creado a partir de ahora lo hereda silenciosamente. Una cuenta eliminada cuya capacidad de restauración alguien conservó discretamente. Un objeto oculto de la enumeración mediante un único ACE de denegación de lectura.
Nada de eso es una arista en un grafo. Todo eso está en tu directorio ahora mismo. Kestrel lo lee - con llamadas nativas de Windows, permisos de usuario de dominio ordinarios, sin servidor, sin Python, sin agente, y con una huella en el controlador de dominio tan contenida que está documentada evento por evento.
Un .exe. Un comando. Todo lo que sigue.
El ecosistema ofensivo de AD - SharpHound, impacket, Certipy y el grafo que hay detrás de ellos - es soberbio, y todos miran la misma superficie: la alcanzabilidad. Kestrel mira las tres dimensiones que esa superficie no puede expresar.
defaultSecurityDescriptor del esquema, objetos ocultos, ACEs de denegación OWNER RIGHTS, claves DKM de AD FS. Las herramientas de grafo no recopilan esto porque no hay ninguna arista que dibujar.No es que Kestrel sea más rápido que un grafo. Responde preguntas que el grafo no puede plantear.
| Sin | Qué encuentra Kestrel | Flag(s) |
|---|---|---|
| Replicación y delegación | Derechos DCSync (quién puede replicar, sin replicar nunca), delegación sin restricciones / con restricciones / RBCD / S4U | --acl · --delegation |
| Abuso de certificados | AD CS ESC1–5/9, CA fraudulenta en el almacén NTAuth, persistencia mediante certificados de larga duración, ACL de la clave DKM de AD FS: la condición previa del Golden SAML | --adcs · --adfs |
| Persistencia en atributos | Credenciales shadow, inyección de historial de SID, derechos de reanimación de tombstone, objetos ocultos, backdoors en el defaultSecurityDescriptor del esquema, adminCount huérfano | --shadowcreds · --sidhistory · --acl · --schema · --adminsdholder |
| Credenciales en texto claro y descifrables | cpassword de GPP, secretos de unattend/sysprep y contraseñas de scripts en SYSVOL, cuentas Kerberoastables y AS-REP-roastables, carencias de cobertura de LAPS | --gpp · --roast · --laps |
| Entre dominios e híbrido | Principales externos en grupos privilegiados, cuentas de sincronización de Entra Connect etiquetadas como Tier-0, postura de confianza, cuentas de equipo creadas mediante MachineAccountQuota (mS-DS-CreatorSID) | --groups · --trust · --machines |
| Postura y reconocimiento | Política de contraseñas / PSO, antigüedad de krbtgt, configuración de GPO de LLMNR / NBT-NS / WDigest / NTLMv1, lectores de gMSA, equipos obsoletos, topología de delegación | --pwdpolicy · --policy · --gmsa · --stale |
| Arqueología | ACE peligrosas huérfanas (un derecho en manos de un principal eliminado: el SID no resuelve a nadie), cuentas privilegiadas obsoletas (olvidadas, con exceso de privilegios, con contraseñas antiquísimas) | --archaeology |
| Endurecimiento del dominio | Flags de dSHeuristics de LDAP anónimo / exclusión de AdminSDHolder, pertenencia amplia a Pre-Windows 2000 Compatible Access | --hardening |
| Postura de servicios (leída desde AD, sin paquetes al servicio) | Escalada de Exchange a DA y fin de soporte (EOL), toma de control del contenedor de SCCM y mapa de sitios, envenenamiento de zonas ADIDNS (Authenticated Users puede crear registros) | --exchange · --sccm · --dns |
Más de dos docenas de comprobaciones que normalmente están repartidas entre una docena de scripts y dos lenguajes. Aquí son un único binario, y terminan en un único veredicto ordenado por gravedad.
Kestrel.exe --all --report audit.html
Ejecútalo todo. Obtén el informe HTML completo. Y, al final del todo de la consola, la parte que importa:
═══ Kestrel - Prioritized Findings ═══
CRITICAL DCSync CORP\svc_sql - non-default principal can replicate directory changes (DCSync)
→ fix: remove GetChanges/GetChangesAll from the principal on the domain head (dsacls) unless it is a DC
CRITICAL AD FS CN=... - read access to the DKM key (Golden SAML precondition)
→ fix: remove non-default read ACEs on the DKM object (dsacls) and rotate the token-signing certificate
HIGH Persistence CN=... - object hidden from enumeration via a broad deny-read ACE
→ fix: inspect the hidden object and remove the broad deny-read ACE (dsacls)
[=] 2 critical · 1 high · 0 medium · 0 low
No un muro de salida. Los hallazgos que importan, clasificados, cada uno con el comando para cerrarlo.
--opengraph) para fusionarlo con tu colección existente, o pivota desde cualquier principal (--from).--diff contra la instantánea de la semana pasada para detectar lo que cambió; y una herramienta cuya huella de detección exacta está publicada para que puedas incluirla en la lista blanca y ajustar tu propia alerta en torno a ella.Kestrel es de solo lectura. Nunca escribe en el directorio, nunca replica, nunca necesita SeSecurityPrivilege, nunca toca la nube. Leer quién puede hacer DCSync no se parece en nada, a nivel de red, a hacer DCSync - sin DRSUAPI, sin 4662 de firma de replicación. Cada consulta que ejecuta y cada evento que puede (y no puede) generar está catalogado en FOOTPRINT.md. Un auditor que le dice al defensor exactamente cómo atraparlo no es una contradicción - es precisamente el objetivo.