cdburgess75/ShellKnight
GitHub: cdburgess75/ShellKnight
一款企业级 PowerShell 端点安全修复工具,通过 8 个引擎自动清除 PUP、恶意软件持久化机制并进行安全加固与合规评估。
Stars: 1 | Forks: 0
## 什么是 ShellKnight?
ShellKnight 是一款完全静默、无界面的 PowerShell 端点修复工具,专为 MSP 和 RMM 部署而设计。它运行 8 个智能引擎,涵盖从 PUP 移除和恶意软件 IOC 检测到强化检查、合规性评估和安全分级等所有内容——整个过程无需任何用户交互。
由 **ParaTech LLC** 构建和维护。
ShellKnight 是 **[Fortress AI](https://github.com/cdburgess75/ShellKnight)** 平台的一个组件——这是一个正在构建的完整 MSP 管理技术栈,旨在取代 Datto RMM + Datto EDR。
## 目录
1. [功能](#features)
2. [引擎概述](#engine-overview)
3. [快速开始](#quick-start)
4. [配置](#configuration)
5. [输出与报告](#output--reporting)
6. [评分系统](#grading-system)
7. [RMM 部署](#rmm-deployment)
8. [系统要求](#requirements)
9. [版本历史](#version-history)
## 功能
- **8 引擎模块化修复流水线**
- 从 [Neo23x0/signature-base](https://github.com/Neo23x0/signature-base) 动态下载 IOC
- 支持 API key 的 MalwareBazaar SHA256 哈希查询
- 多层 AV/EDR 检测 — Datto AV、Huntress EDR、Windows Defender、COMODO、N-able 等
- 远程访问工具全面清点 — ScreenConnect(所有实例)、TeamViewer、AnyDesk、MeshAgent 等
- 针对在勒索软件攻击链中被积极利用的工具提供 **[RISKWARE-RAT]** 分类
- 包含差异报告(与上次运行进行比较)的 A–F 安全与性能评分
- 检测到医疗保健软件时进行 HIPAA 技术保障措施评估
- 检测到执法软件时进行 CJIS 合规性检查
- CIS Benchmark Lite (Level 1) — 每次运行检查 9 项关键控制
- PowerShell 脚本块日志记录 — 启用 4104 审计并扫描混淆行为
- Windows Defender 威胁历史记录,并在检测到 IOC 时自动进行快速扫描
- 引擎进度指示器 — 实时显示每个引擎的运行时间
- 过时配置文件检测,支持安全的可选自动删除
- 非活动账户自动禁用,具有可配置的阈值和服务器保护
- 基于存在时间的临时文件清理 — 仅删除早于可配置阈值的文件
- 大型文件查找器 — 标记 Outlook OST/PST 问题、ISO 文件、意外的大型文件
- SMBv1、LLMNR、NetBIOS、NLA — 检测并支持可选的自动修复
- ScreenConnect 流氓实例检测与移除
- 每次运行生成 JSON 输出,便于进行全舰队趋势追踪
- 零依赖 — 纯 PowerShell 编写,无需外部模块
- 兼容 PowerShell 3.0 – 7.x
## 引擎概述
ShellKnight 依次运行 8 个引擎。每个引擎均可独立配置启用/禁用。
| 引擎 | 名称 | 功能描述 |
|--------|------|--------------|
| 1 | Intel Engine | 从 Neo23x0 下载最新的哈希、文件名和 C2 IOC。离线时回退到硬编码的 IOC。 |
| 2 | Assessment Engine | 机器基线 — 硬件、OS、正常运行时间、域、AV/EDR 检测、BitLocker、CVE 检查 |
| 3 | Hardening Engine | 密码策略、RDP/NLA、SMBv1、LLMNR、NetBIOS、防火墙、本地管理员审计、进程审计 |
| 4 | Process Engine | 终止恶意软件进程、移除恶意服务、移除恶意计划任务 |
| 5 | Persistence Engine | Run/RunOnce 注册表键、启动文件夹、WMI 订阅、浏览器策略、Defender 排除项 |
| 6 | Filesystem Engine | 临时文件/缓存清理、浏览器扩展移除、PUA 注册表键、过时配置文件报告、大文件查找器 |
| 7 | Detection Engine | 木马/RAT IOC 扫描、RiskWare 检测、MalwareBazaar 哈希查询、hosts 文件、勒索软件金丝雀、网络连接、远程访问清单 |
| 8 | Reporting Engine | Windows Update 名称、趋势追踪、事件日志 IOC 检查 (7045)、USB 审计、近期软件、HIPAA/CJIS/CIS 合规性、Defender 历史记录 |
## 快速开始
**直接从 GitHub 运行 — 粘贴到提升权限的 PowerShell 命令提示符中:**
```
Set-ExecutionPolicy Bypass -Scope Process -Force; $f="$env:TEMP\ShellKnight.ps1"; irm https://raw.githubusercontent.com/cdburgess75/ShellKnight/main/ShellKnight.ps1 -OutFile $f; & $f
```
**或者如果已经保存在磁盘上:**
```
# 以 Administrator 身份运行
Set-ExecutionPolicy Bypass -Scope Process -Force
.\ShellKnight.ps1
```
输出将写入:
- **日志:** `C:\ProgramData\ShellKnight\Logs\ShellKnight_YYYY-MM-DD_HHMM.log`
- **JSON:** `C:\ProgramData\ShellKnight\JSON\ShellKnight_YYYY-MM-DD_HHMM_HOSTNAME.json`
## 配置
所有配置都位于脚本顶部,位于标记清晰的各个部分中。无需外部配置文件。
```
# --- EMAIL 警报 ---
$SK_Email_Enabled = $false
$SK_Email_Server = 'smtp.office365.com'
# --- MALWAREBAZAAR ---
$SK_MalwareBazaar_Enabled = $true
$SK_MalwareBazaar_ApiKey = 'your-api-key-here'
# --- 扫描深度 ---
$SK_ScanDepth = 'Standard' # Standard, Deep, Compliance
# --- 加固选项 ---
$SK_DisableSMBv1 = $false # Auto-disable SMBv1 when found
$SK_DisableLLMNR = $false # Disable LLMNR via registry
$SK_EnforceRDP_NLA = $false # Enforce NLA on RDP
$SK_DisableNetBIOS = $false # Disable NetBIOS on all adapters
# --- 账户管理 ---
$SK_AutoDisableInactiveAccounts = $false # Auto-disable inactive accounts
$SK_AutoDisableThresholdDays = 547 # 18 months default
$SK_AutoDisableOnServers = $false # Never auto-disable on servers
# --- 过期配置文件删除 ---
$SK_DeleteStaleProfiles = $false # Auto-delete stale profiles
$SK_DeleteStaleProfileDays = 1095 # 3 years default
# --- SCREENCONNECT ---
$SK_ScreenConnect_InstanceID = '' # Your managed SC instance ID
$SK_RemoveRogueScreenConnect = $true # Remove non-matching AppData instances
```
## 输出与报告
### 屏幕输出
| 标签 | 颜色 | 含义 |
|-----|-------|---------|
| `[SUCCESS]` | 绿色 | 操作成功完成 |
| `[WARN]` | 黄色 | 需要注意,未采取行动 |
| `[FAILED]` | 红色 | 尝试了操作但失败 |
| `[IOC]` | 品红色 | 入侵指标 — 需要分析师审查 |
| `[HARDEN]` | 青色 | 已应用强化操作 |
| `[RISKWARE-RAT]` | 品红色 | 在勒索软件攻击链中被利用的远程访问工具 |
### 退出代码
| 代码 | 含义 |
|------|---------|
| 0 | 干净 — 未发现问题 |
| 1 | 错误或操作失败 |
| 2 | 存在 IOC 警报 — 需要分析师审查 |
## 评分系统
ShellKnight 为安全性和性能分配 A–F 评级。
### 安全性评级扣分
| 发现项 | 扣分 |
|---------|-----------|
| 发现 IOC | 每项 -15(最多 -50) |
| 未检测到 AV | -25 |
| Defender 被禁用 | -20 |
| OS 已停止支持 | -20 |
| 启用了 SMBv1 | -20 |
| BitLocker 关闭 | -15 |
| Windows Update 过时 | -15 |
| 无 NLA 的 RDP | -15 |
| 密码最短长度为 0 | -20 |
| 密码少于 8 位 | -10 |
| 密码少于 12 位 | -5 |
### 性能评级扣分
| 发现项 | 扣分 |
|---------|-----------|
| 磁盘可用空间 < 5 GB | -40 |
| 磁盘可用空间 < 10 GB | -25 |
| RAM < 4 GB | -30 |
| 运行时间 > 60 天 | -20 |
| 电脑使用年限 > 5 年 | -15 |
## RMM 部署
### Datto RMM / CentraStage
使用以下内容创建一个 PowerShell Component:
```
Set-ExecutionPolicy Bypass -Scope Process -Force; $f="$env:TEMP\ShellKnight.ps1"; irm https://raw.githubusercontent.com/cdburgess75/ShellKnight/main/ShellKnight.ps1 -OutFile $f; & $f
```
- 运行身份:`SYSTEM`
- 捕获 stdout 以供报告审查
- 在退出代码为 `2`(存在 IOC)时发出警报
该 Component 在每次运行时都会从 GitHub 下载最新版本到 `%TEMP%`,因此全舰队范围内的更新是即时的——无需重新上传组件。
ShellKnight 完全静默且无界面——无需用户交互,没有弹窗,也不会自动触发重启。
## 系统要求
- Windows 7 / Server 2008 R2 或更高版本
- PowerShell 3.0 或更高版本
- 管理员 / SYSTEM 权限
- 需要互联网连接以下载 Intel Engine IOC(如果不可用则回退到硬编码的 IOC)
## 版本历史
| 版本 | 日期 | 亮点 |
|---------|------|------------|
| v1.05 | 2026 年 5 月 | 全舰队反馈批次 — NVDisplay CIM 回退、SMBv1 任务白名单、挖掘程序模式词边界修复、Datto EDR/HP 打印机 Event 7045 白名单、IOC 计数器修复、Domain Admins 抑制、系统配置文件排除、注册表扫描优化 |
| v1.04 | 2026 年 5 月 | 误报修复:Intel IOC 文件名匹配现在会在终止前进行路径检查——合法的系统/供应商二进制文件(例如 NVIDIA)不再被标记 |
| v1.03 | 2026 年 5 月 | PS 3.0/4.0 兼容性(`::new()` → `New-Object`)、`??` 操作符修复、ErrorActionPreference 稳定化、Phase 6 null 保护 |
| v1.02 | 2026 年 5 月 | Log-Fail 计数器修复、远程访问匹配修复、屏幕上的执行摘要 |
| v1.01 | 2026 年 5 月 | 从头开始的 8 引擎重写 — Intel、Assessment、Hardening、Process、Persistence、Filesystem、Detection、Reporting |
| v0.79 | 2026 年 5 月 | Phase 进度指示器、CIS Benchmark Lite、启动影响分类 |
| v0.78 | 2026 年 5 月 | Defender 集成、PS 脚本块审计、magic bytes 审计、HIPAA/CJIS 检查、WU 名称 |
| v0.77 | 2026 年 5 月 | 风险差异报告、大型文件查找器、浏览器凭据检查、N-able 检测、HIPAA/可接受使用 |
| v0.76 | 2026 年 5 月 | SMBv1/LLMNR/NLA/NetBIOS 自动修复、MBSetup/PCDr 白名单、COMODO 检测 |
| v0.75 | 2026 年 5 月 | RiskWare 检测 (GameHack/CoinMiner/Dell CVE)、SC AppData 扫描、31 个新的 PUA 目标 |
| v0.74 | 2026 年 5 月 | 强化操作分离、过时配置文件删除、基于存在时间的临时文件清理、评分改进 |
| v0.73 | 2026 年 5 月 | 账户自动禁用、14 个新的 PUA 目标、勒索软件/hosts/配置文件白名单 |
| v0.72 | 2026 年 5 月 | 扫描深度框架、低磁盘故障保护、Phases 22-28、性能上限 |
| v0.71 | 2026 年 5 月 | AV 去重、Dell CPM WMI 白名单、简化页眉、INFO 从屏幕隐藏 |
| v0.70 | 2026 年 5 月 | 路径重构、MalwareBazaar Auth-Key、Datto AV 服务名称修复 |
| v0.69 | 2026 年 5 月 | 文件顶部配置、email/syslog 联调、PUA 扩展、前后摘要 |
| v0.68 | 2026 年 5 月 | ShellKnight 重命名、全面健康评估、A-F 评级、JSON 输出 |
完整更新日志:[CHANGELOG.md](CHANGELOG.md)
## 作者
**C. David Burgess**
⭐ 如果 ShellKnight 帮助您保持了机器的整洁,请给这个仓库点个 Star!
标签:AI合规, IPv6, Libemu, OpenCanary, PowerShell, 企业安全, 子域名枚举, 恶意软件清理, 系统安全, 终端安全, 网络资产管理, 自动化运维