RareGaZz17:(r17_03):30/11/2000 << Back To RareGaZz17


+------+-------------------------------------------+----------+--------------+ | +-->| Sniffing & Tripping |<---------| y0ni | +->|<--> r17_03 <-+-----------+-----+--------->+--------------+----------->|-+ +-------------------------------------------------------------------------- >>>>>>>>>>>>>>>>>> <Los Conmutadores> <<<<<<<<<<<<<<<<<< > introduccion. El conmutador o switch es un dispositivo de interconexion que conecta en sus puertos segmentos de una red local o estaciones finales (servidores normalmente). En este texto cuando hablemos de switch o conmutador nos referiremos a los switches que trabajan a nivel 2 o nivel de enlace que son puentes multipuertos, aunque hay otros switches que trabajan a nivel de red como hacen los routers. > Funcionamiento de un switch. Opera en la capa 2 del modelo OSI que corresponde al nivel de enlace por eso para saber donde enviar los paquetes que recibe mira la direccion ethernet ( direccion MAC ) de las tramas. Retransmite las tramas en base a la direccion MAC de destino. Funciona a nivel hardware lo que le da mas velocidad que a otros dispositivos que funcionan por software. Permite varias conexiones simultaneas (segun el tipo de switch tendra mas o menos puertos, lo que permitira mas o menos conexiones simultaneas). Al trabajar a nivel de enlace no distingue los protocolos IP, IPX, AppleTalk, DECnet ni superiores por lo que las decisiones que toma el switch son menos "inteligentes" que las que puede tomar un router, pero el switch es mas rapido. Cuando el switch recibe un paquete por un segmento de la red mira su direccion fuente y destino, si pertenecen al mismo segmento de red, el paquete se descarta y si pertenecen a distintos segmentos, se retransmite el paquete al segmento de red destino. El switch va creando una tabla con todas las direcciones MAC que van pasando a traves de el, a esto se le llama aprendizaje y funciona de esta forma: - si la direccion MAC de origen de la trama no esta en su tabla de direcciones la guarda junto el identificador del puerto por el que le llego, para mas tarde saber por que puerto tiene que enviar las tramas que vayan destinadas a esa direccion. - si la direccion MAC de destino de la trama no esta en su tabla de direcciones no sabra por que puerto debe enviar la trama y lo que hace es enviarla por todos los puertos menos por el que llego para asegurarse de que llega a su destino. Si es una trama broadcast la retransmite por todos sus puertos, para que llegue a todos los segmentos de la red. El switch puede configurarse para que el vaya a±adiendo las correspondencias entre direcciones MAC y puertos automaticamente (modo aprendizaje) segun vaya recibiendo tramas. Si no queremos que haga esto hay que configurar estaticamente las direcciones MAC que corresponden a cada segmento de la red (o puerto del switch), y modificar esta coniguracion cada vez que cambie la MAC de algun ordenador. Pueden empezar a reenviar una trama, antes de haberla recibido entera, no como los bridges, que reciben el paquete entero antes de retransmitirlo. Los switches pueden hacer el reenvio de 2 formas distintas: - almacenamiento y reenvio: Analiza la trama completa. Permite unir segmentos de distintas velocidades. - al vuelo: Analiza solo la cabecera de la trama, para saber por que puerto enviarla. No permite que los puertos del switch unan segmentos de distintas velocidades (por ejemplo de 10 y 100 MB). > Segmentando LANs con Switches. Se usan para segmentar LANs (hacerlas mas peque~as) y asi aumentar su rendimiento (menos colisiones y ancho de banda a repartir entre menos estaciones) y mejorar su seguridad. Segmenta la LAN en dominios de colision, (solo compiten a la vez por el medio las estaciones que esten en el mismo segmento de red), aumentando ademas el ancho de banda disponible para cada estacion, ya que se reparte entre el numero de estaciones de cada segmento, que se reduce al segmentar la red con un switch. En una LAN hay dominios de broadcast y dominios de colisiones: dominio de colisiones: Es un trozo o segmento de la red donde todos los ordenadores tienen que competir entre ellos para poder usar la red. Es decir trozo de red donde si 2 ordenadores envian datos simultaneamente colisionarian. El Ancho de banda de cada segmento la red se reparte entre todos los ordenadores del dominio de colision. Cuanto mas grande sea el dominio de colision (cuanto mas ordenadores tenga) mas probabilidad de que se produzcan colisiones, y cada ordenador toca a menos ancho de banda, disminuyendo su velocidad de acceso a la red. dominio de broadcast: Zona de la red hasta donde llegan los paquetes cuya direccion destino en la direccion de broadcast. El trafico broadcast generado en un dominio de colisiones pasa a todos los demas dominios de colisiones pero no sale del dominio de broadcast donde se genero. El router separa dominios de broadcast y dominios de colisiones. El switch (de nivel 2) separa dominios de colisiones pero no dominios de broadcast. Por ejemplo podemos poner en un segmento de la red al servidor central solo y en los otros segmentos a todas las estaciones de usuario separadas en departamentos o clases de forma que el servidor central tenga todo el ancho de banda disponible y no tendra que competir con otras estaciones para usar la red ya que es la unica estacion que esta en su segmento de red, y las estaciones de usuario se repartiran el ancho de banda del segmento en el que estan y competiran entre ellas para poder acceder a la red, y conectarse al servidor central o a otras estaciones. Con un switch podemos solucionar cuellos de botella en el servidor o en cualquier otro punto de la red. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> <Esnifar trafico en LANs segmentadas> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< En las redes segmentadas, solo se envia el trafico al segmento donde esta el ordenador al que va dirigida la informacion, lo que evita poder esnifar el trafico de red entre ordenadores que esten en segmentos distintos al que nosotros nos encontremos. En principio, solo podemos esnifar el trafico que circula por el segmento donde estemos, pero hay varias formas de hacer que el switch envie el trafico por otros puertos distintos al puerto destino de las tramas, permitiendo esnifar trafico dirigido a otros segmentos. Se pueden usar varios metodos para intentar enga~ar al switch y conseguir que envie por nuestro puerto o segmento de red el trafico que va destinado a otros segmentos de red. 1.Saturacion del switch El switch tiene un espacio de memoria limitado donde guarda las direcciones MAC de los ordenadores que estan conectados en cada puerto del switch. Si se llena este espacio de memoria (donde esta la tabla de direcciones del switch) con muchas direcciones MAC falsas, al quedarse sin recursos para almacenar las direcciones MAC de las nuevas tramas que reciba, no puede funcionar correctamente porque que no sabra a que puerto tendra que enviar las tramas. Un switch saturado (con sus tablas MAC llenas) puede actuar de formas distintas dependiendo del fabricante: - envio de tramas por todos los puertos (modo repetidor) - ignorar las direcciones que no tenga almacenadas en sus tablas. - envio de las tramas por puertos equivocados. - otros se bloquean, o se reinician - ... Este problema solo se da cuando el switch esta en modo aprendizaje. Si introducimos a mano las direcciones MAC de los equipos que van en cada puerto y desactivamos el modo aprendizaje, no guardara las nuevas direcciones MAC automaticamente por lo que no podran saturarse sus tablas con el inconvenientede que cada incorporacion de nuevos equipos o de nuevas tarjetas de red implique una reconfiguracion del switch. Si en vez de usar una tabla para almacenar todas las direcciones MACs del switch usasemos una tabla para cada puerto, en caso de ataque por saturacion solo afectaria al puerto por el que se realizo el ataque, y como ese puerto ya era esnifable para el atacante, no consigue nada nuevo, pero eso depende de las caracteristicas del switch. 2.ARP Redirect Las peticiones ARP tienen como direccion de origen la IP y MAC del emisor, para que el receptor no tenga que preguntarla cuando responda. Los ordenadores, guardan esta informacion en su cache. Sabiendo esto, podemos redirigir el trafico de ordenadores cercanos, enviando tramas ARP indicando como direccion de origen nuestra direccion MAC y como IP de origen la del router, para hacer creer que somos el router, y nos envien las tramas a nosotros. Tambien podemos hacer creer al switch que la direccion MAC del router es la nuestra, para que nos envie todos los paquetes a enrutar, y luego nosotros se los mandaremos a la MAC verdadera del router. 3.ICMP Redirect Un ICMP redirect le indica a un ordenador que envie sus paquetes a otra direccion. Enviando paquetes ICMP de redireccion a un ordenador diciendole que debe enviarnos a nosotros los paquetes podemos esnifar su trafico de red. 4.ICMP Router Advertisements ICMP Router Advertisements informa a los ordenadores de quien es el router. Si enviamos un ICMP Router Advertisements, los demas ordenadores creeran que somos el router, y nos enviaran sus tramas. La mayoria de los sistemas no usan estos paquetes ICMP, por lo que no funcionara. Ver http://www.l0pht.com/advisories/rdp.txt 5.Falsear la direccion MAC de la victima Haciendo ARP spoofing podemos confundir al Switch que intenta recordar que direcciones MAC estan en cada uno de sus puertos y hacer que nos envie trafico destinado a otro segmento de red distinto al nuestro haciendo creer al switch que una MAC cualquiera pertenece a nuestro puerto/segmento, siempre que el switch este configurado en modo de aprendizaje. Se hace enviando tramas ARP al switch, con la direccion MAC de origen del ordenador cuyo trafico queremos esnifar para hacer creer al switch que ese ordenador esta en nuestro puerto del switch o segmento. La funcion de aprendizaje del switch creera que somos otro ordenador, y nos enviara sus tramas. El problema es que el ordenador victima enviara tramas al switch con su direccion MAC de origen, con lo que el switch volvera a tener la direccion MAC correcta del ordenador. Otro problema es que si el ordenador victima no recive las tramas de respuesta se rompera la comunicacion y no habra nada que esnifar. Esto puede solucionarse de varias formas. Una forma es, una vez que un ordenador tenga establecida una conexion con otro ordenador lo "desconectamos" con un ataque DoS, y enviando al switch tramas con la direccion origen cambiada recibiremos sus respuestas, robando la conexion. Se puede enviar de vez en cuando algunas tramas con la direccion de origen del otro ordenador para quitarle solo algunas respuestas, que las recuperara cuando salte su timeout. Podemos robar todas las respuestas a un ordenador victima, enviando constantemente tramas al switch con la direccion MAC de origen de ese ordenador, y cuando recibamos sus tramas las reenviamos a la direccion de broadcast para que le llegue al ordenador victima y asi no cierre la conexion. Algunas formas de evitar esto es es activar la opcion "port security" del switch, que lo que hace es desactivar un puerto si cambian sus direcciones MAC o usar la opcion "trap on port MAC address change" para que nos envie un aviso. 6.Reconfigurar el "spanning/monitor port" en el switch Algunos switches permiten configurar uno de sus puertos como monitor o spanning port, para que se copie el trafico que va a traves del switch (normalmente solo el de uno de sus puertos) a ese puerto, funcionando como un Hub. Esto le sirve al administrador de la red para poder examinar problemas que ocurran. No siempre se puede enviar el 100% del trafico al puerto monitor, depende sobre todo de la carga de la red. En algunos casos se puede hacer telnet al switch o reconfigurarlo mediante SNMP para activar esta caracteristica, pero esta opcion no suele estar permitida. 7.Cable-taps/Hubs Se puede desviar el trafico colocando un Hub o un tap entre la conexion de 2 switches o entre la conexion de un switch y un servidor que se quiera monitorizar, para copiar los datos a otro ordenador que haga de esnifer o de IDS. Siempre que se tenga acceso fisico a la red. Los Taps son unidireccionales, lo que evita que se reciba informacion del equipo que hace de esnifer o de IDS, o que se intente enviar trafico directamente a estos equipos. >>>>>>>>>>>>>>>>>>>>>>> <Deteccion de esnifers> <<<<<<<<<<<<<<<<<<<<<<< Algunos de estos metodos, solo funcionan en redes que no esten segmentadas y en ese caso solo son aplicables en el segmento al que estemos conectados. Estos metodos pueden servir para ver si algun ordenador tiene su interfaz de red en modo promiscuo, ya sea porque tenga un esnifer corriendo, un IDS, o cualquier otra herramienta que monitorice la red y active el modo promiscuo. 1.El metodo ping Se envia un ICMP Echo Request al ordenador, con la direccion ip de destino correcta, pero la direccion hardware de destino incorrecta. Este paquete deberia ignorarse porque la direccion hardware es incorrecta pero algunos sistemas en modo promiscuo responderan a este paquete delatando que estan en modo promiscuo. Una defensa contra este metodo es poner un filtro para las direcciones MAC en el esnifer. Este metodo funciona en redes ethernet segmentadas y puede mejorarse de varias formas: 1. cualquier protocolo que genere una respuesta puede usarse, como la peticion de conexion TCP o el puerto 7 (echo) con protocolo UDP. 2. puede usarse cualquier protocolo que genere errores en el ordenador destino, como el error "bad IP header" que genera un error ICMP. 3. Algunas veces debe usarse una direccion broadcast como 255.255.255.255 o 10.0.0.255 para pasar el filtro software de direcciones IP. Otro problema es que normalmente no se responde a direcciones broadcast para evitar los ataques smurf. 2.El metodo de latencia con ping Hacemos ping sobre el ordenador , y anotamos el RTT (round trip time) Creamos muchas conexiones tcp falsas en el segmento de red, si el ordenador esta en modo promiscuo, procesara todas estas conexiones lo que aumentara su latencia. Hacemos ping sobre el ordenador, y comparamos el RTT con el anterior, para ver si hay indicios de esnifers en el segmento. 3.Metodo ARP Es parecido al metodo del ping, pero enviando paquetes ARP. Esta muy bien explicado en la documentacion del programa NEPED. http://www.apostols.org/projectz/neped/ Se envia una peticion ARP a una IP, con una direccion hardware de destino que no exista (no vale la de broadcast). Al no corresponder la direccion MAC con la de la tarjeta, deberia descartarse porque las tarjetas de red, descartan los paquetes cuya direccion ethernet de destino es distinta a la de la tarjeta de red y a la direccion de broadcast. Pero un ordenador en modo promiscuo respondera a menos que tenga este fallo corregido. 4.Metodo DNS Muchos esnifers hacen resolucion inversa de las ips que ven para mostrar los nombres de las direcciones IP. Podemos detectar un esnifer, viendo el trafico DNS que genera. Creamos conexiones tcp falsas o paquetes UDP falsos (con una IP inventada) en nuestro segmento de red y nos quedamos esnifando la red. Si vemos peticiones al DNS para resolver esta IP inventada, seguramente habra un sniffer escuchando. Este metodo funciona en otros segmentos de red. Hay esnifers que resuelven las ips a nombres en cuanto reciben la ip, pero hay otros que lo retrasan hasta decodificar el paquete o que no hacen ningun tipo de resolucion de nombres. 6.Metodo del Encaminamiento fuente (source-route) Se hace a~adiendo al datagrama IP la informacion de la ruta que debe seguir para alcanzar su destino. Se pueden detectar esnifers en otros segmentos de red. Creamos un ping, forzando que en su ruta pase por otro ordenador del mismo segmento, que tenga desactivado el routing para que no reenvie las tramas y si recibimos respuesta, seguramente el ordenador destino habra esnifado el ping de la red. En la respuesta, mira el campo TTL para ver si vino por haber sido esnifado o porque fue enrutado por el ordenador ( TTL decrementado ). La opcion de source-routing suele estar deshabilitada por seguridad. 7.Metodo de "decodificacion" Aunque los metodos del ping y del ARP, solo funcionan en la red local este metodo funciona para otras redes. Consiste en establecer conexiones mediante protocolos que transmitan las claves en claro, (ftp, telnet, pop3...) usando cuentas ficticias, creadas solo para esta prueba. Si alguien esta esnifando nuestra conexion, obtendra el login y password que usemos, e intentara conectarse mas tarde a nuestro sistema con esa cuenta, que la tendremos vigilando para que nos avise en cuanto se use. Tambien podemos usar "servidores de prueba", que no tengan otro uso. http://www.zurich.ibm.com/~dac/Prog_RAID98/Full_Papers/sniffer_detector. html/index.htm 8.Metodo del host Se ejecutar el comando ifconfig -a en el ordenador que queramos, pero los ficheros binarios suelen alterarse para evitar detectar el modo promiscuo de esta forma. Podemos usar una version limpia de ifconfig del cd-rom de instalacion o buscar en internet herramientas que preguntan al hardware directamente. 9.Metodo de latencia Consiste en generar mucho trafico por la red de forma que no tenga efecto en ordenadores que no esten en modo promiscuo (su tarjeta de red) pero que ralentice a los ordenadores que lo esten. Haciendo ping a la maquina antes de cargar la red y durante la carga de la red, podemos ver si hay mucha diferencia en las respuestas en caso de que la maquina este muy cargada esnifando. Este metodo puede degradar mucho el funcionamiento de la red asi como por la carga de la red los pings que hacemos pueden retrasarse y saltar el timeout, dando falsos positivos. Si el ordenador responde los pings a nivel del kernel siendo independiente de la carga de la CPU, este metodo daria falsos negativos. Los test de latencia estan pensados en que las tarjetas de red que no estan en modo promiscuo filtran las tramas a nivel hardware, sin suponer una carga para el ordenador. Es el firmware de la tarjeta el que elimina las tramas que no van dirigidas a ella, lo que no afecta a la carga del ordenador. Los ordenadores con tarjetas de red en modo promiscuo, deben filtrar las tramas por software, lo que puede ralentizar bastante al sistema. 10.TDR (Time-Domain Reflectometers) los TDR son como radares que envian pulsos por el cable y recojen las respuestas. Se pueden analizar los graficos de estas respuestas para ver los dispositivos sospechosos conectados al cable. Tambien sirven para aproximar la distancia en el cable a la que esta (el Tap) intervenida la linea. Nos permite detectar esnifers hardware conectados al cable, que de otra forma serian invisibles. Los TDRs se usaban mucho en las redes Ethernet coaxiales para detectar vampire taps, pero hoy en dia con la topologia en anillo, han quedado en desuso. Tambien hay equipos OTDR para los muy paranoicos. 11.Luces del hub Ver las luces del hub para ver si hay conexiones extra~as. Para esto ayuda tener los cables numerados para saber en que ordenador o rama de la red puede estar el esnifer. 12.Metodo del Protocolo SNMP Los hubs inteligentes gestionados por SNMP pueden monitorizar automaticamente el hub. Algunas consolas pueden loggear las conexiones de todos los puertos. 13.Tests especificos de S.O. Se hacen aprovechando algun error o la extra~na forma que tienen algunos S.O. de filtrar las tramas MAC. - kernel de linux Los antiguos kernels tienen un fallo filtrando paquetes que podria usarse para hacer que los ordenadores en modo promiscuo respondan a nuestras peticiones. Normalmente la tarjeta de red filtra los paquetes cuya direccion MAC de destino no sea la de la tarjeta de red o la direccion de broadcast y si no, pasa el paquete al kernel para que sea procesado. Pero una tarjeta de red en modo promiscuo pasa todos los paquetes que recibe al S.O. Algunos kernels de linux miran solo la direccion IP del paquete para ver si deben dejarlo pasar. Para aprovechar esto hay que enviar un paquete con una direccion ethernet invalida pero con la direccion IP del ordenador destino. Los ordenadores en modo promiscuo cuyos kernel sean defectuosos, aceptaran ese paquete y si es un ping, nos responderan. Los ordenadores que no esten en modo promiscuo ignoraran este paquete. Podemos enviar el ping a la direccion IP de broadcast para buscar en toda la red con una direccion ethernet invalida. - Windows 95, 98, NT El fallo en estos S.O. esta en como analican las tramas ethernet broadcast. Normalmente, la tarjeta de red solo pasa al kernel lo paquetes que van Destinados a su direccion fisica o a la direccion de broadcast que es FF:FF:FF:FF:FF:FF. Cuando esta en modo promiscuo, el driver para ver si la trama va destinada a la direccion de broadcast, mira solo el primer octeto de la direccion Ethernet y si es FF (0xFF) la deja pasar como si fuese FF:FF:FF:FF:FF:FF. Para aprovechar esto solo hay que enviar un paquete a la direccion ethernet FF:xx:xx:xx:xx:xx junto con la direccion ip del ordenador destino. Un ordenador con S.O. de Microsoft si esta en modo promiscuo respondera, y si no lo descartara. Este fallo depende del driver que utilice, que por defecto es el de Microsoft que si tiene este fallo. Algunas tarjetas de red filtran por hardware las direcciones broadcast en base a su primer octeto solamente aunque no esten en modo promiscuo, por eso respondenran a esta prueba positivamente dando falsos positivos aunque no esten en modo promiscuo. >>>>>>>>>>>>>>>>>>>>>>> <Enlaces y Programas> <<<<<<<<<<<<<<<<<<<<<<<< > Algunos de los enlaces usados: http://www.robertgraham.com/pubs/sniffing-faq.html http://www.robertgraham.com/pubs/network-intrusion-detection.html http://www.l0pht.com/antisniff http://radon.eecs.berkeley.edu/~dongwu/cs261/propl.html http://www.shomiti.com http://www.ods.com/ ftp://coast.cs.purdue.edu/pub/tools/unix/cpm/ http://www.apostols.org/projectz/neped/ http://www.packetfactory.net/Projects/sentinel/ http://www.securiteam.com/unixfocus/Detecting_sniffers_on_your_network.html http://www.inaoep.mx/~moises/AGC/ http://www.3com.com http://www.sans.org > Algunos programas disponibles: http://packetstorm.securify.com/sniffers/ : smit, wci.c, MiM.c, dsniff, hunt, parasite http://packetstorm.securify.com/UNIX/misc/ : arpfun, ARPOc2.c, BKtspibdc.c, switchfucker http://packetstorm.securify.com/UNIX/utilities/ : fake, arping http://packetstorm.securify.com/groups/teso/ : arptool http://packetstorm.securify.com/UNIX/loggers/ : arpwatch http://packetstorm.securify.com/Win/ : ArpWorks10.exe http://packetstorm.securify.com/DoS/ : havoc http://quake.skif.net/RawIP/macof.html : macof http://www.zweknu.org/src/MiM/ http://www.phenoelit.de/ ARP0/WCI