WebSploit Framework

Body

Websploit es un proyecto open source el cual es utilizado para escanear y analizar sistemas remotos para encontrar varios tipos de vulnerabilidades. Es una herramienta muy poderosa, aparte de soportar diversos tipos de vulnerabilidades.

Descripción:

  • Autopwn - Utilizado desde Metasploit para escanear y explotar servicios del objetivo
  • wmap - Escaneo, crawling del objetivo utilizado desde el plugin wmap de Metasploit
  • format infector - Inyecta un payload bind (enlazado) y reverse (inverso) dentro del formato de archivo
  • phpmyadmin - Busca la página de registro de phpmyadmin en el objetivo
  • lfi - Escanea, vulnerabilidades de inclusión de archivos locales (LFI) y puede evitar algunos WAF
  • apache users - Busca directorios de nombre de usuarios en el servidor (si se usa un servidor web apache)
  • Dir Bruter - Realiza fuerza bruta a directorios del objetivo utilizando listas de palabras.
  • admin finder - Busca páginas de admin y registro (login) en el objetivo
  • MLITM Attack - Ataques Man Left In The Middle, XSS y Phishing
  • MITM - Ataque Man In The Middle (Hombre en el Medio)
  • Java Applet Attack - Ataque Java Signed Applet
  • MFOD Attack Vector - Vector de Ataque Middle Finger Of Doom
  • USB Infection Attack - Crear Puerta Trasera para infectar USB para Windows
  • ARP DOS - Ataque de Negación de Servicio de Cache ARP con MAC aleatoria
  • Web Killer Attack - Hacer caer un sitio web en la Red (TCPKILL)
  • Fake Update Attack – Crear páginas de actualización falsa para el SO objetivo
  • Fake Access point Attack – Crear AP falsas y husmear información de la victima

La instalación y puesta en funcionamiento implica descargar y desempaquetar el archivo tar.gz correspondiente, para luego proceder con la instalación.

$ tar xzvf WebSploit-Framework-2.0.5-beta.tar.gz
$ sudo bash install.sh

Para la ejecución de la herramientas solo se debe ejecutar el comando websploit.

$ sudo websploit

Dentro de WebSploit Framework se solicita la ayuda del programa.

> help

Para la siguiente práctica se utilizará como objetivo de evaluación a Metasploitable2.

Se procede a listar los módulos que residen actualmente en la Base de Datos de WebSploit.

> show modules

Se utilizará el módulo de red que permite realizar un escaneo de directorios “web/dir_scanner”. El comando “use” selecciona el módulo a ser utilizado, el comando “show options” muestra las opciones del módulo seleccionado, el comando “set” define los valores de las opción para un módulo, y el comando “run” ejecuta el módulo.

> use web/dir_scanner
> show options
> set TARGET http://192.168.0.16
> run

Finaliza la ejecución del módulo sin resultados.

El siguiente módulo en ejecución “web/pma” escanea por páginas de registro (login) de PHPMyAdmin. Conforme el escaneo avanza se mostrarán los resultados confome sean identificados. En este caso se ha identificado el directorio de nombre /phpMyAdmin/

> use web/pma
> show options
> set TARGET http://192.168.0.16
> run

Fuentes:

http://sourceforge.net/projects/websploit/
http://sourceforge.net/p/websploit/wiki/Home/
http://sourceforge.net/projects/metasploitable/

“Hackeamos” todo Tipo de Correos

Body

A todos los inmersos en temas de Seguridad o puntualmente relacionados en temas de Hacking Ético, se nos habrá consultado alguna vez sobre nuestros conocimientos para recuperar o averiguar la contraseña de un correo electrónico (Hotmail, Gmail, Yahoo) o de una red social (Facebook,Twitter). Aunque averiguando lo primero es altamente probable obtener lo segundo. Las solicitudes abarcan un amplio espectro, desde aquellos que te ofrecen “lo que sea”, económicamente hablando, hasta aquellos que apelan a cuestiones sentimentales o personales.

Lo descrito a continuación implica un escenario de engaño, estafa, y una pequeña dosis de astucia. Aunque no se culminó la transacción económica final, lo expuesto sirve para conocer como esta el “estado del arte” de estos sitios web o personas que prometen “Hackear” cualquier tipo de correo electrónico. Ya al utilizar la palabra “Hackear” en primera instancia los pinta de cuerpo entero.

A continuación el anuncio, con toda la parafernalia del caso. Las promesas resultan bastantes cautivadoras y atractivas para los potenciales “clientes”.

Realizado el contacto y proporcionado el correo electrónico de la imaginaria victima, cuya contraseña se nos proporcionará, se nos indica esperar tres días calendarios tal y como lo indica el anuncio.

Y por esas inusuales casualidades de la vida, al tercer día se nos contacta para indicarnos que ya tienen la contraseña que le hemos solicitado.

La pregunta que automáticamente arribó a la mente fue ¿Ya le “Hackearon” el correo y nosotros ni enterados?. Y la segunda pregunta fue ¿Cual fue ese técnica de hacker Super Ultra H4x0r 3l33t3 que utilizaron?.

Para absolver esas preguntas, era necesario revisar y analizar el mensaje de correo electrónico enviado por esta persona desde la propia cuenta de la víctima, tal como lo indica en su mensaje.

Al analizar el correo electrónico de la imaginaria victima, se había utilizado una técnica que data de hace muchos años, pero aplicable y efectiva.

Open Mail Relay

Un Open Mail Relay es un servidor SMTP (Simple Mail Transfer Protocol) configurado de tal manera que permite a cualquiera en Internet enviar correos electrónicos a través de el, y no solo correos electrónicos destinados para u originándose desde usuarios conocidos. Este uso puede ser la configuración por defecto en varios servidores de correo; pues es la forma en la cual Internet fue diseña inicialmente, pero los open mail relays se convirtieron en impopulares debido a la explotación de spammers y gusanos.

El correo enviado a la imaginaria víctima precisamente utilizaba un open mail relay, y se indicaba tanto como correo electrónico del remitente como del destinatario, la dirección de correo electrónico de la victima. He aquí de señalar la importancia de analizar y saber interpretar correctamente las cabeceras de un mensaje de correo electrónico.

Inocentemente se acepta que hemos verificado que poseen la contraseña para acceder a la cuenta de correo electrónico. Pero se nos recuerda que la contraseña no será proporcionada hasta que paguemos.

Si se llega a este punto, ya todas las alertas deben haberse activado. Si no es así, el hecho de tener que realizar el envío de 100 Dólares al otro lado del mundo, debería activarlas.

Aún así se solicitan más pruebas de esto, pues si no quieren dar la contraseña; cosa comprensible en cualquier negocio; al menos una captura de pantalla de algún mensaje. Y esta es la respuesta obtenida.

Intuyo el pensamiento de esta persona, "si no lo puedo estafar con 100 dólares, al menos lo estafo con 50 dólares". Pero llegado a este punto sencillamente opté por dejar todo.

Como una práctica del escenario descrito, se utilizará un servidor de correo electrónico para tratar de enviar un mensaje con la misma dirección de correo electrónico tanto para el remitente como para el destinatario.

Se procede a establecer una conexión al servidor de correo electrónico, para luego tratar de enviar un mensaje. En este primer escenario no es factible realizar el envío.

Se procede a configurar el servidor de correo electrónico para actuar como Open Relay. En este caso el mensaje de correo electrónico se ha puesto en cola para ser entregado a su destino.

Recomendaciones:

  • No contactar estos pseudo servicios de “Hackersr” o de recuperación de contraseñas. Es altamente probable que se trate de una estafa.
  • Recodar que el ingresar y obtener acceso a una cuenta de correo electrónico sin autorización del propietario no es ético ni legal.
  • La mejor manera de recuperar el acceso a una cuenta de correo electrónico o red social que haya sido perdida por algún motivo, es utilizando la propia funcionalidad del servicio.
  • Por experiencia propia puedo exponer que en un rango del 90% a 95% de los casos es factible recuperar la contraseña de una cuenta y en consecuencia el control de la misma.
  • Cada servicio de correo electrónico o red social, permite habilitar características adicionales de seguridad, y de esta manera realizar un mejor seguimiento de actividad sospechosa o recuperar el acceso a la cuenta.
  • En otros escenarios que he tenido la oportunidad de analizar, se envían correos electrónicos o archivos adjuntos al correo de la victima, para tratar de obtener su contraseña. Tener mucho cuidado en visualizar mensaje de correo electrónico o abrir archivos adjuntos de remitentes desconocidos.

Fuentes:

http://en.wikipedia.org/wiki/Open_mail_relay
http://tools.ietf.org/html/rfc821
http://tools.ietf.org/html/rfc5321
http://serverfault.com/questions/422468/postfix-open-relay-how-to-confi…

Mostrar Usuarios Registrados Local o Remotamente con PsLoggedOn

Body

Se puede determinar quien está utilizando recursos en la computadora local con el comando “net” (net session), sin embargo, no hay una manera inherente para determinar quien está utilizando los recursos de una computadora remota. Además NT no viene con herramientas para mirar quien está registrado en una computadora, ya sea de manera local o remota. PsLoggedON es una applet que muestra los usuarios locales registrados y los usuarios registrados mediante recursos ya sea la computadora local, o en una remota. Si se especifica el nombre de usuario en lugar de una computadora, PsLoggedOn busca las computadoras en la red vecina e indica si el usuario está actualmente registrado.

La definición de PsLoggedOn de un usuario registrado localmente es uno que tiene su perfil cargado en el Registro, así PsLoggedOn determina quien está registrado escaneando las llaves bajo la llave “HKEY_USERS”. Para cada llave que tiene una nombre que es un SID (Security IDentifier) de usuario, PsLoggedOn busca el correspondiente nombre de usuario y lo muestra. Para determinar quien está registrado en una computadora mediante recursos compartidos, PsLoggedOn utiliza el API NetSessionsEnum. Anotar que PsLoggedOn mostrará como registrado mediante recursos compartido a computadoras remotas que se consulten debido a que es requerido un registro para que PsLoggeOn acceda al Registro de un sistema remoto.

Para la siguiente práctica se utilizara dos sistemas, una con Sistema Operativo Windows XP y otra con Sistema Operativo Windows 7.

La manera más sencilla de ejecutar PsLoggedOn es abrir una consola y escribir el comando.

C:\>Psloggedon.exe

Net use
Conecta a una computadora o desconecta una computadora de un recurso compartido, o muestra información sobre las conexiones de la computadora. El comando también controla conexiones de red persistentes. Utilizado sin parámetros, “net use” recupera una lista de las conexiones de red.

Desde otra computadora utilizando un Sistema Windows XP se procede a utilizar el comando "net use" con el parámetro “/u” o “/user”, el cual permite especificar un nombre de usuario diferente con el cual se realizará la conexión, la contraseña para este usuario será solicitada luego.

C:\>net use \\192.16.0.15 /u:usuariow7

Se procede a ejecutar nuevamente el comando en el Sistema Windows 7. Observándose ahora la información de los usuarios registrados tanto localmente como mediante recursos compartidos .

Adicionalmente PsLoggedOn permite definir el nombre de una computadora remota desde la cual se listará la información de registro, como también especificar un nombre de usuario a ser buscado el la red de computadoras.

Fuentes:

http://technet.microsoft.com/en-us/sysinternals/bb897545.aspx
http://technet.microsoft.com/en-us/library/bb490717.aspx

Segmentation Fault en DMitry

Body

Mientras dictaba un Curso de Hacking Ético descubrí un “Segmentation Fault”, o Falla de Segmentación en DMitry. He tenido la oportunidad de escribir en el Blog sobre esta herramienta para capturar tanta información como sea posible sobre un objetivo. Las programas utilizados en Hacking Ético, Pruebas de Penetración, Forense de Computadoras, como cualquier otro tipo de programas también contienen errores y fallas. Sirva el presente texto para exponer algunos conceptos sobre el tema.

DMItry

Para conocer más sobre DMitry sugiero leer la siguiente publicación de mi Blog.

http://www.reydes.com/d/?q=DMitry

Segmentation Fault

Un Segmentation fault o Falla de Segmentación ocurre cuando un programa intenta acceder a una localización de memoria que no está permitida de acceder, o intenta acceder a una localización de memoria de una manera no permitida (como por ejemplo, intentar escribir a una localización de solo lectura, o sobrescribir una parte del sistema operativo).

Un Segmentation Fault se refiere al espacio de dirección de un programa. Con protección de memoria, solo el espacio de dirección del programa es leído, y de esto, solo la pila y la porción de lectura-escritura del segmento de datos de un programa se puede escribir, mientras que los datos de solo-lectura y el segmento de código no se puede escribir. El intentar leer fuera del espacio de dirección del programa, o escribir a un segmento de solo-lectura del espacio de dirección, generará un fallo de segmentación, de ahí el nombre.

La “Falla de Segmentación” fue descubierta en la versión 1.3a-1kali2 de DMitry incluida en Kali Linux. Mencionar adicionalmente que Kali Linux está con la última actualización. Nótese el texto “Segmentation Fault” en la última línea.

# dmitry -w objetivo . com

GDB

GDB, o GNU Project Debugger, permite visualizar que es lo que está sucediendo “dentro” de otro programa mientras se ejecuta, o lo que otro programa estaba haciendo al momento de “caerse”.

GDB puede realizar cuatro tipos principales de cosas (además de otras en apoyo de estas) para ayudar a atrapar fallas en el acto.

- Iniciar los programas, especificando algo que pueda afectar este comportamiento.
- Hacer que el programa se detenga bajo una condición específica.
- Examinar lo que ocurrió, cuando un programa se detuvo.
- Cambiar cosas en el programa, para experimentar con los efectos correctivos de un falla.

Para tratar de depurar un “Segmentation Fault” se puede utilizar GDB. Para realizar este procedimiento en un escenario ideal se debería en primera instancia compilar DMitry con los Símbolos de Depuración. (Debugging Symbols).

¿Qué son los Símbolos de Depuración?

La mayoría de programas y librerías están; por defecto; compilados con los Símbolos de Depuración incluidas (con la opción "-g" de gcc). Esto significa que cuando se depura un programa o librería que fue compilada con la información de depuración incluida, un depurador puede proporcionar no solo direcciones de memoria, sino también los nombres de las rutinas y variables. Sin embargo la inclusión de estos Símbolos de Depuración acrecientan un programa o librería de manera significativa.

Mencionar que sin los Símbolos de Depuración GDB no será capaz de hacer mucho.

Archivos “core”

Los archivos “core” son una imagen de un proceso que es creado por el sistema operativo cuando el proceso termina de manera inesperada. Los archivos “core” se crean cuando un programa se comporta de manera inadecuada debido a una falla, o violación de CPU o mecanismos de protección de memoria. El Sistema Operativo mata el programa y crea el archivo “core”.

Este archivo es útil para determinar que es lo estuvo mal con el proceso. En Kali Linux se utilizará el comando “ulimit” para activar la creación de archivos “core” de tamaño ilimitado. Luego se vuelve a ejecutar DMitry.

# ulimit -c unlimited
# dmitry -w objetivo . com

Finalizada la ejecución de DMitry de manera anormal, se muestra el mensaje “Segmentation fault (core dumped)”. Lo cual indica que se ha generado el respectivo Archivo “core” dentro del directorio actual, tal como se puede observar al realizar un listado del directorio.

Una de las maneras iniciar la depuración con GDB es indicarle el nombre del programa que genera el error, junto con el Archivo “core”.

# gdb dmitry core

Una segunda manera de iniciar la depuración con GDB es definir la opción “--args”, la cual permite pasar argumentos después del nombre del programa al programa cuando este se ejecute.

# gdb –args dmitry -w objetivo . com

El comando “r” en GDB permite ejecutar el programa, cuando el programa se "cae", se genera el mensaje “Program received signal SIGSEGV, Segmentation fault.”

GDB es un programa que tiene una gran cantidad de opciones, y al mismo tiempo una extensa y completa documentación.

Uno de los primeros comandos de GDB para inspeccionar la “caída” de DMitry sería el comando “backtrace”, el cual muestra un resumen de como el programa llegó a donde está. Muestra una línea por trama, para varias tramas, inicia con la trama que se está ejecutado (trama 0), seguida por el llamador (marco 1) y la pila.

Este un buen motivo para realizar una investigación y análisis más profundo, de tal manera que se pueda evaluar la factibilidad de una explotación satisfactoria. Aunque Kali Linux por defecto utilice al usuario “root” para ejecutar todos sus programas, pueden existir escenarios donde DMitry sea utilizado por usuarios sin privilegios. Esto puede generar como consecuencia que la explotación de esta falla conduzca a una elevación de privilegios, u otro comportamiento anómalo.

Fuentes:

http://mor-pah.net/software/dmitry-deepmagic-information-gathering-tool/
http://www.sourceware.org/gdb/
http://askubuntu.com/questions/295765/upstart-and-core-files
http://ubuntuforums.org/showthread.php?t=1494590
http://en.wikipedia.org/wiki/Segmentation_fault
http://stackoverflow.com/questions/8305866/how-to-analyze-a-programs-co…
http://www.linuxfromscratch.org/lfs/view/6.1/chapter06/aboutdebug.html
http://sourceware.org/gdb/current/onlinedocs/gdb/

Principio de Intercambio de Locard

Body

El principio de Intercambio de Locard es un concepto que fue desarrollado por el Dr. Edmond Locard (1877-1966). Locard especuló que cada vez que se hace contacto con otra persona, lugar, o cosa, el resultado es un intercambio de materiales físicos. El creía que no importa a donde vayan los criminales o lo que hagan los criminales, estando en contacto con cosas, los criminales dejan todo tipo de evidencia, incluyendo ADN, huellas, cabellos, células de piel, sangre, fluidos corporales, piezas de vestimenta, fibras y más. A la misma vez, ellos toman también algo desde la escena.

"Toute action de l’homme, et a fortiori, l’action violente qu’est un crime, ne peut pas se dérouler sans laisser quelque marque” - La police et les méthodes scienifiques (1934) , página 8. Traducido al Español significa “Cualquier acción de un individuo, y obviamente la acción violenta que constituye un crimen, no puede ocurrir sin dejar rastros“

No importa en cuantos minutos los rastros de materiales físicos (rastros de evidencia) cuenten una historia. El rastro de evidencia es factual. A diferencia de los humanos, no puede ser confundida por la excitación del momento, y no olvida. Es un testigo silencioso que habla cuando los humanos no pueden. La evidencia física no puede estar equivocada, no puede mentir, no puede estar totalmente ausente. Solo la falla humana para encontrarla, estudiarla y entenderla, puede disminuir su valor.

Cuando ha ocurrido un crimen, el objetivo del Investigador de la Escena del Crimen es reconocer, documentar y recolectar evidencia desde la escena de un crimen, y de algo o alguien que tenga contacto con la escena del crimen. Resolver el crimen es entonces dependiente de la habilidad de los investigadores para juntar todas las piezas de evidencia para formar un cuadro de lo ocurrido.

Fuente:

http://www.forensichandbook.com/locards-exchange-principle/

Volcar los Hashs de Contraseñas desde una Base de Datos PostgreSQL con MSF

Body

PostgreSQL es un poderoso sistema de base de datos open source relacional orientado a objetos. En la siguiente práctica se utilizará el servidor de Base de Datos PostgreSQL instalado y configurado en la máquina virtual de Metasploitable 2.

El módulo de nombre “PostgreSQL Login Utility” intenta autenticarse contra una instancia PostgreSQL utilizando combinaciones de nombres de usuario y contraseñas indicadas por las opciones USER_FILE, PASS_FILE, y USERPASS_FILE.

Se busca e indica luego a Metasploit Framework la utilización del módulo postgres_login.

> search postgres_login
> use auxiliary/scanner/postgres/postgres_login

Se listan las opciones del módulo, y únicamente se define la opción “RHOSTS”. En este caso, Metasploit Framework define por defecto la opción “USER_FILE” con un archivo conteniendo una lista de nombres de usuarios por defecto para postgresql.

> set RHOSTS 192.168.0.16

Al finalizar la ejecución del módulo, los resultados exponen que se ha encontrado el nombre de usuario “postgresql” utilizando como contraseña el mismo nombre de usuario. Estas credenciales obtenidas serán utilizadas en el siguiente procedimiento.

El módulo de nombre “Postgres Password hashdump” extrae los nombres de usuario y hashs de contraseñas cifradas desde un servidor Postgres, y las almacena para un procedimiento posterior de “Cracking”.

Se busca el módulo de nombre "postgres_hashdump" y se le indica a Metasploit Framework su utilización.

> search postgres_hashdump
> use auxiliary/scanner/postgres/postgres_hashdump

Se listan las opciones del módulo en uso y se procede a definir las opciones “DATABASE” con el nombre de la base de datos contra la cual se realizará la autenticación, esta información fue revelada por el módulo "postgres_login" utilizado en la primera fase; “template1”. La opción “RHOSTS” se define con la dirección IP del objetivo de evaluación, y tanto para el nombre de usuario y contraseña, “USERNAME” y “PASSWORD” se realiza la definición con el valor “postgres”.

Los resultados de la ejecución del módulo indican que se ha realizado un volcado de un nombre de usuario “postgres” y su respectivo hash de la contraseña cifrada.

Es factible utilizar un servicio como MD5 Online para intentar descifrar la contraseña, obteniendo como resultado que el hash de la contraseña corresponde a la cadena de caracteres “postgrespostgres”.

Fuentes:

http://www.postgresql.org/
http://www.rapid7.com/db/modules/auxiliary/scanner/postgres/postgres_lo…
http://www.rapid7.com/db/modules/auxiliary/scanner/postgres/postgres_ha…
http://www.md5online.org/

Volcar los Hashs de Contraseñas desde una Base de Datos MySQL con MSF

Body

La versión comunitaria de MySQL es la versión que se puede descargar libremente de la base de datos open source más popular. Está disponible bajo licencia GPL y tiene el soporte de una creciente y activa comunidad de desarrolladores open source.

En la siguiente práctica se utilizará el servidor de Base de Datos MySQL instalado y configurado en Metasploitable 2.

Se procede a buscar e indicar la utilización a Metasploit Framework del módulo auxiliar mysql_login. Este módulo simplemente consulta a la instancia MySQL por un usuario/contraseña específico. Por defecto es el usuario root con una contraseña en blanco.

> search mysql_login
> use auxiliary/scanner/mysql/mysql_login

Se listan las opciones del módulo en uso, para luego proceder a definir las opciones “RHOSTS” y “USER_FILE”

> show options
> set RHOSTS 192.168.0.16
> set USER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt

Se ejecuta el módulo auxiliar, obteniendo como resultado que el usuario "guest" y "root" tienen una contraseña en blanco. Para el siguiente procedimiento se utilizará al usuario "root".

El módulo MySQL Password Hashdump extrae los nombres de usuarios y hashes de contraseñas cifradas desde un servidor de Base de Datos MySQL, y los almacena para poder realizar luego un procedimiento de “Cracking”.

Se busca e indica la utilización a Metasploit Framework del módulo mysql_hashdump.

> search mysql_hashdump
> use auxiliary/scanner/mysql/mysql_hashdump

Se listan las opciones del módulo en uso y se definen las opciones “RHOSTS” y “USERNAME”. En este caso se está utilizando el usuario “root” con una contraseña en blanco, la cual fue descubierta utilizando el módulo anterior.

> show options
> set RHOSTS 192.168.0.16
> set USERNAME root

El módulo ha finalizado su funcionamiento. Se muestra un mensaje donde se indica que la tabla de hashs ha sido guardada en un archivo ubicado en un directorio definido.

Al visualizar el contenido de este archivo, se detalla que se han obtenido tres nombres de usuarios con contraseñas en blanco.

En el escenario donde se obtengan nombres de usuario y sus respectivos hashs de contraseñas, se deben utilizar herramientas de "Cracking" para tratar de obtener las contraseñas en texto plano.

Fuentes:

http://www.mysql.com/products/community/
https://dev.mysql.com/doc/refman/5.7/en/information-schema.html
http://www.rapid7.com/db/modules/auxiliary/scanner/mysql/mysql_hashdump
http://www.rapid7.com/db/modules/auxiliary/scanner/mysql/mysql_login

Detectar Recursos Compartidos de Archivos en Red - NFS

Body

NFS (Network File System) o por su traducción al idioma Español Sistema de Archivos de Red, es un protocolo de sistema de archivos distribuido, el cual permite a los usuarios sobre una computadora cliente el acceder a archivos a través de la red como si se accediera a un almacenamiento local.

Una manera de encontrar recursos compartidos de archivos en red es utilizar el módulo “nfsmount” de Metasploit Framework.

Se procede a buscar el módulo auxiliar "nfsmount".

> search nfsmount

Para obtener más información del módulo se utiliza el comando info.

> info auxiliary/scanner/nfs/nfsmount

Se le indica a Metasploit Framework el uso del módulo nfsmount, para luego mostrar sus opciones.

> use auxiliary/scanner/nfs/nfsmount
> show options

Se define la opción RHOSTS con la dirección IP del objetivo de evaluación, y luego se procede a ejecutar el módulo.

> set RHOSTS 192.168.0.16
> run

En la anterior imagen se puede visualizar que se ha identificado el recurso compartido “/”.

Otra herramienta que se utiliza para detectar recursos compartidos de archivos en red es nmap. El script de nombre “nfs-ls” de nmap, intenta obtener información útil desde las exportaciones de archivos NFS. El script empieza enumerando y montando las exportaciones NFS remotas.

# nmap -n -Pn -p111 --script=nfs-ls 192.168.0.16

Esta información también puede ser obtenida de manera manual utilizando el comando “showmount”. El cual permite mostrar información de montaje para un servidor NFS, para esto realiza consultas al demonio mount sobre el objetivo remoto por información sobre el estado del servidor NFS en esta máquina. La opción “-e” muestra la lista de exportación del servidor NFS.

# showmount -e 192.168.0.16

Ahora para montar el recurso compartido en nuestro sistema Kali Linux se utilizan los siguientes comandos. El comando "mkdir" crea el directorio de nombre /objetivo/ dentro de la carpeta /tmp/. Y el comando mount es el encargado de montar el recurso compartido en la carpeta /tmp/objetivo/.

# mkdir /tmp/objetivo
# mount -o nolock -t nfs 192.168.0.16:/ /tmp/objetivo/

Acto seguido y a modo de practica, se ingresa al directorio donde se ha montado el recurso compartido, y se procede a visualizar las primeras líneas del archivo /etc/shadow del objetivo de evaluación.

# cd /tmp/objetivo/
# head etc/shadow

Fuentes:

http://en.wikipedia.org/wiki/Network_File_System
http://www.rapid7.com/db/modules/auxiliary/scanner/nfs/nfsmount
http://nmap.org/nsedoc/scripts/nfs-ls.html
https://community.rapid7.com/docs/DOC-1875

Módulo Samba Symlink Directory Traversal de MSF

Body

Este módulo en Metasploit Framework explota una falla de recorrido de directorio en el servidor Samba CIFS (Common Internet File System). Para explotar esta falla, debe ser especificado un directorio que pueda ser escrito. El nuevo directorio creado enlazará al sistema de archivos raíz.

Este problema se genera de la combinación de dos características en Samba, cada uno de los cuales por si mismo son útiles para los administradores, pero en combinación permiten a los usuarios acceder a cualquier archivo sobre el sistema en el que el nombre de usuario logeado tiene permisos de lectura (este no es un problema de escalado de privilegios).

Por defecto Samba se entrega con el parámetro “wide links = yes” el cual permite a los administradores localmente (sobre el servidor) añadir un enlace simbólico dentro de un recurso compartido exportado el cual los clientes SMB/CIFS (Sever Message Block/Common Internet File System) seguirán.

Como un ejemplo, se tiene la siguiente información:

[tmp]
path = /tmp
read only = no
guest ok = yes

El administrador podría añadir un enlace simbólico:

$ ln -s /etc/passwd /tmp/passwd

Y los clientes SMB/CIFS podrían entonces ver un archivo llamado “passwd” dentro del recurso [tmp] que podría ser leído y permitir a los clientes leer el archivo /etc/passwd.

Si el parámetro “wide links” está definido a “no”, cualquier intento de leer este archivo podría fallar con un error de “acceso negado”.

El problema ocurre debido a que Samba permite a los clientes utilizar extensiones Unix (los cuales son también activados por defecto) para crear enlaces simbólicos sobre recursos montados remotamente sobre los cuales se tiene acceso de escritura que apuntan a cualquier ruta sobre el sistema de archivos.

Esto es por diseño, como las aplicaciones ejecutándose sobre clientes Unix pueden tener buenas razones para crear enlaces simbólicos en cualquier lugar sobre el sistema de archivos que tienen acceso de escritura para apuntar a archivos locales (como /etc/passwd).

En las posteriores versiones de samba se tiene el parámetro “wide links” definido a “no” por defecto.

Para la siguiente práctica se utilizará como objetivo de evaluación a Metasploitable2.

Ingresar a la consola de Metasploit Framework.


Buscar el módulo:

> search samba_symlink

Indicar a Metasploit Framework la utilización de este módulo "samba_symlink_traversal".

> use auxiliary/admin/smb/samba_symlink_traversal

Entre las opciones expuestas por este módulo se requiere definir un recurso compartido con permisos de escritura. Una manera de obtener esta información es utilizando el comando smbclient.

# smbclient -L \\192.168.0.16

Identificado el recurso compartido “/tmp/” se procede a definir esta información en las opciones del módulo.

> set RHOST 192.168.0.16
> set SMBSHARE tmp

Ejecutar el módulo del exploit.

> exploit

El mensaje detallado por MSF indica que ahora al acceder al recurso compartido \\192.168.0.16\rootfs\ será factible navegar por el sistema de archivo raíz del objetivo de evaluación.

Se utiliza nuevamente la herramienta smbclient para acceder a este recurso compatido.

# smbclient //192.168.0.16/tmp

Ahora ya se tiene la capacidad de explorar el sistema de archivos raíz del objetivo de evaluación.

Fuentes:

https://www.rapid7.com/db/modules/auxiliary/admin/smb/samba_symlink_tra…
http://www.osvdb.org/62145
http://www.samba.org/samba/news/symlink_attack.html

Rastreo de un Correo Electrónico enviado desde Gmail hacia Outlook (Hotmail)

Body

Es de conocimiento público que servicios de correo electrónico gratuitos como Gmail, Outlook (Hotmail), enmascaran o no muestran información sobre la dirección IP origen de un correo electrónico. El argumento utilizado para “ocultar” estos datos se basa en salvaguardar y dar seguridad a los usuarios.

En una reciente investigación, se me presentó un escenario en el cual si era factible obtener la dirección IP de origen de un correo electrónico enviado desde Gmail hacía Outlook (Hotmail). A continuación detallo el procedimiento realizado.

En el buzón de entrada o el buzón donde resida el correo, hacer clic derecho sobre el mensaje y seleccionar “Ver Código Fuente del Mensaje”. Se abrirá una nueva ventana con la fuente del mensaje, incluyendo sus cabeceras.

Para realizar el rastreo de un correo electrónico, la información de las cabeceras se debe leer desde la parte inferior hacía la parte superior.

Received

Cada servidor SMTP añade un campo Received en la parte superior de cada mensaje entrante, proporcionando detalles sobre como se recibió el mensaje, pero lo más importante es la dirección IP del cliente.

Se procede a analizar el primer campo Received.

Received: from [192.168.1.37] ([190.***.***.***])
by mx.google.com with ESMTPSA id h6***********yhb.7.2014.02.25.03.36.35
for *************@hotmail.com>
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
Tue, 25 Feb 2014 03:36:36 -0800 (PST)

  • “from” es seguido por un nombre de dominio o dirección IP.
  • “by” es seguido por un nombre de dominio o dirección IP.
  • “for” es seguido por una dirección de correo electrónico, en este caso del destinatario.

De esta información obtenida se infiere lo siguiente.

La dirección 192.168.1.37 corresponde a la dirección IP interna asignada a la computadora o dispositivos desde el cual se envío el correo electrónico.

La dirección IP 190.***.***.*** corresponde a la dirección IP Externa asignada al router o modem que permite establecer la conexión con Internet.

El envío de un correo electrónico desde Gmail hacía Outlook (Hotmail) utilizando la interfaz web o desde un navegador web, no expone información sobre la dirección IP del origen en sus cabeceras. La pregunta es ¿Porqué en este caso si se expone esta información?. Y la respuesta la proporciona la siguiente línea ubicada en las cabeceras.

User-Agent: Mozilla/5.0 (Windows NT 6.2; rv:27.0) Gecko/20100101 Thunderbird/27.0

Utilizando la experiencia se puede inferir que el correo electrónico se envío utilizando un cliente de correo de nombre Thunderbird versión 27.0. Utilizando un Sistema Operativo Windows.

A continuación se utiliza una herramienta online (user-agent-info), la cual permite analizar las cadenas del agente de usuario (User Agent).

La información obtenida corrobora que el cliente utilizado es Thunderbird versión 27 y que el Sistema Operativo es un Windows 8. Esta herramienta también expone otra información que puede ser de relevancia para el caso.

En la siguiente práctica se utilizará una herramienta online (Trace Email), la cual permite realizar el rastreo de un correo electróninco de manera automática y visual, en base a las cabeceras del correo electrónico.

En este caso, pude corroborar que toda la información obtenida corresponde al origen desde el cual se envió un correo electrónico de Gmail hacía Outlook (Hotmail).

Se pudo obtener esta información debido a que el correo electrónico no se envío utilizando la interfaz web de Gmail con un navegador, sino utilizando un cliente de correo instalado en la computadora que utilizó la persona para enviar el correo electrónico.

Fuentes:

http://answers.microsoft.com/en-us/outlook_com/forum/oemail-osend/traci…
http://cr.yp.to/immhf/envelope.html
http://user-agent-string.info
http://www.ip-address.org/tracker/trace-email.php