Nmap Scripting Engine para ICS

Muchos sabemos que Nmap es una de las herramientas estrella para identificar host, servicios, redes  y poder llevar a cabo tareas de recolección de información (Information Gathering) dentro de procesos de auditoría o pentesting. Hablando más concretamente de entornos industriales, hemos de tomar ciertas precauciones ya que podremos afectar a la operativa del equipo, algo que en ningún caso puede producirse. Nmap posee además algunas funcionalidades extra de la mano de su motor NSE (Nmap Scripting Engine) que nos permite llevar a cabo tareas más concretas. Éste se basa en un conjunto de scripts que se organizan en distintas categorías dependiendo de la finalidad, como son:

  • auth
  • broadcast
  • brute
  • default
  • discovery
  • dos
  • exploit
  • external
  • fuzzer
  • intrusive
  • malware
  • safe
  • version
  • vuln

Hace un tiempo hablé sobre algunos aspectos de Nmap, tanto de su  motor de Scripting NSE como de sus uso sobre sistemas de control industrial. Por no repetir contenido os dejo los enlaces para que las podáis consultar.

  1. Nmap Scripting Engine
  2. Nmap sobre SCI sí, pero con cuidado…

Sin embargo, en el día de hoy voy a hablar de una serie de Scripts dirigidos específicamente a identificar y enumerar dispositivos y aplicaciones que pueden ser encontrados en entornos de control y automatización. Para ello se basan en protocolos y comandos de la propia aplicación para obtener información del objetivo. Sólo se trata de “recolectar”, no de “explotar”.

El primer conjunto de ellos podemos encontrarlo en el siguiente enlace de Github. Los mismos han sido desarrollados dentro de un proyecto de investigación llamado “Redpoint” de Digital Bond, consultora fundada en 1998 por Dale Peterson especializada en seguridad en entornos industriales.

redpoint_01

Para un mejor uso podemos descargarlos y copiarlos en la carpeta de “Scripts” que emplea nmap y que en la distribución Kali Linux está ubicados en:

/usr/share/nmap/scripts 

Luego es necesario actualizar la base de datos para que podamos verlos por ejemplo con la interfaz gráfica “Zenmap”.

root@kali:/usr/share/nmap/scripts# nmap –script-updatedb
Starting Nmap 7.25BETA2 ( https://nmap.org ) at XXXX-XX-XX 07:00 EST
NSE: Updating rule database.
NSE: Script Database updated successfully.
Nmap done: 0 IP addresses (0 hosts up) scanned in 1.37 seconds

Para diferenciarlos los he renombrado como “Redpoint_XXXXXXXX.nse” y así identificarlos más claramente.

Nmap cuenta de forma nativa con algunos scripts orientados a estos fines como Modbus, OMRON, incluso alguno creado por el propio “DigitalBond” como puede ser para el protocolo “BACnet”. Como ejemplo utilizaré esté último para ver los resultados arrojados y hacernos una idea. Para facilitar la tarea he hecho una primera búsqueda con ZoomEye, del que hablaba en mi último post llamado  “Buscando ICS en la red, ZoomEye”.

En el primero de los ejemplos podemos ver los siguiente:

Analizando la información podemos seguir buscando y ver las características de los equipos que responden a ese perfil, como puede ser:

Y mira por dónde, yendo un poco más allá localizar vulnerabilidades de ese fabricante:

Por otro lado, en el siguiente ejemplo podemos observar otro resultado.

Al igual que el caso anterior localizamos que se trata de un equipo del fabricante Kieback & Peter cuya web es la siguiente:

Y vemos que se trata de un equipo destinado al control de estaciones de ventilación, refrigeración de edificios pequeños y medianos:

El segundo de los repositorios también lo encontramos en GitHub en el siguiente enlace,  haciendo referencia sólo a productos del fabricante SIEMENS. Los mismos han sido desarrollados por la empresa DrainWare, apreciándose que el nombre de la cuenta de GitHub coincide con su fundador “jpalanco”.

El funcionamiento es similar a lo planteado en los casos anteriores, con lo que explicado uno, explicados todos. Sí que es cierto que dependiendo del script que ejecutemos deberemos especificar uno u otros puertos, pudiendo indicar  además ciertos argumentos asociados a HTTP o SMB y así perfeccionar la ejecución.

La idea en el día de hoy es ofrecer cómo ampliar y ajustar las funcionalidades de Nmap para su uso concreto sobre sistemas de control y automatización, mediante la inclusión de Scripts específicos ya desarrollados. Como decía, son especialmente útiles cara a realizar labores de auditoría o pentesting ya que permite, no sólo, la recolección y enumeración de información sino definir la forma y modo de hacerlo mediante la parametrización de la herramienta para que sea más o menos intrusiva.

No obstante, conviene recordar que el uso ha de hacerse teniendo en cuenta el equipo final sobre el que lancemos los scripts ya que podremos afectar a su funcionamiento. Esto es debido a los limitados recursos hardware que poseen con lo que es probable dejarlos “offline”, por lo que resulta necesario, o al menos aconsejable, hacerlo en un entorno controlado o de pruebas. Me refiero por supuesto a equipos de sistema de control y automatización. En cualquiera de los casos mucho, mucho cuidado.

¡Un saludo, nos vemos en la próxima!

 

Vectores de ataque sobre ICS

Siguiendo con el tema de las Amenazas sobre Sistemas de Control y Automatización Industrial que podéis encontrar en “Amenazas sobre ICS (Parte I)” y “Amenazas sobre ICS (Parte II)” en esta ocasión voy a hablar sobre los vectores de ataque. Éstos se sitúan dentro de las intencionadas ya que tiene un origen humano y además requieren de una mayor o menor planificación.

Comencemos:

  • Manipulación de las comunicaciones

Se basa principalmente en la captura de tráfico, inyección de paquetes, tramas, modificación de la información, etc. Existen varias formas entre ellas el ya tan clásico Man in the Middle (MITM). Algunos de los protocolos de comunicación industrial no disponen de controles de autenticación o integridad de mensajes por lo que es posible alterarlos y modificar sus contenidos. Dependiendo de qué modifiquemos podremos cambiar parámetros en los equipos finales, interferir en su funcionamiento y con ello sufrir consecuencias más o menos graves.

  • Destrucción física

La destrucción física puede incluir tanto de infraestructuras como los dispositivos que las componen. Lo que se busca básicamente es el sabotaje, bien de forma directa mediante la rotura o por un medio que permita la re programación y alterar su funcionamiento.

  • Phishing

Este es un viejo amigo bastante conocido. Por recordar, lo definiremos como la técnica de ingeniería social que busca hacerse con información relevante o sensible  suplantando la identidad de una persona u organización de confianza para el individuo a atacar. El interés que busca puede ser muy diverso, desde hacerse con información de algún proyecto o prototipo hasta credenciales de administradores o ingenieros de proceso pasando por detalles sobre equipamiento.

  • Malware

El malware en cualquiera de sus versiones (troyanos, gusanos, rootkits, etc.) pueden tener una gran variedad de propósitos desde la denegación de servicio, pivoting, escalada de privilegios, sabotaje, y un larguísimo etcétera. Obviamente los resultados podrán ser igualmente diversos. Por ejemplo, la inundación de la red con tráfico broadcast, captura de tráfico o actividad del equipo, escaneo de host y servicios, cambio de parámetros y configuraciones, etc. A su vez, esta información puede ser enviada a lo que conocemos como “Comand and Control, C&C” para su explotación y llevar a cabo distintas opciones. Estas comunicaciones muchas veces son cifradas bajo protocolos y servicios normalmente abiertos según entornos como TCP 80, 8080, 443, 21 o UDP 53, 123, entre otros posibles.

Los ejemplos más claros en entornos industriales los más conocidos son Stuxnet y Duqu, aunque también podemos tener otros como Havex, BlackEnergy 2, Conficker, NightDragon entre otros afines.

  • Robo

Mediante este vector, como es lógico, nos encontramos con la sustracción de información. La que más suele interesar son las relacionadas con la actividad de las instalaciones, o la propia empresa. Podemos hablar de ficheros de configuración que contengan datos sobre dispositivos, sistemas, parámetros, referencia sobre los propios equipos y actividad.

Pero no todo se refiere al ámbito lógico, también está lo físico. El hurto del propio equipamiento existe, por ejemplo elementos de recogida de datos, PCs de monitorización, cableado y otras tantas cosas que puedan ser atrayentes para los amigos de lo  ajeno.

  • Spam

No hablamos que desde un sistema dentro de una instalación o entorno industrial deba poderse acceder al correo electrónico de los empleados, que obviamente no debe permitirse. Sino del uso incorrecto del mismo.

Hablamos que un usuario emplee la cuenta de correo corporativa para darse de alta en páginas web que a posteriori le hagan llegar mensajes no solicitados conteniendo publicidad y referencia a sitios web con contenido malicioso. Si accede, podría instalársele algún tipo de malware y a partir de ahí, pues… También puede contemplarse el recabado de información como otras cuentas de correo para luego enviarles más correos de este tipo y proseguir con la campaña.

  • Escalado de privilegios

Aprovechando un “bug”, error, o adjetivo similar de una aplicación o sistema operativo, un atacante podría llevar a cabo tareas que inicialmente un usuario no está autorizado o bien heredar los permisos de otro.

Un ejemplo lo tenemos en siguiente enlace, aquí. Parece que Siemens siempre está en boca de todos, pero hay otros muchos como estos:

Enlace 1

Enlace 2

Enlace 3

  • Repetición

Este tipo de ataques consisten en el reenvío de tráfico que ha sido capturado con anterioridad o generado intencionadamente mediante software. Además, aprovechando la falta de métodos de seguridad implementados en distintos protocolos como Modbus, los paquetes pueden ser modificados para provocar comportamientos distintos a la operativa normal, con los daños que eso pueda acarrear. Este vector está relacionado, como es lógico, con el punto “Manipulación de las comunicaciones”.

  • Spoofing

El spoofing consiste en suplantar la identidad de los actores que pueden intervenir en una comunicación. Existen varias técnicas, dependiendo del nivel en el que hagamos la suplantación, por ejemplo ARP spoofing, direcciones MAC; IP spoofing, direcciones IP; DNS spoofing, dominios; email spoofing, direcciones de correo electrónico; en fin todo aquello que pueda ser sustituido por otro distinto al original. Si bien éstas provienen del mundo IT, en el OT también podernos encontrarnos con algunas de ellas. Como hemos mencionado en el punto anterior, algunos protocolos de comunicación industrial no poseen medidas de seguridad que eviten o detecten este tipo de ataques.

  • Inyección de código

La inyección de código consiste en aprovechar esos “bugs” de programación presentes en las aplicaciones o sistemas operativos con para poder llevar a cabo distintos tipo de acciones. Alguna de ellas puede ser la obtención de información, la denegación de servicio, la apertura de una sesión contra un equipo concreto, pero dependiendo del código inyectado y la vulnerabilidad los resultados pueden ser muchos otros.

Dentro de los entornos industriales, es común la existencia de elementos HMI en los cuales se instalan distintas aplicaciones para el control de los autómatas, u otros elementos. Éstas pueden presentar fallos de programación y por tanto permitir estos ataques. De ahí que resulte elemental instalar sólo el software estrictamente necesario.

  • Denegación de servicio

Si bien ya lo hemos nombrado anteriormente, una denegación de servicio consiste en impedir que un sistema pueda ofrecer un determinado servicio para el que está destinado. Como origen podemos hablar tanto de las debilidades que puedan afectar a aplicaciones que prestan dicho servicio y por otro aquellas relacionadas con las comunicaciones. Por poner un ejemplo, en el primero de ellos podríamos hablar de que esa aplicación pueda “bloquearse” bajo unas determinadas condiciones de procesamiento y por otro que un PLC no pueda procesar varias comunicaciones simultáneas ya que los recursos hardware de los que dispone no sean suficientes y por tanto pueda bloquearse. Por experiencia, esto último, puede resultar muy común cuando lanzamos ciertos escaneos de vulnerabilidades sobre dispositivos de campo.

  • Ingeniería Social

Básicamente lo podríamos resumir como la técnica de no sólo obtener información de un individuo sino además conseguir que haga aquello que de otra manera no haría. Según diría Kevin Mitnick Se basa en 4 principios básicos:

  1. Todos queremos ayudar.
  2. El primer movimiento es siempre de confianza hacia el otro.
  3. No nos gusta decir No.
  4. A todos nos gusta que nos alaben

Las  técnicas empleadas pueden comprender desde plantear un problema o una necesidad para que, dentro de ese ánimo colaborativo, revelar o dar pistas sobre nuestras infraestructuras o componentes en ellas instaladas.

De esta manera hemos enumerado los posibles vectores de ataques que pueden de los que pueden ser objeto los Sistemas de Control y Automatización Industrial, siempre desde un punto de vista intencionado. Para ello deberemos de implementar distintas medidas técnicas y cumplir con unas políticas de seguridad previamente establecidas y de obligado cumplimiento. Pero sobre todo, concienciar a las personas que tengan contacto con la operativa, mantenimiento y despliegue de estas instalaciones sobre las amenazas y el creciente aumento de éstas . No podremos estar seguros al 100% pero sí reducir los riesgos hasta unos niveles aceptables.

No quisiera finalizar sin hacer referencia a dos frases que bien pueden encajar con la idea que aquí se busca:

“Una cadena es tan fuerte como su eslabón más débil” 

“Sólo se salva del peligro quién vigila incluso cuando está seguro”

Un saludo a todos, nos vemos en la siguiente y no te olvides que puedes seguirnos también en @enredandoconred .