sábado, 15 de octubre de 2011

Tormentas de Broadcast

Cuantas veces se han encontado con la situacion de que el #internet esta lento.. eso puede ser -claro- por una gran cantidad de conexiones hacia internet por parte de aplicaciones, navegador web, aplicaciones de mensajeria instantanea, voip, muchos usuarios concurrentes, una conexion lenta, etc...

Pero que sucede si ademas de estar lento el acceso a #internet tambien esta lenta la red.. Hoy en dia las velocidades de procesamiento de los nuevos equipos de hardware compiten con los medios fisicos de interconexion disponibles, si bien el bajo desempeño en la red puede ser por diversas causas como cableado defectuoso, mal diseño de la red (vlsm), uso de Hubs, etc; sin duda una de las que mas pueden afectar el desempeño de una red son las tormentas de broadcast .

Las tormentas de broadcast son una gran cantidad de peticiones ARP que se propagan en un dominio de colision y broadcast, se genera cuando paquetes de capa 2 se encuentran atrapados en un bucle sin fin debido a que Ethernet no tiene un campo TTL (Time To Live), los paquetes no tienen un timeout y por lo tanto, son retransmitidos una y otra vez en un bucle infinito.

Hace tiempo encontre un exelente articulo en everything sysadmin y hoy quisiera hacer mi aporte añadiendo un toque personal, les mostraré una forma sencilla para detectar dichas tormentas usando unicamente nuestro shell #bash y tcpdump

lo primero sera verificar si tenemos instalado tcpdump


$whereis tcpdump
tcpdump: /usr/sbin/tcpdump /usr/share/man/man8/tcpdump.8.gz

si no sale un resultado como el anterior es porque no lo tienen instalado, en ese caso tendran que instalarlo de la siguiente manera:

$sudo aptitude install tcpdump


una vez que lo tienen instalado comenzamos a usar la herramienta, la pondremos a escuchar paquetes en la interfaz deseada, que en mi caso sera eth0 y mi subred es la 192.168.0.0/23

$sudo tcpdump -i eth0 -n net 192.168.0.0/23

Imagen-1 Salida del tcpdump, observamos multiples request de ARP y como nota adicional se observa al final un request de una NIC hacia un BOOTP/DHCP para iniciar un booteo por PXE, muy probablemente en ese momento estaban encendiendo un PC en la red.

En la imagen anterior observamos una serie se request sobre distintas direcciones ip, algunas hacen multiples request, esto es normal lo que trataremos de encontrar son las ip's que presenten comportamientos inusuales; si bien es dificil calificar un comportamiento "inusual" dado que el broadcast es necesario, intentaremos identificar algunas NIC que relicen una gran cantiad de request dentro de una muestra de X cantidad de paquetes, como p. ej. arriba de 100 req./ 100 PKT

Debemos  separar unicamente  los request que nos interesan del volcado que hace tcpdump y esto los podriamos filtrar por who-has continuando con el bash, tomaremos una muestra de 100 lineas de volcado del tcpdump y las filtraremos con el siempre util grep.


$sudo tcpdump -i eth0 -n net 192.168.0.0/23 | head -100 | grep "who-has"

Imagen-2 Volcado del tcpdump filtrado por "who-has" con grep.
Ya va tomando forma, pero aun falta refinar el resultado para darle un toque mas elegante, para esto filtraremos unicamente las IP que hacen tell y ademas las contaremos.

$sudo tcpdump -i eth0 -n net 192.168.0.0/23 | head -100| grep "who-has"| awk '{ print $7 }'| sort | uniq -c


Imagen-3
El resultado nos muestra que hay 14 request de la ip 192.168.0.254 y otras tantas por parte de otras direcciones, en mi caso utilize {print $7} pq en mi version de tcpdump la ip que hace el tell no aparece en el ultimo campo, de ser asi usaria { print $NF}
Volviendo al resultado hasta aqui seria suficiente para identificar un posible problema de Broadcast, pero quisiera ir mas alla descartando resultados de pocos request y mostrando solo los que tengan de 10 o mas. y para ello me apoyare con grep -v

$sudo tcpdump -i eth0 -n net 192.168.0.0/23 | head -100 | egrep "who-has" | awk '{ print $7 }' | sort | uniq -c| grep -v "^ *[1-9] "

Imagen-4  Usando el grep -v filtramos la los resultados con pocos request, y dejamos unicamente los que podrian constituir un peligro potencial de Broadcast.
Este resultado es mas preciso pero para que sea aun mas revelador necesitaremos ampliar la muestra de paquetes subiendo el numero de head a por lo menos 1000




Como podemos observar los resultados son mas reveladores cuando ampliamos la cantidad de la muestra.


Haciendo un resumen explicare brevemente el string final.


$sudo tcpdump -i eth0 -n net 192.168.0.0/23 | head -100 | egrep "who-has" | awk '{ print $7 }' | sort | uniq -c| grep -v "^ *[1-9] "

  • $sudo tcpdump -i eth0 -n net 192.168.0.0/23 Executamos tcpdump con permisos de superusuario, le indicamos que debera usar la interfaz eth0 y escuchar en la red 192.168.0.0/23
  • head -300 la cantidad de la muestra de paquetes que sacara el tcpdump
  • egrep "who-has"   filtramos unicamente las lineas que contengan who-has
  • awk '{ print $7 }'   imprimimos solo la 7a columna
  • sort Obvio
  • uniq -c  imprime solo una linea por repetidos pero ademas los contara
  • grep -v "^ *[1-9] "  filtra -descarta- los que comiencen con 1,2,3,etc. hasta 9
Si tienen alguna duda o sugerencia, sus comentarios son bienvenidos.

Bytes ;)







jueves, 6 de octubre de 2011

La importancia de proteger nuestras conexiones Wifi (y nuestro router tambien)


  Hace tiempo que quiero escribir esta entrada pero no sabia por donde comenzar, para quienes somos informáticos sin duda sabemos de los riesgos de tener una conexión wifi desprotegida; pero también hay quienes ya sea por desconocimiento o falta de previsión no toman las medidas oportunas para evitar accesos a su red, que en la mayoría de los casos no les afectan de una manera directa pero puede llegar a ser un problema si nos topamos con una persona mal intencionada.

Decidí explicarlo de manera sencilla, la anécdota empieza en días pasados cuando mi hermano me comenta que se descompuso su conexion de Internet "Infinitum de TELMEX" y me pide que lo apoye a revisarla (mi hermano no es informático)

Entre a revisar el estado del módem via ethernet y encontré lo siguiente:






La solución fue simple, reemplazar un filtro dsl y la conexion volvió a la normalidad; por curiosidad entre a echar un vistazo a la configuracion del router  http://192.168.1.254 y me encontré esto...
 

Click para Ampliar

El módem se encontraba sin contraseña de acceso WTF esto quiere decir que si alguien llegara a conectarse a nuestra red podría ajustar la contraseña del módem y realizar cambios que comprometieran la seguridad o nuestra privacidad, -gracias   TELMEX por no enviar a un técnico- (como si hacen otros ISP en México) a instalar sus propios modem en los hogares usando buenas practicas de seguridad.

Aunque no es suficiente; recordemos esto.. (pasw-bypass) le asigne  una contraseña de administración al módem y aproveche para revisar otros ajustes como que tipo de cifrado estaba usando y cual era su contraseña Wifi.



Encontré que en ambos casos el router estaba usando los parámetros por default.

Quizá suene paranoico pero aun teniendo contraseña de conexion wifi y contraseña de administración, el router es vulnerable a ser hackeado e incluso alguien con los conocimientos necesarios pudiera sustraer datos confidenciales de nuestros ordenadores estando conectados a la red local.


Pero que puede pasar ???



Me di a la tarea de armar un pequeño lab, para ver que tan factible era para un atacante hacer tales acciones haciendo algo como phising cambiando la resolucion DNS en el router, les comparto algunas imagenes del proceso.
#Disclaimer: "Este artículo es publicado para tratar de hacer conciencia de la importancia de mejorar nuestra configuración del router. Recuerden que robar datos confidenciales o ingresar a una red inalámbrica que no nos pertenece es un delito.."

Empece desde cero, intentanto conectarme de manera furtiva como lo haria un vecino con iniciativa, en Internet hay mucha documentacion sobre como obtener una contraseña WEP por ej. -aqui- así que no extenderé  mucho el tema..




Siguiendo el proceso del viejo Aircrack, tarde aprox. 5 minutos en obtener la clave WEP y con ella me pude conectar a la red inalambrica (recordemos que sin permiso) una vez que estuve dentro de la red ingrese de nuevo al home-portal http://192.168.1.254


Para mi es un #fail que no pida algún tipo de autenticación para ingresar al home-portal ya que al acceder podemos obtener información sensible como numero de host conectados, la ip Publica, si hay alguna reglas de firewall o port fw, etc...
Ya en el home portal accedí a la "consola de administración y diagnostico" del router http://192.168.1.254/mdc


No tuve que preocuparme de no saber la contraseña de administración ya que nos aparece el clásico enlace de "no recuerdo la contraseña"

Entre a la sección "no recuerdo la contraseña" y seguí las instrucciones, ingrese la clave "exclusiva" a la que se refiere el texto, que no es otra cosa que el default wep password  (que obtuve minutos antes con aircrack-ptw) puse una nueva contraseña y le di en aceptar.


Una vez que cambie el password pude tener acceso a la "consola de administración y diagnostico"


Entre en la sección de  "resolucion de DNS"

 Y una vez ahí, hice un cambio temporal }:-D


Puse la dirección local que el router me había asignado y le di en agregar...


 Ahora bien, continuando con el fake y para hacer esto mas convincente instale un apache, php y sendmail, seguido de esto me descargue lo que seria el index de mi apache... }:-]


$sudo aptitude install apache2 php4 libapache2-mod-php4 sendmail
$cd /var/www/
$wget --wait=5 -H -t 0 -N -np -nd -erobots=off -p -U Safari http://www.facebook.com
con esto ultimo... +Mark Zuckerberg en "the Social Network Movie" :P



..y  el resultado es el siguiente, "Fakebook" }:-D



hice algunos cambios al botón de -Entrar- para ajustarlo a las necesidades del caso, busque la etiqueta del botón Entrar y redirigí las información de las cajas de texto a >> fakebook.php



No quisiera ser causante de que trolls y travesuras así que omitire el contenido de fakebook.php, solo comentare que recibe el contenido de las cajas de texto que envia el boton Entrar y las envia usando "mail("

Hicimos alguna pruebas desde una computadora con Windows 7 conectada a esta misma red ( gracias Luis ) la cual navegaba en Internet y usando aplicaciones como Skype y Outlook, para el fue totalmente transparente entrar a www.facebook.com }:-D


Mientras entraba al sitio facebook.com monitoreaba el access.log del apache para verificar que en realidad la pagina que se estaba visualizando en la maquina con Windows era la que estaba entregando mi apache.



Ahora pusimos unos datos fake y oprimimos el botón de Entrar que modificamos anteriormente para hacer el testing fest }:-D




En una segunda terminal vemos la actividad de sendmail y su comunicacion con el MX



Finalmente llegan los datos esperados }:-D







#Las conclusiones:

Cómo pudimos observar el no seguir algunas simples medidas de seguridad nos expone ante este tipo de riesgos, este ejercicio que les mostré lo realice en poco menos de media hora; sin embargo de haber tenido mejores ajustes de seguridad, no hubiera podido acceder al router y mucho menos conseguido la cuenta de fakebook de "lapuramamada@fakebook" :P Por esto, aquí les traigo los 6 puntos para que eviten ser hackeados....
  • Usen su sentido comun y eviten tener equipos inalambricos en sus hogares sin claves para conectarse.
  • usen Google+
  • Cuando accedan a un sitio siempre prefieran conectarse por https:// y no por http://
  • Cambien sus contraseñas de conexion Wifi por unas personalizadas y si su router lo soporta cambien el tipo de cifrado, preferentemente usen WPA o WPA2.
  • Verifiquen si su router soporta acceso exclusivo MAC y den de alta sus dispositivos, de esa forma solo se podran conectar los dispositivos que se hayan añadido por uds.
  • Usen siempre DNS que ofrezcan protección ante ataques como cache poisoning attacks recomiendo los Google public DNS, o bien Open DNS, estos ultimos incluso ofrecen una guia para que facilmente configuren sus computadoras.
  • Usen el sentido común.
Espero haber podido ayudar en algo a reforzar su seguridad, es un tema importante ya que tenemos cada vez mas presencia en el mundo virtual y de las redes sociales.
Si tienen alguna duda o sugerencia, sus comentarios son bienvenidos.

Regalenme sus comentarios.


Bytes ;)



#Disclaimer2:   NO ayudo a nadie a conseguir contraseñas de Hotmail, Yahoo, Facebook,etc.., NO ayudo a recuperar claves perdidas.