Primeros pasos con Metasploit
Introducción
Desde su primera versión, en 2003, Metasploit ha seguido evolucionando, convirtiéndose en el framework de explotación más completo y utilizado, gracias a la facilidad de uso de las diferentes opciones, interfaces o herramientas.
Terminología
Esta sección introduce todos los términos necesarios para una comprensión adecuada del libro.
Exploit
Un exploit es un fragmento de código que permite a un atacante o auditor explotar una vulnerabilidad de seguridad en un sistema informático de destino. Un exploit se puede utilizar contra una máquina remota (remote exploit) o contra la máquina en la que se encuentra el atacante (local exploit).
Las consecuencias relativas a esta explotación variarán dependiendo de la vulnerabilidad, y pueden ir desde la capacidad para comprometer el sistema hasta la denegación de servicio (DoS), pasando por la elevación de privilegios.
payload
La payload es la carga maliciosa ejecutada por el exploit. Puede ir desde la creación de una conexión entre la máquina del ataque y la máquina de destino (bind shell/reverse shell) para futuras conexiones hasta ejecutar un comando sencillo para añadir un usuario al sistema de destino.
Auxiliar (auxiliary)
Hay un centenar de auxiliares dentro del Framework Metasploit. Tienen objetivos diversos, como permitir la realización de escaneos, escucha en red o incluso el fuzzing.
Encoder
El juego del gato y el ratón entre atacantes y defensores es permanente. Para compensar la falta de antivirus o IDS (Intrusion Detection System) que pueden permitir la detección de cargas útiles o payloads, se implementa...
Símbolos del sistema
Para una buena comprensión del resto de este libro y que sea independiente del sistema operativo utilizado, es importante distinguir entre todos los símbolos de sistema disponibles, para saber qué comandos se pueden ejecutar:
Unix
Regis@kali:~$
root@kali:/usr/share#
El símbolo de sistema anterior es para un sistema Unix estándar. El primer elemento (regis y root) es el nombre de usuario, que contiene el usuario que se ha conectado al sistema operativo. El signo arroba (@) es un separador simple entre este nombre de usuario y el nombre de la máquina en la que está conectado el usuario (kali). Los dos puntos (:) es un nuevo separador entre los elementos anteriores y la carpeta en la que se encuentra el usuario (~ y /usr/share). Finalmente, el último elemento ($ y #) representa el nivel de permisos del usuario conectado. Esto se debe a que $ significa que el usuario es una cuenta con permisos limitados, mientras que # significa que el usuario está en modo superusuario.
Metasploit
msf6 >
El símbolo de sistema anterior es de Metasploit. A partir de él, es posible utilizar todos los comandos detallados en la sección Recordatorio sobre comandos útiles.
Meterpreter
meterpreter >
El símbolo del sistema anterior es Meterpreter. A partir de él, es posible utilizar todos los comandos detallados en el capítulo La posexplotación...
Interfaces
1. El sistema de archivos
Antes de comenzar a presentar las diversas interfaces que tiene el Framework Metasploit, vamos a presentar los diferentes elementos presentes dentro del sistema de archivos. Esto permitirá entender cómo funcionan las distintas pantallas dentro del framework e, incluso, realizar algunos cambios cuando sea necesario.
En un sistema Kali, los datos relativos al Framework Metasploit se encuentran en /usr/share/metasploit-framework:
root@kali:~# ls -l /usr/share/metasploit-framework
total 148
drwxr-xr-x 4 root root 4096 mar. 28 18:31 app
drwxr-xr-x 3 root root 4096 mar. 28 18:54 config
drwxr-xr-x 21 root root 4096 mar. 28 18:31 data
drwxr-xr-x 3 root root 4096 mar. 28 18:31 db
lrwxrwxrwx 1 root root 27 mar. 28 18:32 documentation ->
../doc/metasploit-framework
-rwxr-xr-x 1 root root 1209 jan. 24 18:24 Gemfile
-rw-r--r-- 1 root root 9359 jan. 25 09:40 Gemfile.lock
drwxr-xr-x 14 root root 4096 mar. 28 18:31 lib
-rw-r--r-- 1 root root 8652 jan. 25 09:40
metasploit-framework.gemspec
drwxr-xr-x 9 root root 4096 mar. 28 18:31 modules
-rwxr-xr-x 1 root root 1263 jan. 25 09:40 msfconsole
-rwxr-xr-x 1 root root 2813 jan. 25 09:40 msfd
-rwxr-xr-x 1 root root 5326 jan. 25 09:40 msfdb
-rw-r--r-- 1 root root 635 jan. 25 09:40 msf-json-rpc.ru
-rwxr-xr-x 1 root root 2229 jan. 25 09:40 msfrpc
-rwxr-xr-x 1 root root 9677 jan. 25 09:40 msfrpcd
-rwxr-xr-x 1 root root 166 jan. 25 09:40 msfupdate
-rwxr-xr-x 1 root root 12921 jan. 25 09:40 msfvenom
-rw-r--r-- 1 root root 551 jan. 25 09:40 msf-ws.ru
drwxr-xr-x 2 root root 4096 mar. 28 18:31 plugins
-rwxr-xr-x 1 root root 1299 jan. 24 18:24 Rakefile
-rwxr-xr-x 1 root root 604 jan. 25 09:40 ruby
-rwxr-xr-x 1 root root 140 jan. 25 09:40 script-exploit
-rwxr-xr-x 1 root root 141 jan. 25 09:40 script-password
-rwxr-xr-x...
Recordatorio sobre comandos útiles
El objetivo de esta sección no es hacer una revisión completa de todos los comandos básicos de Metasploit. De hecho, hay algo más de sesenta y algunos se abordarán en el resto del libro. El comando help es un buen comienzo para obtener más información sobre los comandos disponibles:
msf6 > help
Core Commands
=============
Command Description
------- -----------
? Help menu
banner Display an awesome metasploit banner
cd Change the current working directory
color Toggle color
connect Communicate with a host
[...]
Database Backend Commands
=========================
Command Description
------- -----------
db_connect Connect to an existing database
db_disconnect Disconnect from the current database instance
db_export Export a file containing the contents of the db
db_import Import a scan result file
[...]
Para el conjunto de los resultados devueltos, es posible obtener información adicional:
msf6 > help db_connect
[*] Usage: db_connect <user:pass>@<host:port>/<database>
[*] OR: db_connect -y [path/to/database.yml]
[*] Examples:
[*] db_connect user@metasploit3
[*] db_connect user:pass@192.168.0.2/metasploit3...