
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