vinayvobbili/detflow
GitHub: vinayvobbili/detflow
detflow 是一款检测工程 Copilot,支持从纯英文描述自动起草并像资深工程师一样审查 Sigma 或 Cortex XQL 检测规则。
Stars: 0 | Forks: 0
# detflow
**一款检测工程 copilot。** 使用纯英文起草检测规则,并像资深检测工程师一样审查它们——支持厂商中立的 **Sigma** 或
**Cortex XSIAM XQL**。离线安全、模型无关,专为无缝接入
detection-as-code pipeline 而设计。
```
from detflow import draft, lint, review
# 1. 从 plain English 起草
d = draft("powershell launched with an encoded command by a Word macro")
print(d.rule) # → a Sigma rule
# 2. Lint 它(deterministic,无 model,永不 raises)
print(lint(d.rule).status) # → pass | warn | fail
# 3. 像 senior engineer 一样 review 它,针对你的 rule catalog 进行 deduped
catalog = [{"name": "Encoded PowerShell", "source": "edr", "techniques": ["T1059.001"]}]
r = review(d.rule, catalog=catalog)
print(r.quality_score, r.false_positive_risk, r.verdict)
for o in r.overlaps:
print("already covered by:", o.name, "—", o.reason)
```
## 为什么需要
Sigma 生态系统在*编译*规则和*运行*规则方面非常强大,但编写和审查步骤仍然是手动的。detflow 填补了这一空白:
- **起草** — 用纯英文描述行为,即可获得有效的规则。无需面对空白页面。
- **Lint** — 在你消耗模型调用之前提供快速、离线的结构化检查。
- **重叠** — 避免重复发布相同的覆盖范围;与你已运行的规则进行去重。
- **审查** — 结构化的资深工程师评估:质量、误报风险*及其原因*、ATT&CK 覆盖情况、缺陷、具体改进建议以及最终结论。
它是 detection-as-code 工作流中“人在回路”的前端:起草 →
lint → 审查 → (由你)合并。
## 安装
```
pip install detflow # core: lint + overlap (stdlib + PyYAML)
pip install "detflow[llm]" # + drafting/review via any OpenAI-compatible endpoint
pip install "detflow[langchain]" # + bring your own LangChain model / failover chain
```
## 模型
detflow 是模型无关的。模型可以是任何具有
`complete(system, user, *, json=False) -> str` 接口的事物。提供模型的方式有三种:
**从环境变量中**(任何 OpenAI 兼容的 endpoint):
```
export DETFLOW_LLM_API_KEY=sk-...
export DETFLOW_LLM_BASE_URL=https://api.openai.com/v1 # or a local vLLM/Ollama
export DETFLOW_LLM_MODEL=gpt-4o-mini
```
```
from detflow import draft
draft("encoded powershell from an office macro") # picks up the env model
```
**显式提供:**
```
from detflow import review
from detflow.llm import OpenAIChatModel
review(rule, model=OpenAIChatModel(api_key="sk-...", model="gpt-4o-mini"))
```
**带有故障转移** — 封装一个 [`langchain-failover`](https://pypi.org/project/langchain-failover/)
链,以便在主模型中断时透明地回退到备用模型:
```
from langchain_failover import FailoverChatModel
from langchain_openai import ChatOpenAI
from detflow.llm import LangChainModel
from detflow import draft
chain = FailoverChatModel(models=[ChatOpenAI(model="gpt-4o-mini"), local_llm])
draft("...", model=LangChainModel(chain))
```
## 两种格式
- **Sigma**(默认) — 厂商中立的 YAML;可跨 SIEM 移植。
- **Cortex XSIAM XQL** (`fmt="cortex-xql"`) — 当你想在该平台上进行完全控制时,直接使用 XQL 编写。
```
draft("rare parent spawning powershell", fmt="cortex-xql")
review(my_xql, fmt="cortex-xql", techniques=["T1059.001"], catalog=catalog)
```
## CLI
```
detflow draft "powershell with an encoded command from a word macro"
detflow draft "..." --format cortex-xql
detflow lint rule.yml
detflow review rule.yml --catalog catalog.json --json
```
## 设计
- **永不抛出异常。** `lint`、`find_overlaps` 和 `review` 总是返回结果;
当未配置模型时,`draft` 会返回错误结果(而不是抛出异常)。
- **确定性核心。** Lint 和重叠检查无需网络和密钥;在没有
模型的情况下,审查会降级为确定性的基础操作(lint + 重叠 + 解析出的元数据)。
- **自带规则目录。** 重叠检查会与你从运行的任何平台中导出的纯字典列表进行对比——没有平台锁定。
## License
MIT © Vinay Vobbilichetty
标签:DLL 劫持, OpenCanary, Petitpotam, Python, Sigma规则, 大语言模型, 安全运营, 恶意代码分类, 扫描框架, 无后门, 目标导入, 逆向工具