## Descripción Este proyecto corrige de manera automatizada y programada las correlaciones de atributos dentro de MISP, activando únicamente las necesarias y deshabilitando las que no deben ser correladas. ### Características: - Desactiva/Activa la correlación según un lista de atributos definida por usuario. - Desactiva/Activa la opción "IDS" según un lista de atributos definida por usuario. - Configuración de umbral de tiempo. Se puede definir una búsqueda de los últimos eventos a contemplar en la corrección (Por defecto. 7 días) ## Componentes - Libreria PyMISP (pymisp): https://pypi.org/project/pymisp/ - Libreria SQLAlchemy: https://pypi.org/project/SQLAlchemy/ ## Descarga 1. Descargar ZIP del repositorio (https://git.csirt.gob.cl/public/misp-fixcor/archive/main.zip) 2. Al descomprimir el archivo, mover carpeta "misp-jobfixer" dentro de carpeta "home" de usuario u otra ubicación definida. ## Configuración inicial 1. En el archivo config.py se debe definir los parametros según caso: ``` python MISP_CONFIG = { "misp_url":"URL_MISP", "misp_authkey":"AUTHKEY_MISP" } # Se si quiere agregar a exclusion de MISP cada atributo al deshabilitar correlacion NO_CORRELATIVOS_EXCLUSION = False # Maximo de atributosa a procesar por evento MAX_ATTRS = 25000 #Workers (Max = 4) NUM_WORKERS = 4 # Rango de Busqueda de Eventos (ultimos días) (Default. 7 dias) RANGO_DIAS = "7d" NO_CORRELATIVOS = [ "comment", # Comentarios descriptivos "email-subject", # Asuntos de correos electrónicos "email-dst", # Emails de destinatarios "email-src", # Emails de remitentes "hostname", # Nombres de host "port", # Puertos "link", # Enlaces "phone-number", # Números de teléfono "user-agent", # Agentes de usuario "size-in-bytes", # Tamaños en bytes "vulnerability", # Vulnerabilidades (CVE) "whois-registrant-email", # Correos de registrantes WHOIS "whois-registrant-name", # Nombres de registrantes WHOIS "regkey", # Claves de registro de Windows "regkey|value", # Claves de registro con valores "text", # Texto libre "datetime", # Fechas y horas "campaign-name", # Nombres de campaña "attachment", # Archivos adjuntos "email" # Emails de remitentes ] IDS_CORRELATIVOS = [ "ip-src", # IP de origen "ip-dst", # IP de destino "domain", # Dominio "domain|ip", # Dominio con IP asociada "url", # URL completas "uri", # URI (fragmentos de rutas) "http-method", # Métodos HTTP (GET, POST, etc.) "email-attachment", # Nombres de archivos adjuntos en correos "filename", # Nombres de archivo "filename|md5", # Nombre de archivo con su hash MD5 "filename|sha1", # Nombre de archivo con su hash SHA1 "filename|sha256", # Nombre de archivo con su hash SHA256 "md5", # Hash MD5 "sha1", # Hash SHA1 "sha256", # Hash SHA256 "authentihash", # Hash Authentihash "impfuzzy", # Hash ImpHash (ejecutable PE) "tlsh", # Hash TLSH "ssdeep", # Hash SSDEEP (fuzzy hash) "mutex", # Nombres de mutex "registry-key", # Claves de registro (si son relevantes) "registry-key|value", # Claves de registro con valores "ip-src|port", # IP de origen con puerto "ip-dst|port", # IP de destino con puerto "asn", # ASN (Autonomous System Number) "cidr", # Rango CIDR (IPs) "mac-address", # Dirección MAC "x509-fingerprint-md5", # Huella de certificados X509 (MD5) "x509-fingerprint-sha1", # Huella de certificados X509 (SHA1) "x509-fingerprint-sha256", # Huella de certificados X509 (SHA256) "ja3-fingerprint-md5", # Huella JA3 (TLS handshake) "btc", # Dirección de Bitcoin "iban", # Número de cuenta bancaria (IBAN) "bank-account-nr", # Número de cuenta bancaria "payment-card-number" # Número de tarjeta de pago ] ``` En config.py podemos definir los siguientes valores: - MISP_CONFIG: Se definen valores de conexión a MISP - NO_CORRELATIVOS_EXCLUSION: Por defecto (False), no agrega atributo a exclusiones de MISP (correlation exclusions) cuando es corregido. - MAX_ATTRS: Eventos con menor o igual cantidad de atributos a este valor serán procesados. - NUM_WORKERS: Cantidad de Hilos utilizados de CPU al ejecutar script. - RANGO_DIAS: Ultimos días de eventos en MISP al momento de ejecutar el script (Por defecto - 7 días) (Eventos a procesar) - NO_CORRELATIVOS: Lista de tipos de atributos que se debe desactivar la opción de "correlación" junto con la opción "IDS. (Correlate Off) + (IDS Off) - IDS_CORRELATIVOS: Lista de tipos de atributos que se debe activar la opción de "correlación" junto con la opción "IDS. (Correlate On) + (IDS On) ## Instalación en entorno virtual Una vez configurado "config.py" procedemos con la instalación 1. Se crea entorno virtual de Python ``` shell cd ./misp-fixcor python3 -m venv venv ``` 2. Se activa entorno virtual: ``` shell source venv/bin/activate ``` 3. Instalar librerias de Python: ``` shell pip install -r requirements.txt ``` ## Agengar Preparamos el archivo "run.sh" ajustando las rutas en "source" y "cd" para la ejecución correcta del archivo: ```shell #!/bin/bash # Activate source /home/user/misp-fixcor/venv/bin/activate # Enter folder cd /home/user/misp-fixcor/ # Llamar al script Python python main.py # Deactivate deactivate ``` Debemos crear en crontab una entrada con la ejecución programada (Como usuario root o sudo), por ejemplo para que realice la revisión cada dia a las 00:00 (recomendado) : ``` shell @daily bash ./misp-fixcor/run.sh ```