Como hackers de sombrero blanco , en última instancia queremos poder desarrollar exploits para sistemas SCADA / ICS. De esta manera, podemos encontrar vulnerabilidades y vulnerabilidades antes de los Black Hats y parchear la vulnerabilidad antes de que los malos se aprovechen de ella. En este artículo, quiero darle una descripción básica del proceso de desarrollo de un exploit de día cero contra sistemas SCADA / ICS.

El desarrollo de un exploit de día cero para sistemas SCADA / ICS es claramente diferente de lo que es con sistemas Windows. La diferencia clave es la heterogeneidad de los sistemas SCADA / ICS. En otras palabras, hay múltiples protocolos, múltiples proveedores y múltiples configuraciones de hardware. Esta heterogeneidad puede hacer que el desarrollo del exploit sea, en algunos casos, mucho más fácil y, en otros, mucho más desafiante.

Espero que sea necesario decir que es necesario comprender los sistemas SCADA / ICS antes de continuar con el desarrollo de exploits. Asegúrese de haber estudiado toda mi serie aquí en SCADA Hacking antes de continuar con el desarrollo de SCADA exploit.

Existen cinco pasos básicos para el desarrollo de exploits de día cero en sistemas SCADA / ICS.

1. Seleccione su objetivo

A diferencia de los sistemas y redes de PC típicos, al comenzar a desarrollar un exploit para el sistema SCADA / ICS, primero debe establecerse en un objetivo. Con docenas de protocolos y proveedores, primero debe determinar cuál es su objetivo . Este objetivo puede ser un protocolo como MODBUS, un PLC en particular como el Seimens S7-1200 o una industria en particular como la industria de oleoductos.

Si elige apuntar a una industria, tendrá que hacer una investigación adicional sobre qué sistemas, protocolos y PLC está utilizando esa industria. Entonces, por ejemplo, si está apuntando a la industria de oleoductos , tendrá que hacer su investigación para saber que los PLC Honeywell que usan el protocolo PROFIBUS se encuentran entre los más populares en esa industria. Sabiendo eso, deberá aprender todo lo que hay que saber sobre el sistema que nos lleva al paso # 2.

2. Estudiar e investigar la documentación del blanco.

Una vez que haya seleccionado un objetivo, debe estudiar la documentación del objetivo. En la mayoría de los casos, el fabricante publica su documentación en línea en formato PDF para proporcionar a los desarrolladores y clientes la información necesaria. Esta documentación puede ayudarlo a comprender qué se supone que debe hacer el sistema . Esta documentación puede ser una fuente valiosa para encontrar y desarrollar información de vulnerabilidad clave.

Por ejemplo, si estaba trabajando en el desarrollo de un exploit para el ubicuo Siemens S7-1200, Seimens nos proporciona abundante documentación en su sitio web. Este manual de 864 páginas nos brinda información detallada sobre el funcionamiento interno de este PLC ampliamente utilizado. Estudie cuidadosamente para obtener sugerencias sobre las vulnerabilidades en este sistema, especialmente las secciones sobre Configuración de dispositivos, Instrucciones básicas y extendidas, Comunicación y Servidor web. Casi todos los fabricantes ofrecen manuales operativos similares detallados disponibles en línea.

3. Listar y priorizar interfaces accesibles

En la mayoría de los casos, el objetivo tendrá al menos una interfaz que se utiliza para comunicar y administrar el sistema. Estas interfaces pueden ser un socket TCP, un sensor, un puerto USB o cualquier forma en que la información entre o salga del sistema. En algunos casos raros, el objetivo puede estar totalmente fuera de línea, lo que hace que la explotación sea más problemática, pero no imposible (recuerde, la instalación de enriquecimiento de uranio iraní en Natanz, el objetivo de Stuxnet, estaba fuera de línea). Por ahora, concentrémonos en esas instalaciones con una interfaz accesible.

La mayoría de las instalaciones de SCADA / ICS tienen una HMI o una interfaz de máquina humana para monitorear y controlar la instalación, así como un historiador de datos para archivar información sobre el sistema. Ambos se comunican generalmente a través de un socket TCP y pueden proporcionar un punto de entrada al sistema SCADA.

4. Analizar y probar cada interfaz

Una vez que tenemos una lista y prioridad para cada interfaz, ahora podemos comenzar la fase de análisis y prueba. Este es un paso clave en el proceso de desarrollo de exploits y probablemente el más lento.

Tenemos al menos tres formas de abordar este proceso y requieren algunas habilidades de alto nivel. Éstos incluyen;

     1. Fuzzing

     2. Análisis binario estático

     3. Análisis binario dinámico.

Ir más allá del alcance de este artículo es detallar cada uno de estos procesos, pero intentaré proporcionar un breve resumen a continuación.

Fuzzing

Fuzzing es el proceso de lanzar grandes cantidades de datos aleatorios en una interfaz y ver qué sucede. Este suele ser un proceso automatizado realizado con una aplicación de fuzzing como Powerfuzzer, Peach, Aegis o Defensics.

La idea aquí es intentar romper la aplicación o el sistema con estos datos aleatorios. Si podemos encontrar una cadena que rompe la aplicación o el sistema, es posible que estemos en camino a una vulnerabilidad. Obviamente, una cadena que rompe el sistema tiene el potencial de ser utilizada como un ataque DoS y puede llevarnos a otras vulnerabilidades. En última instancia, esperamos que pueda llevarnos a un desbordamiento de búfer que podría ser explotado para ejecutar nuestro código remoto.

Análisis Binario Estático

Como su nombre lo indica, el análisis binario estático implica abrir y analizar binarios sin ejecutar el código. De esta manera, podemos obtener una idea de lo que realmente hace el código. Esto generalmente requiere un desensamblador como IDA Pro . IDA Pro es el estándar para el desmontaje en este tipo de análisis (busque mi próxima serie sobre ingeniería inversa y desarrollo de explotaciones usando IDA Pro).

Análisis Binario Dinámico

A veces necesitamos ejecutar el código para entender lo que hace. Aquí es donde entra en juego el análisis binario dinámico. En el análisis binario estático usamos un desensamblador como IDA Pro. En el análisis binario dinámico necesitamos una herramienta que permita que el código se ejecute y nos permita detenerlo en los puntos de interrupción para analizar qué instrucciones se están ejecutando y qué hay en varias ubicaciones de memoria. Estas herramientas son conocidas como depuradoras. Herramientas como IDA Python e Immunity son excelentes depuradores.

Estas herramientas le permitirán ejecutar el código, dividiéndose en puntos clave para estudiar y analizar el código de ensamblaje y luego examinar qué hay en las ubicaciones de memoria clave. A menudo, en este proceso podemos encontrar fallas en el código que nos permitirán romper el sistema.

5. Explotación de vulnerabilidades

Después de ejecutar este análisis, es de esperar que haya descubierto al menos una vulnerabilidad en el código o sistema. A veces, estas vulnerabilidades incluyen ejecutar un poco de código para detener el PLC (DoS) o ejecutar un código remoto en el objetivo que le permite tomar el control del sistema. Muchos de estos sistemas tienen contraseñas codificadas que, cuando se descubren, le permitirán tomar el control de estos sistemas. A menudo se pueden encontrar en la documentación en el Paso # 2 o consulte mi lista de contraseñas predeterminadas de SCADA.

Fuente: Hackers-arise.com

Compartir