FarsightAD 是一个 PowerShell 脚本,旨在帮助发现威胁行为者在 Active Directory 域失陷后部署的(可能的)持久化机制。
该脚本生成各种对象及其属性的 CSV / JSON 文件导出,并附有复制元数据的时间戳。此外,如果以复制权限执行,则会利用 目录复制服务(DRS) 协议检测完全或部分隐藏的对象。
更多信息,请参阅 SANS DFIR Summit 2022 介绍幻灯片。
FarsightAD 需要
PowerShell 7
以及为 PowerShell 7 更新的 ActiveDirectory 模块。
在 Windows 10 / 11 上,可以通过 可选功能 安装该模块,即
RSAT: Active Directory 域服务与轻型目录服务工具。已安装的模块可使用以下命令更新:
Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0
如果模块正确更新,Get-Command Get-ADObject 应返回:
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>]
每个 cmdlet 的更多用法信息可通过 Get-Help -Full <CMDLET> 获取。

添加一个完全隐藏的用户

隐藏用户的 SID History 属性

使用 Export-ADHuntingHiddenObjectsWithDRSRepData 揭示完全和部分隐藏的用户
DRS 请求的 C# 代码改编自:
MakeMeEnterpriseAdmin
作者 @vletoux。Mimikatz 作者 @gentilkiwi 和
@vletoux。SharpKatz 作者 @b4rtik。解析密钥凭据的函数来自
ADComputerKeys PowerShell 模块。
AD CS 相关的持久化研究基于以下工作:
解析服务主体名称的函数基于 Adam Bertram 的工作。
CC BY 4.0 许可证 - https://creativecommons.org/licenses/by/4.0/
| Cmdlet | 简介 |
|---|
Invoke-ADHunting | 执行下方列出的所有 FarsightAD AD 狩猎 cmdlet。 |
Export-ADHuntingACLDangerousAccessRights | 导出域中所有对象上的危险 ACE(即允许接管底层对象的 ACE)。 在较大的域中可能需要一段时间。 |
Export-ADHuntingACLDefaultFromSchema | 导出架构类的 defaultSecurityDescriptor 属性中配置的 ACL。 标识非默认(根据 Microsoft 文档定义的)ACL,并高亮显示潜在危险的 ACE。 |
Export-ADHuntingACLPrivilegedObjects | 导出域中特权对象上配置的 ACL,并高亮显示潜在危险的访问权限。 |
Export-ADHuntingADCSCertificateTemplates | 导出证书模板的信息和访问权限。 获取以下值得注意的参数:证书模板发布状态、证书用途、主题是否由用户提供数据构造,以及访问控制(注册/修改)。 |
Export-ADHuntingADCSPKSObjects | 导出敏感 PKS 对象(NTAuthCertificates、certificationAuthority 和 pKIEnrollmentService)的信息和访问权限。 |
Export-ADHuntingGPOObjectsAndFilesACL | 导出 GPO 对象和文件的 ACL 访问权限信息,高亮显示应用于特权用户或计算机的 GPO。 |
Export-ADHuntingGPOSettings | 导出由 GPO 配置的各种可能有用于持久化的设置信息(权限和登录权限、受限制的组成员身份、计划任务和即时任务 V1/V2、计算机和用户登录/注销脚本)。 |
Export-ADHuntingHiddenObjectsWithDRSRepData | 导出可通过复制(使用目录复制服务(DRS)协议)访问但无法通过直接查询访问的对象属性。 复制操作不考虑访问控制,从而可以识别阻止对特定对象属性进行访问的访问控制。 仅评估有限的敏感属性集。 |
Export-ADHuntingKerberosDelegations | 导出被认为危险的 Kerberos 委派(不受约束、对特权服务约束、或基于资源对特权服务约束)。 |
Export-ADHuntingPrincipalsAddedViaMachineAccountQuota | 导出由非特权主体(使用 ms-DS-MachineAccountQuota 机制)添加到域的计算机。 |
Export-ADHuntingPrincipalsCertificates | 导出解析后的帐户证书(针对具有非空 userCertificate 属性的帐户)。 解析证书以获取多个参数:证书有效期时间戳、证书用途、证书主题以及可能的 SubjectAltName 等。 |
Export-ADHuntingPrincipalsDontRequirePreAuth | 导出不需要 Kerberos 预认证的帐户。 |
Export-ADHuntingPrincipalsOncePrivileged | 导出曾经是特权组成员但当前不是的帐户。 |
Export-ADHuntingPrincipalsPrimaryGroupID | 导出具有非默认 primaryGroupID 属性的帐户,高亮显示与特权组关联的 RID。 |
Export-ADHuntingPrincipalsPrivilegedAccounts | 导出特权组成员的详细信息。 |
Export-ADHuntingPrincipalsPrivilegedGroupsMembership | 导出特权组的当前和过去成员(通过复制元数据获取)。 |
Export-ADHuntingPrincipalsSIDHistory | 导出具有非空 SID History 属性的帐户,并解析关联的域,高亮显示特权 SID。 |
Export-ADHuntingPrincipalsShadowCredentials | 导出解析后的密钥凭据信息(针对具有非空 msDS-KeyCredentialLink 属性的帐户)。 |
Export-ADHuntingPrincipalsTechnicalPrivileged | 导出技术特权帐户(SERVER_TRUST_ACCOUNT 和 INTERDOMAIN_TRUST_ACCOUNT)。 |
Export-ADHuntingPrincipalsUPNandAltSecID | 导出定义 UserPrincipalName 或 AltSecurityIdentities 属性的帐户,高亮显示潜在异常。 |
Export-ADHuntingTrusts | 导出林中所有域的信任关系。 为每个信任关系检索多个参数:传递性、SID 过滤、TGT 委派。 |