Author Archives: antonov

  • 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

  • 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


  • 1

Introducción a Hashcat

Tags :

Category : Ciberseguridad , Redes

Hashcat es un software que automatiza la labor de hallar hashes con el objeto de recuperar contraseñas. Hashcat contiene varios modos de ataque (por diccionario, fuerza bruta, etc) y múltiples tipos de hashes soportados con los que podremos hallar casi la clave que queramos (si disponemos del hardware adecuado).

logo
En cuanto al hardware necesario para este programa, se aplica la misma regla que a cualquier otro software del estilo, necesitamos una buena gráfica, o en su defecto un buen procesador, el motivo de este requerimiento es poder comparar hashes con palabras a la mayor velocidad posible. En el caso de los hashes de WPA (hashes RC4) si una clave tuviera 20 caracteres tardaría una media de 300 días con un procesador intel i5, si hacemos la prueba, comprobaremos que un buen hardware es decisivo para ésta clase de tareas. Para agilizar el tiempo podremos aprovechar la gpu de nuestra tarjeta gráfica en el caso que tengamos un chipset compatible (como cuda, por ejemplo), en este caso la herramienta se llama oclHashcat, la cual podremos instalar desde los repositorios de kali.
Para comenzar, si lo instalamos desde el repositorio de kali y lo intentamos iniciar, nos suelta la enorme bofetada de que: “El software está desactualizado”.

captura_desactualizacion

Así que para evitarnos problemas, nos vamos a su página oficial y nos bajamos la última versión.
Una vez lo descarguemos, descomprimimos e ingresamos en el directorio creado. Si estamos en linux debemos usar el archivo binario (.bin), en windows usaremos el archivo .exe. La forma de uso es la misma que cualquier comando de GNU/linux, podremos ver la ayuda ejecutando el siguiente comando (en mi caso uso un sistema de 64 bits):

./hashcat-cli64.bin –help

Nos muestra la siguiente página de ayuda en la cual incluyen todos los hashes soportados:

hashcat, advanced password recovery

Usage: hashcat [options] hashfile [mask|wordfiles|directories]

=======
Options
=======

* General:

  -m,  --hash-type=NUM               Hash-type, see references below
  -a,  --attack-mode=NUM             Attack-mode, see references below
  -V,  --version                     Print version
  -h,  --help                        Print help
       --eula                        Print EULA
       --expire                      Print expiration date
       --quiet                       Suppress output

* Misc:

       --hex-salt                    Assume salt is given in hex
       --hex-charset                 Assume charset is given in hex

* Files:

  -o,  --outfile=FILE                Define outfile for recovered hash
       --outfile-format=NUM          Define outfile-format for recovered hash, see references below
  -p,  --separator=CHAR              Define separator char for hashlists/outfile
       --show                        Show cracked passwords only (see also --username)
       --left                        Show un-cracked passwords only (see also --username)
       --username                    Enable ignoring of usernames in hashfile (recommended: also use --show)
       --remove                      Enable remove of hash once it is cracked
       --stdout                      stdout mode
       --disable-potfile             do not write potfile
       --debug-file=FILE             debug-file
       --debug-mode=NUM              Defines the debug mode (hybrid only by using rules), see references below
  -e,  --salt-file=FILE              salts-file for unsalted hashlists

* Resources:

  -c,  --segment-size=NUM            Size in MB to cache from the wordfile
  -n,  --threads=NUM                 number of threads
  -s,  --words-skip=NUM              skip number of words (for resume)
  -l,  --words-limit=NUM             limit number of words (for distributed)

* Rules:

  -r,  --rules-file=FILE             Rules-file use: -r 1.rule
  -g,  --generate-rules=NUM          Generate NUM random rules
       --generate-rules-func-min=NUM Force NUM functions per random rule min
       --generate-rules-func-max=NUM Force NUM functions per random rule max
       --generate-rules-seed=NUM     Force RNG seed to NUM

* Custom charsets:

  -1,  --custom-charset1=CS          User-defined charsets
  -2,  --custom-charset2=CS          Example:
  -3,  --custom-charset3=CS          --custom-charset1=?dabcdef : sets charset ?1 to 0123456789abcdef
  -4,  --custom-charset4=CS          -2 mycharset.hcchr : sets charset ?2 to chars contained in file

* Toggle-Case attack-mode specific:

       --toggle-min=NUM              number of alphas in dictionary minimum
       --toggle-max=NUM              number of alphas in dictionary maximum

* Mask-attack attack-mode specific:

       --pw-min=NUM                  Password-length minimum
       --pw-max=NUM                  Password-length maximum

* Permutation attack-mode specific:

       --perm-min=NUM                Filter words shorter than NUM
       --perm-max=NUM                Filter words larger than NUM

* Table-Lookup attack-mode specific:

  -t,  --table-file=FILE             table file
       --table-min=NUM               number of chars in dictionary minimum
       --table-max=NUM               number of chars in dictionary maximum

==========
References
==========

* Outfile formats:

    1 = hash[:salt]
    2 = plain
    3 = hash[:salt]:plain
    4 = hex_plain
    5 = hash[:salt]:hex_plain
    6 = plain:hex_plain
    7 = hash[:salt]:plain:hex_plain
    8 = plain:position

* Debug mode output formats (for hybrid mode only, by using rules):

    1 = save finding rule
    2 = save original word
    3 = save original word and finding rule

* Built-in charsets:

   ?l = abcdefghijklmnopqrstuvwxyz
   ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
   ?d = 0123456789
   ?s =  !"#$%&'()*+,-./:;<=>?@[]^_`{|}~
   ?a = ?l?u?d?s

* Attack modes:

    0 = Straight
    1 = Combination
    2 = Toggle-Case
    3 = Brute-force
    4 = Permutation
    5 = Table-Lookup

* Hash types:

    0 = MD5
   10 = md5($pass.$salt)
   20 = md5($salt.$pass)
   30 = md5(unicode($pass).$salt)
   40 = md5($salt.unicode($pass))
   50 = HMAC-MD5 (key = $pass)
   60 = HMAC-MD5 (key = $salt)
  100 = SHA1
  110 = sha1($pass.$salt)
  120 = sha1($salt.$pass)
  130 = sha1(unicode($pass).$salt)
  140 = sha1($salt.unicode($pass))
  150 = HMAC-SHA1 (key = $pass)
  160 = HMAC-SHA1 (key = $salt)
  200 = MySQL
  300 = MySQL4.1/MySQL5
  400 = phpass, MD5(WordPress), MD5(phpBB3)
  500 = md5crypt, MD5(Unix), FreeBSD MD5, Cisco-IOS MD5
  800 = SHA-1(Django)
  900 = MD4
 1000 = NTLM
 1100 = Domain Cached Credentials, mscash
 1400 = SHA256
 1410 = sha256($pass.$salt)
 1420 = sha256($salt.$pass)
 1430 = sha256(unicode($pass).$salt)
 1440 = sha256($salt.unicode($pass))
 1450 = HMAC-SHA256 (key = $pass)
 1460 = HMAC-SHA256 (key = $salt)
 1600 = md5apr1, MD5(APR), Apache MD5
 1700 = SHA512
 1710 = sha512($pass.$salt)
 1720 = sha512($salt.$pass)
 1730 = sha512(unicode($pass).$salt)
 1740 = sha512($salt.unicode($pass))
 1750 = HMAC-SHA512 (key = $pass)
 1760 = HMAC-SHA512 (key = $salt)
 1800 = SHA-512(Unix)
 2400 = Cisco-PIX MD5
 2500 = WPA/WPA2
 2600 = Double MD5
 3200 = bcrypt, Blowfish(OpenBSD)
 3300 = MD5(Sun)
 3500 = md5(md5(md5($pass)))
 3610 = md5(md5($salt).$pass)
 3710 = md5($salt.md5($pass))
 3720 = md5($pass.md5($salt))
 3810 = md5($salt.$pass.$salt)
 3910 = md5(md5($pass).md5($salt))
 4010 = md5($salt.md5($salt.$pass))
 4110 = md5($salt.md5($pass.$salt))
 4210 = md5($username.0.$pass)
 4300 = md5(strtoupper(md5($pass)))
 4400 = md5(sha1($pass))
 4500 = sha1(sha1($pass))
 4600 = sha1(sha1(sha1($pass)))
 4700 = sha1(md5($pass))
 4800 = MD5(Chap)
 5000 = SHA-3(Keccak)
 5100 = Half MD5
 5200 = Password Safe SHA-256
 5300 = IKE-PSK MD5
 5400 = IKE-PSK SHA1
 5500 = NetNTLMv1-VANILLA / NetNTLMv1-ESS
 5600 = NetNTLMv2
 5700 = Cisco-IOS SHA256
 5800 = Samsung Android Password/PIN
 6300 = AIX {smd5}
 6400 = AIX {ssha256}
 6500 = AIX {ssha512}
 6700 = AIX {ssha1}
 6900 = GOST, GOST R 34.11-94
 7000 = Fortigate (FortiOS)
 7100 = OS X v10.8
 7200 = GRUB 2
 7300 = IPMI2 RAKP HMAC-SHA1
 7400 = sha256crypt, SHA256(Unix)
 9999 = Plaintext

* Specific hash types:

   11 = Joomla
   21 = osCommerce, xt:Commerce
  101 = nsldap, SHA-1(Base64), Netscape LDAP SHA
  111 = nsldaps, SSHA-1(Base64), Netscape LDAP SSHA
  112 = Oracle 11g
  121 = SMF > v1.1
  122 = OS X v10.4, v10.5, v10.6
  123 = EPi
  131 = MSSQL(2000)
  132 = MSSQL(2005)
  141 = EPiServer 6.x < v4
 1441 = EPiServer 6.x > v4
 1711 = SSHA-512(Base64), LDAP {SSHA512}
 1722 = OS X v10.7
 1731 = MSSQL(2012)
 2611 = vBulletin < v3.8.5
 2711 = vBulletin > v3.8.5
 2811 = IPB2+, MyBB1.2+
 3721 = WebEdition CMS
 7600 = Redmine Project Management Web App

Podemos comprobar que tenemos una apmlísima biblioteca de hashes que podemos calcular, e inclusos hashes predefinidos de algunas aplicaciones como Joomla, Oracle 11g o Redmine.

El uso de hashcat es similiar a cualquier comando en linux:

hashcat [options] hashfile [mask|wordfiles|directories]

Primero las opciones o modificadores, luego indicamos la ruta del archivo donde se encuentra el hash, y podremos indicarle una máscara, o un archivo o serie de archivos o un directorio. Hashcat cuenta con una serie de modificadores algunos de los más comunes son los siguientes:

-m Le indicamos el tipo de hash que queremos desencriptar, los hashes y sus respectivos números están definidos en la ayuda más arriba.

-a Con este modificador le indicamos el tipo de ataque que vamos a emplear, entre otros tipos encontramos fuerza bruta o permutación, con ellos podremos comprobar a base de diccionario, haciendo combinaciones entre uno o varios diccionarios e incluso alterando las propias palabras del diccionario, como por ejemplo cambiar las “o” por “0” o la “E” por “3”.

-V Nos mostrará la version actual de hashcat.

-n Controlamos el número de hilos (threads) que va a lanzar hashcat. Debemos tener en cuenta que cuantos más threads, más consumo y más calentamiento para nuestra máquina.

-o Definimos el fichero de salida.

–output-format=NUM definimos el formato de salida con un número, podemos ver la lista de formatos más arriba, en la ayuda.

-r Podremos indicarle un fichero.

Ataque con Máscaras.

Una parte importante de hashcat son las máscaras y el control que podemos tener sobre ellas, con esto, podremos indicar qué tipo de carateres queremos probar y así ahorramos comprobaciones con tipos de caracteres que no tenga. Los tipos de caracteres que podremos probar los tenéis en la ayuda en el apartado “Built-in charsets”, un ejemplo de máscara y password es el siguiente:

Password: **ABc99 Máscara: ?a?a?u?u?l?d?d 
Password: Manolo Máscara: ?u?l?l?l?l?l
Password: 001234 Máscara: ?d?d?d?d?d?d

La longitud mínima y máxima del password se indican con los modificadores –pw-min=NUM y –pw-max=NUM respectivamente.

También podemos crearnos un juego de caracteres personalizado, para ello usaremos los modificadores -1, -2, -3 y -4, con ellos podemos dejar otro caracter predefinido en las opciones para luego usarlo en nuestra máscara. Un ejemplo podría ser el siguiente:

./hashcat-cli64.bin -m11 -a3 -1?dABCDEF archivo.hccap ?1?1?1?1?1?1?1

En este caso le estamos indicando con -1 que cuente con números (?d) y letras mayúsculas de la A a la F. De esta forma podremos afinar un poco mas a la hora de sacar la contraseña en cuestión.


  • 0

Tor ARM, el brazo articulado de Tor

Tags :

Category : Herramientas , Manuales , Redes , Tor

La red tor es una red virtual muy utilizada por los que buscan más privacidad dentro de internet, como hemos explicado anteriormente en el post de “Tor: The Onion Router” la red tor se basa en unos nodos de entrada, nodos intermedios y nodos de salida, algunas veces, cuando necesitamos configurar rapidamente sobre que nodos de salida salir o hacer un uso ágil de este servicio nos lleva más tiempo ir modificando archivos de configuración. Arm (Anonymizing Relay Monitor) es un software que entre otras cosas te permite monitorear el ancho de banda de la red tor, ver y modificar ficheros de configuración o pedir una nueva dirección IP entre otras cosas. Sólo está disponible para GNU/Linux o para Mac.

Para instalarlo sólo tenemos que teclear en nuestra shell:

sudo apt-get install tor-arm

Para otras distribuciones, mirad en la web de descargas, en mi caso, la distribución Backbox lo trae instalado por defecto, de tal forma que teclearemos “sudo arm” en la shell para ejecutarlo.

Captura de pantalla de 2014-03-06 23:17:33

Se nos abre la primera pantalla de arm en la que tenemos una gráfica en tiempo real del ancho de banda de tor y abajo tenemos los eventos donde nos indica si no se puede conectar, si tenemos una versión desactualizada, información acerca de nuestro fichero torrc… Podemos ver en la parte de arriba que nos revisa nuestra versión de tor y nos indica si está actualizado, para obtener una nueva identidad tenemos que pulsar la tecla n, si necesitamos ver la ayuda, lo haremos presionando la tecla h.

Captura de pantalla de 2014-03-07 03:19:19

Para navegar pos la páginas de tor-arm usaremos la flechas de dirección, segunda página de arm, donde podemos ver las conexiones y los circuitos establecidos en la red tor.

Captura de pantalla de 2014-03-06 23:19:01

El fichero torrc que está en el directorio /etc/tor/ es el archivo de configuración del servicio TOR, realmente podemos modificarlo a mano usando gedit, nano o cualquier otro editor de texto, siempre es recomendable leerse el manual y el FAQ en su página web oficial. En la página 3 podemos configurar algunos parámetros del fichero torrc, para orientarnos mejor nos muestra una descripción del parámetro que estemos modificando en ese momento, después para recargar el fichero torrc presionamos la tecla r.

Captura de pantalla de 2014-03-06 23:19:38

Si queremos modificar a mano el fichero torrc, podemos hacerlo en la página 4, donde podremos afinar aun más las configuraciones.

Captura de pantalla de 2014-03-06 23:20:27

En la última página tenemos el “Control Interpretor”, el cual iniciaremos presionando enter. Es una consola que nos permite hacer una serie de configuraciones, por ejemplo, poder extender nuestro circuito de tor o cerrar el circuito que le indiquemos, entre otras cosas.

Captura de pantalla de 2014-03-07 03:22:41

En resumidas cuentas, con tor-arm podremos configurar rápidamente nuestro servicio sin necesidad de ir buceando los archivos de configuración, consume pocos recursos y es bastante eficiente, así qu es una opcion bastante recomendable para los que solemos hacer uso de esta red.