You are on page 1of 10

> 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 aadiendo 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.



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


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.



>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<


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.



>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<


> 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

You might also like