
Desarrolla, valida y publica reglas de detección SIEM para Elastic Security, con herramientas CLI de Python, parseo de KQL, integración con Kibana y consultas de threat hunting empaquetadas.
[](https://www.python.org/downloads/)
[](https://github.com/elastic/detection-rules/actions)
[](https://ela.st/slack)
[](https://ela.st/detection-rules-navigator-trade)
# Reglas de detección
Detection Rules es el hogar de las reglas utilizadas por Elastic Security. Este repositorio se utiliza para el desarrollo, mantenimiento, pruebas, validación y publicación de reglas para el Motor de Detección de Elastic Security.
Este repositorio se anunció por primera vez en la publicación del blog de Elastic, [Elastic Security abre un repositorio público de reglas de detección](https://elastic.co/blog/elastic-security-opens-public-detection-rules-repo). Para contenido adicional, consulte el seminario web que lo acompaña, [Elastic Security: Presentación del repositorio público de reglas de detección](https://www.elastic.co/webinars/introducing-the-public-repository-for-detection-rules).
## Tabla de contenidos
- [Reglas de detección](#detection-rules)
- [Tabla de contenidos](#table-of-contents)
- [Resumen de este repositorio](#overview-of-this-repository)
- [Primeros pasos](#getting-started)
- [Cómo contribuir](#how-to-contribute)
- [Detecciones como código (DaC)](#detections-as-code-dac)
- [RTAs](#rtas)
- [Licencia](#licensing)
- [¿Preguntas? ¿Problemas? ¿Sugerencias?](#questions-problems-suggestions)
## Resumen de este repositorio
Detection Rules contiene más que simples archivos de reglas estáticas. Este repositorio también contiene código para crear canalizaciones de detección como código, pruebas unitarias en Python e integración con el Motor de Detección en Kibana.
| folder | description |
|------------------------------------------------ |------------------------------------------------------------------------------------ |
| [`detection_rules/`](https://github.com/elastic/detection-rules/blob/main/detection_rules) | Módulo de Python para el análisis, validación y empaquetado de reglas |
| [`etc/`](https://github.com/elastic/detection-rules/blob/main/detection_rules/etc) | Archivos diversos, como esquemas de ECS y Beats, y archivos de configuración |
| [`hunting/`](https://github.com/elastic/detection-rules/blob/main/hunting) | Directorio raíz donde se almacenan el paquete y las consultas de caza de amenazas |
| [`kibana/`](https://github.com/elastic/detection-rules/blob/main/lib/kibana) | Biblioteca de Python para manejar las llamadas API a Kibana y al Motor de Detección |
| [`kql/`](https://github.com/elastic/detection-rules/blob/main/lib/kql) | Biblioteca de Python para analizar y validar el Lenguaje de Consulta de Kibana |
| [`rules/`](https://github.com/elastic/detection-rules/blob/main/rules) | Directorio raíz donde se almacenan las reglas |
| [`rules_building_block/`](https://github.com/elastic/detection-rules/blob/main/rules_building_block) | Directorio raíz donde se almacenan las reglas de bloques de construcción |
| [`tests/`](https://github.com/elastic/detection-rules/blob/main/tests) | Código de Python para pruebas unitarias de reglas |
## Primeros pasos
Aunque las reglas se pueden agregar creando manualmente archivos `.toml`, no lo recomendamos. Este repositorio también consta de un módulo de Python que ayuda en la creación de reglas y las pruebas unitarias. Suponiendo que tenga Python 3.12+, ejecute el siguiente comando para instalar las dependencias usando el makefile:
```console
✗ 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...
...
```
O instale las dependencias usando el siguiente comando:
```console
$ 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
...
```
Nota: Los paquetes `kibana` y `kql` no están disponibles en PyPI y deben instalarse desde el directorio `lib`. El paquete `hunting` tiene dependencias opcionales que se instalan con `pip3 install ".[hunting]`.
```console
# 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
```
Recuerde asegurarse de activar su entorno virtual si está usando uno. Si instaló mediante `make`, el entorno virtual asociado se crea en `env/detection-rules-build/`. Si tiene problemas con un entorno Python 3.12, consulte la sección correspondiente en nuestra [guía de solución de problemas](https://github.com/elastic/detection-rules/blob/main/Troubleshooting.md).
Para confirmar que todo se instaló correctamente, ejecute con la opción `--help`
```console
$ 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.
```
Nota:
- Si está usando un entorno virtual, asegúrese de activarlo antes de ejecutar el comando anterior.
- Si usa Windows, es posible que también deba ejecutar `<venv_directory>\Scripts\pywin32_postinstall.py -install` según su versión de Python.
La [guía de contribución](https://github.com/elastic/detection-rules/blob/main/CONTRIBUTING.md) describe cómo usar los comandos `create-rule` y `test` para crear y probar una nueva regla al contribuir a Detection Rules.
Para un uso más avanzado de la interfaz de línea de comandos (CLI), consulte la [guía de CLI](https://github.com/elastic/detection-rules/blob/main/CLI.md).
## Cómo contribuir
¡Damos la bienvenida a tus contribuciones a Detection Rules! Antes de contribuir, familiarízate con este repositorio, su [estructura de directorios](#overview-of-this-repository) y nuestra [filosofía](https://github.com/elastic/detection-rules/blob/main/PHILOSOPHY.md) sobre la creación de reglas. Cuando estés listo para contribuir, lee la [guía de contribución](https://github.com/elastic/detection-rules/blob/main/CONTRIBUTING.md) para aprender cómo convertimos las ideas de detección en reglas de producción y las validamos con pruebas.
## Detecciones como código (DaC)
El repositorio Detection Rules incluye una serie de comandos para ayudar a gestionar reglas con una filosofía «como código». Recomendamos comenzar con nuestra [documentación específica de DaC](https://dac-reference.readthedocs.io/en/latest/) para conocer las estrategias y la configuración recomendada. Sin embargo, si prefieres ir directamente al grano, consulta nuestra [documentación local de detecciones como código](https://github.com/elastic/detection-rules/blob/main/docs-dev/detections-as-code.md) y la [documentación de reglas personalizadas](https://github.com/elastic/detection-rules/blob/main/docs-dev/custom-rules-management.md) para obtener información sobre cómo configurar este repositorio para usarlo con reglas personalizadas, y luego nuestra [documentación de CLI](https://github.com/elastic/detection-rules/blob/main/CLI.md) para obtener información sobre los comandos para importar y exportar reglas.
## RTAs
Las automatizaciones de Red Team (RTA) utilizadas para emular técnicas de atacantes y verificar las reglas se pueden encontrar en el repositorio dedicado: [Cortado](https://github.com/elastic/cortado).
## Licencia
Todo en este repositorio (reglas, código, etc.) está licenciado bajo la [Licencia Elastic v2](https://github.com/elastic/detection-rules/blob/main/LICENSE.txt). Estas reglas están diseñadas para usarse en el contexto del Motor de Detección dentro de la aplicación Elastic Security. Si usas nuestro [servicio gestionado Elastic Cloud](https://www.elastic.co/cloud/) o la distribución predeterminada del software Elastic Stack que incluye el [conjunto completo de funciones gratuitas](https://www.elastic.co/subscriptions), obtendrás las últimas reglas la primera vez que navegues al motor de detección.
Ocasionalmente, es posible que queramos importar reglas de otro repositorio que ya tengan una licencia, como MIT o Apache 2.0. Esto es bienvenido, siempre que la licencia permita la sublicencia bajo la Licencia Elastic v2. Mantenemos esos avisos de licencia en `NOTICE.txt` y sublicenciamos bajo la Licencia Elastic v2 junto con todas las demás reglas. También exigimos a los contribuyentes que firmen un [Acuerdo de Licencia de Contribuyente](https://www.elastic.co/contributor-agreement) antes de contribuir con código a cualquier repositorio de Elastic.
## ¿Preguntas? ¿Problemas? ¿Sugerencias?
- ¿Quieres saber más sobre el Motor de Detección? Consulta la [descripción general](https://www.elastic.co/guide/en/security/current/detection-engine-overview.html) en Kibana.
- Este repositorio incluye reglas nuevas y actualizadas que aún no se han publicado. Para ver el conjunto más reciente de reglas publicadas con el stack, consulta la [referencia de reglas predefinidas](https://www.elastic.co/guide/en/security/current/prebuilt-rules-downloadable-updates.html).
- Si deseas informar un falso positivo u otro tipo de error, crea un issue en GitHub y verifica primero si ya existe uno.
- ¿Necesitas ayuda con Detection Rules? Publica un issue o pregunta en nuestro [Foro de Discusión de Seguridad](https://discuss.elastic.co/c/security/) o en el canal **#security-detection-rules** dentro del [espacio de trabajo de Slack](https://www.elastic.co/blog/join-our-elastic-stack-workspace-on-slack).
- Para casos específicos de DaC, consulta nuestra [documentación de soporte y alcance](https://github.com/elastic/detection-rules/blob/main/docs-dev/detections-as-code.md#support-and-scope) para obtener más información.