jueves, 8 de noviembre de 2012

Como detectar y evitar un ARP Spoofing

Holas, hoy os traigo otra de esas entradas que está relacionada con otra entrada.

En este caso está relacionada con el manual de ARP Spoofing que subí hace un tiempo, así que en esta ocasión os contare como detectar y evitar un ARP Spoofing.


¿CÓMO DETECTAR UN ARP SPOOFING?

Esta es quizá la parte mas complicada, ya que es muy difícil detectarlo, de hecho una persona que sepa hacerlo muy bien puede hacer un ARP Spoofing prácticamente indetectable.

El primer método para detectar un ARP Spoofing es mirar la tabla ARP y comprobar que todas las direcciones MAC son distintas, si hay alguna repetida quiere decir que estamos siendo víctimas de un ARP Spoofing, ya que las direcciones MAC son únicas para cada dispositivo, además es muy probable que la dirección mac duplicada sea la que hace referencia a vuestra puerta de enlace (gateway), ya que casi siempre se intenta redirigir el tráfico que se envía hacia internet.

para mirar la tabla ARP podéis hacerlo con este comando (se necesitan permisos de root para ejecutar el comando arp):


arp -v




como se puede ver en la imagen aparecen dos direcciones IP con la misma dirección MAC. La dirección MAC que aparece es la del ordenador al que estamos siendo redirigidos (por lo general suele ser el pc del atacante).

La segunda manera de detectar un ARP Spoofing es ejecutando un sniffer (como wireshark) en nuestro ordenador, de manera que tenemos que fijarnos en los paquetes ARP reply que recibimos (podemos poner un filtro en el wireshark para facilitar la visualización), si vemos que recibimos varios paquetes indicando una dirección IP y distintas direcciones MAC, quiere decir que estamos siendo victimas de un ARP Spoofing.



Como se puede ver en la imagen, se están recibiendo varios paquetes ARP reply indicando la dirección 192.168.120.30, pero las direcciones MAC con la que vienen asociados son distintas, lo cual es una incongruencia, ya que una tarjeta de red no puede tener más de una dirección MAC, lo cual indica que hay un atacante enviándonos paquetes ARP reply falsos y por otra parte está el dispositivo verdadero que también nos esta enviando sus paquetes ARP reply.

Por lo general en estos casos los paquetes ARP mas abundantes serán los falsos y los menos abundantes serán los verdaderos.


¿CÓMO BLOQUEAR O EVITAR UN ARP SPOOFING?

Bien, lo que veremos a continuación es como evitar ser víctimas de un ARP Spoofing, el procedimiento a seguir es bastante fácil.

Lo único que tenemos que hacer para evitar un ARP Spoofing es poner las entradas de la tabla ARP, estáticas (en vez de dinámicas que es como se crean por defecto).

Para introducir entradas estáticas en la tabla ARP lo haremos de la siguiente manera:


arp -s <direccion IP> <direccion MAC>


donde <direccion IP> es la dirección IP del ordenador que queramos introducir en la tabla ARP y <direccion MAC> es la dirección MAC que tenga dicho ordenador.

Ahora viene la pregunta ¿qué ordenadores tengo que meter en la tabla ARP?, realmente el más importante de todos es la puerta de enlace (gateway) ya que el ARP Spoofing casi siempre se hace con el objetivo de conseguir interceptar el tráfico que va dirigido hacia internet, pero si te sueles conectar a ordenadores de tu red (y no solo a internet) también es recomendable poner estos ordenadores en la tabla.

Nota: para saber la dirección MAC de los ordenadores que vas a introducir en la tabla puedes fiarte de las direcciones que ya están en la tabla (como dinámicas) siempre y cuando estés 100% seguro de que nadie te esta realizando un ARP Spoofing en ese momento, de todas maneras lo mas seguro es que las mires directamente en los ordenadores que quieras meter en la tabla (usando el comando ifconfig en cada uno de ellos por ejemplo), en el caso del router puedes mirar la dirección MAC en la página de configuración del mismo.

En este caso yo solo voy a poner la entrada para mi puerta de enlace (gateway), de manera que lo haría así:


arp -s 192.168.120.30 d0:ae:ec:ec:0a:44




Como podemos ver ahora en el campo "Flags" aparece una "M" indicando que la entrada ha sido introducida de manera manual en la tabla.

Nota: la entrada manual se borrará al reiniciar el sistema, así que, si queremos, podemos crear un script que se inicie en el arranque del sistema para que se introduzca la entrada manual automáticamente.

Tal y como está la tabla ARP ahora mismo sería imposible que se modificase la entrada del router enviando paquetes ARP reply, de manera que es imposible que nos hagan un ARP Spoofing para suplantar a nuestro router (puerta de enlace / gateway).


Espero os haya gustado =)

Cualquier duda dejádmela en comentarios

Saludos =D


sábado, 3 de noviembre de 2012

[Manual] SSH Tunneling

holap, aquí os traigo otro de mis manuales, este en concreto creo que fue uno de los últimos (sino el último) que escribí.

Este manual trata sobre como crear un túnel a través de un protocolo seguro como lo es ssh, la verdad es que me parece algo realmente interesante, ya que te permite convertir una transmisión de datos insegura en segura, ya que ssh cifra los datos que envía.

Por otra parte esta técnica también puede emplearse para hacer una redirección de puertos lo cual puede ser bastante útil en ciertas ocasiones.

El manual en si es bastante escueto, pero creo que el contenido merece la pena.

Os dejo el manual a continuación: SSH Tunneling

Saludos =)

viernes, 2 de noviembre de 2012

¿Cómo saber quien está en mi red? PARTE 2

Buenassssss.... esta entrada es una continuación de una que publiqué hace unas semanas, os la dejo AQUI.

Bien, como mencioné en la otra entrada, a veces los paquetes ICMP pueden ser bloqueados, de manera que no podemos confirmar realmente si hay o no un dispositivo en una dirección concreta, ya que si bloquea lo paquetes ICMP no recibimos ninguna respuesta a pesar de que SI hay alguien en la dirección ip a la cual enviamos la solicitud ICMP.

Ok, aquí es donde entra en juego el protocolo ARP. Resumiendo mucho el tema: en una red de área local los ordenadores se comunican con direcciones físicas (MAC), y el protocolo ARP se encarga de hacer una asociación entre las direcciones IP y las direcciones MAC. Resumiendo del todo, si un ordenador quiere estar conectado a una red tendrá que responder a las solicitudes ARP que se le manden, así que nosotros usaremos esto para descubrir que dispositivos están conectados realmente a nuestra red.

Nota: si un ordenador bloquease los paquetes ARP no se podría conectar a la red, ya que no podría ni enviar ni recibir paquetes al no poder recibir información del protocolo ARP, lo cual nos asegura que al realizar solicitudes ARP nos responderán todos los dispositivos que están realmente en nuestra red.

perfecto, ahora ya sabemos el truco definitivo para saber quien están en nuestra red, pero.... ¿cómo lo ponemos en práctica? pues bien, podemos hacerlo de varias maneras:

La primera manera de hacerlo es haciendo un ping con nmap tal y como hacíamos en la parte 1 y a continuación mirar la tabla ARP de nuestro equipo, para mirar la tabla ARP se necesitan privilegios de root, asi que la secuencia de comandos sería así:

Nota: yo uso la red 192.168.120.0 porque es la dirección de mi red, pero cada uno deberá de usar la dirección de su propia red, si tienes configurado el router por defecto probablemente la dirección de tu red sea 192.168.1.0


nmap -sP 192.168.120.0-255




su

arp -v




Como podemos ver se muestran un montonazo de entradas en la tabla ARP, pero casi todas nos marcan que están incompletas, las que nos interesan son las que están completas, osea, las que se nos muestran con una dirección MAC, si queremos podemos ejecutar el comando de la siguiente manera para que se nos muestren solo las entradas completas:


arp -v | grep C




estas entradas son los ordenadores que están conectados a nuestra red, en mi caso se muestran dos entradas, que corresponden a la dirección 192.168.120.30 (mi router) y 192.168.120.29 (otro ordenador de mi red), como podéis observar cuando se realiza el sondeo ICMP no se muestra esta ultima dirección (192.168.120.29) ya que en este ordenador hay un firewall que bloquea los paquetes ICMP, pero en cambio cuando consultamos la tabla arp vemos que esta ahí porque SI que responde a la solicitud ARP que hace el sistema.

Nota: en el sondeo icmp sale la dirección 192.168.120.21 que es la dirección de mi propio ordenador, por eso no sale después en la tabla ARP.

La segunda manera es la mas factible, ya que solo usamos nmap, de hecho usamos nmap exactamente de la misma manera que antes, lo único que cambia es que lo haremos con permisos de root:


su

nmap -sP 192.168.120.0-255




Como podemos ver en esta ocasión también se nos muestra la dirección 192.168.120.29 que antes no se mostraba.

El tema es que nmap siempre hace un sondeo ARP, lo que pasa es que, por decirlo de alguna manera, nmap necesita permisos de root para poder acceder a la información del protocolo ARP, así que cuando lo ejecutamos sin permisos de root solo nos muestra el resultado del sondeo ICMP, pero cuando lo ejecutamos con permisos de root nos muestra también el sondeo ARP (que es mas fiable).

De todas maneras también podemos indicarle a nmap que haga un sondeo exclusivamente ARP de la siguiente manera:


nmap -PR 192.168.120.0-255


Esta opción ademas del sondeo ARP también hará un escaner de los puertos mas habituales, si queremos evadir un poco el escaner de puertos, podemos ejecutar el programa de la siguiente manera:


nmap -p 0 -PR 192.168.120.0-255


Conclusión final:

Para saber quien esta en tu red lo único que tienes que hacer es ponerte como root en un shell (usando el comando su) y después simplemente usar nmap con la opción -sP y el rango de direcciones de tu red.

Cualquier duda que tengáis dejádmela en los comentarios

Saludos =)