
Scripts NSE de Nmap pour la découverte et l'énumération d'ICS/SCADA—BACnet, EtherNet/IP, CoDeSys, Fox, Modicon, Omron, S7—à l'aide de requêtes de protocoles pour les évaluations de sécurité.
#Redpoint
###Outils d'énumération ICS de Digital Bond
Redpoint est un projet de recherche de Digital Bond visant à énumérer les applications et appareils ICS.
Nous utilisons nos outils Redpoint lors d'évaluations pour découvrir des appareils ICS et extraire des informations utiles pour des tests secondaires. Une partie de ces outils sera mise à disposition du public sous forme de scripts Nmap NSE dans ce dépôt.
Les outils Redpoint utilisent des commandes légitimes de protocoles ou d'applications pour découvrir et énumérer les appareils et applications. Aucune tentative d'exploitation ou de plantage n'est effectuée. Cependant, de nombreux appareils et applications ICS sont fragiles et peuvent planter ou répondre de manière inattendue à tout trafic inattendu ; utilisez-les donc avec précaution.
Chaque script est documenté ci-dessous et disponible dans un fichier .nse dans ce dépôt.
BACnet-discover-enumerate.nse - Identifier et énumérer les appareils BACnet
codesys-v2-discover.nse - Identifier et énumérer les contrôleurs CoDeSys V2
enip-enumerate.nse - Identifier et énumérer les appareils EtherNet/IP de Rockwell Automation et d'autres fournisseurs
fox-info.nse - Identifier et énumérer les appareils Niagara Fox
modicon-info.nse - Identifier et énumérer les automates Modicon de Schneider Electric
omron-info.nse - Identifier et énumérer les automates Omron
pcworx-info.nse - Identifier et énumérer les automates compatibles avec le protocole PC Worx
proconos-info.nse - Identifier et énumérer les automates compatibles ProConOS
s7-enumerate.nse - Identifier et énumérer les automates Siemens SIMATIC S7
==
###BACnet-discover-enumerate.nse
![BACnet-discover-enumerate Sample Output] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/03/BACnet-nse.png)
####Auteurs
Stephen Hilt et Michael Toecker
Digital Bond, Inc
####Objet et description
Le but de BACnet-discover-enumerate.nse est d'abord d'identifier si un appareil connecté en IP exécute BACnet. Cela fonctionne en interrogeant l'appareil avec un message BACnet pré-généré. Les versions plus récentes du protocole BACnet répondront avec un accusé de réception, les versions plus anciennes renverront un message d'erreur BACnet. La présence de l'accusé de réception ou de l'erreur est suffisante pour prouver qu'un appareil compatible BACnet se trouve à l'adresse IP cible.
Ensuite, si un accusé de réception est reçu, ce script tentera également d'énumérer plusieurs propriétés BACnet sur un appareil BACnet réactif. L'appareil est de nouveau interrogé avec un message BACnet pré-généré. L'énumération réussie utilise des requêtes spécialement conçues et ne réussira pas si l'appareil BACnet ne prend pas en charge la propriété.
Les propriétés BACnet interrogées par ce script sont :
Vendor ID - Un numéro qui correspond à un fournisseur BACnet enregistré. Le script renvoie également le nom du fournisseur associé.
Vendor Number - Une chaîne qui représente le nom du fournisseur configuré sur l'appareil. Cela peut différer du Vendor ID car le Vendor ID est le numéro enregistré auprès d'ASHARE.
Object Identifier - Un numéro qui identifie de manière unique l'appareil. Si l'Object-Identifier est connu, il est possible d'envoyer des commandes avec un logiciel client BACnet, y compris celles qui modifient les valeurs, les programmes, les plannings et d'autres informations opérationnelles sur les appareils BACnet. Cette propriété est obligatoire pour tous les appareils BACnet.
Firmware Revision - Le numéro de révision du firmware sur l'appareil BACnet.
Application Software Revision - Le numéro de révision du logiciel utilisé pour la communication BACnet.
Object Name - Une chaîne définie par l'utilisateur qui attribue un nom à l'appareil BACnet, généralement saisie par les techniciens lors de la mise en service. Cette propriété est obligatoire pour tous les appareils BACnet.
Model Name - Le modèle de l'appareil BACnet
Description - Une chaîne définie par l'utilisateur pour décrire l'appareil, généralement saisie par les techniciens lors de la mise en service
Location - Une chaîne définie par l'utilisateur pour enregistrer l'emplacement physique de l'appareil, généralement saisie par les techniciens lors de la mise en service
Broadcast Distribution Table (BDT) - Une liste des BACnet Broadcast Management Devices (BBMD) dans le réseau BACnet. Cela identifiera tous les sous-réseaux qui font partie du réseau BACnet.
Foreign Device Table (FDT) - Une liste des périphériques étrangers enregistrés auprès de l'appareil BACnet. Un périphérique étranger est tout appareil qui ne se trouve pas sur un sous-réseau faisant partie du réseau BACnet et qui n'est pas dans la BDT. Les périphériques étrangers sont souvent situés sur des réseaux externes et pourraient être l'adresse IP d'un attaquant.
La BDT et la FDT peuvent être de grandes listes et peuvent ne pas être souhaitées lors d'un scan Nmap à grande échelle. Le script de base ne téléchargera pas la BDT et la FDT. Exécutez la commande avec --script-args full=yes pour récupérer la BDT et la FDT, voir la section Usage.
![BACnet-discover-enumerate Sample Output with BDT and FDT] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/08/screenshot_bacnet-1.png)
Ce script utilise une fonctionnalité ajoutée en 2004 à la spécification BACnet afin de récupérer l'Object Identifier d'un appareil avec une seule requête, et sans rejoindre le réseau BACnet en tant que périphérique étranger. (Voir ANSI/ASHRAE Addendum a to ANSI/ASHRAE Standard 135-2001 pour plus de détails)
####Historique et contexte
Extrait de l'article Wikipédia sur BACnet http://en.wikipedia.org/wiki/BACnet :
BACnet est un protocole de communication pour les réseaux d'automatisation et de contrôle des bâtiments. C'est un protocole standard ASHRAE, ANSI et ISO[1]. Le port par défaut pour le trafic BACnet est UDP/47808.
BACnet est utilisé dans les systèmes d'automatisation et de contrôle des bâtiments pour des applications telles que le contrôle du chauffage, de la ventilation et de la climatisation, le contrôle de l'éclairage, le contrôle d'accès et les systèmes de détection d'incendie ainsi que leurs équipements associés. Le protocole BACnet fournit des mécanismes permettant aux appareils d'automatisation de bâtiments informatisés d'échanger des informations, quel que soit le service du bâtiment qu'ils assurent.
####Installation
Ce script nécessite nmap pour fonctionner. Si vous n'avez pas Nmap, téléchargez et installez Nmap en suivant les instructions de Nmap. http://nmap.org/download.html
#####Windows
Après avoir téléchargé bacnet-discover.nse, vous devrez le déplacer dans le répertoire NSE Scripts, ce qui doit être fait en tant qu'administrateur. Allez dans Démarrer -> Programmes -> Accessoires, puis cliquez avec le bouton droit sur 'Invite de commandes'. Sélectionnez 'Exécuter en tant qu'administrateur'.
move BACnet-discover-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Après avoir téléchargé BACnet-discover-enumerate.nse, vous devrez le déplacer dans le répertoire NSE Scripts, ce qui doit être fait en tant que sudo/root.
sudo mv BACnet-discover-enumerate.nse /usr/share/nmap/scripts
####Usage
Dans une fenêtre de terminal / une invite de commandes, utilisez l'une des commandes suivantes où host est la cible que vous souhaitez analyser pour BACNet. Utilisez --script-args full=yes si vous voulez que la sortie inclue la BDT et 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>
Pour accélérer les résultats en n'effectuant pas de recherches DNS pendant l'analyse, utilisez l'option -n ; désactivez également les pings pour déterminer si l'appareil est actif en utilisant l'option -Pn pour des résultats complets.
nmap -sU -Pn -p 47808 -n --script BACnet-discover-enumerate <host>
####Notes
La version officielle de ce script est maintenue à l'adresse : https://github.com/digitalbond/Redpoint/blob/master/BACnet-discover-enumerate.nse
Ce script utilise le port source et destination BACnet standard UDP 47808.
Les appareils BACnet plus récents (après le 25 février 2004) sont tenus par la spécification de répondre à des requêtes spécifiques qui utilisent un object-identifier 'catchall' avec leur propre numéro d'instance valide (voir ANSI/ASHRAE Addendum a to ANSI/ASHRAE Standard 135-2001). Les versions plus anciennes d'appareils BACnet peuvent ne pas répondre à ce catchall et répondront à la place avec un paquet d'erreur BACnet.
Ce script ne tente pas de rejoindre un réseau BACnet en tant que périphérique étranger ; il envoie simplement des requêtes BACnet directement à un appareil adressable en IP.
== ###codesys-v2-discover.nse ![codesys-v2-discover Sample Output] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2016/03/codesys-v2-discover-win.png)
####Auteurs
Stephen Hilt, Reid Wightman
####Objet et description
Le script codesys-v2-discover.nse identifie les automates qui exécutent l'environnement d'exécution logique à relais (ladder logic) version 2 créé par 3S-Software GmbH. Ces contrôleurs utilisent un protocole binaire propriétaire pour installer une nouvelle logique à relais, ainsi que pour déboguer la logique à relais en cours d'exécution. Le protocole peut exiger une authentification. En pratique, peu d'appareils prennent en charge ce comportement. Ce script ne teste pas l'authentification.
Ce script envoie une simple requête d'identification à l'appareil. Le message de réponse peut inclure le système d'exploitation et la version spécifique de CoDeSys exécutée sur l'automate.
####Historique et contexte
Digital Bond a publié en avril 2012 des détails sur le système d'exécution CoDeSys, jugé non sécurisé par conception. Le protocole utilise généralement TCP/1200 ou TCP/2455 comme port de contrôle. Le protocole de contrôle contient des fonctions pour téléverser et télécharger des fichiers depuis les contrôleurs. Le protocole peut également fournir un shell de commande, qui offre des fonctionnalités supplémentaires. Les fonctions du shell incluent généralement la possibilité de démarrer et d'arrêter la logique à relais en cours d'exécution, ainsi que de récupérer des informations de débogage depuis le contrôleur.
L'avis initial ne s'appliquait qu'à la version 2 de l'environnement d'exécution. Digital Bond a également publié un script Nmap de preuve de concept, écrit à l'origine par HD Moore dans le cadre de son projet d'analyse d'Internet.
Un script Nessus a également été produit pour cette version du protocole, mais le script Nessus contient une erreur et ne vérifie pas correctement les contrôleurs dotés de processeurs big-endian.
####Installation
Ce script nécessite Nmap pour fonctionner. Si vous n'avez pas Nmap, téléchargez et installez Nmap en suivant les instructions de Nmap. http://nmap.org/download.html
#####Windows
Après avoir téléchargé enip-enumerate.nse, vous devrez le déplacer dans le répertoire NSE Scripts, ce qui doit être fait en tant qu'administrateur. Allez dans Démarrer -> Programmes -> Accessoires, puis cliquez avec le bouton droit sur 'Invite de commandes'. Sélectionnez 'Exécuter en tant qu'administrateur'.
move codesys-v2-discover.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Après avoir téléchargé enip-enumerate.nse, vous devrez le déplacer dans le répertoire NSE Scripts, ce qui doit être fait en tant que sudo/root.
sudo mv codesys-v2-discover.nse /usr/share/nmap/scripts
####Usage
Dans une fenêtre de terminal / une invite de commandes, utilisez l'une des commandes suivantes où est la cible que vous souhaitez analyser pour EtherNet/IP.
Windows: nmap -p 1200,2455 --script codesys-v2-discover <host>
Linux: sudo nmap -p 1200,2455 --script codesys-v2-discover <host>
####Notes
La version officielle de ce script est maintenue à l'adresse :https://github.com/digitalbond/Redpoint/codesys-v2-discover.nse
Ce script tentera d'envoyer les requêtes CoDeSys sur tout port ouvert. Bien que les ports standard 1200 ou 2455 soient utilisés par la plupart des contrôleurs, certains contrôleurs utilisent des ports alternatifs tels que 1201, 1217, et encore d'autres ports.
== ###enip-enumerate.nse ![enip-enumerate Sample Output] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/enip.png)
####Auteur
Stephen Hilt
Digital Bond, Inc
####Objet et description
Le but de enip-enumerate.nse est d'identifier et d'énumérer les appareils EtherNet/IP. Rockwell Automation / Allen Bradley a développé le protocole et est le principal fabricant de ces appareils, par exemple ControlLogix et MicroLogix, mais il s'agit d'un standard ouvert et un certain nombre de fournisseurs proposent une carte ou une solution d'interface EtherNet/IP.
Un appareil EtherNet/IP est identifié de manière positive en interrogeant TCP/44818 avec un message List Identities (0x63). Les messages de réponse détermineront s'il s'agit d'un appareil EtherNet/IP et analyseront les informations pour énumérer l'appareil.
La requête EtherNet/IP List Identities extrait des informations de base sur l'appareil, connues sous le nom de « clé électronique » de l'appareil. Les informations incluent le fournisseur, le nom du produit, le numéro de série, le type d'appareil, le code produit et le numéro de révision. Le script analyse également l'adresse IP configurée de l'appareil à partir du champ Socket Address dans la trame EtherNet/IP du paquet.
Les propriétés EtherNet/IP analysées par ce script sont :
Vendor - Un entier de deux octets utilisé pour rechercher le nom du fournisseur
Product Name - Une chaîne qui représente une courte description du produit / de la famille de produits, la longueur maximale est de 32 caractères
Serial Number - Un nombre hexadécimal de six octets stocké en little endian
Device Type - Un entier de deux octets utilisé pour rechercher le type d'appareil. Ce champ est souvent inutilisé et défini à 0.
Product Code - Le Product Code attribué par le fournisseur identifie un produit particulier au sein d'un type d'appareil. Le script n'ayant pas accès aux tables de codes produits des fournisseurs, le nombre est affiché.
Revision - Deux entiers d'un octet qui indiquent le numéro de révision majeure et mineure de l'appareil
Device IP - Quatre entiers d'un octet qui représentent l'adresse IP configurée de l'appareil. Cette adresse diffère souvent de l'adresse IP analysée par le script.
####Historique et contexte
Extrait de l'article Wikipédia sur EtherNet/IP http://en.wikipedia.org/wiki/EtherNet/IP
EtherNet/IP a été développé à la fin des années 1990 par Rockwell Automation dans le cadre des solutions de réseau Ethernet industriel de Rockwell. Rockwell a donné son surnom à EtherNet/IP et l'a confié à l'ODVA, qui gère désormais le protocole et assure l'interopérabilité des systèmes multi-fournisseurs en exigeant le respect des normes établies lorsque de nouveaux produits utilisant le protocole sont développés aujourd'hui.
EtherNet/IP est le plus couramment utilisé dans les systèmes de contrôle d'automatisation industrielle, comme pour les usines de traitement des eaux, les installations de fabrication et les services publics. Plusieurs fournisseurs de systèmes de contrôle ont développé des automates programmables et des E/S capables de communiquer via EtherNet/IP.
####Installation
Ce script nécessite Nmap pour fonctionner. Si vous n'avez pas Nmap, téléchargez et installez Nmap en suivant les instructions de Nmap. http://nmap.org/download.html
#####Windows
Après avoir téléchargé enip-enumerate.nse, vous devrez le déplacer dans le répertoire NSE Scripts, ce qui doit être fait en tant qu'administrateur. Allez dans Démarrer -> Programmes -> Accessoires, puis cliquez avec le bouton droit sur 'Invite de commandes'. Sélectionnez 'Exécuter en tant qu'administrateur'.
move enip-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Après avoir téléchargé enip-enumerate.nse, vous devrez le déplacer dans le répertoire NSE Scripts, ce qui doit être fait en tant que sudo/root.
sudo mv enip-enumerate.nse /usr/share/nmap/scripts
####Usage
Dans une fenêtre de terminal / une invite de commandes, utilisez l'une des commandes suivantes où est la cible que vous souhaitez analyser pour EtherNet/IP.
Windows: nmap -p 44818 --script enip-enumerate <host>
Linux: sudo nmap -p 44818 --script enip-enumerate <host>
####Notes
La version officielle de ce script est maintenue à l'adresse :https://github.com/digitalbond/Redpoint/enip-enumerate.nse
Ce script utilise le port de destination Ethernet/IP standard TCP 44818.
==
###fox-info.nse ![fox-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2014/10/fox-example.png)
####Auteur
Stephen Hilt
Digital Bond, Inc
####Objet et description
Le but de fox-info.nse est d'abord d'identifier les appareils exécutant le protocole Niagara Fox. Ce script est basé sur les travaux et exemples fournis par Billy Rios et Terry McCorkle.
Après une connexion réussie à un appareil Niagara Fox, le script analysera la réponse envoyée par l'appareil et affichera les informations énumérées.
Les propriétés Niagara Fox interrogées par ce script sont :
Fox Version - La version du protocole Fox actuellement exécuté sur l'appareil.
Host Name - Le nom d'hôte de l'appareil. Il s'agit généralement du nom de poste de travail de l'appareil distant.
Host Address - L'adresse IP configurée sur l'appareil. Il peut s'agir de l'adresse IP analysée ou d'une adresse privée si l'appareil se trouve derrière un dispositif de traduction d'adresses réseau (NAT).
Application Name - Le nom de l'application qui s'exécute sur l'appareil distant. Il s'agit généralement de « Workbench » ou « Station ».
Application Version - Le numéro de version du nom d'application précédemment énuméré.
VM Name - Le nom de la machine virtuelle Java qui exécute l'application.
VM Version - Le numéro de version de la machine virtuelle qui s'exécute sur l'appareil distant. Il s'agira très probablement du numéro de version de Java HotSpot.
OS Name - Nom du système d'exploitation exécutant le protocole Fox sur l'appareil, par exemple QNX ou Windows XP.
Time Zone - Le fuseau horaire local configuré sur l'appareil.
Host ID - un identifiant unique utilisé pour identifier l'appareil.
VM UUID - L'identifiant universel unique de la machine virtuelle Java.
Brand ID - Chaque station et outil sous licence possède un identifiant de marque. Ce champ contient un descripteur textuel que l'OEM choisit comme identifiant pour sa gamme de produits. Chaque station ou outil ne peut avoir qu'une seule entrée BrandID.
####Historique et contexte
Fox est un protocole TCP/IP propriétaire utilisé pour la communication station-à-station et workbench-à-station dans le Niagara Framework des solutions d'automatisation de bâtiments Tridium. Tridium est une filiale en propriété exclusive de Honeywell.
####Installation
Ce script nécessite Nmap pour fonctionner. Si vous n'avez pas Nmap, téléchargez et installez Nmap, voir : http://nmap.org/download.html
#####Windows
Après avoir téléchargé fox-info.nse, déplacez-le dans le répertoire NSE Scripts. Ce déplacement doit être effectué en tant qu'administrateur. Allez dans Démarrer -> Programmes -> Accessoires, puis cliquez avec le bouton droit sur 'Invite de commandes'. Sélectionnez 'Exécuter en tant qu'administrateur'.
move fox-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Après avoir téléchargé fox-info.nse, déplacez-le dans le répertoire NSE Scripts. Cela doit être fait en tant que sudo/root.
sudo mv fox-info.nse /usr/share/nmap/scripts
####Usage
Dans une fenêtre de terminal / une invite de commandes, utilisez l'une des commandes suivantes où host est la cible que vous souhaitez analyser pour les appareils prenant en charge le protocole Niagara Fox.
Windows: nmap -p 1911 --script fox-info <host>
Linux: sudo nmap -p 1911 --script fox-info <host>
####Notes
La version officielle de ce script est maintenue à l'adresse : https://github.com/digitalbond/Redpoint/blob/master/fox-info.nse
Ce script utilise le port source et destination Niagara Fox standard TCP 1911.
==
###modicon-info.nse ![modicon-info sample output] (http://www.digitalbond.com/wp-content/uploads/2014/09/Modicon.png)
####Auteur
Stephen Hilt
Digital Bond, Inc
####Objet et description
Le but de modicon-info.nse est d'abord d'identifier et d'énumérer les automates Modicon fabriqués par Schneider Electric.
Le script identifie d'abord si un appareil connecté en IP envoie une requête Modbus avec le code de fonction 43. La réponse est suffisante pour identifier les appareils Modbus même s'ils ne prennent pas en charge le code de fonction 43. Si le nom du fournisseur dans la réponse contient la chaîne Schneider, le script énumérera l'appareil à l'aide du code de fonction Modbus propriétaire 90 de Schneider Electric.
Les propriétés des codes de fonction Modbus 43 et 90 incluses dans la sortie du script sont :
Vendor Name - Ce script ignorera tous les appareils qui ne contiennent pas « Schneider ».2) Module Réseau - Le module de communications Ethernet de l'automate Modicon.
Module CPU - Le module CPU de l'automate Modicon.
Firmware - La version du firmware sur le module CPU de l'automate Modicon.
Carte mémoire - Le numéro de modèle de la carte mémoire du module CPU.
Informations sur le projet - Informations diverses sur le projet, telles que le nom du projet, la version d'Unity Pro utilisée pour le configurer, ainsi que le nom du poste de travail qui a programmé l'automate. Certains appareils fourniront l'emplacement du fichier .stu sur le poste de travail qui a configuré l'appareil.
Révision du projet - La révision du projet en cours d'exécution sur l'automate ; le numéro de révision du projet augmente de 1 à chaque fois que le projet est compilé et transféré vers l'automate.
Date de dernière modification du projet - Un horodatage enregistré correspondant à la dernière fois que l'automate a été modifié par un technicien.
####Historique et contexte
Extrait de l'article Wikipédia sur les automates programmables industriels http://en.wikipedia.org/wiki/Programmable_logic_controller#History :
En 1968, GM Hydra-Matic (la division des transmissions automatiques de General Motors) a émis une demande de propositions pour un remplacement électronique des systèmes à relais câblés, basée sur un livre blanc rédigé par l'ingénieur Edward R. Clark. La proposition gagnante provenait de Bedford Associates de Bedford, dans le Massachusetts. Le premier automate, désigné sous le nom de 084 parce qu'il s'agissait du quatre-vingt-quatrième projet de Bedford Associates, en fut le résultat.[2] Bedford Associates a créé une nouvelle société dédiée au développement, à la fabrication, à la vente et à la maintenance de ce nouveau produit : Modicon, acronyme de MOdular DIgital CONtroller. L'une des personnes ayant travaillé sur ce projet était Dick Morley, considéré comme le « père » de l'automate programmable.[3] La marque Modicon a été vendue en 1977 à Gould Electronics, puis acquise par la société allemande AEG, puis par le français Schneider Electric, le propriétaire actuel.
####Installation
Ce script nécessite Nmap pour fonctionner. Si vous ne disposez pas de Nmap, téléchargez et installez Nmap.
http://nmap.org/download.html
#####Windows
Après avoir téléchargé modicon-info.nse, déplacez-le dans le répertoire des scripts NSE. Cela nécessitera des privilèges d'administrateur. Allez dans Démarrer -> Programmes -> Accessoires, puis faites un clic droit sur « Invite de commandes ». Sélectionnez « Exécuter en tant qu'administrateur ».
move modicon-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Après avoir téléchargé modicon-info.nse, déplacez-le dans le répertoire des scripts NSE. Cette opération devra être effectuée en tant que sudo/root.
sudo mv modicon-info.nse /usr/share/nmap/scripts
####Utilisation
Dans une fenêtre de terminal ou une invite de commandes, utilisez l'une des commandes suivantes où est la cible que vous souhaitez analyser pour détecter des automates Modicon.
Windows: nmap -p 502 --script modicon-info.nse -sV <host>
Linux: sudo nmap -p 502 --script modicon-info.nse -sV <host>
####Remarques
La version officielle de ce script est maintenue à l'adresse : https://github.com/digitalbond/Redpoint/modicon-info.nse
Ce script utilise le port de destination Modbus standard, le TCP 502.
== ###omrontcp-info.nse & omronudp-info.nse ![omrontcp/udp-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/Region.png)
####Auteur
Stephen Hilt
Digital Bond, Inc
####Objet et description
L'objectif d'omrontcp-info et d'omronudp-info est d'identifier et d'énumérer les appareils OMRON FINS. Omron a développé le protocole et est le principal fabricant des appareils prenant en charge ce protocole.
Un appareil OMRON FINS est identifié de manière certaine en interrogeant le TCP/9600 ou l'UDP 9600 avec une commande Read Controller Status (0x0501). Les messages de réponse permettront de déterminer s'il s'agit d'un appareil OMRON FINS et d'analyser les informations pour énumérer l'appareil.
La commande Read Controller Status du protocole OMRON FINS récupère des informations de base sur l'appareil, telles que le modèle du contrôleur, la version du contrôleur, la taille de la zone programme, la taille IOM, le nombre de mots DM, la taille des temporisateurs/compteurs, la taille de la zone DM d'expansion, le nombre d'étapes/transitions, le type de carte mémoire et la taille de la carte mémoire.
Les propriétés OMRON FINS analysées par ce script sont :
Modèle du contrôleur - Une chaîne d'au plus 20 octets qui représente le modèle du contrôleur
Version du contrôleur - Une chaîne représentant un numéro de version d'au plus 20 octets.
Usage système - Réservé à l'usage du système. Informations collectées simplement pour voir s'il y a quelque chose d'intéressant dans ce champ
Taille de la zone programme - La taille du paramétrage du PC et de la zone programme.
Taille IOM - La taille de la zone dans laquelle les commandes bit/mot peuvent être utilisées.
Nombre de mots DM - Nombre total de mots dans la zone DM.
Taille temporisateurs/compteurs - Nombre maximal de temporisateurs/compteurs disponibles.
Taille de la DM d'expansion - Banques dans la zone DM d'expansion
Nombre d'étapes/transitions - Nombre maximal d'étapes/transitions disponibles
Type de carte mémoire - 00 : Aucune carte mémoire 01 : SPRAM 02 : EPROM 03 : EEPROM
Taille de la carte mémoire - Taille de la carte mémoire en Ko
####Historique et contexte
FINS, ou Factory Intelligent Network Services, est un protocole qui utilise des commandes pour communiquer avec les automates. Le protocole prend en charge une version sur UDP ainsi qu'une version sur TCP. Il existe quelques différences entre les deux protocoles, c'est pourquoi deux scripts ont été écrits pour prendre en charge l'analyse des services TCP et UDP.
OMRON FINS est utilisé dans les systèmes de contrôle d'automatisation industrielle, tels que les usines de traitement des eaux, les installations de fabrication et les services publics.
####Installation
Ce script nécessite Nmap pour fonctionner. Si vous ne disposez pas de Nmap, téléchargez et installez Nmap conformément aux instructions de Nmap. http://nmap.org/download.html
#####Windows
Après avoir téléchargé enip-enumerate.nse, vous devrez le déplacer dans le répertoire des scripts NSE, ce qui devra être fait en tant qu'administrateur. Allez dans Démarrer -> Programmes -> Accessoires, puis faites un clic droit sur « Invite de commandes ». Sélectionnez « Exécuter en tant qu'administrateur ».
move omron*.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Après avoir téléchargé enip-enumerate.nse, vous devrez le déplacer dans le répertoire des scripts NSE, ce qui devra être fait en tant que sudo/root.
sudo mv omron*.nse /usr/share/nmap/scripts
####Utilisation
Dans une fenêtre de terminal ou une invite de commandes, utilisez l'une des commandes suivantes où est la cible que vous souhaitez analyser pour détecter des appareils 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>
####Remarques
La version TCP officielle de ce script est maintenue à l'adresse : https://github.com/digitalbond/Redpoint/omrontcp-info.nse
La version UDP officielle de ce script est maintenue à l'adresse : https://github.com/digitalbond/Redpoint/omronudp-info.nse
Ces scripts utilisent les ports de destination FINS standard et TCP/FINS, à savoir l'UDP 9600 et le TCP 9600.
== ###pcworx-info.nse ![pcworx-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)
####Auteur
Stephen Hilt
Digital Bond, Inc
####Objet et description
L'objectif de pcworx-info.nse est d'identifier et d'énumérer les automates Phoenix Contact ILC via le protocole PC Worx. Un automate est identifié de manière certaine en interrogeant le TCP/1962 avec des requêtes pré-générées. Les messages de réponse permettront de déterminer s'il s'agit d'un automate compatible PC Worx et d'orienter vers une énumération supplémentaire.
Au total, trois paquets seront envoyés à l'automate avec ce script pour établir les communications, puis pour demander les informations à l'automate.
Les propriétés PC Worx analysées par ce script sont :
Type d'automate - Une chaîne qui représente le type d'automate ILC.
Numéro de modèle - Une chaîne de chiffres ASCII qui représente le modèle de l'automate, comme par exemple un 2737193.
Version du firmware - Une chaîne qui représente la version du firmware exécuté sur l'automate.
Date du firmware - Une chaîne qui représente la date de compilation du firmware exécuté sur l'automate.
Heure du firmware - Une chaîne qui représente l'heure de compilation du firmware exécuté sur l'automate.
####Historique et contexte
Extrait de la page produit Phoenix Contact Lien
PC Worx est le logiciel d'ingénierie cohérent pour tous les contrôleurs de Phoenix Contact. Il combine la programmation - conformément à la norme IEC 61131, la configuration du bus de terrain et le diagnostic système - dans une solution logicielle unique. Cela permet une interaction optimale entre le matériel et le logiciel. PC Worx peut être utilisé pour mettre en œuvre des concepts d'automatisation complexes. Selon le nombre d'E/S à prendre en charge, vous avez le choix entre deux versions : PC WORX BASIC et PC WORX PRO.
####Installation
Ce script nécessite Nmap pour fonctionner. Si vous ne disposez pas de Nmap, téléchargez et installez Nmap conformément aux instructions de Nmap. http://nmap.org/download.html
#####Windows
Après avoir téléchargé pcworx-info.nse, vous devrez le déplacer dans le répertoire des scripts NSE, ce qui devra être fait en tant qu'administrateur. Allez dans Démarrer -> Programmes -> Accessoires, puis faites un clic droit sur « Invite de commandes ». Sélectionnez « Exécuter en tant qu'administrateur ».
move pcworx-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Après avoir téléchargé pcworx-info.nse, vous devrez le déplacer dans le répertoire des scripts NSE, ce qui devra être fait en tant que sudo/root.
sudo mv pcworx-info.nse /usr/share/nmap/scripts
####Utilisation
Dans une fenêtre de terminal ou une invite de commandes, utilisez l'une des commandes suivantes où est la cible que vous souhaitez analyser pour détecter des automates Phoenix Contact.
Windows: nmap -p 1962 --script pcworx-info -sV <host>
Linux: nmap -p 1962 --script pcworx-info -sV <host>
####Remarques
La version officielle de ce script est maintenue à l'adresse : https://github.com/digitalbond/Redpoint/pcworx-info.nse
Ce script utilise le port de destination PC Worx standard, le TCP 1962.
==
###proconos-info.nse ![proconos-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)
####Auteur
Stephen Hilt
Digital Bond, Inc
####Objet et description
L'objectif de proconos-info.nse est d'identifier et d'énumérer les automates via le protocole ProConOS/MultiProg. Un automate est identifié de manière certaine en interrogeant le TCP/20547 avec des requêtes pré-générées. Les messages de réponse permettront de déterminer s'il s'agit d'un automate compatible ProConOS/MultiProg et d'orienter vers une énumération supplémentaire.
Une seule requête est nécessaire pour obtenir ces informations de l'automate.
Les propriétés ProConOS/MultiProg analysées par ce script sont :
Runtime de logique à relais (Ladder) - Une chaîne qui affiche le nom du runtime, sa version et sa date de compilation.
Type d'automate - Une chaîne qui représente le type de l'automate et la version du firmware
Nom du projet - Une chaîne qui représente le nom du projet actuellement exécuté sur l'automate.
Projet de démarrage - Une chaîne qui représente le nom du projet configuré pour démarrer sur l'automate.
Code source du projet - Une chaîne qui indique si le code source du projet est disponible ou non.
####Installation
Ce script nécessite Nmap pour fonctionner. Si vous ne disposez pas de Nmap, téléchargez et installez Nmap conformément aux instructions de Nmap. http://nmap.org/download.html
#####Windows
Après avoir téléchargé proconos-info.nse, vous devrez le déplacer dans le répertoire des scripts NSE, ce qui devra être fait en tant qu'administrateur. Allez dans Démarrer -> Programmes -> Accessoires, puis faites un clic droit sur « Invite de commandes ». Sélectionnez « Exécuter en tant qu'administrateur ».
move proconos-info.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Après avoir téléchargé proconos-info.nse, vous devrez le déplacer dans le répertoire des scripts NSE, ce qui devra être fait en tant que sudo/root.
sudo mv proconos-info.nse /usr/share/nmap/scripts
####Utilisation
Dans une fenêtre de terminal ou une invite de commandes, utilisez l'une des commandes suivantes où est la cible que vous souhaitez analyser pour détecter des automates ProConOS/MultiProg.
Windows: nmap -p 20547 --script proconos-info -sV <host>
Linux: nmap -p 20547 --script proconos-info -sV <host>
####Remarques
La version officielle de ce script est maintenue à l'adresse : https://github.com/digitalbond/Redpoint/proconos-info.nse
Ce script utilise le port de destination ProConOS/MultiProg standard, le TCP 20547.
==
###s7-enumerate.nse ![s7-enumerate Sample Output] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/S7screenshot.png)
####Auteur
Stephen Hilt
Digital Bond, Inc
Remarque : Ce script est destiné à fournir la même fonctionnalité que PLCScan dans Nmap. Une partie des informations collectées par PLCScan n'a pas été portée dans ce script NSE ; ces informations peuvent être extraites des paquets reçus.
Merci à Positive Research et à Dmitry Efanov pour la création de PLCScan
####Objet et description
L'objectif de s7-enumerate.nse est d'identifier et d'énumérer les automates Siemens SIMATIC S7. Un S7 est identifié de manière certaine en interrogeant le TCP/102 avec des messages COTP et S7COMM pré-générés. Les messages de réponse permettront de déterminer s'il s'agit d'un automate S7 et d'orienter vers une énumération supplémentaire. Remarque : le TCP/102 est utilisé par plusieurs applications, dont S7COMM.
Deux requêtes S7 sont envoyées après l'établissement d'une communication S7 réussie.
Ces requêtes récupèrent les informations matérielles de base, les informations du firmware et certaines informations descriptives telles que l'identification de l'installation et le nom du système. Ces informations sont ensuite renvoyées à Nmap et présentées dans les formats de sortie standard pris en charge par Nmap.
Les propriétés S7 analysées par ce script sont :
Module - Une chaîne qui représente l'identification du module interrogé. Cela identifie le modèle S7, par exemple 315, 412, 1200, ...
Matériel de base - Une chaîne qui représente l'identification du matériel de base interrogé.
Version - Une chaîne qui représente l'identification de la version du matériel de base.
Nom du système - Une chaîne qui représente le nom système attribué à l'appareil. Cela peut fournir des renseignements utiles si le propriétaire de l'actif a mis en œuvre une convention de nommage structurée.
Type de module - Une chaîne correspondant au nom du type de module inséré.
Numéro de série - Une chaîne correspondant au numéro de série du module. Cela présente principalement un intérêt à des fins d'inventaire.
Copyright - Une chaîne contenant les informations de copyright. Elle indique généralement « Original Siemens Equipment », mais il est possible qu'une implémentation tierce de la pile du protocole S7 fournisse des informations supplémentaires.
Identification de l'installation - Une chaîne qui représente l'identification de l'installation configurée sur l'appareil. Cette chaîne a rarement été observée lors de nos analyses, mais elle pourrait fournir des renseignements utiles.
####Historique et contexte
Extrait de l'article Wikipédia sur SIMATIC http://simple.wikipedia.org/wiki/SIMATIC :
SIMATIC est le nom d'un système d'automatisation développé par la société allemande Siemens. Le système d'automatisation contrôle des machines utilisées pour la production industrielle. Ce système permet aux machines de fonctionner automatiquement.
####Installation
Ce script nécessite Nmap pour fonctionner. Si vous ne disposez pas de Nmap, téléchargez et installez Nmap conformément aux instructions de Nmap. http://nmap.org/download.html
#####Windows
Après avoir téléchargé s7-enumerate.nse, vous devrez le déplacer dans le répertoire des scripts NSE, ce qui devra être fait en tant qu'administrateur. Allez dans Démarrer -> Programmes -> Accessoires, puis faites un clic droit sur « Invite de commandes ». Sélectionnez « Exécuter en tant qu'administrateur ».
move s7-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Après avoir téléchargé s7-enumerate.nse, vous devrez le déplacer dans le répertoire des scripts NSE, ce qui devra être fait en tant que sudo/root.
sudo mv s7-enumerate.nse /usr/share/nmap/scripts
####Utilisation
Dans une fenêtre de terminal ou une invite de commandes, utilisez l'une des commandes suivantes où est la cible que vous souhaitez analyser pour détecter des automates S7.
Windows: nmap -p 102 --script s7-enumerate -sV <host>
Linux: sudo nmap -p 102 --script s7-enumerate -sV <host>
####Remarques
La version officielle de ce script est maintenue à l'adresse : https://github.com/digitalbond/Redpoint/s7-enumerate.nse
Ce script utilise le port de destination S7COMMS standard, le TCP 102.