venerdì 8 ottobre 2010

Fast-Track, automatizzare un pen test

Visto che essendo un security engineer mi occupo di sicurezza in generale, e questa spazia dalla vulnerability analysis al testing intrusion, e dalla difesa perimetrale all'identificazione degli attacchi, inizio una nuova serie di post che si dedicheranno a queste tecniche ed all'approfondimento degli strumenti ritenuti più validi e/o semplici da utilizzare.
Ora facciamo una piccola introduzione a cos'è un pentest... è una procedura atta a verificare la sicurezza di un sistema cercando di penetrarlo; una delle sfide maggiori è automatizzare questo tipo di test per eseguirlo in maniera automatica sopra i sistemi da verificare.
L'automatizzazione è una lama a doppio taglio perchè, oltre a semplificare di molto le procedure di test, permette ai cracker ed agli script kiddies di ottenere velocemente una lista di macchine facilmente compromissibili su di una rete.
Logicamente tutto quello che vedremo o faremo è nell'ottica di studio od in seguito a richiesta, ed è possible farlo solamente dopo aver ottenuto un'autorizzazione scritta dell'interessato per potersi tutelare in caso di problemi legali... se non lavorate nel campo della sicurezza limitatevi ai computer entro le vostre mura domestiche.
Ed ora partiamo con un buon software opensource... Fast-Track, scritto in Python e che si basa su metasploit per l'esecuzione dell'attacco.
La seguente procedura è valida per macchine con distribuzioni Debian-like.
Prima di tutto è necessario scaricare ed installare ruby, base di metasploit, sqlite3, nmap, logicamente metasploit 3, che verrà prelevato tramite cvs, ed infine Fast-Track, sempre tramite cvs:
  • apt-get install ruby libruby rdoc libyaml-ruby libzlib-ruby libopenssl-ruby libdl-ruby libiconv-ruby rubygems
  • apt-get install sqlite3 nmap
  • svn co https://metasploit.com/svn/framework3/trunk/
  • svn co http://svn.thepentest.com/fasttrack/
  • python setup.py install
Durante l'installazione verranno richieste alcune informazioni relative al percorso di installazione di metasploit; se qualcosa non dovesse andare a buon fine sappiate che avete bisogno dei seguenti moduli python: PExpect, FreeTDS, PYMSSQL, ClientForms, Beautiful Soup, PyMills e Psyco.
A questo punto è possibile eseguire Fast-Track in maniera interattiva:
  • python fast-track.py --i
Le prime operazioni da fare sono gli aggiornamenti (opzione 1) completi (opzione 10) di Fast-Track. Da adesso in poi è possibile lanciare gli attacchi su range di indirizzi IP (opzione 2) specificati secondo la sintassi di nmap; quindi scegliendo il bind shell (opzione 1) verranno tentati attacchi utili ad exploitare una shell sulla macchina target. Nel caso non ne venissero trovati verrà mostrato un messaggio "No sessions".
Per conoscere quali plugin sono stati utilizzati si può utilizzare il comando "sessions --v" e con "sessions --i 1" si accede alla prima macchina che è possibile penetrare con la relativa vulnerabilità ritrovandosi all'interno di meterpreter.
Una volta all'interno di meterpreter è possibile utilizzare diversi comandi utili per recuperare informazioni sulla macchina target:
  • hashdump - mostra il contenuto del database SAM della macchina compromessa (che può quindi essere sottoposto ad un attacco offline utilizzando uno strumento come John the Ripper per individuare le password);
  • upload - carica un file o una directory utili ai fini di compromettere ulteriori macchine o creare backdoor (ad esempio un cracker potrebbe caricare ed eseguire processi a proprio piacimento);
  • keyscan_start , keyscan_stop , keyscan_dump - vengono utilizzati per catturare la digitazione sulla tastiera della macchina compromessa ed eventualmente venire a conoscenza di login e password utilizzati dalla vittima;
  • shell - fornisce un prompt dei comandi sulla macchina compromessa.
Un esempio di utilizzo classico della shell è relativo alla creazione di un nuovo utente con cui il cracker si assicura l'accesso alla macchina anche in successive occasioni creandosi un utente con "net user cracker password /ADD".
Logicamente il nostro obbiettivo è identificare le possibili vulnerabilità del sistema per avvisare il nostro committente di cosa deve fare per proteggersi... in questo caso, per risalire alle informazioni che ci interessano dovremo riprendere l'output del comando "sessions --v", verificare il nome della vulnerabilità segnalata da metasploit ed andare a ricercarne la causa, con un'eventuale spiegazione e la rispettiva soluzione (queste in genere sono l'installazione di una patch o la riconfigurazione/disabilitazione del servizio se non fossero disponibili patch).
Per oggi è tutto, quello che volevo dirvi l'ho detto e quello che vorrei ricordarmi l'ho scritto, quindi, come detto all'inizio, divertitevi sui vostri PC, ma non fate guai in giro dato che i problemi che ne potrebbero scaturire sono di tipo penale.