jusso-dev/Tawny-SOC

GitHub: jusso-dev/Tawny-SOC

一款专为 Tawny 设计的 AI 驱动 SOC/SIEM 工作台,整合告警分类、案例管理、检测工程、威胁追踪与 UEBA 行为分析,为安全分析师提供一站式运营平台。

Stars: 0 | Forks: 0

# Tawny-SOC 专为 Tawny 设计的、以 AI 为核心的 SOC/SIEM 工作区。它作为 HTTP 日志接收端接收 Tawny 告警和遥测数据,通过 Sigma 风格的检测和威胁情报上下文丰富记录,并为分类、案例、检测工程、剧本、追踪以及 Kelpie 交接提供了一个现代化的分析师工作区。 ## 本地开发 在 Docker 中运行 Postgres,然后通过 `pnpm dev` 使用 Turbopack 运行 Next.js 16 App Router 仪表板。 ``` pnpm install docker compose up -d db pnpm db:migrate pnpm seed pnpm dev ``` 打开 `http://localhost:3001`。 请勿通过 Docker 在本地运行此 Web 应用。`app` Docker Compose 服务位于明确的配置文件之后,仅用于容器/部署检查。 本地种子数据会创建: - 本地租户:`local-tenant` - 本地分析师:`analyst@tawny.local` - 本地密码:`TawnySocLocal123!` - 入门级威胁情报源端点,包括 OpenPhish 和 PhishTank URL 源 `pnpm seed` 专用于本地重置工作。它会保持本地分析师和组织处于就绪状态,为入门级威胁情报源端点提供种子数据,并清除本地 SOC 告警、遥测、案例、任务、交付日志和时间线。 ## SIEM 概览 SOC 工作区包含: - SOC 概览:告警量、事件量、待处理案例、严重/高危告警、受影响主机、队列健康状况、热门规则、热门 MITRE 战术、热门用户、热门进程、热门外部 IP、趋势以及需要关注的条目。 - 可扩展的数据接入:Tawny HTTP 接入、通用 JSON、syslog/CEF、Windows Event/Sysmon、AWS CloudTrail、Azure 登录/活动、Microsoft 365 审计、防火墙/网络日志、解析器规范化、死信跟踪以及来源健康状况。 - 连接器目录:云、身份、SaaS、网络、端点和通用连接器,包含必填字段、凭据引用、安全的本地测试操作、状态、计划和脱敏处理。 - 告警队列:严重程度、置信度、状态、规则、来源、主机、用户、进程、MITRE、TI(威胁情报)命中、受理人、过滤器以及批量操作控制。 - 告警详情:摘要、证据、原始 JSON、威胁情报匹配、MITRE 映射、分析师时间线,以及用于创建案例、提升至 Kelpie、压制和响应的操作。 - 事件 / 案例:原生的 Tawny-SOC 案例分组,包含优先级、生命周期、分配、TLP/PAP、分类、可观测对象、关联主机、关联告警、SLA 状态、证据记录以及 Kelpie 同步状态。 - 检测规则:Sigma 风格的“检测即代码”视图,支持可用的 YAML 导入、元数据、ATT&CK 映射、测试状态、当前修订版本、最后触发状态、定时检测、多事件关联辅助工具以及调优操作。 - 检测包:便携式 `tawny-detection-pack/v1` 清单,包含 YAAQL 规则、摘要规则、验证、仓库路径元数据以及用于 GitOps 工作流的 CI 命令提示。 - UEBA 行为:确定性行为记录,将底层遥测数据转化为可解释的用户、主机、进程、网络、权限、数据访问以及检测上下文活动。 - 威胁情报:源管理以及可搜索、可排序、可过滤、分页的 IOC 浏览器,支持 STIX、OpenIOC、CSV、TXT、MISP、OTX、URLhaus 和自定义 URL 源。 - 剧本:用于恶意软件、可疑 PowerShell、新管理员用户、可疑出站 IP、凭据窃取、主机隔离和可疑 URL 风格调查的有序 SOC 工作流。 - 搜索 / 追踪:基于 YAAQL 的企业级追踪工作区,支持基于事件类型、主机、用户、进程、hash、IP、域名、时间和 payload 路径的查询,并提供示例、字段透视、已保存的搜索以及可点击加载的已保存搜索。 - 集成:电子邮件、Slack、webhook、Microsoft Sentinel、Wazuh、Kelpie、连接器健康状况、端点/token/凭据配置、交付测试以及交付状态。 - SOC 设置:细分的设置子页面,涵盖严重程度映射、通知路由、压制、威胁情报 TTL、案例编号、SLA、角色权限、团队访问、API token、留存策略、合规报告和审计日志。 - 访问与认证:BetterAuth 登录/注册、“设置”下的团队成员管理、租户邀请、魔法链接邀请流程以及 MFA 状态显示。 - API token:具有角色限制范围的租户级 API 密钥,支持创建/更新/撤销/删除工作流,以及用于接入和读取 API 的 bearer-token 访问。 - 治理:RBAC 检查、审计日志记录、证据跟踪、合规报告模板、热/归档/删除留存策略,以及预定的威胁情报/留存 cron 任务。 ## YAAQL 搜索语言 Tawny-SOC 包含 YAAQL,即“Yet Another Annoying Query Language”过滤器,被搜索 / 追踪页面以及 `GET /api/events` 和 `GET /api/alerts` 的 `q` 参数所使用。它特意设计得很小巧且类似于 KQL,以便分析师只需输入一个字符串,而无需应付又一大堆特定于供应商的搜索控件。 YAAQL 支持: - 自由文本:`"powershell.exe"` 会在整个规范化记录中进行搜索。 - 字段包含:`host:win-*`, `title:dns`, `commandLine:powershell`。 - 字段精确匹配:`eventType=ProcessLaunch`, `kind=alert`, `severity=critical`。 - 取反:`status!=suppressed`, `not host:lab-*`。 - 布尔逻辑:`severity:critical or severity:high`, `kind:alert and host:win-*`。 - 分组:`(eventType=DnsQuery or has:domain) and severity in (medium, high)`。 - 列表:`severity in (critical, high)`, `rule in (tawny-sigma-ps-encoded-command, tawny-sigma-credential-dump-artifact)`。 - 存在性检查:`has:ip`, `has:domain`, `has:hash`, `has:mitre`。 - 数字和时间戳比较:`confidence>=0.8`, `timestamp>=2026-05-27T00:00:00Z`。 - Payload 路径:`payload.alert.command_line:powershell`, `payload.query_name:*.example`。 相邻的词被视为 `and`,因此 `host:win-* powershell` 与 `host:win-* and powershell` 相同。系统内置了针对分析师友好字段的常用别名:`host`、`type`、`rule`、`mitre`、`tenant`、`agent`、`cmd`、`ip`、`domain`、`hash`、`user` 和 `process`。 ## Tawny 集成 按以下方式配置 Tawny: ``` "TawnySoc": { "Enabled": true, "AlertsEnabled": true, "TelemetryEnabled": true, "EndpointUrl": "http://localhost:3001/api/ingest/tawny", "ApiToken": "", "BatchSize": 100, "TimeoutSeconds": 10 } ``` 为了获得 bearer-token 保护,请在 `Settings -> API tokens` 中创建一个具有 `ingest:write` 权限范围的租户 API token,然后在 Tawny 中设置 `Tawny:TawnySoc:ApiToken`。传统的 `TAWNY_SOC_INGEST_TOKEN` 环境变量仍被支持,用于简单的本地收集器保护。 `GET /api/events` 接受会话 cookie 或具有 `events:read` 权限的 bearer token。`GET /api/alerts` 接受会话 cookie 或具有 `alerts:read` 权限的 bearer token。 ## Kelpie 集成 从 `Integrations` 配置 Kelpie。基于数据库的 Kelpie 设置包括基础 URL、token 引用、启用状态、去重模式以及要同步的字段。 Tawny-SOC 通过以下方式对 Kelpie 交接进行建模: - 使用 `externalRef` 将告警提升至 Kelpie 的入站告警 API。 - 使用 `tawny-case-*` 外部引用将事件提升至 Kelpie 案例。 - 通过 `externalRef` 进行去重。 - 同步状态:`not_synced`、`synced`、`failed`、`stale`、`conflict`。 - 包含重试/错误状态的交付日志。 ## 威胁情报设置 威胁情报源概念支持 STIX、OpenIOC、CSV、TXT、MISP、OTX、URLhaus 和自定义 URL 源。IOC 匹配会附加到告警和案例中,并且追踪界面包含一种回溯追踪操作模式,可根据指标值搜索历史 Tawny 遥测数据。 为本地开发提供的入门源端点: - Feodo Tracker 僵尸网络 C2 IP,已启用 - Spamhaus DROP 流氓网络,已启用 - CISA 已知被利用漏洞,已启用 - OpenPhish 社区钓鱼 URL,已启用 - PhishTank 在线有效钓鱼 URL,默认暂停(因为公开的 CSV 转储文件过大且受到速率限制) - Emerging Threats 被攻陷 IP,默认暂停 - Blocklist.de 近期攻击者 IP,默认暂停 从源加载的指标会获得一个可配置的默认 TTL。默认值为 7 天,可在 `Settings -> Threat intel` 中进行更改。过期的 IOC 会从活动指标表中排除,并由预定的留存清理任务移除。 “威胁情报”页面由数据库过滤器提供支持,每页显示 100 个活动指标。搜索、类型过滤器、源源过滤器、排序和分页通过 Next 客户端路由更新 URL,同时表格数据保持由服务器端支持。 ## UEBA 行为层 Tawny-SOC 中的 UEBA 是一个派生的行为层,而不是一个独立的日志源。原始安全日志通过 Tawny 接入或连接器 pipeline 进入 SIEM,被规范化为保留的告警/事件,然后转换为行为记录: ``` Raw logs -> normalized SIEM events -> entity extraction -> behavior records -> summary/anomaly/risk signals -> alerts, cases, and hunt pivots ``` Microsoft Entra ID 登录日志是一个强大的身份来源,但它们只是一个输入。有用的 UEBA 遥测数据还包括 Entra 审计日志、服务主体登录、配置日志、Okta、Google Workspace、AWS CloudTrail、Microsoft 365 审计日志、VPN、端点/Sysmon、EDR、防火墙、代理和 SaaS 审计日志。Entra 登录日志回答了谁登录了、他们如何进行身份验证、访问了哪个应用/资源、来自哪个 IP/设备,以及 MFA 或 Conditional Access 是否改变了结果。Entra 审计日志则补充了用户、组、应用、角色和租户的变更。 第一遍处理不会接入特殊的 `ueba` 事件类型。它从 `/ueba` 页面上保留的告警和遥测数据中派生行为记录。每条行为记录包含: - actor - target - category - source event IDs - risk score - confidence - extracted fields - plain-language reasons 当前的确定性行为类别: - `authentication_failure`:带有失败、拒绝、无效、错误、锁定或类似结果的认证、登录、登入、MFA、凭据或交互式登录活动。 - `authentication_observed`:成功或中立的认证类活动。 - `process_execution`:进程、脚本、命令、shell、映像或命令行活动。 - `suspicious_process_execution`:带有诸如 PowerShell、`-enc`、`downloadstring`、`base64`、`curl`、`wget` 或 `rundll32` 等特征的进程活动。 - `network_activity`:源 IP、目标 IP、目标端口、URL、DNS、代理、防火墙、HTTP 或连接字段。 - `network_block`:带有拒绝、拦截、拒绝访问或失败结果的网络活动。 - `privilege_or_admin_change`:管理员、角色、组、权限、提权、IAM、root 或用户管理活动。 - `data_access`:文件、对象、SharePoint、邮箱、下载、上传或数据对象访问活动。 - `detection_context`:在源事件上匹配到的检测规则 ID 或 MITRE ATT&CK 技术。 风险评分被刻意设计为可解释的。当前的第一遍评分从源事件严重程度开始,加上特定于行为的修饰符,针对可疑标记和检测上下文进行增加,然后将该值限制在 `100`。reasons 数组准确展示了是哪些字段和规则条件做出了贡献。这使得行为层具有确定性和可审查性,而不是不透明的机器学习评分。 实体摘要按租户和 actor 对行为进行分组,以便可以审查重复的活动而不会跨越租户边界。这遵循了 NIST 日志管理指南、MITRE ATT&CK 数据组件、CISA 事件记录指南以及 Microsoft Sentinel 的行为层模式中的常见 SIEM 实践:规范化各种日志,提取实体,将嘈杂的事件转化为“谁对谁做了什么”,保留指向原始事件的链接,并使每个检测都可审计。 迈向成熟 UEBA 的剩余工作: - 持久化、主机、IP、服务账户、应用和云资源实体表。 - 持久化行为记录和风险历史记录,而不是仅仅从当前保留的记录中派生。 - 为正常位置、设备、应用、时间、进程、目的地和数据访问添加基线训练窗口。 - 为具有类似角色或组的用户和服务账户添加同侪组比较。 - 针对不可能的地点转移、首次出现的管理员操作、异常的应用授权、新的国家/设备、罕见的进程、过多的失败、权限更改和异常的数据访问添加异常规则。 - 对每个行为/异常规则进行版本控制,包含 ID、描述、使用的字段、阈值、MITRE 映射、测试装置和误报说明。 - 添加针对压制、允许列表、阈值覆盖和分析师反馈的调优控制。 ## 检测包和摘要规则 Tawny-SOC 在代码中包含了一个便携式入门检测包,使用了 `tawny-detection-pack/v1` 清单格式。包可以包含 YAAQL 检测、Sigma 源、摘要规则、MITRE 映射、测试、仓库路径元数据以及 CI 命令提示。 摘要规则将保留的记录聚合为更高级别的信号,例如认证失败突发或可疑进程集中。它们默认是租户范围的,旨在与基于 Git 的检测工作流配合使用,而不是特定于云的 SIEM 内容格式。 ## 设置和管理 “设置”根页面是一个分类索引,包含用于全部、操作、访问、集成和治理的选项卡。每个设置区域在 `/settings/[section]` 下也有自己的子页面,因此管理界面保留了主要的 SOC 布局和左侧导航。 可用的设置部分: - 严重程度映射 - 通知路由 - 压制规则 - 威胁情报 TTL - 案例编号 - SLA 规则 - 角色权限 - 团队访问 - API token - 留存策略 - 合规报告 - 审计日志 ## 剧本模型 剧本是包含阶段、负责人、目标、证据要求和可选响应操作的有序工作流。针对案例运行剧本会在 SOC 工作流层创建案例任务。 ## 从告警到案例的工作流 1. Tawny 将告警或遥测数据发送到 `POST /api/ingest/tawny`。 2. Tawny-SOC 将记录映射到 Sigma 风格的规则上下文和 MITRE 技术。 3. 威胁情报丰富附加 IOC 匹配并提高置信度。 4. 分析师分配、驳回、压制告警,或将告警提升为原生的 Tawny-SOC 案例。 5. 案例跟踪所有权、生命周期、可观测对象、任务、评论和审计时间线。 6. 案例可以被提升或同步到 Kelpie,同时保留外部引用。 ## 测试 ``` pnpm typecheck pnpm lint pnpm test pnpm build ``` 当前的工作流测试涵盖了从告警创建事件、告警/案例分配、TI 丰富、Kelpie 告警提升、Kelpie 案例同步、通知交付状态、多租户隔离以及压制行为。 ## 来源与灵感 - Vigil 风格的 agent 和工作流:`incident-response`、`full-investigation` 和 `threat-hunt`。 - 检测工程模型:入门级 Sigma 规则加上 `scripts/import-vigil-detection-repos.mjs`,映射 Vigil 的外部检测仓库方法。 - Panther、Sentinel、Splunk ES、Falcon Next-Gen SIEM、Elastic Security 和 Wazuh 产品模式:检测即代码、案例/事件、TI 丰富、关联、追踪/搜索、自动化以及分析师优先的分类。
标签:SIEM系统, SOC工作台, 威胁情报, 安全告警, 安全运营, 开发者工具, 扫描框架, 测试用例, 自动化攻击, 请求拦截