REVISTA .SEGURIDAD | 1 251 478, 1 251 477 | REVISTA BIMESTRAL

Conpot: Honeypot de Sistemas de Control Industrial

Introducción

De acuerdo con la encuesta realizada en 2015 por el SANS Institute, desde la aparición de Stuxnet existe una creciente preocupación en las organizaciones por los ataques al sector industrial y por mantener el funcionamiento de sus operaciones más básicas de Sistemas de Control Industrial de manera confiable y segura. Los datos muestran que 32% de los encuestados indicaron que los activos o redes del sistema de control habían sido infiltrados o infectados en algún momento; 34% cree que sus sistemas han sido infringidos más de dos veces en los últimos 12 meses y 15% reportó que necesitaba más de un mes para detectar una brecha de seguridad.

El objetivo del gusano informático Stuxnet fue vulnerar los Sistemas de Control Industrial de una planta nuclear en Irán. Esta amenaza fue capaz de reprogramar los dispositivos que controlaban las centrifugadoras usadas para enriquecer uranio; los equipos infectados se conectaban a un servidor remoto controlado por los atacantes conocido como C2 (Command and Control), a través del cual los ciberdelincuentes ejecutaron instrucciones para alterar la cadencia de giro de las centrifugadoras, poniendo en riesgo el proceso industrial. A este tipo de malware se le conoce como Amenaza Persistente Avanzada (Advanced Persistent Threat, APT), y no ha sido el único. A través del tiempo han surgido nuevas APT como Duqu, Flame y Gauss,  por cuyo impacto se pueden considerar como ciberarmas utilizadas para el ciberespionaje y sabotaje industrial.

Ante la gravedad de esta amenaza, este artículo muestra la instalación, configuración y prueba de concepto de un honeypot capaz de recolectar inteligencia sobre los métodos, técnicas y motivos de los ciberdelincuentes cuyo objetivo son los Sistemas de Control Industrial.

Los Sistemas de Control Industrial (ICS por sus siglas en inglés, Industrial Control System) son sistemas o dispositivos que gestionan, regulan y controlan el comportamiento de otros dispositivos o sistemas de control utilizados en los procesos específicos de una industria, como la nuclear, eléctrica, química, del petróleo, gas, agua, etcétera. Combinan componentes electrónicos, mecánicos, eléctricos, hidráulicos, neumáticos, entre otros. Algunos de los múltiples protocolos de comunicación utilizados por los ICS son Modbus, DNP3, EIP, ICCP y CIP .

Los ICS están compuestos a su vez por múltiples tipos de sistemas de control, incluyendo el Sistema Distribuido de Control (Distributed Control Systems, DCS), el Sistema de Control del Proceso (Process Control System, PCS), los Sistemas de Control de Supervisión y Adquisición de Datos (Supervisory Control and Data Acquisition, SCADA), las Unidades de Terminal Remota (Remote Terminal Units, RTU), las Interfaces Humano Máquina (Human Machine Interfaces, HMI), el Controlador Lógico Programable (Programmable Logic Controller, PLC), etcétera. Algunos de ellos se definen a continuación.

Un sistema SCADA, como parte de un ICS, permite monitorear, controlar, obtener y analizar los datos de dispositivos de control industrial en tiempo real con el propósito de supervisar y automatizar los procesos industriales.

Los PLC son dispositivos de sistemas de control de propósito específico con una memoria de usuario programable para automatizar funciones (lógicas) ejecutadas por equipo eléctrico (relé, conmutador, contadores mecánicos, sensores, válvulas, por ejemplo) en tiempo real. Utiliza entradas y salidas en combinación con lógica programable para construir un ciclo automatizado de control.

Las RTU son dispositivos usados para controlar procesos de forma remota, debido a que combinan la lógica programable con la capacidad de realizar comunicaciones remotas.

Las HMI permiten traducir las comunicaciones desde y hacia los PLC, RTU y otros dispositivos industriales a una interfaz que permite a los operadores de los sistemas de control gestionar y supervisar los procesos.

Las compañías que cuentan con procesos industriales utilizan ICS, SCADA, PLC, RTU, HMI y otros dispositivos de control industrial, y se componen de una red corporativa (servicios web, correo electrónico, etcétera), de supervisión (SCADA, estaciones de trabajo, etcétera), de sistemas de control (HMI, PLC, RTU…). El proceso industrial es supervisado y controlado desde una red de control que permite enviar y recibir información utilizando protocolos de comunicación industriales (Modbus, DNP3, etc.) a los PLC y RTU a través de una HMI por medios alámbricos o inalámbricos, para controlar dispositivos industriales que pueden abrir o cerrar válvulas, obtener la temperatura, liberar presión, entre otras funciones. La figura 1 muestra de forma general una red industrial y la interacción entre algunos de los dispositivos.

Figura 1. Diagrama general de una red industrial (SANS)

Conpot es un honeypot de ICS/SCADA de baja interacción mantenido por el equipo de desarrollo de Conpot y The Honeynet Project. Las principales características de Conpot es que está diseñado para ser fácil de modificar, ampliar y desplegar dispositivos ICS simulados. La configuración preestablecida simula un PLC de la compañía Siemens modelo SIMATIC S7-200 con funciones básicas, tiene un módulo de entrada/salida y un CP 443-1 (procesador de comunicaciones, permite conectar al SIMATIC en una red ethernet).

Otra de las características de Conpot es que se puede conectar a una HMI real y también permite la interacción con más hardware real de ICS, esto es posible porque fue creado para funcionar con protocolos de control industrial y con elementos básicos para construir un ICS propio. Utiliza protocolos de control industrial comunes como Modbus, S7Comm, Bacnet e IPMI.

Es posible retrasar los tiempos de respuesta de los servicios para imitar el comportamiento de sistemas industriales cuando se encuentran bajo alto procesamiento. Además, cuenta con una Interfaz Humano Máquina (HMI) de software personalizada.

Estas características mejoran la emulación y amplían la interacción del honeypot, aumentando los puntos en los que puede ser atacado. Esto atrae a los cibercriminales haciéndoles pensar que es un Sistema de Control Industrial real, como un panal con miel que atrae a las abejas; esto permite obtener mayor información de los métodos y formas de ataque para crear inteligencia y poder contar con medidas de mitigación de estos ciberataques.

Conpot se ejecuta desde la terminal de comandos recibiendo una serie de parámetros; estos le indicarán en donde se encuentra el archivo de configuración (conpot.cfg) y la plantilla (template) que utilizará. Esta plantilla indica el tipo de dispositivo industrial a simular y determina los protocolos que utilizará para comunicarse, por ejemplo, con un HMI. Si un ciberdelincuente realiza un reconocimiento del honeypot o encuentra la interfaz web de este, lo identificará como un dispositivo de Sistema de Control Industrial por el tipo de interfaz web y por los protocolos que utiliza. La interacción entre el ciberdelincuente y Conpot se registrará en la bitácora correspondiente; durante este proceso Conpot generará una respuesta y la enviará al ciberdelincuente. La siguiente figura muestra el panorama general del funcionamiento de Conpot.

 

Figura 2. Panorama general de funcionalidad (de Sergio Anduin Tovar Balderas)

Instalación

En este artículo se describirá el proceso de instalación de Conpot en un sistema operativo Debian, aunque es posible instalarlo en diversos sistemas operativos. Los requisitos para la instalación son:

  • Sistema Operativo GNU/Linux Debian 8.8.0 – Jessie
  • Conexión a Internet
  • Conpot
  • Para realizar la instalación en Debian 9.0 – Stretch, revisar la nota al final del artículo.

Después de la instalación del sistema operativo, es necesario configurar los parámetros de red. Además, para configurar los repositorios se edita el archivo /etc/apt/sources.list, que contiene la lista de repositorios de donde se pueden obtener los paquetes necesarios para la instalación de Conpot. Se recomienda utilizar los servidores con la réplica de Debian geográficamente más cercana para descargar más rápido los paquetes.

Figura 3. Configuración de los repositorios

A través de la utilidad apt se instalan los paquetes necesarios para Conpot; estos paquetes se encuentran a continuación.

Figura 4. Instalación de paquetes para Conpot

Una parte importante durante la instalación y configuración de honeypots es la creación de un usuario propio para esta tarea, para que el honeypot se ejecute sin privilegios de súper usuario. Esto previene que los atacantes se aprovechen de alguna falla en el diseño del honeypot y a partir de la explotación de esta puedan escalar privilegios en el equipo.

Continuando con la instalación del honeypot de ICS, se requiere crear un usuario con el cual se ejecutará el honeypot. También se descargará el código fuente de Conpot desde su repositorio en GitHub.

Figura 5. Creación de usuario y descarga de Conpot

Una de las formas de instalar Conpot es utilizar virtualenv. Este módulo de Python permite crear un ambiente virtual en una carpeta particular sin interferir con los paquetes de Python del sistema operativo nativo. Cada ambiente contiene su conjunto independiente de paquetes y su propio binario de Python.

Posteriormente, se instalan los paquetes de Python en el ambiente virtual (honeypot-unam) que Conpot necesita para su funcionamiento.

Figura 6. Instalación de paquetes de Python y de Conpot

Configuración

Para configurar nuestro honeypot y adecuarlo a nuestras necesidades, se requiere modificar el archivo principal de configuración (conpot.cfg). Este archivo contiene secciones para habilitar las diferentes opciones; es posible modificar el archivo con el editor de texto de su preferencia. 

La sección daemon indica el usuario y grupo con el que se ejecutará el honeypot; de forma preestablecida utiliza el usuario nobody y el grupo nogroup.

La línea 8 y 9 especifican el usuario y grupo respectivamente.

Los siguientes comandos modifican la sección daemon quitando el símbolo de comentario “;” del usuario y grupo.

  • sed -i '8 s/^;user/user/' /home/conpot/conpot/conpot/conpot.cfg
  • sed -i '9 s/^;group/group/' /home/conpot/conpot/conpot/conpot.cfg

 

Figura 7. Quitar comentarios de variables en el archivo principal de configuración

Inicio

El honeypot cuenta con diferentes plantillas que indican el tipo de dispositivo industrial y determina los protocolos que utilizará. Las plantillas disponibles en Conpot son:

Plantilla

Unidad

Descripción

Desarrollador

ipmi

IPMI - 371

Crea un dispositivo de Interfaz de Administración de Plataformas Inteligentes (Intelligent Platform Management Interface, IPMI) que permite a un operador gestionar remotamente servidores a nivel de hardware.

Lukas Rist

guardian_ast Guardian AST tank-monitoring system Es un dispositivo diseñado para el cumplimiento y control de inventario para tanques de almacenaje. Monitorear los niveles de las bombas, sistemas de bombeo y el inventario de tanques como los utilizados en las gasolinerias The Conpot team
default Siemens - S7 - 200 Simulación básica de un PLC Siemens S7-200 con dos dispositivos esclavos The Conpot team

kamstrup_382

Kamstrup - 382

Es un clon de un medidor de energía eléctrica inteligente modelo Kamstrup 382.

Johnny Vestergaard

proxy

None - Proxy

Demuestra la característica de un proxy.

The Conpot team

Tabla 1. Plantillas utilizadas por Conpot (de Sergio Anduin Tovar Balderas)

 

Las diferentes plantillas que tiene Conpot permiten desplegar diferentes honeypots como un PLC, IPMI, un dispositivo para el monitoreo de tanques o un medidor de energía eléctrica.

 

Honeypot (plantilla)

Protocolo de la capa de aplicación

Protocolos de transporte/Puertos

IPMI – 371

IPMI

UDP/623

Guardian AST tank-monitoring system

Guardian AST

TCP/10001

Siemens - S7-200

Modbus

S7Comm

HTTP

SNMP

Bacnet

IPMI

TCP/502

TCP/102

TCP/80

UDP161

UDP/47808

UDP/623

Kamstrup - 382

Kamstrup

Kamstrup management

TCP/1025

TCP/50100

Tabla 2. Protocolos utilizados por las plantillas de Conpot (de Sergio Anduin Tovar Balderas)

 

Es posible iniciar Conpot de diferentes formas, esto depende de las opciones pasadas como argumentos a través de la línea de comandos. Además, Conpot utiliza el archivo principal de configuración y plantillas (templates). En la figura se puede observar que se está utilizando la plantilla default y el archivo de configuración ubicados en otra ruta, así como cuando se inicia el honeypot.

 

 

 

 

Figura 8. Iniciar Conpot

 

Es importante verificar que los puertos se encuentran en escucha (LISTEN) dependiendo de la plantilla utilizada, esto significa que Conpot está ejecutando los procesos necesarios para abrir el socket en espera de conexiones entrantes.

 

 

Figura 9. Puertos en escucha

 

Bitácoras

 

Las bitácoras que genera Conpot dependerá de la configuración especificada en conpot.cfg; el honeypot puede registrar los eventos en archivos de texto, JSON, base de datos, entre otros. Los eventos se pueden consultar en el archivo conpot.log ubicado en la carpeta en donde se realizó la instalación (/home/conpot/conpot). La bitácora contiene la plantilla, el archivo de configuración, así como el usuario y grupo con el que se ejecuta el proceso cuando inicia el honeypot, los protocolos que habilita e inicia, errores y el registro de la actividad e interacción de los atacantes con el honeypot.

 

 

Figura 10. Bitácora conpot.log

 

En la figura 10 se puede observar la dirección IP del atacante (172.16.16.150), puerto origen (54516), método (GET) y código de estado HTTP (302, 200 y 404), así como la consulta que realiza y el navegador que utiliza. Con esta información es posible identificar herramientas, países, patrones, malware y otros datos que nos puede servir para complementar la seguridad en nuestra organización.

 

Prueba de concepto

 

A continuación, se muestra la interfaz web de un PLC, en el que se pueden observar datos del dispositivo de control industrial.

 

 

Figura 11. Interfaz web del PLC

 

Una vez que el atacante encontró la interfaz web del dispositivo de control industrial, tratará de obtener mayor información del PLC. Con Nmap es posible escanear y enumerar el dispositivo. La figura 12 muestra la ejecución de Nmap y algunos datos del dispositivo como la versión, nombre del sistema, número de serie, marca, entre otros. También se muestra la bitácora que genera Conpot.

 

 

 

Figura 12. Escaneo utilizando Nmap y bitácora de Conpot

 

Otra herramienta que se puede utilizar es plcscan, un programa hecho en Python. Con él podemos escanear el honeypot; el resultado de la ejecución nos muestra datos del Controlador Lógico Programable (PLC). En la figura 13 se muestra la ejecución de plscan y la bitácora que genera el honeypot.

 

 

 

Figura 13. Escaneo con plscan y bitácora de Conpot

 

Si el honeypot tiene una dirección IP homologada es posible que los atacantes lo puedan encontrar con mayor facilidad. Existen organizaciones como Shadowserver que reúnen inteligencia de Internet con la misión de ayudar y poner fin a la ciberdelincuencia. Por ejemplo, la siguiente imagen muestra los dispositivos que utilizan el protocolo IPMI (versión 1.5 y 2.0) y son accesibles desde Internet.

 

 

Figura 14. IPMI en Norte América (Shadowserver Foundation)

 

Shodan es un motor de búsqueda dedicado a encontrar dispositivos conectados a Internet. Es posible encontrar PLC, refrigeradores, televisiones, cámaras web y otros dispositivos del Internet de las Cosas (Internet of Things, IoT). Shodan cuenta con un mapa que rastrea y muestra la ubicación de dispositivos de control industrial en Internet y de honeypots de ICS.

 

 

Figura 15. ICS Radar (Shodan)

 

Nota

 

Debido a la reciente publicación de Debian 9.0 (Stretch), si se desea instalar Conpot en esta nueva versión de sistema operativo se requieren algunas mínimas modificaciones en los repositorios, paquetes y comandos para ejecutar con éxito el honeypot.

 

Stretch necesita sus propios repositorios, para esto se edita el archivo /etc/apt/sources.list, que contiene la lista de repositorios de donde se pueden obtener los nuevos paquetes para esta nueva versión.

 

 

Figura 16. Configuración de los repositorios en Debian 9 (Stretch)

 

Stretch (Debian 9) dividió algunos paquetes para proporcionar mayor mantenibilidad del sistema, otros paquetes mantuvieron el mismo nombre y dejó de distribuir algunos otros paquetes que estaban disponibles en Jessie (Debian 8). La siguiente figura muestra los paquetes necesarios que requiere Conpot para su instalación.

 

 

Figura 17. Instalación de paquetes para Conpot en Debian 9 (Stretch)

 

Otro cambio en Debian 9 es que el paquete net-tools no forma parte de las instalaciones por omisión y no se encuentra el comando netstat de forma preestablecida. Es posible utilizar el comando ss como sustituto de netstat. La figura 18 muestra el uso de ss para verificar los puertos que utiliza Conpot cuando se encuentran en escucha (LISTEN) dependiendo de la plantilla utilizada al iniciar el honeypot.

 

 

Figura 18. Puertos en escucha en Debian 9 (Stretch)

 

Conclusiones

 

Conpot cuenta con plantillas que le permiten simular diferentes dispositivos industriales como una Interfaz de Administración de Plataformas Inteligentes (IPMI), un sistema de monitoreo de tanques, un medidor de energía eléctrica o un PLC. Estas características hacen de este honeypot una herramienta muy útil para la detección de escaneos, ataques, ciberdelincuentes o equipos propagando malware.

 

Las tecnologías honeypot son un mecanismo de detección que, a partir del procesamiento, análisis e interpretación de las bitácoras, permite generar inteligencia para enfrentar las amenazas y poder tomar acciones para mitigarlas de esta manera mejorar la seguridad en las redes industriales.

 

Es importante entender la naturaleza de las redes industriales para conocer el proceso particular de cada organización con el fin de establecer una línea base de seguridad que permita aplicar una estrategia de seguridad en profundidad (Defense in Depth) a estas redes. Esta estrategia nos permitirá agregar capas de seguridad al segmentar la red y aislar los sistemas críticos.

 

Es de vital importancia proteger la infraestructura crítica industrial debido al impacto que puede tener en la sociedad. Organizaciones como NERC, NIST, ISA, ISO/IEC y otras se han preocupado por el riesgo que implica que los ICS sean vulnerados, por lo que proveen de regulaciones, estándares, buenas prácticas y recomendaciones para formar una base de seguridad en redes industriales. Se recomienda leer los documentos que han publicado al respecto.

 

Puedes ver a continuación el video de cómo usar Conpot.

 

Referencias

 

Si quieres saber más, consulta:

UNAM

[ CONTACTO ]

Se prohíbe la reproducción total o parcial
de los artículos sin la autorización por escrito de los autores

 

Hecho en México, Universidad Nacional Autónoma de México (UNAM) © Todos los derechos reservados 2018.