calebstewart/python-sigma

GitHub: calebstewart/python-sigma

基于 pydantic 的 Sigma 规则解析与转换库,提供 Python API 和 CLI 工具,用于安全检测规则的加载、验证和跨平台转换。

Stars: 54 | Forks: 5

# Python Sigma 规则解析库 该库旨在抽象 Python 中 Sigma 规则的处理过程。 规则通过 `pydantic` 定义的模式进行解析,可以轻松地从 YAML 文件加载为结构化的 Python 对象。 ``` from sigma.schema import Rule # 将 rule 加载到 python 对象中 rule = Rule.from_yaml("test-rule.yml") # Simple properties 可直接访问 print(rule.title) print(rule.author) # Detection conditions 同样保持不变地可用 print(rule.detection.condition) print(rule.detection.my_condition_name) # 从 condition 中解析/统一 grammar 很简单! print(rule.detection.expression) ``` 该项目正在积极开发中,本自述文件可能未反映最新的文档。通常,在该库/工具达到稳定状态之前,您应该参考生成的文档(下方的构建说明)以及命令行帮助输出以获取详细信息。 ## 安装 可以使用 `pip` 从 GitHub 安装该库和命令行界面: ``` # 直接从 github 安装 pip install git+ssh://git@github.com/calebstewart/python-sigma.git # 检出 repo,然后安装 git clone git@github.com:calebstewart/python-sigma.git cd python-sigma pip install . ``` 如果您想参与开发,应该使用 Python Poetry 来管理您的虚拟环境和依赖项。有关更多信息,请参阅 [Poetry 文档](https://python-poetry.org/docs/)。 ``` # 设置 Python 开发环境 git clone git@github.com:calebstewart/python-sigma.git cd python-sigma poetry install # 进入 virtual environment 以与 package 交互 poetry shell # 输入 "exit" 退出 poetry virtual environment ``` ## 文档 可以使用 Sphinx 从本仓库构建文档。首先,安装包含文档依赖项的包,然后从 `docs/` 目录运行 `make html`: ``` # 安装带有 docs extras 的版本 poetry install -E docs # 进入 poetry virtual environment poetry shell # 构建 documentation cd docs make html # 在 docs/_build/index.html 中打开 documentation ``` 目前,文档是直接根据项目代码中的 docstrings 和类型提示自动生成的。计划最终会补充这些自动生成的文档,但这要等到 API 和 CLI 接口固化后的后续项目中进行。话虽如此,我们在整个项目中适当的位置使用模块 docstrings 添加了大量的示例和文档,因此文档至少应该是可用的。 ## 命令行界面 该包安装后暴露了一个名为 `sigma` 的入口点作为命令行界面。`sigma` 命令提供了用于检查规则和配置模式、查看/更新 MITRE ATT&CK 数据库缓存、验证序列化器或规则配置,以及使用内置或自定义序列化器转换规则的子命令。 该项目仍在积极开发中,接口可能随时更改。您应该通过在命令行运行 `sigma --help` 来查看内置帮助,但为了完整性起见,当前的帮助输出/子命令列表如下: ``` $ sigma --help Usage: sigma [OPTIONS] COMMAND [ARGS]... Sigma Rule conversion and validation CLI. Options: --help Show this message and exit. Commands: convert Convert Sigma rules to various formats using built-in or... list List built-in transforms and serializers mitre Browse and update the MITRE ATT&CK data cache schema Dump the schema for rules, serializers, and transforms transform Transform a list of rules using a list of transforms in a... validate Validate Sigma rule or serializer schema ``` ## 但是……为什么? 官方 Sigma 仓库包含用于将 Sigma 规则从 Sigma 格式转换为各种后端检测系统的 `sigmac` 工具。然而,该工具已经老化。代码混乱且难以理解,文档也很有限。Sigma 团队似乎正试图用 [pySigma](https://github.com/SigmaHQ/pySigma) 取代 `sigmac`,但该项目相当新,我想要一个可以在短期内迭代并拥有控制权的东西。 此外,在这两种情况下,Sigma 规则的处理似乎都过于复杂。这对我来说可能是一个“这山望着那山高”的问题,但我做这件事的最坏情况是,我能更好地理解构建 Sigma 规则 API/转换器所固有的问题,并希望在未来能以某种方式回馈社区。 最后,我想构建一个专注于现代 API 接口和详尽文档的工具。我计划大量利用 `pydantic`,使字段和值的验证更加直接和符合 Python 风格,并为其他人提供一个简单的接口来直接摄取 Sigma 规则。例如,对于试图将 Sigma 纳入其自动化流程的团队来说,能够从 Python 加载、检查并可能修改 Sigma 规则(而无需使用转换工具)将是一个很棒的功能。 综上所述,我想非常清楚地表明:**Sigma 项目及其所有相关代码一直非常有帮助,上述内容并非意在贬低该团队、他们的代码或他们对社区的贡献。** 我非常感谢并钦佩 SigmaHQ 团队多年来为改善恶意活动检测所付出的辛勤工作。我只希望我能学到一些东西,或者也许能自己向社区提供一些有用的东西。:smile:
标签:AMSI绕过, Cloudflare, DNS解析, MITRE ATT&CK, Pydantic, Python, YAML解析, 云计算, 威胁检测, 安全工具库, 安全检测规则, 开源项目, 数据验证, 无后门, 网络安全, 被动侦察, 规则引擎, 逆向工具, 隐私保护