Information Gathering, NMAP NSE

La recolección de información es una de las fases iniciales de cualquier auditoría de seguridad para determinar no sólo el grado de exposición de nuestros equipo, redes y sistemas sino también sus vulnerabilidades.

Hace unos años hablaba del uso de la conocida herramienta NMAP y su funcionalidad NSE las cuales podéis encontrar en las entradas siguientes.

  1. NMAP sobre SCI sí, pero con cuidado.
  2. NMAP Scripting Enngine
  3. NMAP Scripting Engine para ICS

Tradicionalmente se ha aplicado sobre sistemas operativos de propósito general o adaptados a requisitos de Tiempo Real, sobre los cuales se ejecuta distinto tipo de software bien para interactuar sobre los procesos controlados por PLCs, pantallas de visualización, puestos de operador, entre otros.

Sin embargo, esta fase de recolección de información debe llevarse a cabo también sobre equipos de nivel 1 del Modelo Purdue, esto es PLCs, PAC, o controladores de distinta índole.

NMAP permite mediante NSE descubrir información relativa a ellos. A continuación, se citan algunos ejemplos sobre los productos de algunos fabricantes y protocolos:

OMRON

Ethernet/IP

En estos casos además podemos obtener la dirección IP de la red local siendo 192.168.XXX.XXX y 10.XXX.XXX.XXX

BACNET

S7

Estos son algunos ejemplos, pero podría haber más a partir de los scripts que podemos encontrar en la herramienta. Lo importante aquí es que no debemos fijar, solo, nuestra atención a los equipos basados en PC. Debemos tener presente los componentes y sistemas de control con lógica programable que, pudiendo estar expuestos en las redes de planta, presentan vulnerabilidades o fallos de diseño que puedan comprometer las operaciones.

Nos vemos en la próxima!

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.

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!

 

Nmap Scripting Engine

En mayor o menor medida,  todos hemos oído hablar de NMAP, esa herramienta creada por Fyodor  y con la que podremos, entre otras cosas, detectar equipos activos, sistemas operativos, servicios, versiones, etc. ¿Sus finalidades? Bueno, de lo más variopinta, desde la exploración de redes y sistemas,  auditorias de seguridad, procesos de pentesting, etc. Es una herramienta multiplataforma, de la que existe además una buena y abundante información. Su interfaz tanto por línea de comandos como una GUI denominada Zenmap la hacen asequible para todos los gustos de quien la utilice.

Pero  en este caso quiero habla de una de sus funcionalidades. La forma más común de emplear sería:

nmap dominioencuestion.com

Nmap tiene establecidas unas configuraciones por defecto, las cuales podremos ajustar con las distintas opciones que nos ofrece. Por ejemplo el rango de puertos a escanear, protocolos (TCP, UDP, etc.), técnicas para detección de cortafuegos con o sin estado, resolución DNS de los objetivos, cantidad de sondas enviadas, spoof de direcciones, etc.

Sin embargo una de las opciones más potentes de NMAP es lo que se denomina NSE (Nmap Scripting Engine). NSE es una funcionalidad que nos permite  por medio de scripts automatizar ciertas tareas según el script en cuestión. Estos scripts se dividen en varias categorías, como son:

auth: Scripts que gestionan procesos de autenticación.

broadcast: Orientado a la obtención de información por medioo de peticiones Broadcast.

brute: Scripts destinados a la auditoria a de contraseñas por medio de fuerza bruta.

default: Ejecución de scripts “by default”. Se ejecuta por medio de la oción –sC.

discovery: Scripts para el descubrimiento de equipos.

dos: Scripts relacionados con ataques tipo DoS.

exploit: Scripts que explotan vulnerabilidades.

external: Scripts que utilizan servicios externos o de terceros.

fuzzer: Scripts orientados a tareas de fuzzing, por ejemplo envío de datos malformados o inesperados.

intrusive: Scripts que podrían colapsar algunos sistemas o generar una gran cantidad de tráfico.

malware: Scripts relacionados con la detección de malware diverso.

safe: Scripts que pueden considerarse como “seguros” a diferencia por ejemplo de los catalogados como “intrusive”

version: Scripts para consultas avanzadas de distintos tiposd e versiones

vuln: Scripts que notifican si existe, o no, vulnerabilidades conocidas.

Una de las primeras tareas que deberemos hacer es actualizar nuestra base de datos.

nmap –script-updatedb 

Cada Script está catalogado dentro de cada una de las categorías según sea su utilidad. SI quisiéramos lanzar todos los scripts de una categoría concreta, deberíamos  utilizar:

nmap –sV –script auth <OBJETIVO> 

O sin queremnos más de una categoría:

nmap -sV –script=»version,discovery» <OBJETIVO>

Según sea nuestra distribución podremos encontrarlos en,

Kali:

/usr/share/nmap/scripts

Bugtraq:

/usr/local/share/nmap/scripts

Estos scripts no son “cerrados”, soportan la inclusión de argumentos, o variables que serán utilizadas para su ejecución. Por ejemplo quisiéramos realizar un ataque por fuerza bruta empleando HTTP y proporcionando un listado de usuarios y contraseñas concretos deberíamos utilizar:

nmap -p80 –script http-brute –script-args userdb=/var/usernames.

txt,passdb=/var/passwords.txt <OBJETIVO>

 Dado que son tareas automatizadas tenemos que tener en cuenta que su actividad podría ser detectada por IDS/IPS o firewalls que loguen el tráfico generado.

Como hemos dicho, Nmap cuenta con una interfaz gráfica denominada Zenmap, en la que también encontraremos estas funcionalidades.

 

Deberemos crear un “Profile”, por lo que pincharemos sobre él y una vez allí sobre “New Profile or Command”.

Allí en “Scripting” encontraremos todos los scripts disponibles.

 

Además podremos definir otros valores y sus respectivos valores y variantes para luego presionando “Scan” lanzarlo.

Como digo, esto es sólo el comienzo de Namp Scripting Engine, como todas las cosas luego nos toca a nosotros meter horas y horas para sacarle todo el provecho.

Un saludo.