XUT_ / COURSES / CYBER SECURITY 101

Working with Modules

Una vez que hayamos introducido el contexto del módulo usando el comando use seguido del nombre del módulo, necesitaremos configurar parámetros. Es buena práctica usar el comando sho options para obtener una lista de los parámetros requeridos.

Todos se configuran usando la misma sintaxis: set NOMBRE_PARÁMETRO VALOR.

Antes de continuar está bien comprobar el prompt para asegurarse de que estamos en el contexto correcto. Al usar Metasploit podemos ver 5 prompts diferentes:

  • El prompt normal: No puedes usar comandos de Metasploit aquí.
  • El prompt msfconsole: msf6 es el prompt, pero sin contexto, no se pueden usar comandos específicos de contexto, como configurar parámetros.
  • El prompt de contexto: Una vez decidido el módulo y seleccionado con use podemos usar comandos como set.
  • El prompt de Meterpreter: Meterpreter es un payload muy potente que veremos después. Esto quiere decir que el sistema objetivo se conectó a ti mediante una agente de Meterpreter.
  • Una consola en el sistema objetivo: Una vez que el exploit se ha completado, puede que ganes acceso a una así. Todos los comandos ejecutados en esta consola se ejecutan en el sistema objetivo.

Con show options puedes ver los parámetros requeridos y con set configurarlos. Los parámetros que usarás normalmente son:

  • RHOSTS: Host remoto, la IP del sistema objetivo. Puedes hacerlo con notación CIDR (/16, /24), con rango (10.10.10.X - 10.10.10.x) o con un archivo que tomará un objetivo por linea.
  • RPORT: Puerto remoto, el puerto objetivo del sistema objetivo.
  • PAYLOAD: La carga de código que usaremos con el exploit.
  • LHOST: Host local, la IP de nuestro equipo.
  • LPORT: Puerto local, el puerto de nuestro equipo elegido para las comunicaciones.
  • SESSION: Cada conexión establecida con el sistema objetivo con Metasploit tendrá un ID, que usarás con los módulos de post explotación para re conectarte a una sesión existente.

Puedes sobrescribir cualquier parámetro usando el comando set con un valor nuevo o borrarlo usando el comando unset. Si quieres borrarlos todos usa unset all.

Puedes usar el comando setg para establecer valores que se usarán para todos los módulos. Se diferencia en eso del comando set.

El siguiente ejemplo usa el siguiente flujo:

  1. Usamos el explotable ms17_010_eternalblue.
  2. Configuramos RHOSTS usando el comando setg.
  3. Usamos el comando back para dejar el contexto.
  4. Usamos un auxiliary (este módulo es un escáner para para descubrir vulnerabilidades de MS17-010).
  5. El comando show options muestra que el parámetro RHOSTS ya tiene configurada la IP del sistema objetivo.
bash
msf6 > use exploit/windows/smb/ms17_010_eternalblue 
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > setg rhosts 10.10.165.39
rhosts => 10.10.165.39
msf6 exploit(windows/smb/ms17_010_eternalblue) > back
msf6 > use auxiliary/scanner/smb/smb_ms17_010 
msf6 auxiliary(scanner/smb/smb_ms17_010) > show options

Module options (auxiliary/scanner/smb/smb_ms17_010):

   Name         Current Setting                                                Required  Description
   ----         ---------------                                                --------  -----------
   CHECK_ARCH   true                                                           no        Check for architecture on vulnerable hosts
   CHECK_DOPU   true                                                           no        Check for DOUBLEPULSAR on vulnerable hosts
   CHECK_PIPE   false                                                          no        Check for named pipe on vulnerable hosts
   NAMED_PIPES  /opt/metasploit-framework-5101/data/wordlists/named_pipes.txt  yes       List of named pipes to check
   ******RHOSTS       10.10.165.39******                                                   yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:'
   RPORT        445                                                            yes       The SMB service port (TCP)
   SMBDomain    .                                                              no        The Windows domain to use for authentication
   SMBPass                                                                     no        The password for the specified username
   SMBUser                                                                     no        The username to authenticate as
   THREADS      1                                                              yes       The number of concurrent threads (max one per host)

msf6 auxiliary(scanner/smb/smb_ms17_010) >

Lo que se configura con setg se mantiene hasta que sales de metasploit o hasta que usas el comando unsetg (o hasta que cambias su valor).


Usar módulos

Una vez que todos los parámetros de los módulos estén configurados, podemos lanzar el módulo usando el comando exploit. También podemos hacerlo con el comando run. El comando exploit puede ser usado sin parámetros o usando el parámetro -z para lanzar el exploit y poner la sesión en segundo plano tan pronto como se abra.

Esto nos devolverá al prompt del contexto desde el que hemos ejecutado el exploit. Algunos módulos soportan la opción check, la cual comprobará si el sistema es vulnerable sin necesidad de explotarlo.


Sesiones

Una vez que una vulnerabilidad ha sido explotada exitosamente, se creará una sesión. Este es el canal de comunicación entre el sistema objetivo y metasploit. Puedes usar el comando background para poner en segundo plano tu sesión actual. De forma alternativa Ctrl + Z puede se usado para el mismo propósito.

El comando sessions puede ser usado desde el prompt de msfconsole o cualquier contexto para ver las sesiones existentes. Para interactuar con cualquiera de las sesiones puedes usar el comando sessions -i seguido del ID de la sesión.