检测规则是 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 安装依赖项:
✗ make
python3.12 -m pip install --upgrade pip setuptools
Looking in indexes: https://pypi.org/simple
Requirement already satisfied: pip in /opt/homebrew/lib/python3.12/site-packages (24.0)
Requirement already satisfied: setuptools in /opt/homebrew/lib/python3.12/site-packages (69.1.1)
python3.12 -m venv ./env/detection-rules-build
./env/detection-rules-build/bin/pip install --upgrade pip setuptools
Looking in indexes: https://pypi.org/simple
Requirement already satisfied: pip in ./env/detection-rules-build/lib/python3.12/site-packages (24.0)
Collecting setuptools
Using cached setuptools-69.1.1-py3-none-any.whl.metadata (6.2 kB)
Using cached setuptools-69.1.1-py3-none-any.whl (819 kB)
Installing collected packages: setuptools
Successfully installed setuptools-69.1.1
Installing kql and kibana packages...
...
或者使用以下命令安装依赖项:
$ pip3 install " .[dev] "
Collecting jsl==0.2.4
Downloading jsl-0.2.4.tar.gz (21 kB)
Collecting jsonschema==3.2.0
Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
|████████████████████████████████| 56 kB 318 kB/s
Collecting requests==2.22.0
Downloading requests-2.22.0-py2.py3-none-any.whl (57 kB)
|████████████████████████████████| 57 kB 1.2 MB/s
Collecting Click==7.0
Downloading Click-7.0-py2.py3-none-any.whl (81 kB)
|████████████████████████████████| 81 kB 2.6 MB/s
...
注意: kibana
和kql
软件包在 PyPI 上不可用,必须从lib
目录安装。 hunting
包具有可选的依赖项,可以使用pip3 install ".[hunting]
安装。
# Install from the repository
pip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kibana
pip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kql
# Or locally for development
pip3 install lib/kibana lib/kql
请记住,如果您正在使用虚拟环境,请务必激活虚拟环境。如果通过make
安装,则会在env/detection-rules-build/
中创建关联的虚拟环境。如果您在使用 Python 3.12 环境时遇到问题,请参阅我们的故障排除指南中的相关部分。
要确认所有内容均已正确安装,请使用--help
标志运行
$ python -m detection_rules --help
Usage: detection_rules [OPTIONS] COMMAND [ARGS]...
Commands for detection-rules repository.
Options:
-d, --debug / -n, --no-debug Print full exception stacktrace on errors
-h, --help Show this message and exit.
Commands:
create-rule Create a detection rule.
dev Commands for development and management by internal...
es Commands for integrating with Elasticsearch.
import-rules Import rules from json, toml, or Kibana exported rule...
kibana Commands for integrating with Kibana.
mass-update Update multiple rules based on eql results.
normalize-data Normalize Elasticsearch data timestamps and sort.
rule-search Use KQL or EQL to find matching rules.
test Run unit tests over all of the rules.
toml-lint Cleanup files with some simple toml formatting.
validate-all Check if all rules validates against a schema.
validate-rule Check if a rule staged in rules dir validates against a...
view-rule View an internal rule or specified rule file.
笔记:
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 存储库贡献代码之前签署贡献者许可协议。