amosroger91/First-On-Scene

GitHub: amosroger91/First-On-Scene

一款面向 MSP 的免费开源端点安全事件应急响应分诊工具,在完全离线且零依赖的条件下采集取证工件并给出确定性判定结果。

Stars: 1 | Forks: 0

First-On-Scene

First-On-Scene

The free, open-source incident-response triage toolkit for MSPs.

Collects forensic artifacts, decides All Clear / Monitor / Problem Detected with a deterministic engine, and seals the evidence — fully offline, CJIS-ready, RMM-native.

license platforms ai egress

## 🚨 怀疑机器被入侵?运行此命令。 你的设备上安装了 NinjaOne / ScreenConnect,并怀疑可能已被攻破。请在目标机器上运行这个**单一且自包含的命令**(在本地运行,或者直接粘贴到你的 RMM / ScreenConnect 运行命令窗口中)。它**无需安装任何依赖**,在分析期间**不会发起任何网络调用**,并会输出明确的判定结果——同时它还能标记出那些并非由你安装的远程访问软件。 ``` $p="$env:TEMP\Invoke-FosTriage.ps1"; iwr "https://raw.githubusercontent.com/amosroger91/First-On-Scene/main/deploy/standalone/Invoke-FosTriage.ps1" -OutFile $p -UseBasicParsing; & $p -ExpectedRemoteTools 'NinjaOne,ScreenConnect' ``` 它会输出如下控制台判定结果: ``` ============================================================ FIRST-ON-SCENE :: PROBLEM_DETECTED (Incident) HOST: WS-01 SCORE: 45 REASON: UNAUTHORIZED_REMOTE_ACCESS ============================================================ Remote-access tools found: [expected] ScreenConnect / ConnectWise Control (process,service) [UNAUTHORIZED] RustDesk (installed) ============================================================ Report: C:\ProgramData\FirstOnScene\cases\...\Incident_Report_*.html ``` 它将以 `0`(无异常)/ `10`(监控)/ `20`(事件)/ `21`(数据泄露)作为退出代码退出,以便你的 RMM 根据不同结果执行分支逻辑,并且它会封装一个完整的取证案例文件夹(包含数据包 + SHA-256 清单 + 证据监管链)。物理隔离 / CJIS 环境?请预先下载单个文件,而不是使用 URL——请参阅[物理隔离指南](docs/DEPLOYMENT_AIRGAPPED.md)。 该脚本位于 [`deploy/standalone/Invoke-FosTriage.ps1`](deploy/standalone/Invoke-FosTriage.ps1)。 ## 为什么 MSP 专业人员会将其保留在工具箱中 - **结论明确,拒绝噪音。** 确定性的、基于 MITRE ATT&CK 映射的规则引擎可产生明确的判定结果和评分——经过专门调优,避免在健康的机器上因误报而导致工具“狼来了”。 - **真正的 CJIS 就绪。** 默认情况下零网络出站流量。可选的 AI 仅限**本地运行**(Ollama,锁定在回环地址)。取证数据绝不离开端点。请参阅 [CJIS 合规态势](docs/CJIS_COMPLIANCE.md)。 - **取证严谨可靠。** 每个案例都通过 SHA-256 **清单**和防篡改的哈希链式**证据监管链**进行封装。哪怕修改一个字节,验证也会失败。 - **端点零依赖。** Windows 上运行纯 PowerShell 5.1,Linux/macOS 上运行纯 Bash + jq。你进行取证的设备上无需安装任何额外软件。 - **RMM 原生支持。** 清晰的退出代码 + 自定义字段输出。提供一流的 [NinjaOne](docs/DEPLOYMENT_NINJAONE.md)、[通用 RMM](docs/DEPLOYMENT_RMM.md) 和[物理隔离](docs/DEPLOYMENT_AIRGAPPED.md)部署支持。 - **免费开源。** MIT 许可证。所有工具均免费且开源。无需 API 密钥,无需 SaaS,无单节点授权成本。 ## 快速开始 ### Windows(以管理员身份运行 PowerShell) ``` .\scripts\win\fos.ps1 ``` ### Linux / macOS(需要 jq) ``` sudo bash scripts/nix/fos.sh ``` 这条单一命令会运行整个 pipeline 并输出判定结果。退出代码如下: | 退出代码 | 判定结果 | 含义 | |---|---|---| | `0` | ALL_CLEAR | 无需采取行动的异常 | | `10` | MONITOR | 值得关注的低可信度发现 | | `20` | PROBLEM_DETECTED | 事件 | | `21` | PROBLEM_DETECTED | 数据泄露 | | `1` | error | 运行失败 | ## 产出内容 每次运行都会在 `results//` 目录下创建一个**封装好的案例文件夹**: ``` bundle.json Raw collected artifacts (read-only collection) findings.json Deterministic verdict + scored, ATT&CK-mapped findings (machine-readable) findings.md Human-readable findings Incident_Report_*.html Branded, shareable report manifest.json SHA-256 of every evidence file chain_of_custody.log Tamper-evident, hash-chained audit trail Steps_Taken.txt Append-only action log ``` ## 工作原理 ``` ┌──────────────────────┐ ┌───────────────────────────┐ endpoint │ COLLECTOR (native) │ bundle │ ANALYZER (deterministic) │ (read-only)│ PowerShell / Bash ├───────▶│ rule engine + scoring │ │ zero deps, zero net │ .json │ verdict + classification │ └──────────────────────┘ └─────────────┬─────────────┘ │ ┌────────────────────────────────┼───────────────────────┐ ▼ ▼ ▼ findings.json / .md HTML report decisive action (+ optional LOCAL AI (branded) (All Clear / narrative, advisory) Problem Detected + your hook) ``` - **Collector**(收集器)运行在(可能被入侵的)端点上。只读操作,无依赖,无网络外发。 - **Analyzer**(分析器)可运行在任何地方——在端点上或干净的分析员工作站上——并掌握最终判定结果。 - **AI 是可选的、仅限本地运行且仅作参考**——它会生成一段通俗易懂的英文叙述,但绝不改变判定结果。[设置指南](docs/AI_LOCAL_SETUP.md)。 检测规则位于 [`rules/detections.json`](rules/detections.json) 中——带有版本控制、ATT&CK 映射,且易于扩展。请参阅[编写指南](docs/RULES.md)。 ## 部署说明 | 目标平台 | 指南 | |---|---| | **NinjaOne**(自定义字段,Conditions,退出代码) | [docs/DEPLOYMENT_NINJAONE.md](docs/DEPLOYMENT_NINJAONE.md) | | **任何 RMM**(ConnectWise, Datto, Action1, Syncro, Atera, Tactical…) | [docs/DEPLOYMENT_RMM.md](docs/DEPLOYMENT_RMM.md) | | **物理隔离 / CJIS 网络**(离线 USB 工具包) | [docs/DEPLOYMENT_AIRGAPPED.md](docs/DEPLOYMENT_AIRGAPPED.md) | ## 常用选项 ``` # Branding + 自定义响应钩子 .\scripts\win\fos.ps1 -BrandName "Acme SOC" -CustomProblemScript C:\rmm\alert.ps1 # 仅收集(在干净的工作站上拉取 bundle 以进行离线分析) .\scripts\win\fos.ps1 -Mode collect # 分析之前收集的 bundle .\scripts\win\fos.ps1 -Mode analyze -BundlePath .\results\\bundle.json # 添加 LOCAL AI 叙述(需要 localhost 上的 Ollama;保留在 box 上) .\scripts\win\fos.ps1 -EnableLocalAI ``` Linux 环境下的等效选项为 `--brand`, `--mode collect|analyze`, `--bundle`, `--enable-local-ai`。 ## 验证证据完整性 ``` Import-Module .\scripts\win\FOS.Common.psm1 Test-FosManifest -CaseDir .\results\ # SHA-256 of every evidence file Test-FosCoc -CaseDir .\results\ # tamper-evident chain of custody ``` ``` . scripts/nix/fos-common.sh fos_manifest_verify results/ fos_coc_verify results/ ``` ## 文档 - [架构设计](docs/ARCHITECTURE.md) - [CJIS 合规态势](docs/CJIS_COMPLIANCE.md) - [编写检测规则](docs/RULES.md) - [本地 AI 设置 (Ollama)](docs/AI_LOCAL_SETUP.md) - [更新日志](CHANGELOG.md) ## 许可证 MIT — 请参阅 [LICENSE](LICENSE)。永久免费且开源。
标签:AI合规, AI风险缓解, HTTP工具, IPv6, Libemu, PB级数据处理, PowerShell, RMM集成, Web报告查看器, 事件分诊, 人工智能辅助分析, 安全运维, 库, 应急响应, 应用安全, 数字取证, 自动化脚本