对 Windows 系统执行全面的本地安全扫描,支持浅层扫描、深度扫描、历史对比、HTML 报告导出和定时体检。
> ⚠️ 注意:本扫描基于 Windows 原生工具和 Python(psutil),属于安全检查,不能替代专业杀毒软件。
| 功能 | 说明 |
|------|------|
| 🟢 快速扫描 | PowerShell 原生命令,10+ 安全维度 |
| 🔬 深度扫描 | Python 脚本:哈希/签名/网络/文件分析 |
| 📊 历史对比 | 与上次扫描对比,发现配置变化 |
| 📄 HTML 报告 | 完整可视化报告,含图表和分 tab 展示 |
| ⏰ 定时体检 | 自动创建每周/每月体检自动化任务 |
用户说"安全扫描"、"电脑体检"时,执行 Step 1-10 的 PowerShell 命令,无需 Python。
用户说"深度扫描"、"全面体检"、"安全报告"时:
# 获取 Python 路径(兼容 WorkBuddy 和直接安装的 Python)
$PYTHON = if (Test-Path "$env:USERPROFILE\.workbuddy\binaries\python\versions\3.13.12\python.exe") {
"$env:USERPROFILE\.workbuddy\binaries\python\versions\3.13.12\python.exe"
} else { "python" }
# 1. 运行深度扫描
powershell -NoProfile -Command "& `$PYTHON `"$PSScriptRoot\pcsecscript\deep_scan.py`""
# 2. 生成 HTML 报告
powershell -NoProfile -Command "& `$PYTHON `"$PSScriptRoot\pcsecscript\generate_report.py`""
# 3. 生成修复建议
powershell -NoProfile -Command "& `$PYTHON `"$PSScriptRoot\pcsecscript\auto_fix.py`""
用户说"每周体检"、"每月扫描"、"设置自动体检"时,使用 automation_update tool 创建自动化任务:
{skill_dir}\pcsecscript\(相对于本 Skill 目录)
whoami
Get-WmiObject Win32_OperatingSystem | Select-Object Caption, BuildNumber, OSArchitecture | Format-List
Get-MpComputerStatus | Select-Object AntivirusEnabled, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated, AntivirusSignatureVersion | Format-List
Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct | Select-Object displayName, productState, timestamp | Format-List
判断:AntivirusEnabled + RealTimeProtectionEnabled = True → ✅;无杀毒软件 → 🔴 紧急
Get-NetFirewallProfile | Select-Object Name, Enabled | Format-Table -AutoSize
Get-NetTCPConnection | Where-Object {$_.State -eq 'Listen'} | Select-Object LocalAddress, LocalPort, OwningProcess | Sort-Object LocalPort
Get-Process | Where-Object {$_.CPU -gt 100} | Select-Object Name, Id, CPU, @{N='Mem(MB)';E={[math]::Round($_.WorkingSet64/1MB,1)}}, Path | Sort-Object CPU -Descending | Select-Object -First 20 | Format-Table -AutoSize
Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User | Format-Table -AutoSize
Get-ScheduledTask | Where-Object {$_.State -ne 'Disabled'} | Select-Object TaskName, State, TaskPath | Select-Object -First 50 | Format-Table -AutoSize
# UAC
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" | Select-Object EnableLUA, ConsentPromptBehaviorAdmin | Format-List
# RDP
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" | Select-Object fDenyTSConnections
# SMBv1
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, EnableSMB2Protocol | Format-List
Get-CimInstance Win32_UserAccount | Where-Object {$_.LocalAccount -eq $true} | Select-Object Name, Disabled, Description | Format-Table -AutoSize
Get-WmiObject -Class Win32_QuickFixEngineering | Sort-Object InstalledOn -Descending | Select-Object -First 10 Description, HotFixID, InstalledOn | Format-Table -AutoSize
Get-Service | Where-Object {$_.Status -eq "Running" -and $_.DisplayName -match "teamviewer|anydesk|vnc|logmein"} | Select-Object Name, DisplayName | Format-Table -AutoSize
pcsecscript/deep_scan.py 执行以下分析:
| 模块 | 内容 |
|------|------|
| 时间同步检查 | 启动时自动查询 NTP 服务器(Google/Cloudflare/官方NTP池),与本地时间对比;偏差超过 7 天则在报告中醒目警告 |
| 进程分析 | 采集所有进程 CPU/内存/路径/SHA256哈希 |
| 签名检查 | 对高 CPU 进程进行 Authenticode 数字签名验证 |
| 网络分析 | 采集所有 TCP 连接,识别外部(非内网)连接 |
| Temp 扫描 | 扫描 Temp/Download 目录中 7 天内修改的可执行文件 |
| 注册表扫描 | 采集 HKLM/HKCU 所有自启动项 |
| 综合分析 | 按严重程度分类问题(critical/high/medium/low) |
| 历史对比 | 与上次扫描对比,发现新增/消失的风险项 |
发现安全问题后,运行 pcsecscript/auto_fix.py 生成修复方案:
# 获取 Python 并运行(兼容 WorkBuddy 和系统 Python)
$PYTHON = if (Test-Path "$env:USERPROFILE\.workbuddy\binaries\python\versions\3.13.12\python.exe") {
"$env:USERPROFILE\.workbuddy\binaries\python\versions\3.13.12\python.exe"
} else { "python" }
powershell -NoProfile -Command "& `$PYTHON `"$PSScriptRoot\pcsecscript\auto_fix.py`""
已内置以下问题的修复命令:
| 问题类型 | 修复内容 |
|----------|----------|
| Windows Defender 已禁用 | 启用实时保护 |
| 防火墙未开启 | 启用三网防火墙 |
| SMBv1 启用(永恒之蓝) | 禁用 SMBv1 协议 |
| RDP 已开启 | 禁用远程桌面 |
| UAC 已禁用 | 恢复 UAC 设置 |
| Guest 账户未禁用 | 禁用 Guest 账户 |
| 可疑自启动项 | 定位并提供删除命令 |
| 可疑外部连接 | 定位进程并提供断网方案 |
| Temp 可执行文件 | 隔离+杀毒扫描 |
| 安全补丁过期 | 打开 Windows 更新 |
深度扫描结果自动保存在:
~/.workbuddy/security-scan/history/scan_*.json
对比内容:
运行 pcsecscript/generate_report.py 生成自包含的 HTML 报告,包含:
报告保存在:{skill_dir}\reports\(相对于本 Skill 目录)
本扫描基于 PowerShell / Python psutil 原生命令,仅提供参考性安全评估,不能替代:
(以下由 AI 在实际使用中自动积累,请勿手动删除)
> 注意:本扫描基于 Windows 原生工具(PowerShell / WMI),属于浅层安全检查,无法替代专业杀毒软件(如 Malwarebytes、ESET)。如需深度检测,请运行专业杀毒软件全盘扫描。
本 Skill 覆盖以下安全维度:
| 编号 | 维度 | 说明 |
|------|------|------|
| 1 | 🛡️ 杀毒软件状态 | Defender 是否启用、病毒库是否最新 |
| 2 | 🔥 防火墙状态 | 三网(域/专用/公用)防火墙是否启用 |
| 3 | 🚪 开放端口 | 监听端口是否异常(非标准端口、非系统服务端口) |
| 4 | 🕵️ 可疑进程 | CPU/内存占用异常的进程 |
| 5 | 🚀 自启动项 | 注册表/启动文件夹中的自启动程序 |
| 6 | ⏰ 计划任务 | 可疑的定时任务 |
| 7 | 🔐 系统安全配置 | UAC、RDP、SMBv1、Admin 账户等 |
| 8 | 👤 用户账户 | 多余管理员账户、Guest 是否禁用 |
| 9 | 🩹 安全补丁 | 最近安全更新是否安装 |
| 10 | 💻 远程控制软件 | TeamViewer/VNC/AnyDesk 等是否运行 |
whoami
Get-WmiObject Win32_OperatingSystem | Select-Object Caption, BuildNumber, OSArchitecture
获取当前用户名和系统版本。
Get-MpComputerStatus | Select-Object AntivirusEnabled, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated, AntivirusSignatureVersion | Format-List
Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct | Select-Object displayName, productState, timestamp | Format-List
判断标准:
AntivirusEnabled = True → ✅ 杀毒软件已启用
RealTimeProtectionEnabled = True → ✅ 实时保护已启用
Get-NetFirewallProfile | Select-Object Name, Enabled | Format-Table -AutoSize
Get-NetTCPConnection | Where-Object {$_.State -eq 'Listen'} | Select-Object LocalAddress, LocalPort, OwningProcess | Sort-Object LocalPort
判断标准:
Enabled 应全为 True
Get-Process | Where-Object {$_.CPU -gt 100} | Select-Object Name, Id, CPU, @{N='Mem(MB)';E={[math]::Round($_.WorkingSet64/1MB,1)}}, Path | Sort-Object CPU -Descending | Select-Object -First 20 | Format-Table -AutoSize
判断标准:
Temp / AppData\Local\Temp / Downloads 的进程 → 🔴 需进一步排查
Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User | Format-Table -AutoSize
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 2>$null | Format-Table -AutoSize
Get-ItemProperty "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 2>$null | Format-Table -AutoSize
判断标准:
Temp、Download、未知目录 的自启动项 → 🔴 需排查
Get-ScheduledTask | Where-Object {$_.State -ne 'Disabled'} | Select-Object TaskName, State, TaskPath | Select-Object -First 50 | Format-Table -AutoSize
判断标准:
C:\Users\<用户名>\AppData\Local\ 的用户计划任务 → ⚠️ 需确认来源
\Microsoft\)→ ✅ 通常安全
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" | Select-Object EnableLUA, ConsentPromptBehaviorAdmin, FilterAdministratorToken | Format-List
EnableLUA = 1 → ✅ 已启用
ConsentPromptBehaviorAdmin = 2(默认)或 3(始终通知)→ ✅ 安全
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" | Select-Object fDenyTSConnections
fDenyTSConnections = 1 → ✅ RDP 已禁用(安全)
fDenyTSConnections = 0 → 🔴 RDP 已开启,需评估风险
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, EnableSMB2Protocol | Format-List
EnableSMB1Protocol = False → ✅ 已禁用
EnableSMB1Protocol = True → 🔴 高危漏洞,需立即禁用
Get-CimInstance Win32_UserAccount | Where-Object {$_.LocalAccount -eq $true} | Select-Object Name, Disabled, PasswordRequired, Description | Format-Table -AutoSize
判断标准:
Administrator / Guest 账户应为 Disabled = True
guofe(当前用户)账户应为 Disabled = False → ✅ 正常
Get-WmiObject -Class Win32_QuickFixEngineering | Sort-Object InstalledOn -Descending | Select-Object -First 10 Description, HotFixID, InstalledOn | Format-Table -AutoSize
判断标准:
Get-Service | Where-Object {$_.Status -eq "Running" -and $_.DisplayName -match "teamviewer|anydesk|vnc|teamviewer|logmein|supremo|rmgrp"} | Select-Object Name, DisplayName, Status | Format-Table -AutoSize
Get-Process | Where-Object {$_.ProcessName -match "teamviewer|anydesk|vnc|teamviewer|logmein|supremo"} | Select-Object Name, Id, Path | Format-Table -AutoSize
判断标准:
扫描完成后,按以下格式整理结果:
🟢 安全状况良好 / 🟡 发现若干风险项 / 🔴 存在高危问题
| 维度 | 状态 | 说明 |
|------|------|------|
| 杀毒软件 | ✅/⚠️/🔴 | ... |
| 防火墙 | ✅/⚠️/🔴 | ... |
| 开放端口 | ✅/⚠️/🔴 | ... |
| 可疑进程 | ✅/⚠️/🔴 | ... |
| 自启动项 | ✅/⚠️/🔴 | ... |
| 计划任务 | ✅/⚠️/🔴 | ... |
| 系统安全配置 | ✅/⚠️/🔴 | ... |
| 用户账户 | ✅/⚠️/🔴 | ... |
| 安全补丁 | ✅/⚠️/🔴 | ... |
| 远程控制软件 | ✅/⚠️/🔴 | ... |
按严重程度列出修复建议。
如用户需要更深度检测,可执行:
# 最近登录失败事件(需提升权限,如权限不足则跳过)
Get-WinEvent -LogName 'Security' -MaxEvents 20 -FilterHashtable @{Id=4625} 2>$null | Select-Object TimeCreated, Id, Message | Format-List
Get-ChildItem "C:\Users\$env:USERNAME\AppData\Local\Temp" -Recurse -Include *.exe,*.dll,*.bat,*.ps1 -ErrorAction SilentlyContinue | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} | Select-Object FullName, LastWriteTime | Sort-Object LastWriteTime -Descending | Select-Object -First 20
Get-NetTCPConnection | Where-Object {$_.State -eq 'Established'} | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess | Select-Object -First 20 | Format-Table -AutoSize
本扫描基于 Windows 原生命令,仅提供系统安全状态的参考性评估,不能替代专业安全软件的全盘扫描。如发现高危问题,请:
(以下由 AI 在实际使用中自动积累,请勿手动删除)
共 1 个版本