◇ OpenCyber Academy
Ingeniería · Capítulo 29 · Español

Capítulo 29 — Seguridad de TO, IoT y sistemas ciberfísicos: medición

Aprendizaje gratuito y abierto para quienes desean proteger a las personas y la tecnología. No se necesita una cuenta para estudiar ni consultar las respuestas.

Capítulo 29 — Seguridad de TO, IoT y sistemas ciberfísicos: medición

Mapa de la lección

Lección 29 publicada. Mapa, ejemplo, EX085.

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["29.1 La cobertura necesita un plan"]
  N2["29.2 Actividad frente a resultado"]
  N3["29.3 Honestidad de los detectores"]
  N4["Nota práctica"]
  N5["29.1b Muestreo y comparaciones entre cohortes"]
  N6["Nota de campo: líneas de metodología en los gráficos"]
  N7["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX085"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["29.1 La cobertura necesita un plan"]
  N2["29.2 Actividad frente a resultado"]
  N3["29.3 Honestidad de los detectores"]
  N4["Nota práctica"]
  N5["29.1b Muestreo y comparaciones entre cohortes"]
  N6["Nota de campo: líneas de metodología en los gráficos"]
  N7["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX085"]
[Resultados de aprendizaje]
    |
    v
[29.1 La cobertura necesita un plan]
    |
    v
[29.2 Actividad frente a resultado]
    |
    v
[29.3 Honestidad de los detectores]
    |
    v
[Nota práctica]
    |
    v
[29.1b Muestreo y comparaciones entre cohortes]
    |
    v
[Nota de campo: líneas de metodología en los gráficos]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX085]

Resultados de aprendizaje

Usted podrá (1) definir la cobertura con un denominador; (2) separar las métricas de actividad de las de resultado; (3) evaluar detectores con clase de ataque e intervalos (lecciones de Urbina/Giraldo).

29.1 La cobertura necesita un plan

La cobertura de ATT&CK for ICS es lo observado intersecado con lo planificado, dividido entre lo planificado; no lo observado dividido entre todas las técnicas. Sin un plan, la cobertura es vanidad. En ABP, Lena redacta antes de cada evaluación el plan de técnicas que se probarán, y el tablero de cobertura cuenta solo esas. Las técnicas observadas fuera del plan se notifican por separado. La cifra de 31 de 44 técnicas planificadas observadas significa algo porque las 44 se eligieron de antemano y la guía de planificación se publica con el tablero. El plan se fija antes de las pruebas.

29.2 Actividad frente a resultado

Actividad: tramas decodificadas, herramientas lanzadas. Resultado: correcciones verificadas, alcanzabilidad del SIS todavía falsa, tasa de falsas alarmas con la tasa base de la planta. Dirija según los resultados. El informe mensual del CNHP de Lena empieza por los resultados: correcciones verificadas mediante nueva prueba, si el SIS-B sigue siendo inalcanzable desde L4 y la tasa de falsas alarmas del detector con la tasa base de ABP. Los conteos de actividad, como las tramas decodificadas, aparecen solo en un apéndice de capacidad. Dirigir según la actividad premiaría ejecutar más herramientas en lugar de resolver más problemas. Los resultados son lo que financia el jefe de planta.

29.3 Honestidad de los detectores

Informe los intervalos de falsas alarmas, el retardo de detección y la clase de ataque. Un detector de banda que no detecta ataques sigilosos sobre los residuos no equivale a un CUSUM que sí los detecta; el laboratorio lo hace visible.

# Lab 27 - residual CUSUM vs band on batch reactor level (synthetic)
import random
def run(seed, atk, det, k=0.8, h=6.0):
    rng=random.Random(seed); true=est=50.0; s=0.0; alarm=None
    for t in range(500):
        inflow=1.0+rng.gauss(0,0.05)+(0.08 if atk and t>=250 else 0)
        true+=inflow-0.02*true
        lvl=true+rng.gauss(0,0.3); fm=inflow+rng.gauss(0,0.02)
        if atk and t>=250: lvl=50+rng.gauss(0,0.3)
        if atk=="B" and t>=250: fm=1.0+rng.gauss(0,0.02)
        est+=fm-0.02*est
        hit=abs(lvl-50)>2.0 if det=="band" else False
        if det=="cusum":
            s=max(0.0,s+abs(lvl-est)-k); hit=s>h
        if hit and alarm is None: alarm=t
    return alarm
for det in ("band","cusum"):
    fa=sum(run(i,None,det) is not None for i in range(60))
    for atk in ("A","B"):
        hits=[a-250 for a in (run(i,atk,det) for i in range(60)) if a is not None and a>=250]
        print(f"{det} class{atk} FA={fa}/60 det={len(hits)}/60 mean_delay={sum(hits)/len(hits) if hits else float('nan'):.1f}")

Salida esperada:

band classA FA=0/60 det=0/60 mean_delay=nan
band classB FA=0/60 det=0/60 mean_delay=nan
cusum classA FA=0/60 det=60/60 mean_delay=24.8
cusum classB FA=0/60 det=0/60 mean_delay=nan

Caso sintético — Ashford Batch Plant. El CNHP informa de la cobertura de técnicas planificadas y de las FA/retardo del detector por clase, no de un único porcentaje de «seguro».

El informe piloto de Lena para ABP enumera los resultados por clase de ataque. Cada clase tiene su propio intervalo de falsas alarmas y su retardo medio, de modo que el lector puede ver que el CUSUM detectó los ataques sigilosos sobre los residuos que el detector de banda pasó por alto.

29.4 Errores y límites

Los denominadores tomados de otra planta invalidan la métrica. Los ataques sintéticos no son el adversario. Lena nunca toma prestado un denominador del plan de otro sitio, porque las técnicas, los activos y los procesos de ABP son distintos. Si hace falta una comparación con otra planta, ambos sitios deben usar las mismas reglas de planificación, y el informe lo dice. También indica en cada informe que los ataques sintéticos representan clases elegidas, no el comportamiento de un adversario real, para que los lectores no sobrevaloren las cifras de detección.

Nota práctica

Ponga a cada widget del tablero un pie con la fórmula y el identificador de la planta. Un widget del tablero del CNHP sin fórmula es decoración y se elimina en la revisión.

29.1b Muestreo y comparaciones entre cohortes

Si muestrea 50 de 500 activos, dígalo y no extrapole los hallazgos como si hubiera visitado los 500. Comparar la cobertura entre ventanas exige las mismas reglas de planificación. Publique la guía de planificación junto al tablero de cobertura para que un 71 % en marzo signifique el mismo tipo de denominador que un 71 % en septiembre. La selección de la muestra se registra con su semilla o su regla, para que los mismos activos puedan volver a visitarse en la nueva prueba. Prefiera las métricas que infravaloran el éxito, como contar una corrección solo después de la nueva prueba.

La guía de planificación de ABP se publica junto al tablero.

Nota de campo: líneas de metodología en los gráficos

Cuando el CNHP cambió las reglas de planificación en junio, los gráficos de estilo Pulse incorporaron una línea vertical etiquetada methodology_id=2026-06. La dirección dejó de comparar el 80 % de mayo con el 70 % de julio como si tuvieran el mismo denominador. La honestidad en la leyenda del gráfico evitó un relato falso de declive.

Ejercicios — capítulo 29

Síntesis del capítulo

Planifique el denominador; mida los resultados; evalúe los detectores por clase con intervalos.

Siga estudiando — capítulo 29 de 50

← Capítulo 28 (borrador) · Índice de capítulos del curso · Capítulo 30 (borrador) →

Respuestas desarrolladas

EX085. cobertura = |observado ∩ planificado| / |planificado|. Usar todas las técnicas de ATT&CK for ICS como denominador hace que la cobertura parezca diminuta o incentiva una planificación basura: planifique las técnicas pertinentes para el encargo.

EX086. En la clase A, el CUSUM detecta 60/60 con un retardo de ~25 muestras; la banda detecta 0/60; ambos muestran 0/60 FA en este conjunto de semillas.

EX087. El estado sigue abierto hasta que se supera un ticket de nueva prueba; está prohibido el cierre automático por una promesa del proveedor.