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.
Find a file
Felipe Luis Quezada Valenzuela 80a5fba9c3 first commit
2025-01-30 16:02:58 -03:00
README.md first commit 2025-01-30 16:02:58 -03:00

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

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:
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
cd ./misp-fixcor
python3 -m venv venv
  1. Se activa entorno virtual:
source venv/bin/activate
  1. Instalar librerias de Python:
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:

#!/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) :

@daily bash ./misp-fixcor/run.sh