ThatTotallyRealMyth/Impacket-IoCs

GitHub: ThatTotallyRealMyth/Impacket-IoCs

一份详尽的 Impacket 协议层与实现层失陷指标参考,帮助蓝队构建深层检测逻辑并指导红队提升工具操作安全性。

Stars: 152 | Forks: 14

# 剖析 Impacket 一份公开的协议层和实现层失陷指标 参考资料,用于检测 Impacket 驱动的活动。 如果您发现我陈述有误,或有任何反馈,亦或您希望我为特定的协议或实现添加指纹,请随时提出 Issue。 ## 概述 本仓库包含了我在当前工作中进行 Impacket 的内部重写/分支 时所做笔记的一部分。我提取了大量由 Impacket 及其几个示例工具产生的内部信号,并在此提供,以便其他蓝队和红队成员能够从中受益。 其目标是帮助防御者了解在协议、身份验证和实现层面上,Impacket 活动可能呈现的样子,而不仅仅停留在命令行或工件层面。对于红队而言,我希望这个仓库能激发操作人员采取类似的举措,以提高其工具集的操作安全性,并作为如何剖析工具以区分正常与异常行为的蓝图。 许多攻击性工具的检测集中在诸如文件名、服务名、临时路径、命令输出重定向、计划任务名和其他表面层次的工件上。这些检测很有用,但通常也很容易被修改。 虽然也包含一些这方面的内容,但本项目侧重于更深层的信号:Kerberos 请求构造、NTLMSSP 字段、SPNEGO 封装、SMB 协商行为、DCE/RPC 身份验证尾部、WMI/DCOM 激活细节、LDAP 对象创建模式以及示例脚本的默认设置。 其意图是为防御者(尤其是那些无法访问昂贵商业检测内容的小型团队)提供实用信号,以便他们为 Impacket 滥用构建更强的指纹。同样,这也是为了向红队展示他们的工具可能或确实会留下的工件和信号类型,并更好地展示如何通过改进这些方面来提升行动交付的质量。 ## 包含的内容 本研究目前记录了分布在以下类别中的 **67 个 Impacket 相关 IoC**: | 类别 | 数量 | 示例 | | --- | ---: | --- | | Kerberos 与票据 | 15 | AS-REQ 差异、TGS-REQ etype 顺序、AP-REQ 封装、伪造票据默认值 | | SMB | 3 | SMB2/3 ClientGuid、协商上下文行为、SMB1 方言协商 | | NTLM 与 SPNEGO | 11 | NTLMSSP 缺失项、NTLMv2 challenge 结构、NTLM 类规范偏差/违规、SPNEGO 封装差异 | | LDAP 与 Active Directory 对象 | 2 | 默认计算机/对象创建命名模式 | | DCE/RPC、DCOM 与 WMI | 15 | `auth_context_id`、缺失的验证尾部、WMI/DCOM 激活行为、RPC 中继客户端中使用的虚拟/伪造 OpNum | | 示例脚本执行工件 | 7 | `psexec.py`、`smbexec.py`、`atexec.py`、`dcomexec.py`、RemCom 工件 | | secretsdump、DRSUAPI 与 VSS | 4 | DRSBind 行为、DRSGetNCChanges 默认值、VSS 执行模式 | | MSSQL | 4 | LOGIN7 元数据、PRELOGIN 行为、SQL Agent 作业创建 | | ntlmrelayx HTTP、WebDAV、RDP 与 SCCM | 6 | WPAD、WebDAV、RDP 中继证书、SCCM 策略字符串 | ## 如何阅读本研究 本仓库中的每个 IoC 不应被同等对待。 某些指标是强大的独立指纹。其他则最好被视为富化信号、弱特征或降噪器,它们在与其他证据结合时才具有价值。 良好的检测策略应将它们大致分为三类: ### 1. 高置信度独立信号 这些指标足够异常,在许多环境中能够独立发挥重要作用。 示例包括: - 使用 `auth_context_id = 79231 + ctx_id` 的已认证 DCE/RPC - 使用 `0xff` 的 DCE/RPC 身份验证填充 - LDAP Kerberos bind 将原始 Kerberos `AP-REQ` 直接放置在 SPNEGO `mechToken` 中 - 带有 ASCII 字母 `ClientGuid` 值的 SMB2/3 协商请求 - WMI `IWbemLevel1Login::NTLMLogin` 使用不符合规范的命名空间斜杠 `//./root/cimv2` - 硬编码的 Kerberos nonce 值 这些仍然需要在您自己的环境中进行验证,但它们属于这类信号:在正确的上下文中出现时,可能足以支撑高置信度的告警。 ### 2. 基于集群的信号 某些指标单独使用时并不可靠,但当其中几个在同一源主机、用户、会话或时间窗口中同时出现时,就会变得非常有效。 示例包括: - 稀疏的 Kerberos AS-REQ 加密类型列表 - 缺失或异常的 Kerberos `PA-DATA` - TGS-REQ 加密类型顺序差异/重复条目 - 缺失版本信息的 NTLM Type 1 消息 - 主机名为空的 NTLM Type 3 消息 - DCE/RPC 中使用原始 NTLMSSP 而不是 SPNEGO - 缺失的 DCE/RPC 验证尾部 - mechList 与 KRB_OID/TOK 值之间指定的 Kerberos Auth OIDs 不匹配 这些非常适合用于评分模型、关联搜索或以下检测逻辑:“此活动具有多个类似 Impacket 的实现特征。” ### 3. 降噪器与支持性上下文 某些 IoC 更适合用于降低噪音、丰富其他检测或解释告警可疑的原因。 示例包括: - 默认文件名或输出路径 - 随机服务命名模式 - 临时批处理文件名 - 默认计算机帐户名 - 特定工具的 HTTP、WebDAV、RDP 或 MSSQL 字符串 - 不符合 Microsoft 版本控制/变体模式的 DCE/RPC UUID 条目 这些很有用,但也更容易受操作者控制。将它们作为辅助证据处理,而不是触发告警的唯一原因。 ## 为什么协议层检测很重要 许多 Impacket 指纹存在于大多数操作者交互层之下。 操作者可以重命名服务、更改输出文件、修改命令字符串或修补示例脚本。他们可能没有注意到,该库在构建 Kerberos、NTLM、SMB、LDAP 或 DCE/RPC 流量时,仍然以不同于正常 Windows 行为的方式进行。 这正是持久检测 通常存在的地方。 最佳检测源于同时理解三件事: 1. 协议允许什么 2. Windows 通常发出什么 3. Impacket 哪里持续表现得足够不同,以至于可以成为统计学上的异常 本研究试图记录这些差异,以便防御者能将其转化为实用的网络、端点或遥测驱动的检测。同时也提供一种红队可以学习并在自己的工具中扩展应用的方式。 ## 建议用法 将此仓库作为构建、验证和(如果您是红队)规避检测的参考,而不是直接复制/粘贴的告警库。 对于每个 IoC,请考虑: - 该字段是否出现在我的遥测数据中? - 我能可靠地解码或提取它吗? - 我的运行环境中是否存在行为类似的合法软件? - 该信号是否强到足以单独触发告警? - 是否应将其用作关联特征? - 当与来自同一主机的 Kerberos、SMB、NTLM、LDAP 或 DCE/RPC 活动配对时,该信号是否变得更强? - 我能否利用统计建模和数据分析技巧来提升该信号的有效性? 只要可能,请围绕行为集群而不是单一字段来构建检测。 例如,单个缺失的 NTLM 版本字段可能并不足够。但是,如果客户端同时显示在 DCE/RPC 上的原始 NTLMSSP、缺失的验证尾部、Impacket 风格的 `auth_context_id` 以及异常的 WMI 激活行为,这就更有趣了,并且几乎可以肯定是 Impacket 用户,而非真实的 Windows 设备。 ## 注意事项 本研究应结合上下文进行解读。 - 某些行为可能因 Impacket 版本、分支或本地修改而异。我使用的是最新的/main 分支。 - 某些行为可能因 Windows 版本、域策略、身份验证类型或正在访问的服务而异。测试在 Windows Server 2022 和 Windows Server 2012 上进行。 - 某些指标可能与 Samba、Linux 客户端、旧版软件、设备或自定义实现相重叠。 - 某些检测需要解密的流量、端点遥测、ETW、Zeek 风格的协议解析、PCAP 分析或服务端可见性。 - 随着 Impacket 的变化,源代码参考中的行号可能会随时间发生偏移。 - 单个协议字段很少能说明全部问题。 将此项工作投入实际运作的最安全方法是,针对您自己的基线进行测试,然后逐渐将检测从富化提升到狩猎,再到告警。 ## 建议的检测理念 实用方法如下: 1. 在您的环境支持的情况下,使用高置信度的协议怪癖作为直接告警。 2. 使用较弱的实现怪癖作为评分特征。 3. 跨协议层进行关联。 4. 优先使用集群,而不是单字段假设。 5. 将工具默认值视为辅助证据,而非检测的全部。 6. 当 Impacket 或 Windows 行为发生变化时,重新测试检测。 就像这些事情通常的情况一样,这是一场猫鼠游戏。我毫不怀疑这里阐述的检测方法很快就会过时,但当它们过时时,我希望下一个人能超越我和其他人 : )
标签:Checkov, CIDR扫描, DCE/RPC, DCOM, HTTP, Impacket, IoC, IP 地址批量处理, LDAP, Modbus, NTLMSSP, Python, SMB, SPNEGO, TGT, WMI, 入侵指标, 内核驱动, 协议分析, 威胁情报, 安全指纹, 安全运营, 工具指纹, 开发者工具, 恶意行为检测, 扫描框架, 攻防演练, 无后门, 权限提升, 流量检测, 渗透测试框架, 红军, 网络协议, 网络安全, 蓝军, 逆向工具, 错误配置检测, 防御, 防御绕过, 隐私保护