
Script de PowerShell que tiene como objetivo ayudar a descubrir (posibles) mecanismos de persistencia implementados por un actor de amenazas tras un compromiso del dominio de Active Directory
FarsightAD es un script de PowerShell que tiene como objetivo ayudar a descubrir (posibles) mecanismos de persistencia desplegados por un actor de amenazas tras un compromiso del dominio de Active Directory.
El script produce exportaciones en archivos CSV/JSON de varios objetos y sus atributos, enriquecidos con marcas de tiempo de los metadatos de replicación. Además, si se ejecuta con privilegios de replicación, se aprovecha el protocolo Directory Replication Service (DRS) para detectar objetos total o parcialmente ocultos.
Para más información, consulte las diapositivas introductorias del SANS DFIR Summit 2022.
FarsightAD requiere PowerShell 7 y el módulo ActiveDirectory actualizado para PowerShell 7.
En Windows 10/11, el módulo se puede instalar a través de las Características opcionales como RSAT: Herramientas de servicios de dominio de Active Directory y servicios de directorio ligero. El módulo ya instalado se puede actualizar con:
Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0
Si el módulo está actualizado correctamente, Get-Command Get-ADObject debería devolver:
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>]
Se puede obtener más información sobre el uso de cada cmdlet usando Get-Help -Full <CMDLET>.

Agregando un usuario completamente oculto

Ocultando el atributo SID History de un usuario

Descubriendo los usuarios total y parcialmente ocultos con Export-ADHuntingHiddenObjectsWithDRSRepData
El código C# para las solicitudes DRS fue adaptado de:
MakeMeEnterpriseAdmin
por @vletoux.Mimikatz por @gentilkiwi y
@vletoux.SharpKatz por @b4rtik.Las funciones para analizar Key Credentials son del
módulo ADComputerKeys de PowerShell.
La persistencia relacionada con AD CS se basa en trabajos de:
La función para analizar Service Principal Name se basa en el trabajo de Adam Bertram.
Licencia CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/
| Cmdlet | Synopsis |
|---|
Invoke-ADHunting | Ejecuta todos los cmdlets de AD Hunting de FarsightAD (mencionados abajo). |
Export-ADHuntingACLDangerousAccessRights | Exporta ACE peligrosas, es decir, ACE que permiten la toma de control del objeto subyacente, sobre todos los objetos del dominio. Puede tardar un tiempo en dominios grandes. |
Export-ADHuntingACLDefaultFromSchema | Exporta la ACL configurada en el atributo defaultSecurityDescriptor de las clases de esquema. Se identifican las ACL no predeterminadas (según la documentación de Microsoft) y se resaltan las ACE potencialmente peligrosas. |
Export-ADHuntingACLPrivilegedObjects | Exporta la ACL configurada en los objetos privilegiados del dominio y resalta los derechos de acceso potencialmente peligrosos. |
Export-ADHuntingADCSCertificateTemplates | Exporta información y derechos de acceso sobre las plantillas de certificados. Se recuperan los siguientes parámetros notables: estado de publicación de la plantilla de certificado, uso del certificado, si el sujeto se construye a partir de datos proporcionados por el usuario, y control de acceso (inscripción/modificación). |
Export-ADHuntingADCSPKSObjects | Exporta información y derechos de acceso sobre objetos PKS sensibles (NTAuthCertificates, certificationAuthority y pKIEnrollmentService). |
Export-ADHuntingGPOObjectsAndFilesACL | Exporta información de derechos de acceso ACL sobre objetos y archivos de GPO, resaltando las GPO que se aplican a usuarios o equipos privilegiados. |
Export-ADHuntingGPOSettings | Exporta información sobre varias configuraciones establecidas por GPO que podrían aprovecharse para persistencia (privilegios y derechos de inicio de sesión, pertenencia a grupos restringidos, tareas programadas e inmediatas V1/V2, scripts de inicio/cierre de sesión de máquina y usuario). |
Export-ADHuntingHiddenObjectsWithDRSRepData | Exporta los atributos de los objetos que son accesibles mediante replicación (con el protocolo Directory Replication Service (DRS)) pero no mediante consulta directa. El control de acceso no se tiene en cuenta para las operaciones de replicación, lo que permite identificar controles de acceso que bloquean el acceso a atributos específicos de objetos. Solo se evalúa un conjunto limitado de atributos sensibles. |
Export-ADHuntingKerberosDelegations | Exporta las delegaciones Kerberos que se consideran peligrosas (sin restricciones, restringidas a un servicio privilegiado, o basadas en recursos restringidas a un servicio privilegiado). |
Export-ADHuntingPrincipalsAddedViaMachineAccountQuota | Exporta los equipos que fueron agregados al dominio por entidades no privilegiadas (usando el mecanismo ms-DS-MachineAccountQuota). |
Export-ADHuntingPrincipalsCertificates | Exporta los certificados analizados de las cuentas (para cuentas que tienen un atributo userCertificate no vacío). Los certificados se analizan para recuperar varios parámetros: marcas de tiempo de validez del certificado, propósito del certificado, sujeto del certificado y posibles SubjectAltName(s), ... |
Export-ADHuntingPrincipalsDontRequirePreAuth | Exporta las cuentas que no requieren preautenticación Kerberos. |
Export-ADHuntingPrincipalsOncePrivileged | Exporta las cuentas que alguna vez fueron miembros de grupos privilegiados. |
Export-ADHuntingPrincipalsPrimaryGroupID | Exporta las cuentas que tienen un atributo primaryGroupID no predeterminado, resaltando RID vinculados a grupos privilegiados. |
Export-ADHuntingPrincipalsPrivilegedAccounts | Exporta información detallada sobre los miembros de grupos privilegiados. |
Export-ADHuntingPrincipalsPrivilegedGroupsMembership | Exporta los miembros actuales y pasados de grupos privilegiados, recuperados mediante metadatos de replicación. |
Export-ADHuntingPrincipalsSIDHistory | Exporta las cuentas que tienen un atributo SID History no vacío, con resolución del dominio asociado y resaltado de SID privilegiados. |
Export-ADHuntingPrincipalsShadowCredentials | Exporta información analizada de Key Credentials (de cuentas que tienen un atributo msDS-KeyCredentialLink no vacío). |
Export-ADHuntingPrincipalsTechnicalPrivileged | Exporta las cuentas privilegiadas técnicas (SERVER_TRUST_ACCOUNT e INTERDOMAIN_TRUST_ACCOUNT). |
Export-ADHuntingPrincipalsUPNandAltSecID | Exporta las cuentas que definen un atributo UserPrincipalName o AltSecurityIdentities, resaltando posibles anomalías. |
Export-ADHuntingTrusts | Exporta las relaciones de confianza de todos los dominios del bosque. Se recuperan varios parámetros para cada confianza: transitividad, filtrado SID, delegación TGT. |