viernes, 30 de septiembre de 2016

Doctor, si se me revuelven las tripas… (I): “Toma un poco de #OSINT con #Tinfoleak”


Hola secuaces:

En primer lugar quiero pediros disculpas porque me voy a saltar el orden de entradas que tenía pensado. En lugar de seguir con la fase de adquisición de evidencias, voy a introduciros, introducirme, en el mundo del OSINT, (Open Source Intelligence o Inteligencia de Fuentes Abiertas). Muy desconocido para mí, aunque me gusta ‘trastear’ con ello.

Básicamente, OSINT es una técnica aplicada para la recolección y análisis de una información que es pública y accesible, a través de Internet. Esta técnica es muy usada por las FFCCSE y por los analistas de los Servicios de Inteligencia. Podéis ver la definición en la Wikipedia.

Todos tenemos días buenos, días malos y días peores. Si a eso le añadimos una lectura como esta…: “Baños compara a la Guardia Civil con terroristas del estado islámico.”


Sin comentarios, ¿no? A mí, me duele esta noticia por varios motivos. Y sólo voy a hacer un comentario: El terrorismo islámico es un asunto muy delicado.

Tengo por norma no entablar algunos temas de conversación que siempre terminan en disputas. Uno de ellos, como no podía ser de otra forma, es la política. Por esta razón, vamos al lío.

Antonio Baños… Antonio Baños… quién es este ‘señor’. Acudo a Google y pongo, “Antonio Baños”.


¡Zas! Primer resultado. Wikipedia. Le hecho ganas y pierdo unos minutos en leer su contenido. Tras leerlo, me fijo en el margen derecho de la página. ¡Qué ven mis ojos! Si tiene perfil de Twitter. No necesito saber más.


OSINT + Twitter = Tinfoleak, (Lo tengo claro). Y además tenemos un “voluntario”.

Tinfoleak, es una magnífica herramienta, escrita en Python por Vicente Aguilera Díaz, (@VAguileraDiaz), entre otras muchas cosas, cofundador de Internet Security Auditors. Se trata de una herramienta usada para extraer información, de una forma automática, de un perfil de Twitter. Analizando los datos que se recojan se pueden llegar a interesantes conclusiones, como el nivel cultural y de educación del usuario, su estado de ánimo, su comportamiento, sus cambios de actitud, sus intenciones… Pero es un trabajo muy laborioso y que requiere muchas horas y/o días.

Voy a intentar explicaros cómo se instala y cómo funciona.

Tras descargar la herramienta desde su sitio oficial, a través de

wget http://www.isecauditors.com/sites/default/files/files/tinfoleak-1.5.tar.gz


Procedemos a su descompresión y acceso a su directorio, con

tar xzvf tinfoleak-1.5.tar.gz

cd tinfoleak-1.5


Listamos el directorio, con

ls -l


Lo primero que debemos hacer, es modificar el fichero ‘tinfoleak.py’. Para ello, ejecutamos un

nano tinfoleak.py


Y ahora tenemos que cambiar unos parámetros en la línea 69. Donde dice ‘self.api = tweepy.API(auth, secure=True)’, debe decir ‘self.api = tweepy.API(auth)’.


Tras esta modificación, instalamos las dependencias, a través de

sudo pip install tweepy


sudo pip install exifread


sudo apt-get install python-pyexiv2


Con esto ya tenemos instaladas las dependencias y la herramienta casi lista para operar. Pero ahora debemos ir al sitio de desarrolladores de Twitter y crear una aplicación.


Cumplimentamos los datos que nos piden, aceptamos las condiciones y le damos a ‘Create your Twitter application’. Nos debe decir que se ha creado correctamente.


Ahora debemos irnos a ‘Keys and Access Tokens’. Copiamos nuestros códigos y los guardamos a muy buen recaudo.


Si ahora nos dirigimos a la configuración de nuestra cuenta de Twitter, al apartado de aplicaciones,


Debemos ver que la aplicación que hemos creado tiene permisos.


Ahora, para terminar de configurar la aplicación, tan solo nos queda editar el fichero ‘tinfoleak.conf’, a través de

nano tinfoleak.conf


Y copiamos las cuatro claves, cada una en su campo.


Ahora sí, ya estamos listos para trabajar.

Empezamos llamando a la ayuda de la herramienta, con

python tinfoleak.py -h


Y podemos ver todas las opciones que nos da.

Pues, sin más dilación, comenzamos con

python tinfoleak.py antoniobanos_ -is -t 500 --hashtags --mentions --meta --media d --top 10 -o AntonioBanos


Y dejamos que trabaje tranquilamente.

Al terminar el proceso, tendremos generado un reporte, en formato ‘.html’, que podemos comprobar con

ls -l ReportTemplate/AntonioBanos

file ReportTemplate/AntonioBanos


Y descargados todos los ficheros que han sido compartidos por este usuario, que podemos listar con

ls antoniobanos_


Nos dirigimos a la ruta donde se ha generado el reporte y lo abrimos con cualquier navegador.


Y aquí está. Bien bonito y bien completo. Nombre del perfil, alias, el ID de Twitter, la fecha de la creación de la cuenta, número de seguidores y seguidos, la localización, la zona horaria, (que no la tiene establecida), número de tweets y la geolocalización, (que la tiene deshabilitada).

Podemos ver los clientes que ha usado para compartir los tweets, con la fecha de primer uso, la de último uso, el número de usos y el porcentaje.


Y aquí todo lo que puede recopilar esta maravillosa herramienta. Los clientes, (que los acabamos de mencionar), los hashtags, las menciones a usuarios, los tweets, los metadatos, los ficheros de imagen y video y la geolocalización.


Como tan solo quería mostraros cómo instalar, configurar y trabajar con esta herramienta, voy a ver simplemente su primer tweet.


Hecho el día 30 de julio de 2015, a las 12.41.01 horas, con 1472 RTs y 718 Fav y con el hasgtag #27S2015. Presionamos sobre ‘view’ y…


Aquí está. Su primer tweet: “Venir a ganar la independencia, venir a desobedecer al Estado y venir a construir un país @cupnacional #27S2015

¡¡Dónde estaría yo si hiciera este comentario!!

Como dije al principio, no voy a comentar nada. Si lo deseáis, podéis bucear un poco en algunas fechas destacadas de este TL, a través de algunas hemerotecas.


No quiero despedirme, para variar, sin recomendar antes que sigáis a Vicente y que leáis algunos análisis que ha hecho. Son muy interesantes. A modo de ejemplo, este: Analizando el 13/11 con Tinfoleak

Ahora sí…

Esto es todo, por ahora. Nos leemos en la siguiente entrada. Se despide este minion, entregado y leal, de vosotros… por ahora.


Marcos @_N4rr34n6_

jueves, 29 de septiembre de 2016

Crackeando credenciales de MySql obtenidos por un MITM like a Sir!


¡Hola amigos! vamos a explicar como poder hacernos por nuestros medios un crackeador de credenciales de MySql. Nos vamos a centrar en atacar una debilidad existente en MySql desde sus inicios, si bien es cierto que la han fortificado desde la versión 4.1, yo considero que en realidad sigue como estaba, pero un poquito mejor.



Para crackear las claves no vamos a requerir de acceso a la tabla mysql.user (mediante un sqli o similar), sino esnifando la trama de la conexión al mas puro estilo MITM (Man in the Middle).

Para ello realizaremos los siguientes pasos:


1- Entender como funciona el proceso de login en MySql

En la siguiente dirección podemos ver el código que utiliza MySql para la comprobación de la contraseña, aunque el link se trata de un fork hecho por twitter, nos vale, ya que este aspecto no cambia desde la versión 4.1 de MySql , no es necesario saber c o c++ pues amablemente, nos han comentado como funciona.



Como se puede ver, el servidor genera una cadena aleatoria (public_seed), esta cadena es enviada al cliente. El cliente la recibe, y realiza el SHA1 de la contraseña introducida (hash_stage1), después vuelve a generar otro SHA1 del resultado anterior (hash_stage2) y envía al servidor un XOR de hash_stage1 con el SHA1 de public_seed hash_stage2 (generando el reply). 

Lo que parece un poco confuso, en realidad es muy simple, pues en la propia documentación de MySql nos resumen el proceso a una sóla linea "SHA1( password ) XOR SHA1( "20-bytes random data from server" <concat> SHA1( SHA1( password ) ) )"



Nos vamos a centrar en el plugin de autentificación mysql_native_password (Secure Password Authentication) ya que es el que por defecto aparece en las instalaciones mas modernas. Nos explican de una manera mas clara en esta dirección (http://dev.mysql.com/doc/internals/en/authentication-method.html) los diferentes tipos de autentificación que hay, y como se comprueban.

También podemos ver, que lo único que ha variado es en incrementar el tamaño de la semilla enviada por el servidor y de la respuesta del cliente (versión <4.1 en la imagen inferior), que por tema de compatibilidades en la versión "segura", enviarán partida en dos trozos.



Ahora que ya sabemos como funciona, nos queda intentar extraer de la trama la semilla generada (public_seed) y el reply del cliente, realizar el mismo proceso que realiza el cliente con la public_seed fija (hardcodeada), y cuando nos de lo mismo que el reply enviado, ¡la contraseña será la misma!

2 - Obteniendo la trama de una conexión lícita

Lo primero es lo primero, como se trata de un ataque de red, los credenciales se pueden obtener mediante un MITM (como hemos visto en otras ocasiones) ... o en un ataque local, ¿local? pues si, supongamos que nuestro programa de gestión del trabajo utiliza MySql, tenemos derecho a instalar un WireShark, y somos unos meros operarios al que no nos dejan acceder a todos los datos de la empresa. Bastaría con encender el WireShark y abrir el programa en cuestión, para capturar la trama de la conexión a la base de datos. Pero, ¿es esto tan fácil?

Para la prueba de concepto, me he instalado un servidor MySql en una máquina remota, y he puesto al usuario root una contraseña que aparece en un diccionario de palabras (rockyou), ¡pero larga!



Y en el momento que el programa, se conecte de forma lícita, enviará la trama que necesitamos, la cual capturaremos por WireShark (o mediante un MITM)

Podemos ver que WireShark ya hace el trabajo sucio, y localiza los dos valores que más adelante vamos a necesitar:

  • En la salida del servidor: Los dos Salt (lo que llamabamos antes public_seed), tal y como os dije, aparece partida en dos Salt.


  • Y en la respuesta del cliente: el hash del password (lo que llamábamos antes reply). 

¡OJO! no confundir con el hash que guarda MySql en la tabla mysql.user, pues es totalmente diferente. 

El más observador, verá que el usuario viaja en texto plano, ¡Ya tenemos algo!



¿Y que hacemos con esta ristra de datos? Después de este paso, podríamos copiarnos toda esa información a un pendrive y continuar con nuestro ataque en offline. Los únicos valores que vamos a necesitar para más adelante son:


Salt:   28544c632e5956244e3b7e2b56537b3329712357

Hash: 78c87d4766993a5cc3b6b6c4a943069ecd94780b

Nótese que el 00 que nos muestra wireshark no le copiamos, ya que es el fin de cadena y concatenando los dos Salt, obtenemos un Hash SHA1 válido de 20 preciosos bytes.


3 - ¡Creando el kraken! ... digo ¡el cracker!

Lo primero es intentar replicar el funcionamiento de la función que realiza el cliente para generar el reply, para ello, nos creamos una función, que realize exactamente el mismo procedimiento (el lenguaje elegido es C#, pero puede hacerse en cualquiera)


Y después el cuerpo del programa, se leerá nuestro diccionario de palabras a la espera de encontrar la correcta.



Esperamos unos segundos y ... tachan!!



4 - ¡Pero que diantres es eso del c# y de programar!

Algunos os estaréis preguntando si se puede hacer sin necesidad de programar, y la respuesta es: SI, pero le quitamos la gracia. No ... en serio, hashcat y john the ripper tienen ya implementados el hash de MySql (tanto el obtenido por un sniffer como el Hash de la tabla mysql.user).


Para proceder a crackearlo con ayuda de hashcat, haremos lo siguiente:

Si nos vamos a la dirección https://hashcat.net/wiki/doku.php?id=example_hashes , podemos ver el ejemplo de como implementar el crackeo:
11200
MySQL Challenge-Response Authentication (SHA1)
$mysqlna$1c24ab8d0ee94d70ab1f2e814d8f0948a14d10b9*437e93572f18ae44d9e779160c2505271f85821d

Por lo que creamos un archivo hash.txt con el siguiente contenido (donde el primer hash es el Salt y el segundo la Password)
$mysqlna$28544c632e5956244e3b7e2b56537b3329712357*78c87d4766993a5cc3b6b6c4a943069ecd94780b
y ejecutamos el siguiente comando:
hashcat -m 11200 hash.txt /usr/share/wordlists/rockyou.txt


Y con esto, habremos obtenido de otra manera, la misma contraseña utilizada durante la conexión :)

¡Un saludo de @ShargonXL!

miércoles, 28 de septiembre de 2016

FOCA, CREEPY... Y mucha información a la vista de muy pocos (Parte II)

Buenas chavales!!

Ya hacía tiempo que no subía vídeo... Se nota que ya estamos metidos en Septiembre, y cada vez hay más tareas que realizar :-P.

Hoy vamos a terminar de hablar de la herramienta Foca, con la que vimos en el vídeo anterior, como sacar metadatos desde una página web, en ésta ocasión va a ser de una fotografía que yo mismo realicé con mi teléfono móvil. La cantidad de información que contiene, veréis que es exagerada. Hay webs, donde podéis eliminar toda esa información para subirla a vuestros servidores, o directamente tenerlo guardado sin dar tanta pista. Total... Vosotros ya sabéis dónde se tomó la foto. No voy hacer más incapié en la herramienta Foca, para que vosotros mismos podáis familiarizaros con ella, y sacarle el partido que se le puede sacar.

Otra herramienta de OSINT que podemos encontrar es: Creepy, ya hay una entrada en éste mismo blog, muy bien explicado, y con otro ejemplo que es digno de ver :-D.

Tambien hay otra pequeña sección, de la recolección de información, con un ADD-ON, para Mozilla Firefox, con la que podemos extraer mucha información de una página web, toda información es valiosa, y más si luego queremos hacer un poco de Ingenieria Social, que nuestro compañero Naivenom, algún día nos enseñará :-O.

Y por último... Y para que investiguéis vosotros... Shodan.

Shodan: Es un motor de búsqueda que le permite al usuario encontrar iguales o diferentes tipos específicos de equipos (routers, servidores, etc.) conectados a Internet a través de una variedad de filtros. Algunos también lo han descrito como un motor de búsqueda de banners de servicios, que son metadatos que el servidor envía de vuelta al cliente. Esta información puede ser sobre el software de servidor, qué opciones admite el servicio, un mensaje de bienvenida o cualquier otra cosa que el cliente pueda saber antes de interactuar con el servidor.

Shodan recoge datos sobre todo en los servidores web al momento HTTP puerto 80), pero también hay algunos datos de FTP (21), SSH (22) Telnet (23), SNMP (161) y SIP (5060).



















Un saludo!

Rubén Gutiérrez
@rgutga

martes, 27 de septiembre de 2016

Reto Ninja - Qurtuba CTF


Hola a todos! Soy Álvaro (@alvarodh5), aunque mi nick es Blackdrake. Ante todo quería dar las gracias a fwhibbit por permitirme escribir en este fantástico blog.

En esta entrada, explicaré como realizar el reto ninja del CTF de Qurtuba, aprovecho para felicitar una vez a toda la organización, pues hicieron un trabajo excelente.

Llegamos al reto ninja, teóricamente el más difícil pues era el que más puntuación otorgaba, comenzamos con un comprimido con contraseña, la descripción es clara: "Visita Is it a game or is it real? para continuar con el reto".




Obviamente no me la iba a perder por nada en el mundo, pero la pista, hizo que estuviera más atento a los pequeños detalles.

Comienza la ponencia y nos encontramos con un vídeo de 10 unido a un temazo hardcore con el que sorprendió a toda la sala a mí incluido, justo después, apareció en una de las diapositivas un personaje bastante conocido:


¿Qué hace charizard en una diapositiva? ¿Será nuestra contraseña?



BINGO! Archivo descomprimido y nos  encontramos con los siguientes ficheros:




Nos dirigimos a visualizar el contenido del fichero PassWords.odt:



Aparentemente un documento vacío en el que lo único que hay es la siguiente cadena:
&#87;&#65;&#82;&#71;&#65;&#77;&#69;&#83;&#32;&#69;&#78;&#68;&#73;&#78;&#71;

Sin perder tiempo, comencé a traducirlo:
&#87; w    &#65; a   &#82; r   &#71; g   &#65; a   &#77; m  &#69; e  &#83; s   &#32;  (espacio)
&#69; e  &#78; n   &#68; d  &#73; i  &#78; n   &#71; g
wargames ending

En ese momento y entre carcajadas apareció Fran (el creador del reto) que les enseñó su pc a otros miembros de la organización que compartieron con él las risas. En ese instante supe que el documento escondía más de lo que parecía, aprovecho para darle gracias a Justo que me dijo que mirase bien todo el documento entre risas.


BA-GOSHI TSAH-AS-ZIH TOISH-JEH AH-NAH DAH-NES-TSA BA-GOSHI BE-LA-SANA NA-AS-TSO-SI
CLA-GI-AIH A-CHI A-CHIN TLA-GIN YEH-HES NA-HASH-CHID DZEH

Cuya traducción al castellano es: cybercampincibe



Llegados a este punto, contamos con 3 contraseñas (o eso parece), en este momento nos dirigimos a comprobar que contiene el audio llamado Mr.Robot 1x09.ape.

Al ejecutarlo, nos encontramos con otra canción hardcore… pero el nombre no cuadraba, algo debe esconder. Después de googlear y porque no, de ver el capítulo, llegamos a la conclusión de que se utiliza DeepSound, una herramienta de steganografía exclusiva para Windows, aunque, se puede utilizar con wine. (http://jpinsoft.net/DeepSound/)

Abrimos DeepSound y le pasamos nuestro audio, y como era de esperar, nos solicita una de nuestras contraseñas:

En este caso, h0n3yst4t10n

Y encontramos estos ficheros ocultos:



Ambos comprimidos con contraseña, en un primer momento, pensé que no habría problema, pues aún contamos con dos contraseñas sin usar, por desgracia, ninguna era válida. Qurtuba había finalizado, así que, me puse en contacto con Fran para preguntarle al respecto, le pasé las contraseñas y su respuesta fue la siguiente:

“Ha habido un error, es en mayúsculas, la otra, no es una contraseña, OSINT”

Perfecto, ahora todo tenía lógica, y aunque Qurtuba ya había finalizado y me había proclamado vencedor junto con Diego y Juan, quise acabar este reto.

Por tanto, probamos CYBERCAMPINCIBE y listo! Tenemos el fichero xab descomprimido:



Aparentemente un apk que descomprimiría más tarde, ahora el objetivo era conseguir la otra contraseña, en cuanto comencé a buscar sobre “wargames ending” supe cuál era la contraseña (además, Fran también mencionó unos mapas), recordaba que cuando grabé parte de su ponencia para poder volver a verla de nuevo, me fijé en un código que apareció en el medio de unas pantallas. Por tanto, busqué dicha imagen. Unos minutos más tarde, la tenía y con ella, el contenido del fichero xaa:




Era momento de decompilar el apk para comprobar si escondía algún secreto:


¿Un apk que no se puede decompilar ni descomprimir? Algo falla, para asegurarme, intenté instalarla en un emulador y obviamente, dió error. Por tanto, no era un apk.

Utilicé binwalk para comprobar si de verdad había algo oculto y lo encontré:


¿Un fichero que se llamaba igual que el comprimido? Sospechoso. No pude obtener nada útil de este fichero (ni strings, ni cabeceras etc…).

Era turno del fichero xaa, si antes parecía un apk y no lo era, esta vez, ¿qué tipo de archivo será?




El editor hexadecimal nos confirma que es un RIFF (o al menos, que contiene esa cabecera), me propuse escucharlo y en efecto, solo se escuchaban sonidos y ruidos. 

Analicé el audio por si había de nuevo steganografía, pero sin éxito. Así que, se lo comenté a Fran, que me pasó un vídeo en youtube (Cargando un juego de Amstrad): https://www.youtube.com/watch?v=4S9qTfdUWbc

También me preguntó sobre los nombres de los ficheros xaa y xab, le dije que tenían pinta de ser el resultado de un Split, respuesta a la que dió su visto bueno.

En este momento lo tenía claro, había que unir ambos ficheros y ejecutar el juego:



Me volví loco, intenté ejecutar el juego con todo tipo de emuladores sin éxito, así que, investigué sobre las caratulas, intentando generar una, después de haber probado varias herramientas desistí.

En un acto desesperado de Fran que quería ver su reto ninja resuelto, envío este enlace: http://www.rtl-sdr.com/the-international-space-station-is-transmitting-sstv-images/ enseguida encontré un fragmento de texto que llamó mucho mi atención:

“To decode the images it is recommended to use SDR# and pipe the audio into MMSSTV, a freeware SSTV decoding software program”

Instalé el programa y le pasé el archivo generado de la unión de xaa y xab:



Ahí estaba la flag, reto ninja resuelto por fin!

Comencé a entender, que el vídeo de youtube era una pista sobre convertir el audio en imagen y no tenía nada que ver con Amstrad. 

Sin más darle las gracias a Fran, que consiguió tenerme enganchado durante unos días para poder resolverlo.

Espero que os haya gustado!

Un saludo, Blackdrake.

Google Analytics