Las reglas de detección son el hogar de las reglas utilizadas por Elastic Security. Este repositorio se utiliza para el desarrollo, mantenimiento, prueba, 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. Para obtener contenido adicional, consulte el seminario web adjunto, Elastic Security: Presentación del repositorio público para reglas de detección.
Reglas de detección
Tabla de contenido
Descripción general de este repositorio
Empezando
Como contribuir
Licencias
¿Preguntas? ¿Problemas? ¿Sugerencias?
Las reglas de detección contienen más que solo archivos de reglas estáticas. Este repositorio también contiene código para pruebas unitarias en Python y la integración con el motor de detección en Kibana.
carpeta | descripción |
---|---|
detection_rules/ | Módulo Python para análisis, validación y empaquetado de reglas |
etc/ | Archivos varios, como esquemas ECS y Beats |
hunting/ | Directorio raíz donde se almacenan el paquete de búsqueda de amenazas y las consultas. |
kibana/ | Biblioteca Python para manejar las llamadas API a Kibana y el motor de detección |
kql/ | Biblioteca Python para analizar y validar el lenguaje de consulta Kibana |
rta/ | Código de Red Team Automation utilizado para emular técnicas de atacantes, utilizado para pruebas de reglas |
rules/ | Directorio raíz donde se almacenan las reglas |
rules_building_block/ | Directorio raíz donde se almacenan las reglas de los bloques de construcción |
tests/ | Código Python para reglas de prueba unitaria |
Aunque se pueden agregar reglas creando archivos .toml
manualmente, no lo recomendamos. Este repositorio también consta de un módulo de Python que ayuda a la creación de reglas y pruebas unitarias. Suponiendo que tiene Python 3.12+, ejecute el siguiente comando para instalar las dependencias usando el archivo MAKE:
✗ makepython3.12 -m pip install --upgrade pip setuptoolsBuscando en índices: https://pypi.org/simpleRequisito ya satisfecho: pip in /opt/homebrew/lib/python3.12/site-packages (24.0)Requisito ya satisfecho : herramientas de configuración en /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 setuptoolsBuscando en índices: https://pypi.org/ simpleRequirement ya satisfecho: pip en ./env/detection-rules-build/lib/python3.12/site-packages (24.0) Recopilación de herramientas de configuración Uso de herramientas de configuración en caché-69.1.1-py3-none-any.whl.metadata (6,2 kB) Uso de herramientas de configuración en caché-69.1.1-py3-none-any.whl (819 kB) Instalación de paquetes recopilados: setuptools con éxito setuptools-69.1.1 instaladosInstalando kql y kibana paquetes......
O instale las dependencias usando el siguiente comando:
$ pip3 install ".[dev]"Recopilando jsl==0.2.4 Descargando jsl-0.2.4.tar.gz (21 kB)Recopilando jsonschema==3.2.0 Descargando jsonschema-3.2.0-py2.py3-none- cualquier.whl (56 kB) |████████████████████████████████| 56 kB 318 kB/sRecopilación de solicitudes==2.22.0 Descarga de solicitudes-2.22.0-py2.py3-none-any.whl (57 kB) |████████████████████████████████| 57 kB 1,2 MB/sRecopilación de clic==7.0 Descargando clic-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 instalarán con pip3 install ".[hunting]
.
# Instalar desde el repositoriopip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kibanapip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kql# O localmente para desarrollopip3 instale lib/kibana lib/kql
Recuerde, asegúrese de activar su entorno virtual si está utilizando uno. Si se instala mediante make
, el entorno virtual asociado se crea en env/detection-rules-build/
. Si tiene problemas para utilizar un entorno Python 3.12, consulte la sección correspondiente en nuestra guía de solución de problemas.
Para confirmar que todo se instaló correctamente, ejecute con el indicador --help
$ python -m detect_rules --helpUsage: detect_rules [OPCIONES] COMANDO [ARGS]... Comandos para el repositorio de reglas de detección. Opciones: -d, --debug / -n, --no-debug Imprime el seguimiento completo de la excepción en los errores -h, --help Muestra este mensaje y sale.Comandos: create-rule Crea una regla de detección. dev Comandos para desarrollo y gestión por parte interna... es Comandos para integración con Elasticsearch. import-rules Importa reglas desde json, toml o regla exportada de Kibana... kibana Comandos para la integración con Kibana. actualización masiva Actualiza múltiples reglas según los resultados de eql. normalize-data Normaliza las marcas de tiempo y ordena los datos de Elasticsearch. búsqueda de reglas Utilice KQL o EQL para encontrar reglas coincidentes. test Ejecute pruebas unitarias sobre todas las reglas. toml-lint Limpiar archivos con un formato toml simple. validar-todo Comprueba si todas las reglas se validan con respecto a un esquema. Validar regla Comprobar si una regla preparada en el directorio de reglas se valida con un... view-rule Ver una regla interna o un archivo de regla especificado.
Nota:
Si está utilizando 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>Scriptspywin32_postinstall.py -install
dependiendo de su versión de Python.
La guía de contribución describe cómo utilizar los comandos create-rule
y test
para crear y probar una nueva regla al contribuir a las reglas de detección.
Para un uso más avanzado de la interfaz de línea de comandos (CLI), consulte la guía de la CLI.
¡Agradecemos sus contribuciones a las reglas de detección! Antes de contribuir, familiarícese con este repositorio, su estructura de directorios y nuestra filosofía sobre la creación de reglas. Cuando esté listo para contribuir, lea la guía de contribución para aprender cómo convertimos ideas de detección en reglas de producción y validamos con pruebas.
Todo lo que hay en este repositorio (reglas, código, RTA, etc.) tiene la licencia Elastic License v2. Estas reglas están diseñadas para usarse en el contexto del motor de detección dentro de la aplicación Elastic Security. Si está utilizando nuestro servicio administrado de Elastic Cloud o la distribución predeterminada del software Elastic Stack que incluye el conjunto completo de funciones gratuitas, obtendrá las reglas más recientes la primera vez que navegue hasta el motor de detección.
En ocasiones, es posible que queramos importar reglas de otro repositorio que ya tenga licencia, como MIT o Apache 2.0. Esto es bienvenido, siempre y cuando la licencia permita sublicenciar bajo la Licencia Elastic v2. Mantenemos esos avisos de licencia en NOTICE.txt
y sublicenciamos como Licencia Elastic v2 con todas las demás reglas. También exigimos que los contribuyentes firmen un Acuerdo de licencia de colaborador antes de contribuir con código a cualquier repositorio de Elastic.
¿Quiere saber más sobre el motor de detección? Consulte la descripción general en Kibana.
Este repositorio incluye reglas nuevas y actualizadas que aún no se han publicado. Para ver el último conjunto de reglas publicadas con la pila, consulte la referencia de reglas prediseñadas.
Si desea informar un falso positivo u otro tipo de error, cree un problema de GitHub y verifique primero si existe uno.
¿Necesita ayuda con las reglas de detección? Publique un problema o pregunte en nuestro Foro de discusión sobre seguridad o en el canal #security-detection-rules dentro del espacio de trabajo de Slack.