alivirgo/SentryLoom

GitHub: alivirgo/SentryLoom

一款开源离线优先的 Windows 端点安全与杀毒工具,提供本地恶意软件扫描、行为监控、加密隔离及可选的自托管 Fleet 管理。

Stars: 1 | Forks: 0

SentryLoom shield logo

SentryLoom

开源、离线优先的 Windows 端点安全工具,提供本地杀毒扫描、行为监控、加密隔离、社区威胁情报,以及可选的本地化托管 Fleet 管理。

Tests CodeQL Apache 2.0 license Windows Node.js 24+

SentryLoom 是一个透明的 Windows 杀毒软件、端点检测与响应 (EDR) 学习平台、本地恶意软件扫描器、勒索软件监控器,以及自托管的安全运营控制台。它专为个人、实验室、小型企业、学校、安全研究人员和组织设计,帮助他们了解并控制其端点遥测数据的流向。 它完全可以离线工作以提供本地保护。将端点连接到 SentryLoom HQ 是可选的、明确的、使用证书锁定的,并且是自托管的。 管理与运营资源: - [管理演示文稿](docs/management/SentryLoom-Management-Presentation.pptx) - [完整的端点和 HQ 用户指南](docs/guides/SentryLoom-Complete-User-Guide.docx) - [连接弹性测试计划](docs/CONNECTION-RESILIENCE.md) ## 为什么选择 SentryLoom - **本地优先安全:** 扫描、隔离、审计记录、信誉查找和策略评估都在端点本地进行。 - **无强制性云端:** 独立端点不会联系 SentryLoom HQ。 - **可审计的实现:** 端点和服务器使用轻量依赖的 JavaScript、PowerShell、C#、HTML 和 CSS,而不是不透明的代理程序。 - **保守的响应策略:** 确认的签名可能会被隔离;启发式和行为信号默认仅进行报告,以减少破坏性的误报。 - **对商业友好的开源:** Apache License 2.0 允许个人、学术、内部、托管和商业用途的使用、修改和分发,但需遵守其声明要求。 - **本地化托管 Fleet 管理:** HQ 提供设备批准、健康遥测、警报、白名单响应操作以及签名的客户端更新。 ## 核心功能 ### 端点预防与检测 - 快速扫描、全盘扫描、自定义路径扫描、启动项扫描、活动进程扫描和可移动驱动器扫描。 - SHA-256 精确签名、有界内容规则、PE 元数据检查,以及保守的文件名/格式启发式扫描。 - 可选的 ClamAV 验证,支持超时和卡死进程终止。 - 递归固定驱动器变更监控,以及对新 Downloads 的稳定深度扫描。 - 进程映像、父/子进程、持久化、计划任务、服务、WMI、勒索软件金丝雀、写入突发、安全事件、可移动媒体和防火墙完整性监控。 - TCP 连接元数据和 Windows DNS 缓存与本地网络指标 (IOC) 的关联。SentryLoom 不会解密 TLS 或检查数据包 Payload。 - 通过 Windows Defender Firewall 选择性拦截高可信度 IP。 ### 遏制、完整性与隐私 - 采用 AES-256-GCM 身份验证的隔离区,具有独占的临时文件和安全的还原行为。 - HMAC 链式、防篡改的审计记录,具备受损链条的证据保留功能。 - Ed25519 验证的离线签名包。 - AES-256-GCM 加密的端点凭证和每台设备独有的 HQ 凭证。 - `SYSTEM` 拥有的、仅限读取/执行的安装目录树,可阻止用户和管理员直接修改和删除。受管理的端点需要当前的 HQ 维护密码才能打开 5 分钟的维护窗口;权限会自动重新锁定。 - 仅限回环 (Loopback) 的本地仪表盘,具有启动令牌、HttpOnly 会话、CSRF 保护、严格的 Content Security Policy,并且没有第三方 UI 资源。 - 可逆的 Windows DNS-over-HTTPS 配置文件和 USB 存储策略控制。 ### 社区威胁情报 - ClamAV 官方数据库。 - MalwareBazaar 精确哈希。 - URLhaus Payload 哈希。 - Feodo Tracker 僵尸网络命令与控制 (C2) 指标。 - ThreatFox 哈希、域名、URL、IP 和 IP:port 指标。 - 基于磁盘的 SQLite 索引,适用于数百万个精确指标。 独立提供商凭证由操作员输入并在本地加密。受管理的部署仅将 abuse.ch Auth-Key 保存在 HQ 上的 Windows DPAPI 中;客户端向实施证书锁定的 HQ 网关进行身份验证,且绝不会收到该密钥。源代码控制中不存储任何提供商凭证。每个提供商保留其各自的数据许可和使用条款。 ### SentryLoom HQ - HTTPS 管理服务,具有自生成的 TLS 和证书锁定功能。 - LAN 发现和管理员批准的端点注册。 - 轮换、可撤销的 HQ 维护密码,用于关键策略更改、保护禁用、HQ 断开连接和卸载。 - 端点发起的维护请求,具有严格的 20 秒批准窗口和特定于端点的加密交付。 - 独立、可撤销的设备 Bearer Token。 - 两秒一次的净化端点遥测和 60 秒的离线检测。 - 针对威胁、采集器失败、命令失败和端点过期的 Fleet 警报。 - 仅限白名单命令:扫描、保护修复、数据库更新和签名的客户端更新。没有任意的远程 Shell API。 - 在 Wi-Fi 丢失、VPN 更改、睡眠、休眠、服务器中断和进程重启后自动恢复。 - 签名的更新清单绑定到包哈希、大小、版本、Authenticode 证书指纹和证书主题。 - 一键发布来自经过权限检查的 HQ 暂存文件夹的最新签名 Setup,随后对符合条件的客户端进行无人值守部署。 - 使用客户端报告的物理 MAC/子网元数据和 LAN 范围的 UDP magic packet 进行 Wake-on-LAN 唤醒。 ## 架构 ``` flowchart LR subgraph Endpoint["Windows endpoint"] FS["Files, processes, DNS, TCP, Windows events"] --> Engine["Security engine"] Intel["Local signatures + SQLite threat index"] --> Engine Engine --> Scan["Scanner and detection policy"] Scan --> Vault["AES-256-GCM quarantine"] Engine --> Audit["Tamper-evident audit chain"] Engine --> LocalAPI["Authenticated loopback API"] LocalAPI --> LocalUI["Local HTML/CSS/JS console"] Tray["Native C# launcher + tray status"] --> LocalAPI end Engine -- "optional pinned HTTPS telemetry" --> HQAPI["SentryLoom HQ API"] HQAPI --> HQDB["SQLite fleet state"] HQAPI --> HQUI["HQ HTML/CSS/JS console"] HQAPI -- "allowlisted commands only" --> Engine ``` 完整的信任边界和数据流讨论请参见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。 ## 代码工作原理 ### 端点后端 | 领域 | 主要文件 | 职责 | | --- | --- | --- | | 协调 | `src/lib/engine.js` | 启动保护、扫描、监控、HQ 管理、更新、隔离、策略和净化遥测。 | | 扫描 | `scanner.js`, `clamav-engine.js`, `scan-targets.js` | 有界遍历、哈希、规则评估、扫描模式、ClamAV 执行、进度和取消。 | | 实时保护 | `protection.js` | 固定驱动器监视器、防抖动、并发限制、Downloads 稳定化和检测策略。 | | 行为监控 | `advanced-monitoring.js`, `windows-telemetry.js` | 进程、持久化、勒索软件、事件日志、可移动媒体和防火墙观察。 | | 网络安全 | `network-monitor.js`, `firewall-policy.js` | TCP/DNS IOC 关联和选择性 Windows Firewall 强制执行。 | | 威胁情报 | `threat-feeds.js`, `threat-updater.js`, `threat-index.js` | HTTPS 提供商客户端、解析、速率限制、事务性导入和本地信誉查找。 | | 遏制 | `quarantine.js`, `key-store.js` | 身份验证加密、元数据、还原、删除和本地密钥生成。 | | 完整性 | `audit-log.js`, `signature-store.js` | 链式审计记录和 Ed25519 签名包信任。 | | HQ 客户端 | `hq-client.js`, `hq-credential-store.js` | 发现、注册、TLS 锁定、心跳、重连退避、命令和加密凭证。 | | Windows 控制 | `windows-dns.js`, `windows-usb-control.js`, `windows-notifications.js` | 范围化的 UAC 助手、可逆的系统更改和可操作的通报。 | | 本地 API/CLI | `src/server.js`, `src/cli.js` | 经过身份验证的回环 API、仪表盘会话、命令、自动化和退出代码。 | ### 端点前端与原生 Shell | 技术 | 位置 | 职责 | | --- | --- | --- | | HTML | `src/ui/index.html` | 无障碍的概述、扫描、隔离、活动、策略、HQ、DNS、USB 和威胁情报视图。 | | CSS | `src/ui/styles.css` | 无需外部 UI 框架的响应式暗色/亮色界面。 | | 浏览器 JavaScript | `src/ui/app.js` | API 调用、状态渲染、扫描控制、设置、警报、输出查看器和重连用户体验。 | | C# / WinForms | `launcher/SentryLoomLauncher.cs` | 无窗口进程启动、单例 GUI 还原、系统托盘健康图标和有界的后台输出捕获。 | | PowerShell | 根目录 `*.ps1` 文件 | 计划任务、提权边界、安装程序注册、DNS/USB 助手、更新和彻底卸载。 | ### HQ 后端 | 文件 | 职责 | | --- | --- | | `server/src/server.js` | HTTPS/API 路由、管理员会话、CSRF、设备身份验证、注册、警报、遥测、命令、更新和静态 UI。 | | `server/src/store.js` | SQLite schema、设备/Token 记录、遥测历史、批准队列、命令、撤销和密码哈希。 | | `server/src/update-service.js` | 签名的更新清单验证和包完整性检查。 | | `server/src/init.js` | 首次运行配置、PBKDF2 密码哈希、TLS 元数据和数据库初始化。 | | `server/src/main.js` | 配置加载、监听器启动、发现、保留和优雅关闭。 | ### HQ 前端 `server/public/` 是一个无框架的 HTML/CSS/JavaScript 运营控制台。 它渲染注册批准、Fleet 在线状态、活动警报、端点态势、扫描趋势、隔离元数据、远程命令、客户端版本发布和服务器可达性。浏览器 API 仅与同源 HQ API 通信。 ## 语言和平台组件 | 语言或技术 | 用途 | | --- | --- | | JavaScript / Node.js 24+ | 端点引擎、扫描器、本地 API、CLI、HQ 服务、测试、指标自动化。 | | HTML5 和 CSS3 | 端点和 HQ 用户界面。 | | 浏览器 JavaScript | 无运行时 UI 依赖的交互式仪表盘。 | | PowerShell | Windows 管理、计划任务、设置、签名、DNS、USB、更新和生命周期脚本。 | | C# / WinForms | 原生 Windows 启动器、通知区域图标和不可见的后台进程宿主。 | | SQLite | 通过 Node 内置的 SQLite API 进行本地威胁情报和 HQ Fleet 持久化。 | | Inno Setup | 独立的端点和 HQ Windows 安装程序。 | | Mermaid / SVG | 架构和社区增长可视化。 | 该运行时特意没有 npm 包依赖。 ## 安装与运行 ### 系统要求 - Windows 10/11 或 Windows Server 2022+。 - Node.js 24 或更高版本。 - PowerShell 5.1 或 PowerShell 7。 - 可选:Cisco ClamAV,用于扩展扫描。 - 需要管理员权限以进行系统级监控、安装、DNS、USB、防火墙或 HQ 设置。 ### 从源码运行端点 ``` git clone https://github.com/alivirgo/SentryLoom.git cd SentryLoom npm test node .\src\cli.js dashboard ``` 注册无窗口的驻留保护、每日快速扫描和每周空闲全盘扫描: ``` .\Register-SentryLoom.ps1 -SystemWideProtection ``` 当可连接到 HQ 时,通知区域图标为绿色,否则为红色。双击它可恢复控制台。后台输出可在 **Activity → Resident command output** 下找到。 ### 从源码运行 HQ 在提权的 PowerShell 窗口中运行: ``` cd .\server .\Initialize-SentryLoomHq.ps1 ` -PublicHost security-hq.example.local ` -HqName "Security Operations" ` -RegisterStartupTask ``` 安装程序会创建 TLS 证书、SQLite 数据库、防火墙规则和自重启的启动任务。打包的 HQ 安装程序会要求管理员选择并确认密码;除非在初始化过程中提供了 `SENTRYLOOM_HQ_SETUP_ADMIN_PASSWORD`,否则源码安装程序会自动生成一个密码。 HQ 管理员可以从 **Rotating endpoint passwords** 面板生成长的一次性维护密码。密码仅显示一次,仅以哈希形式存储,在 5-60 分钟后过期,具有有限的使用次数,并且可以立即撤销。或者,当管理员在线时,端点也可以请求批准;该请求在 20 秒后过期,其一次性密码会为发起请求的端点进行 RSA 加密。 受支持的卸载程序在解锁安装目录树之前会要求输入该密码。要进行手动文件维护,请从“开始”菜单打开 **Authorize SentryLoom File Maintenance**,批准 UAC,并输入当前的维护密码。Windows 资源管理器会显示拒绝访问的消息来阻止直接删除;如果没有经过签名的文件系统微过滤驱动程序 (minifilter driver),Windows 无法用 SentryLoom 的密码对话框替换该消息。 安装程序升级会保留端点和 HQ 的运行状态。在替换应用程序文件之前,安装程序会创建一个仅限管理员访问的备份,其中包含设置、加密凭证、注册信息、隔离区、日志、记录、威胁数据、证书、数据库、更新和策略元数据。运行时配置使用版本化的 schema 迁移,保留现有值并仅添加新的默认值,除非版本明确记录了更改的字段。 端点状态在 `%ProgramData%\SentryLoom` 中以机器范围共享。安装程序会从执行安装的管理员或活动桌面用户迁移旧版的单用户状态,以便后台代理、托盘和 GUI 保持一个设备身份和一个 HQ 注册。驻留保护在 Windows 启动时以机器帐户启动;通知区域图标在交互式桌面会话中单独运行。 当安装程序成功向明确输入的 HQ URL 提交注册请求时,该服务器将成为新的管理目标。只有在新目标接受请求后,才会删除先前 HQ 的保留凭证和连接器状态。这可以防止升级后的端点在向一台计算机提交批准的同时,静默重新连接到旧地址。 HQ 提供离散的服务器策略控制,包括 30、90 或 365 天的数据保留、端点离线警报延迟、管理员会话生命周期、失败登录速率限制、默认维护密码生命周期/使用次数,以及受信任签名客户端更新的自动部署。 ### CLI ``` sentryloom dashboard [--no-open] [--port 3210] sentryloom quick|full|startup|processes|external [--json] [--no-quarantine] sentryloom scan [--json] [--no-quarantine] sentryloom protect [path ...] sentryloom status [--json] sentryloom quarantine list|restore|delete sentryloom signatures status|trust|import sentryloom update [all|clamav|malwarebazaar|urlhaus|feodotracker|threatfox] sentryloom ioc lookup sentryloom dns status|apply|restore sentryloom firewall status|clear sentryloom audit verify sentryloom hq discover|status|disconnect ``` 扫描退出代码:`0` 表示干净,`1` 表示操作错误,`2` 表示检测到威胁。 ## 构建安装程序 未签名的开发包: ``` .\build\Build-Release.ps1 -AllowUnsignedDevelopmentBuild ``` 使用 PFX 的签名包: ``` $password = Read-Host "PFX password" -AsSecureString .\build\Build-Release.ps1 ` -PfxPath C:\secure\code-signing.pfx ` -PfxPassword $password ` -ExpectedPublisher "Your Organization" ``` 私钥、PFX 文件、生成的安装程序、编译的可执行文件、数据库、运行时状态和加密凭证存储均已通过 `.gitignore` 排除。切勿提交签名材料。 ## 测试 ``` npm test npm run check ``` 该套件涵盖扫描、隔离、签名、审计恢复、Feed 解析器、HQ 注册/身份验证、警报、重连行为、本地仪表盘安全性、密码处理、签名更新和 Windows 解析器。测试使用临时数据目录和无害的行业测试标记。 ## 安全与责任使用 - 请查阅 [SECURITY.md](SECURITY.md) 了解已实施的安全措施、限制、加固优先级和私下报告漏洞的流程。 - 请查阅[隐私声明](PRIVACY.md)和[代码签名策略](CODE_SIGNING_POLICY.md)。 - 请勿将真实的恶意软件、隔离对象、端点日志、凭证、证书、个人文件或客户遥测数据上传到公开问题中。 - SentryLoom 不包含任意远程 Shell,也不应被修改为远程 Shell。 - 社区 Feed 的使用可能受特定于提供商的合理使用或商业条款的约束,独立于 Apache 2.0 软件许可之外。 ## 许可证 版权所有 2026 NUC7 Studios 和 SentryLoom 贡献者。 根据 [Apache License 2.0](LICENSE) 授权。您可以根据许可条款使用、修改、分发、托管和销售基于 SentryLoom 的软件。该许可证包含明确的专利授权。除惯例标明外,产品名称和商标未获得许可。 SentryLoom 旨在使端点防御更加本地化、易于理解和协作——通过每次经过仔细审查的贡献来实现。
标签:AI合规, DNS 反向解析, EDR, IP 地址批量处理, MITM代理, 勒索软件监控, 威胁情报, 开发者工具, 数据可视化, 终端安全, 脆弱性评估, 自定义脚本, 行为监控