adelic-ai/omega

GitHub: adelic-ai/omega

omega 利用形式概念分析和 SKOS 语义关系,判断不同安全检测规则之间的同一性与相似度,支持跨规则集(Sigma/MITRE CAR)的去重与桥接对齐。

Stars: 0 | Forks: 0

# omega **检测规则语料库上的 FCA/SKOS 规则同一性。** 给定一组检测规则(目前是 Sigma,未来也包括 MITRE CAR),omega 回答了一个看似简单实则困难的问题——*这两个规则相同吗?* 它给出的答案是: 同一性并非绝对的:它**相对于所选的语义投影而言**,而 omega 将该投影作为调节旋钮。 它将每条规则降低为一种与规则集无关的中间表示,利用**形式概念分析**(Formal Concept Analysis)推导概念结构,并将分级关系(`exact` / `broad` / `narrow` / `close` / `related`)表示为可以序列化为 RDF 的 **SKOS** 图。结果是可从语料库中重现的,而非主观断言的。 ## 安装 ``` pip install -e . # or: uv pip install -e . ``` 仅一项依赖:[pySigma](https://github.com/SigmaHQ/pySigma)(官方 Sigma 解析器)以及 PyYAML。 Python ≥ 3.11。 ## 使用 将其指向一个 Sigma 检出版本(`git clone https://github.com/SigmaHQ/sigma`): ``` python -m omega run --corpus path/to/sigma/rules --out ./out ``` ``` ingest: 3748 files, 3748 rules, clean=True omega over-collapse — 3748 rules projections: blind=['field'] aware=['clause', 'polarity'] corpus: blind 592 concepts -> aware 3737 (split 6.31x) biggest blind class: 416 aware residue: 11 lattice edges by kind: {'related': 14728, 'broader': 78, 'narrower': 53, 'exact': 11, 'close': 17} ...per-product breakdown... generalizes (aware > blind in every slice): True ``` 写入 `out/figures.json`(数值)和 `out/lattice.ttl`(SKOS 图,可通过 SPARQL 查询)。 **过度折叠**(over-collapse),用一句话概括:以规则*读取的字段*为键(忽略值)会将 3,748 条 Sigma 规则折叠为 592 个“概念”——单个概念吞噬了 416 种不同的检测。以*字段 + 值 + 极性*为键(感知值)则能区分出其中的 3,737 条规则。旋钮即是投影;没有任何事物享有特权。 ### 跨语料库桥接 omega 可以摄取多个规则集,并将它们在共享轴上连接起来: ``` python -m omega bridge --sigma path/to/sigma/rules --car path/to/car ``` ``` omega cross-corpus bridge — axis 'attack' over ['car', 'sigma'] car rules= 102 attack-tokens= 122 unique-to-it=10 sigma rules= 3748 attack-tokens= 633 unique-to-it=521 pairwise shared: {'car~sigma': 112} shared-by-all: 112 union: 643 concrete joins (a shared token bridging the corpora): tag:attack.t1003 car=[CAR-2013-04-002, ...] sigma=[3ec9a16d-..., ...] ``` ATT&CK 免费为这两个语料库提供了桥接(共享词汇表);但它们的*字段*词汇表并不能(`exe` 对比 `Image`)——这种对齐是一个分级映射问题,被刻意留作开放状态。 ## 工作原理 ``` rulesets → ingest adapters → [ IR ] → axes → FCA concepts → SKOS relations → report (per ruleset) waist (the projection knob) ``` - **ingest/** — 每种规则语言一个适配器(Sigma 通过 pySigma,CAR 通过其 YAML)。摄取(Ingest)本质上是与特定规则集相关的;它是*唯一*具备此特性的层。每个适配器都将其降低为 IR,在此之上的任何部分都不会知道该规则曾经是 Sigma。 - **ir.py** — 无关的核心:极性标记的原子 `(field, mods, values)`,作为开放 `(dimension, value)` 标签的 logsource,ATT&CK 标签,以及一个记录来源的 `Source`(无论 omega 在内部如何处理,一条规则始终可以追溯至其原始 id)。 - **axes.py** — 投影:`field`(忽略值)· `clause`(感知值)· `polarity`(符号选择/过滤)· `fieldref`(关系型)· `logsource` · `attack`。其任何子集都是“相同”的有效概念。 - **fca.py / skos.py** — 投影下的概念,然后是它们的分级关系 + Turtle。 ## 范围与限制 - **结构化,而非行为化。** omega 比较的是规则*是什么*,而不是它能*捕获*什么。两个结构不同的规则可能会在相同的事件上触发;这种等价性对结构而言是不可见的,并且需要一个运行时环境,而 omega(目前)并不提供此功能。 - **为聚类而解析 ≠ 为触发而评估。** 因为 pySigma 解析的是完整的规范,所以 omega 甚至能表示那些它无法*执行*的规则(base64、字段引用、correlation)——它们依然会产生属性。 - **CAR 较为粗糙(v1)。** CAR 分析将其逻辑作为*其他*查询语言(SPL/EQL/伪代码)中的实现来承载;omega 会摄取它们结构化的轴(ATT&CK 覆盖范围、平台、数据模型引用),并计算未解析的查询逻辑,而不是将其丢弃。 ## 许可证 Apache License 2.0 — 参见 [LICENSE](LICENSE) 和 [NOTICE](NOTICE)。该许可证仅涵盖 omega 的 代码,不涵盖它读取的外部语料库(Sigma、CAR),这些语料库拥有各自的许可证。
标签:Python, Terrascan, 安全运营, 形式概念分析, 恶意代码分类, 扫描框架, 无后门, 检测规则, 网络资产发现, 逆向工具