Volver a actualizaciones
Nuevo releaseAug 23, 2026

Kestrel v.1.1.0

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.

Compartir

Kestrel

build license language dependencies

BloodHound te muestra el camino. Kestrel te muestra lo que ya está dentro.

Todo el mundo mapea 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 a un atributo. Un certificado que sigue autenticando mucho después de que se restablezca la contraseña. Un permiso grabado en el propio esquema, de modo que todo objeto creado de ahora en adelante lo hereda silenciosamente. Una cuenta eliminada que alguien conservó silenciosamente el derecho de recuperar. Un objeto oculto de la enumeración por una única ACE de denegar lectura.

Nada de eso es un borde en un grafo. Todo ello está ahora mismo en tu directorio. Kestrel lo lee: con llamadas nativas de Windows, derechos ordinarios de usuario de dominio, sin servidor, sin Python, sin agente, y una huella en el controlador de dominio tan contenida que está documentada evento por evento.

Un .exe. Un comando. Todo lo demás, a continuación.


Has estado mirando en la dirección equivocada

El ecosistema ofensivo de AD - SharpHound, impacket, Certipy y el grafo que hay detrás de ellos - es magnífico, y todo mira la misma superficie: la alcanzabilidad. Kestrel mira las tres dimensiones que esa superficie no puede expresar.

  • Tiempo. Un grafo es una instantánea. Kestrel lee los metadatos de replicación - cuándo cambió un atributo de Tier-0 y qué DC lo originó. Un derecho DCSync concedido anoche no es el mismo hallazgo que uno que lleva años ahí, y solo uno de ellos significa que te están atacando ahora mismo.
  • Persistencia en un atributo, no en un borde. Shadow credentials, historial de SID, reanimación de tombstones, puertas traseras en defaultSecurityDescriptor del esquema, objetos ocultos, ACE de denegación de OWNER RIGHTS, claves DKM de AD FS. Las herramientas de grafos no recopilan esto porque no hay ningún borde que dibujar.
  • Postura defensiva, invertida. No "quién puede atacar", sino "qué no está protegido": la cuenta Tier-0 fuera de su silo, la cuenta de sincronización con un RID aleatorio que nadie etiquetó, la política de bloqueo que nunca frena un ataque de fuerza bruta.

No es que Kestrel sea más rápido que un grafo. Responde preguntas que el grafo no puede formular.


Cada pecado de AD, en un exe nativo

PecadoQué encuentra KestrelBanderas
Replicación y delegaciónDerechos DCSync (quién puede replicar - sin replicar nunca), delegación no restringida / restringida / RBCD / S4U2--acl · --delegation
Abuso de certificadosAD CS ESC1–5/9, CA no autorizada en el almacén NTAuth, persistencia de certificados de larga duración, ACL de la clave DKM de AD FS: la condición previa del Golden SAML--adcs · --adfs
Persistencia en atributosShadow credentials, inyección de historial de SID, derechos de reanimación de tombstones, objetos ocultos, puertas traseras en defaultSecurityDescriptor del esquema, adminCount huérfano--shadowcreds · --sidhistory · --acl · --schema · --adminsdholder
Credenciales en texto claro y crackeablesGPP cpassword, secretos de unattend/sysprep y contraseñas de scripts en SYSVOL, cuentas Kerberoastables y AS-REP-roastables, brechas en la cobertura de LAPS--gpp · --roast · --laps
Multi-dominio e híbridoPrincipales 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 reconocimientoPolítica de contraseñas / PSO, antigüedad de krbtgt, configuración GPO de LLMNR / NBT-NS / WDigest / NTLMv1, lectores de gMSA, equipos obsoletos, topología de delegación--pwdpolicy · --policy · --gmsa · --stale

Más de veinte comprobaciones que normalmente están repartidas entre una docena de scripts y dos lenguajes. Aquí son un único binario, y terminan en un veredicto único ordenado por severidad.


Una línea

Kestrel.exe --all --report audit.html

Ejecuta todo. Obtén el informe HTML completo. Y, al final 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 es un muro de resultados. Los hallazgos que importan, ordenados, cada uno con el comando para remediarlo.


Un exe. Rojo, azul, púrpura.

  • Rojo / gris - enumera la persistencia y la delegación que el grafo no ve, exporta directamente a BloodHound CE OpenGraph (--opengraph) para fusionarlo con tu colección existente, o pivota desde cualquier principal (--from).
  • Azul - una lista priorizada y remediada de hallazgos; un --diff contra la instantánea de la semana pasada para detectar qué cambió; y una herramienta cuya huella de detección exacta está publicada para que puedas incluirla en la lista blanca y ajustar tus propias alertas en torno a ella.
  • Púrpura - un mismo artefacto que ambos bandos leen de la misma manera. Rojo lo encuentra, azul lo corrige, todos señalan la misma línea.

Detectable por diseño

Kestrel es de solo lectura. Nunca escribe en el directorio, nunca replica, nunca necesita SeSecurityPrivilege y nunca toca la nube. Leer quién puede hacer DCSync no se parece en nada, en el cable, a hacer DCSync: no hay DRSUAPI, no hay firma de replicación 4662. 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 detectarlo no es una contradicción: es el objetivo.


Inicio rápido

Descarga una compilación. Cada ejecución de CI en verde publica un artefacto Kestrel.exe: descárgalo desde la pestaña Actions, sin necesidad de toolchain.

O compílalo tú mismo. Visual Studio (v143+) o MSBuild:

git clone https://github.com/ssteelfactor-oss/Kestrel.git
cd Kestrel
msbuild Kestrel.vcxproj /p:Configuration=Release /p:Platform=x64

C puro, cero dependencias de terceros. Compílalo con /MT y es un único ejecutable autocontenido: colócalo en un host unido a un dominio y ejecútalo como cualquier usuario ordinario.

Ejecútalo.

Categorías