kowalski-analysis/PrivescCheck-Color
GitHub: kowalski-analysis/PrivescCheck-Color
该工具为 PrivescCheck 提供基于严重性级别的 ANSI 彩色输出,解决渗透测试中纯文本结果难以快速辨识高价值发现的问题。
Stars: 0 | Forks: 0
# PrivescCheck-Color
[@itm4n](https://github.com/itm4n) 的 [PrivescCheck](https://github.com/itm4n/PrivescCheck) 的彩色输出包装器。
拦截 PrivescCheck 的终端输出函数,并将其替换为带有 ANSI 严重性颜色渲染的功能。所有检测逻辑均保持原样,未作修改。该包装器未引入任何新的枚举功能。
## 背景
PrivescCheck 会为每个检查结果分配一个严重性级别(`High`、`Medium`、`Low`、`Info`、`None`),但所有输出均为纯文本。在时间紧迫的测试过程中——或者在终端窗口较窄的 WinRM 会话中——要在长篇纯文本滚动中识别出可操作的发现是非常缓慢的。
该包装器在原始脚本加载后替换了其两个输出函数(`Write-CheckBanner`、`Write-CheckResult`),在不触及任何检测代码的情况下实现了带颜色渲染。这种方法是在全局作用域内进行函数级别的覆盖,而不是源码补丁,因此无需修改即可与未来的 PrivescCheck 版本保持兼容。
## 严重性颜色映射
```
[HIGH] Red Immediate privilege escalation vector
[MED] Yellow Exploitable misconfiguration
[LOW] Cyan Low-confidence or informational finding
[PASS] Green Check completed, no issue found
keyword Magenta Sensitive string highlighted inline (privileges, credentials, paths)
```
## 用法
### 基本运行
```
powershell -ep bypass -c ". .\Invoke-PrivescCheckColor.ps1; Invoke-PrivescCheckColor"
```
### 扩展检查
```
powershell -ep bypass -c ". .\Invoke-PrivescCheckColor.ps1; Invoke-PrivescCheckColor -Extended"
```
### 仅筛选 High 和 Medium 输出
```
powershell -ep bypass -c ". .\Invoke-PrivescCheckColor.ps1; Invoke-PrivescCheckColor -Extended -SeverityFilter Medium"
```
### 执行扩展检查并将 HTML 报告写入磁盘
```
powershell -ep bypass -c ". .\Invoke-PrivescCheckColor.ps1; Invoke-PrivescCheckColor -Extended -Report out -Format HTML"
```
### 内存中执行,不向磁盘写入文件
```
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/kowalski-analysis/PrivescCheck-Color/main/Invoke-PrivescCheckColor.ps1'); Invoke-PrivescCheckColor -Extended -SeverityFilter Medium
```
### 使用本地的 PrivescCheck.ps1 副本而不是下载
```
powershell -ep bypass -c ". .\Invoke-PrivescCheckColor.ps1; Invoke-PrivescCheckColor -SourceScript C:\tools\PrivescCheck.ps1"
```
## 参数
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `-Extended` | Switch | 启用扩展检查 |
| `-Audit` | Switch | 启用审计检查 |
| `-Experimental` | Switch | 启用实验性检查 |
| `-Risky` | Switch | 启用可能触发终端防护的检查 |
| `-Force` | Switch | 以管理员身份执行时强制运行 |
| `-Report` | String | 将结果写入带有此前缀的报告文件中 |
| `-Format` | String | 报告格式:`TXT`、`HTML`、`CSV`、`XML` |
| `-SeverityFilter` | String | 抑制低于此级别的结果:`High`、`Medium`、`Low`、`Info`、`None` |
| `-NoColor` | Switch | 禁用 ANSI 转义序列 |
| `-NoLogo` | Switch | 隐藏头部信息 |
| `-SourceScript` | String | 指定 `PrivescCheck.ps1` 的路径或 URL |
## 传递与执行
### WinRM / Evil-WinRM
```
upload Invoke-PrivescCheckColor.ps1
. .\Invoke-PrivescCheckColor.ps1
Invoke-PrivescCheckColor -Extended -SeverityFilter Medium
```
### Meterpreter
在运行前设置会话超时时间——默认的 15 秒不够:
```
msf6 > sessions -t 300 -i 1
meterpreter > load powershell
meterpreter > powershell_import /local/path/Invoke-PrivescCheckColor.ps1
meterpreter > powershell_execute "Invoke-PrivescCheckColor -Extended -SeverityFilter Medium"
```
### 受限语言模式
```
Get-Content .\Invoke-PrivescCheckColor.ps1 | Out-String | Invoke-Expression
```
### 从 HTTP 服务器执行
```
IEX (New-Object Net.WebClient).DownloadString('http://LHOST/Invoke-PrivescCheckColor.ps1'); Invoke-PrivescCheckColor -SeverityFilter High
```
## 工作原理
PrivescCheck 在每次检查完成后都会调用 `Write-CheckBanner` 和 `Write-CheckResult`。在加载原始脚本后,此包装器会在全局 PowerShell 作用域内覆盖这两个函数。新的实现会:
1. 读取已由 PrivescCheck 检测逻辑设置的 `.Severity` 属性
2. 将其映射到 ANSI 颜色代码
3. 扫描属性值中固定的敏感字符串列表(权限名称、凭据关键字、可写入系统路径),并以独特颜色高亮匹配项
4. 应用 `-SeverityFilter` 阈值,以便在筛选时抑制低价值输出
5. 收集所有结果并在最后打印汇总,包含每个严重性级别的计数以及高危/中危发现的命名列表
检测函数、严重性分配、检查注册表以及所有枚举逻辑均保持原样未作修改。
## 敏感字符串高亮
在输出结果中匹配到以下类别的字符串时,将会对其进行高亮显示:
- **可利用的权限**:`SeImpersonatePrivilege`、`SeAssignPrimaryTokenPrivilege`、`SeTcbPrivilege`、`SeBackupPrivilege`、`SeRestorePrivilege`、`SeDebugPrivilege`、`SeTakeOwnershipPrivilege`、`SeLoadDriverPrivilege`
- **错误配置指示符**:`AlwaysInstallElevated`、`Unquoted`、`AutoRun`、`Autologon`、`DefaultPassword`
- **凭据关键字**:`password`、`cleartext`、`plaintext`、`NTLM`、`SAM`、`LSA`、`credential`、`token`
- **高价值身份**:`NT AUTHORITY\SYSTEM`、`BUILTIN\Administrators`、`Everyone`
- **敏感路径**:`C:\Windows\System32`、`C:\Windows\SysWOW64`、`C:\Program Files\`
## 兼容性
| 环境 | 状态 |
|---|---|
| PowerShell 2.0+ | 支持(为绕过 CLM 维持了 PSv2 兼容性) |
| PowerShell 5.1 | 支持 |
| PowerShell 7.x | 支持 |
| WinRM / Evil-WinRM | 支持 |
| Meterpreter powershell extension | 支持(需设置会话超时时间) |
| 支持 ANSI 的终端(Windows Terminal、大多数 Linux PTY) | 全彩输出 |
| 旧版 Windows 上的传统 cmd.exe 控制台 | 自动回退为纯文本 |
## 仓库结构
```
PrivescCheck-Color/
├── Invoke-PrivescCheckColor.ps1 Main script
├── README.md
├── CHANGELOG.md
├── LICENSE
└── .gitignore
```
## 免责声明
此工具仅供授权的渗透测试和安全研究使用。未经明确书面授权,请勿对系统使用。作者对滥用行为不承担任何责任。
## 许可证
BSD 3-Clause。请参阅 [LICENSE](LICENSE)。继承自原始 PrivescCheck 项目。
标签:AI合规, IPv6, Libemu, OpenCanary, PowerShell, Web报告查看器, 协议分析, 本地提权检查, 权限提升, 终端增强