lunes, 14 de abril de 2014

Solución Reto 01: esteganografía

Por fin me he podido poner a publicar la solución de mi primer reto [update]enalce[/update]. Lo reconozco, ha sido un fail como una casa. Entre que esperaba más participación y que me encontré con que las imágenes subidas me las habían manipulado a la hora de guardarlas, me vine abajo. Pero bueno, ya iba siendo hora de publicarlo. Más vale tarde que nunca.

Contábamos con dos imágenes:

Imagen 01

Imagen 02

La imagen 01 muestra unas matrioskas con un "bonito" fondo en blanco. En este fondo se puede distinguir que parece que hay algo raro en la esquina superior derecha. Si nos acercamos un poco más y, si no se distingue del todo bien, cambiamos el color de fondo, podremos ver que hay un mensaje:

Las matrioskas son la clave

Mirando fijamente estas muñecas rusas no se alcanza a ver ningún mensaje oculto con otro color. ¿Qué querrá decir con eso? ¿Qué tengo que hacer con la segunda imagen?¿Habrá algo oculto en ellas? 

Sé que en backtrack (sí, sigo usándolo) tienen herramientas como stegdetect y steghide.

Ejecutando:

stegdetect imagenMatrioskas.jpg

(o como la hayas guardado)

te devolverá

03-ficheroDestino.jpg : outguess(old)(*)

Lo que significa que no sólo tenía una mensaje oculto en su fondo, sino también en su interior.

Si quiero utilizar steghide me pedirá una contraseña. ¿Cómo voy a saber la contraseña? Ya que sabemos que "las matrioskas" son la clave: ¿Querrá decir eso que matrioskas es la siguiente posible solución?

steghide --extract -sf 03-ficheroDestino.jpg -p matrioskas -xf salidaSteghide.txt

No se ha quejado. Voy a ver el contenido de la salida:

cat salidaSteghide.txt

¡Bingo!

Para continuar con el reto, tendrás que buscar el programa Stereogramm-Decoder, tambien conocido como  StereoDecoder. Esta hecho/firmado por Carsten Neugauer. *

El asterisco lo acabo de poner: me acabo de dar cuenta de que eso de "está hecho/firmado" no es que sea la mejor expresión. Pero bueno, supongo que se entiende.

Por lo tanto, la segunda pista que había que sacar era esta. Aunque se hubiese sacado la primera y la que nos entregará la siguiente imagen, sin esta pista no hubiese dado por válido el resultado.

Por lo tanto, nos está pidiendo que usemos el programa StereoDecoder. Lo que nos permitirá no dejarnos los ojos buscando detrás del estereograma.

Por lo tanto, una vez nos descargamos el programa, lo vamos a configurar. En mi caso, le he puesto los siguientes valores. Realmente al final es un poco de ensayo y error:

StereoDecoder by Carsten Neugauer: search-dist = 100; blocksize = 6
StereoDecoder by Carsten Neugauer: search-dist = 100; blocksize = 6

Si esperamos un minuto o dos obtendremos:

Solución: Muchas gracias. Has encontrado el lugar donde estaba escondido el alijo.
Solución al estereograma
Por lo tanto, la tercera y última pista (o solución final) es:

Muchas gracias. Has encontrado el lugar donde estaba escondido el alijo.

Como habréis podido observar, este último programa lo he utilizado en Windows. Pero, si no me acuerdo mal, también probé a usarlo con wine y no me dio problemas. 

Ciertamente este reto no siento que me haya salido bien. Ha sido bastante desastre. Encontrarse con que las imágenes subidas no son lo que tenían que ser (actualizándolo en el mismo momento en el que lo alertaron) y el tiempo que he tardado en publicar el resultado. Está claro que he aprendido varias lecciones:

  • Tenes escrita la solución antes de publicar el reto. Así, sólo hará falta unos pocos clicks para publicarla y no tardar una eternidad.
  • Aunque el reto estará muy, muy probado antes de mostrarlo al público, tener muy presente que se pueden presentar cambios en los ficheros subidos, por lo que hay que revisar que las firmas o hashes de los mismos cuadran con lo esperado. 
 Así, por curiosidad: ¿Cuántos de vosotros lo intentásteis al menos? ¿Hasta dónde llegásteis? Seguro que tenéis más consejos para los próximos que monte. Como de costumbre, siempre que sean con buen tono, bienvenidos serán. 

miércoles, 9 de abril de 2014

Hashes en Java

Para algún que otro proyecto que me he ido montando, he tenido la necesidad de sacar el hash de alguno de los objectos con los que estaba trabajando. Como de costumbre, es ese tipo de cosas que aunque en algún momento determinado ya las has hecho, siempre se te olvida cómo volverlo a hacer. Y tienes que volver a buscar. En mi caso, se trataba, precisamente, de obtener el resultado de la aplicar una función de hash determinada y recuperar el valor correspondiente, utilizando java.

Ahora que quería recopilar las cosas que había estado haciendo, me he encontrado con que no localizo alguna de éstas, y además, que lo que tengo, no es exactamente como esperaba.

Para el tema de los hashes me estoy acordando de que tengo dos opciones.

Opción "nativa"

Para esta opción tenemos que utilizar MessageDigest. En el mismo momento de instanciarla habrá que indicarle el algoritmo que queremos utilizar. Si no existiese, nos lanzaría una excepción. Un ejemplo sería este:

 String valor = "123456";  
 try{
  String hashAux = "";
  MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
  messageDigest.reset();
  messageDigest.digest(valor.getBytes("UTF-8"));
  messageDigest.update(valor.getBytes());
  byte[] digestArray = messageDigest.digest();
   
  for(byte aux : digestArray) {
   int b = aux & 0xff;
   if (Integer.toHexString(b).length() == 1)
    hashAux += "0";
   hashAux += Integer.toHexString(b);
  }
  
  String result = new String(digestArray);
  System.out.println("hashAux: "+hashAux);
 }catch(Exception e){
  System.out.println("E: "+e);
 }

Como resultado obtendremos:



8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

y se puede verificar que es correcto al compararlo en un algún sitio por Internet.

Además, hay que tener en cuenta los distintos algoritmos que pueda permitir. Al menos no parece trivial encontrarlo. En alguno de los sitios donde he ido a buscar (porque, recuerdo, que hacía tiempo que no tenía que trabajar sobre esto, y lo de hardcodear los valores no me hacía ninguna gracia), he visto una lista parecida a esta:

  • MD2
  • MD5
  • SHA-256
  • SHA-384
  • SHA-512
  • SHA, SHA-1, SHA1
En la que voy a considerar los últimos elementos como que hacen el mismo algoritmo. ¡Ojo! Que según qué equipo podría fallar. 

Los resultados también podrían cambiar si estamos trabajando con codificaciones diferentes. En mi caso, he definido la que venía en el ejemplo. 

Opción "apache commons"

La otra opción es utilizar la librería de apache commons. Nos ofrecerá el método DigestUtils, el cual, al mismo tiempo, nada más instanciarlo tendremos que indicarle qué hash utilizar. 

 String hashAux2 = null;
 String hashAux3 = "";
 byte[] hashAux3byte = null;
 try{
  hashAux2 = DigestUtils.sha256Hex(valor); 
  hashAux3byte = DigestUtils.sha256(valor);
  for(byte aux : hashAux3byte) {
   int b = aux & 0xff;
   if (Integer.toHexString(b).length() == 1)
    hashAux3 += "0";
   hashAux3 += Integer.toHexString(b);
  }
     System.out.println("hashAux2: "+hashAux2);
     System.out.println("hashAux3: "+hashAux3);
     
 }catch(Exception e){
  System.out.println("Exception hash: "+e.getMessage());
 }

Como podréis comprobar, tenemos la opción de que nos pase directamente la cadena convertida en formato hexadecimal, y así no tendremos que hacer la chapuza de iterar sobre cada una de las posiciones del array que nos devuelva. Tambien DigestUtils nos ofrece directamente los algoritmos con los que nos permitirá trabajar.

A la hora de ejecutar este último ejemplo podremos ver que, en efecto, el resultado es el mismo que en el primero.

Esta última opción creo que es la mejor, aún dependiendo de una librería que se tenga que importar y que no venga directamente en la paquetería de java.

Espero que esto os sea de utilidad. Por mi parte, me vendrá muy bien tenerlo a mano para cuando se me vuelva a olvidar cómo lo hice. 

martes, 8 de abril de 2014

Evento X1RedMasSegura

Este año el evento X1RedMasSegura regresa una vez más. El año pasado fue un éxito y por eso regresa.

Hay una novedad: han montado un concurso en el que podrán participar jóvenes, desde ¿3° primaria? pasando por las ESO hasta bachillerato (estos si me los se, que como última generación de EGB...: 7° hasta COU).

Además, también tendrán talleres que según el público destino serán unos días determinados.

Para más información:

Concurso de Infografías Jóvenes x1RedMasSegura '14 http://www.flu-project.com/2014/04/concurso-de-infografias-jovenes.html

Post escrito desde el móvil.

lunes, 7 de abril de 2014

Review: Wardog y el mundo

Justo como motivo de la anterior RootedCon 2014 me hice con 3 libros de 0xWORD, la editorial de la ya extinta Informática 64. Entre otros libros me compré Wardog y el mundo. Si bien éste salió el año pasado, e, incluso, Wardog estuvo en la Rooted2013 firmando libros, yo no he podido cogerme más libros hasta este mismo año. Y, el primero que me he leído ha sido el de Wardog.

El libro contiene una buena recopilación de las entradas del blog que lleva el mismo nombre.

Hasta que no me llegó el libro a mis manos no había tenido aportunidad de leer nada sobre Wardog. Un administrador de sistemas, con mucho carácter y que los tiene muy bien puestos para las formas de responder incluso a sus superiores. Y, aún así, se sale con la suya. También hay que decir que los usuarios tienen su aquel, y si el IT les responde como les responde es por algo, como que no están dispuestos a aprender o que quieren que el de sistemas haga su trabajo. Las frases favoritas de los mismos son: "esto es una mierda", "esto no funciona"...

El desparpajo con el que lo cuenta te asegurarán un montón de risas y carcajadas. ¡Ojo! Que si te lo vas leyendo en el transporte público, la cosa no puede quedar del todo bien. Pero a mí eso me daba igual, la verdad.

Si aún no lo tienes, puedes comprarlo en la tienda de la editorial. La otra opción sería ir al blog y leertelo desde el principio. Pero teniendo en cuenta que el libro tiene más de 300 páginas, te será más sencillo verlo en formato físico. Después, si quieres, puedes ampliar las historias leyendo tranquilamente las actualizaciones.

miércoles, 2 de abril de 2014

Navajas Negras 2014: CFP y CFT

Hoy es uno muy, muy rápido (mientras consigo tiempo para escribir sobre alguna cosilla que tengo en mente).

La organización de las Navajas Negras han abierto los Call For Papers y los Call For Training.

Los que esteis interesados en el evento, ya sea para asistir o ya sea para dar una conferencia o algún curso de formación, sólo tenéis que visitar la página oficial.

Como curiosidad: la organización seleccionará algunas de las charlas (6) y el resto las podremos votar los posibles asistentes. ¿A que está chulo?

¿Qué más puedo decir que no venga en la página oficial? Recuerda que es justo en esa página donde están todos los comunicados oficiales y 100% válidos.

lunes, 31 de marzo de 2014

Antología y anatomía de los ratones

Como os habrá pasado a todos, seguro que alguna vez habréis ido acumulando trastos y más trastos por si las moscas. En mi caso, el diógenes ha hecho mella en los ratones. Porque, haciendo limpieza de las cosas que se podrían tirar han ido apareciendo cosas como estas:

Ratón de bola por puerto serie y 2 botones
Ratón de bola por puerto serie y 2 botones
Ratones de bola por puerto serie y 3 botones
Ratones de bola por puerto serie y 3 botones (teníamos otro más de estos)
Ratones de bola por puerto miniDin y 3 botones
Ratones de bola por puerto miniDin y 3 botones
Añadir leyendaRatones de bola por puerto miniDin y 3 botones (uno de ellos es la reuda)
Añadir leyendaRatones de bola por puerto miniDin y 3 botones (uno de ellos es la reuda)

Además, estaba un conversor del puerto serie para ponerlo en el de 25 pines: 

Conversor tamaños puerto serie 9 pines a 25 y vicebersa
Conversor tamaños puerto serie 9 pines a 25 y vicebersa

No sólo eso. Ya que iban a ir a la basura (menos algunas cosas como las bolas), me ha dado por destripar uno de los que tenía rueda:

Las dos partes del ratón: tapa y base
Las dos partes del ratón: tapa y base
Circuitería del ratón. La rueda se puede levantar (y quitar)
Circuitería del ratón. La rueda se puede levantar (y quitar)
La rueda se podrá desmontar. Los rectángulos negros de la izquierda son los botones. Realmente lo que es el botón es la pequeña franja blanca que tienen encima. El cable que se puede ver que está conectado justo abajo es el de datos. Si quitamos la placa marrón:

Los rodillos del ratón que se mueven al desplazar la bola
Los rodillos del ratón que se mueven al desplazar la bola
¿Os acordáis que de vez en cuando había que hacer una buena limpieza de los rodillos y de la bola porque si no, no había forma de que funcionase?

Y, por último:

Los botones desmontados de la tapa del ratón
Los botones desmontados de la tapa del ratón
Muy curioso: ¿verdad? ¿Cuántos de vosotros lo habíais hecho? En mi caso, nunca se me había ocurrido hacerlo hasta ahora. 

domingo, 9 de marzo de 2014

RootedCon 2014: Tercer y último día

Tercer y último día de la RootedCon 2014. Una vez más, me ha llevado Miguel (@BinaryRock) al evento. Como en el resto de días he ido viendo a todos los compañeros de tropelías. Aquí está la foto que me hice con Longinos:

Longinos y yo en la RootedCon 2014
Longinos y yo en la RootedCon 2014
Las ponencias de este último día no fueron menos interesantes que las realizadas los anteriores días.

Lo primero que hizo Román fue presentar a Maximilian que se ha encargado de hacer la RootedWarefare. Para saber más, revisad la página ToolsWatch.

Después de presentarlo, Manu Quintans y Frank Ruiz nos hablaron de distintas formas de actuar de ciertos grupos criminales. Para evitar hacer muy repetitivo el prefijo "ciber" decidieron hacer la broma de cambiarlo por "concha". Además, también describieron un poco cómo actuaba un "periodista" que hablaba de cierto grupo y que, prácticamente, al informar mientras que las autoridades policiales investigaban, también entorpecían la investigación. 

La charla que iban a dar Youcef Bajajaja y Juan Antonio Rivera no pudo ser, por lo que la que estaba planeada para ser la última, se pasó a esta hora: Hugo Teso nos habló sobre los peligros que tienen los aviones a la hora de poder manipular el software embebido: las facilidades para que cualquiera pueda solicitar una actualización, cómo se puede acceder con una inyección SQL o XSS de los paneles de actualización de los mismos... Además, las plataformas que permiten hacer estos accesos también se pueden utilizar por móvil. Incluso, dichas actualizaciones se pueden enviar al avión por wifi o 3G. Nos enseñó un vídeo con una prueba de concepto hecha con un dron. Que si no...

José Picó y David Pérez hicieron la siguiente ponencia, en la que nos mostraron cómo se podía forzar que un móvil conectado en modo 3G pasase a 2G. Además, una observación importante que hicieron: no hay nada que no se sepa, porque todo está en la documentación de las patentes, por lo tanto es público. Su investigación se basaba en que, al menos hasta cierto punto, no todos los mensajes (donde mensajes son cada una de las comunicaciones o paquetes que se transmiten entre el terminal y las estaciones base. Así, resumiéndolo mucho).

Antes de ir a comer, Borja Berástegui nos explicó o nos mostró cómo se hacía con una consola cmd en cada terminal público que se encontraba, desde kioskos, pasando por pantallas táctiles de anuncios o, incluso, algún que otro cajero que pilló reiniciándose en algún punto de la geografía española. Eso sí, siempre siguiendo unas reglas muy estrictas como no utilizar herramientas tipo fuzzers o similares que hiciesen el ataque. Como norma general, tirando de los diálogos de ayuda, o moviendo la ventana mal ajustada... Y siempre dejando las cosas tal y como se las había encontrado. 

En un instante determinado, tanto Román como Nico Castellano nos animaron a participar en un grupo que de momento lleva el nombre de "Comunidad y Seguridad". De lo que se trata es de crear un grupo que tenga ideas en común para poder ayudar o asesorar a la sociedad en temas de seguridad. Sobretodo cuando se ve que se están redactando leyes que nos afectan en relación a la seguridad. 

Juan Vázquez y Julián Vilas nos hablaron de sistemas SCADA y cómo pudieron explotar un CENTUM OS 3000. Las dificultades para encontrar o poder descargar ROMs de este tipo de sistemas. Pero, sobretodo, también los requisitos que se imponen para poder ejecutarlos: sistemas operativos XP SP2, compartir con permisos de control total la carpeta C:\nombre3000\, deshabilitar el firewall... Hicieron una demo tirando de metasploit. Nos dijeron que todos los descubrimientos (que no tienen por qué ser todos lo que he enumerado aquí) ya han sido reportados al fabricante. 

Aladdin Gurbanov nos mostró un ejemplo de cómo con un lector/escritor de tarjetas magnéticas y algunas en blanco puedes duplicar una original. Nos enseñó cómo se divide la información que está almacenada en la banda magnética, qué contiene cada uno de los tracks y cómo se separa cada uno de ellos. Mostró un vídeo de cómo duplicó su propia tarjeta de crédito y nos mostró la información leída de la misma. Esa fue una de las condiciones que le pusieron: sólo podía mostrar información de sus tarjetas. 

En ese descanso, los que nos animamos, fuimos con Nico a una sala a parte para hacer una reunión sobre el tema de "Comunidad y seguridad". Quedamos en que nos enviarían un correo para poder ver más información al respecto y así aportar nuestra opinión. Algo que ya se movió hace dos años y se paralizó, se va a volver a mover. Esperemos que esta vez continué. 

Al finalizar esa reunión, Rául Siles (@dinosec) ya había empezado su charla sobre iOS. Cuando llegué, estaba contando cómo se podía engañar al terminal para indicarle que la versión que se va a instalar es más antigua que la que tiene instalada. Otra forma de ataque es al revés: que se instale una actualización y forzar a que se crea que tiene una fecha de, por ejemplo, 5 años adelante (de 2020, por poner un ejemplo). Por lo tanto, cada vez que llegue una actualización, esta nueva como va a ser "más antigua" que la instalada, y se rechazará. El primer ataque tiene que ser persistente (estar atacando siempre) el segundo, se hace una vez y ya dura para siempre. Para iOS 5 y 6 se hace una forma, para la versión 7 de otra. Además, aún habiendo reportado a Apple y éstos habiendo intentado solucionar el tema, no parece que lo hayan hecho del todo bien. 

Jaime Sánchez y Pablo San Emeterio nos hablaron de distintos tipos de mensajería instantanea para móvil: Viber, Snapchat, Whatsup. Cada uno de ellos con sus temas de seguridad. Por ejemplo: Viber ha optado por no cifrar absolutamente nada los multimedia, fotos, videos, localizaciones gps... y sólo cifrar los mensajes (Gracias Pablo por la corrección, :D ). O snapchat, que permite (o permitía), spamear o, incluso, bloquear un terminal, hasta tal punto que las pruebas que hicieron nos contaron que a veces incluso le llegan mensajes enviados hace casi un mes o dos. 

Para terminar, la organización hizo una entrega de los premios a las mejores ponencias de los últimos 5 años (los 4 años pasados): 
- 5º: Roberto Baratta
- 4º: Juan Antonio Calles y Pablo Gonzalez
- 3º: Raúl Siles y Jose Antonio Guasp Guasch
- 2º: David Perez y José Picó
- 1º: Jaime Peñalva (se lo recogió Javier Rodríguez, del GDT). 

Y aquí terminó la RootedCon V. Una vez más, espero poder asistir el año que viene. Mi enhorabuena por este año y nos vemos en la próxima!