检测规则是 Elastic Security 使用的规则的所在地。该存储库用于 Elastic Security 检测引擎的规则的开发、维护、测试、验证和发布。
该存储库首次在 Elastic 的博客文章 Elastic Security 开放公共检测规则存储库中公布。有关其他内容,请参阅随附的网络研讨会 Elastic Security:介绍检测规则的公共存储库。
检测规则
目录
该存储库的概述
入门
如何贡献
许可
问题?有问题吗?建议?
检测规则不仅仅包含静态规则文件。该存储库还包含用于 Python 单元测试以及与 Kibana 中的检测引擎集成的代码。
文件夹 | 描述 |
---|---|
detection_rules/ | 用于规则解析、验证和打包的 Python 模块 |
etc/ | 其他文件,例如 ECS 和 Beats 架构 |
hunting/ | 存储威胁搜寻包和查询的根目录 |
kibana/ | 用于处理对 Kibana 和检测引擎的 API 调用的 Python 库 |
kql/ | 用于解析和验证 Kibana 查询语言的 Python 库 |
rta/ | 红队自动化代码用于模拟攻击者技术,用于规则测试 |
rules/ | 存储规则的根目录 |
rules_building_block/ | 存储构建块规则的根目录 |
tests/ | 单元测试规则的Python代码 |
尽管可以通过手动创建.toml
文件来添加规则,但我们不建议这样做。该存储库还包含一个有助于规则创建和单元测试的 python 模块。假设您有 Python 3.12+,请运行以下命令以使用 makefile 安装依赖项:
✗ makepython3.12 -m pip install --upgrade pip setuptools查看索引:https://pypi.org/simple 要求已满足:pip in /opt/homebrew/lib/python3.12/site-packages (24.0)要求已满足:/opt/homebrew/lib/python3.12/site-packages 中的 setuptools (69.1.1)python3.12 -m venv ./env/detection-rules-build./env/detection-rules-build/bin/pip install --upgrade pip setuptools查看索引:https://pypi.org/simple 要求已满足:pip in ./env/detection -rules-build/lib/python3.12/site-packages (24.0)使用缓存收集setuptools setuptools-69.1.1-py3-none-any.whl.metadata (6.2 kB)使用缓存的 setuptools-69.1.1-py3-none-any.whl (819 kB)安装收集的包:setuptools成功安装 setuptools-69.1.1安装 kql和 kibana 包......
或者使用以下命令安装依赖项:
$ pip3 install ".[dev]"收集 jsl==0.2.4 下载 jsl-0.2.4.tar.gz (21 kB)收集 jsonschema==3.2.0 下载 jsonschema-3.2.0-py2.py3-none-任意.whl (56 kB) |████████████████████████████████| 56 kB 318 kB/s收集请求==2.22.0 下载请求-2.22.0-py2.py3-none-any.whl (57 kB) |█████████████████ ███████████████| 57 kB 1.2 MB/s收集点击==7.0 下载Click-7.0-py2.py3-none-any.whl (81 kB) |█████████████████████ ███████████| 81 kB 2.6 MB/秒...
注意: kibana
和kql
软件包在 PyPI 上不可用,必须从lib
目录安装。 hunting
包具有可选的依赖项,可以使用pip3 install ".[hunting]
安装。
# 从存储库安装pip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kibanapip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kql#或者在本地进行开发 pip3 安装 lib/kibana lib/kql
请记住,如果您正在使用虚拟环境,请务必激活虚拟环境。如果通过make
安装,则会在env/detection-rules-build/
中创建关联的虚拟环境。如果您在使用 Python 3.12 环境时遇到问题,请参阅我们的故障排除指南中的相关部分。
要确认所有内容均已正确安装,请使用--help
标志运行
$ python -m检测规则--helpUsage:检测规则[选项]命令[参数]...检测规则存储库的命令。选项:-d,--debug / -n,--no-debug 打印错误的完整异常堆栈跟踪-h, --help 显示此消息并退出。命令:create-rule 创建检测规则。 dev 用于内部开发和管理的命令... es 用于与 Elasticsearch 集成的命令。 import-rules 从 json、toml 或 Kibana 导出的规则导入规则... kibana 用于与 Kibana 集成的命令。 Mass-update 根据 eql 结果更新多个规则。 Normalize-data 规范化 Elasticsearch 数据时间戳并排序。 规则搜索 使用 KQL 或 EQL 查找匹配规则。 测试 对所有规则运行单元测试。 toml-lint 使用一些简单的 toml 格式清理文件。 validate-all 检查所有规则是否都针对模式进行验证。 validate-rule 检查规则目录中暂存的规则是否针对... view-rule 查看内部规则或指定的规则文件。
笔记:
如果您使用的是虚拟环境,请确保在运行上述命令之前激活它。
如果使用 Windows,您可能还需要运行<venv_directory>Scriptspywin32_postinstall.py -install
具体取决于您的 python 版本。
贡献指南描述了在贡献检测规则时如何使用create-rule
和test
命令创建和测试新规则。
有关更高级的命令行界面 (CLI) 使用方法,请参阅 CLI 指南。
我们欢迎您对检测规则做出贡献!在贡献之前,请熟悉此存储库、其目录结构以及我们关于规则创建的理念。当您准备好做出贡献时,请阅读贡献指南,了解我们如何将检测想法转化为生产规则并通过测试进行验证。
此存储库中的所有内容(规则、代码、RTA 等)均根据 Elastic License v2 获得许可。这些规则旨在在 Elastic Security 应用程序内的检测引擎上下文中使用。如果您使用我们的 Elastic Cloud 托管服务或包含全套免费功能的 Elastic Stack 软件的默认发行版,您将在首次导航到检测引擎时获得最新规则。
有时,我们可能想从另一个已经拥有许可证的存储库(例如 MIT 或 Apache 2.0)导入规则。只要许可证允许在弹性许可证 v2 下进行再许可,这是受欢迎的。我们将这些许可证声明保留在NOTICE.txt
中,并将子许可证作为 Elastic License v2 与所有其他规则一起使用。我们还要求贡献者在向任何 Elastic 存储库贡献代码之前签署贡献者许可协议。
想了解更多有关检测引擎的信息吗?查看 Kibana 中的概述。
该存储库包含尚未发布的新规则和更新规则。要查看随堆栈发布的最新规则集,请参阅预构建规则参考。
如果您想报告误报或其他类型的错误,请创建一个 GitHub 问题并首先检查是否存在现有问题。
需要有关检测规则的帮助吗?在我们的安全讨论论坛或 Slack 工作区中的#security-detection-rules频道中发布问题或提问。