Técnicas de seguridad IT aplicadas a entornos SCADA.

Voiced by Amazon Polly
SCADA viene de las siglas de «Supervisory Control And Data Adquisition», es decir: adquisición de datos y control de supervisión. Se trata de una aplicación software diseñada para funcionar sobre computadoras en el control de producción, proporcionando comunicación con los dispositivos de campo (controladores autónomos, autómatas programables, etc.) y controlando el proceso de forma automática desde la computadora.
Actualmente no hay suficientes personas con el conocimiento o la experiencia necesarios para realizar test de penetración en entornos SCADA. Muchas empresas de seguridad con personal altamente técnico tienen el conocimiento del 80% del trabajo, pero no se dan cuenta que  trabajos como: pruebas de red cableadas e inalámbricas, pruebas de aplicaciones web y tradicionales y pruebas de hardware integrado; forman parte de un test de penetración en entornos SCADA. Lo principal es que estas empresas se pierden es el contexto del sector energético. Motivo por el que las empresas de servicios públicos son reacias a incorporar firmas de seguridad con poca experiencia específica en los sistema de control industrial. Pero pocas empresas de servicios tienen la experiencia interna y necesitan un mayor número de empresas de seguridad para elegir. Además existen muy pocas herramientas de seguridad para trabajar con protocolos de sistemas de control industrial más allá de la captura y decodificación de paquetes.
En este artículo relatare técnicas de seguridad aplicadas a entornos SCADA, ejemplarizadas con herramientas.
Fingerprinting de dispositivos que trabajan sobre MODBUS/TCP.

El protocolo más utilizado en redes SCADA suele ser Modbus. Un protocolo de comunicaciones de nivel 7 OSI, basado en la arquitectura maestro/esclavo, diseñado en 1979 por Modicon para su gama de controladores lógicos programables (PLCs). Modbus es uno de los protocolos más utilizados porque: es público, su implementación es fácil y requiere poco desarrollo y además maneja bloques de datos sin suponer restricciones. Este protocolo puede ser empleado sobre RS-232, RS-422, RS-485 o TCP/IP (puerto estándar TCP 502).

Una de las vulnerabilidades de este protocolo, es la posibilidad de hacer fingerprinting a través de su puerto estándar TCP 502. Mediante la función 43 del protocolo puede averiguarse el registro de identificación de PLCs y conseguir información como: tipo de dispositivo, fabricante, versión y otras informaciones útiles para posteriores ataques.

Con la aplicación ModScan es posible aprovechar esta vulnerabilidad y escanear todos los dispositivos de la red SCADA y identificarlos. ModScan es un escáner para MODBUS/TCP que permite ver los dispositivos que usan el puerto para MODBUS/TCP en la red y averiguar su identificador.

Más información y descarga de ModScan:
http://code.google.com/p/modscan/

Especificaciones técnicas del protocolo Modbus:
http://www.modbus.org/specs.php

Firewall para MODBUS/TCP.

Los cortafuegos efectúan un perímetro lógico de seguridad para las redes SCADA y son claramente un elemento indispensable para garantizar la seguridad de este entorno. Pero los cortafuegos no cumplen las necesidades de las redes SCADA al no poder manejar los protocolos de comunicación, como es el caso de Modbus. Los cortafuegos y las ACLs actuales pueden filtrar direcciones IP y puertos, tal como TCP 502 para Modbus, pero no pueden filtrar contenidos en el protocolo Modbus que fluyen a través de ese puerto, como el código de función.

Con Modbusfw una extensión para Netfilter es posible dotar a este cortafuegos de capacidades para filtrar código de funciones en Modbus/TCP usando políticas (DROP, DENY, ALLOW, etc.). De esta forma es posible: establecer grupos de IP que solo pueden enviar determinados códigos de funciones ModBus, bloquear ciertos códigos de funciones Modbus que llegan a una IP… Esto mejora notablemente el control de acceso en el protocolo Modbus/TCP frente a la mayoría de los cortafuegos en los simplemente puedes controlar el acceso al puerto TCP 502 (puerto Modbus).

Modbusfw está disponible como extensión para el cortafuegos de Linux Netfilter y también se puede descargar incorporada en un LiveCD Trinux (minidistribución de GNU/Linux) lo que permite levantar de una forma rápida un cortafuegos Modbus/TCP.

Más información y descarga de Modbusfw:
http://modbusfw.sourceforge.net/

Vulnerabilidades en OPC.

OPC (OLE for Process Control) de Microsoft es un estándar de comunicación con arquitectura Cliente-Servidor usada en la industria de control de procesos. Está pensada para garantizar la comunicación entre dispositivos de distintos fabricantes, permitiendo la comunicación entre aplicaciones de control y de supervisión con independencia de la red en la que trabaje.

OPC se basa en los estándares de Microsoft: DCOM, OLE y RPC. Estos componentes de Microsoft han sido grandes fuentes de vulnerabilidades, de las que se han aprovechado múltiples virus. Esto se convierte en un grave problema en sistemas de control industrial porque es muy difícil implementar actualizaciones.

El problema actual es que la mayoría de los componentes y servidores OPC no incorporan ningunas funcionalidades de seguridad, afortunadamente MatrikonOPC dispone de tres aplicaciones gratuitas y certificadas por la fundación OPC que permiten fortalecer la seguridad de las comunicaciones OPC. Esas tres aplicaciones son:

MatrikonOPC Security Gateway:
Esta aplicación completa el vacío en seguridad que tienen muchas arquitecturas OPC en sus comunicaciones. Es compatible con Servidores OPC de cualquier fabricante y provee un control total sobre el acceso a las variables. Con MatrikonOPC Security Gateway es posible controlar para cada usuario si podrá acceder, leer o escribir en cada una de las variables.

MatrikonOPC Tunneller:
Permitire solucionar de forma rápida y fácil los diferentes inconvenientes asociados al DCOM de Windows. Es posible configurar el tiempo de Time-Out y la reconexión de Clientes OPC. Esta herramienta es ideal para reducir el tiempo de trabajo y configuración de arquitecturas OPC. MatrikonOPC Tunneller utiliza un único puerto para el envió de datos entre Servidor y Cliente OPC, puede hacerlo con compresión y encriptación para mayor seguridad. Soporta las especificaciones DA y HDA y es extremadamente fácil de instalar y configurar.

MatrikonOPC Server for Performance Monitor:
Este Servidor OPC permite monitorizar la actividad y la eficiencia de cualquier computadora en la red. Esta aplicación es una herramienta fundamental para el Soporte Técnico y el Departamento de IT ya que podrán conocer en tiempo real los detalles de funcionamiento de cada computadora involucrada en la arquitectura de adquisición de datos. MatrikonOPC Server for Performance Monitor envía Alarmas y Eventos ante situaciones anormales tales como uso extremo del CPU, intentos fallidos de logarse, fallos en Windows, etc.

Más información y descarga de estas herramientas en:
http://www.matrikonopc.es/products/opc-security/index.aspx

Disponibilidad en servicios OPC.

Dentro de la seguridad informática la disponibilidad es un factor muy importante que normalmente se le suele menospreciar. Entendemos por disponibilidad a la garantía de que los usuarios autorizados puedan acceder a la información y recursos de red cuando los necesiten. La disponibilidad es un factor imprescindible en sistema SCADA. En este post tratare sobre herramientas para mejorar la disponibilidad en OPC.

OPC (OLE for Process Control) de Microsoft es un estándar de comunicación con arquitectura Cliente-Servidor usada en la industria de control de procesos. Está pensada para garantizar la comunicación entre dispositivos de distintos fabricantes, permitiendo la comunicación entre aplicaciones de control y de supervisión con independencia de la red en la que trabaje. OPC se basa en los estándares de Microsoft: DCOM, OLE y RPC.

MatrikonOPC dispone de cuatro herramientas gratuitas que nos permiten: probar clientes y servidores OPC, simular y testear problemas de conexión en OPC. Estas aplicaciones son:

MatrikonOPC Explorer:

Es una herramienta para visualizar variables OPC y realizar pruebas con conexiones en tiempo real. MatrikonOPC Explorer es una herramienta fácil y rápida para comprobar el funcionamiento de servidores OPC y realizar desarrollos OPC de una forma más simple. Más allá de la prueba simple de conexión, esta herramienta proporciona funciones avanzadas incluyendo la prueba de carga del servidor OPC, identificando los servidores OPC seguros y la capacidad de conectar con ellos para buscar la configuración más óptima.

Más información y descarga de MatrikonOPC Explorer:
http://www.matrikonopc.com/products/opc-desktop-tools/opc-explorer.aspx

MatrikonOPC Simulation Server:

Es una herramienta diseñada para integradores y desarrolladores que necesitan realizar pruebas con aplicaciones OPC. Esta aplicación permite realizar pruebas de conectividad y calidad de clientes OPC. Los usos de pruebas en los servidores OPC en servicio, pueden dar lugar a pérdida de datos de la producción real. El servidor de simulación de MatrikonOPC crea un ambiente simulado para en caso de problemas, no perder ningún dato de proceso real.

Más información y descarga de MatrikonOPC Simulation Server:
http://www.matrikonopc.com/products/opc-drivers/opc-simulation-server.aspx

MatrikonOPC Analyzer:

Es una utilidad para encontrar áreas problemáticas comunes de OPC y archivos importantes de respaldo de OPC.
Características:

  • Soprota archivos de configuración de XML y ficheros de log del servidor del OPC.
  • Comprueba áreas problemáticas comunes del OPC tales como ajustes del cortafuego, DEP, ajustes de red, así como la información del registro de acontecimientos y actualización del sistema operativo
  • Resume los ajustes de DCOM por defecto, ajustes de OPCEnum y ajustes específicos de DCOM en el servidor OPC.

Más información y descarga de MatrikonOPC Analyzer:
http://www.matrikonopc.com/products/opc-desktop-tools/opc-analyzer.aspx

MatrikonOPC Sniffer:

Especialmente diseñada para integradores de instalaciones y configuración de arquitecturas OPC, MatrikonOPC Sniffer ayuda a investigar objetivamente la solución de problemas de interoperabilidad entre Cliente OPC / Servidor OPC. MatrikonOPC Sniffer señala rápidamente cuando los Servidores OPC y Clientes no se comunican correctamente. Registra la actividad entre Servidores y Clientes OPC para aislar los problemas de interoperabilidad y ayudar a resolver problemas de forma rápida y sencilla.

Más información y descarga MatrikonOPC Sniffer:
http://www.matrikonopc.es/products/opc-data-management/opc-sniffer.aspx

Honeypot para simular redes SCADA.

Es muy difícil recrear un honeypot de una red SCADA dado la variedad de despliegues de redes industriales y la falta de una arquitectura estándar. Otro de los factores que dificultan simular estas redes, es que utilizan muchos protocolos de red diferentes y topologías muy complejas. Aqui citaremos dos herramientas: Honeyd,Conpot, Gaspot y Gridpot.

En SCADA HoneyNet Project podemos encontrar complementos para el honeypot Honeyd que nos permiten simular una variedad de redes industriales tales como arquitecturas de SCADA, de DCS, y de PLC.

Con Honeyd es posible simular varios dispositivos industriales basados en IP en un mismo anfitrión como por ejemplo: un servidor de Modbus/TCP en el puerto 502 y EtherNet/IP en los puertos 44818/2222. Y de esta forma recoger datos sobre los ataques que se producen a dichos dispositivos.

Para completar este honeypot necesitamos simular conexiones serie debido a que muchos dispositivos industriales utilizan RS-232/485, es posible, utilizando el modulo programado en python llamado pySerial. De esta forma presentamos un interfaz de protocolo a un atacante que se conecte por el puerto serie.

Este honeypot no solo nos puede servir de estudio de ataques que puede sufrir una red industrial, aplicando las cualidades de Honeyd nos permite utilizarlo como técnica de camuflaje ante ataques de Fingerprinting. Ya que entre las opciones de Honeyd es posible configurar que solo responda a un rango de IP determinado o que responda en una franja horaria concreta.

Más información y descarga de SCADA HoneyNet Project:
http://scadahoneynet.sourceforge.net/

Ejemplo de simulación de un PLC:
http://scadahoneynet.sourceforge.net/plc.html

Modulo pySerial escrito en python de simulación de RS-232/485:
http://pyserial.sourceforge.net/

Conpot viene por defecto con un modulo HMI. Si ejecuta Conpot con la configuración por defecto y sin parámetros adicionales, servirá la página por defecto en el puerto 80. La página predeterminada es sólo un archivo de texto plano que recibe del ‘sysDescr’ desde el servidor SNMP.

Conpot tiene soporte para HPFeeds, un protocolo generico de intercambio de datos que se utiliza en el Proyecto Honeynet. Esto significa que con HPFeeds habilitadas se compartirán los datos que recoja el sensor con el proyecto.

Según los desarrolladores en este momento sólo hay un número muy pequeño de sensores desplegados, debido a que HPFeeds no está activado por defecto y probablemente pocos usuarios utilizan el modulo HMI para atraer atacantes. Con el modulo HMI el tráfico es significativamente mayor en el honeypot debido al trafico generado por los motores de búsqueda.

Para tener acceso a los datos de Conpot, es necesario crear una cuenta HPFriends. Con el registro de la cuenta se crea una una authkey. Después hay que modificar el cliente de Conpot con la authkey de credenciales dadas.

Más información y descarga de Conpot:
https://github.com/mushorg/conpot

GasPot es un honeypot que ha sido diseñado para simular un AST Veeder Root Gaurdian, los medidores de tanques comúnmente utilizados en la industria del petróleo y el gas para los tanques de gasolineras, para ayudar con el inventario de combustibles . GasPot fue diseñado para funcionar de forma totalmente aleatoria de modo que no hay dos honeypots con el mismo aspecto.

Más información y descarga de GasPot:
https://github.com/sjhilt/GasPot

Gridpot es un honeypot de codigo abierto que simula un SCADA de red eléctrica de forma realista. Gridpot es una combinación del honeypot Conpot y el simulador de redes eléctricas GridLAB-D. Esta combinación permite que este honeypot adquiera todas la ventajas de adquisición de datos de Conpot y un entorno de simulación con múltiples modelos que le aportan gran realismo gracias al simulador de redes eléctricas GridLAB-D.

Más información y descarga de Gridpot:
https://github.com/sk4ld/gridpot

Implementar IDS.

Un IDS siempre es una buena solución para mejorar la seguridad de una red, pero para que sea efectivo en un entorno tan particular como una red de un sistema SCADA, tiene que tener unas reglas especificas adaptadas a los protocolos que se usan en dichas redes.

La mayoría de los proveedores de IDS también ofrecen un sistema de prevención de intrusiones IPS, se refiere a la capacidad de que no sólo puede detectar un ataque, también puede bloquear la comunicación para defenderse de dicho ataque. Teniendo en cuenta que la disponibilidad es el problema de seguridad más crítico en la gran mayoría de los sistemas SCADA, los falsos positivos en una implementación de IPS podrían tener resultados desastrosos.

Digital Bond tiene un proyecto de desarrollo de firmas IDSpara entornos SCADA llamado QuickDraw muy complemento y gratuito. En este momento hay firmas disponibles para: protocolos de red usados en SCADA, un conjunto de firmas que identifican ataques contra las vulnerabilidades divulgadas de sistemas SCADA y un grupo de firmas que identifican los eventos de seguridad específicos para sistemas de diferentes proveedores.  Todas las firmas están documentadas e incluyen una sección sobre falsos positivos.

Este proyecto  incluye preprocesadores y plugins para el IDS Snort. Estos preprocesadores manejan protocolos usados en redes SCADA como: DNP3, EtherNet / IP y Modbus TCP, sus funciones son preparar la comunicación para el análisis de las reglas de Snort.  Los plugins están disponibles para cada preprocesador y sirven para crear palabras clave que pueden ser utilizadas en las reglas, para evaluar el contenido descodificado en el preprocesador. En todos los casos, los preprocesadores y plugins hacen la escritura de reglas más fácil, porque realizan el trabajo de identificación de los diversos campos, al igual que la decodificación de protocolo,  así el análisis de un paquete es más sencillo. Sin el preprocesador, sería muy difícil o imposible que funcionasen las reglas. Por ejemplo, hay algunas reglas que sólo son aplicables cuando una sesión se ha establecido, una regla que no pueda realizar un seguimiento de este estado, es probable que reporte falsos positivos.

Las firmas incluidas en este proyecto  se desarrollaron inicialmente como reglas de Snort, y la descarga desde la pagina se encuentra todavía en un formato de Snort. Muchos proveedores de IDS / IPS, soportan o tienen la capacidad de importar reglas de Snort y han optado por agregar las firmas a sus bases de normas SCADA. Una lista parcial de proveedores que apoyan  todas o algunas de las firmas QuickDraw en sus IDS / IPS son:

  • 3com/Tipping Point
  • Cisco
  • Counterpane/BT
  • Fortinet
  • Industrial Defender
  • ISS/IBM
  • Juniper
  • McAfee
  • Secureworks
  • Symantec
  • Tenable Security

Mientras que las firmas de Snort se convierten fácilmente a otro formato de IDS / IPS,  los preprocesadores no son fáciles de convertir. Estos preprocesadores son esencialmente programas de software que decodificar el protocolo y almacenar los campos de las variables para el análisis de palabras clave nuevas creadas en los plugins. 


Las firmas de EtherNet / IP necesitan el preprocesador EtherNet / IP y es poco probable que funcione en cualquier IDS que no tenga un motor de Snort. La mayoría de las otras firmas disponen de versiones que trabajan con y sin un preprocesador, por lo que estos son fáciles de exportar  otro IDS / IPS.

Más información y descarga de QuickDraw: http://www.digitalbond.com/tools/quickdraw/download/

Simular tráfico para probar eficacia IDS en redes industriales.

Un IDS siempre es una buena solución para mejorar la seguridad de una red, pero para que sea efectivo en un entorno tan particular como una red de un sistema SCADA, tiene que tener unas reglas especificas adaptadas a los protocolos que se usan en dichas redes.

Para probar la eficacia del IDS en entornos SCADA la mejor forma es simular tráfico usando los protocolos usados en dichos SCADA. En este post tratare sobre tres herramientas para simular tráfico en tres protocolos muy usados en redes SCADA como: EtherNet/IP y Modbus TCP.

Modbus TCP.

Usando el generador de tráfico Modbus una herramienta escrita en Python, que utiliza las bibliotecas Scapy para evaluar la eficacia de las soluciones de seguridad SCADA. La herramienta genera paquetes Modbus / TCP, donde las características de estos paquetes se extraen de las reglas de Snort NIDS Modbus. Los paquetes generados desencadenan alertas relacionadas en Snort NIDS y otros IDS.

Más información y descarga:
http://sourceforge.net/projects/modbus-traffic-generator/?source=directory

EtherNet/IP.

Con la herramienta para simular trafico EtherNet/IP EIPTool, una pequeña y sencilla herramienta de ayuda que asiste a explorar objetos CIP de nodos EtherNet / IP, sin necesidad de ningún archivo EDS. Permite simular la mensajería explícita  leer y escribir los atributos del CIP.  Permite cambiar la dirección IP de dispositivos EtherNet/IP  utilizando el objeto 0xF5 estándar (TCP / IP).

Más información y descarga de EIPTool:
http://www.molex.com/molex/common/staticLoader.jsp?fileName=/mx_upload/superfamily/iccc/EtherNet_IPTool.html

Herramientas de seguridad para WINCC y PLC´s S7.

En este post tratare sobre tres herramientas muy interesantes para el análisis de seguridad y fortalecimiento de redes en SCADA Siemens y PLC´s S7, ya que el SCADA WINCC junto con los PLC´s de la serie S7 son los más usados en la automatización industrial.

Estas herramientas son:

PLCScan.
Herramienta programada en python, para la exploración dispositivos PLC de la serie S7 a través del protocolo ModBus/tcp.

Ejemplo de usos:
plcscan.py 192.168.0.1
plcscan.py –timeout 2 192.168.0.1:102 10.0.0.0/24
plcscan.py –hosts-list hosts.txt

Ejemplos de resultados:
192.168.0.1:102 S7comm (src_tsap=0x100, dst_tsap=0x102)
   Module                   : 6ES7 151-8AB01-0AB0  v.0.2       
   Basic Hardware           : 6ES7 151-8AB01-0AB0  v.0.2       
   Basic Firmware           :                      v.3.2.6     
   Unknown (129)            : Boot Loader           A          
   Name of the PLC          : SIMATIC 300(xxxxxxxxx)     
   Name of the module       : IM151-8 PN/DP CPU            
   Plant identification     :                              
   Copyright                : Original Siemens Equipment   
   Serial number of module  : S C-BOUVxxxxxxxx                 
   Module type name         : IM151-8 PN/DP CPU

Más información y descarga:
https://code.google.com/p/plcscan/

wincc_harvester.
Un modulo para Metasploit que permite acceder a datos sensibles de la base de datos de Siemens SIMATIC WinCC, datos como: usuarios, roles, PLC..
Intalación en Metasploit:
Copiar el archivo “wincc_harvester.rb” en “/opt/metasploit/msf3/modules/auxiliary/admin/scada /”
Uso:
El uso auxiliar en “/admin /SCADA /wincc_harvester”

Más información y descarga:
https://github.com/nxnrt/wincc_harvester

OPC Server para PLC S7 Siemens.
El OPC server para PLCs S7 de Siemens ofrece conectividad a la familia de PLC´s S7 (S7-200, S7-300, S7-400 y S7 serie 1200) a través de Ethernet. Permite el acceso a datos en vivo de Siemens S7, este servidor es asequible, permite ponerlo en marcha de inmediato sin la complejidad de otros paquetes de software.

Entres sus características destaca:

  • La función de detección automática para los adaptadores NetLink-MPI Hilscher sin la necesidad de software de configuración adicional.
  • Puede importar símbolos de proyectos de Simatic STEP 7 para la configuración simple de etiquetas.
  • Configuración del sistema «en vivo» sin pérdida de datos, no requiere reinicio del servidor.
  • Permite trabajar  en modo offline para ayudar a la integración de sistemas.
  • Redundancia a nivel de dispositivo.
  • Fácil configuración paso a paso basada en un asistente.
  • Permite conceder y denegar el acceso a etiquetas basándose en el inicio de sesión del usuario.

Más información y descarga:
http://www.matrikonopc.com/downloads/442/index.aspx

Auditar la configuración de seguridad de sistemas de control industrial.

Utilizando Bandolier un proyecto de Digital Bond que ayuda a identificar y auditar la configuración de seguridad óptima de entornos SCADA a nivel de aplicación, estaciones de trabajo y servidores. Bandolier es un conjunto de archivos para auditorías que trabajan con plugins del escáner de vulnerabilidades Nessus. Estés archivos de auditoría de seguridad abarcan hasta  veinte componentes de sistema de control industrial diferentes.

Bandolier define la configuración de seguridad óptima para servidores y estaciones de trabajo de SCADA y DCS. Proporciona los archivos de auditoría de seguridad a medida para aplicaciones de sistemas de control industrial. Establece una manera segura y eficaz para auditar la seguridad de los componentes de sistemas de control industrial.

No hay software cliente, ni son necesarios agentes ni servicios en el servidor del sistema de control industrial o estación de trabajo. Solo se necesitan los archivos de auditoría y el escáner de vulnerabilidades Nessus. Los plugins de cumplimiento de las políticas crean una conexión con poco impacto en el servidor o en la estación de trabajo del SCADA. Nessus utiliza una funcionalidad del sistema operativo para comparar la configuración del servidor del sistema de control industrial, a las que se definen en el archivo de auditoría de seguridad de Bandolier. Al finalizar Nessus ofrece un informe que muestra si cada valor corresponde a lo que en el proyecto Bandolier se define como una configuración de seguridad optima.

Más información y descarga Bandolier:
http://www.digitalbond.com/tools/bandolier/

Utilizar técnicas de fuzzing en sistemas de control industrial.

La técnica del fuzzing consiste en realizar diferentes test de software capaces de generar y enviar datos secuenciales o aleatorios a una aplicación, con el objeto de detectar defectos o vulnerabilidades. El fuzzing sirve para encontrar vulnerabilidades del tipo: format string, integer overflow, buffer overflow, format string…

Emplear técnicas de fuzzing en sistemas SCADA puede ser útil para encontrar vulnerabilidades a todos los niveles: software, programación en elementos hardware, protocolos de red…

Para realizar técnicas de fuzzing en entornos SCADA existe una herramienta que es adaptable a cualquier entorno de consumo de datos. Se trata de Peach comúnmente utilizada para formatos de archivo de fuzz, protocolos de red y API.

Peach es un fuzzer multiplataforma capaz de realizar fuzzing con un sólido sistema de supervisión que permite: la detección de fallos, la recopilación de datos y la automatización del entorno de fuzzing. Con objetivos que van desde los navegadores web, los servicios de red a través de dispositivos móviles y sistemas de control industrial (SCADA).

Todas las características de Peach están diseñados para ser ampliado fácilmente. Las extensiones de Peach son típicamente escritas en el lenguaje C# como módulos de ensamblaje.

Más información y descarga de Peach:
http://peachfuzzer.com/

Herramienta para chequear la seguridad de un entorno SCADA.

SCADAShutdownTool es una herramienta que permite a los administradores de un entorno SCADA: poner a prueba los sistemas de seguridad del entorno, enumerar controladores esclavos, leer los valores de registro del PLC y reescribir los datos de registros. 

SCADAShutdownTool permitir enumeraciones de todos los registros de un PLC incluyendo: salidas de bobina, entradas digitales, entradas analógicas, registros de las explotaciones y los registros extendidos.

SCADAShutdownTool puede funcionar en tres modos diferentes:

  • Safe-mode: Modo sólo lectura y lista de valores distintos de cero.
  • Real-mode: Vuelve a escribir sólo valores distintos de cero
  • Aggressive-mode: Vuelva a escribir todos los registros del PLC.

Registros del PLC se pueden reescribir con el valor por defecto o «valor de apagado», según lo especificado por el usuario.

SCADAShutdownTool se ha desarrollado solamente para fines de investigación, pero permite a un atacante malicioso: escanear,  realizar técnicas de fuzzing y ejecutar un comando remoto en un entorno SCADA, tanto en sistemas como en PLCś.

Más información y descarga de SCADAShutdownTool:
https://github.com/pentdebra/SCADAShutdownTool

Mapeador de red pasivo de entornos SCADA/ICS.

El riesgo cibernético de los sistemas SCADA/ICS que controlan las infraestructuras críticas, es significativo y crece día a día. Hay una posibilidad cada vez mayor de ataques cibernéticos con consecuencias perjudiciales o físicamente destructivos. El estado de las vulnerabilidad de los sistemas y dispositivos ICS/SCADA (Por ejemplo, PLC, HMI) se ha documentado públicamente en los informes de vulnerabilidad en Internet y discutido en múltiples conferencias. Para entender el riesgo asociado, debemos entender lo que estamos tratando de proteger, esto comienza con un buen conocimiento de la situación.

GRASSMARLIN es un mapeador de red pasivo, dedicado a las redes industriales y desarrollado por la Agencia Nacional de Seguridad (NSA). La herramienta se ha liberado recientemente a código abierto y está disponible directamente en GitHub. GRASSMARLIN muestra una instantánea de una red de un entorno SCADA incluyendo:

  • Dispositivos que forman parte de la red.
  • Las comunicaciones entre los dispositivos.
  • Metadatos que extrae de estas comunicaciones.

El mantenimiento de la disponibilidad de los sistemas de control industrial es una necesidad primordial. De hecho, cualquier fallo puede llevar a consecuencias importantes que van desde la pérdida del servicio a la pérdida de vidas. Por lo tanto, a fin de no perturbar la disponibilidad de dispositivos industriales, todas las operaciones que realiza GRASSMARLIN se realizan de forma pasiva. De hecho, analiza de forma pasiva las comunicaciones a diferencia de las herramientas de mapeo activas, tales como nmap o plcscan, que envían paquetes a través de la red y analizan las respuestas posibles.

GRASSMARLIN muestra dos tipos de vistas:

  • La vista lógica: muestra todos los dispositivos y las comunicaciones entre ellos.
  • La vista física: lista los enlaces físicos entre los dispositivos industriales y los dispositivos de red.

Vista lógica.

La topología se genera a partir de una captura de paquetes de dispositivos industriales que utilizan el protocolos de comunicación. El mapa principal muestra los dispositivos de la red y la comunicación entre los dispositivos y subredes, cada dispositivo se identifica por su dirección IP. Por otra parte, puede reconocer dispositivos y protocolos industriales gracias a las firmas de protocolos integradas. Se detalla el rol de los dispositivos: el maestro (Human Machine Interface – HMI) da órdenes mientras que el esclavo (Controlador Lógico Programable – PLC) las ejecuta. El nombre del proveedor de los dispositivos también se muestra para ayudar a los gestores de ICS/SCADA a localizar los dispositivos. Si las direcciones IP son públicas también se muestran los países al que pertenecen, con sus respectivas banderas. Toda esta información se genera después de la confrontación entre los paquetes capturados y firmas de GRASSMARLIN. También es posible aislar las comunicaciones vinculadas a un dispositivo en particular y obtener en un primer análisis: tamaño de paquetes, instante de emisión, origen del paquete…

Vista física.

Esta vista proporciona los enlaces físicos existentes entre los dispositivos, más centrado en el aspecto de la red, este punto de vista informa de la conexión física entre los dispositivos industriales y equipos de red. En V3 de GRASSMARLIN sólo los routers de Cisco son compatibles y la vista física se generan a partir de la salida de estos comandos:

  • «show running-config»
  • «show ip arp»
  • «show mac address-table»
  • «show interfaces»

Una vez que los resultados de estos comandos se guardan en un archivo de texto simple, GRASSMARLIN puede generar la vista física.

El objetivo de esta herramienta es concienciar la situación de las redes  SCADA/ICS y ampliar la base de conocimiento a través de la identificación y colaboración con la comunidad de usuarios. Proporcionando conocimiento de la situación de los sistemas de control industrial (ICS) y de Supervisión redes de adquisición de datos (SCADA), para apoyar la seguridad de las redes. Generando pasivamente y visualmente una topología de red mientras se realizan de forma segura: la detección de dispositivos, el conteo de los mismos y informar sobre estos sistemas críticos. Actualmente GRASSMARLIN está disponible en: Windows 7 64 bits y en Linux (Fedora, Ubuntu).

Más información y descarga de  GRASSMARLIN:
https://github.com/iadgov/GRASSMARLIN

Herramientas para test de penetración en entornos SCADA.

Durante años, ha habido distribuciones de test de penetración como BackTrack y SamuraiWTF para ayudar a realizar pruebas de penetración en la mayoría de los entornos de TI, sin embargo, estas distribuciones han sido de naturaleza genérica para permitir su uso en una amplia variedad de entornos diferentes. Un entorno en el que estas distribuciones no han podido satisfacer las necesidades de sus usuarios es en los sistemas SCADA y Smart Grid. Existe una distribución de código abierto Linux específicamente para los equipos de seguridad de la empresas eléctricas: SamuraiSTFU saca lo mejor de las herramientas de seguridad para las pruebas tradicionales de penetración de red y web, y agrega herramientas especializadas para pruebas integradas y de RF, y las mezcla en el contexto del sector energético, con documentación y archivos de muestra. Sin olvidar la inclusión de emuladores para SCADA, Smart Meters y otros tipos de sistemas del sector de la energía para proporcionar un laboratorio de pruebas completo.

Las principales características de SamuraiSTFU:

  • Live DVD/VM para realizar pruebas de penetración en sistemas de control industrial con utilidades de auditoria para proveedores en el sector de la energía y otros sectores, como gas, agua, petróleo y sistemas de control en general. Y herramientas de auditoria para contratistas de seguridad e investigadores independientes.
  • Incluye herramientas gratuitas y de código abierto para todos los aspectos de Pentesting SG con: las mejores herramientas de pentesting web (pequeño subconjunto de SamuraiWTF),  las mejores herramientas de pentesting de red (pequeño subconjunto de Backtrack) y las mejores herramientas de pentesting de hardware (no incluidas actualmente en ninguna distribución).
  • También posee funciones adicionales diseñadas para equipos de seguridad de servicios públicos y firmas de seguridad que intentan obtener experiencia en servicios públicos: documentación sobre herramientas, arquitectura, metodología y protocolos, sistemas simulados de Smart Grid para fines educativos, capturas de paquetes de muestra y volcados de datos para ejercicios.

Más información y descarga de SamuraiSTFU:
http://www.samuraistfu.org/

Moki es una modificación de Kali para incluir varias herramientas ICS/SCADA diseminadas por Internet, para crear un Kali Linux personalizado dirigido a profesionales de pentest de ICS/SCADA. Ademas de incluir herramientas propias de ICS/SCADA, la distirubución Kali de por si incluye muchas herramientas de test de penetración de redes que son necesarias para pruebas de test de penetración en entornos SCADA.

Moki incluye las siguientes herramientas:

  • Quickdraw SCADA Snort Rules de Digital Bond. Reglas IDS / IPS de Digital Bond para protocolos ICS e ICS. Este proyecto  incluye preprocesadores y plugins para el IDS Snort. Estos preprocesadores manejan protocolos usados en redes SCADA como: DNP3, EtherNet / IP y Modbus TCP, sus funciones son preparar la comunicación para el análisis de las reglas de Snort.
  • CoDeSys exploit Digital Bond, identifica los PLC que ejecutan en tiempo de ejecución  la versión 2 creado por 3S-Software GmbH. Estos controladores hablan un protocolo binario propio para instalar nueva lógica, así como para depurar la lógica en ejecución. El protocolo puede requerir autenticación. En la práctica, pocos dispositivos admiten este comportamiento. Esta secuencia de comandos no prueba la autenticación
  • PLC Scan,  es una herramienta escrita en Python que busca dispositivos PLC a través de los protocolos s7comm o Modbus.
  • ModScan es una herramienta diseñada para mapear una red Modbus TCP/IP. La herramienta está escrita en python para mejorar su portabilidad y se puede usar en prácticamente cualquier sistema con pocas bibliotecas.
  • Siemens S7 metasploit, son módulos Siemens Simatic S7 para metasploit, son bastante sencillos. Solo hay que establecer las direcciones IP en RHOSTS y la cantidad de veces que desea iniciar y detener la CPU.
  • Siemens S7 wireshark dissector, este es un complemento disector de Wireshark (dll) disecciona los paquetes ISOonTCP para la comunicación con los PLC Siemens S7. El protocolo s7comm está directamente integrado en wireshark , ya no necesita el complemento si usa una versión real de Wireshark. En el caso de s7comm-plus para S7 1200/1500 plc, hay que usar las últimas fuentes de Wireshark.

Más información y descarga de Moki:
https://github.com/moki-ics/moki

Visualizar topología de redes bajo el protocolo PROFINET.

PROFINET (Process Field Net) es un estándar técnico de la industria para la comunicación de datos a través de Industrial Ethernet , diseñado para recopilar datos y controlar equipos en sistemas industriales , con la particularidad del uso en la entrega de datos de restricciones de tiempo (en el orden de 1 ms o menos). El estándar es mantenido y respaldado por Profibus & Profinet International, una organización global con sede en Karlsruhe, Alemania .

Se definen tres niveles de protocolo:

  • TCP/IP para datos no críticos y puesta en servicio con tiempos de reacción en el rango de 100 ms.
  • Protocolo RT (Real-Time) para aplicaciones PROFINET IO hasta tiempos de ciclo de 10 ms.
  • IRT ( Isochronous Real-Time) para aplicaciones PROFINET IO en sistemas de accionamiento con tiempos de ciclos de menos de 1 ms. 

TruffleHog es una herramienta de análisis de red que funciona junto con Snort para representar visualmente un gráfico de la topología redes bajo el protocolo PROFINET. Esta herramienta requiere una versión modificada de Snort que incluya un preprocesador PROFINET para recopilar las denominadas Truffles que representan un análisis semántico de un paquete de red PROFINET. Realiza un seguimiento de todas las Truffles entrantes, utiliza la información semántica para construir una topología de red (o más bien un mapa de red) y la muestra de una manera comprensible en tiempo real.

El software representa la información de las de la siguiente manera:

  • En el centro, se puede ver el gráfico con nodos que representan a los participantes de la red, los bordes que representan las conexiones establecidas entre los participantes y las direcciones MAC o nombres de host asociados a un nodo.
  • En la esquina inferior izquierda hay una barra de herramientas que proporciona la funcionalidad más básica del programa. Incluye (de izquierda a derecha) iniciar la comunicación entre procesos con Snort (también conocido como connect) y el menú de filtros.
  • En la esquina inferior derecha hay una superposición que muestra información básica bastante clara sobre el gráfico de red actual.
  • En la esquina superior derecha (siempre que se seleccione al menos un nodo), se encuentra otra superposición que contiene información sobre los nodos seleccionados actualmente. Parte de esta información es mucho más avanzada y está dirigida a profesionales que buscan una visión más profunda de lo que está sucediendo. 

TruffleHog, permite definir filtros a un conjunto de nodos por dirección MAC, dirección IP o expresión regular (aplicado al nombre de los nodos). Los nodos seleccionados pueden ser marcados con colores como «autorizados». Los filtros también tienen asignada una prioridad. El filtro con la prioridad más alta se ejecuta al final y, por lo tanto, las máscaras con una prioridad más baja. La lista de filtros es bastante auto-explicativa, (+) para crear uno nuevo, (-) para eliminar el filtro resaltado y luego el lápiz para editarlo. El botón de la izquierda agrega un nuevo filtro que coincide solo con los nodos seleccionados actualmente.

La manera más fácil de crear un filtro para un conjunto visible de nodos es seleccionarlos en el gráfico, luego abrir el menú de filtros y hacer clic en el botón que muestra pequeños nodos en el extremo izquierdo. En la ventana de creación del filtro se abre un nuevo filtro y los nodos seleccionados se definen por la dirección MAC. Se asigna prioridad, color y si deben marcarse como autorizados y si están listos para comenzar. Para crear filtros más complejos también se puede definir nodos por expresiones regulares (por ejemplo, “estación- *” para que coincida con todos los clientes con un nombre que empiece por «estación-«) o por dirección IP fija o subred (192.168.1.1/24). Marcar nodos como autorizado con filtros sirve principalmente con fines organizativos. También ayuda a colorearlos en verde o cualquier otro color que simbolice «ok» como nemotécnico. Por el contrario, los clientes de las subredes no autorizadas podrían ser de color rojo.

Más información y descarga de TruffleHog:
https://github.com/truffle-hog/truffle-hog

Plataforma de control y monitorización, ideal para entornos industriales.

La plataforma de control y monitorización C2MON desarrollada por el CERN, es un conjunto de herramientas escrito en Java para construir soluciones de monitorización altamente complejas, distribuidas y a prueba de fallos. Por lo tanto, utiliza una arquitectura de 3 niveles con la posibilidad de ejecutar múltiples servidores al mismo tiempo, lo que permite aplicar parches y actualizaciones sin afectar a la disponibilidad del servicio. C2MON gestiona centralmente la configuración de todos los procesos de adquisición de datos (DAQ) en ejecución y maneja su configuración en línea sin ningún tiempo de inactividad o posible pérdida de datos. La arquitectura modular se basa en un sistema central que pretende ser reutilizable para múltiples escenarios de monitorización, mientras mantiene cada instancia lo más liviana posible. C2MON viene con una interfaz web de aspecto moderno que proporciona muchas funcionalidades básicas para la navegación, administración y análisis de datos. 

Esquema SCADA


Como C2MON es esencialmente un marco de adquisición de datos heterogéneo con funcionalidades de configuración, exploración de históricos, control y alarma, puede ser adecuado para crear muchos tipos de sistemas diferentes. Por ejemplo, se usa internamente en el CERN como: un sistema SCADA industrial, sistema de monitorización de red, como un servicio central de agregación de alarmas y como un proxy de datos de propósito general. Por ejemplo, es posible reutilizar C2MON dentro de un proyecto como middleware SCADA abierto mientras se enfoca en el desarrollo de aplicaciones cliente. Algunos ejemplos más se enumeran a continuación.

C2MON se puede usar para:

  • Para adquirir y almacenar datos de diferentes tipos de sistemas.
  • Para construir una solución de monitorización y control simple, altamente distribuida o basada en la nube.
  • Para obtener soluciones de alta disponibilidad con configuración en línea.
  • Para compartir datos de cientos de miles o incluso millones de sensores de datos con múltiples tipos de aplicaciones.
  • Para agrupar la adquisición de datos con notificaciones de eventos y para ejecutar tareas en segundo plano (por ejemplo, evaluaciones de reglas o alarmas).
  • Para administrar de forma centralizada la configuración de suscripción desde diferentes tipos de sistemas.
  • Para definir objetos estructurados (dispositivos) en la parte superior de su adquisición de datos que pueden reutilizarse en el nivel del cliente.
  • Como marco de análisis de datos.
  • Como simple proxy de datos.
  • Como sistema de filtrado para reducir, por ejemplo, el ruido de los sensores analógicos.
  • Como registrador de datos.
  • Como reproductor de historial de datos para aplicaciones cliente para reproducir, por ejemplo, paneles sinópticos muy complejos.

La plataforma C2MON utiliza una arquitectura de 3 niveles:

  • Capa de adquisición de datos (DAQ), proporciona soluciones para adquirir datos de una cantidad de protocolos/hardware.
  • Capa del servidor. La arquitectura del servidor está diseñada alrededor de un caché (distribuida), que guarda para cada sensor configurado el último valor In-Memory. Internamente, el servidor se divide en varios módulos, incluida la posibilidad de escribir módulos opcionales que proporcionan funcionalidades adicionales. Basada en el contenedor Java Spring y está diseñada para ejecutarse en una configuración agrupada.
  • Capa del cliente. La comunicación con la capa del cliente se realiza a través de una API de cliente C2MON.

Las aplicaciones de C2MON dentro de entornos industriales son muy amplias, se puede utilizar como: sistema de monitorización de red, como un servicio central de agregación de alarmas, como un proxy de datos de propósito general, como un sistema de monitorización de un entorno SCADA incluso como un propio SCADA. Dentro de entornos industriales con sistemas SCADA ya montados podría usarse como contingencia en caso de fallo mejorando así la disponibilidad.

Más información y descarga de C2MON:
http://cern.ch/c2mon

Deja un comentario