
Script PowerShell visant à aider à la découverte des (éventuels) mécanismes de persistance déployés par un acteur de menace suite à une compromission d'un domaine Active Directory
FarsightAD est un script PowerShell conçu pour aider à découvrir les (éventuels) mécanismes de persistance déployés par un acteur malveillant après une compromission d’un domaine Active Directory.
Le script produit des fichiers d’export CSV / JSON de divers objets et de leurs attributs, enrichis d’horodatages issus des métadonnées de réplication. De plus, s’il est exécuté avec les privilèges de réplication, le protocole Directory Replication Service (DRS) est utilisé pour détecter les objets totalement ou partiellement cachés.
Pour plus d’informations, consultez les slides d’introduction du SANS DFIR Summit 2022.
FarsightAD nécessite
PowerShell 7
et le module ActiveDirectory mis à jour pour PowerShell 7.
Sur Windows 10 / 11, le module peut être installé via les Fonctionnalités facultatives en tant que
RSAT: Outils Active Directory Domain Services et Lightweight Directory Services. Un module déjà installé peut être mis à jour avec :
Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0
Si le module est correctement mis à jour, Get-Command Get-ADObject doit renvoyer :
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-ADObject 1.0.X.X ActiveDirectory
. .\FarsightAD.ps1
Invoke-ADHunting [-Server <DC_IP | DC_HOSTNAME>] [-Credential <PS_CREDENTIAL>] [-ADDriveName <AD_DRIVE_NAME>] [-OutputFolder <OUTPUT_FOLDER>] [-OutputType <CSV | JSON>]
Davantage d’informations sur l’utilisation de chaque cmdlet peuvent être obtenues avec Get-Help -Full <CMDLET>.

Ajout d’un utilisateur totalement caché

Masquage de l’attribut SID History d’un utilisateur

Découverte des utilisateurs totalement et partiellement cachés avec Export-ADHuntingHiddenObjectsWithDRSRepData
Le code C# pour les requêtes DRS a été adapté à partir de :
MakeMeEnterpriseAdmin
par @vletoux.Mimikatz par @gentilkiwi et
@vletoux.SharpKatz par @b4rtik.Les fonctions d’analyse des Key Credentials proviennent du
module PowerShell ADComputerKeys.
Le travail sur la persistance liée à AD CS est basé sur les recherches de :
La fonction d’analyse du Service Principal Name est basée sur le travail d’Adam Bertram.
Licence CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/
| Cmdlet | Synopsis |
|---|
Invoke-ADHunting | Exécute toutes les cmdlets de chasse AD de FarsightAD (mentionnées ci-dessous). |
Export-ADHuntingACLDangerousAccessRights | Exporte les ACE dangereuses, c’est-à-dire les ACE qui permettent la prise de contrôle de l’objet sous-jacent, sur tous les objets du domaine. Peut prendre du temps sur un domaine de grande taille. |
Export-ADHuntingACLDefaultFromSchema | Exporte l’ACL configurée dans l’attribut defaultSecurityDescriptor des classes de schéma. Les ACL non par défaut (telles que définies dans la documentation Microsoft) sont identifiées et les ACE potentiellement dangereuses sont mises en évidence. |
Export-ADHuntingACLPrivilegedObjects | Exporte l’ACL configurée sur les objets privilégiés du domaine et met en évidence les droits d’accès potentiellement dangereux. |
Export-ADHuntingADCSCertificateTemplates | Exporte les informations et les droits d’accès sur les modèles de certificats. Les paramètres notables suivants sont récupérés : état de publication du modèle de certificat, utilisation du certificat, si le sujet est construit à partir de données fournies par l’utilisateur, et contrôle d’accès (inscription / modification). |
Export-ADHuntingADCSPKSObjects | Exporte les informations et les droits d’accès sur les objets PKS sensibles (NTAuthCertificates, certificationAuthority et pKIEnrollmentService). |
Export-ADHuntingGPOObjectsAndFilesACL | Exporte les informations sur les droits d’accès ACL sur les objets et fichiers GPO, en mettant en évidence les GPO appliquées aux utilisateurs ou ordinateurs privilégiés. |
Export-ADHuntingGPOSettings | Exporte les informations sur divers paramètres configurés par les GPO qui pourraient être utilisés pour la persistance (privilèges et droits d’ouverture de session, appartenance aux groupes restreints, tâches planifiées et immédiates V1 / V2, scripts d’ouverture / fermeture de session utilisateur et machine). |
Export-ADHuntingHiddenObjectsWithDRSRepData | Exporte les attributs des objets qui sont accessibles via la réplication (avec le protocole Directory Replication Service (DRS)) mais pas par une requête directe. Les contrôles d’accès ne sont pas pris en compte pour les opérations de réplication, ce qui permet d’identifier les contrôles d’accès bloquant l’accès à certains attributs d’objets spécifiques. Seul un ensemble limité d’attributs sensibles est évalué. |
Export-ADHuntingKerberosDelegations | Exporte les délégations Kerberos considérées comme dangereuses (sans contrainte, contrainte vers un service privilégié, ou basée sur les ressources vers un service privilégié). |
Export-ADHuntingPrincipalsAddedViaMachineAccountQuota | Exporte les ordinateurs qui ont été ajoutés au domaine par des principaux non privilégiés (via le mécanisme ms-DS-MachineAccountQuota). |
Export-ADHuntingPrincipalsCertificates | Exporte les certificats analysés des comptes (pour les comptes ayant un attribut userCertificate non vide). Les certificats sont analysés pour récupérer un certain nombre de paramètres : horodatages de validité du certificat, objectif du certificat, sujet du certificat et éventuels SubjectAltName(s), ... |
Export-ADHuntingPrincipalsDontRequirePreAuth | Exporte les comptes qui ne nécessitent pas de pré-authentification Kerberos. |
Export-ADHuntingPrincipalsOncePrivileged | Exporte les comptes qui ont déjà été membres de groupes privilégiés. |
Export-ADHuntingPrincipalsPrimaryGroupID | Exporte les comptes ayant un attribut primaryGroupID non par défaut, en mettant en évidence les RID liés à des groupes privilégiés. |
Export-ADHuntingPrincipalsPrivilegedAccounts | Exporte des informations détaillées sur les membres des groupes privilégiés. |
Export-ADHuntingPrincipalsPrivilegedGroupsMembership | Exporte les membres actuels et passés des groupes privilégiés, obtenus à partir des métadonnées de réplication. |
Export-ADHuntingPrincipalsSIDHistory | Exporte les comptes ayant un attribut SID History non vide, avec résolution du domaine associé et mise en évidence des SID privilégiés. |
Export-ADHuntingPrincipalsShadowCredentials | Exporte les informations analysées des Key Credentials (des comptes ayant un attribut msDS-KeyCredentialLink non vide). |
Export-ADHuntingPrincipalsTechnicalPrivileged | Exporte les comptes techniques privilégiés (SERVER_TRUST_ACCOUNT et INTERDOMAIN_TRUST_ACCOUNT). |
Export-ADHuntingPrincipalsUPNandAltSecID | Exporte les comptes qui définissent un attribut UserPrincipalName ou AltSecurityIdentities, en mettant en évidence les anomalies potentielles. |
Export-ADHuntingTrusts | Exporte les approbations de tous les domaines de la forêt. Un certain nombre de paramètres sont récupérés pour chaque approbation : transitivité, filtrage SID, délégation TGT. |