Les règles de détection hébergent les règles utilisées par Elastic Security. Ce référentiel est utilisé pour le développement, la maintenance, les tests, la validation et la publication de règles pour le moteur de détection d'Elastic Security.
Ce référentiel a été annoncé pour la première fois sur le blog d'Elastic, Elastic Security ouvre un dépôt public de règles de détection. Pour obtenir du contenu supplémentaire, consultez le webinaire ci-joint, Elastic Security : Présentation du référentiel public pour les règles de détection.
Règles de détection
Table des matières
Aperçu de ce référentiel
Commencer
Comment contribuer
Licence
Des questions ? Des problèmes ? Des suggestions ?
Les règles de détection contiennent bien plus que de simples fichiers de règles statiques. Ce référentiel contient également du code pour les tests unitaires en Python et l'intégration avec le moteur de détection dans Kibana.
dossier | description |
---|---|
detection_rules/ | Module Python pour l'analyse, la validation et le packaging des règles |
etc/ | Fichiers divers, tels que les schémas ECS et Beats |
hunting/ | Répertoire racine où sont stockés le package de recherche de menaces et les requêtes |
kibana/ | Bibliothèque Python pour gérer les appels d'API vers Kibana et le moteur de détection |
kql/ | Bibliothèque Python pour analyser et valider le langage de requête Kibana |
rta/ | Code Red Team Automation utilisé pour émuler les techniques des attaquants, utilisé pour les tests de règles |
rules/ | Répertoire racine où sont stockées les règles |
rules_building_block/ | Répertoire racine où sont stockées les règles des blocs de construction |
tests/ | Code Python pour les règles de tests unitaires |
Bien que des règles puissent être ajoutées en créant manuellement des fichiers .toml
, nous ne le recommandons pas. Ce référentiel comprend également un module Python qui facilite la création de règles et les tests unitaires. En supposant que vous disposez de Python 3.12+, exécutez la commande ci-dessous pour installer les dépendances à l'aide du makefile :
✗ makepython3.12 -m pip install --upgrade pip setuptoolsRecherche dans les index : https://pypi.org/simpleExigence déjà satisfaite : pip dans /opt/homebrew/lib/python3.12/site-packages (24.0)Exigence déjà satisfaite : outils de configuration dans /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 setuptoolsRecherche dans les index : https://pypi.org/ simpleRequirement déjà satisfait : pip dans ./env/detection-rules-build/lib/python3.12/site-packages (24.0) Collecte des outils de configuration à l'aide des outils de configuration en cache-69.1.1-py3-none-any.whl.metadata (6,2 Ko) Utilisation des outils de configuration en cache-69.1.1-py3-none-any.whl (819 Ko) Installation des packages collectés : outils de configuration avec succès installé setuptools-69.1.1Installation des packages kql et kibana......
Ou installez les dépendances à l'aide de la commande suivante :
$ pip3 install ".[dev]"Collecte de jsl==0.2.4 Téléchargement de jsl-0.2.4.tar.gz (21 ko)Collecte de jsonschema==3.2.0 Téléchargement de jsonschema-3.2.0-py2.py3-none- any.whl (56 Ko) |████████████████████████████████| 56 Ko 318 Ko/sCollecte des requêtes==2.22.0 Téléchargement des requêtes-2.22.0-py2.py3-none-any.whl (57 Ko) |████████████████████████████████| 57 Ko 1,2 Mo/s Collecte Click==7,0 Téléchargement Click-7.0-py2.py3-none-any.whl (81 Ko) |████████████████████████████████| 81 Ko 2,6 Mo/s...
Remarque : Les packages kibana
et kql
ne sont pas disponibles sur PyPI et doivent être installés à partir du répertoire lib
. Le package hunting
a des dépendances facultatives à installer avec pip3 install ".[hunting]
.
# Installer depuis le référentielpip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kibanapip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kql# Ou localement pour le développementpip3, installez lib/kibana lib/kql
N'oubliez pas, assurez-vous d'activer votre environnement virtuel si vous en utilisez un. S'il est installé via make
, l'environnement virtuel associé est créé dans env/detection-rules-build/
. Si vous rencontrez des difficultés lors de l'utilisation d'un environnement Python 3.12, veuillez consulter la section correspondante de notre guide de dépannage.
Pour confirmer que tout a été correctement installé, exécutez avec l'indicateur --help
$ python -m détection_rules --helpUsage : détection_rules [OPTIONS] COMMANDE [ARGS]... Commandes pour le référentiel de règles de détection.Options : -d, --debug / -n, --no-debug Imprimer la trace complète de la pile d'exceptions sur les erreurs -h, --help Afficher ce message et quitter.Commandes : create-rule Crée une règle de détection. dev Commandes pour le développement et la gestion par les utilisateurs internes. es Commandes pour l'intégration avec Elasticsearch. import-rules Importer des règles depuis json, toml ou Kibana règle exportée... kibana Commandes pour l'intégration avec Kibana. mass-update Mettre à jour plusieurs règles en fonction des résultats eql. normalize-data Normaliser les horodatages et le tri des données Elasticsearch. Rule-Search Utilisez KQL ou EQL pour trouver des règles correspondantes. test Exécutez des tests unitaires sur toutes les règles. toml-lint Nettoyer les fichiers avec un simple formatage toml. validate-all Vérifie si toutes les règles sont validées par rapport à un schéma. validate-rule Vérifiez si une règle stockée dans le répertoire des règles est validée par rapport à... view-rule Afficher une règle interne ou un fichier de règles spécifié.
Note:
Si vous utilisez un environnement virtuel, assurez-vous de l'activer avant d'exécuter la commande ci-dessus.
Si vous utilisez Windows, vous devrez peut-être également exécuter <venv_directory>Scriptspywin32_postinstall.py -install
en fonction de votre version de Python.
Le guide de contribution décrit comment utiliser les commandes create-rule
et test
pour créer et tester une nouvelle règle lors de la contribution aux règles de détection.
Pour une utilisation plus avancée de l’interface de ligne de commande (CLI), reportez-vous au guide CLI.
Nous apprécions vos contributions aux règles de détection ! Avant de contribuer, veuillez vous familiariser avec ce référentiel, sa structure de répertoires et notre philosophie sur la création de règles. Lorsque vous êtes prêt à contribuer, lisez le guide de contribution pour découvrir comment nous transformons les idées de détection en règles de production et validons par des tests.
Tout ce qui se trouve dans ce référentiel (règles, code, RTA, etc.) est sous licence Elastic License v2. Ces règles sont conçues pour être utilisées dans le contexte du moteur de détection au sein de l'application Elastic Security. Si vous utilisez notre service géré Elastic Cloud ou la distribution par défaut du logiciel Elastic Stack qui inclut l'ensemble des fonctionnalités gratuites, vous obtiendrez les dernières règles la première fois que vous accéderez au moteur de détection.
Parfois, nous pouvons vouloir importer des règles depuis un autre référentiel disposant déjà d'une licence, tel que MIT ou Apache 2.0. Ceci est le bienvenu, à condition que la licence autorise l'octroi de sous-licences sous la licence Elastic v2. Nous conservons ces avis de licence dans NOTICE.txt
et accordons une sous-licence en tant que licence Elastic v2 avec toutes les autres règles. Nous demandons également aux contributeurs de signer un accord de licence de contributeur avant de contribuer au code d'un référentiel Elastic.
Vous souhaitez en savoir plus sur le moteur de détection ? Consultez la présentation dans Kibana.
Ce référentiel comprend des règles nouvelles et mises à jour qui n'ont pas encore été publiées. Pour voir le dernier ensemble de règles publié avec la pile, consultez la référence des règles prédéfinies.
Si vous souhaitez signaler un faux positif ou un autre type de bug, veuillez créer un problème GitHub et vérifier d'abord s'il en existe un.
Besoin d'aide avec les règles de détection ? Publiez un problème ou posez la question sur notre forum de discussion sur la sécurité ou sur le canal #security-detection-rules dans l'espace de travail Slack.