GrimthornRedbeard/nitewatch
GitHub: GrimthornRedbeard/nitewatch
NiteWatch 是一款 Windows 端点安全监控工具,通过无内核驱动的本地分析记录出站连接并重建因果链,以通俗语言解释异常行为并提供一键修复。
Stars: 1 | Forks: 0
# NiteWatch
**凌晨3点有人在敲你的门。这就是告诉你谁在敲门。**
[](LICENSE)


NiteWatch 是一款适用于 Windows 的轻量级个人安全助手。它监控着你的
计算机实际在做什么——哪些程序在运行,它们在与谁
通信,它们在触碰哪些文件——当出现异常时,它会
用通俗易懂的语言告诉你事情的来龙去脉,并提供一键修复。
- **谁在通信?** 永久记录每一个出站
连接及其对应进程的日志:哪个程序、哪个服务器、哪个域名、何时——外加该
地址块的归属者及其注册所在的国家/地区。
- **完整脉络。** 点击任意连接即可查看产生它的
因果链:*程序启动 → 查询名称 → 建立连接*。该过程基于
因果事件图重构,按逻辑时钟而非物理时间排序。
- **一键操作。** 告警附带通俗的解释和
一键修复功能——拦截、停止、隔离、从启动项移除——对于可逆的更改,均可执行撤销操作。
- **隐私至上。** 所有分析均在你的本地机器上完成。威胁
情报和地址归属数据是*向下*拉取的;关于你流量的任何信息都*不会向上*发送。
## 检测范围
| 领域 | 示例 |
|---|---|
| **命令与控制(C2)** | 连接已知恶意软件基础设施、程序拨测从未解析过的裸 IP 地址、未签名软件连接新目标、首次与受监控管辖区通信 |
| **持久化** | 从临时文件夹添加自启项、现有启动项被静默重定向、启动劫持(IFEO/AppInit) |
| **勒索软件** | 单个程序跨文件夹重写多个文档、加密式重命名、勒索信、备份数据销毁 |
| **凭证窃取** | 非归属程序读取已保存的密码、SSH 密钥、云凭证或钱包文件 |
噪声控制被视为一项核心功能,而非细枝末节:已验证发布者抑制机制、安装后的学习窗口、基于程序/目标的“始终允许”设置,以及严重级别过滤,确保只有严重的安全发现才会打扰你。
## 状态
已实现最初设计的所有功能;**但尚未在真实硬件上经过长期验证。**
日常使用中的误报率是目前亟待解决的问题。
- 设计:[docs/plans/2026-07-24-nitewatch-design.md](docs/plans/2026-07-24-nitewatch-design.md)
- 阶段计划:[P1](docs/plans/2026-07-25-p1-flight-recorder.md) · [P2](docs/plans/2026-07-25-p2-detections.md)
- Feed 许可(添加源之前请阅读):[docs/feed-licensing.md](docs/feed-licensing.md)
- 已知局限性:[agent/internal/help/known-limitations.md](agent/internal/help/known-limitations.md)
——已被编译进二进制文件中,可在仪表盘的 **Limits** 下阅读,因此它会随构建版本一同发布,而不仅仅是留存在此代码库中
## 运行说明
构建(纯 Go 语言,单一静态 exe,无 CGO):
```
cd agent && CGO_ENABLED=0 go build -o nitewatch ./cmd/nitewatch
```
为 Windows 交叉编译:
```
cd agent && GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o ../dist/nitewatch.exe ./cmd/nitewatch
```
`-trimpath` 非常重要:构建必须是可复现的,且已发布的二进制文件已公开其
SHA-256 哈希值,因此如果在构建时不加此参数,即使源代码完全相同,生成的哈希值也会与
下载页面上的不一致。
`dist/` 是被 git 忽略的构建输出目录。如果需要向他人提供可运行的副本,请将
exe 文件连同 `agent/scripts/run-nitewatch.bat` 一起分发——该启动脚本是
事实来源,它必须与 exe 位于同一目录下,因为它会
自动提权,然后从其所在位置运行 `nitewatch.exe`。
**`dist/` 是提取构建版本的路径,因此每当交付出的内容发生更改时,请务必重新构建。**
存放在那里的过期 exe 从表面上看与最新版本无异,
而且文件的时间戳也起不到辨别作用:Go 会将*提交*时间嵌入二进制文件,
而不是构建时间,因此旧代码的新构建版本与旧代码的旧构建版本看起来是一样的。要检查二进制文件的真实身份,请运行:
```
go version -m dist/nitewatch.exe | grep vcs
```
正在运行的 agent 会在其“关于”面板中报告相同的身份,这在没有安装 Go 的机器上是唯一的检查方式。
**Windows(实时模式)** —— 必须以**提权(管理员)**方式运行;ETW 需要 Administrator 权限:
```
nitewatch.exe --serve
```
或者直接双击 `run-nitewatch.bat`,它会自动为你请求提权。然后
打开 。
**开发/演示(任意操作系统)** —— 重放已记录的追踪数据,无需提权:
```
./nitewatch --replay testdata/traces/basic.jsonl
```
实用参数:`--no-feeds`(跳过威胁情报下载),`--no-recon`(跳过
地址归属数据集),`--rules `(在开发期间从磁盘加载规则包)。其他所有配置均可在仪表盘的 Settings 面板中完成。
## 布局
```
agent/
cmd/nitewatch/ entrypoint and run modes
internal/
source/ telemetry: Windows ETW, and a JSONL replay source for tests
event/ the source-agnostic event vocabulary
graph/ causal event graph (GoRapide poset) + rolling window
ledger/ SQLite flight recorder: connections, alerts, actions
detect/ detection engine, detectors, suppression gates
filewatch/ file classification and encryption-burst tracking
autostart/ autostart snapshot + diff
intel/ threat-intel feeds, matched offline
recon/ offline address ownership (ASN, country)
respond/ remediation actions and undo
notify/ notification gating and Windows toasts
api/ loopback HTTP + embedded dashboard
rules/ shipped detection rule packs (YAML), embedded in the binary
testdata/traces/ replay fixtures
```
## 第三方数据
请参阅 [NOTICE](NOTICE) 获取必需的归属声明。
## 许可证
Copyright © 2026 Threat Tape LLC.
NiteWatch 是自由软件,基于 **GNU General Public License
version 3 or later** 许可证发布。完整文本请参阅 `LICENSE`。
采用此许可证与其说是偏好,不如说是传承:该 agent 所依赖的 Windows
事件追踪消费者(`github.com/0xrawsec/golang-etw`)
基于 GPL-3.0,将其进行链接会使整个程序变为 GPL-3.0。在发布二进制文件之前(而非之后),请务必检查依赖项的许可证。
每个源文件都包含 SPDX 标头。`agent/internal/help/licenses.md` 会
被编译进二进制文件中,并显示在仪表盘的 **Limits & roadmap**
面板内,这正是 GPL 要求交互式程序放置法律声明的地方,也是威胁情报 feed 要求显示其归属声明的地方。
第三方组件及其许可证均已列在该文档中。简述如下:golang-etw 和 golang-utils 基于 GPL-3.0,gorapide 基于 MIT,
golang.org/x/sys 和 modernc.org SQLite 技术栈基于 BSD-3-Clause。
标签:EDR, EVTX分析, IP 地址批量处理, 日志审计, 系统运维, 终端安全, 网络信息收集, 脆弱性评估