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规则, 大语言模型, 安全运营, 恶意代码分类, 扫描框架, 无后门, 目标导入, 逆向工具