Vulnerabilidad de Redirección no Validada en Sitio Web de Mcafee

Body

Frecuentemente las aplicaciones web redireccionan a los usuarios hacia otras páginas, o utilizan reenvíos internos de una manera similar. Algunas veces la página objetivo se especifica en un parámetro no validado, lo cual permite a los atacantes seleccionar la página de destino. En este caso particular la redirección hacía una página web remota requiere de una acción adicional por parte del usuario, tal como se expondrá a continuación.

El propósito original era ingresar al sitio web de Mcafee en donde es factible descargar algunas herramientas gratuitas. Ubicada la herramienta se procede a hacer clic en el respectivo enlace para descargarla.

Se presenta una nueva página donde se requiere hacer clic en el enlace con el texto “Dowload this tool now”.

Se apertura un nueva ventana donde se presenta información relacionada sobre los términos de uso. Pero lo resaltante aquí no es precisamente esta información, sino la URL expuesta en la barra de direcciones.

http://www.mcafee.com/us/downloads/free-tools/termsofuse.aspx?url=http:…

Esto genera la pregunta, ¿Que sucede si se cambia en valor de parámetro “url”?. Para obtener la respuesta, la primera prueba se realizó con la URL “http://www.google.com

http://www.mcafee.com/us/downloads/free-tools/termsofuse.aspx?url=http:…

Aunque en la imagen anterior no se puede visualizar la posición del mouse sobre el enlace con el texto “Download Now”, si es factible visualizar la url “www.google.com” en la parte inferior del navegador cuando se posiciona el mouse sobre el enlace. Al hacer clic, se apertura una nueva pestaña con la página de Google.

La siguiente pregunta es, ¿Puedo incluir otra página con contenido más interesante?. Por ejemplo una página web conteniendo código javascript. Para esto se utiliza un sitio web remoto que contiene una página html con un sencillo código javascript.

http://www.mcafee.com/us/downloads/free-tools/termsofuse.aspx?url=http:…

Notar en la imagen anterior que el enlace ubicado en la parte inferior con el texto “Download Now” direcciona al sitio web que se le ha indicado. Y al hacer clic en el, se apertura una nueva ventana con el código contenido en la página web.

Aunque en este caso se requiere que el usuario haga clic en dos enlaces, existen probabilidades de ataques exitosos, de esta manera el atacante redireccioná al usuario a sitios web maliciosos que ejecuten código indeseado, instalen malware, realicen phishing, o se aprovechen de alguna vulnerabilidad en el navegador del usuario.

Fuentes:

https://www.owasp.org/index.php/Top_10_2013-A10-Unvalidated_Redirects_a…
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

Detectar la Huella del Servidor Web con httprecon

Body

El proyecto httprecon realiza investigaciones en el campo de las huellas de los servidores web, también conocido como huella HTTP. El objetivo es la identificación con alta precisión de implementaciones httpd. Esto es muy importante dentro del análisis profesional de vulnerabilidades.

Además de la discusión sobre diferentes enfoques y la documentación de resultados obtenidos, también se proporciona una implementación para el análisis automático. Este software mejorará la facilidad y eficiencia de este tipo de enumeración. Se utilizan los enfoques o métodos tradicionales como captura del banner (banner-grabbing), enumeración del código de estado y análisis en el orden de las cabeceras. Sin embargo, se han introducido muchas otras técnicas de análisis para incrementar las posibilidades de obtener la huella precisa del servidor web.

Se descarga la versión más reciente de la herramienta y se ejecuta httprecon.

Se escribe el dominio correspondiente al objetivo de evaluación en la parte superior (Target), para luego presionar el botón “Analyze”. Luego de esto se apertura una conexión TCP al puerto objetivo, por defecto el 80. Si la conexión puede ser establecida, se envían peticiones http al servicio objetivo. Este entonces reaccionará con sendas respuestas. Estas respuestas serán diseccionadas para identificar algunos elementos específicos de la huella. Estos elementos serán buscadas en la base de datos local de huellas. Si hay coincidencia, se marca como “identificado”. Todas estas marcas se cuentan, así httprecon es capaz de determinar cual implementación tiene el mejor ratio de coincidencia.

Los resultados obtenidos por httprecon se exponen en la parte inferior. Para el caso de la práctica realizada, la herramienta infiere que la huella del servidor web corresponde a un Microsoft IIS/6.0.

En la parte intermedia de la herramienta se presentan nueve pestañas. Esto es debido a que el motor de búsqueda utiliza nueve diferentes peticiones, las cuales son enviadas hacia el servidor web. Estos provocarán respuestas, las cuales puede ser utilizadas para obtener la huella. Se utilizan diferentes tipos de peticiones. Algunas de estas son muy comunes y legítimas, por ejemplo “GET / HTTP/1.1” y otras que usualmente no son aceptadas debido a su contenido de naturaleza maliciosa, por ejemplo una URI muy extensa en una petición GET.

La disección de estas respuestas es manejado por el interprete y el motor de huellas. Diferentes elementos de la huella son buscados; como el código de estado, banner, longitud de Etag, orden de la cabecera,e tc. Estos elementos son guardados en la base de datos local de huellas, lo cual permite la suma de las coincidencias. Todos los datos son correlacionados, lo cual permite generar el reporte final del escaneo de la huella para el servidor web.

httprecon permite definir configuraciones específicas sobre las pruebas que realiza. Para acceder a ella se procede a ingresar a la opción “Configuración -> Edit Settings”.

La pestaña Pruebas (Tests), permite activar o desactivar las pruebas que se realizarán contra el objetivo de evaluación. La prueba “scan_test_attack” puede causar algún tipo de daño al servicio objetivo y podría también ser fácilmente detectado por los sistemas de seguridad.

Otra opción de configuración interesante se ubica en la pestaña Recursos (Resources). La definición del recurso “req_resource_attack” será utilizado dentro de una solicitud de ataque tosco para activar algunos mecanismos de seguridad.

En la pestaña Agente (Agente) es factible definir el nombre del agente a ser utilizado dentro de la petición HTTP que declarará el cliente. Algunos sitios web podrían prohibir intentos de acceso a clientes específicos.

El obtener la huella de un servidor web es una tarea critica para las personas que realizan Pruebas de Penetración. El conocer la versión y el tipo de servidor web en funcionamiento permite determinar vulnerabilidades conocidas y el exploit adecuado a utilizar durante la prueba.

Fuentes:

http://www.computec.ch/projekte/httprecon/
http://www.computec.ch/projekte/httprecon/?s=documentation
https://www.owasp.org/index.php/Fingerprint_Web_Server_%28OTG-INFO-002%…

Obtener Contraseñas utilizando Servicios en Línea con findmyhash

Body

findmyhash es un programa que intenta romper (crackear) diferentes tipos de hashes utilizando servicios en línea gratuitos.

La herramienta findmyhash es capaz de aceptar algoritmos MD4, MD5, SHA1, SHA224, SHA256, SHA384, SHA512, RMD160, GOST, WHIRLPOOL, LM, NTLM, MYSQL, CISCO7, JUNIPER, LDAP_M5 y LDADP_SHA1

Según se anuncia en su sitio web, la versión 2.0 está próxima a publicarse, la cual incluirá algunos cambios y mejoras, como las siguientes.

  • Reconocimiento de hashes vacíos
  • Análisis multitarea
  • Reconocimiento del algoritmo desde el valor hash
  • Opciones de Pausa y resumen
  • Guardar los resultados en un archivo

Se descarga la herramienta desde el sitio web del proyecto.

$ sudo wget http://findmyhash.googlecode.com/files/findmyhash_v1.1.2.py

findmyhash ha sido desarrollado en python, por lo que es requerido tener instalado el interprete para proceder con su ejecución. La cual por defecto invoca a la infomación sobre su uso, los algoritmos soportados y sus opciones.

En la primera práctica se utiliza la opción “-h” la cual permite definir el hash de la contraseña que se desea averiguar. Anotar que se debe especificar el tipo de hash, en este caso se trata de un hash MD5.

$ sudo python findmyhash_v1.1.2.py MD5 -h dab64765f3d4fc29ced777be274337ea

El resultado ha sido obtenido casi de inmediato desde el primer servicio gratuito en línea consultado.

La siguiente práctica implica la utilización de una contraseña que contiene un signo de puntuación y dos dígitos, cifrado con el algoritmo SHA1.

$ sudo python findmyhash_v1.1.2.py SHA1 -h 4dff5da7e476eb0f3372799c2abc385795d1a258

Al finalizar la consulta de todos los servicios en línea; que utiliza la herramienta findmyhash para tratar de averiguar la contraseña; se expone un mensaje donde se indica que no ha sido factible obtenerla.

La opción “-f” de findmyhash permite definir un archivo conteniendo un listado de hashes. En este caso particular, hashes LM de un Sistema Windows.

$ sudo python findmyhash_v1.1.2.py LM -f /tmp/hashes_LM.txt

La opción “-g” de la herramienta findmyhash permite utilizar el motor de búsqueda Google para buscar un hash.

$ sudo python findmyhash_v1.1.2.py MD5 -g c1bfc188dba59d2681648aa0e6ca8c8e

Finalizada la ejecución de findmyhash, se expone un mensaje donde se detalla que Google no tiene ningún resultado positivo sobre el hash buscado.

Fuentes:

http://code.google.com/p/findmyhash/

Detectar Balanceador de Carga HTTP con halberd

Body

Halberd permite descubrir balanceadores de carga HTTP. Es útil para auditorias de seguridad a aplicaciones web y para evaluar la configuración del balanceador de carga.

¿Qué es un Balanceo de Carga?

El Balanceo de Carga es un método para distribuir cargas de trabajo entre diversos recursos de cómputo, como computadoras, arreglos de computadoras, enlaces de red, unidades de procesamiento central y unidades de disco. El Balanceo de carga ayuda a optimizar el uso de recursos, maximizando el rendimiento, minimizando el tiempo de respuesta, y evita la sobrecarga en alguno de los recursos. El utilizar diversos componentes con balanceo de carga en lugar de un único componente puede incrementar la confiabilidad a través de redundancia.

Conceptos

Halberd opera mediante las siguientes etapas.

1. Inicialmente, envía varias solicitudes al servidor objetivo y registra sus respuesta. Esto es llamado la fase de muestreo. El tiempo invertido en esta etapa y la cantidad de solicitudes HTTP a ser enviadas puede ser especificada utilizando las opciones “--time” y “parallelism” en la linea de comando.

2. Después de que la fase de análisis finaliza, ya sea de manera normal o debido a una interrupción del usuario presionando las teclas “Control + C”, el programa procesa las réplicas buscando señales de balanceo de carga. Esto es llamado la fase de análisis.

3. Finalmente, halberd escribe un reporte de sus hallazgos a la pantalla (o a un archivo si se usa la opción “--out”).

La siguiente es una lista de técnicas de detección actualmente implementados por halberd

  • Comparación de Fecha
  • Nombre del campo de cabecera MIME, valores y su orden
  • Generar altas cantidades de tráfico
  • Utilizar diferentes URLs
  • Detectar cache en el lado del servidor
  • Obtener las direcciones IP públicas

Para realizar la instalación de halberd se requiere descargar los archivos pertinentes, y tener instalado python.

# git clone https://github.com/jmbr/halberd.git

Luego de lo cual se debe ejecutar el script de instalación.

# python setup.py install

Se visualiza la ayuda de halberd.

# halberd -h

Para la primera práctica se utiliza la opción “-v”, la cual activa la verbosidad. De esta manera se explica lo que halberd está realizando.

La opción “-o” permite definir un archivo en el cual escribirá el reporte con los resultados.

En la siguiente práctica realizada se expone un escenario particular, en el cual los controles de seguridad implementados en el objetivo de evaluación, no permiten que halberd complete su funcionamiento.

En las prácticas realizadas no ha sido factible detectar un balanceador de carga en alguno de los objetivos de evaluación. En caso se lograse su detección, la siguiente acción es analizar cuidadosamente los resultados obtenidos para planificar adecuadamente las siguientes etapas de la Prueba de Penetración.

Fuentes:

https://github.com/jmbr/halberd
http://en.wikipedia.org/wiki/Load_balancing_%28computing%29

Explotar MS08-067 con MSF

Body

La explotación de esta vulnerabilidad es un clásico en lo referente a realizar demostraciones o prácticas sobre la diversidad de funcionalidades que proporciona Metasploit Framework. Del mismo modo, no es lejano o ausente el hecho de que este tipo de fallas sean encontradas aún en escenarios reales.

El boletín de seguridad de Microsoft MS08067 está categorizado como crítico, e implica una vulnerabilidad en el servicio Server que permitiría a un atacante remoto la ejecución de código.

En el resumen ejecutivo del boletín se indica que la actualización proporcionada resuelve una vulnerabilidad reportada de manera privada en el servicio Server. Esta vulnerabilidad permitiría a un atacante remoto la ejecución de código en un sistema afectado que reciba un solicitud RPC (Remote Procedure Call) especialmente manipulada. Sobre sistemas Microsoft Windows 2000, Windows XP, y Windows Server 2004, un atacante podría explotar esta vulnerabilidad sin autenticación para ejecutar código arbitrario. Es posible que esta vulnerabilidad sea utilizada en la creación de un exploit en forma de un gusano (worm). Las configuraciones por defecto de los firewalls estándar y las mejores prácticas pueden ayudar a proteger los recursos de red desde ataques originándose fuera del perímetro de la organización.

De la información proporcionada por el módulo de explotación “windows/smb/ms08_067_netapi” se indica que este módulo explota una falla en la interpretación de la ruta del código de canonización de NetAPI32.dll a través del servicio Server. Este módulo es capaz de evadir NX sobre algunos sistemas operativos o paquetes de servicio.

NX (No eXecute) es un funcionalidad construida dentro de algunos CPUs para prevenir la ejecución de código en ciertas áreas de memoria. En Windows, NX es implementado como Prevención de Ejecución de Datos (DEP).

Continuando con la información proporcionada por el módulo, mencionar que se debe seleccionar el objetivo adecuado para prevenir que el servicio Server (junto con una docena de otros en el mismo proceso) caigan. Los objetivos Windows XP parecen manejar diversos eventos de explotación satisfactorios, pero objetivos 2003 podrían algunas veces caer o colgar eventos subsecuentes.

Para la presente práctica se utilizará como objetivo un Sistema Windows Server 2003 como objetivo de evaluación.

En primera instancia se utilizar el módulo auxiliar “ms08_067_check”, el cual permite realizar un escaneo para verificar esta vulnerabilidad.

Se busca el módulo, se define su utilización y luego se listan sus opciones.

> search ms08_067_check
> use auxiliary/scanner/smb/ms08_067_check
> show options

Se define la opción RHOSTS con la dirección IP del objetivo de evaluación, para luego ejecutar el módulo auxiliar. Los resultados obtenidos indican que el objetivo es vulnerable.

> set RHOSTS 192.168.0.18
> run

Identificada y “verificada” la vulnerabilidad es momento de explotarla. Para esto se utilizará el super conocido módulo de explotación “ms08_067_netapi” incluido en Metasploit Framework. Se procede a buscar, definir su utilización y mostrar la opciones del módulo de explotación pertinente.

> search ms08_067_netapi
> use exploit/windows/smb/ms08_067_netapi
> show options

Adicionalmente se requiere definir un “Payload” o Carga a ser utilizada por el exploit. En esta oportunidad se utilizará el payload “windows/vncinject/bind_tcp”, el cual escuchará o atenderá por una conexión, inyectando un DLL VNC mediante un cargador por etapas.

Se define la dirección IP del objetivo de evaluación y se ejecuta el exploit.

> set RHOST 192.168.0.18
> run

Culminada la ejecución del Exploit se tendrá acceso al objetivo mediante una interfaz gráfica.

Fuentes:

http://technet.microsoft.com/en-us/security/bulletin/ms08-067
http://en.wikipedia.org/wiki/Remote_procedure_call
http://www.rapid7.com/db/modules/auxiliary/scanner/smb/ms08_067_check
http://www.rapid7.com/db/modules/exploit/windows/smb/ms08_067_netapi
http://www.offensive-security.com/metasploit-unleashed/Payload_Types
http://www.rapid7.com/db/modules/payload/windows/vncinject/bind_tcp

BeEF - Browser Explotation Framework Project

Body

BeEF es la abreviatura de una Estructura de Trabajo para la Explotación de Navegadores Web. Es una herramienta para Pruebas de Penetración orientada al navegador web. Dado el crecimiento relacionado a los ataques procedentes desde Internet contra clientes web, incluyendo clientes móviles. BeEF permite a los profesionales en pruebas de penetración evaluar la postura de seguridad actual de un entorno objetivo utilizando vectores de ataque en el lado del cliente. A diferencia de otras estructuras de trabajo, BeEF va más allá del perímetro de la red y el sistema del cliente, y examina la explotabilidad dentro del contexto de una puerta abierta: el navegador web. BeEF enganchará uno o más navegadores web y los utilizará para lanzar módulos de comandos dirigidos y ataques más nuevos contra el sistema en el contexto del navegador web.

El proyecto BeEF utiliza Github. Para obtener la copia mas reciente ejecutar el siguiente comando.

$ sudo git clone https://github.com/beefproject/beef

Se procede a ejecutar BeEF.

$ sudo beef

Utilizando un navegador web como Firefox se ingresa a la interfaz de administración de BeEF. El usuario y contraseña por defecto es “beef / beef”

Luego de ingresar las credenciales válidas de autenticación se presenta la Interfaz de control de BeEF. Lo primero que se requiere en este punto es tener navegadores web enganchados, los cuales serán mostrados en el panel izquierdo.

Para propósitos de esta practica se utilizará una de las URL que propociona BeEF para enganchar al navegador web de la victima. http://192.168.0.14:3000/demos/basic.html

Utilizando un navegador web desde un Sistema Windows se procede a visitar esta URL.

De regreso a la interfaz de administración de BeEF, se expondrán en el panel izquierdo todos los navegadores web que hayan sido enganchados.

Al seleccionar uno de los navegadores recién enganchados y hacer clic en la pestaña “Details” del panel derecho, se presentarán los detalles del navegador.

Al hacer clic en la pestaña “Commands” del panel derecho se mostrarán botones de diversos colores al inicio de cada módulo. De manera interna, BeEF detecta cuales navegadores se engancharon y conoce cuales módulos funcionan con cada navegador.

El botón de color verde funciona en el navegador seleccionado. El botón de color naranja funciona, pero el usuario puede detectarlo. Esto puede ser algo legítimo como por ejemplo para los módulos de ingeniería social. Y el botón de color rojo, no funciona para el navegador seleccionado.

Para la siguiente práctica se utilizará el módulo de color naranja denominado“Create Alert Dialog”, el cual enviará un dialogo de alerta al navegador enganchado, con el texto “Hola Mundo!”.

Luego de presionar el botón “Execute”, en el navegador enganchado se abrirá una ventana con el texto antes mencionado.

BeEF es una poderosa herramienta con capacidades para realizar captura de información, Ingeniería Social, Descubrimiento de Red, inclusión de “payloads” de Metasploit Frameworks, Tunneling, escaner XSS, persistencia, entre otras opciones más.

Fuentes:

http://beefproject.com/
https://github.com/beefproject/beef/wiki

Identificar Hashes con hash-identifier

Body

Este software permite identificar diferentes tipo de hashes utilizados para cifrar datos y especialmente contraseñas.

¿Qué es un Función Hash?

Una función hash es cualquier algoritmo que mapea datos de una longitud arbitraria hacia un dato de una longitud fija. Los valores retornados por una función hash son llamados valores hash, códigos hash, sumas hash, sumas de verificación o simplemente hashes.

Una función hash debe ser determinista: cuando es invocado sobre dos piezas de datos idénticos (por ejemplo dos cadenas conteniendo exactamente los mismos caracteres), la función debe producir el mismo valor. Esto es crucial para la exactitud de virtualmente todos los algoritmos basados en hashing.

La función hash es típicamente no reversible, significando que no es posible reconstruir un dato de entrada “x” solo desde un valor hash “h(x)”. En muchas aplicaciones, es común que varios valores tengan un hash del mismo valor, una condición que es llamada colisión. Por lo tanto las funciones hash deben estar diseñadas para minimizar las probabilidades de colisions.

Para utilizar hash-identifier se requiere descargar unicamente un archivo de python.

Se procede a ejecutar la herramienta.

$ sudo python Hash_ID_v1.1.py

A continuación del texto “HASH:” escribir o pegar el hash a identificar.

Para la siguiente práctica se utilizará el hash obtenido desde un Sistema GNU/Linux y otro hash obtenido desde un Sistema Windows.

Los resultados obtenidos en la identificación del hash obtenido desde un Sistema GNU/Linux indican que se trata de un hash MD5 (Unix), lo cual es correcto.

Para el proceso de identificación del hash obtenido desde un Sistema Windows, la herramienta expuso el hash correcto en la segunda posición. SAM - (LM_Hash:NT_hash). Lo cual es correcto.

El tener cierto grado de experiencia y conocimiento permite realizar la identificación visual de algunos tipos de hash. Esto aunado a la utilización de una herramienta como “hash-identifier”, maximiza las probabilidades y exactitud para la identificación correcta de los hashes.

Fuentes:

http://code.google.com/p/hash-identifier/
http://en.wikipedia.org/wiki/Hash_function

Listar Sesiones de Registro con LogonSessions

Body

En el transcurso de una investigación se requiere encontrar cuales son los usuarios registrados en el sistema. Esto permite al investigador tener un contexto para recolectar otro tipo información releventa y necesaria, como el contexto de un proceso en ejecución, el propietario de un archivo, o el último acceso a los archivos.

LogonSessions

Si se piensa que cuando se registra (logon) en un sistema donde solo hay una sesión de registro activo, esta utilidad sorprenderá. Este programa lista todas la sesiones de registro actualmente activas y , si se especifica la opción “/p”, los procesos en ejecución en cada sesión.

La manera más sencilla de ejecutar el programa es escribiendo el comando, o cual listará el identificador de la sesión de registro, nombre de usuario, paquete de autenticación, tipo de registro (logon), sesión, SID (Security IDentifier), tiempo de registro (logon), servidor de registro (logon), dominio DNS y UPN (User Principal Name).

La siguiente práctica implica ejecutar LogonSessions con la opción “/p”. Esta opción permite listar los procesos ejecutándose en cada sesión.

En base a los resultados obtenidos se puede proceder a obtener más información sobre estos procesos o mapear los procesos a puertos.

Fuentes:

http://technet.microsoft.com/en-us/sysinternals/bb896769.aspx

Crear Listas de Palabras con Crunch

Body

Crunch es un generador de listas de palabras. Cuando se especifique un conjunto de caracteres estándar o un conjunto específico, Crunch generará todas las posibles combinación y permutaciones. Crunch creará una lista de palabras basado en un criterio específico. Además, la salida generada por Crunch puede ser enviada a la pantalla, a un archivo, u otro programa.

Características de Crunch

  • Crunch genera listas de palabras en forma de combinaciones o permutaciones
  • Puede dividir la salida en base al número de lineas o al tamaño del archivo
  • Tiene soporte de resumen
  • Los patrones ahora soportan números y símbolos
  • Los patrones ahora soportan caracteres mayúsculas y minúsculas de forma separada
  • Añade un reporte de estado cuando se generan varios archivos
  • Nueva opción “-l” para soporte literal de @,%^
  • Nueva opción “-d” para limitar caracteres duplicados
  • Ahora tiene soporte Unicode.

Cadena de Conjunto de Caracteres

Se puede especificar conjuntos de caracteres en Crunch para ser utilizados en la linea de comandos, o si se deja en blanco crunch usará el conjunto de caracteres por defecto. El orden debe ser, caracteres minúsculas, caracteres mayúsculas, números, y otros símbolos. Si no se sigue este orden no se obtendrán los resultados deseados. Se tiene que especificar valores para los tipos de caracteres o un signo más. Anotar que si se desea incluir caracteres de espacio en el conjunto de caracteres se debe escapar utilizando el caracter “\” o encerrar el conjunto de caracteres en comillas, por ejemplo “abc ”.

Los conjuntos de caracteres por defecto están ubicados en el directorio “/usr/share/crunch/”. En la siguiente imagen se muestra el contenido de este directorio y las primeras lineas del archivo charset.lst.

La manera más sencilla de ejecutar Crunch es definiendo la longitud mínima (de inicio) y máxima (de fin) de la cadena que se desea crear. La opción “-o” especifica el archivo al cual escribir los resultados.

# crunch 1 5 -o /tmp/lista_c5.txt

Al finalizar su ejecución, se muestran algunas estadísticas del proceso realizado.

Se procede a visualizar las primeras y últimas lineas del archivo creado por Crunch.

Los patrones en Crunch son de valiosa utilidad, dado que permiten especificar requerimientos muy específicos para la creación de listas de palabras. Por ejemplo, si se descubre que la manera en la cual se construyen las contraseñas son de cuatro caracteres en minúsculas con dos números al final. En el siguiente comando se utiliza “lalpha” el cual define el conjunto de caracteres que será utilizado desde el archivo “charset.lst”. Además no se especifica un archivo donde se guardarán los resultados, razón por la cual estos se muestran por pantalla.

# crunch 6 6 -t @@@@%% lalpha

Otra interesante capacidad de Crunch es la de generar permutaciones desde un conjunto de caracteres o cadenas de caracteres. Los números incluidos en el comando son ignorados pero deben ser especificados. En este caso se utilizan cuatro palabras que constituirán la lista de palabras de la posibles contraseñas creadas por Crunch.

# crunch 1 1 -p perro gato raton loro

El utilizar listas de palabras (wordlists) personalizadas y que cumplan ciertos requerimientos, maximiza la probabilidad de encontrar contraseñas válidas, ya sea que se esté realizando un procedimiento para tratar de descifrarlas desde un archivo, o si se está realizando una evaluación en tiempo real contra algún mecanismo de autenticación.

Fuentes:

http://sourceforge.net/projects/crunch-wordlist/

Evaluar un Servidor VNC con MSF

Body

VNC (Virtual Network Computing), o por su traducción al español Computación Virtual en Red, es un sistema gráfico para compartir un escritorio que utiliza el protocolo RFB (Remote Frame Buffer) para controlar de manera remota otra computadora. Permite la transmisión de eventos del teclado y mouse desde una computadora hacia otra, retransmitiendo las actualizaciones gráficas de la pantalla de retorno en la otra dirección, sobre la red. VNC es independiente de la plataforma, dado que existen clientes y servidores para la mayoría de sistemas operativos basados en GUI y para Java.

Para la presente práctica se utilizará Kali Linux y Metasploitable2.

Se considera a priori que se ha identificado el servicio VNC funcionando en el objetivo de evaluación, ya sea de manera manual o utilizando un escaner de puertos como nmap, unicornscan, etc.

En primera instancia se utiliza el módulo auxiliar en Metasploit Framework de nombre “vnc_none_auth”, el cual permite detectar si el servidor VNC soporta el método de autenticación None, es decir sin una contraseña configurada. Se procede a buscar e indicarle a MSF su utilización, para luego mostrar sus opciones.

> search vnc_none
> use auxiliary/scanner/vnc/vnc_none_auth
> show options

Al finalizar la ejecución de este módulo no se obtiene un mensaje positivo para tener acceso al servidor VNC. Por lo tanto se requiere descubrir un nombre de usuario y contraseña válida que permitan acceso al sistema mediante VNC.

Se procede a utilizar el módulo auxiliar “vnc_login”, el cual permite evaluar un servidor VNC y reportar los registros (logins) satisfactorios al sistema. Actualmente soportas las versiones del protocolo RFB 3.3, 3.7, 3.8 utilizando el método de autenticación VNC de reto respuesta.

> search vnc_login
> use auxiliary/scanner/vnc/vnc_login
> show options

Por defecto este módulo tiene configurada la opción “USERNAME”, la cual define el nombre de usuario con el cual se realizará la autenticación, con el valor (BLANK). De igual manera la opción “PASS_FILE” está definida con el archivo de nombre“vnc_passwords.txt” incluido dentro de Metasploit Framework. Lo único que se define es la opción “RHOSTS” con la dirección IP del objetivo de evaluación.

> set RHOSTS 192.168.0.16
> run

Obtenida la contraseña, se utiliza el programa “xvncviewer” para realizar la conexión al objetivo. Cuando se solicitada el “Password”, escribir la contraseña obtenida mediante el procedimiento anterior.

La autenticación se ha realizado satisfactoriamente utilizando las credenciales root / password. Otros escenarios pueden requerir la definición de una lista de palabras, tanto para los usuarios como para las contraseñas.

Otro escenario implica la utilización del módulo auxiliar “server/capture/vnc”, el cual permite crear un servicio VNC falso diseñado para capturar las credenciales de autenticación.

Se le indica a Metasploit Framework su utilización y se definen las siguientes opciones, “JOHNPWFILE” define un prefijo para el nombre de archivo en el cual se almacenarán los hashes para poder ser “crackeados” posteriormente con John The Ripper, la opción “SRVHOST” debe ser definida a la dirección local del sistema (Kali Linux) o 0.0.0.0.

Mientras el módulo está funcionamiento capturará todas las credenciales de los clientes que se conecten a este servicio falso.

Para averiguar cual es la contraseña del cliente que realizó la conexión, se utilizará John The Ripper.

Se ha obtenido satisfactoriamente la contraseña utilizada por el cliente.

Para que este ataque sea satisfactoria se debe engañar, inducir o suplantar a un servidor VNC real, de tal manera que los clientes se conecten a nuestro falso servidor VNC.

Fuentes:

http://en.wikipedia.org/wiki/Virtual_Network_Computing
http://www.offensive-security.com/metasploit-unleashed/VNC_Authenticati…
http://www.rapid7.com/db/modules/auxiliary/scanner/vnc/vnc_none_auth
http://www.rapid7.com/db/modules/auxiliary/scanner/vnc/vnc_login
http://www.rapid7.com/db/modules/auxiliary/server/capture/vnc
http://www.openwall.com/john/