Panel de control de respuesta a incidentes
Cuándo usarlo
Utilice esta habilidad cuando:
- Los equipos de IR necesiten paneles en tiempo real durante incidentes activos para coordinación y seguimiento.
- El liderazgo del SOC requiera paneles operativos que muestren el estado de los incidentes y la carga de trabajo de los analistas.
- Las revisiones post-incidente necesiten cronologías visuales y evaluaciones de impacto.
- Las sesiones informativas ejecutivas requieran métricas de incidentes de alto nivel y análisis de tendencias.
No usar para paneles de monitoreo diario del SOC (usar Incident Review en su lugar) — los paneles de IR están diseñados para la coordinación activa de incidentes y la generación de informes de gestión.
Prerrequisitos
- Plataforma SIEM (Splunk con Dashboard Studio, Elastic Kibana o Grafana)
- Datos de eventos notables e incidentes en el SIEM (índice incident_review de Splunk ES)
- Integración con sistemas de ticketing (ServiceNow, Jira) para seguimiento de remediación
- Tablas de búsqueda de activos e identidades para el enriquecimiento de contexto
- Acceso de publicación de paneles para la distribución al equipo SOC y la gerencia
Flujo de Trabajo
Paso 1: Diseñar el layout del panel de incidentes activos
Construya un panel en Splunk Dashboard Studio para el seguimiento activo de incidentes:
<dashboard version="2" theme="dark">
<label>Panel de control de respuesta a incidentes activos</label>
<description>Seguimiento en tiempo real para IR-2024-0450</description>
<row>
<panel>
<title>Resumen del incidente</title>
<single>
<search>
<query>
| makeresults
| eval incident_id="IR-2024-0450",
status="CONTENCIÓN",
severity="Crítico",
affected_hosts=7,
contained_hosts=5,
iocs_identified=23,
hours_elapsed=round((now()-strptime("2024-03-15 14:00","%Y-%m-%d %H:%M"))/3600,1)
| table incident_id, status, severity, affected_hosts, contained_hosts, iocs_identified, hours_elapsed
</query>
</search>
</single>
</panel>
</row>
</dashboard>
Paso 2: Construir el panel de sistemas afectados en tiempo real
Seguimiento de sistemas afectados y su estado de contención:
| inputlookup ir_affected_systems.csv
| eval status_color = case(
status="Contenido", "#2ecc71",
status="Comprometido", "#e74c3c",
status="Investigando", "#f39c12",
status="Recuperado", "#3498db",
1=1, "#95a5a6"
)
| stats count by status
| eval order = case(status="Comprometido", 1, status="Investigando", 2,
status="Contenido", 3, status="Recuperado", 4)
| sort order
| table status, count
--- Tabla detallada de hosts
| inputlookup ir_affected_systems.csv
| lookup asset_lookup_by_cidr ip AS host_ip OUTPUT category, owner, priority
| table hostname, host_ip, category, owner, status, containment_time,
compromise_vector, analyst_assigned
| sort status, hostname
Paso 3: Construir el panel de seguimiento de IOCs
Monitorear la propagación de IOCs en el entorno:
--- IOCs identificados durante el incidente
index=* (src_ip IN ("185.234.218.50", "45.77.123.45") OR
dest IN ("evil-c2.com", "malware-drop.com") OR
file_hash IN ("a1b2c3d4...", "e5f6a7b8..."))
earliest="2024-03-14"
| stats count AS hits, dc(src_ip) AS unique_sources,
dc(dest) AS unique_dests, latest(_time) AS last_seen
by sourcetype
| sort - hits
--- Cronología de IOCs
index=* (src_ip IN ("185.234.218.50") OR dest="evil-c2.com")
earliest="2024-03-14"
| timechart span=1h count by sourcetype
--- Seguimiento de nuevos IOCs descubiertos
| inputlookup ir_ioc_list.csv
| stats count by ioc_type, source, discovery_time
| sort discovery_time
| table discovery_time, ioc_type, ioc_value, source, status
Paso 4: Construir el panel de cronología de respuesta
Crear cronología cronológica del incidente:
| inputlookup ir_timeline.csv
| sort _time
| eval phase = case(
action_type="detection", "Detección",
action_type="triage", "Triaje",
action_type="containment", "Contención",
action_type="eradication", "Erradicación",
action_type="recovery", "Recuperación",
1=1, "Otro"
)
| eval phase_color = case(
phase="Detección", "#e74c3c",
phase="Triaje", "#f39c12",
phase="Contención", "#e67e22",
phase="Erradicación", "#2ecc71",
phase="Recuperación", "#3498db"
)
| table _time, phase, action, analyst, details
Ejemplo de datos de cronología:
_time,action_type,action,analyst,details
2024-03-15 14:00,detection,Alerta activada - Se detectó baliza Cobalt Strike,splunk_es,Evento notable NE-2024-08921
2024-03-15 14:12,triage,Alerta triada - confirmado positivo verdadero,analyst_jdoe,Puntaje VT 52/72 en hash de baliza
2024-03-15 14:23,containment,Host WORKSTATION-042 aislado,analyst_jdoe,Aislamiento de red CrowdStrike
2024-03-15 14:35,containment,Dominio C2 bloqueado en cortafuegos,analyst_msmith,Regla de Palo Alto desplegada
2024-03-15 15:00,eradication,Escaneo de IOCs a nivel empresarial iniciado,analyst_jdoe,Búsqueda Splunk en todos los índices
2024-03-15 15:30,containment,3 hosts adicionales identificados y aislados,analyst_msmith,Movimiento lateral confirmado
2024-03-15 16:00,eradication,Malware eliminado de todos los hosts afectados,analyst_tier3,Limpieza RTR de CrowdStrike
2024-03-15 18:00,recovery,Sistemas restaurados y monitoreados,analyst_msmith,Período de monitoreo de 72 horas iniciado
Paso 5: Construir el panel de operaciones del SOC
Seguimiento de métricas generales de rendimiento del SOC:
--- Volumen de incidentes por severidad (últimos 30 días)
index=notable earliest=-30d
| stats count by urgency
| eval order = case(urgency="critical", 1, urgency="high", 2, urgency="medium", 3,
urgency="low", 4, urgency="informational", 5)
| sort order
--- MTTD (Tiempo medio de detección)
index=notable earliest=-30d status_label="Resuelto*"
| eval mttd_minutes = round((time_of_first_event - orig_time) / 60, 1)
| stats avg(mttd_minutes) AS avg_mttd, median(mttd_minutes) AS med_mttd,
perc95(mttd_minutes) AS p95_mttd
--- MTTR (Tiempo medio de respuesta/resolución)
index=notable earliest=-30d status_label="Resuelto*"
| eval mttr_hours = round((status_end - _time) / 3600, 1)
| stats avg(mttr_hours) AS avg_mttr, median(mttr_hours) AS med_mttr by urgency
--- Distribución de carga de trabajo de analistas
index=notable earliest=-7d
| stats count by owner
| sort - count
--- Desglose de disposición de alertas
index=notable earliest=-30d status_label IN ("Resuelto*", "Cerrado*")
| stats count by disposition
| eval percentage = round(count / sum(count) * 100, 1)
| sort - count
Paso 6: Construir el panel informativo ejecutivo
Cree un panel de alto nivel para el liderazgo durante incidentes importantes:
--- Panel de resumen ejecutivo
| makeresults
| eval metrics = "Impacto comercial: 1 servidor de archivos fuera de línea (Depto. Finanzas), "
."Recuperación estimada: 4 horas, "
."Riesgo de pérdida de datos: Bajo (copias de seguridad verificadas), "
."Impacto al cliente: Ninguno, "
."Notificación regulatoria: No requerida (sin exposición de PII confirmada)"
--- Comparación de tendencias (este mes vs. mes anterior)
index=notable earliest=-60d
| eval period = if(_time > relative_time(now(), "-30d"), "Mes actual", "Mes anterior")
| stats count by period, urgency
| chart sum(count) AS incidents by period, urgency
--- Principales categorías de amenazas
index=notable earliest=-30d
| top rule_name limit=10
| table rule_name, count, percent
Paso 7: Automatizar las actualizaciones del panel
Use búsquedas programadas de Splunk para mantener los datos del panel:
--- Búsqueda programada para actualizar la tabla de búsqueda de sistemas afectados (se ejecuta cada 5 minutos)
index=* (src_ip IN [| inputlookup ir_ioc_list.csv | search ioc_type="ip"
| fields ioc_value | rename ioc_value AS src_ip])
earliest=-1h
| stats latest(_time) AS last_seen, count AS event_count,
values(sourcetype) AS data_sources by src_ip
| eval status = if(last_seen > relative_time(now(), "-15m"), "Activo", "Inactivo")
| outputlookup ir_affected_systems_auto.csv
Conceptos clave
| Término | Definición |
|---|---|
| Conciencia situacional | Comprensión en tiempo real del alcance del incidente, sistemas afectados y progreso de la respuesta |
| MTTD | Tiempo medio de detección: tiempo promedio desde que ocurre la amenaza hasta que el SOC genera la alerta |
| MTTR | Tiempo medio de respuesta: tiempo promedio desde la alerta hasta la resolución o contención del incidente |
| Tasa de contención | Porcentaje de sistemas afectados aislados con éxito en relación con el total de sistemas comprometidos |
| Gráfico de evolución | Seguimiento visual de las tareas de investigación abiertas restantes a lo largo del tiempo durante un incidente |
| Informe ejecutivo | Panel de resumen no técnico que muestra el impacto comercial, la cronología y el estado de recuperación |
Herramientas y sistemas
- Splunk Dashboard Studio: Marco de trabajo moderno para paneles con visualización de arrastrar y soltar y datos en tiempo real
- Elastic Kibana Dashboard: Plataforma de visualización con Lens, Maps y Canvas para paneles de seguridad
- Grafana: Plataforma de visualización de código abierto que admite múltiples fuentes de datos, incluyendo Elasticsearch y Splunk
- Microsoft Sentinel Workbooks: Marco de trabajo nativo de Azure con visualización analítica basada en Kusto
- TheHive: Plataforma de respuesta a incidentes de código abierto con seguimiento de casos y paneles de métricas integrados
Escenarios comunes
- Incidente de ransomware activo: Panel que muestra la propagación del cifrado, estado de contención, verificación de copias de seguridad y progreso de recuperación
- Investigación de violación de datos: Panel que rastrea almacenes de datos afectados, volumen de exfiltración y requisitos de notificación
- Respuesta a campaña de phishing: Panel que muestra el recuento de destinatarios, tasa de clics, exposición de credenciales y estado de remediación
- Informe mensual del SOC: Panel de liderazgo con tendencias de incidentes, métricas MTTD/MTTR y rendimiento de analistas
- Auditoría de cumplimiento: Panel que demuestra la cobertura de detección, el cumplimiento de SLA de respuesta y las métricas de cierre de incidentes
Formato de salida
PANEL DE RESPUESTA A INCIDENTES — IR-2024-0450
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ESTADO: FASE DE CONTENCIÓN (6h 30m transcurridos)
Sistemas afectados: Progreso de contención:
Comprometidos: 2 [==========----------] 71%
Investigando: 1 5 de 7 sistemas contenidos
Contenidos: 3
Recuperados: 1
Resumen de IOCs: Cronología de respuesta:
IPs: 4 14:00 — Alerta activada
Dominios: 2 14:12 — Confirmado malicioso
Hashes: 3 14:23 — Primer host aislado
URLs: 5 15:00 — Escaneo empresarial iniciado
Correos: 1 15:30 — 3 hosts más aislados
Métricas clave:
MTTD: 12 minutos
MTTC: 23 minutos (primer host)
Analistas activos: 3 (Nivel 2: 2, Nivel 3: 1)
Impacto comercial: BAJO — Servidor de archivos de Finanzas fuera de línea, ningún sistema orientado al cliente afectado