viernes, 30 de noviembre de 2012

Ataque "Man in The Middle" con Cain I/II

Muchas veces hemos oído hablar sobre el ataque denominado "Man in The Middle" (MitM). Pero, ¿qué es este ataque? ¿Cómo se lleva a cabo? ¿Y podemos protegernos de él? Veamos.

¿Qué es el ataque Man in The Middle?

En criptografía, un MitM es un ataque en el que el enemigo adquiere la capacidad de leer, insertar y modificar a voluntad, los mensajes entre dos partes sin que ninguna de ellas conozca que el enlace entre ellos ha sido violado. El atacante debe ser capaz de observar e interceptar mensajes ante las dos víctimas.

Pongamos una ilustración práctica para entenderlo: Ana quiere enviar un mensaje a Pablo pero Javier pretende interceptarlo.

Javier hace creer a Ana que es Pablo para que ella le envíe el mensaje a él y no a Pablo. Luego Javier hace creer a Pablo que es Ana y le envía el mensaje de ella. Así se ha colocado en medio de los dos y ha interceptado el mensaje.


Traducido a un sentido criptográfico de clave pública lo primero que debería hacer Ana es pedirle la clave pública a Pablo. Pero si Javier es capaz de interceptar esa clave, podría enviar a Ana su propia clave pública haciéndole creer a ella que es la de Pablo. Ana cifraría el mensaje con la clave pública de Javier y la enviaría a Pablo. Javier interceptaría el mensaje de nuevo y lo descifraría con su clave privada (obteniendo así el mensaje en claro). Luego lo cifraría con la clave pública de Pablo y se lo enviaría a este. Pablo lo recibiría creyendo que es de Ana y así ninguno de los dos notó que Javier había interceptado la conversación.

Protocolo ARP

En las redes actuales que hacen uso de los niveles del protocolo TCP/IP, como Internet y la mayoría de las redes locales, el encargado de establecer la correspondencia entre las direcciones del nivel de enlace y del nivel de red es el protocolo ARP.Este es un protocolo sencillo que permite averiguar la dirección hardware de nivel de enlace, conocida como dirección MAC, partiendo de una dirección IP de nivel de red.

El funcionamiento del protocolo es sencillo: se envía una petición ARP a la dirección de broadcast de la red preguntando que MAC tiene una determinada dirección IP. Al llegar a la dirección de broadcast todos los nodos de la red recibirán el paquete pero si no tienen dicha IP lo descartarán. Solo responderá aquel nodo que sí tiene dicha IP. Cuando el nodo emisor recibe el paquete lo almacena en la caché de ARP.

Relación entre el MitM y el protocolo ARP (ARP Spoofing)

Usando la técnica de MitM podemos cambiar cambiar la caché de ARP de los nodos a los que vamos a atacar para que la MAC de estos sea la MAC del atacante. Cada vez que alguno de los nodos quiera enviar información al otro, resolverá la dirección MAC del mismo mediante su caché de ARP previamente envenenada, enviando así el tráfico al atacante en vez de al destinatario real. El switch enviará las tramas por la boca del destinatario, que en este caso es el atacante. Éste las recibirá y las pasará a la aplicación adecuada, que puede ser un sniffer que capture el tráfico.

El atacante reenviará el contenido de las tramas al destinatario real. La única diferencia entre la trama original y la modificada es, la dirección ethernet del destinatario, que varía de la del atacante a la de una de las víctimas. El nodo correspondiente recibirá el tráfico como si nada hubiese ocurrido. El ataque se ha establecido.

En el siguiente post explicaremos como realizar esto con Cain&Abel 2.0 y si podríamos defendernos de él de alguna manera.

Saludos curiosos.

martes, 27 de noviembre de 2012

Configurar tipo de letra en CSS en nuestra Web.

CSS
Al realizar programación Web, una parte importante de un diseño atractivo suele ser los tipos de letras que establecemos en ella.

Siempre que estos tipos de letras sean standard no tendremos problemas de incompatibilidad. Pero, ¿qué hay de aquellos tipos de letras menos conocidos e igualmente usados?
Lo más normal es usar el atributo de CSS llamado font-family que establece el tipo de letra que vamos a usar para un determinado elemento. ¿Cómo funciona este atributo?

Para explicar su funcionamiento usaremos el siguiente código:

#titulo{
        font-family: Kunstler Script, Comic Sans, Arial, Times New Roman;
}

Este código CSS cargará en el elemento denominado título el tipo de letra Kunstler Script en primer lugar. El navegador del cliente buscará en el equipo el tipo de letra cargado. Si lo tiene instalado lo cargará pero si no lo tiene cargará el siguiente especificado (en nuestro caso Comic Sans) y repetiría el proceso de comprobar si está instalado en el equipo del cliente.

Entonces, ¿qué podemos hacer para establecer un tipo de letra no standard que independientemente de si está instalado en el equipo del cliente o no lo cargue en la web?

Para hacer esto podemos crear una familia de fuente propia especificando donde se encuentra el archivo de fuente.


@font-face {
font-family:"fuente_web";
src: url("http://www.miweb.com/KUNSTLER.TTF");
}

#titulo{
        font-family: "fuente_web";
}

Con este código hemos establecido un nuevo tipo de font-family denominado "fuente_web", indicándole cual es el archivo de fuente que va a usar y donde se encuentra (en el fichero raíz de la web y el archivo KUNSTLER.TTF).

Así, en caso de que el equipo no tenga instalado el tipo de letra que queremos usar lo cargará desde la web y no desde el equipo; por lo que lo mostrará sin problemas.

Saludos curiosos.

Install Drupal 8 in CentOS

Drupal is an open source, flexible, highly scalable and secure Content Management System (CMS) which allows users to easily build and create...