Muath477/WinGuard-PS
GitHub: Muath477/WinGuard-PS
一款基于 PowerShell 5.1 的独立 Windows 安全审计与威胁狩猎 CLI 工具,通过策略驱动实现加固检查、可疑行为发现和多格式报告输出。
Stars: 0 | Forks: 0
# WinGuard-PS
WinGuard-PS 是一款适用于 Windows 系统的独立 PowerShell 5.1 CLI 安全审计与威胁搜寻工具。
**完整参考文档(阿拉伯语):** 运行参数、项目布局、`Finding` 架构、`policy.json` 表格、所使用的 PowerShell cmdlets 以及报告输出 — 请参阅 **[REFERENCE.md](REFERENCE.md)**。
## 功能
- 扫描前验证管理员权限。
- 扫描模式:**Quick**(轻度采样)和 **Deep**(全覆盖)。
- 操作系统强化审计:UAC、防火墙、Defender、RDP/NLA、SMB1、**BitLocker**(策略驱动的挂载点)、**WinRM** 服务状态、本地管理员、高风险端口、自启动服务。
- 威胁搜寻:启动项哈希、可疑计划任务、**Run/RunOnce** 注册表路径、**WMI 事件使用者**(`root\subscription`)、活跃的 TCP 连接(外部摘要 + **策略驱动的可疑远程端口**)。
- 策略驱动的受信路径、Microsoft 计划任务路径以及已知端口/进程组合的白名单。
- 包含可选 **delta** 运行对比的基线文件。
- 报告引擎:JSON、HTML(交互式过滤器 + 执行摘要)、CSV 以及纯文本 **summary**(`*.summary.txt`)。
- 高风险端口:可选**合并**每个端口的重复监听器(IPv4/IPv6),并可选对 `%SystemRoot%` 下的常见 Windows 监听器进行**降级**处理(参见 `policy.json`)。
- 可疑计划任务:在发现描述中提供**详细列表**(任务路径、可执行文件、参数、运行身份)。
- 结构化 JSONL 运行时日志。
## 系统要求
- Windows 10/11
- PowerShell 5.1
- 以管理员身份运行终端
## 运行
在代码库文件夹中,**每个代码块执行一条命令**(便于复制粘贴)。
```
cd "C:\Users\moath\OneDrive\Desktop\Smart System Auditor (SSA)\WinGuard-PS"
```
```
.\WinGuard-PS.ps1
```
如果脚本仅在当前会话中被阻止运行:
```
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
```
快速扫描:
```
.\WinGuard-PS.ps1 -Mode Quick
```
自动打开 HTML 报告:
```
.\WinGuard-PS.ps1 -OpenReport
```
当存在任何 **Critical** 发现时自动打开报告:
```
.\WinGuard-PS.ps1 -OpenOnCritical
```
与上次保存的基线进行比较(存储在 `Data\baseline.json` 中):
```
.\WinGuard-PS.ps1 -Delta
```
运行后跳过基线更新:
```
.\WinGuard-PS.ps1 -SkipBaselineUpdate
```
最小化控制台输出(仅在结束时打印 HTML 路径 — 适用于自动化):
```
.\WinGuard-PS.ps1 -Quiet
```
如果存在任何 **Critical** 发现则导致批处理/CI失败(退出代码为 **2**):
```
.\WinGuard-PS.ps1 -FailOnCritical
```
**退出代码:** `0` = 成功,`1` = 未以管理员身份运行,`2` = 使用 `-FailOnCritical` 时存在 Critical 发现。
## 输出
- JSON 报告:`Reports\Audit_yyyyMMdd_HHmmss.json`
- HTML 报告:`Reports\Audit_yyyyMMdd_HHmmss.html`(搜索 + 严重性/类别过滤器)
- CSV 报告:`Reports\Audit_yyyyMMdd_HHmmss.csv`
- 文本摘要:`Reports\Audit_yyyyMMdd_HHmmss.summary.txt`
- 日志:`Logs\Scan_yyyyMMdd_HHmmss.log.jsonl`
- 基线:`Data\baseline.json`(除非使用 `-SkipBaselineUpdate`,否则每次运行时更新)
## 配置
编辑 `Config\policy.json` 以调整权重、阈值、高风险端口、扫描模式上限和白名单,无需更改代码。
- `hunter.suspiciousRemotePorts`:当*已建立*的出站连接使用这些远程 TCP 端口时会触发 **Warning**(默认值在 `policy.json` 中;可自由编辑)。
- `bitLocker.mountPoints`:要评估的驱动器挂载点(例如 `C:`);需要 `Get-BitLockerVolume`(并非所有版本均可用)。
重要的 `network` 键:
- `mergeListenersByPort`:当为 `true` 时,每个 TCP 端口生成一个包含组合本地地址的发现项(减少重复行)。
- `downgradeWhenWindowsSystemBinary`:当为 `enabled` 时,如果所属二进制文件位于 Windows 文件夹下且进程为 `System` 或 `svchost`,则列出的 `ports` 可能会被降级为 `targetSeverity`(默认为 `Info`)。
## 架构
- `WinGuard-PS.ps1`:入口点与编排
- `Modules\Core\Core.Engine.psm1`:上下文/配置加载、评分、基线导入/导出
- `Modules\Audit\Audit.Module.psm1`:强化检查
- `Modules\Hunter\Hunter.Module.psm1`:威胁搜寻检查
- `Modules\Reporting\Reporting.Engine.psm1`:JSON/HTML/CSV 报告生成
- `Modules\Common\Utils.psm1`:发现项架构、日志记录、指纹识别、路径辅助工具
- `Config\policy.json`:风险权重、阈值、危险端口、白名单、扫描模式限制
- `Rules\default.rules.json`:基线规则元数据
## 测试
单元测试(Pester 3+):从项目文件夹运行 `Invoke-Pester -Path .\Tests\WinGuard.Utils.Tests.ps1`。覆盖了 `Utils.psm1` 中的 `Test-WGIsExternalRemoteAddress` 和 `Test-WGPathMatchesPrefix`。
标签:BitLocker, CSV报告, Homebrew安装, HTML报告, IPv6, JSON报告, OpenCanary, PE 加载器, PowerShell, RDP安全, RunOnce检测, SMBv1检测, UAC检查, Windows Defender, Windows安全审计, WinRM安全, WMI事件消费者, 后渗透, 后端开发, 多模态安全, 子域名变形, 安全合规, 安全基线, 安全基线对比, 安全报告, 安全检查, 恶意启动项分析, 教学环境, 无线安全, 系统加固, 网络代理, 计划任务审计, 配置核查, 防火墙审计, 高危端口扫描