misp-fixcor/README.md
Felipe Luis Quezada Valenzuela 80a5fba9c3 first commit
2025-01-30 16:02:58 -03:00

161 lines
6 KiB
Markdown

## 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
```