[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 189.   Verifica della vulnerabilità della propria rete

Sono disponibili alcuni applicativi in grado di sondare una rete, o un elaboratore singolo, alla ricerca di informazioni e di problemi noti che possono consentire a un aggressore di compiere delle azioni indesiderabili.

I programmi di questo tipo sono strumenti di aggressione, ma lo scopo dovrebbe essere quello di aiutare gli amministratori a prevenire problemi nella sicurezza della rete di propria competenza. Di conseguenza, tali programmi vanno utilizzati esclusivamente contro sistemi che rientrano nella propria gestione, o per i quali è stata ottenuta l'autorizzazione a farlo.

L'utilizzo di questo genere di programmi lascia generalmente delle tracce nel registro del sistema del nodo analizzato, pertanto queste azioni potrebbero anche essere considerate un'attività ostile e scatenare la reazione degli amministratori rispettivi.

189.1   Queso

Queso, (1) è un programma che, attraverso l'invio di pacchetti TCP a una porta qualunque (purché ci sia qualcosa in ascolto) di un certo nodo, cerca di determinarne il sistema operativo. Teoricamente, la scelta della porta è indifferente, purché si tratti di una porta presso cui sia disponibile un servizio in ascolto; comunque, se non viene specificata si fa riferimento alla numero 80.

queso [opzioni] indirizzo_ipv4[/n][:porta]

L'indirizzo, se è seguito da una barra obliqua e da un numero, rappresenta un gruppo di nodi da sondare, dove ciò che segue la barra obliqua è la maschera di rete espressa come quantità di bit a uno da considerare nell'indirizzo. Se l'indirizzo è seguito da due punti e un numero, si intende fare riferimento esplicito a una certa porta da usare per le prove.

Queso ha la necessità di funzionare con i privilegi dell'utente root.

Segue la descrizione di alcuni esempi:

Le informazioni in base alle quali è possibile individuare di che tipo di sistema operativo si tratta, sono contenute nel file di configurazione, che corrisponde a /etc/queso.conf. Si comprende intuitivamente come è organizzato questo file, osservando quanto già contiene; se si incontra un tipo di risposta imprevisto, si può aggiornare il file configurazione con l'opzione -w, andando poi a ritoccare l'annotazione aggiunta con la descrizione del sistema, che si presume conoscere per altre vie:


*- Unknown OS @ 192.168.1.1:80
0 1 +1 1 SA
1 0 0 0 R
2 - - - -
3 0 0 0 R
4 1 +1 1 SA
5 - - - -
6 1 +1 1 SA

L'esempio rappresenta ciò che si può ottenere in questi casi, in coda al file. È sufficiente modificare la prima riga, in un modo simile a quello seguente:


*- GNU/Linux, kernel 2.4.19
0 1 +1 1 SA
1 0 0 0 R
2 - - - -
3 0 0 0 R
4 1 +1 1 SA
5 - - - -
6 1 +1 1 SA

189.2   Raccess

Raccess, (2) ovvero Remote Access Session, è un programma molto semplice per la scansione di un elaboratore o di una rete di elaboratori, alla ricerca di problemi. Il suo utilizzo è molto semplice:

raccess [opzioni] nodo

raccess [opzioni] -n indirizzo_ipv4/n

L'uso normale di Raccess prevede di sondare un solo nodo, mentre l'opzione -n consente di indicare un indirizzo IPv4 seguito dalla maschera di rete espressa come quantità di bit iniziali da considerare. Se Raccess si avvia con l'opzione -s si ottiene la verifica dei servizi di rete disponibili, senza la ricerca di difetti specifici insiti in una certa versione di un certo servizio.

Segue la descrizione di alcuni esempi.

Il funzionamento di Raccess richiede comunque una forma di interazione con l'utente; in particolare, al termine dell'analisi di ogni nodo, viene chiesto se conservare o cancellare il file contenente il rapporto generato. Questo file viene creato nella directory corrente, con un nome corrispondente all'indirizzo dell'elaboratore sondato. Per esempio, il file 192.168.1.2 contiene le notizie raccolte a proposito del nodo che ha lo stesso indirizzo. Ecco come si può presentare il contenuto di questo file:


---------192.168.1.2 Report--------

--Service ssh Port 22 opened!!--
SSH-1.99-OpenSSH_3.4p1 Debian 1:3.4p1-2.1

--Service telnet Port 23 opened!!--
--Service smtp Port 25 opened!!--
220 roggen.brot.dg ESMTP Exim 3.35 #1 Thu, 14 Nov 2002 15:34:31 +0100


--Service www Port 80 opened!!--
Server: Boa/0.94.11


--Service sunrpc Port 111 opened!!--

189.3   SATAN o SANTA

SATAN (3) (Security administration tool for analyzing networks, ovvero SANTA, per chi lo preferisce), è un vecchio applicativo in grado di scandagliare uno o più elaboratori connessi in rete allo scopo di verificarne le debolezze.

Il difetto maggiore di SATAN è quello di essere un lavoro piuttosto vecchio e non più aggiornato sulle nuove tecniche di attacco per le quali si vorrebbe poter verificare la solidità dei propri sistemi. Quindi, SATAN va bene come verifica di massima, cosa che comunque non è trascurabile.

SATAN è un pacchetto applicativo composto da una serie di eseguibili binari, ognuno specifico per un tipo di verifica, una serie di programmi Perl e una serie di moduli HTML. In teoria si potrebbe usare SATAN esclusivamente attraverso un programma per la navigazione, ma per ottenere questo si va incontro a una serie di complicazioni che forse non è il caso di affrontare, per il semplice fatto che non ne vale la pena e il risultato pratico non cambia. In queste sezioni verrà mostrato come utilizzare SATAN, specificando quanto serve per avviare la scansione attraverso la riga di comando e come analizzare il risultato ottenuto attraverso un navigatore.

189.3.1   Preparazione

SATAN non viene distribuito in forma già compilata. Si tratta di un pacchetto rivolto a persone esperte, per cui, reperire SATAN in forma già compilata e pronta da installare, è solo un sintomo sospetto di una possibile manomissione.

La versione originale di SATAN potrebbe offrire delle difficoltà impreviste alla compilazione nei sistemi GNU/Linux. A questo proposito esistono delle versioni accompagnate da file di differenze appositi (patch), che risolvono i problemi. A titolo di esempio si suppone di avere ritrovato il pacchetto satan-1.1.1.linux-3.src.rpm.

SATAN è un pacchetto particolare e la sua destinazione predefinita nel file system è al di fuori delle collocazioni normali. Dovendo essere uno strumento esclusivamente nelle mani dell'amministratore, la sua collocazione più conveniente dovrebbe essere /root/satan/. La ricompilazione del pacchetto potrebbe non giungere alla collocazione definitiva dei file, lasciando l'amministratore libero di scegliere.

cd /tmp

rpm --recompile /usr/src/redhat/SRPMS/satan-1.1.1.linux-3.src.rpm

Al termine della compilazione, SATAN potrebbe essere stato collocato nella sua destinazione finale predefinita, oppure in una directory transitoria, a partire da quella corrente. Nel caso particolare del pacchetto indicato come esempio, SATAN si trova collocato sotto ./satantmp/root/satan/. Il tutto viene spostato nella directory /root/.

mv ./satantmp/root/satan /root

189.3.1.1   Navigatore

Il programma satan che è scritto in Perl, se viene utilizzato senza argomenti avvia un navigatore; precisamente avvia quanto determinato in fase di configurazione prima della compilazione dei sorgenti. Se è stato installato Netscape, sarà questo il navigatore predefinito, ma Netscape può creare qualche problema, a causa delle particolarità dell'organizzazione di SATAN.

Lynx (o un altro navigatore senza grafica) sarebbe più che sufficiente per il lavoro che si vuole fare con SATAN; a tale proposito, conviene modificare il file /root/satan/config/paths.pl.


$MOSAIC="/usr/bin/netscape";

La riga mostrata va modificata come nel modo seguente:


$MOSAIC="/usr/bin/lynx";

189.3.2   Perl

SATAN dipende dall'interprete Perl, che quindi deve essere installato. Se per qualche motivo non si riesce ad avviare i programmi Perl, conviene controllare l'intestazione ed eventualmente provvedere a rendere disponibili i collegamenti necessari. In generale, questo problema non dovrebbe esistere, dal momento che in fase di compilazione dei sorgenti vengono modificate queste intestazioni in modo da puntare all'interprete Perl installato effettivamente.

Un altro problema che può essere generato da questi programmi Perl è la configurazione delle variabili per la localizzazione: LANG e la serie LC_*. Se la loro configurazione non è corretta in base all'impostazione del proprio sistema, Perl mostra una segnalazione di errore per ogni programma avviato, attraverso lo standard error.

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LC_ALL = "mia_locale",
        LANG = "it_IT.ISO-8859-1"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Nell'esempio si mostra che Perl ha scoperto una definizione impropria della variabile LC_ALL, dal momento che non esiste il tipo di localizzazione mia_locale.

Per risolvere il problema, se non si trova la definizione giusta per la localizzazione, conviene eliminare la configurazione del variabili di localizzazione, oppure impostare LC_ALL al valore C.

export LC_ALL=C

189.3.3   Configurazione

La configurazione di SATAN è contenuta in alcuni file collocati nella directory satan/config/.

File Descrizione
satan/config/paths.pl Un pezzo di programma Perl per la definizione di alcune variabili contenenti i percorsi dei programmi utilizzati da SATAN. In questo file, in particolare, deve essere indicato il percorso del navigatore che si vuole utilizzare.
satan/config/paths.sh Un pezzo di script di shell per la definizione di alcune variabili di ambiente, contenenti il riferimento ad alcuni programmi utilizzati.
satan/config/services L'equivalente del file /etc/services, ma a uso personale di SATAN.
satan/config/satan.cf Configurazione del funzionamento di SATAN.

Tra tutti questi file, merita attenzione satan/config/satan.cf. Dalla sua corretta configurazione dipende il buon funzionamento di SATAN. Si tratta di un pezzo di file Perl, all'interno del quale si annotano una serie di assegnamenti a variabili di vario tipo (scalari, array, hash), secondo le regole di Perl. Di seguito vengono indicate alcune direttive più importanti.


# Where do we keep the data? This is just a default.
$satan_data = "satan-data";

La variabile $satan_data permette di definire il nome della directory all'interno della quale inserire i file contenenti il rapporto delle scansioni fatte da SATAN. Questa directory discenderà da satan/results/ e solitamente, come mostra l'esempio, si tratta di satan/results/satan-data/.


# Default attack level (0=light, 1=normal, 2=heavy).
$attack_level = 2;

Il livello dell'attacco, definito attraverso la variabile $attack_level, permette di specificare tre valori, da zero a due. L'attacco più pesante è rappresentato dal numero due.


# status file; keeps track of what SATAN is doing.
$status_file = "status_file";

SATAN accumula la registrazione sommaria delle operazioni compiute all'interno di un file. Generalmente si tratta di satan/status_file, come mostra l'esempio in cui si definisce la variabile omonima.


# How far out from the original target do we attack? Zero means that we only
# look at the hosts or network that you specify. One means look at neighboring
# hosts, too. Anything over two is asking for problems, unless you are on the
# inside of a firewall.
$max_proximity_level = 1;

La variabile $max_proximity_level permette di definire il cosiddetto livello di prossimità, cioè quali nodi scandire. In pratica, zero significa limitare la scansione all'unico nodo indicato come punto di inizio, che rappresenta la scelta migliore fino a quando non si conosce l'uso di SATAN; uno indica a SATAN di provare tutti i nodi vicini. Usando un valore superiore a due, si inizia in pratica una scansione su tutto ciò che è raggiungibile attraverso la rete (cosa da evitare).


# Attack level drops by this much each proximity level change
$proximity_descent = 1;

Per evitare la proliferazione degli attacchi, si può stabilire la riduzione del livello dell'attacco, ogni volta che si passa a uno strato più esterno di nodi, cioè ogni volta che si attraversa un livello di prossimità.


# when we go below zero attack, do we stop (0) or go on (1)?
$sub_zero_proximity = 0;

Attraverso la variabile $sub_zero_proximity è possibile dire a SATAN cosa fare quando il livello di attacco è arrivato sotto il numero zero. Assegnando zero si intende concludere la scansione; assegnando uno si intende proseguire fino all'esaurimento degli strati di prossimità.


# a question; do we attack subnets when we nuke a target?
# 0 = no; 1 = primary target subnet
$attack_proximate_subnets = 0;

È possibile dire a SATAN di attaccare l'intera sottorete di un nodo individuato. Generalmente, non si utilizza questa possibilità, a meno che si stia tentando di individuare un possibile elaboratore collocato nella propria rete locale senza permesso. Assegnando il valore uno alla variabile $attack_proximate_subnets si ottiene l'attacco alla sottorete.


# Does SATAN run on an untrusted host? (0=no; 1=yes, this host may appear
# in the rhosts, hosts.equiv or NFS export files of hosts that are being
# probed).
#
$untrusted_host = 1;

Attraverso questa variabile, è possibile richiedere a SATAN una verifica della «fiducia» accordata al sistema locale presso quelli che vengono scandagliati. In pratica, se si assegna il valore uno alla variabile $untrusted_host, SATAN tenta di accedere attraverso rsh presso i nodi da analizzare, verificando anche la disponibilità di directory esportate attraverso il protocollo NFS.


# If $only_attack_these is non-null, *only* hit sites if they are of this
# type.  You can specify a domain (podunk.edu) or network number
# (192.9.9). You can specify a list of shell-like patterns with domains
# or networks, separated by whitespace or commas.
$only_attack_these = "brot.dg, 192.168";

Per evitare di sconfinare oltre la propria sottorete o il proprio dominio, è possibile utilizzare la variabile $only_attack_these, a cui assegnare una stringa contenente un elenco di domini e di indirizzi IP parziali, come si vede nell'esempio.


# Stay away from anyone that matches these patterns.
#
$dont_attack_these = "gov, mil";

Nello stesso modo, è possibile evitare esplicitamente domini e indirizzi IP, attraverso l'uso della variabile $dont_attack_these. Nell'esempio si vogliono evitare i domini gov e mil.


# Set the following to nonzero if DNS (internet name service) is unavailable.
#
$dont_use_nslookup = 0;

Per SATAN è importante che il servizio DNS sia disponibile. Se non è così, si deve assegnare il valore uno alla variabile $dont_use_nslookup.


# Should SATAN ping hosts to see if they are alive?
#
$dont_use_ping = 0;

SATAN utilizza ping per verificare la presenza dei nodi. Nel caso si volesse evitare il suo utilizzo, si può assegnare il valore uno alla variabile $dont_use_ping.

Il file di configurazione termina con la riga seguente. Si tratta di qualcosa che riguarda Perl e non deve essere cambiato.


1;

189.3.4   Avvio del programma

satan è il programma Perl che si utilizza per la scansione dei nodi da verificare e anche per avviare l'interfaccia HTML, attraverso un navigatore come definito con la variabile $MOSAIC nel file satan/config/paths.pl.

satan [opzioni] [obiettivo_primario]

Se satan viene avviato con l'indicazione di un nodo da controllare (attaccare), inizia l'operazione in base alla configurazione contenuta nel file satan/config/satan.cf, con le varianti apportate attraverso le opzioni della riga di comando. Ciò che si ottiene alla fine dell'elaborazione è l'aggiornamento dei file contenuti a partire dalla directory satan/results/. Per la lettura dei risultati, si utilizza normalmente il sistema HTML, avviato attraverso satan senza argomenti.

Per utilizzare satan, non occorre sistemare la variabile di ambiente PATH. Tuttavia, è necessario che la directory corrente corrisponda alla posizione iniziale del pacchetto. Per esempio, se il tutto si trova a partire da /root/satan/, occorrerà che questa sia la directory corrente prima dell'avvio del programma.

Opzione Descrizione

-a {0|1|2}

Permette di ridefinire il livello di attacco: zero è il minimo, due è il massimo.

-l {0|1|2}

Definisce il livello di prossimità: zero rappresenta solo il nodo di partenza; uno i nodi prossimi. Non è conveniente usare un valore superiore a due, perché questo rappresenta implicitamente qualunque nodo raggiungibile.

-s

Allargamento alla sottorete: con questa opzione, ogni volta che si individua un nodo si allarga la ricerca anche a tutta la sottorete (l'ultimo ottetto dell'indirizzo IP).

-v

Visualizza le azioni compiute da satan durante la sua scansione.

189.3.5   Verifica del risultato

Il risultato dell'elaborazione (degli attacchi) di SATAN viene memorizzato all'interno di file collocati a partire dalla directory satan/results/. Si tratta di file di testo che potrebbero essere interpretati così come sono, con qualche piccola difficoltà.

In alternativa, si può usare convenientemente un navigatore, avviato tramite l'eseguibile satan. La figura 189.1 mostra il menù principale che si ottiene all'inizio.

Figura 189.1. Il menù principale che si ottiene quando l'eseguibile satan viene avviato in modo da utilizzare il navigatore.

                          SATAN Control Panel
                                       
          (Security Administrator Tool for Analyzing Networks)
   
   * SATAN Data Management
   * SATAN Target selection
   * SATAN Reporting & Data Analysis
   * SATAN Configuration Management
   * SATAN Documentation
   * SATAN Troubleshooting
   
   * Getting the Latest version of SATAN
   * Couldn't you call it something other than "SATAN"?
   * 'Bout the SATAN image
   * 'Bout the authors

Dal menù principale, si seleziona normalmente il riferimento {Reporting & Data Analysis}, per visualizzare il rapporto sulla scansione eseguita. Si ottiene un altro menù, con il quale selezionare il tipo di informazione desiderata.

Figura 189.2. Il menù che permette di accedere alle informazioni accumulate.

                     SATAN Reporting and Analysis

   Vulnerabilities 
     * By Approximate Danger Level 
     * By Type of Vulnerability 
     * By Vulnerability Count 
       
   Host Information 
     * By Class of Service
     * By System Type
     * By Internet Domain
     * By Subnet
     * By Host Name
       
   Trust
     * Trusted Hosts
     * Trusting Hosts

A titolo di esempio, la figura 189.3 mostra il responso di una scansione che ha rivelato alcuni elementi di vulnerabilità. In corrispondenza di ognuna delle due voci si trova un riferimento che porta a delle spiegazioni più dettagliate.

Figura 189.3. Esempio del responso di vulnerabilità di un nodo, distinto in base al tipo.

                      Vulnerabilities - By Type
   
  Number of hosts per vulnerability type.
  
     * unrestricted NFS export - 1 host(s)
     * remote shell access - 1 host(s)
       
   Note: hosts may appear in multiple categories. 
Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- daniele @ swlibero.org

1) Queso   GNU GPL

2) Raccess   GNU GPL

3) SATAN   software non libero


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome verifica_della_vulnerabilit_agrave_della_propria_rete.html

[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]