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事件消费者, 后渗透, 后端开发, 多模态安全, 子域名变形, 安全合规, 安全基线, 安全基线对比, 安全报告, 安全检查, 恶意启动项分析, 教学环境, 无线安全, 系统加固, 网络代理, 计划任务审计, 配置核查, 防火墙审计, 高危端口扫描