ACTULIZADO A DÍA 28/01/2021

COMANDOS  DE METERPRETER EN SISTEMAS WINDOWS

Meterpreter es un payload muy potente y el proyecto estrella de Metasploit Framework. Permite obtener una gran cantidad de información sobre un objetivo  comprometido, así como también manipular ciertas características del sistema objetivo. Cuenta con un interprete que permite interactuar con el objetivo por medio de una serie de instrucciones directas que son fáciles de recordar y sirven para llevar a cabo procesos de post-explotación. La comunicación entre el interprete Meterpreter y la maquina remota es vía SSL lo que quiere decir que la información intercambiada entre las dos maquinas viaja cifrada, ademas es posible utilizar múltiples canales de ejecución, es decir, múltiples programas ejecutándose en la maquina remota y todos pueden ser manejados desde meterpreter con los comandos  “channel” y “execute”. Los comandos mas interesantes se listan a continuación:

background <Core>

Comando básico que permite enviar la sesión de meterpreter a segundo plano volver al interprete de msfconsole para cargar y ejecutar otros módulos o exploits.

keyscan <Stdapi User Interface Commands>

Con esta utilidad es posible saber que ha digitado el usuario en su maquina, de esta se obtiene fácilmente, claves, usuarios, direcciones, mensajes, etc.

getuid <Stdapi System Commands>
getsystem <Priv: Elevate Commands>
rev2self <stdapi System Commands>

Con el comando getuid se puede consultar la cuenta de usuario que se ha utilizado para ejecutar el proceso con Metepreter. Si se ha conseguido elevar privilegios con una utilidad como getsystem con el comando rev2self se puede volver a la cuenta de usuario no privilegiada.

migrate <Core>

Permite migrar el proceso de Meterpreter a otro proceso activo, su uso es muy simple basta con especificar un PID activo (que puede ser consultado utilizando el comando “ps” de Meterpreter).

De esta forma, cuando se cierre el proceso en ejecución anteriormente asociado al proceso de Meterpreter, la sesión no se perderá ya que ahora el payload dependerá de otro proceso existente en el sistema, al que se ha migrado. Por lo tanto, es común seleccionar procesos que sean de larga duración, como por ejemplo navegadores web o procesos core del sistema operativo.

route <Stdapi Network commands>

Funciona de un modo muy similar al conocido comando route en sistemas windows/linux, permite gestionar las tablas de enrutamiento del sistema comprometido.


cd, rm, rmdir, pwd, ls, upload, download, cat edit, del, mkdir <File System Commands>

Se trata de los comandos básicos para consulta y manipulación de ficheros, su uso es equivalente a los comandos del mismo nombre disponibles en sistemas basados en UNIX, sin embargo estos comandos se ejecutan en el sistema comprometido por medio del interprete de meterpreter

cd: Permite navegar a través de la estructura de directorios, rm y del eliminar un fichero especificado, pwd, conocer el directorio actual en donde se encuentra posicionado meterpreter, upload para subir un fichero a la maquina remota, download, descargar un fichero desde la maquina remota, mkdir crear un directorio nuevo, cat Permite visualizar un fichero remoto, mientras que edit, permite editarlo.

Como se puede apreciar, se trata de comandos de fácil uso y bastante similares a los comandos clásicos en cualquier sistema Unix.

Idletime <Stdapi User Interface Commands>
channel <core>, execute <Stdapi System Commands>, interact<core> read<core>, write<core>, close<core>

El comando idletime permite determinar cuánto tiempo ha estado el sistema comprometido sin actividad. Por otro lado, para ejecutar múltiples procesos en la maquina remota y posteriormente declararlos como canales que pueden ser manejados por meterpreter se utiliza el comando channel.

Como se ha podido apreciar, se han creado diferentes canales con un proceso asociado y posteriormente es posible consultarlos con el comando channel. Si se desea interactuar con alguno de esto canales, se utiliza el comando “write”. Finalmente con el comando close, se cierra algún canal que se encuentre abierto

getdesktop
enumdesktops
setdesktop <Stdapi User Interface Commands>

Estos comandos permiten obtener el desktop del usuario actual, establecerlo y enumerar las diferentes interfaces habilitadas en la maquina objetivo, cada uno de los desktop están asociados a una sesión, una estación y un nombre de Desktop, este nombre identifica la interfaz que se enseña al usuario, por ejemplo hay una para el inicio de sesión, otra para el escritorio y otra para logoff.
Para saber en que desktop se encuentra asociada la sesión meterpreter basta con invocar el método getdesktop:
Cada uno de los desktop tiene sus propios procesos en ejecución y ademas de esto, tienen su propio buffer de teclado y dispositivos de entrada, por lo tanto cuando se realiza la captura de teclas del objetivo (keyscan), es necesario conocer el desktop actual de ejecución y también es necesario que el proceso del cual depende meterpreter se encuentre en ejecución para dicho desktop, por esta razón es posible que el mismo escaneo de teclas (utilizando keyscan_*) no funcione de la misma forma para el desktop de inicio de sesión que para el escritorio de un usuario logueado.

TIP: Una vez explicado lo anterior, una practica frecuente que utiliza un atacante cuando logra comprometer un sistema, es establecer después de un periodo corto de tiempo, el desktop asociado con el login de usuario y posteriormente iniciar el escaneo de teclas para dicho desktop, de esta forma es muy fácil capturar las credenciales del usuario que se esta logueando en el sistema.

uictl<Stdapi User Interface Commands>
hashdump<Priv Password database Commands>
timestomp<Priv Timestomp Commands>

el comando uictl permite habilitar/deshabilitar el ratón y el teclado de la maquina destino, de esta forma, se puede controlar las acciones que el usuario realiza.

El comando hashdump permite obtener los usuarios y los hashes NTLM de la maquina remota en formato, de esta forma se puede crackear la clave de un usuario determinado usando herramientas como john the ripper, hashcat o tablas rainbow online como por ejemplo las disponibles en crackstation.net

Por otro lado con timestomp se pueden modificar los atributos relacionados con las fechas de creación, modificación y último acceso de un fichero en la maquina remota.

Estos han sido los comandos básicos en una consola meterpreter, se trata de opciones muy sencillas pero a su vez bastante robustas que permiten realizar un proceso de comunicación muy completo entre un objetivo y su atacante.

Un saludo y Happy Hack!
Adastra.