
detection-rules dev-v2.1.0
Entwickeln, validieren und veröffentlichen Sie SIEM-Erkennungsregeln für Elastic Security, mit Python-CLI-Tooling, KQL-Parsing, Kibana-Integration und gebündelten Threat-Hunting-Abfragen.
Detection Rules
Detection Rules ist die Heimat der Regeln, die von Elastic Security verwendet werden. Dieses Repository wird für die Entwicklung, Pflege, das Testen, die Validierung und die Veröffentlichung von Regeln für die Detection Engine von Elastic Security genutzt.
Dieses Repository wurde erstmals im Blog-Beitrag von Elastic angekündigt: Elastic Security opens public detection rules repo. Zusätzliche Inhalte finden Sie im begleitenden Webinar Elastic Security: Introducing the public repository for detection rules.
Table of Contents
Overview of this repository
Detection Rules enthält mehr als nur statische Regelsatzdateien. Dieses Repository enthält auch Code für den Aufbau von Detections-as-Code-Pipelines, Unit-Tests in Python und die Integration mit der Detection Engine in Kibana.
| Ordner | Beschreibung |
|---|---|
detection_rules/ | Python-Modul zum Parsen, Validieren und Paketieren von Regeln |
etc/ | Verschiedene Dateien, wie ECS- und Beats-Schemata sowie Konfigurationsdateien |
hunting/ | Root-Verzeichnis, in dem Threat-Hunting-Pakete und Abfragen gespeichert werden |
kibana/ | Python-Bibliothek für die Behandlung von API-Aufrufen an Kibana und die Detection Engine |
kql/ | Python-Bibliothek zum Parsen und Validieren der Kibana Query Language |
rules/ | Root-Verzeichnis, in dem Regeln gespeichert werden |
rules_building_block/ | Root-Verzeichnis, in dem Building-Block-Regeln gespeichert werden |
tests/ | Python-Code für Unit-Tests der Regeln |
Getting started
Auch wenn Regeln durch manuelles Erstellen von .toml-Dateien hinzugefügt werden können, empfehlen wir dies nicht. Dieses Repository enthält außerdem ein Python-Modul, das die Erstellung von Regeln und Unit-Tests unterstützt. Vorausgesetzt, Sie haben Python 3.12+, führen Sie den folgenden Befehl aus, um die Abhängigkeiten mithilfe des Makefiles zu installieren:
✗ 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...
...
Oder installieren Sie die Abhängigkeiten mit dem folgenden Befehl:
$ 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
...
Hinweis: Die Pakete kibana und kql sind nicht auf PyPI verfügbar und müssen aus dem Verzeichnis lib installiert werden. Das Paket hunting hat optionale Abhängigkeiten, die mit pip3 install ".[hunting]" installiert werden.
# Install from the repository
pip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=lib/kibana
pip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=lib/kql
# Or locally for development
pip3 install lib/kibana lib/kql
Denken Sie daran, Ihre virtuelle Umgebung zu aktivieren, falls Sie eine verwenden. Wenn Sie die Installation über make durchgeführt haben, wird die zugehörige virtuelle Umgebung unter env/detection-rules-build/ erstellt.
Wenn Sie Probleme mit einer Python-3.12-Umgebung haben, lesen Sie bitte den entsprechenden Abschnitt in unserem Troubleshooting-Leitfaden.
Um zu bestätigen, dass alles ordnungsgemäß installiert wurde, führen Sie den Befehl mit dem Flag --help aus:
$ 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:
build-limited-rules Import rules from json, toml, or Kibana exported rule file(s), filter out unsupported ones, and write to output NDJSON file.
build-threat-map-entry Build a threat map entry.
create-rule Create a detection rule.
custom-rules Commands for supporting custom rules.
dev Commands related to the Elastic Stack rules release lifecycle.
es Commands for integrating with Elasticsearch.
export-rules-from-repo Export rule(s) and exception(s) into an importable ndjson file.
generate-rules-index Generate enriched indexes of rules, based on a KQL search, for indexing/importing into elasticsearch/kibana.
import-rules-to-repo Import rules from json, toml, or yaml files containing Kibana exported rule(s).
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.
typosquat Commands for generating typosquat detections.
validate-all Check if all rules validates against a schema.
validate-rule Check if a rule staged in rules dir validates against a schema.
view-rule View an internal rule or specified rule file.
Hinweis:
- Wenn Sie eine virtuelle Umgebung verwenden, stellen Sie sicher, dass Sie sie aktivieren, bevor Sie den obigen Befehl ausführen.
- Wenn Sie Windows verwenden, müssen Sie je nach Ihrer Python-Version möglicherweise auch
<venv_directory>\Scripts\pywin32_postinstall.py -installausführen.
Der Contribution-Leitfaden beschreibt, wie Sie die Befehle create-rule und test verwenden, um eine neue Regel zu erstellen und zu testen, wenn Sie zu Detection Rules beitragen.
Für eine fortgeschrittenere Nutzung der Befehlszeilenschnittstelle (CLI) lesen Sie den CLI-Leitfaden.
How to contribute
Wir freuen uns über Ihre Beiträge zu Detection Rules! Bevor Sie einen Beitrag leisten, machen Sie sich bitte mit diesem Repository, seiner Verzeichnisstruktur und unserer Philosophie zur Regelerstellung vertraut. Wenn Sie bereit sind, einen Beitrag zu leisten, lesen Sie den Contribution-Leitfaden, um zu erfahren, wie wir Erkennungsideen in Produktionsregeln umwandeln und mit Tests validieren.
Detections as Code (DaC)
Das Detection-Rules-Repository enthält eine Reihe von Befehlen, die beim Verwalten von Regeln mit einer "As-Code"-Philosophie helfen. Wir empfehlen, mit unserer DaC-spezifischen Dokumentation für Strategien und empfohlene Einrichtungsinformationen zu beginnen. Wenn Sie jedoch direkt einsteigen möchten, lesen Sie bitte unsere lokale Dokumentation zu Detections as Code und die Dokumentation zur Verwaltung benutzerdefinierter Regeln für Informationen zur Konfiguration dieses Repositorys für die Verwendung mit benutzerdefinierten Regeln, gefolgt von unserer CLI-Dokumentation für Informationen zu unseren Befehlen zum Importieren und Exportieren von Regeln.
RTAs
Red Team Automations (RTAs), die zur Emulation von Angreifertechniken und zur Überprüfung der Regeln verwendet werden, finden Sie im dedizierten Repository – Cortado.
Licensing
Alles in diesem Repository – Regeln, Code usw. – ist unter der Elastic License v2 lizenziert. Diese Regeln sind für die Verwendung im Kontext der Detection Engine innerhalb der Elastic-Security-Anwendung konzipiert. Wenn Sie unseren verwalteten Elastic-Cloud-Dienst oder die Standarddistribution der Elastic-Stack-Software verwenden, die den vollständigen Satz kostenloser Funktionen enthält, erhalten Sie die neuesten Regeln beim ersten Aufruf der Detection Engine.
Gelegentlich möchten wir möglicherweise Regeln aus einem anderen Repository importieren, die bereits eine Lizenz besitzen, z. B. MIT oder Apache 2.0. Das ist willkommen, solange die Lizenz eine Unterlizenzierung unter der Elastic License v2 erlaubt. Wir behalten diese Lizenzhinweise in NOTICE.txt und unterlizenzieren sie gemeinsam mit allen anderen Regeln unter der Elastic License v2. Wir verlangen außerdem, dass Mitwirkende eine Contributor License Agreement unterzeichnen, bevor sie Code zu Elastic-Repositories beitragen.
Questions? Problems? Suggestions?
- Möchten Sie mehr über die Detection Engine erfahren? Schauen Sie sich die Übersicht in Kibana an.
- Dieses Repository enthält neue und aktualisierte Regeln, die noch nicht veröffentlicht wurden. Die neuesten Regeln, die mit dem Stack veröffentlicht wurden, finden Sie in der Prebuilt-Rule-Referenz.
- Wenn Sie einen False Positive oder eine andere Art von Fehler melden möchten, erstellen Sie bitte ein GitHub-Issue und prüfen Sie zuerst, ob bereits eines existiert.
- Benötigen Sie Hilfe bei Detection Rules? Stellen Sie ein Issue oder fragen Sie in unserem Security-Discuss-Forum oder im Kanal #security-detection-rules im Slack-Workspace.
- Für DaC-spezifische Fälle finden Sie weitere Informationen in unserer Support- und Scope-Dokumentation.