Manuale prodotto GFI. Guida di scripting

Documenti analoghi
1.1 Vantaggi dell utilizzo di uno script debugger. 1.2 Funzionalità di GFI LanGuard Script Debugger

1 Utilizzo di GFI MailEssentials

Samsung Universal Print Driver Guida dell utente

4. I moduli in Access 2000/2003

Xerox CentreWare Web Identificazione e applicazione della patch per il firmware di scansione

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

14Ex-Cap11.qxd :20 Pagina Le macro

Manuale prodotto GFI. Limitazioni archivio di Assistente archivio di GFI MailArchiver e guida alla gestione licenze

Installazione e uso di Document Distributor

CORSO DI FORMAZIONE DOCENTI DELLE SCUOLE PUBBLICHE A GESTIONE PRIVATA ECDL, LA PATENTE EUROPEA PER L USO DEL COMPUTER GUIDA SINTETICA

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Installazione del driver Custom PostScript o del driver della stampante PCL per Windows

Guida alla configurazione di Invio

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Guida rapida. Versione 9.0. Moving expertise - not people

Informazioni sull'integrazione guidata di Outlook

Jamio openwork data source connector for QlikView

INDICAZIONI UTILI ALL UTILIZZO NUOVA POSTA ELETTRONICA

Strumento di impostazione dello spegnimento automatico

Il tuo manuale d'uso. SAMSUNG SCX-4623FW

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

Le presenti note si riferiscono esclusivamente alla procedura di installazione e di aggiornamento di Planet HR.

Manuale utente. Versione 6.9

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

PIEMME G.U. Note di Rilascio (Visura assicurazione sistema SIC) Caratteristiche

Open Database Connectivity (ODBC)

INVIO FATTURE ATTIVE IN CONSERVAZIONE. Istruzioni

Installazione di IBM SPSS Modeler Entity Analytics

Guida per l utente agli organigrammi cross-browser di OrgPublisher

Pianificazione e creazione di comunità

Sommario. 1 La shell di Windows PowerShell... 1

Gestione Telematica Ordini Agenti. Manuale d uso

WINDOWS TERMINAL SERVER PER L ACCESSO REMOTO AL SISTEMA DI PROTOCOLLO INFORMATICO

Installazione Java Standard Edition (SDK)

Problemi di attivazione dell opzione Fiery

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

2014 Samsung Electronics Co., Ltd. Tutti i diritti riservati

3. Le routine evento in Access 2000/2003

Il Manuale di KXSLDbg. Keith Isdale Traduzione del documento: Samuele Kaplun Traduzione del documento: Simone Solinas

GUIDA RAPIDA EDILCONNECT

Uso di Lava Connect per il trasferimento dati ULDC

FUTURA SERVICE S.r.l. Procedura GIMI.NET ver. 3.8 Agosto 2017

NOTE PER IL CONTROLLO E L INVIO TRAMITE L APPLICATIVO ENTRATEL

STRUMENTO IMPOSTAZIONI DEL PANNELLO A SFIORAMENTO MANUALE DI ISTRUZIONI

Infor LN [GUIDA INFOR LN] [GUIDA INFOR LN] Baltur S.p.A. Rev /2013. Guida all utilizzo del Gestionale Infor LN per le Agenzie Baltur

Guida alla Configurazione del Client di posta Microsoft XP Outlook 2006

Inoltrare un messaggio.

Sharpdesk V3.5. Guida di installazione: Edizione con chiave del prodotto. Versione 1.0

Automatizzare le attività con le macro di Visual Basic

Istruzioni per la configurazione e l utilizzo del proprio dispositivo WLAN su sistemi operativi Windows Vista

Definire una chiave primaria. Microsoft Access. Definire una chiave primaria. Definire una chiave primaria. Definire una chiave primaria

Guida AirPrint. Questa guida dell'utente riguarda i seguenti modelli: MFC-J6520DW/J6720DW/J6920DW/J6925DW. Versione A ITA

Manuale di Nero BurnRights

ISTRUZIONI PER DISINSTALLAZIONE E REINSTALLAZIONE DELLA LIBRERIA ELLIPS

Dipartimento Affari Interni e Territoriali Direzione Centrale per i Servizi Demografici INA-SAIA. SSLProxy. Manuale Utente. versione 1.

ISCRIZIONE ONLINE AI SERVIZI SCOLASTICI

9In questa sezione. Ordinare e filtrare i dati. Dopo aver aggiunto dati ai fogli di lavoro, potresti voler

Programmazione con il linguaggio LibreOffice Basic

HP Workspace. Guida per l'utente

Cosa sono le maschere

Manuale d uso della Posta TBS. Oracle Collaboration Suite

Gestione Formulario. Il Formulario è una raccolta organizzata di formule e modelli finalizzati all amministrazione e gestione del personale.

Ripristino invio su Windows 10 Fall Update (v1709) e MS Outlook 2016

La presente sezione descrive le procedure di installazione e risoluzione dei problemi per le reti Windows NT 4.x:

Istruzione di installazione di IBM SPSS Modeler Server 16 for Windows

iseries Gestione applicazioni di Operations Navigator

Symantec IT Management Suite 8.0 powered by Altiris technology

Guida AirPrint. Questa guida dell'utente riguarda i seguenti modelli: DCP-J4120DW/MFC-J4420DW/J4620DW/ J4625DW/J5320DW/J5620DW/J5625DW/J5720DW/J5920DW

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

CardioChek Link Manuale d'uso

per ulteriori informazioni consultare la guida disponibile on line all indirizzo:

SHAREPOINT CONNECTOR PLUG-IN - short guide-

Accedere alla propria area riservata dal sito del CAF. Inserire le proprie credenziali e premere ACCEDI

Business Communications Manager e CallPilot 100/150

MULTIENTE QRBILA QUERY & REPORTING BILANCIO

GUIDA ALLA REGISTRAZIONE

Imagicle Hotel. Guida alla configurazione delle centrali Alcatel OXO fino alla Rel. 5.x 6.x

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito)

CardioChek Link Manuale d'uso

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per utenti singoli)

Gestione posta del Distretto 2060

Oxatis DataPlug. Per Windows XP, Windows Vista, Windows 7, Windows 8 e Windows 10. Manuale d uso della console Danea/EasyFatt

File Leggimi di Parallels Tools

Informazioni e assistenza. Messaggi di sistema. Accesso. Icone del pannello comandi

Chat. Connettersi a un server di chat. Modificare le impostazioni di chat. Ricevere impostazioni chat. Chat

PASW Statistics per Windows - Istruzioni di installazione (Licenza per utenti singoli)

Come aggiornare il firmware sulle stampanti largo formato

MANUALE OPERATIVO PROCEDURA INTEGRATA EDISAN D.E.S. (DATABASE EDILIZIA SANITARIA)

Microsoft Excel consente di impostare diversi livelli di protezione per controllare gli utenti che possono accedere ai dati di Excel e modificarli.

Sistema operativo Linux Ubuntu

Utilizzo collegamento remoto

Sistema di Teleraccolta EMITTENTI

Installazione del driver Custom PostScript o del driver della stampante PCL per Windows

Questo materiale è reperibile a questo indirizzo: PAS

Note per gli utenti dell'interfaccia wireless LAN

Manuale di KSystemLog. Nicolas Ternisien

IP150 (cod. PXDIP15)

Struttura di un applicazione Instant Developer

Database Modulo 6 CREAZIONE DI MASCHERE

Transcript:

Manuale prodotto GFI Guida di scripting

Le informazioni e il contenuto del presente documento vengono forniti esclusivamente a scopi informativi e come sono, senza garanzia di alcun tipo, sia espressa che implicita, ivi incluse, in via esemplificativa, tutte le garanzie implicite di commerciabilità, idoneità a soddisfare uno scopo particolare e non violazione dei diritti altrui. GFI Software non sarà ritenuta responsabile di nessun danno, inclusi danni consequenziali, che possano derivare dall uso del presente documento. Le informazioni sono state ottenute da fonti pubblicamente disponibili. Nonostante siano stati compiuti sforzi ragionevoli al fine di garantire la precisione dei dati forniti, GFI non garantisce, promette né tantomeno assicura la completezza, la precisione, l aggiornamento o l adeguatezza di tali dati e non sarà ritenuta responsabile di errori di stampa. GFI non fornisce garanzie, né espresse né implicite e non si assume la responsabilità legale della precisione o della completezza delle informazioni contenute nel presente documento. Se si ritiene che vi siano errori effettivi nel presente documento, contattarci. Provvederemo a risolvere la cosa quanto prima. Tutti i nomi di prodotti e società riportati possono essere marchi registrati dei rispettivi proprietari. GFI LanGuard è un copyright di GFI SOFTWARE Ltd. - 1999-2012 GFI Software Ltd. Tutti i diritti riservati. Versione documento: 11.0.1 Ultimo aggiornamento (mese/giorno/anno): 20/08/2012

Sommario 1 Introduzione 6 1.1 Vantaggi dell utilizzo di uno script debugger 6 1.2 Funzionalità di GFI LanGuard Script Debugger 6 2 Visual Basic Script (VBScript) 8 2.1 Note importanti su VBScript 8 2.2 Funzioni di VBScript supportate da GFI LanGuard 8 2.3 Errori e insidie comuni 9 2.4 Suggerimenti 10 2.5 Sviluppo di uno script in GFI LanGuard Script Debugger 11 2.5.1 Creazione di uno script 11 2.5.2 Esecuzione di uno script 12 2.5.3 Punti di interruzione del debug - funzionalità Passaggio a 12 2.5.4 Monitoraggio dei valori all interno delle variabili 12 2.5.5 Debug sotto sessioni utente alternative 12 2.5.6 Invio di parametri allo script 13 2.6 Aggiunta di un nuovo controllo di vulnerabilità basato su script per lo scanner 13 2.6.1 Passaggio 1: Creare uno script che controlli la presenza di vulnerabilità 14 2.6.2 Passaggio 2: Creare una nuova vulnerabilità per eseguire lo script 14 3 Script Python 16 3.1 Descrizione del linguaggio dello script Python. 16 3.2 Creazione di un nuovo controllo di vulnerabilità utilizzando Test script Python 16 3.2.1 Passaggio 1: Creazione script 16 3.2.2 Passaggio 2: Creazione del nuovo controllo di vulnerabilità 17 3.3 API (Application Programming Interfaces) disponibili negli script Python 17 3.3.1 Pywin32 19 3.4 Debug degli script Python 20 3.5 Possibilità di riutilizzo dei codici e delle librerie Python 20 3.5.1 Creazione di una libreria 20 3.5.2 Utilizzo delle librerie 21 4 Oggetti scripting 22 4.1 Oggetti Socket 22 4.1.1 OpenTcp 22 4.1.2 OpenUdp 23 4.1.3 Close 24 4.1.4 Recv 25 4.1.5 Send 26 4.1.6 SendTo 27 4.1.7 SetTimeout 28 4.1.8 DnsLookup 29 4.1.9 ReverseDnsLookup 30 4.2 Oggetti SNMP 30 4.2.1 Connect 31

4.2.2 Get 31 4.2.3 GetNext 32 4.2.4 Set 33 4.2.5 Close 33 4.3 Oggetti File 34 4.3.1 Connect 35 4.3.2 Open 35 4.3.3 Close 36 4.3.4 Read 37 4.3.5 Write 37 4.3.6 WriteLine 38 4.3.7 Seek 38 4.3.8 Elimina 39 4.3.9 Size 40 4.3.10 FileVersion 40 4.3.11 ProductVersion 41 4.3.12 Attributi 42 4.4 Oggetti Registro di sistema 43 4.4.1 Connect 43 4.4.2 Read 44 4.4.3 Write 44 4.4.4 GetFirstValue 45 4.4.5 GetNextValue 46 4.4.6 GetFirstKey 46 4.4.7 GetNextKey 47 4.4.8 DeleteValue 47 4.4.9 DeleteKey 48 4.4.10 48 4.5 Oggetti HTTP 49 4.5.1 Connect 49 4.5.2 GetURL 50 4.5.3 PostURL 51 4.5.4 SendRequest 51 4.5.5 AddHeader 52 4.5.6 ClearRequestHeaders 53 4.5.7 Verb 54 4.5.8 HTTPVersion 54 4.5.9 IP 55 4.5.10 Porta 56 4.5.11 RawResponseHeaders 57 4.5.12 Body 57 4.5.13 ProxyUser 58 4.5.14 ProxyPassword 59 4.5.15 HttpUser 60 4.5.16 HttpPassword 60 4.5.17 ResponseHeaders 61 4.6 Oggetti HTTPHeaders 62

4.6.1 HeaderValue 62 4.6.2 HeaderName 63 4.6.3 Count 64 4.7 Oggetti FTP 65 4.7.1 Connect 65 4.7.2 GetCurrentDirectory 66 4.7.3 SetCurrentDirectory 67 4.7.4 CreateDirectory 67 4.7.5 RemoveDirectory 69 4.7.6 DeleteFiles 70 4.7.7 GetFile 71 4.7.8 PutFile 72 4.7.9 72 4.7.10 RenameFile 74 4.7.11 FindFirstFile 75 4.7.12 FindNextFile 76 4.7.13 GetFindFileName 78 4.7.14 GetFindFileSize 79 4.7.15 LastError 81 4.7.16 81 4.8 Oggetti Encode 81 4.8.1 Base64Encode 82 5 Funzioni generali 84 5.1 Echo 84 5.2 WriteToLog 84 5.3 StatusBar 85 5.4 AddListItem 85 5.5 SetDescription 86 6 Utilizzo di ActiveX, COM e componenti di automazione OLE 87 6.1 Informazioni sui componenti di automazione 87 6.2 di utilizzo di automazione dello script oggetti 88 7 Possibilità di riutilizzo delle librerie e dei codici 90 7.1 Creazione di librerie 90 7.2 Utilizzo delle librerie 90 8 Indice 92

1 Introduzione GFI LanGuard consente agli utenti di scrivere script personalizzati che verificano la presenza di vulnerabilità. Gli script possono dipendere dalla piattaforma o esserne indipendenti. Dipendenti dalla piattaforma (gli script vengono eseguiti sul computer sottoposto a scansione): script di shell UNIX eseguiti tramite SSH. Il computer remoto deve essere un computer UNIX e consentire le connessioni remote tramite SSH Indipendenti dalla piattaforma (gli script vengono eseguiti sul computer in cui è installato GFI LanGuard): script di Visual Basic. Il presente manuale fornisce ampie informazioni relative alla scrittura, al debug e alla configurazione dei controlli di vulnerabilità di Visual Basic Script Python: per ulteriori dettagli, vedere il capitolo di scripting Python del presente manuale. Argomenti 1.1 Vantaggi dell utilizzo di uno script debugger 6 1.2 Funzionalità di GFI LanGuard Script Debugger 6 1.1 Vantaggi dell utilizzo di uno script debugger Il vantaggio nell utilizzo di un editor consiste nella maggior sicurezza e velocità per correggere e creare gli script di lavoro. L utilizzo di un editor assicurerà che lo script sia funzionale, prima di eseguire lo script in un ambiente di lavoro. GFI LanGuard Script Debugger consente di eseguire lo script come in un ambiente di lavoro. GFI LanGuard Script Debugger dispone di tutte le funzionalità comuni trovate in un ambiente di sviluppo integrato. Tre le altre sono incluse: Punti di interruzione Passaggio a Ignora Consente di specificare i parametri per una verifica corretta. Importante L esecuzione dello script in GFI LanGuard senza debug non è consigliata. Se lo script non funziona, non si sarà in grado di identificare l errore dello script. Una codifica errata può inoltre portare a ripetizioni infinite che possono bloccare lo scanner GFI LanGuard. 1.2 Funzionalità di GFI LanGuard Script Debugger Nella tabella seguente sono contenute le funzionalità principali di GFI LanGuard Script Debugger: Funzione Supporto per le espressioni di controllo variabili Funzionalità Passaggio a/ignora Descrizione Monitoraggio in tempo reale dei cambiamenti dei valori delle variabili utilizzate. Consente di eseguire il debug degli script riga per riga monitorando le attività in corso durante l esecuzione dello script. GFI LanGuard 1 Introduzione 6

Funzione Evidenziazione sintassi Messaggi di errore completi Punto di interruzione Esecuzione/debug di script utilizzando credenziali alternative Descrizione Semplificazione nella programmazione degli script e nell individuazione dei problemi. Indica il tipo e la posizione degli errori. Aiuta a rilevare gli errori basati sul tipo di variabile. Il debugger supporta i punti di interruzione che passeranno riga per riga eseguendo il debug in un particolare punto di interesse. Capacità di eseguire il debug dello script ed eseguirlo utilizzando credenziali alternative durante il processo di sviluppo e debug dello script. GFI LanGuard 1 Introduzione 7

2 Visual Basic Script (VBScript) Questo capitolo fornisce le informazioni relative a VBScript e alla modalità di creazione degli script utilizzando GFI LanGuard Script Debugger. Un riferimento completo per il linguaggio di programmazione di Visual Basic utilizzato da GFI LanGuard è disponibile all indirizzo: http://go.gfi.com/?pageid=lan_vbs Argomenti 2.1 Note importanti su VBScript 8 2.2 Funzioni di VBScript supportate da GFI LanGuard 8 2.3 Errori e insidie comuni 9 2.4 Suggerimenti 10 2.5 Sviluppo di uno script in GFI LanGuard Script Debugger 11 2.6 Aggiunta di un nuovo controllo di vulnerabilità basato su script per lo scanner 13 2.1 Note importanti su VBScript In ogni script creato, deve essere presente una funzione denominata Main. GFI LanGuard cercherà la funzione e avvierà l esecuzione dello script partendo da essa. Il valore restituito della funzione Main nel motore di scripting è Booleano (true o false). Il valore restituito viene specificato assegnando il valore del risultato a una variabile che ha lo stesso nome della funzione (esempio: se la funzione è denominata MyFunction, il valore restituito è specificato come MyFunction = true). Il valore restituito viene in genere specificato alla fine della funzione. 'Visualizzazione del testo nella finestra di attività dello scanner echo "Script has run successfully" 'restituzione del risultato Main = true 2.2 Funzioni di VBScript supportate da GFI LanGuard Tutte le funzioni e tutti i metodi di scripting di VBScript sono supportati da GFI LanGuard. Per ulteriori informazioni, utilizzare le risorse di VBScript seguenti: http://go.gfi.com/?pageid=vbs_r1 http://go.gfi.com/?pageid=vbs_r2 http://go.gfi.com/?pageid=vbs_r3 http://go.gfi.com/?pageid=vbs_r4 GFI LanGuard 2 Visual Basic Script (VBScript) 8

2.3 Errori e insidie comuni In VBScript sono disponibili due tipi di variabili: Tipo di variabile Semplice Oggetti Descrizione Le variabili sono di tipo true, ad esempio numero intero, Booleano, stringa. Elementi complessi la cui funzionalità si trova nell interfaccia degli oggetti di automazione. È importante dichiarare i tipi di oggetto di automazione come Object, prima di assegnare loro dei valori. Importante Si raccomanda di assegnare un valore a tutte le variabili e/o a tutti gli oggetti dichiarati. 'dichiarazione dell oggetto da utilizzare Dim namestr As String 'assegnazione di un valore alla variabile namestr = "Questa è un assegnazione prova del testo" 'visualizzazione del risultato nella finestra di attività di assegnazione dello scanner echo namestr 'restituzione del risultato Main = true Per un esempio più avanzato, lo script in basso elencherà i servizi installati nel computer di destinazione (host locale = 127.0.0.1). Copiare e incollare il testo seguente nello script debugger ed eseguirlo (F5). Nella finestra di debug verrà visualizzato l elenco dei servizi installati nel computer locale. Function main 'dichiarazione degli oggetti che dovranno essere utilizzati Dim wmi As Object Dim objswbemobject As Object 'dichiarazione delle altre variabili necessarie Dim strcomputer As String Dim cr As String strcomputer = "127.0.0.1" 'Ritorno a capo cr = Chr(13) + Chr(10) GFI LanGuard 2 Visual Basic Script (VBScript) 9

'hook con l oggetto wmi Set wmi = GetObject("winmgmts:\\" & strcomputer & "\root\cimv2") 'Controllo della riuscita dell hook If wmi is Nothing Then echo ("errore1") 'Restituzione istanza servizi di wmi Set wmiinst=wmi.instancesof("win32_service") 'Controllo per vedere disponibilità dell istanza If wmiinst is Nothing Then echo ("errore2") 'Ciclo true per ogni istanza For Each objswbemobject In wmiinst echo("nome servizio= ") 'Visualizzazione servizi echo(objswbemobject.displayname+cr) Next Nota Se si tenta di utilizzare un oggetto automazione senza dichiarazione, lo script avrà esito negativo durante la compilazione. Come esempio, considerare lo stesso pezzo di codice in cui manca la dichiarazione completa della variabile dell oggetto wmi. Nel momento in cui si tenta di eseguire lo script, verrà visualizzato un messaggio di errore nonché un indicazione chiara della riga su cui si è verificato l errore: Function main Dim wmi 'AVVISO : manca come oggetto Dim objswbemobject As Object 2.4 Suggerimenti Per visualizzare le informazioni sull avanzamento nella finestra Attività scanner (la finestra in basso dello strumento scanner o la finestra in basso a sinistra dello script debugger), utilizzare il comando echo. 'Visualizzazione del testo nella finestra di attività dello scanner GFI LanGuard 2 Visual Basic Script (VBScript) 10

echo "Script has run successfully" 'restituzione del risultato Main = true 2.5 Sviluppo di uno script in GFI LanGuard Script Debugger Questa sezione contiene informazioni relative alla creazione di un VBScript utilizzando GFI LanGuard Script Debugger. Per ulteriori informazioni, fare riferimento a: Creazione di un VBScript Esecuzione di uno script Punti di interruzione del debug - funzionalità Passaggio a Monitoraggio dei valori all interno delle variabili Debug sotto sessioni utente alternative Invio di parametri allo script 2.5.1 Creazione di uno script In questa sezione viene creato uno script. Lo script controlla se il servizio di messaggistica è o meno in esecuzione sul computer locale. Lo script viene sviluppato utilizzando lo script debugger e dimostra alcune delle sue funzionalità. Function main 'dichiarazione degli oggetti che dovranno essere utilizzati Dim wmi As Object Dim objswbemobject As Object 'dichiarazione delle altre variabili necessarie Dim strcomputer As String Dim cr As String strcomputer = "127.0.0.1" 'ritorno a capo cr = Chr(13) + Chr(10) 'hook con l oggetto wmi Set wmi = GetObject("winmgmts:\\" & strcomputer & "\root\cimv2") 'controllo della riuscita dell hook If wmi is Nothing Then echo ("errore1") 'restituzione istanza servizi di wmi Set wmiinst=wmi.instancesof("win32_service") 'controllo per vedere disponibilità dell istanza If wmiinst is Nothing Then echo ("errore2") 'Ciclo true per ogni istanza GFI LanGuard 2 Visual Basic Script (VBScript) 11

For Each objswbemobject In wmiinst If objswbemobject.displayname = "Messenger" Then echo("nome servizio= ") 'Visualizzazione servizi echo(objswbemobject.displayname+cr) echo("stato servizio= ") 'stato visualizzato Next echo(objswbemobject.state+cr) If objswbemobject.state = "Esecuzione" Then main = true If objswbemobject.state = "Esecuzione" Then main = true 2.5.2 Esecuzione di uno script Per eseguire lo script, premere F5 o fare clic su Debug > Go. 2.5.3 Punti di interruzione del debug - funzionalità Passaggio a Lo script debugger consente di sospendere l esecuzione in un punto specifico dello script. Ad esempio, è possibile impostare un punto di interruzione per l esecuzione quando la variabile contenente il nome visualizzato del servizio è Messenger. Per eseguire questa operazione nello script di esempio, passare alla riga 17 ( echo("nome servizio= ") ) e inserire il punto di interruzione (Premere F9) proprio sotto all istruzione "if". Durante l esecuzione utilizzare il tasto F10 (Passaggio a) per eseguire il codice rimanente riga per riga. 2.5.4 Monitoraggio dei valori all interno delle variabili Per monitorare i valori contenuti nelle variabili, è necessario aggiungere un espressione di controllo per la variabile in questione. Per monitorare il contenuto della variabile: 1. Espandere la sezione di stato in basso. 2. Fare clic con il pulsante destro del mouse sulla prima riga libera in alto sotto Variabile. 3. Selezionare Aggiungi espressione di controllo, quindi digitare il nome della variabile che si desidera monitorare. Ripetere il passaggio per aggiungere monitoraggi per più variabili. 4. Per rimuovere un espressione di controllo, fare clic con il pulsante destro del mouse su di essa e selezionare Elimina espressione di controllo. 2.5.5 Debug sotto sessioni utente alternative Per verificare lo script sotto credenziali alternative: 1. Avviare GFI LanGuard Script Debugger 2. Nell elenco a discesa Utilizzo selezionare Credenziali alternative. 3. Digitare un nome utente e una password nelle caselle di testo apposite. GFI LanGuard 2 Visual Basic Script (VBScript) 12

2.5.6 Invio di parametri allo script Lo strumento scanner GFI LanGuard passa i parametri agli script, quando vengono eseguiti. : il nome e l IP del computer di destinazione sottoposto a scansione per la presenza di vulnerabilità. Per poter eseguire il debug degli script, è possibile effettuare una prova con vari tipi di valori per questi parametri. È possibile specificare valori alternativi per questi parametri da Opzioni > Parametri. Per ottenere l accesso a questi parametri negli script, è necessario utilizzare una GFI LanGuard funzione speciale denominata GetParameter a cui passare il nome del parametro che si desidera, ad esempio: Function main 'dichiarazione degli oggetti che dovranno essere utilizzati Dim wmi As Object Dim objswbemobject As Object 'dichiarazione delle altre variabili necessarie Dim strcomputer As String Dim cr As String strcomputer = "127.0.0.1" 'Ritorno a capo cr = Chr(13) + Chr(10) 'hook con l oggetto wmi Set wmi = GetObject("winmgmts:\\" & strcomputer & "\root\cimv2") 'Controllo della riuscita dell hook If wmi is Nothing Then echo ("errore1") 'Restituzione istanza servizi di wmi Set wmiinst=wmi.instancesof("win32_service") 'Controllo per vedere disponibilità dell istanza If wmiinst is Nothing Then echo ("errore2") 'Ciclo true per ogni istanza For Each objswbemobject In wmiinst echo("nome servizio= ") 'Visualizzazione servizi echo(objswbemobject.displayname+cr) Next 2.6 Aggiunta di un nuovo controllo di vulnerabilità basato su script per lo scanner Nell esempio seguente viene descritta la modalità di creazione di un nuovo controllo di vulnerabilità e verrà eseguito uno script per controllare la presenza di nuove vulnerabilità. Lo script visualizza Script eseguito correttamente nella finestra delle attività dello scanner e verrà indicato a GFI LanGuard che è stata rilevata la vulnerabilità e che deve essere segnalata all amministratore. A tal fine: GFI LanGuard 2 Visual Basic Script (VBScript) 13

Passaggio 1 - Creare uno script che controlli la presenza di vulnerabilità (come descritto nella sezione precedente) Passaggio 2 - Creare una nuova vulnerabilità per eseguire lo script 2.6.1 Passaggio 1: Creare uno script che controlli la presenza di vulnerabilità 1. Avviare GFI LanGuard Script Debugger da Start > Tutti i programmi > GFI LanGuard 2012 > GFI LanGuard Script Debugger. 2. Fare clic su File > Nuovo. 3. Incollare il testo seguente nel debugger: echo "Script has run successfully" Main = true 4. Salvare il file nella directory desiderata, esempio c:\myscript.vbs. 2.6.2 Passaggio 2: Creare una nuova vulnerabilità per eseguire lo script 1. Avviare la console di gestione di GFI LanGuard da Start > Tutti i programmi > GFI LanGuard 2012 > GFI LanGuard 2012. 2. Fare clic sul pulsante delle opzioni principali e selezionare Configura > Editor profili di scansione. In alternativa, premere CTRL + P per aprire l Editor profili di scansione. 3. Da Attività comuni fare clic su Nuovo profilo di scansione oppure selezionare il profilo di scansione esistente da modificare. 4. Digitare un nome di profilo e, facoltativamente, una descrizione. 5. (Facoltativo) Selezionare Copia tutte le impostazioni da un profilo esistente e dal menu a discesa Profilo selezionare il profilo di scansione esistente che si desidera duplicare. 6. Fare clic su OK. Nota Il nuovo profilo di scansione viene aggiunto sotto la sezione Profili nel riquadro di sinistra. 7. Selezionare il nuovo profilo di scansione e dal riquadro di destra fare clic su Aggiungi Verrà aperta la finestra di dialogo Aggiungi vulnerabilità. 8. Dalla scheda Generale digitare i dettagli generali, come il nome, il tipo di vulnerabilità e così via. 9. Fare clic sulla scheda Condizioni > Aggiungi. 10. Impostare il tipo di controllo su Controlli indipendenti > Test script VB. Fare clic su Avanti. 11. Specificare la posizione dello script (esempio: <ProductDataDir>\Scripts\newvulnerability.vbs). Fare clic su Avanti. 12. Selezionare l attributo sul quale si desidera impostare la condizione, l operatore corrispondente e il valore dell esecuzione dello script. GFI LanGuard 2 Visual Basic Script (VBScript) 14

Nota Ciascuno script fornisce i valori supportati nella sezione Descrizione. 13. Fare clic su Fine. Il controllo di vulnerabilità viene aggiunto e verrà incluso all elenco delle vulnerabilità controllate alla prossima scansione di un computer. Per la verifica, è sufficiente eseguire la scansione del computer dell host locale (127.0.0.1): verrà visualizzato l avviso di vulnerabilità sotto la sezione Varie del nodo di vulnerabilità dei risultati di scansione. GFI LanGuard 2 Visual Basic Script (VBScript) 15

3 Script Python In questo capitolo vengono fornite le informazioni necessarie alla creazione e all esecuzione degli script Python. A partire dalla versione 9.0, GFI LanGuard supporta i controlli di vulnerabilità basati su Python. Questo tipo di controllo è disponibile nel tipo Controlli indipendenti. Argomenti 3.1 Descrizione del linguaggio dello script Python. 16 3.2 Creazione di un nuovo controllo di vulnerabilità utilizzando Test script Python 16 3.3 API (Application Programming Interfaces) disponibili negli script Python 17 3.4 Debug degli script Python 20 3.5 Possibilità di riutilizzo dei codici e delle librerie Python 20 3.1 Descrizione del linguaggio dello script Python. Python è un linguaggio di programmazione interpretato creato da Guido van Rossum nel 1990. Python viene completamente digitato in modo dinamico e utilizza la gestione di memoria automatica. Un elemento importante da ricordare è che il codice sorgente di Python utilizza l indentazione invece che la punteggiatura o le parole chiave per indicare l esecuzione di un blocco. di una funzione fattoriale in Python: def factorial(x): if x == 0: else: return 1 return x * factorial(x-1) 3.2 Creazione di un nuovo controllo di vulnerabilità utilizzando Test script Python Per creare i test script Python, è necessario: Passaggio 1: Creazione script Passaggio 2: Creazione del nuovo controllo di vulnerabilità 3.2.1 Passaggio 1: Creazione script 1. Avviare GFI LanGuard Script Debugger da Start > Tutti i programmi > GFI LanGuard 2012 > GFI LanGuard Script Debugger. 2. Fare clic su File > Nuovo. 3. Copiare e incollare lo script seguente nello script debugger: #PythonSuccessfullCheck.py """ Per i dettagli, vedere il file <ProductDataDir>\Scripts\lpy.py. """ def main(): """Valori restituiti: GFI LanGuard 3 Script Python 16

* 0 - false, non riuscito * 1 - true, riuscito""" result = 0 #Inserire il codice qui... result = 1 return(result) 4. Salvare lo script nella posizione desiderata. 3.2.2 Passaggio 2: Creazione del nuovo controllo di vulnerabilità 1. Avviare la console di gestione di GFI LanGuard da Start > Tutti i programmi > GFI LanGuard 2012 > GFI LanGuard 2012. 2. Fare clic sul pulsante delle opzioni principali e selezionare Configura > Editor profili di scansione. In alternativa, premere CTRL + P per aprire l Editor profili di scansione. 3. Da Attività comuni fare clic su Nuovo profilo di scansione oppure selezionare il profilo di scansione esistente da modificare. 4. Dall Editor profili di scansione fare clic su Opzioni di valutazione delle vulnerabilità > Vulnerabilità. 5. Dall elenco del tipo di vulnerabilità espandere Vulnerabilità e selezionare Varie. Fare clic su Aggiungi. Viene aperta la finestra di dialogo Aggiungi vulnerabilità. 6. Dalla scheda Generale digitare le informazioni generali come nome, tipo e descrizione della nuova vulnerabilità. 7. Fare clic sulla scheda Condizioni > Aggiungi. 8. Selezionare Controlli indipendenti > Test script Python indipendente. Fare clic su Avanti. 9. Specificare la posizione dello script (esempio: <ProductDataDir>\Scripts\newvulnerability.vbs). (Caricare lo script creato al Passaggio 1: Creare uno script che controlli la presenza di vulnerabilità). 10. Dal menu a discesa selezionare il numero di oggetti che devono corrispondere affinché la condizione restituisca TRUE. Fare clic su Avanti. 11. Nella casella di modifica Valore specificare il valore restituito dallo script Python quando viene rilevata la vulnerabilità. Nota Ciascuno script fornisce i valori supportati nella sezione Descrizione. 12. Fare clic su Fine. 3.3 API (Application Programming Interfaces) disponibili negli script Python GFI LanGuard presenta quasi tutta l implementazione predefinita Python (denominato anche CPython, disponibile in http://go.gfi.com/?pageid=pythorg). Attualmente viene utilizzato Python versione 2.5. La maggior parte degli script Python esistenti funziona pertanto con modifiche minime in GFI LanGuard. La modifica più importante è che gli script devono avere una funzione main() che restituisce 1 o 0. GFI LanGuard 3 Script Python 17

Tutti gli script Python utilizzati dai moduli dello scanner di sicurezza (controlli di vulnerabilità e informazioni sulle applicazioni di sicurezza) dispongono dell accesso alle variabili globali seguenti: ComputerIP ComputerName LNSSDir localprogramfilespath localwindowspath localsystem32path User Password ComputerIP = '127.0.0.1' ComputerName = 'WXPSandbox" LNSSDir = 'C:\\Programmi\\GFI\\LanGuard 2011\\' localprogramfilespath = 'C:\\\Programmi' localwindowspath = 'C:\\WINDOWS' localsystem32path = 'C:\\WINDOWS\\system32' User = '' Password = '' Utilizzare queste variabili globali per ottenere l accesso al nome o all indirizzo IP del computer sottoposto a scansione, ovvero le credenziali necessarie per la connessione al computer sottoposto a scansione. Le funzioni globali di GFI LanGuard sono disponibili per gli script Python come metodi dell oggetto GlobalFunctions. I.E: # Utilizzo delle funzioni globali. def main(): """Valori restituiti: * 0 - false, non riuscito * 1 - true, riuscito""" result = 0 # Visualizzazione testo. GlobalFunctions.echo("Salve!") # Aggiunge testo specificato al file di registro. GlobalFunctions.writetolog("Script Python avviato.") # Aggiunge testo specificato alla barra di stato. GlobalFunctions.statusbar("Barra di stato Salve!") # Aggiunge un nodo secondario con lo stesso nome del secondo parametro alla vulnerabilità corrente. GlobalFunctions.addlistitem("", "Descrizione vulnerabilità.") GFI LanGuard 3 Script Python 18

# Modifica la descrizione della vulnerabilità corrente. GlobalFunctions.setdescription("Elenco degli elementi installati") GlobalFunctions.writetolog("Script Python terminato.") result = 1 return(result) GFI LanGuard fornisce anche l API client COM per gli script Python in formato pywin32. Nota Tutte le librerie di script COM GFI LanGuard sono disponibili tramite win32com.client per gli script Python. Per ulteriori informazioni, fare riferimento a Oggetti scripting (pagina 22). # Ricerca DNS utilizzando l oggetto LanGuard COM GlbObj.Socket. def main(): """Valori restituiti: * 0 - false, non riuscito * 1 - true, riuscito""" result = 0 import win32com.client socket = win32com.client.dispatch("glbobj.socket.1") print(socket.dnslookup('gfi.com')) result = 1 3.3.1 Pywin32 return(result) # Salve mondo per pywin32. def main(): """Valori restituiti: * 0 - false, non riuscito * 1 - true, riuscito""" result = 0 import win32com.client strcomputer = "." objwmiservice = win32com.client.dispatch ("WbemScripting.SWbemLocator") objswbemservices = objwmiservice.connectserver(strcomputer, "root\cimv2") colitems = objswbemservices.execquery("select * from Win32_ PhysicalMemory") GFI LanGuard 3 Script Python 19

for objitem in colitems: print("capacità: %s\n" % objitem.capacity) result = 1 return(result) Nota Per la documentazione aggiuntiva Pywin32, fare riferimento a: http://go.gfi.com/?pageid=pywin32 http://go.gfi.com/?pageid=pythres 3.4 Debug degli script Python GFI LanGuard Script Debugger non supporta il debug degli script Python. Qualsiasi IDE Python, debugger o interprete della riga di comando che esegua gli script Python utilizzando la versione Python 2.5 attualmente supportata e le distribuzioni pywin32 per Windows può facilitare la correzione degli script Python per GFI LanGuard. Alcuni IDE Python o interpreti utili all editing e al debug degli script Python sono: PythonWin Winpdb SPE IDE - Python Editor IDLE e l interprete Python incluso per impostazione predefinita insieme alla distribuzione Python. Gli script Python possono essere eseguiti e sottoposti a debug in un ambiente simile a GFI LanGuard, eseguendo gli script utilizzando il file lpy.py disponibile nella cartella degli script di GFI LanGuard: C:\ProgramData\GFI\LanGuard11\Scripts <Python25Folder>\python.exe "<ProductDataDir>\Scripts\lpy.py" <NameOfPythonScriptFileToTest> 3.5 Possibilità di riutilizzo dei codici e delle librerie Python Python consente di creare le librerie delle funzioni comunemente utilizzate all interno degli script. Queste librerie raggruppano funzioni comuni e possono essere utilizzate più volte da molti script. Questa sezione contiene informazioni relative a: Creazione di una libreria Utilizzo delle librerie 3.5.1 Creazione di una libreria Creare un file di script Python che definisce le funzioni o gli oggetti Python. Copiare il file in <directory LanGuard principale>\library, esempio: C:\Programmi\GFI\LanGuard 11 Agent di file della libreria """ Salve mondo libreria Python. GFI LanGuard 3 Script Python 20

Copiare il file in <LanGuard InstallDir>\Library. """ def EchoString(text): """Stampa il testo specificato.""" GlobalFunctions.echo(text) print(text) 3.5.2 Utilizzo delle librerie Per utilizzare una libreria Python creata in precedenza, importarla utilizzando il meccanismo di importazione Python standard. di utilizzo della libreria in alto """ LibraryTester.py Richiede che il file EchoLibrary.py sia nella directory <LanGuard InstallDir>\Library. """ def main(): """Valori restituiti: * 0 - false, non riuscito * 1 - true, riuscito""" result = 0 from EchoLibrary import EchoString EchoString("Controllo di vulnerabilità riuscito.") result = 1 return(result) GFI LanGuard 3 Script Python 21

4 Oggetti scripting Questo capitolo fornisce le informazioni sui diversi oggetti e funzioni supportati da GFI LanGuard Script Debugger che possono essere indirizzati dagli script. Argomenti 4.1 Oggetti Socket 22 4.2 Oggetti SNMP 30 4.3 Oggetti File 34 4.4 Oggetti Registro di sistema 43 4.5 Oggetti HTTP 49 4.6 Oggetti HTTPHeaders 62 4.7 Oggetti FTP 65 4.8 Oggetti Encode 81 4.1 Oggetti Socket L oggetto Socket viene utilizzato per consentire la comunicazione con i server TCP e i socket UDP. Supporta varie funzionalità quali i timeout configurabili, le ricerche DNS e anche le ricerche DNS inverse. L oggetto Socket gestisce inoltre vari tipi di dati nelle operazioni di invio e ricezione. Può gestire sia stringhe che dati binari non elaborati. Le stringhe vengono gestite utilizzando variabili di stringhe normali e i dati binari vengono gestiti utilizzando matrici di byte. La funzione di ricezione (denominata recv) accetta anche un parametro che indica a quale tipo di dati restituire. In questo modo l utente può specificare se desidera ricevere i dati come stringa o binari. In questa sezione vengono fornite le informazioni sugli oggetti Socket seguenti: OpenTcp OpenUdp Close Recv Send SendTo SetTimeout DnsLookup ReverseDnsLookup 4.1.1 OpenTcp OpenTcp viene utilizzato per stabilire una connessione con un server remoto utilizzando TCP. OpenTcp(ip, port) GFI LanGuard 4 Oggetti scripting 22

Oggetto Socket. Lo script visualizza il banner di un server ftp in esecuzione locale. Può funzionare con qualsiasi server ftp modificando il valore della variabile "ip": Dim SocketObject As Object Dim ip As String Dim port As String Dim strresponse As String Ip = "127.0.0.1" Port = "21" Socket.SetTimeout 5000,5000 Set SocketObject = Socket.OpenTcp(Ip,Port) If Not SocketObject is Nothing Then 'controllo per vedere la restituzione completata di Object strresponse = SocketObject.Recv(1024) echo(strresponse) SocketObject.Close 4.1.2 OpenUdp OpenUdp viene utilizzato per stabilire una connessione con un server remoto utilizzando UDP. OpenUdp() Oggetto Socket. Lo script si connette con un server DNS, specificato dalla variabile IP ed esegue una query per www.gfi.com, quindi visualizza il risultato: Dim SocketObject As Object Dim ip As String Dim port As String Dim rawdata As Variant Dim Response As Variant Ip = "172.16.130.40" GFI LanGuard 4 Oggetti scripting 23

Port = "53" strrequest="www.gfi.com" rawdata = Array(0,3,1,0,0,1,0,0,0,0,0,0,3,&H77, &H77, &H77, &H03, &H67, &H66, &H69, &H03, &H63, &H6F,&H6D, 0,0,1,0,1) '^^^^^^^^^^ 'Questa parte è l intestazione del pacchetto della nostra richiesta, include le informazioni come ad esempio i contrassegni '^^^^^^^^^^ 'Questa è la richiesta, www.gfi.com, tenere presente che '.' sono 'rappresentati come &H03 invece di &H2E '^^^^^^^^^^ 'Questa è l intestazione End del nostro pacchetto Set SocketObject = Socket.OpenUdp() If Not SocketObject is Nothing Then 'controllo per vedere la restituzione completata di Object SocketObject.SendTo IP,port,rawdata Response = SocketObject.Recv(1024) For a = UBound(response)-3 To UBound(response) echo(response(a)) If a <> UBound(response) Then echo(".") Next a SocketObject.Close 4.1.3 Close Close viene utilizzato per liberare l oggetto socket assegnato in precedenza. Close Nessun dato restituito. Lo script visualizza il banner di un server ftp in esecuzione locale. Può funzionare con qualsiasi server ftp modificando il valore della variabile "ip": Dim SocketObject As Object Dim ip As String GFI LanGuard 4 Oggetti scripting 24

Dim port As String Dim strresponse As String Ip = "127.0.0.1" Port = "21" Socket.SetTimeout 5000,5000 Set SocketObject = Socket.OpenTcp(Ip,Port) If Not SocketObject is Nothing Then 'controllo per vedere la restituzione completata di Object strresponse = SocketObject.Recv(1024) echo(strresponse) SocketObject.Close 4.1.4 Recv Recv viene utilizzato per recuperare i dati da un socket (utilizzato per le trasmissioni TCP e UDP). Recv(SizeInBytes, [DataType]) Ulteriori informazioni Il parametro SizeInBytes specifica quanto verrà restituito del buffer. Il parametro facoltativo DataType può essere utilizzato per specificare il formato in cui il buffer deve essere restituito. Se non viene specificato alcun elemento, il buffer viene analizzato e il parametro DataType corretto impostato di conseguenza. Le opzioni possibili per il parametro DataType sono le seguenti: 0: restituisce il buffer come matrice di byte (ideale per i dati non elaborati) 1: restituisce il buffer come stringa (ideale se si sa che il buffer è composto da testo non elaborato) 2: restituisce il buffer come stringa, converte i caratteri non stampabili in. Ideale se si sa che il buffer è mescolato tra testo normale e caratteri speciali ma quando si è interessati solo alla parte del testo normale. Stringa o matrice di byte. Lo script visualizza il banner di un server ftp in esecuzione locale. Può funzionare con qualsiasi server ftp modificando il valore della variabile "ip": Dim SocketObject As Object Dim ip As String Dim port As String GFI LanGuard 4 Oggetti scripting 25

Dim strresponse As String Ip = "127.0.0.1" Port = "21" Socket.SetTimeout 5000,5000 Set SocketObject = Socket.OpenTcp(Ip,Port) If Not SocketObject is Nothing Then 'controllo per vedere la restituzione completata di Object strresponse = SocketObject.Recv(1024) echo(strresponse) SocketObject.Close 4.1.5 Send Send viene utilizzato per inviare i dati al socket corrente aperto tramite una connessione TCP. Send (data, [SizeInBytes]) La quantità effettiva di byte inviati. Ulteriori informazioni La funzione Send può essere utilizzata solo con un oggetto Socket aperto su una connessione TCP. Per inviare i dati tramite una connessione UDP, vedere altri dettagli sulla funzione SendTo nel documento. La funzione Send accetta un parametro facoltativo (SizeInBytes) che specifica la quantità di buffer passata al campo dei dati che verrà effettivamente inviata. Se questo parametro facoltativo viene omesso, viene calcolata automaticamente la dimensione. Lo Script visualizza la pagina predefinita in html non elaborato di un server web eseguito localmente. Lo script può essere utilizzato per funzionare con qualsiasi server web modificando semplicemente il valore della variabile "ip": Dim SocketObject As Object Dim ip As String Dim port As String Dim req As String Dim strresponse As String Ip = "172.16.130.112" Porta = "80" req = "GET / HTTP/1.0" GFI LanGuard 4 Oggetti scripting 26

'ritorno a capo e avanzamento riga cr = Chr(13) + Chr(10) req = CStr(req +cr +cr) Socket.SetTimeout 5000,5000 Set SocketObject = Socket.OpenTcp(Ip,Port) 'controllo per vedere la restituzione completata di Object If Not SocketObject is Nothing Then SocketObject.Send(CStr(req)) strresponse = SocketObject.Recv(1024) While Len(CStr(strResponse)) <> 0 echo(strresponse) StrResponse = SocketObject.Recv(1024) Wend echo(strresponse) 4.1.6 SendTo SendTo viene utilizzato per inviare i dati al socket corrente aperto tramite una connessione UDP. SendTo (ip, port, data, [SizeInBytes]) La quantità di byte effettiva inviati. Ulteriori informazioni La funzione SendTo può essere utilizzata solo con un oggetto Socket aperto su una connessione UDP, per inviare i dati tramite una connessione TCP controllare la funzione Send descritta in precedenza nel documento. La funzione SendTo accetta un parametro facoltativo (SizeInBytes) che specifica la quantità di buffer passata al campo dei dati che verrà effettivamente inviata. Se questo parametro facoltativo viene omesso, viene calcolata automaticamente la dimensione. Lo script si connette con un server DNS, specificato dalla variabile IP ed esegue una query per www.gfi.com, quindi visualizza il risultato: Dim SocketObject As Object Dim ip As String Dim port As String Dim rawdata As Variant Dim Response As Variant GFI LanGuard 4 Oggetti scripting 27

Ip = "172.16.130.40" Port = "53" strrequest="www.gfi.com" rawdata = Array(0,3,1,0,0,1,0,0,0,0,0,0,3, &H77, &H77, &H77, &H03, &H67, &H66, &H69, &H03, &H63, &H6F,&H6D, 0,0,1,0,1) Set SocketObject = Socket.OpenUdp() If Not SocketObject is Nothing Then 'controllo per vedere la restituzione completata di Object SocketObject.SendTo IP,port,rawdata Response = SocketObject.Recv(1024) For a = UBound(response)-3 To UBound(response) echo(response(a)) If a <> UBound(response) Then echo(".") Next a SocketObject.Close 4.1.7 SetTimeout Il timeout predefinito per l invio/la ricezione dei dati è 2 secondi. SetTimeout viene utilizzato per impostare un timeout diverso sia per inviare che per ricevere i dati. SetTimeout(SendTimeout, RecieveTimeout) Nessun dato restituito. Ulteriori informazioni SetTimeout deve essere impostato prima di impostare l oggetto che verrà utilizzato per l invio e la ricezione. I parametri passati per i timeout sono espressi in millisecondi. Se viene passato -1 come un valore, verrà utilizzato il valore impostato correntemente. Lo script visualizza il banner di un server ftp in esecuzione locale. Può funzionare con qualsiasi server ftp modificando il valore della variabile "ip": Dim SocketObject As Object Dim ip As String Dim port As String Dim strresponse As String GFI LanGuard 4 Oggetti scripting 28

Ip = "127.0.0.1" Port = "21" Socket.SetTimeout 5000,5000 Set SocketObject = Socket.OpenTcp(Ip,Port) If Not SocketObject is Nothing Then 'controllo per vedere la restituzione completata di Object strresponse = SocketObject.Recv(1024) echo(strresponse) SocketObject.Close 4.1.8 DnsLookup DnsLookup viene utilizzato per risolvere i nomi host negli indirizzi IP. Questa funzione viene utilizzata principalmente quando si desidera connettersi ai server e non si conosce l IP relativo. DnsLookup(hostname) String (IP Address). Ricerca DNS molto semplice e invertita: Dim SocketObject As Object Dim ServerName As String Dim IP As String Dim ResolvedName As String 'Ritorno a capo e avanzamento riga cr = Chr(13) + Chr(10) ServerName = "whois.networksolutions.com" echo("risoluzione"+cr) Socket.SetTimeout 5000,5000 ip = socket.dnslookup(servername) echo(servername + " risolve nell indirizzo IP:"+cr ) echo(ip +cr) ResolvedName = Socket.ReverseDnsLookup(ip) echo(cr) echo("indirizzo IP "+ip+ " risolve in "+cr) echo(resolvedname+cr) GFI LanGuard 4 Oggetti scripting 29

4.1.9 ReverseDnsLookup ReverseDnsLookup viene utilizzato per risolvere gli indirizzi IP in nomi host. ReverseDnsLookup(IP) Stringa contenente il nome host restituito. Ricerca DNS molto semplice e invertita: Dim SocketObject As Object Dim ServerName As String Dim IP As String Dim ResolvedName As String 'Ritorno a capo e avanzamento riga cr = Chr(13) + Chr(10) ServerName = "whois.networksolutions.com" echo("risoluzione"+cr) Socket.SetTimeout 5000,5000 ip = socket.dnslookup(servername) echo(servername + " risolve nell indirizzo IP:"+cr ) echo(ip +cr) ResolvedName = Socket.ReverseDnsLookup(ip) echo(cr) echo("indirizzo IP "+ip+ " risolve in "+cr) echo(resolvedname+cr) 4.2 Oggetti SNMP L oggetto SNMP consente agli utenti di connettersi all SNMP per la query e l impostazione dei valori. L oggetto consente anche l enumerazione di OID (Object Identifiers). SNMP viene generalmente utilizzato per recuperare le informazioni del sistema su un servizio o un dispositivo. Vari dispositivi presentano inoltre i server SNMP. Se si utilizza pertanto l oggetto, è possibile eseguire la query di varie proprietà di questi dispositivi e dedurre possibili problemi di sicurezza/debolezze/configurazioni errate per i dispositivi. In questa sezione vengono fornite le informazioni sugli oggetti SNMP seguenti: GFI LanGuard 4 Oggetti scripting 30

Connect Get GetNext Set Close 4.2.1 Connect Connect viene utilizzato per stabilire una connessione con un server remoto e restituirgli un oggetto SNMP. Connect(ip, community_string) Oggetto SNMP. Client SNMP molto semplice che recupera SysName da un computer con un server SNMP installato: Dim snmp1 As Object 'Ritorno a capo e avanzamento riga cr = Chr(13) + Chr(10) Set snmp1 = SNMP.Connect("127.0.0.1", "pubblico") 'OID di sysname Val1 = "1.3.6.1.2.1.1.5.0" 'OID dell Object dei sistemi root = "1.3.6.1.2.1.1." snmp1.get Val1 echo "Oid: '"+Val1 + "'"+cr echo "Valore: '"+snmp1.get(val1)+"'"+cr snmp1.close 4.2.2 Get Get viene utilizzato per recuperare la stringa corrispondente nell OID specificato. Get (oid) Stringa. GFI LanGuard 4 Oggetti scripting 31

Client SNMP molto semplice che recupera SysName da un computer con un server SNMP installato: Dim snmp1 As Object 'Ritorno a capo e avanzamento riga cr = Chr(13) + Chr(10) Set snmp1 = SNMP.Connect("127.0.0.1", "pubblico") 'OID di sysname Val1 = "1.3.6.1.2.1.1.5.0" 'OID dell Object dei sistemi root = "1.3.6.1.2.1.1." snmp1.get Val1 echo "Oid: '"+Val1 + "'"+cr echo "Valore: '"+snmp1.get(val1)+"'"+cr snmp1.close 4.2.3 GetNext GetNext viene utilizzato per recuperare la stringa corrispondente nell OID specificato. GetNext (oid) Stringa. Client SNMP molto semplice che recupera tutte le stringhe relative all oggetto sistema da un computer in cui è installato un server SNMP. Le informazioni non elaborate, ad esempio, tempo di attività OID 1.3.5.1.2.1.1.3.0, sono visualizzate come centinaia di un secondo: Dim snmp1 As Object 'Ritorno a capo e avanzamento riga cr = Chr(13) + Chr(10) Set snmp1 = SNMP.Connect("127.0.0.1", "pubblico") 'OID di sysname Val1 = "1.3.6.1.2.1.1.1.0" 'OID dell Object dei sistemi root = "1.3.6.1.2.1.1." 'snmp1.get Val1 While Val1 <> ""' GFI LanGuard 4 Oggetti scripting 32

echo "Oid: '"+Val1 + "'"+cr echo "Valore: '"+snmp1.get(val1)+"'"+cr Val1 = snmp1.getnext(val1) If InStr(Val1, root) <> 1 Then Val1 ="" Wend snmp1.close 4.2.4 Set Set viene utilizzato per impostare il valore di un OID specificato. Set (oid, String) True se riuscito, altrimenti false. Il client SNMP semplice che imposta la syslocation di un computer in cui è installato un server SNMP su Malta. Tenere presente che per impostazione predefinita lo script avrà sempre esito negativo poiché in genere la comunità pubblica è impostata sulla sola lettura: Dim snmp1 As Object 'Ritorno a capo e avanzamento riga cr = Chr(13) + Chr(10) Set snmp1 = SNMP.Connect("127.0.0.1", "pubblico") 'OID di sysname Val1 = "1.3.6.1.2.1.1.6.0" root = "1.3.6.1.2.1.1."'OID dell oggetto sistemi If snmp1.set(val1, "Malta") = true Then echo("valore impostato correttamente") Else echo("impossibile impostare valore") snmp1.close 4.2.5 Close Close viene utilizzato per chiudere una sessione SNMP aperta. Close GFI LanGuard 4 Oggetti scripting 33

Nessun dato restituito. Client SNMP molto semplice che recupera SysName da un computer con un server SNMP installato: Dim snmp1 As Object 'Ritorno a capo e avanzamento riga cr = Chr(13) + Chr(10) Set snmp1 = SNMP.Connect("127.0.0.1", "pubblico") 'OID di sysname Val1 = "1.3.6.1.2.1.1.5.0" 'OID dell Object dei sistemi root = "1.3.6.1.2.1.1." snmp1.get Val1 echo "Oid: '"+Val1 + "'"+cr echo "Valore: '"+snmp1.get(val1)+"'"+cr snmp1.close 4.3 Oggetti File L oggetto File consente all utente di aprire i file sia in remoto che localmente e di eseguire le operazioni di lettura e scrittura su di essi. I file possono essere aperti in varie modalità che vanno dalla creazione di un nuovo file all apertura di uno esistente e all eliminazione del contenuto relativo. I file possono inoltre essere aperti per la lettura, la scrittura e solo in modalità query (ovvero è possibile controllare la dimensione dei file e gli attributi senza poter scrivere o leggere dal file). Oltre alle operazioni di scrittura e lettura l oggetto File supporta anche le comuni operazioni eseguite sui file quali la verifica della dimensione del file, la ricerca e gli attributi. Questa sezione contiene informazioni relative agli oggetti File seguenti: Connect Open Close Read Write WriteLine Seek Elimina Size FileVersion GFI LanGuard 4 Oggetti scripting 34

ProductVersion Attributi 4.3.1 Connect Connect viene utilizzato per connettersi a un computer (locale o remoto) su cui si desidera aprire i file. Connect (IP or NetBIOS name) Oggetto File. Questo script apre un file (test.txt) sull unità C locale e scrive due righe in esso: Dim textfile As Object Set textfile = File.Connect("127.0.0.1") If textfile.open("c:\test.txt", GENERIC_WRITE, CREATE_ALWAYS) Then textfile.writeline("salve, questo è un file di testo") textfile.writeline("creato con lo script GFI LanGuard") textfile.close 4.3.2 Open Apre un file per la lettura o la scrittura. Open (Filename, mode, disposition) True se l operazione Open ha esito positivo, altrimenti False. Ulteriori informazioni Modalità: 0: il file viene aperto in modalità di accesso query, è possibile eseguire una query degli attributi ma non è possibile accedere al file GFI LanGuard 4 Oggetti scripting 35

GENERIC_READ: apre il file per la lettura GENERIC_WRITE: apre il file per la scrittura Disposizione CREATE_NEW: crea un nuovo file. La funzione non riesce se il file specificato esiste già. CREATE_ALWAYS: crea un nuovo file. La funzione sovrascrive il file, se esistente. OPEN_EXISTING: apre il file. La funzione non riesce se il file non esiste. OPEN_ALWAYS: apre il file, se esistente. Se il file non esiste, la funzione lo crea. TRUNCATE_EXISTING: apre il file. Una volta aperto, il file viene troncato in modo che la dimensione equivalga a zero byte. Questo script apre un file (test.txt) sull unità C locale e scrive due righe in esso: Dim textfile As Object Set textfile = File.Connect("127.0.0.1") If textfile.open("c:\test.txt", GENERIC_WRITE, CREATE_ALWAYS) Then textfile.writeline("salve, questo è un file di testo") textfile.writeline("creato con lo script GFI LanGuard") textfile.close 4.3.3 Close Close viene utilizzato per chiudere un istanza di un file aperto. Close Nessun dato restituito. Questo script apre un file (test.txt) sull unità C locale e scrive due righe in esso: Dim textfile As Object Set textfile = File.Connect("127.0.0.1") If textfile.open("c:\test.txt", GENERIC_WRITE, CREATE_ALWAYS) Then textfile.writeline("salve, questo è un file di testo") textfile.writeline("creato con lo script GFI LanGuard") textfile.close GFI LanGuard 4 Oggetti scripting 36

4.3.4 Read Read viene utilizzato per leggere una stringa di lunghezza (x) da un file di testo. Read(number_of_bytes, [DataType]) Stringa. Ulteriori informazioni DataType è un parametro facoltativo. Se omesso, il tipo di dati corretto verrà rilevato automaticamente dal sistema. Le opzioni possibili per il parametro DataType sono le seguenti: 0: restituisce il buffer come matrice di byte (ideale per i dati non elaborati). 1: restituisce il buffer come stringa (ideale se si sa che il buffer è composto da testo non elaborato) 2: restituisce il buffer come stringa, i caratteri non stampabili vengono ignorati. È ideale se si sa che il buffer è mescolato tra testo normale e caratteri speciali ma se si è interessati solo alla parte del testo normale. Lo script visualizza il contenuto del file host: Dim textfile As Object Set textfile = File.Connect("127.0.0.1") If textfile.open("c:\windows\system32\drivers\etc\hosts", GENERIC_ READ, Open_Existing) Then echo(textfile.read(1024,1)) textfile.close 4.3.5 Write Write viene utilizzato per scrivere una stringa in un file senza aggiungere un CRLF (ritorno a capo avanzamento riga) alla fine della stringa fornita. Write(string, [number_of_bytes]) Nessun dato restituito. GFI LanGuard 4 Oggetti scripting 37

Ulteriori informazioni Number_of_bytes è un parametro facoltativo. Se omesso, il suo valore verrà calcolato automaticamente in base alla dimensione della stringa passata. Questo script apre un file (test.txt) sull unità C locale e scrive due righe in esso: Dim textfile As Object Set textfile = File.Connect("127.0.0.1") If textfile.open("c:\test.txt", GENERIC_WRITE, CREATE_ALWAYS) Then textfile.writeline("salve, questo è un file di testo") textfile.writeline("creato con lo script GFI LanGuard") textfile.close 4.3.6 WriteLine WriteLine viene utilizzato per scrivere una stringa in un file senza aggiungere un CRLF (ritorno a capo avanzamento riga) alla fine della stringa fornita. WriteLine(string) Valore booleano: True (diverso da zero) se l operazione Write è riuscita, altrimenti False (zero). Questo script apre un file (test.txt) sull unità C locale e scrive due righe in esso: Dim textfile As Object Set textfile = File.Connect("127.0.0.1") If textfile.open("c:\test.txt", GENERIC_WRITE, CREATE_ALWAYS) Then textfile.writeline("salve, questo è un file di testo") textfile.writeline("creato con lo script GFI LanGuard") textfile.close 4.3.7 Seek Seek viene utilizzato per gli spostamenti in una posizione alternativa del file (da cui è possibile leggere o scrivere). GFI LanGuard 4 Oggetti scripting 38