viernes, 9 de mayo de 2014
Diccionario informático II
IDE: También conocidos como ATA. Es el anterior puerto de conexión de los periféricos internos de los ordenadores antes de que los Serial ATA se convirtieran en el estándar. Estos periféricos se caracterizaban por ser rectangulares, tener dos hileras de 40 pines cada una de ellas y el cable que permitía la conexión de los discos duros, lectores ópticos, etc... con la placa base recibía el nombre de "faja". Ocupaba bastante espacio en la caja del ordenador y era un poco infierno trabajar el interior de la misma cuando estas "fajas" estaban conectadas. Tiene otra acepción: Entorno o plataforma de desarrollo. Por ejemplo, Eclipse o NetBeans son dos IDEs muy famosos para el desarrollo de aplicaciones java.
IDS/IPS: Intruder Detection System / Intruder Protection System. Una definición muy simple sería "antivirus que en vez de bichos analiza el comportamiento de la red". Es decir, que tiene una serie de firmas o patrones que analizan el tráfico de red y si se cumple la regla. Si tienes el detector, te avisará y tendrás que actuar en consecuencia. Si tienes el protector, cumplirá con las instrucciones indicadas cuando se produzca ese comportamiento.
Impersonalizar: La traducción literal (y real) sería "suplantar la identidad o hacerse pasar por alguien". Es lo que sucede cuando, por ejemplo, en un sistema Windows somos capaces de cambiar nuestro identificador de usuario por el otro de tal forma que tendríamos sus permisos: léase, para una elevación de privilegios. En el mundo real, sería, por ejemplo, prestarle el DNI a alguien para que se haga pasar por nosotros. O que el uso se haga porque nos lo hayan robado.
SIP: Muchas veces utilizado para responder simplemente sí. Raruno que se usen tres caracteres en vez de dos. Pero bueno. También es un protocolo de VoIP, que, ofrece, por ejemplo, FreePBX.
Sniffer: Normalmente es un programa que esnifará todo lo que se ponga a su alcance. Ya he hablado muchas veces sobre ellos. Como por ejemplo, whireshark.
Spoofear: Del verbo spoof. Sería falsificar en el sentido de "te hago creer que soy X pero realmente soy Y". No confundir con Impersonalizar. Por poner varios ejemplos: las direcciones MAC, las direcciones IP...
VoIP: Voz sobre IP. Transmitir voz utilizando el protocolo IP. Un ejemplo de VoIP sería SIP.
De momento os dejo estas pocas. Seguro que más adelante se me ocurren más para una entrega más.
miércoles, 7 de mayo de 2014
Antivirus blanco
No voy a negarlo. Nunca había oído hablar de este antivirus: Bit9. Que según se puede leer en el post enlazado, está basado en listas blancas.
Las listas blancas están muy bien cuando se trata de casos en los que se tiene que tratar con pocas casuísticas. Pero, tal y como habremos visto en muchas ocasiones, gestionar una lista en la que queremos hacer que sólo funcionen un grupo grande de casos y que no se permita el resto (ya sea un antivirus como este, una lista de un firewall...) se hace muy, muy complicado de gestionar. ¿Cuántas veces se ha querido hacer algo al respecto y después se ha tumbado porque no hemos sido capaces de controlarlo?
De la información que nos dan se desprende que el sistema que utilizan para validar el software es que tiene que estar firmado. Ahora, voy a dejar caer varias preguntas, así, divagando un poco:
- Si nos dedicamos el desarrollo este antivirus nos haría imposible trabajar, ya que necesitaríamos tener firmado nuestro software.... en medio del desarrollo. Es más: el IDE que utilicemos para el desarrollo también tendría que estarlo.
- A falta de probarlo, cabría pensar en que puede caer en nuestras manos algún programa que no esté en esa lista blanca. Por ejemplo: alguno que se haya solicitado a un proveedor (de esos para los que, seguro, muchos de nosotros trabajamos). Es un ejemplo, pero seguro que hay más: ¿Habría que enviarlo a la empresa para que lo firmen? Si son ellos quienes tienen que analizar los millones y millones de programas existentes, entonces...
- Ah!! Esta se me olvidaba y no es menos importante. No pensemos sólo en ejecutables. Recordemos, por ejemplo, que alguna .dll nos falla... o no. Pero, tal y como WinSock nos mostró en las Navajas Negras 2013, el revisar un .exe no implica que sus complementos como las librerías .dll sean las que se encarguen de hacer "el mal".
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
![]() |
| Variables de entorno |
![]() |
| 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. |
lunes, 14 de abril de 2014
Solución Reto 01: esteganografía
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:
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 |
Si esperamos un minuto o dos obtendremos:
![]() |
| Solución al estereograma |
- 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.
miércoles, 9 de abril de 2014
Hashes en 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
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());
}
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.







