
Script PowerShell che mira ad aiutare a scoprire (eventuali) meccanismi di persistenza implementati da un attore malevolo a seguito di una compromissione del dominio Active Directory
FarsightAD è uno script PowerShell che mira ad aiutare a scoprire (eventuali) meccanismi di persistenza implementati da un attore malevolo dopo una compromissione del dominio Active Directory.
Lo script produce esportazioni di file CSV / JSON di vari oggetti e dei loro attributi, arricchiti con timestamp tratti dai metadati di replica. Inoltre, se eseguito con privilegi di replica, il protocollo Directory Replication Service (DRS) viene sfruttato per rilevare oggetti completamente o parzialmente nascosti.
Per maggiori informazioni, consultare le slide introduttive del SANS DFIR Summit 2022.
FarsightAD richiede PowerShell 7 e il modulo ActiveDirectory aggiornato per PowerShell 7.
Su Windows 10/11, il modulo può essere installato tramite le Funzionalità opzionali come RSAT: Strumenti di Active Directory Domain Services e Lightweight Directory Services. Il modulo già installato può essere aggiornato con:
Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0
Se il modulo è correttamente aggiornato, Get-Command Get-ADObject dovrebbe restituire:
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>]
Maggiori informazioni sull'uso di ciascun cmdlet possono essere ottenute utilizzando Get-Help -Full <CMDLET>.

Aggiunta di un utente completamente nascosto

Nascondere l'attributo SID History di un utente

Scoprire gli utenti completamente e parzialmente nascosti con Export-ADHuntingHiddenObjectsWithDRSRepData
Il codice C# per le richieste DRS è stato adattato da:
MakeMeEnterpriseAdmin di @vletoux.Mimikatz di @gentilkiwi e @vletoux.SharpKatz di @b4rtik.Le funzioni per analizzare le Key Credentials provengono dal modulo PowerShell ADComputerKeys.
La persistenza relativa a AD CS è basata sul lavoro di:
La funzione per analizzare il Service Principal Name è basata sul lavoro di Adam Bertram.
Licenza CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/
| Cmdlet | Sinossi |
|---|
Invoke-ADHunting | Esegue tutti i cmdlet di caccia AD di FarsightAD (menzionati di seguito). |
Export-ADHuntingACLDangerousAccessRights | Esporta ACE pericolosi, cioè ACE che consentono l'acquisizione dell'oggetto sottostante, su tutti gli oggetti del dominio. Può richiedere tempo sui domini più grandi. |
Export-ADHuntingACLDefaultFromSchema | Esporta l'ACL configurato nell'attributo defaultSecurityDescriptor delle classi dello Schema. Vengono identificate le ACL non predefinite (come definite nella documentazione Microsoft) e vengono evidenziati gli ACE potenzialmente pericolosi. |
Export-ADHuntingACLPrivilegedObjects | Esporta l'ACL configurato sugli oggetti privilegiati del dominio ed evidenzia i diritti di accesso potenzialmente pericolosi. |
Export-ADHuntingADCSCertificateTemplates | Esporta informazioni e diritti di accesso sui modelli di certificato. Vengono recuperati i seguenti parametri notevoli: stato di pubblicazione del modello di certificato, utilizzo del certificato, se il soggetto è costruito da dati forniti dall'utente e controllo degli accessi (iscrizione/modifica). |
Export-ADHuntingADCSPKSObjects | Esporta informazioni e diritti di accesso sugli oggetti PKS sensibili (NTAuthCertificates, certificationAuthority e pKIEnrollmentService). |
Export-ADHuntingGPOObjectsAndFilesACL | Esporta informazioni sui diritti di accesso ACL sugli oggetti e file GPO, evidenziando i GPO applicati a utenti o computer privilegiati. |
Export-ADHuntingGPOSettings | Esporta informazioni su varie impostazioni configurate dai GPO che potrebbero essere sfruttate per la persistenza (privilegi e diritti di accesso, appartenenza a gruppi con restrizioni, attività pianificate e immediate V1/V2, script di logon/logoff di macchina e utente). |
Export-ADHuntingHiddenObjectsWithDRSRepData | Esporta gli attributi degli oggetti accessibili tramite replica (con il protocollo Directory Replication Service (DRS)) ma non tramite query diretta. I controlli di accesso non vengono considerati per le operazioni di replica, il che consente di identificare i controlli di accesso che bloccano l'accesso a specifici attributi di un oggetto. Viene valutato solo un insieme limitato di attributi sensibili. |
Export-ADHuntingKerberosDelegations | Esporta le deleghe Kerberos considerate pericolose (senza vincoli, vincolate a un servizio privilegiato o basate su risorse vincolate a un servizio privilegiato). |
Export-ADHuntingPrincipalsAddedViaMachineAccountQuota | Esporta i computer aggiunti al dominio da entità non privilegiate (tramite il meccanismo ms-DS-MachineAccountQuota). |
Export-ADHuntingPrincipalsCertificates | Esporta i certificati degli account analizzati (per gli account con un attributo userCertificate non vuoto). I certificati vengono analizzati per recuperare una serie di parametri: timestamp di validità del certificato, scopo del certificato, soggetto del certificato ed eventuali SubjectAltName, ... |
Export-ADHuntingPrincipalsDontRequirePreAuth | Esporta gli account che non richiedono la pre-autenticazione Kerberos. |
Export-ADHuntingPrincipalsOncePrivileged | Esporta gli account che un tempo erano membri di gruppi privilegiati. |
Export-ADHuntingPrincipalsPrimaryGroupID | Esporta gli account con un attributo primaryGroupID non predefinito, evidenziando i RID collegati a gruppi privilegiati. |
Export-ADHuntingPrincipalsPrivilegedAccounts | Esporta informazioni dettagliate sui membri dei gruppi privilegiati. |
Export-ADHuntingPrincipalsPrivilegedGroupsMembership | Esporta i membri attuali e passati dei gruppi privilegiati, recuperati utilizzando i metadati di replica. |
Export-ADHuntingPrincipalsSIDHistory | Esporta gli account con un attributo SID History non vuoto, con risoluzione del dominio associato ed evidenziazione dei SID privilegiati. |
Export-ADHuntingPrincipalsShadowCredentials | Esporta le informazioni analizzate sulle Key Credentials (degli account con un attributo msDS-KeyCredentialLink non vuoto). |
Export-ADHuntingPrincipalsTechnicalPrivileged | Esporta gli account tecnici privilegiati (SERVER_TRUST_ACCOUNT e INTERDOMAIN_TRUST_ACCOUNT). |
Export-ADHuntingPrincipalsUPNandAltSecID | Esporta gli account che definiscono un attributo UserPrincipalName o AltSecurityIdentities, evidenziando potenziali anomalie. |
Export-ADHuntingTrusts | Esporta i trust di tutti i domini nella foresta. Per ogni trust vengono recuperati una serie di parametri: transitività, filtro SID, delega TGT. |