
Nmap NSE scripts per la scoperta e l'enumerazione di ICS/SCADA—BACnet, EtherNet/IP, CoDeSys, Fox, Modicon, Omron, S7—tramite query di protocollo per valutazioni di sicurezza.
#Redpoint
###Strumenti di enumerazione ICS di Digital Bond
Redpoint è un progetto di ricerca di Digital Bond per enumerare applicazioni e dispositivi ICS.
Utilizziamo i nostri strumenti Redpoint nelle attività di assessment per scoprire dispositivi ICS e raccogliere informazioni utili per test secondari. Una parte di questi strumenti sarà resa disponibile al pubblico in questo repository sotto forma di script Nmap NSE.
Gli strumenti Redpoint utilizzano comandi legittimi di protocolli o applicazioni per scoprire ed enumerare dispositivi e applicazioni. Non c'è alcun tentativo di sfruttare o mandare in crash nulla. Tuttavia molti dispositivi e applicazioni ICS sono fragili e possono bloccarsi o rispondere in modo inatteso a qualsiasi traffico inatteso, quindi usali con cautela.
Ogni script è documentato di seguito ed è disponibile in un file .nse in questo repository.
BACnet-discover-enumerate.nse - Identificare ed enumerare dispositivi BACnet
codesys-v2-discover.nse - Identificare ed enumerare controllori CoDeSys V2
enip-enumerate.nse - Identificare ed enumerare dispositivi EtherNet/IP di Rockwell Automation e altri vendor
fox-info.nse - Identificare ed enumerare dispositivi Niagara Fox
modicon-info.nse - Identificare ed enumerare PLC Modicon di Schneider Electric
omron-info.nse - Identificare ed enumerare PLC Omron
pcworx-info.nse - Identificare ed enumerare PLC con protocollo PC Worx abilitato
proconos-info.nse - Identificare ed enumerare PLC con ProConOS abilitato
s7-enumerate.nse - Identificare ed enumerare PLC Siemens SIMATIC S7
==
###BACnet-discover-enumerate.nse
![Esempio di output di BACnet-discover-enumerate] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/03/BACnet-nse.png)
####Autori
Stephen Hilt e Michael Toecker
Digital Bond, Inc
####Scopo e descrizione
Lo scopo di BACnet-discover-enumerate.nse è innanzitutto identificare se un dispositivo connesso via IP sta eseguendo BACnet. Funziona interrogando il dispositivo con un messaggio BACnet pre-generato. Le versioni più recenti del protocollo BACnet rispondono con un acknowledgement, mentre le versioni più vecchie restituiscono un messaggio di errore BACnet. La presenza dell'acknowledgement o dell'errore è sufficiente per dimostrare che all'indirizzo IP target è presente un dispositivo compatibile con BACnet.
In secondo luogo, se viene ricevuto un acknowledgement, lo script tenta anche di enumerare diverse proprietà BACnet su un dispositivo BACnet che risponde. Anche in questo caso, il dispositivo viene interrogato con un messaggio BACnet pre-generato. L'enumerazione riesce utilizzando richieste appositamente costruite e non avrà successo se il dispositivo BACnet non supporta la proprietà.
Le proprietà BACnet interrogate da questo script sono:
Vendor ID - Un numero che corrisponde a un vendor BACnet registrato. Lo script restituisce anche il nome del vendor associato.
Vendor Number - Una stringa che rappresenta il nome del vendor configurato sul dispositivo. Può differire dal Vendor ID, poiché il Vendor ID è il numero registrato presso ASHARE.
Object Identifier - Un numero che identifica univocamente il dispositivo. Se l'Object Identifier è noto, è possibile inviare comandi con software client BACnet, inclusi quelli che modificano valori, programmi, schedulazioni e altre informazioni operative sui dispositivi BACnet. Questa è una proprietà obbligatoria per tutti i dispositivi BACnet.
Firmware Revision - Il numero di revisione del firmware sul dispositivo BACnet.
Application Software Revision - Il numero di revisione del software utilizzato per la comunicazione BACnet.
Object Name - Una stringa definita dall'utente che assegna un nome al dispositivo BACnet, solitamente inserita dai tecnici in fase di commissioning. Questa è una proprietà obbligatoria per tutti i dispositivi BACnet.
Model Name - Il modello del dispositivo BACnet
Description - Una stringa definita dall'utente per descrivere il dispositivo, solitamente inserita dai tecnici in fase di commissioning
Location - Una stringa definita dall'utente per registrare la posizione fisica del dispositivo, solitamente inserita dai tecnici in fase di commissioning
Broadcast Distribution Table (BDT) - Un elenco dei BACnet Broadcast Management Device (BBMD) presenti nella rete BACnet. Ciò identifica tutte le sottoreti che fanno parte della rete BACnet.
Foreign Device Table (FDT) - Un elenco dei dispositivi esterni (foreign device) registrati presso il dispositivo BACnet. Un foreign device è qualsiasi dispositivo che non si trova su una sottorete facente parte della rete BACnet e che non è incluso nella BDT. I foreign device si trovano spesso su reti esterne e potrebbero corrispondere all'indirizzo IP di un attaccante.
La BDT e la FDT possono essere elenchi molto lunghi e potrebbero non essere desiderati in una scansione Nmap di grandi dimensioni. Lo script di base non scarica BDT e FDT. Esegui il comando con --script-args full=yes per ottenere BDT e FDT; consulta la sezione Utilizzo.
![Esempio di output di BACnet-discover-enumerate con BDT e FDT] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/08/screenshot_bacnet-1.png)
Questo script utilizza una funzionalità aggiunta alla specifica BACnet nel 2004 per recuperare l'Object Identifier di un dispositivo con una singola richiesta, senza doversi unire alla rete BACnet come foreign device. (Vedi il documento ANSI/ASHRAE Addendum a to ANSI/ASHRAE Standard 135-2001 per i dettagli)
####Storia e background
Dall'articolo di Wikipedia su BACnet http://en.wikipedia.org/wiki/BACnet:
BACnet è un protocollo di comunicazione per reti di automazione e controllo degli edifici. È un protocollo standard ASHRAE, ANSI e ISO[1]. La porta predefinita per il traffico BACnet è UDP/47808.
BACnet è utilizzato nei sistemi di automazione e controllo degli edifici per applicazioni quali controllo di riscaldamento, ventilazione e aria condizionata, controllo dell'illuminazione, controllo accessi e sistemi di rilevazione incendi e relative apparecchiature. Il protocollo BACnet fornisce meccanismi per consentire ai dispositivi computerizzati di automazione degli edifici di scambiare informazioni, indipendentemente dal particolare servizio dell'edificio che svolgono.
####Installazione
Questo script richiede nmap per essere eseguito. Se non hai Nmap, scaricalo e installalo seguendo le istruzioni di Nmap. http://nmap.org/download.html
#####Windows
Dopo aver scaricato bacnet-discover.nse, dovrai spostarlo nella directory NSE Scripts; questa operazione deve essere eseguita come amministratore. Vai su Start -> Programmi -> Accessori, fai clic con il tasto destro su 'Prompt dei comandi'. Seleziona 'Esegui come amministratore'.
move BACnet-discover-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
Dopo aver scaricato BACnet-discover-enumerate.nse, dovrai spostarlo nella directory NSE Scripts; questa operazione deve essere eseguita come sudo/root.
sudo mv BACnet-discover-enumerate.nse /usr/share/nmap/scripts
####Utilizzo