miércoles, 30 de abril de 2014

Zink Security: Certificación CASI

Valga la redundancia, CASI: Certificación en Auditoría de Seguridad de la Información.

Desde Zink Security van a dar un curso que tiene muy, muy buena pinta relacionado con la seguridad en equipos y su auditoría.

Los maestros: Juanan y Pablo, de Flu-Project, Juan Luis García Rambla, Alejandro Martín e Ignacio Briones. He tenido el placer de aprender con todos ellos y os puedo asegurar que el que asista, también lo hará.

Esta formación constará de 6 módulos, 40 horas cada uno de ellos y un examen final. También tendrás la opción de hacer algún módulo por separado.

Para más información, y sobretodo, más oficial que la que aquí expongo, os dejo el enlace aquí abajo.

Por cierto: escrito desde el móvil.

http://www.flu-project.com/2014/04/apuntate-nuestra-certificacion-en.html

lunes, 28 de abril de 2014

CFP de NoConName 2014

Acabo de leer en Security By Default que está abierto el Call For Papers de No cON Name 2014.

Entre otras cosas se va a repetir el capture the flag del año pasado con algunas modificaciones.

En el artículo escrito por Lorenzo Martínez hay más información, que es la que acabo de leer. ¿Os veré por allí?

http://feedproxy.google.com/~r/SecurityByDefault/~3/QcinYPsN0Eo/abierto-el-call-for-papers-de-no-con.html

viernes, 25 de abril de 2014

FreePBX: Cambiar la shell de administración

Desde que instalé el sistema de mi PBX en la rasp llevo queriendo hacer un cambio que, si bien podía dejarlo tal cual, era una lata. Resulta que la consola de administración desde ssh para todos los usuarios mortales creados tiraban de la shell /bin/sh. En efecto: posiblemente a la hora de crearlo no lo pondría (bien) y me quedé con esa shell tan pesada. Y digo pesada porque todas las funcionalidades que nos da bash para poder utilizar el histórico con el teclado, utilizar la tecla tab para autocompletar, etc no tiraba. Por lo que me dispuse a buscar. 

Lo primero de todo saber que el sistema operativo es CentOS. Por lo que una búsqueda para poder hacer este cambio en esta ¿versión? de Linux es lo más adecuado. Y ahí nos encontramos con el comando chsh. Si bien en el ejemplo que he utilizado nos da la opción de hacer un listado de las shells disponibles, en mi caso no es posible. Aún así, el proceso es muy sencillo. Pero, antes, vamos a comprobar qué dicen nuestras variables de entorno:

Variables de entorno
Variables de entorno
Si bien seguro que es sencillo saber los valores de los nombres de usuario que he tapado, también. como podréis comprobar, he machacado las dos direcciones IP origen y destino.

Solicitaremos el cambio de shell al comando antes indicado, pasándole el parámetro -s y el valor deseado, en mi caso /bin/bash.

chsh -s /bin/bash

Tras lo cual nos pedirá la contraseña de nuestro usuario (el que estamos usando ahora mismo).

Cambiar la shell de sh a bash: chsh -s /bin/bash
Cambiar la shell de sh a bash: chsh -s /bin/bash

Ahora, cierra la sesión y vuelve a entrar. ¡¡Ya lo tienes!!
Usando la shell bash, después de cambiarla con chsh.
Usando la shell bash.
La verdad es que se me hace más cómo así.

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.