Tutoriales y Manuales
Entradas Mensuales
-
▼
2024
(Total:
983
)
-
▼
noviembre
(Total:
31
)
- VMware Workstation y Fusion ahora son gratis
- Aprovechan el calor de la PS5 para mantener la piz...
- Guía compra AMD Ryzen 3, Ryzen 5, Ryzen 7 y Ryzen 9
- 50 cosas que puedes pedirle a Alexa y no conocías
- Mover archivos más rápido en Windows con "Enviar a"
- La Comisión Europea pide a Apple que elimine el ge...
- Grabar pantalla en macOS
- Apple presenta Share Item Location, la función par...
- Microsoft cambiará actualizaciones de Windows para...
- D-Link no solucionará una vulnerabilidad crítica q...
- Polvo cerámico mejora hasta un 72% el rendimiento ...
- Concatenación de ficheros comprimidos para infecta...
- Filtran datos de empleados de Amazon, McDonald's, ...
- El código IUA escrito en la roseta de fibra óptica...
- Fibra luminosa, descubierta por accidente, podría ...
- Canadá prohíbe el uso de TikTok
- Google tumbó la web de este matrimonio por hacerle...
- Visualizar con Grafana los eventos del IDS/IPS Sur...
- China está usando la IA de Meta para fines militares
- Multa de 85 millones a Telefónica en Estados Unido...
- Vulnerabilidad API de la web de Kia permitió a ata...
- Google revela el primer fallo de seguridad descubi...
- La IA llega a Paint y Notepad en Windows 11
- Alemania redacta una ley para proteger a los inves...
- Microsoft ralentizó el Panel de Control de Windows...
- Guías Equivalencias de procesadores Intel y AMD [G...
- Roban 15 mil credenciales en Git y hay 10 mil repo...
- Publican información del creador del infostealer "...
- Vulnerabilidad RCE en MS SharePoint explotada acti...
- Panel de Control Grafana para el WAF de Apache-Ngi...
- Cómo visualizar los registros de Apache/Nginx en m...
- ► septiembre (Total: 50 )
-
▼
noviembre
(Total:
31
)
-
►
2023
(Total:
710
)
- ► septiembre (Total: 65 )
-
►
2022
(Total:
967
)
- ► septiembre (Total: 72 )
-
►
2021
(Total:
730
)
- ► septiembre (Total: 56 )
-
►
2020
(Total:
212
)
- ► septiembre (Total: 21 )
-
►
2019
(Total:
102
)
- ► septiembre (Total: 14 )
-
►
2017
(Total:
231
)
- ► septiembre (Total: 16 )
-
►
2016
(Total:
266
)
- ► septiembre (Total: 38 )
-
►
2015
(Total:
445
)
- ► septiembre (Total: 47 )
-
►
2014
(Total:
185
)
- ► septiembre (Total: 18 )
-
►
2013
(Total:
100
)
- ► septiembre (Total: 3 )
-
►
2011
(Total:
7
)
- ► septiembre (Total: 1 )
Blogroll
Etiquetas
Entradas populares
-
Después de ver qué es una vCPU y la diferencia entre núcleos (cores) e hilos en los procesadores, pasamos a explicar toda la nomenclatura d...
-
Un Actor de Amenazas que opera bajo el nombre de usuario Nam3L3ss ha explotado una vulnerabilidad crítica en MOVEit de 2023, un software ...
-
Los procesadores Intel y AMD han vivido una importante renovación en los últimos dos años. El gigante de Sunnyvale mantuvo su apuesta por ...
Visualizar con Grafana los eventos del IDS/IPS Suricata (Eve.json)
Desde hace ya varios años estamos utilizando el magnífico honeypot T-Pot basado en contenedores Docker, en una RaspBerry Pi 4 y la cantidad de eventos registrados es sumamente elevada. Por defecto T-Pot lleva ELK (ElasticSearch-LogStash y Kibana) para visualizar los datos registrados. En esta ocasión utilizaremos el fichero de registro de Suricata (eve.json) par mostrar gráficamente con Grafana las estadísticas fundamentales (reglas, atacantes, etc). Para ello utilizaremos Promtail y Loki, para procesar (ingerir) el fichero Json generado por Suricata.
¿Qué es un IDS?
Es la primera pieza que voy a montar en el SOC, ya que me permitirá analizar el tráfico de red para buscar datos maliciosos o sospechosos y aplicar reglas preconfiguradas. También nos puede dar datos como máquinas que se conectan a ciertas direcciones IPs, puertos específicos e incluso servidores.
Un IDS tiene dos tareas fundamentales:
- Prevención: escuchando el tráfico de red o un PC, mediante sensores e identificar ataques aplicando reglas, mediante reconocimiento de patrones de ataque.
- Reacción: detecta patrones de intrusión tanto en el comportamiento del sistema como en la red.
Este sistema complementa a por ejemplo un cortafuegos en el que abrimos un puerto 80 o 443 a un servidor web, ya que nos permite detectar de intrusiones en el sistema o vulnerabilidades.
Hay dos tipos de IDS por comportamiento:
- Pasivo: Genera entradas para registrar las intrusiones y manda alertas
- Activo: Hace lo mismo que un Pasivo, y a su vez es capaz de bloquear IPs o cerrar puertos de comunicación, por ejemplo.
A nivel funcional, también hay varios tipos de IDS según de donde recogen el dato:
- HIDS: Sistema de detección de intrusos, que recogen datos de usuarios y servicios de una máquina determinada
- IDPS: Sistema de detección de intrusos en red, que hacen una escucha en modo promiscuo en la red
- SIDS: Sistema de detección de intrusos basados en firmas
- Y los sistemas de detección de intrusos basados en anomalías
Suricata es más que un IDS,
básicamente se trata de un motor de red de código abierto y
multiplataforma de alto rendimiento que combina las tecnologías IDS
(Intrusion Detection System), IPS (Intrusion Prevention System) y NSM
(Network Security Monitoring), que fue lanzado en el año 2009 y es
desarrollado por la comunidad OISF (Open Information Security
Foundation).
Fichero configuración /etc/suricata/suricata.yaml:
outputs:
# Extensible Event Format (nicknamed EVE) event log in JSON format
- eve-log:
enabled: yes
filetype: regular #regular|syslog|unix_dgram|unix_stream|redis
filename: eve.json
Estos cuatro archivos producidos son archivos increíblemente importantes como analista en Suricata:
- Eve.json - es un formato de archivo de notación de objetos de java script que Suricata producirá comúnmente debido a su accesibilidad con otras herramientas de análisis de red y su facilidad de lectura.
- Fast.log - es una salida de registro que contiene datos concisos y compactos de todas las conexiones registradas en el paquete.
- Stats.log - es otra salida de registro que registra otras métricas como utilización de recursos, estadísticas de paquetes/flujos y rendimiento general.
- Suricata.log - es el archivo de registro principal que contiene información detallada sobre una conexión registrada. Generalmente contendrá los mismos datos que un registro rápido pero en mayor profundidad.
Consulta de eventos Suricata JSON en la línea de comandos
JSON Query(jq) permite manipular el contenido de un archivo .json y formatearlo para una mejor legibilidad.
El «.» en jq representa la raíz del archivo, de forma similar a Linux que comienza su directorio en la raíz.
El comando jq . formateará el archivo json especificado e imprimirá el contenido en una estructura fácil de leer.
Cuando los datos se formatean de esta manera, por lo general no son eficientes para el procesamiento o la integración debido a todas las sangrías existentes y el espacio en blanco producido para «pretty-print» el archivo.
Después de echar un vistazo al archivo .json e identificar todos los objetos. Filtraré específicamente los datos de un conjunto específico de objetos como .timestamp, .flow_id, .alert, etc.
La -c representa salida compacta y este comando se utiliza generalmente para compactar y condensar los datos basados en los objetos proporcionados.
-c también eliminará todas las sangrías y espacios en blanco innecesarios utilizados para «imprimir bonito» el archivo .json e imprimir los datos en una versión abreviada.
El uso más básico es colorear la entrada. Para ello, basta con hacer algo como
$ tail -n100 eve.json| jq '.'
La salida se hace de la forma bonita:
JQ mostrando un evento
Para obtener una salida de una línea por evento, simplemente añade la bandera -c al comando:
Para extraer un solo campo de los eventos JSON, se puede hacer:
$ jq '.src_ip' eve.json
«58.218.211.155»
«58.218.211.155»
«58.218.211.155»
El punto a recordar es que el punto en .src_ip es un marcador de posición para la entrada actual.
Por defecto, cuando un campo no está presente se muestra null en la salida. Para solucionarlo, es posible filtrar el evento para obtener sólo el que nos interesa. Esto se hace mediante la palabra clave select. Por ejemplo, para seleccionar los eventos SSH y extraer la información sobre la parte cliente se puede hacer:
$ tail eve.json | jq -c 'select(.event_type == «ssh»)|.ssh.client'
{«proto_version»: «2.0», «software_version»: «PUTTY»}
{«proto_version»: «2.0», «software_version»: «PUTTY»}
Peticiones HTTP
cat /var/log/suricata/eve.json | jq 'select(.event_type == "http")' | less
Lista de nombres de archivo populares en peticiones HTTP:
cat /var/log/suricata/eve.json | jq 'select(.event_type == "http") | .http.url' | sort | uniq -c | sort -bgrEncuentra Agentes de Usuario populares en peticiones HTTP:
cat /var/log/suricata/eve.json | jq 'select(.event_type == "http") | .http.http_user_agent' | sort | uniq -c | sort -bgr
Identificar las principales direcciones IP de origen en las alertas:
cat /var/log/suricata/eve.json | jq 'select(.event_type == "alert") | .src_ip' | sort | uniq -c | sort -bgr
Loki + Promtail
Loki es un sistema de recolección y consulta de logs diseñado por Grafana Labs. A diferencia de otras soluciones de logging, Loki no indexa el contenido completo de los logs, sino que indexa los labels (etiquetas), haciendo que sea más ligero y eficiente.
Funcionalidades Clave de Loki:
- Recolección de logs: Integra con Promtail, Fluentd, Logstash y otros agentes de logs.
- Consulta de logs: Utiliza el lenguaje de consultas LogQL similar a PromQL.
- Almacenamiento eficiente: Bajo consumo de recursos gracias a la indexación de etiquetas.
Configuración de Promtail
{"timestamp":"2024-11-13T10:21:24.932327+0100","flow_id":2082438240307690,"in_iface":"eth0","event_type":"smb","src_ip":"103.141.208.110","src_port":63476,"dest_ip":"192.168.0.100","dest_port":445,"proto":"TCP","smb":{"id":1,"dialect":"NT LM 0.12","command":"SMB1_COMMAND_NEGOTIATE_PROTOCOL","status":"STATUS_SUCCESS","status_code":"0x0","session_id":0,"tree_id":0,"client_dialects":["NT LM 0.12","SMB 2.002","SMB 2.???"],"server_guid":"3865ff0b-7e54-426c-3ea4-d21244169711"}}Formateado:
{"timestamp":"2024-11-13T10:21:24.932327+0100","flow_id":2082438240307690,"in_iface":"eth0","event_type":"smb","src_ip":"103.141.208.110","src_port":63476,"dest_ip":"192.168.0.100","dest_port":445,"proto":"TCP","smb":{"id":1,"dialect":"NT LM 0.12","command":"SMB1_COMMAND_NEGOTIATE_PROTOCOL","status":"STATUS_SUCCESS","status_code":"0x0","session_id":0,"tree_id":0,"client_dialects":["NT LM 0.12","SMB 2.002","SMB 2.???"],"server_guid":"3865ff0b-7e54-426c-3ea4-d21244169711"}}{
"timestamp": "2024-11-13T10:21:24.932327+0100",
"flow_id": 2082438240307690,
"in_iface": "eth0",
"event_type": "smb",
"src_ip": "103.141.208.110",
"src_port": 63476,
"dest_ip": "192.168.0.100",
"dest_port": 445,
"proto": "TCP",
"smb": {
"id": 1,
"dialect": "NT LM 0.12",
"command": "SMB1_COMMAND_NEGOTIATE_PROTOCOL",
"status": "STATUS_SUCCESS",
"status_code": "0x0",
"session_id": 0,
"tree_id": 0,
"client_dialects": [
"NT LM 0.12",
"SMB 2.002",
"SMB 2.???"
],
"server_guid": "3865ff0b-7e54-426c-3ea4-d21244169711"
}
}
Fichero configuración Promtail /etc/promtail/config.yml
server:
http_listen_port: 9080
grpc_listen_port: 0
# Log only messages with the given severity or above. Supported values [debug,
# info, warn, error]
# log_level: debug
positions:
filename: /tmp/positions.yaml
clients:
- url: http://localhost:3100/loki/api/v1/push
scrape_configs:
- job_name: suricata
# json on eve.json
pipeline_stages:
- json:
expressions:
event_type: event_type
src_ip: src_ip
proto: proto
dest_port: dest_port
alert:
- json:
expressions:
action: action
signature_id: signature_id
signature: signature
category: category
severity: severity
source: alert
- labels:
event_type:
src_ip:
proto:
dest_port:
signature_id:
signature:
category:
severity:
static_configs:
- targets:
- localhost
labels:
job: suricata_logs
__path__: /var/log/suricata/eve.json
Grafana
Grafana es una plataforma de análisis y monitoreo que permite crear paneles visuales interactivos. Soporta múltiples fuentes de datos, incluyendo Prometheus y Loki, y ofrece una interfaz amigable para explorar métricas y logs.
Funcionalidades Clave de Grafana:
- Dashboards personalizables: Creación de paneles visuales con gráficos y alertas.
- Alertas integradas: Configuración de alertas directamente desde los paneles.
- Plugins: Soporte para una amplia gama de plugins y fuentes de datos.
- Compartir y colaborar: Posibilidad de compartir dashboards y colaborar en su creación.
0 comentarios :
Publicar un comentario
Los comentarios pueden ser revisados en cualquier momento por los moderadores.
Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.
Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.