ICS/OT security: Modbus, Siemens S7, Purdue model y lecciones de Stuxnet
· 10 min de lectura
Los sistemas industriales (ICS/OT) usan protocolos sin autenticación (Modbus, DNP3, S7). Aprende el modelo Purdue, cómo auditar con python + pymodbus, casos famosos (Stuxnet, Industroyer, PIPEDREAM) y segmentación defensiva.
Los Sistemas de Control Industrial (ICS) y las Tecnologías Operacionales (OT) controlan plantas de agua, generación eléctrica, refinerías, manufacturing, oleoductos, trenes, puertos y cualquier infraestructura crítica. Desarrollados cuando el término «ciberseguridad» no existía (años 60-90), usan protocolos diseñados para disponibilidad y determinismo, sin autenticación ni cifrado. Modbus (1979), Siemens S7 (1980s), DNP3 (1990s), Profinet, EtherNet/IP: todos funcionan igual de bien cuando reciben comandos de un operador legítimo que de un atacante en la red.
El cambio en 2010 con Stuxnet despertó al mundo: un ciberataque estatal usando técnicas IT clásicas pudo sabotear centrifugadoras de enriquecimiento de uranio en Natanz, Irán. Desde entonces aparecen regularmente incidentes OT (Ukraine power grid 2015 y 2016, Triton 2017 contra planta petroquímica saudí, Colonial Pipeline 2021 forzó shutdown por IT compromise, Oldsmar Florida 2021 intento de envenenamiento de agua). En 2026 ICS/OT security es área crítica con escasez de talento y regulación acelerada (NIS2 en EU, CIRCIA en US).
Esta lección cubre la arquitectura de red industrial (modelo Purdue), los protocolos principales (foco en Modbus), auditoría práctica, casos reales y las defensas aplicables. Es la cuarta lección del bloque hardware/IoT de la Tanda 6.
Prueba solo contra equipos propios o simuladores. Un comando malicioso contra un PLC real puede causar daño físico, lesiones o muerte. Nunca experimentar contra sistemas productivos sin aislamiento total.
El modelo Purdue#

El Purdue Enterprise Reference Architecture define niveles jerárquicos para redes industriales:
- Nivel 0 — Field devices: sensores (temperatura, presión), actuadores (válvulas, motores). Hardware físico sin CPU típicamente.
- Nivel 1 — Basic control: PLCs (Programmable Logic Controllers), RTUs. Ejecutan lógica real-time para control de procesos.
- Nivel 2 — Area supervisory: HMI (Human-Machine Interface), SCADA local. Operadores en sala de control.
- Nivel 3 — Site operations: MES (Manufacturing Execution System), historians (databases con histórico de sensores).
- Nivel 3.5 — DMZ: zona desmilitarizada entre OT e IT. Jump servers, firewalls.
- Nivel 4 — Business planning: ERP, inventory. Mundo IT clásico.
- Nivel 5 — Enterprise network / Internet.
El principio: tráfico solo baja desde IT a OT, nunca se salta niveles. En práctica, muchas arquitecturas tienen flat networks o atajos que anulan el modelo.
Protocolos industriales clave#
Modbus#
El más usado. Dos variantes:
- Modbus RTU: serial (RS-232/485). Legacy pero masivo.
- Modbus TCP: IP sobre puerto 502. El target moderno.
Sin autenticación, sin cifrado. Función codes para lectura/escritura de registros.
Comandos típicos (TCP):
- 0x01 Read Coils: lee bits.
- 0x03 Read Holding Registers: lee words.
- 0x05 Write Single Coil: escribe bit.
- 0x06 Write Single Register: escribe word.
- 0x10 Write Multiple Registers.
Cualquiera con acceso TCP al puerto 502 puede leer sensores y comandar actuadores. No hay concept de «usuario».
Siemens S7#
Protocol propietario Siemens para PLCs S7-300/400/1200/1500. Puerto 102. Permite:
- Leer/escribir memoria.
- Start/stop CPU.
- Upload/download programa.
Sin auth en versiones antiguas; S7-1500 añade password protection débil. Herramientas: snap7, plcscan.
DNP3#
Usado en power utilities. Puerto 20000. Secure DNP3 añade auth y crypto pero adoption es parcial.
EtherNet/IP#
Allen-Bradley (Rockwell). Puerto 44818. Para controladores ControlLogix.
Profinet#
Siemens real-time ethernet. Discovery via LLDP.
OPC UA#
Modern: cifrado y auth integrados. Transition path desde protocolos legacy. Adopción creciente.
Enumeración#
Primera fase de cualquier audit ICS:
# Nmap scripts específicos
nmap -p 102,502,20000,44818,47808 --script modbus-discover \
--script s7-info 192.168.1.0/24
# Shodan queries (NUNCA contra activos no autorizados)
# port:502 → Modbus
# port:102 → S7
# "Schneider Electric" → specific vendors
# Herramientas específicas
plcscan 192.168.1.0/24
Un PLC expuesto típicamente responde con:
- Vendor + model.
- Firmware version.
- Sometimes order number / serial.
- Available function codes.
Lectura con pymodbus#
from pymodbus.client import ModbusTcpClient
client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()
# Leer 10 holding registers desde addr 0
response = client.read_holding_registers(address=0, count=10, slave=1)
print(response.registers)
# [23, 45, 1200, 0, 0, 0, 100, 50, 1, 0]
# Cada uno representa algo: temperatura, presión, estado, etc.
# Leer coils
response = client.read_coils(address=0, count=16, slave=1)
print(response.bits)
client.close()
Sin auth. Para audit legítimo, identificar process variables en documentación del vendor.
Escritura: el riesgo real#
# Escribir register
client.write_register(address=100, value=50, slave=1)
# Escribir multiple
client.write_registers(address=100, values=[50, 100, 200], slave=1)
En un PLC real, escribir en el registro equivocado puede:
- Abrir una válvula que no debería estar abierta.
- Cambiar setpoint de temperatura.
- Detener un motor en caliente.
- Causar oscilaciones en control loops.
Jamás escribir en PLC productivo sin autorización explícita y plan de rollback. Daño potencial: equipo destruido, producto perdido, personas heridas.
Stuxnet: el canon moderno#

Descubierto 2010. Operación conjunta USA-Israel contra programa nuclear iraní. Lecciones técnicas:
- Air gap bypass: entrada vía USB en PC de contratista.
- 4 Windows zero-days usados para privesc + lateral.
- S7 PLC exploit para modificar lógica de centrifugadoras (speed variations imperceptibles para operadores, destruían rotores).
- HMI deception: reportaba parámetros normales al operador.
- Payload selectivo: solo activaba si detectaba setup específico (frequency converters Vacon/Fararo Paya).
Nivel de sofisticación nuevo: probablemente $100M+ de inversión, años de desarrollo.
Otros casos famosos#
- Ukraine power grid (2015): BlackEnergy3 + KillDisk. Primera power outage pública por cyberattack. 225k affected.
- Ukraine (2016): Industroyer/CrashOverride. Auto-propagante en subestaciones.
- Triton/TRISIS (2017): contra Safety Instrumented Systems (SIS) en planta petroquímica saudí. Attack contra sistema de seguridad diseñado para prevenir disasters.
- Colonial Pipeline (2021): IT ransomware forzó shutdown OT por caution. 5 días sin pipeline operation.
- Oldsmar FL water plant (2021): intento remoto de aumentar lye concentration en agua potable. Detectado por operador alerta.
- PIPEDREAM / Incontroller (2022): toolkit modular para atacar OT. Primer ejemplo de framework commercial-grade para OT attacks.
- Industroyer2 (2022): contra Ucrania en guerra. Disrupción parcial.
Cada uno añade dimensión: Stuxnet mostró feasibilidad, Ukraine mostró scale, Triton mostró targeting de safety, Oldsmar mostró accesibilidad desde Internet (TeamViewer expuesto), PIPEDREAM mostró industrialización.
Defensa: lo que funciona#
- Segmentación Purdue estricta: firewalls entre niveles, deep packet inspection para protocolos industriales.
- OT DMZ: data diodes para flujo unidireccional cuando es posible.
- No RDP/VPN directo a OT desde corporate: jump servers con MFA + session recording.
- Allow list network: cada endpoint con lista de peers permitidos.
- IDS específico OT: Nozomi, Claroty, Dragos, Tenable OT. Entienden protocolos industriales.
- Patching tolerante: equipos OT a veces no pueden parcharse (certified, uptime). Compensar con segmentation.
- Change management: cambios en PLC logic documentados, version controlled, revisados.
- Backups de PLC programs: para recovery rápido tras compromise.
- USB policy estricta: contratistas con media sanitizada.
- Training: operators trained para reconocer anomalías.
Normativa y estándares#
- NIST SP 800-82 Rev 3: Guide to OT Security.
- IEC 62443: estándar internacional ICS security. Múltiples partes.
- ISA/IEC 62443-3-3: system security requirements.
- NERC CIP: regulación power industry USA.
- NIS2 Directive (EU 2024): critical infrastructure requirements extensa.
- CIRCIA (US 2022): 72-hour reporting de cyber incidents.
Walkthrough: audit de PLC simulado#
Para fijar el patrón en laboratorio seguro.
Paso 1 — levantar simulador OpenPLC:
docker run -d -p 502:502 -p 8080:8080 openplc/openplc_v3
# PLC accesible en puerto 502 Modbus, 8080 web UI
Paso 2 — scan:
nmap -p 502,8080 --script modbus-discover 127.0.0.1
# Devuelve: Modbus, slave ID: 1, software: OpenPLC
Paso 3 — leer registros:
python3 -c "
from pymodbus.client import ModbusTcpClient
c = ModbusTcpClient('127.0.0.1', 502)
c.connect()
r = c.read_holding_registers(address=0, count=10, slave=1)
print('Registers 0-9:', r.registers)
c.close()
"
Paso 4 — identificar process: ver web UI OpenPLC, revisar ladder logic cargado, correlacionar registros con process variables.
Paso 5 — escribir con cautela (simulador, no equipo real):
python3 -c "
from pymodbus.client import ModbusTcpClient
c = ModbusTcpClient('127.0.0.1', 502)
c.connect()
c.write_register(address=100, value=50, slave=1)
c.close()
"
Paso 6 — reporte: ninguna autenticación, acceso TCP directo al 502, control total del process. Mitigación: segmentación de red, OT firewall, monitoring con IDS específico OT.
Rol de IT/OT convergence#
Trend creciente en 2026: convergencia IT/OT. Antes OT era mundo aislado con sus propios stacks. Ahora:
- Historians en cloud (AWS, Azure Industrial IoT).
- SCADA en Windows modernos con updates (y por tanto vulns IT).
- PLCs modernos con Ethernet + web UIs.
- OT data a analytics IT (predictive maintenance via ML).
Resultado: superficie de ataque IT se extiende a OT. Un ransomware que llega vía phishing a IT puede alcanzar HMIs si segmentation falla. Colonial Pipeline 2021 es ejemplo canónico: IT compromise forzó shutdown OT por caution.
Defensores deben entender ambos mundos: IT security + OT expertise combinados son el skill premium.
Errores comunes#
- Flat network sin segmentation.
- Jump servers compartidos entre IT y OT.
- Antivirus en PLC o HMI sin whitelisting (interfiere con determinism).
- Remote access tools (TeamViewer, AnyDesk) expuestas a Internet.
- Protocolo legacy no monitorizado por IDS tradicional.
- Patches diferidos indefinidamente sin compensating controls.
Preguntas frecuentes#
¿Es ilegal auditar Modbus en Shodan?#
Scanning general es gris. Interactuar con sistemas ajenos (lectura, escritura) es delito en jurisdicciones mayoría. Nunca contra sistemas no autorizados.
¿Cómo empiezo en ICS security?#
Lectura: «Hacking Exposed ICS» de Clint Bodungen. Cert: GICSP (SANS) o ISA/IEC 62443. Lab: Factory IO simulator, OpenPLC, Modbus simulators Python.
¿Qué certificaciones son relevantes?#
GICSP (GIAC Industrial Cyber Security Professional) es estándar. ISA/IEC 62443 Specialist/Expert para enterprise. Certified SCADA Security Architect (IACRB) también.
¿Trabajo OT paga bien?#
Sí, muy. Escasez de talento combinando IT + OT knowledge. Salarios 20-40% mayores que IT puro para roles senior. Contratistas en energy, water, chemical plants.
¿Dónde practico?#
El laboratorio armageddon de whoami-labs incluye simulación de red ICS con Modbus TCP server (PLC simulado) y HMI web. Practicas enumeración con nmap+scripts, lectura con pymodbus, identificación de process variables y propuesta defensiva.
¿Equipos físicos para lab personal?#
PLCs usados de eBay: Siemens S7-1200 (200-400 EUR), Allen-Bradley Micro820 (300 EUR), Schneider Modicon M221 (200 EUR). Combinado con Raspberry Pi + sensors básicos simulan proceso real. Inversión ~500 EUR para lab decente.
¿Simuladores gratis?#
OpenPLC (open source). Factory IO (comercial, excellent 3D). Modbus Pal. Snap7 server. Conpot (honeypot ICS). Cubren casos sin hardware.
¿Un PLC compromise se repara fácil?#
No siempre. Firmware malicioso persiste a power cycles. Rollback requiere flash original + authorized tools + possibly vendor support. En casos Stuxnet-like, hardware debió reemplazarse.
¿Qué pasa con Industrial IoT (IIoT)?#
IIoT (Rockwell FactoryTalk, Siemens MindSphere, GE Predix) añade cloud connectivity + analytics. Beneficio: predictive maintenance. Riesgo: ampliar superficie de ataque. Buenas plataformas cifran y autentican; mal integradas abren OT a Internet.
¿Cómo comunicar riesgo OT a ejecutivos?#
Traducir a business impact: $/día de downtime, safety incidents potenciales, regulatory fines (NIS2 hasta 10M€ o 2% revenue). Scenarios específicos: «si atacante llega a nuestro HMI de boiler, podría forzar sobrepresión que requeriría 72h recovery».
Resumen#
- ICS/OT controla infraestructura crítica: agua, energía, manufacturing, oil/gas.
- Modelo Purdue jerarquiza niveles 0-5; segmentación estricta es la defensa clave.
- Protocolos clave: Modbus (puerto 502), Siemens S7 (102), DNP3, EtherNet/IP, Profinet.
- Ninguno tiene autenticación nativa en versiones clásicas; OPC UA es excepción moderna.
- Stuxnet (2010) inauguró era moderna; Ukraine, Triton, PIPEDREAM son escalones posteriores.
- Defensa: segmentación, OT DMZ, IDS específico (Nozomi/Claroty/Dragos), MFA en jump servers, change management.
- IEC 62443 + NIST 800-82 son referencias normativas.
- Mercado con alta demanda, escasez de talento, salarios premium.