
Outil d'énumération de sécurité Active Directory à faible observabilité utilisant les interfaces natives ADSI/COM. Énumère les ACL, la délégation, les approbations, l'ADCS, les cibles Kerberoast et les chemins d'attaque sans .NET ni PowerShell, en produisant une sortie compatible BloodHound.
BloodHound vous montre le chemin. Kestrel vous montre ce qui s'y trouve déjà.
Tout le monde cartographie la même chose : le chemin d'attaque - qui peut atteindre Domain Admin. C'est la bonne question, et les outils qui y répondent sont excellents. Mais un graphe de « qui peut atteindre qui » est aveugle à toute une catégorie de problèmes, car certaines des pires choses présentes dans un Active Directory ne sont pas du tout un chemin.
Elles sont une porte dérobée soudée dans un attribut. Un certificat qui continue de s'authentifier bien après la réinitialisation du mot de passe. Une permission gravée dans le schéma lui-même, si bien que chaque objet créé désormais en hérite silencieusement. Un compte supprimé dont quelqu'un a discrètement conservé le droit de le faire revenir. Un objet masqué à l'énumération par un simple ACE de refus de lecture.
Rien de tout cela n'est une arête dans un graphe. Tout cela se trouve dans votre annuaire en ce moment même. Kestrel le lit - avec des appels Windows natifs, les droits ordinaires d'un utilisateur de domaine, sans serveur, sans Python, sans agent, et avec une empreinte sur le contrôleur de domaine si discrète qu'elle est documentée événement par événement.
Un seul .exe. Une seule commande. Tout ce qui suit.
L'écosystème offensif de l'AD - SharpHound, impacket, Certipy, et le graphe qui les sous-tend - est remarquable, et il observe tous la même surface : l'accessibilité. Kestrel examine les trois dimensions que cette surface ne peut exprimer.
defaultSecurityDescriptor du schéma, objets cachés, ACE de refus OWNER RIGHTS, clés DKM AD FS. Les outils de graphe ne collectent pas ces éléments car il n'y a aucune arête à dessiner.Ce n'est pas que Kestrel soit plus rapide qu'un graphe. Il répond à des questions que le graphe ne peut pas poser.
| Péché | Ce que Kestrel trouve | Option(s) |
|---|---|---|
| Réplication et délégation | Droits DCSync (qui peut répliquer - sans jamais répliquer), délégation non contrainte / contrainte / RBCD / S4U | --acl · --delegation |
| Abus de certificats | AD CS ESC1–5/9, AC pirate dans le magasin NTAuth, persistance par certificat de longue durée, ACL de la clé DKM AD FS - la condition préalable du Golden SAML | --adcs · --adfs |
| Persistance dans les attributs | Identifiants fantômes, injection d'historique SID, droits de réanimation de pierres tombales, objets cachés, portes dérobées defaultSecurityDescriptor du schéma, adminCount orphelin | --shadowcreds · --sidhistory · --acl · --schema · --adminsdholder |
| Identifiants en clair et cassables | cpassword GPP, secrets unattend/sysprep et mots de passe de scripts dans SYSVOL, comptes Kerberoastables et AS-REP-roastables, lacunes de couverture LAPS | --gpp · --roast · --laps |
| Inter-domaines et hybride | Principaux étrangers dans des groupes privilégiés, comptes de synchronisation Entra Connect étiquetés Tier-0, posture de confiance, comptes machine créés via MachineAccountQuota (mS-DS-CreatorSID) | --groups · --trust · --machines |
| Posture et reconnaissance | Politique de mots de passe / PSO, âge de krbtgt, paramètres GPO LLMNR / NBT-NS / WDigest / NTLMv1, lecteurs gMSA, ordinateurs obsolètes, topologie de délégation | --pwdpolicy · --policy · --gmsa · --stale |
| Archéologie | ACE dangereuses orphelines (un droit détenu par un principal supprimé - le SID ne correspond à personne), comptes privilégiés obsolètes (oubliés, sur-privilégiés, mot de passe ancien) | --archaeology |
| Durcissement du domaine | Indicateurs dSHeuristics d'exclusion LDAP anonyme / AdminSDHolder, appartenance étendue à Pre-Windows 2000 Compatible Access | --hardening |
| Posture des services (lue depuis AD, aucun paquet envoyé au service) | Escalade Exchange-vers-DA et EOL, prise de contrôle du conteneur SCCM et carte de site, empoisonnement de zone ADIDNS (les Authenticated Users peuvent créer des enregistrements) | --exchange · --sccm · --dns |
Plus de deux douzaines de vérifications habituellement réparties entre une douzaine de scripts et deux langages. Ici, elles forment un seul binaire - et elles aboutissent à un verdict unique, trié par gravité.
Kestrel.exe --all --report audit.html
Exécutez tout. Obtenez le rapport HTML complet. Et, tout à la fin de la console, la partie qui compte :
═══ 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
Pas un mur de sortie. Les constats qui comptent, classés, chacun avec la commande pour le clore.
--opengraph) pour fusionner avec votre collecte existante, ou pivotez depuis n'importe quel principal (--from).--diff par rapport à l'instantané de la semaine dernière pour repérer ce qui a changé ; et un outil dont l'empreinte de détection exacte est publiée afin que vous puissiez le mettre en liste blanche et ajuster votre propre alerting autour de lui.