
Scripts NSE de Nmap para el descubrimiento y enumeración de ICS/SCADA—BACnet, EtherNet/IP, CoDeSys, Fox, Modicon, Omron, S7—mediante consultas de protocolo para evaluaciones de seguridad.
#Redpoint
###Herramientas de enumeración de ICS de Digital Bond
Redpoint es un proyecto de investigación de Digital Bond para enumerar aplicaciones y dispositivos ICS.
Usamos nuestras herramientas Redpoint en evaluaciones para descubrir dispositivos ICS y obtener información que sería útil en pruebas secundarias. Una parte de esas herramientas estará disponible como scripts Nmap NSE para el público en este repositorio.
Las herramientas Redpoint utilizan comandos legítimos de protocolo o aplicación para descubrir y enumerar dispositivos y aplicaciones. No hay ningún esfuerzo por explotar o bloquear nada. Sin embargo, muchos dispositivos y aplicaciones ICS son frágiles y pueden bloquearse o responder de forma inesperada ante cualquier tráfico inesperado, así que utilícelas con cuidado.
Cada script está documentado a continuación y disponible en un archivo .nse en este repositorio.
BACnet-discover-enumerate.nse - Identifica y enumera dispositivos BACnet
codesys-v2-discover.nse - Identifica y enumera controladores CoDeSys V2
enip-enumerate.nse - Identifica y enumera dispositivos EtherNet/IP de Rockwell Automation y otros fabricantes
fox-info.nse - Identifica y enumera dispositivos Niagara Fox
modicon-info.nse - Identifica y enumera PLC Modicon de Schneider Electric
omron-info.nse - Identifica y enumera PLC Omron
pcworx-info.nse - Identifica y enumera PLC con protocolo PC Worx habilitado
proconos-info.nse - Identifica y enumera PLC con ProConOS habilitado
s7-enumerate.nse - Identifica y enumera PLC Siemens SIMATIC S7
==
###BACnet-discover-enumerate.nse
![BACnet-discover-enumerate Ejemplo de salida] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/03/BACnet-nse.png)
####Autores
Stephen Hilt y Michael Toecker
Digital Bond, Inc
####Propósito y descripción
El propósito de BACnet-discover-enumerate.nse es identificar primero si un dispositivo conectado por IP está ejecutando BACnet. Esto funciona consultando al dispositivo con un mensaje BACnet pregenerado. Las versiones más nuevas del protocolo BACnet responderán con una confirmación; las versiones más antiguas devolverán un mensaje de error BACnet. La presencia de la confirmación o del error es suficiente para demostrar que hay un dispositivo compatible con BACnet en la dirección IP objetivo.
En segundo lugar, si se recibe una confirmación, este script también intentará enumerar varias propiedades BACnet en un dispositivo BACnet que responda. Nuevamente, el dispositivo se consulta con un mensaje BACnet pregenerado. La enumeración exitosa utiliza solicitudes especialmente diseñadas y no tendrá éxito si el dispositivo BACnet no admite la propiedad.
Las propiedades BACnet consultadas por este script son:
Vendor ID - Un número que corresponde a un proveedor BACnet registrado. El script también devuelve el nombre del proveedor asociado.
Vendor Number - Una cadena que representa el nombre del proveedor configurado en el dispositivo. Puede diferir del Vendor ID, ya que el Vendor ID es el número registrado en ASHARE.
Object Identifier - Un número que identifica de forma única al dispositivo. Si se conoce el Object Identifier, es posible enviar comandos con software cliente BACnet, incluidos aquellos que cambian valores, programas, horarios y otra información operativa en dispositivos BACnet. Esta es una propiedad obligatoria para todos los dispositivos BACnet.
Firmware Revision - El número de revisión del firmware en el dispositivo BACnet.
Application Software Revision - El número de revisión del software utilizado para la comunicación BACnet.
Object Name - Una cadena definida por el usuario que asigna un nombre al dispositivo BACnet, normalmente introducida por los técnicos durante la puesta en servicio. Esta es una propiedad obligatoria para todos los dispositivos BACnet.
Model Name - El modelo del dispositivo BACnet.
Description - Una cadena definida por el usuario para describir el dispositivo, normalmente introducida por los técnicos durante la puesta en servicio.
Location - Una cadena definida por el usuario para registrar la ubicación física del dispositivo, normalmente introducida por los técnicos durante la puesta en servicio.
Broadcast Distribution Table (BDT) - Una lista de los dispositivos de gestión de difusión BACnet (BBMD) en la red BACnet. Esto identificará todas las subredes que forman parte de la red BACnet.
Foreign Device Table (FDT) - Una lista de dispositivos externos registrados en el dispositivo BACnet. Un dispositivo externo es cualquier dispositivo que no está en una subred que forma parte de la red BACnet ni en la BDT. Los dispositivos externos suelen ubicarse en redes externas y podrían ser la dirección IP de un atacante.
Las BDT y FDT pueden ser listas grandes y puede que no sean deseables en un escaneo Nmap grande. El script básico no descargará la BDT y la FDT. Ejecute el comando con --script-args full=yes para obtener la BDT y la FDT; consulte la sección de Uso.
![BACnet-discover-enumerate Ejemplo de salida con BDT y FDT] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/08/screenshot_bacnet-1.png)
Este script utiliza una funcionalidad añadida en 2004 a la especificación BACnet para recuperar el Object Identifier de un dispositivo con una sola solicitud, y sin unirse a la red BACnet como dispositivo externo. (Consulte el Addendum a de ANSI/ASHRAE a la Norma ANSI/ASHRAE 135-2001 para más detalles)
####Historia y antecedentes
Del artículo de Wikipedia sobre BACnet http://en.wikipedia.org/wiki/BACnet:
BACnet es un protocolo de comunicaciones para redes de automatización y control de edificios. Es un protocolo estándar ASHRAE, ANSI e ISO[1]. El puerto predeterminado para el tráfico BACnet es UDP/47808.
BACnet se utiliza en sistemas de automatización y control de edificios para aplicaciones como control de calefacción, ventilación y aire acondicionado, control de iluminación, control de accesos y sistemas de detección de incendios y sus equipos asociados. El protocolo BACnet proporciona mecanismos para que los dispositivos de automatización de edificios computerizados intercambien información, independientemente del servicio particular del edificio que realicen.
####Instalación
Este script requiere Nmap para ejecutarse. Si no tiene Nmap, descargue e instale Nmap según las instrucciones de Nmap. http://nmap.org/download.html
#####Windows
Después de descargar bacnet-discover.nse, deberá moverlo al directorio de scripts NSE; esto debe hacerse como administrador. Vaya a Inicio -> Programas -> Accesorios y haga clic derecho en 'Símbolo del sistema'. Seleccione 'Ejecutar como administrador'.
move BACnet-discover-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Después de descargar BACnet-discover-enumerate.nse, deberá moverlo al directorio de scripts NSE; esto debe hacerse como sudo/root.
sudo mv BACnet-discover-enumerate.nse /usr/share/nmap/scripts
####Uso
En una ventana de terminal / Símbolo del sistema, use uno de los siguientes comandos, donde host es el objetivo que desea escanear en busca de BACNet. Use --script-args full=yes si desea que la salida incluya la BDT y la FDT.
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate <host>
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>
Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate <host>
Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>
Para acelerar los resultados al no realizar búsquedas DNS durante el escaneo, use la opción -n; también deshabilite los pings para determinar si el dispositivo está activo usando la opción -Pn para obtener resultados completos.
nmap -sU -Pn -p 47808 -n --script BACnet-discover-enumerate <host>
####Notas
La versión oficial de este script se mantiene en: https://github.com/digitalbond/Redpoint/blob/master/BACnet-discover-enumerate.nse
Este script usa el puerto de origen y destino estándar de BACnet: UDP 47808.
Los dispositivos BACnet más nuevos (posteriores al 25 de febrero de 2004) están obligados por la especificación a responder a solicitudes específicas que usan un object-identifier 'comodín' con su propio número de instancia válido (consulte el Addendum a de ANSI/ASHRAE a la Norma ANSI/ASHRAE 135-2001). Las versiones más antiguas de dispositivos BACnet pueden no responder a este comodín y, en su lugar, responderán con un paquete de error BACnet.
Este script no intenta unirse a una red BACnet como dispositivo externo; simplemente envía solicitudes BACnet directamente a un dispositivo con dirección IP.
== ###codesys-v2-discover.nse ![codesys-v2-discover Ejemplo de salida] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2016/03/codesys-v2-discover-win.png)
####Autores
Stephen Hilt, Reid Wightman
####Propósito y descripción
El script codesys-v2-discover.nse identifica PLC que ejecutan el runtime de lógica ladder versión 2 fabricado por 3S-Software GmbH. Estos controladores hablan un protocolo binario propietario para instalar nueva lógica ladder, así como para depurar la lógica ladder en ejecución. El protocolo puede requerir autenticación. En la práctica, pocos dispositivos admiten este comportamiento. Este script no prueba la autenticación.
Este script envía una simple solicitud de identificación al dispositivo. El mensaje de respuesta puede incluir el sistema operativo y la versión puntual específica de CoDeSys que se ejecuta en el PLC.
####Historia y antecedentes
Digital Bond publicó detalles de que el sistema runtime de CoDeSys es inseguro por diseño en abril de 2012. El protocolo usualmente utiliza TCP/1200 o TCP/2455 como puerto de control. El protocolo de control contiene funciones para subir y descargar archivos desde los controladores. El protocolo también puede proporcionar un shell de comandos, que ofrece funcionalidad adicional. Las características del shell típicamente incluyen la capacidad de iniciar y detener la lógica ladder en ejecución, así como recuperar información de depuración del controlador.
El aviso inicial aplicaba solo a la versión 2 del runtime. Digital Bond también publicó un script Nmap de prueba de concepto, escrito originalmente por HD Moore como parte de su proyecto de escaneo de Internet.
También se produjo un script Nessus para esta versión del protocolo; sin embargo, el script Nessus contiene un error y no comprueba correctamente los controladores con CPU big-endian.
####Instalación
Este script requiere Nmap para ejecutarse. Si no tiene Nmap, descargue e instale Nmap según las instrucciones de Nmap. http://nmap.org/download.html
#####Windows
Después de descargar enip-enumerate.nse, deberá moverlo al directorio de scripts NSE; esto debe hacerse como administrador. Vaya a Inicio -> Programas -> Accesorios y haga clic derecho en 'Símbolo del sistema'. Seleccione 'Ejecutar como administrador'.
move codesys-v2-discover.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Después de descargar enip-enumerate.nse, deberá moverlo al directorio de scripts NSE; esto debe hacerse como sudo/root.
sudo mv codesys-v2-discover.nse /usr/share/nmap/scripts
####Uso
En una ventana de terminal / Símbolo del sistema, use uno de los siguientes comandos, donde es el objetivo que desea escanear en busca de EtherNet/IP.
Windows: nmap -p 1200,2455 --script codesys-v2-discover <host>
Linux: sudo nmap -p 1200,2455 --script codesys-v2-discover <host>
####Notas
La versión oficial de este script se mantiene en:https://github.com/digitalbond/Redpoint/codesys-v2-discover.nse
Este script intentará enviar las solicitudes CoDeSys en cualquier puerto abierto. Si bien la mayoría de los controladores utilizan los puertos estándar 1200 o 2455, algunos controladores usan puertos alternativos como 1201, 1217 y otros puertos.
== ###enip-enumerate.nse ![enip-enumerate Ejemplo de salida] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/enip.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Propósito y descripción
El propósito de enip-enumerate.nse es identificar y enumerar dispositivos EtherNet/IP. Rockwell Automation / Allen Bradley desarrolló el protocolo y es el principal fabricante de estos dispositivos, p. ej., ControlLogix y MicroLogix, pero es un estándar abierto y varios fabricantes ofrecen una tarjeta o solución de interfaz EtherNet/IP.
Un dispositivo EtherNet/IP se identifica positivamente consultando TCP/44818 con un mensaje List Identities (0x63). Los mensajes de respuesta determinarán si es un dispositivo EtherNet/IP y analizarán la información para enumerar el dispositivo.
La solicitud EtherNet/IP List Identities extrae información básica sobre el dispositivo conocida como la "clave electrónica" del dispositivo. La información incluye Vendor, Product Name, Serial Number, Device Type, Product Code y Revision Number. Además, el script analiza la dirección IP configurada del dispositivo desde el campo Socket Address dentro de la trama EtherNet/IP del paquete.
Las propiedades EtherNet/IP analizadas por este script son:
Vendor - Un entero de dos bytes que se usa para buscar el nombre del proveedor.
Product Name - Una cadena que representa una descripción breve del producto/familia de productos; la longitud máxima es de 32 caracteres.
Serial Number - Un número hexadecimal de seis bytes almacenado en little endian.
Device Type - Un entero de dos bytes que se usa para buscar el tipo de dispositivo. Este campo a menudo no se usa y se establece en 0.
Product Code - El Product Code asignado por el proveedor identifica un producto concreto dentro de un tipo de dispositivo. El script no tiene acceso a las tablas de códigos de producto del proveedor, por lo que se muestra el número.
Revision - Dos enteros de un byte que indican el número de revisión principal y secundario del dispositivo.
Device IP - Cuatro enteros de un byte que representan la dirección IP configurada del dispositivo. Esta dirección a menudo difiere de la dirección IP escaneada por el script.
####Historia y antecedentes
Del artículo de Wikipedia sobre EtherNet/IP http://en.wikipedia.org/wiki/EtherNet/IP
EtherNet/IP fue desarrollado a finales de la década de 1990 por Rockwell Automation como parte de las soluciones de red Ethernet industrial de Rockwell. Rockwell le dio a EtherNet/IP su nombre y lo entregó a ODVA, que ahora gestiona el protocolo y asegura la interoperabilidad de sistemas de múltiples proveedores al exigir el cumplimiento de estándares establecidos siempre que se desarrollen nuevos productos que utilicen el protocolo en la actualidad.
EtherNet/IP se utiliza más comúnmente en sistemas de control de automatización industrial, como plantas de tratamiento de agua, instalaciones de fabricación y servicios públicos. Varios fabricantes de sistemas de control han desarrollado controladores de automatización programables y E/S capaces de comunicarse mediante EtherNet/IP.
####Instalación
Este script requiere Nmap para ejecutarse. Si no tiene Nmap, descargue e instale Nmap según las instrucciones de Nmap. http://nmap.org/download.html
#####Windows
Después de descargar enip-enumerate.nse, deberá moverlo al directorio de scripts NSE; esto debe hacerse como administrador. Vaya a Inicio -> Programas -> Accesorios y haga clic derecho en 'Símbolo del sistema'. Seleccione 'Ejecutar como administrador'.
move enip-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Después de descargar enip-enumerate.nse, deberá moverlo al directorio de scripts NSE; esto debe hacerse como sudo/root.
sudo mv enip-enumerate.nse /usr/share/nmap/scripts
####Uso
En una ventana de terminal / Símbolo del sistema, use uno de los siguientes comandos, donde es el objetivo que desea escanear en busca de EtherNet/IP.
Windows: nmap -p 44818 --script enip-enumerate <host>
Linux: sudo nmap -p 44818 --script enip-enumerate <host>
####Notas
La versión oficial de este script se mantiene en:https://github.com/digitalbond/Redpoint/enip-enumerate.nse
Este script usa el puerto de destino estándar de Ethernet/IP: TCP 44818.
==
###fox-info.nse ![fox-info Ejemplo de salida] (http://www.digitalbond.com/wp-content/uploads/2014/10/fox-example.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Propósito y descripción
El propósito de fox-info.nse es identificar primero dispositivos que ejecutan el protocolo Niagara Fox. Este script se basa en el trabajo y los ejemplos proporcionados por Billy Rios y Terry McCorkle.
Tras una conexión exitosa a un dispositivo Niagara Fox, el script analizará la respuesta enviada por el dispositivo y mostrará la información enumerada.
Las propiedades Niagara Fox consultadas por este script son:
Fox Version - La versión del protocolo Fox que se está ejecutando actualmente en el dispositivo.
Host Name - El nombre de host del dispositivo. Normalmente es el nombre de estación de trabajo del dispositivo remoto.
Host Address - La dirección IP configurada en el dispositivo. Puede ser la dirección IP escaneada o una dirección privada si el dispositivo está detrás de algo que realiza traducciones de direcciones de red (NAT).
Application Name - El nombre de la aplicación que se ejecuta en el dispositivo remoto. Normalmente es "Workbench" o "Station".
Application Version - El número de versión del nombre de aplicación enumerado anteriormente.
VM Name - El nombre de la máquina virtual Java que ejecuta la aplicación.
VM Version - El número de versión de la VM que se ejecuta en el dispositivo remoto. Lo más probable es que sea el número de versión de Java HotSpot.
OS Name - Nombre del sistema operativo que ejecuta el protocolo Fox en el dispositivo, p. ej., QNX o Windows XP.
Time Zone - La zona horaria local configurada en el dispositivo.
Host ID - un ID único que se utiliza para identificar el dispositivo.
VM UUID - El identificador único universal de la VM de Java.
Brand ID - Toda estación y herramienta con licencia tiene un Brand Identifier. Este campo contiene un descriptor de texto que el OEM elige como identificador para su línea de productos. Cada estación o herramienta solo puede tener una entrada BrandID.
####Historia y antecedentes
Fox es un protocolo TCP/IP propietario utilizado para la comunicación de estación a estación y de workbench a estación en Niagara Framework de las soluciones de automatización de edificios de Tridium. Tridium es una filial de propiedad total de Honeywell.
####Instalación
Este script requiere Nmap para ejecutarse. Si no tiene Nmap, descargue e instale Nmap; consulte: http://nmap.org/download.html
#####Windows
Después de descargar fox-info.nse, muévalo al directorio de scripts NSE. Este movimiento debe hacerse como administrador. Vaya a Inicio -> Programas -> Accesorios y haga clic derecho en 'Símbolo del sistema'. Seleccione 'Ejecutar como administrador'.
move fox-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Después de descargar fox-info.nse, muévalo al directorio de scripts NSE. Esto debe hacerse como sudo/root.
sudo mv fox-info.nse /usr/share/nmap/scripts
####Uso
En una ventana de terminal / Símbolo del sistema, use uno de los siguientes comandos, donde host es el objetivo que desea escanear en busca de dispositivos que admitan el protocolo Niagara Fox.
Windows: nmap -p 1911 --script fox-info <host>
Linux: sudo nmap -p 1911 --script fox-info <host>
####Notas
La versión oficial de este script se mantiene en: https://github.com/digitalbond/Redpoint/blob/master/fox-info.nse
Este script usa el puerto de origen y destino estándar de Niagara Fox: TCP 1911.
==
###modicon-info.nse ![modicon-info salida de ejemplo] (http://www.digitalbond.com/wp-content/uploads/2014/09/Modicon.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Propósito y descripción
El propósito de modicon-info.nse es identificar y enumerar primero los PLC Modicon fabricados por Schneider Electric.
El script primero identifica si un dispositivo conectado por IP está enviando una solicitud de código de función 43 de Modbus. La respuesta es suficiente para identificar dispositivos Modbus incluso si no admiten el código de función 43. Si el nombre del proveedor en la respuesta contiene la cadena Schneider, el script enumerará el dispositivo utilizando el código de función 90 de Modbus propietario de Schneider Electric.
Las propiedades del código de función 43 y del código de función 90 de Modbus que se incluyen en la salida del script son:
Vendor Name - Este script ignorará todos los dispositivos que no contengan "Schneider".2) Módulo de red: el módulo de comunicaciones Ethernet en el PLC Modicon.
Módulo CPU: el módulo CPU en el PLC Modicon.
Firmware: la versión del firmware en el módulo CPU del PLC Modicon.
Tarjeta de memoria: el número de modelo de la tarjeta de memoria en el módulo CPU.
Información del proyecto: información diversa sobre el proyecto, como el nombre del proyecto, la versión de Unity Pro utilizada para configurarlo, así como el nombre de la estación de trabajo que programó el PLC. Algunos dispositivos proporcionarán la ubicación del archivo .stu en la estación de trabajo que configuró el dispositivo.
Revisión del proyecto: la revisión del proyecto que se ejecuta en el PLC; el número de revisión del proyecto se incrementa en 1 cada vez que el proyecto se compila y se transfiere al PLC.
Fecha de última modificación del proyecto: una marca de tiempo que se almacena para indicar la última vez que un técnico modificó el PLC.
####Historia y antecedentes
Del artículo de Wikipedia sobre Controladores Lógicos Programables http://en.wikipedia.org/wiki/Programmable_logic_controller#History:
En 1968, GM Hydra-Matic (la división de transmisiones automáticas de General Motors) emitió una solicitud de propuestas para un reemplazo electrónico de los sistemas de relés cableados, basada en un documento técnico escrito por el ingeniero Edward R. Clark. La propuesta ganadora provino de Bedford Associates, de Bedford, Massachusetts. El primer PLC, designado como 084 por ser el octogésimo cuarto proyecto de Bedford Associates, fue el resultado.[2] Bedford Associates fundó una nueva empresa dedicada a desarrollar, fabricar, vender y dar servicio a este nuevo producto: Modicon, que significaba MOdular DIgital CONtroller. Una de las personas que trabajó en ese proyecto fue Dick Morley, considerado el "padre" del PLC.[3] La marca Modicon se vendió en 1977 a Gould Electronics, y posteriormente fue adquirida por la empresa alemana AEG y luego por la francesa Schneider Electric, su actual propietaria.
####Instalación
Este script requiere Nmap para ejecutarse. Si no tienes Nmap, descárgalo e instálalo.
http://nmap.org/download.html
#####Windows
Después de descargar modicon-info.nse, muévelo al directorio de scripts de NSE. Esto requerirá privilegios de administrador. Ve a Inicio -> Programas -> Accesorios, haz clic derecho en 'Símbolo del sistema' y selecciona 'Ejecutar como administrador'.
move modicon-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Después de descargar modicon-info.nse, muévelo al directorio de scripts de NSE. Esto deberá hacerse como sudo/root.
sudo mv modicon-info.nse /usr/share/nmap/scripts
####Uso
Dentro de una ventana de terminal o del símbolo del sistema, usa uno de los siguientes comandos, donde es el objetivo que deseas escanear en busca de PLC Modicon.
Windows: nmap -p 502 --script modicon-info.nse -sV <host>
Linux: sudo nmap -p 502 --script modicon-info.nse -sV <host>
####Notas
La versión oficial de este script se mantiene en: https://github.com/digitalbond/Redpoint/modicon-info.nse
Este script utiliza el puerto de destino estándar de Modbus, TCP 502.
== ###omrontcp-info.nse & omronudp-info.nse ![omrontcp/udp-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/Region.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Propósito y descripción
El propósito de omrontcp-info y omronudp-info es identificar y enumerar dispositivos OMRON FINS. Omron desarrolló el protocolo y es el principal fabricante de los dispositivos que lo soportan.
Un dispositivo OMRON FINS se identifica de forma positiva consultando TCP/9600 o UDP 9600 con un Read Controller Satus (0x0501). Los mensajes de respuesta determinarán si se trata de un dispositivo OMRON FINS y analizarán la información para enumerar el dispositivo.
El Read Controller Status de OMRON FINS extrae información básica sobre el dispositivo, como el modelo del controlador, la versión del controlador, el tamaño del área de programa, el tamaño de E/S (IOM), el número de palabras DM, el tamaño de temporizadores/contadores, el tamaño de DM de expansión, el número de pasos/transiciones, el tipo de tarjeta de memoria y el tamaño de la tarjeta de memoria.
Las propiedades de OMRON FINS que analiza este script son:
Modelo del controlador: una cadena de no más de 20 bytes que representa el modelo del controlador.
Versión del controlador: una cadena para representar un número de versión que no supera los 20 bytes.
Para uso del sistema: reservado para uso del sistema. Se recopila información solo para ver si hay algo interesante en este campo.
Tamaño del área de programa: el tamaño del área de configuración del PC (PC Setup) y del área de programa.
Tamaño de E/S (IOM): el tamaño del área en la que se pueden utilizar comandos de bit/palabra.
N.º de palabras DM: total de palabras en el área DM.
Tamaño de temporizadores/contadores: número máximo de temporizadores/contadores disponibles.
Tamaño de DM de expansión: bancos en el área de DM de expansión.
N.º de pasos/transiciones: número máximo de pasos/transiciones disponibles.
Tipo de tarjeta de memoria: 00: sin tarjeta de memoria 01: SPRAM 02: EPROM 03: EEPROM
Tamaño de la tarjeta de memoria: tamaño de la tarjeta de memoria en Kb.
####Historia y antecedentes
FINS o Factory Intelligent Network Services es un protocolo que utiliza comandos para comunicarse con los PLC. El protocolo admite una versión sobre UDP y otra sobre TCP. Existen algunas diferencias entre los dos protocolos, por eso se han escrito dos scripts para soportar el escaneo de servicios tanto TCP como UDP.
OMRON FINS se utiliza en sistemas de control de automatización industrial, como plantas de tratamiento de agua, instalaciones de fabricación y servicios públicos.
####Instalación
Este script requiere Nmap para ejecutarse. Si no tienes Nmap, descárgalo e instálalo siguiendo las instrucciones de Nmap. http://nmap.org/download.html
#####Windows
Después de descargar enip-enumerate.nse, deberás moverlo al directorio de scripts NSE; esto debe hacerse como administrador. Ve a Inicio -> Programas -> Accesorios, haz clic derecho en 'Símbolo del sistema'. Selecciona 'Ejecutar como administrador'.
move omron*.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Después de descargar enip-enumerate.nse, deberás moverlo al directorio de scripts NSE; esto debe hacerse como sudo/root.
sudo mv omron*.nse /usr/share/nmap/scripts
####Uso
Dentro de una ventana de terminal o del símbolo del sistema, usa uno de los siguientes comandos, donde es el objetivo que deseas escanear en busca de OMRON FINS.
Windows: nmap -p 9600 --script omrontcp-info <host>
Windows: nmap -sU -p 9600 --script omronudp-info <host>
Linux: nmap -p 9600 --script omrontcp-info <host>
Linux: sudo nmap -sU -p 9600 --script omronudp-info <host>
####Notas
La versión oficial TCP de este script se mantiene en: https://github.com/digitalbond/Redpoint/omrontcp-info.nse
La versión oficial UDP de este script se mantiene en: https://github.com/digitalbond/Redpoint/omronudp-info.nse
Estos scripts utilizan el puerto de destino estándar FINS y TCP/FINS de UDP 9600 y TCP 9600.
== ###pcworx-info.nse ![pcworx-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Propósito y descripción
El propósito de pcworx-info.nse es identificar y enumerar PLC Phoenix Contact ILC mediante el protocolo PC Worx. Un PLC se identifica de forma positiva consultando TCP/1962 con solicitudes pregeneradas. Los mensajes de respuesta determinarán si se trata de un PLC compatible con PC Worx y conducirán a una enumeración adicional.
En total, este script enviará tres paquetes al PLC para establecer las comunicaciones y luego solicitar la información del PLC.
Las propiedades de PC Worx que analiza este script son:
Tipo de PLC: una cadena que representa el tipo de PLC ILC.
Número de modelo: una cadena de números ASCII que representa el modelo del PLC, como un 2737193.
Versión del firmware: una cadena que representa la versión del firmware que se ejecuta en el PLC.
Fecha del firmware: una cadena que representa la fecha de compilación del firmware que se ejecuta en el PLC.
Hora del firmware: una cadena que representa la hora de compilación del firmware que se ejecuta en el PLC.
####Historia y antecedentes
De la página de producto de Phoenix Contact Enlace
PC Worx es el software de ingeniería coherente para todos los controladores de Phoenix Contact. Combina la programación (según IEC 61131), la configuración de bus de campo y el diagnóstico del sistema en una única solución de software. Esto proporciona una interacción óptima entre hardware y software. PC Worx se puede utilizar para implementar conceptos de automatización complejos. Dependiendo del número de E/S a soportar, tienes dos versiones para elegir: PC WORX BASIC y PC WORX PRO.
####Instalación
Este script requiere Nmap para ejecutarse. Si no tienes Nmap, descárgalo e instálalo siguiendo las instrucciones de Nmap. http://nmap.org/download.html
#####Windows
Después de descargar pcworx-info.nse, deberás moverlo al directorio de scripts NSE; esto debe hacerse como administrador. Ve a Inicio -> Programas -> Accesorios, haz clic derecho en 'Símbolo del sistema'. Selecciona 'Ejecutar como administrador'.
move pcworx-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Después de descargar pcworx-info.nse, deberás moverlo al directorio de scripts NSE; esto debe hacerse como sudo/root.
sudo mv pcworx-info.nse /usr/share/nmap/scripts
####Uso
Dentro de una ventana de terminal o del símbolo del sistema, usa uno de los siguientes comandos, donde es el objetivo que deseas escanear en busca de PLC Phoenix Contact.
Windows: nmap -p 1962 --script pcworx-info -sV <host>
Linux: nmap -p 1962 --script pcworx-info -sV <host>
####Notas
La versión oficial de este script se mantiene en: https://github.com/digitalbond/Redpoint/pcworx-info.nse
Este script utiliza el puerto de destino estándar de PC Worx, TCP 1962.
==
###proconos-info.nse ![proconos-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)
####Autor
Stephen Hilt
Digital Bond, Inc
####Propósito y descripción
El propósito de proconos-info.nse es identificar y enumerar PLC mediante el protocolo ProConOS/MultiProg. Un PLC se identifica de forma positiva consultando TCP/20547 con solicitudes pregeneradas. Los mensajes de respuesta determinarán si se trata de un PLC compatible con ProConOS/MultiProg y conducirán a una enumeración adicional.
Solo se necesita una solicitud para consultar esta información al PLC.
Las propiedades de ProConOS/MultiProg que analiza este script son:
Runtime de Ladder Logic: una cadena que muestra el nombre del runtime, la versión y la fecha de compilación.
Tipo de PLC: una cadena que representa el tipo de PLC y la versión del firmware.
Nombre del proyecto: una cadena que representa el nombre del proyecto que se está ejecutando actualmente en el PLC.
Proyecto de arranque: una cadena que representa el nombre del proyecto configurado para arrancar en el PLC.
Código fuente del proyecto: una cadena que indica si el código fuente del proyecto está disponible o no.
####Instalación
Este script requiere Nmap para ejecutarse. Si no tienes Nmap, descárgalo e instálalo siguiendo las instrucciones de Nmap. http://nmap.org/download.html
#####Windows
Después de descargar proconos-info.nse, deberás moverlo al directorio de scripts NSE; esto debe hacerse como administrador. Ve a Inicio -> Programas -> Accesorios, haz clic derecho en 'Símbolo del sistema'. Selecciona 'Ejecutar como administrador'.
move proconos-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Después de descargar proconos-info.nse, deberás moverlo al directorio de scripts NSE; esto debe hacerse como sudo/root.
sudo mv proconos-info.nse /usr/share/nmap/scripts
####Uso
Dentro de una ventana de terminal o del símbolo del sistema, usa uno de los siguientes comandos, donde es el objetivo que deseas escanear en busca de PLC ProConOS/MultiProg.
Windows: nmap -p 20547 --script proconos-info -sV <host>
Linux: nmap -p 20547 --script proconos-info -sV <host>
####Notas
La versión oficial de este script se mantiene en: https://github.com/digitalbond/Redpoint/proconos-info.nse
Este script utiliza el puerto de destino estándar de ProConOS/MultiProg, TCP 20547.
==
###s7-enumerate.nse ![s7-enumerate Sample Output] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/S7screenshot.png)
####Autor
Stephen Hilt
Digital Bond, Inc
Nota: este script está pensado para proporcionar la misma funcionalidad que PLCScan dentro de Nmap. Parte de la información que recopila PLCScan no se transfirió a este NSE; esta información se puede extraer de los paquetes que se reciben.
Gracias a Positive Research y a Dmitry Efanov por crear PLCScan.
####Propósito y descripción
El propósito de s7-enumerate.nse es identificar y enumerar PLC Siemens SIMATIC S7. Un S7 se identifica de forma positiva consultando TCP/102 con mensajes COTP y S7COMM pregenerados. Los mensajes de respuesta determinarán si se trata de un PLC S7 y conducirán a una enumeración adicional. Nota: TCP/102 es utilizado por múltiples aplicaciones, una de ellas es S7COMM.
Se envían dos solicitudes S7 después de que se haya establecido una comunicación S7 exitosa.
Estas solicitudes extraen información básica de hardware, firmware y algo de información descriptiva, como la identificación de planta y el nombre del sistema. Esta información se devuelve a Nmap y se presenta en los formatos de salida estándar compatibles con Nmap.
Las propiedades S7 que analiza este script son:
Módulo: una cadena que representa la identificación del módulo que se está consultando. Esto identifica el modelo S7, p. ej., 315, 412, 1200, ...
Hardware básico: una cadena que representa la identificación del hardware básico que se está consultando.
Versión: una cadena que representa la identificación de la versión del hardware básico.
Nombre del sistema: una cadena que representa el nombre de sistema asignado al dispositivo. Esto puede proporcionar información útil si el propietario del activo había implementado una convención de nomenclatura estructurada.
Tipo de módulo: una cadena que es el nombre del tipo de módulo insertado.
Número de serie: una cadena que es el número de serie del módulo. Esto es principalmente de interés para fines de inventario.
Copyright: una cadena que es la información de copyright. Normalmente dice "Original Siemens Equipment", pero es posible que una implementación de terceros de la pila de protocolo S7 pueda proporcionar información adicional.
Identificación de planta: una cadena que representa la identificación de planta configurada en el dispositivo. Esta cadena rara vez se ha visto en nuestros escaneos, pero podría proporcionar información útil.
####Historia y antecedentes
Del artículo de Wikipedia sobre SIMATIC http://simple.wikipedia.org/wiki/SIMATIC:
SIMATIC es el nombre de un sistema de automatización desarrollado por la empresa alemana Siemens. El sistema de automatización controla máquinas utilizadas para la producción industrial. Este sistema permite que las máquinas funcionen automáticamente.
####Instalación
Este script requiere Nmap para ejecutarse. Si no tienes Nmap, descárgalo e instálalo siguiendo las instrucciones de Nmap. http://nmap.org/download.html
#####Windows
Después de descargar s7-enumerate.nse, deberás moverlo al directorio de scripts NSE; esto debe hacerse como administrador. Ve a Inicio -> Programas -> Accesorios, haz clic derecho en 'Símbolo del sistema'. Selecciona 'Ejecutar como administrador'.
move s7-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Después de descargar s7-enumerate.nse, deberás moverlo al directorio de scripts NSE; esto debe hacerse como sudo/root.
sudo mv s7-enumerate.nse /usr/share/nmap/scripts
####Uso
Dentro de una ventana de terminal o del símbolo del sistema, usa uno de los siguientes comandos, donde es el objetivo que deseas escanear en busca de PLC S7.
Windows: nmap -p 102 --script s7-enumerate -sV <host>
Linux: sudo nmap -p 102 --script s7-enumerate -sV <host>
####Notas
La versión oficial de este script se mantiene en: https://github.com/digitalbond/Redpoint/s7-enumerate.nse
Este script utiliza el puerto de destino estándar S7COMMS de TCP 102.