|
Apuntes
del Editor
"UNIDOS CRECEREMOS"
AprendaRedes.com
se debe bastante a su público lector. Nuestro objetivo principal es
tener cursos virtuales de acuerdo a las necesidades de nuestros
suscriptores. Por esta razón es muy importante que nos hagas llegar tus
sugerencias acerca de los cursos virtuales que te gustaría llevar. En la
siguiente dirección podrás participar
en nuestra encuesta y a cambio
te regalaré
un interesante e-book sobre
"Redes Privadas Virtuales" totalmente en español:
http://www.aprendaredes.com/encuesta.htm
Muchos de los
suscriptores de éste boletín me han comentado que el principal problema
para aprender a configurar routers ó ruteadores es la falta de
laboratorios donde puedan practicar,
¿Te gustaría
tener un laboratorio de redes a tu disposición todo el tiempo desde donde
te encuentres?
La respuesta
es un laboratorio virtual. Haz clic en la siguiente dirección para ver una
pantalla real de un router CISCO.
telnet://207.68.86.95
Te sugiero que
intentes esta conexión desde una cabina o café internet o desde la
comodidad de tu casa.
Nota:
Para configurar un router CISCO en forma remota se utiliza TELNET (puerto
23). Si tu computadora no tiene Telnet no podrás ingresar al router. Si la
PC está detrás de un firewall necesitas que esté habilitado la salida.
Tu curso
virtual de configuración de routers tendrá un laboratorio virtual, ¿que te
parece?. Como comprenderás tener un laboratorio de routers tiene su costo.
Por eso antes de realizar dicha inversión queremos estar seguros
que tú lo necesitas. Envíame tu opinión a:
mailto:editor@aprendaredes.com
APRENDE A MIRAR DENTRO DE
LA RED CON UN "SNIFFER"
SNIFFING
Quien no ha leído un comic que alguna vez habrá observado que, cuando se
quiere representar a alguno de los personajes llorando o sollozando, se
utiliza la palabra inglesa snif. Durante muchos años pensé que esa
palabra significaba llorar pero al cabo de un tiempo me enteré de que su
verdadero significado era algo así como absorber.
Un sniffer es un programa que absorbe o captura datos de la red. Todo lo
que pasa por delante de sus narices lo absorbe y lo almacena para su
análisis posterior. De esta forma, sin poseer acceso a ningún sistema de
la red, se puede obtener información, claves de acceso o incluso mensajes
de correo electrónico en el que se envían estas claves.
La forma más habitual de sniffing, probablemente porque está al alcance de
cualquiera, es la que podríamos llamar sniffing por software, utilizando
un programa que captura la información de la red.
También es posible hacer lo que podríamos llamar sniffing hardware, que
pasaría por conectar en un cable de red un dispositivo que permita
capturar el tráfico.
Con relación a este último tipo, la expresión "conectar el cable de red"
es una expresión general que incluye el propio hecho de conectar un
dispositivo a un cable de la red pero también incluye, por ejemplo, un
receptor de radio que se sitúa en medio de un radioenlace. Como puedes
imaginar, este tipo de técnicas requiere de unos conocimientos de
electrónica adicionales muy importantes. En este artículo vamos a tratar
lo que hemos llamado sniffers software, ya que existe una gran cantidad de
ellos y el lector podrá probarlos, detectarlos y eliminarlos en su propia
casa sin necesidad de molestar a nadie.
IDEA GENERAL
Como acabamos de decir, un sniffer captura todos los paquetes que pasan
por delante de la PC en la que está instalado. Esto quiere decir que un
sniffer no es un objeto mágico que una vez lanzado puede ver todo lo que
sucede en la red. Dicho de otra forma, un usuario que se conecte a
Internet vía módem e instale un sniffer en su máquina sólo podrá capturar
los paquetes de información que salgan o lleguen a su máquina.
El entorno en el que suele ser más efectivo este tipo de programas es en
una Red de Área Local (LAN), montada con la topología tipo bus. En este
tipo de redes todas las máquinas están conectadas a un mismo cable, que
recibe el nombre de bus, y por lo tanto, todo el tráfico transmitido y
recibido por todas las máquinas que pertenecen a esa red local pasa por
ese cable compartido, lo que en la terminología de redes se conoce como el
medio común. El Hub o concentrador opera igual que un cable bus.
El otro entorno natural de los sniffers es una máquina víctima. En este
caso, es necesario tener acceso a la máquina victima para instalar el
programa y el objetivo perseguido aquí es robar información que permita el
acceso a otras máquinas, a las que habitualmente se accede desde esa
máquina víctima.
Los sniffers funcionan por una sencilla razón: muchos de los protocolos de
acceso remoto a las máquinas se transmiten las claves de acceso como texto
plano, y por lo tanto, capturando la información que se transmite por la
red se puede obtener este tipo de información y el acceso ilegítimo a una
determinada máquina.
REDES DE AREA LOCAL
Como acabamos de comentar, uno de los entornos naturales para un sniffer
es una LAN con topología de bus. Las redes más comunes de este tipo son
las conocidas como buses Ethernet. Estas redes están formadas por una
serie de computadoras, cada una de ellas equipada con una tarjeta de red
Ethernet y conectadas a través de un Hub o concentrador.
Cada vez que una máquina de la LAN desea transmitir un dato lo hace a
través del hub que están conectadas todas las máquinas, por lo que todas
tienen la posibilidad de ver los datos que se están transmitiendo, aunque
en condiciones normales esto no sucede.
Las tarjetas de red Ethernet están construidadas de tal forma que, en su
modo normal de operación, sólo capturan los paquetes de datos que van
dirigidos hacia ellas, ignorando la información cuyo destino es otra
máquina. Lo que esto significa es que, en condiciones normales, el tráfico
que circula por el hub no puede ser capturado y es necesario activar un
modo especial de funcionamiento de la tarjeta conocido como modo
promiscuo.
En este modo, la tarjeta de red captura todos los paquetes que pasan por
el hub en el que está conectada y éste es el modo de operación que un
sniffer necesita para llevar a cabo su finalidad.
MODO PROMISCUO
Como adelantábamos en la sección anterior, cuando la tarjeta o adaptador
de red se configura en modo promiscuo, captura todos los paquetes que
pasan por delante de él.
La forma más inmediata de saber si un determinado adaptador de red está en
un modo promiscuo es utilizar el programa ifconfig. Este programa permite
configurar los adaptadores de red instalado en una determinada máquina y
obtener información de esa configuración.
Cuando un adaptador de red se encuentra en modo promiscuo, ifconfig nos
informa de ello. Un intruso que rompa un sistema e instale un sniffer en
él sustituirá este programa por una versión modificada, de tal forma que
no muestre el estado en modo promiscuo de la interfaz de red.
Como veíamos en ese mismo artículo, para evitar esto podemos utilizar
versiones del programa limpias, por ejemplo, algunas que hayamos grabado
en un disco justo después de instalar el sistema, o utilizar herramientas
propias para identificar este tipo de situaciones.
Los lectores interesados pueden estudiar el código fuente del paquete
ifconfig para ver cuál es la forma de obtener esta información. Es
necesario utilizar llamadas al sistema de bajo nivel y por esa razón no
vamos a incluir en este artículo un programa que lo haga. Existen en
Internet varios programas, además de ifconfig, que permiten detectar
sniffers que utilizan el modo promiscuo.
Como último comentario sobre el modo de funcionamiento promiscuo, podemos
decir que en los kernel más modernos esta información puede ser obtenida a
partir del sistema de ficheros /proc, lugar del que podemos obtener una
enorme cantidad de información interesante sobre el sistema de red.
CAPTURA DE PAQUETES
En general, los sniffers capturan paquetes de la red. En una LAN con
topología de bus, es posible capturar tráfico de todas las máquinas
conectadas en ese bus pero, en el caso general y, como comentábamos más
arriba, este tipo de programas pueden ser utilizados en cualquier entorno,
probablemente con una repercusión menor pero constituyendo una brecha de
seguridad igualmente importante.
En muchos casos, una vez que el intruso ha conseguido el control de la
máquina víctima puede optar por la instalación de un sniffer en la misma.
En este caso, el sniffer permitirá al atacante robar claves de acceso a
otras máquinas. Cada vez que un usuario de la máquina víctima intente una
conexión, el sniffer capturará los paquetes enviados en los que se
encuentra la clave de acceso en texto plano.
En ocasiones se dota al sniffer de la capacidad de transmitir estos datos
vía correo electrónico o permitir al atacante conectarse a un puerto
concreto en la máquina víctima para recuperar los datos que el sniffer ha
capturado.
Este tipo de instalación se apoyará con técnicas de ocultación de procesos
y de conexiones de red (para el caso en el que se permita recuperar los
datos del sniffer de esta forma).
Como el lector ya habrá deducido, la forma de funcionamiento de este tipo
de programas suele basarse en almacenar en un fichero toda la información
que ha robado, de forma que el intruso puede recuperarla en el futuro.
Para evitar que estos ficheros sean demasiado voluminosos, muchos sniffers
sólo capturan los primeros paquetes de la conexión, en los que se
encuentran las contraseñas que se pretenden robar.
Ésta es una de las razones por las que resulta conveniente no permitir el
acceso como root a través de telnet a las máquinas y obligar al usuario
que quiera utilizar los privilegios de root a utilizar el comando "su" una
vez que está dentro. El sniffer sólo captura los primeros paquetes, con lo
que obtiene el password de un usuario normal sin privilegios. Cuando este
usuario ejecuta el comando "su" para convertirse en root, el sniffer ya no
está capturando esa información y la clave de root permanece segura.
UNA POTENTE HERRAMIENTA
Independientemente de los usos ilegítimos de los sniffers, este tipo de
programas son una potentísima herramienta para el hacker.
Cuando hablamos de los ataque DoS , vemos cómo muchos de estos ataques se
basaban en modificar las cabeceras de los protocolos TCP/IP con fines
destructivos. Y para construir este tipo de paquetes era necesario
utilizar lo que llamamos sockets raw.
Bien, los sniffers suelen trabajar en este mismo nivel, de tal forma que
no sólo capturan la información asociada a los protocolos de aplicación
como FTP o TELNET, sino que capturan paquetes raw y, por lo tanto, toda la
información contenida en las cabeceras TCP/IP.
Muchas de estas herramientas disponen de la capacidad de interpretar estas
cabeceras, e incluso las cabeceras asociadas a protocolos que se en
encuentra por debajo de IP, y mostrarlas de forma más sencilla de
interpretar para los seres humanos. Cuando los sniffers se utilizan de
esta forma son llamados Analizadores de protocolo. Si bien, esta
palabra designa a un gran conjunto de herramientas (algunas incluso
hardware). Utilizados de esta forma, resultan una herramienta
extremadamente potente para comprender en profundidad el funcionamiento de
los protocolos de comunicaciones y , en cierto modo, visualizar, localizar
y obtener una solución para ataques remotos.
ALGUNOS SNIFFERS
Una vez más, nuestro sistema GNU/Linux dispone de un enorme número de este
tipo de herramientas. La mayoría de ellas incluidas en la práctica
totalidad de las distribuciones. Quizá el sniffer más conocido y
probablemente uno de los primeros disponibles para los sistemas UNIX en
general es tcpdump.
Este programa, una vez lanzado, captura todos los paquetes que llegan a
nuestra máquina y muestra por pantalla información relativa a los mismos.
Se trata de una herramienta de línea de comandos con una gran cantidad de
opciones que permiten mostrar los datos de muy diversas formas. Tcpdump es
una herramienta muy potente y es recomendable saber cómo usarla, aunque
como veremos a continucación existen otros sniffers más fáciles de
utilizar.
Sniffit también funciona en modo consola, pero ofrece un modo de ejecución
interactivo en el que se muestran las conexiones accesibles desde la
máquina en la que se encuentra instalado y permite seleccionar cualquiera
de ellas para la captura de paquetes, a través de una interfaz muy
sencilla. Este sniffer es referenciado en varios documentos de seguridad.
ETHEREAL
Vamos a comentar un poco más en profundidad este sniffer o analizador de
protocolo, ya que es uno de los que ofrece una interfaz más sencilla de
utilizar y permite visualizar los contenidos de las cabeceras de los
protocolos involucrados en una comunicación de una forma muy cómoda.
Ethereal funciona en modo gráfico y está programado con la librería de
controles GTK. La ventana principal de la aplicación se divide en tres
partes.
En la primera parte se muestra la información más relevante de los
paquetes capturados, como, por ejemplo, las direcciones IP y puertos
involucrado en la comunicación. Seleccionando un paquete en esta sección
podemos obtener información detallada sobre él en las otras dos secciones
de la pantalla que comentaremos a continuación.
En la parte central de la ventana se muestra, utilizando controles tree,
cada uno de los campos de cada una de las cabeceras de los protocolos que
ha utilizado el paquete para moverse de una máquina a la otra. Así, si
hemos capturado una serie de paquetes de, por ejemplo, una conexión telnet,
podremos ver las cabeceras del protocolo TCP, del IP y de los que tengamos
debajo de ellos (Ethernet Frame, por ejemplo, en una red Ethernet).
La tercera parte de la ventana muestra un volcado hexadecimal del
contenido del paquete. Seleccionando cualquier campo en la parte central
de la ventana se mostrarán en negrita los datos correspondientes del
volcado hexadecimal, los datos reales que están viajando por la red.
Otra de las opciones interesantes que ofrece este programa es la de
seguimiento de flujos TCP (Follow TCP Stream). Esta opción permite, una
vez seleccionado un paquete de entre los capturados, recuperar sólo los
paquetes asociados a la misma conexión que el seleccionado. Esta opción es
muy útil, ya que el sniffer captura todos los paquetes y si en un momento
dado existen varias conexiones distintas los paquetes de todas ellas
aparecerían entremezclados.
MEDIDAS A TOMAR
Lo primero que debemos recordar es que, tanto para activar el adaptador de
red en modo promiscuo, como para crear sockets raw, el intruso debe ser
root.
Todo lo visto en los artículos anteriores es aplicable, pero vamos a hacer
algunos comentarios específicos para el caso de los sniffers.
En primer lugar, ya hemos visto que una topología en estrella con
concentradores inteligentes es una configuración más apropiada para evitar
la instalación de sniffers. Otra medida frente a los sniffers en modo
promiscuo es instalar adaptadores de red que no permitan ser configurados
en este modo, ya que existen este tipo de dispositivos. Esta opción no es
buena opción para los estudiosos de las redes, ya que imposibilita la
utilización de este tipo de herramientas que, cómo veíamos, son de un
valor didáctico muy importante.
Como vimos, el comando ifconfig nos permite saber si algún adaptador de
red de nuestra máquina está configurado en este modo. Este comando puede
estar modificado, por lo que debemos utilizar una versión limpia del
comando y a poder ser del sistema.
Si el sniffer no se ha ocultado convenientemente, las herramientas de
monitorización mostrarán el proceso que se está ejecutando, el fichero
donde se están grabando los datos y la conexión de red.
Una medida bastante drástica consiste en recompilar el kernel de forma que
no ofrezca soporte para poner los adaptadores de red en modo promiscuo. Es
una solución drástica, al igual que la adquisición de una tarjeta de red
que no soporte este modo, ya que como veiamos en una sección anterior el
uso de estos programas puede ser realmente útil, tanto para comprender el
funcionamiento de las redes de ordenadores como para analizar distintos
ataques que se pueden llevar a cabo contra nuestra máquina.
Por otra parte, esta limitación del kernel nada puede hacer frente a un
programa capturador de paquetes como los comentados más arriba.
MAS MEDIDAS. CRIPTOGRAFIA.
El otro grupo de medidas que se puede tomar contra los sniffers es la
utilización de técnicas criptográficas. En este caso, la idea es que
aunque no se pueda evitar la captura de paquetes por parte del sniffer, al
menos la información capturada por éstos sea virtualmente inútil, al estar
codificada mediante algún tipo de algoritmo criptográfico.
Una de las técnicas habitualmente utilizadas es la conocida como one-time
passwords o contraseñas de una sola vez. Lo que buscan estas técnicas es
evitar el uso continuo de las mismas contraseñas por parte de los usuarios
de tal forma que, aunque ésta sea capturada por un intruso, cuando intente
utilizarla nuevamente será totalmente inútil.
Otros sistemas basan su funcionamiento en no enviar información importante
a través de la red (como son los passwords), sino que solamente se
transmiten información que por sí misma no tiene ningún valor a no ser que
se convine con otra (por ejemplo, autentificación de ambos extremos a
través de criptografía de clave pública, credenciales, sellos temporales,
etc). La información importante es utilizada por los dos extremos de la
comunicación (cliente y servidor), pero nunca viaja a través de la red.
Quizá el ejemplo más clásico de la utilización de técnicas criptográficas
sea el paquete SSH. Este paquete de software permite las conexiones
remotas y otras funciones (transferencia de archivos, por ejemplo), al
igual que lo hace telnet pero codificando la información que se transmite
por la red y ofreciendo un método de autentificación de los extremos de la
comunicación. El hecho de que la información viaje codificada a través de
la red hace que los datos capturados por un posible sniffer no puedan ser
utilizados por un atacante.
Existen otras soluciones criptográficas, como por ejemplo, Kerberos, pero
son más complejas y costosas.
Ya hemos visto que el programa ifconfig es uno de los que podemos utilizar
para detectar tarjetas o adaptadores de red en modo promiscuo.
Un programa de similares funcionalidades muy referenciado es CPM (Check
Promiscuous Mode, en castellano: Comprueba Modo Promiscuo). Su utilización
es muy sencilla, simplemente hay que ejecutarlo.
Otra herramienta de gran interés para la detección de sniffers, aunque
realmente se trata de una aplicación tremendamente útil para la detección
de intrusos en general, es lsoft (LiSt Open Files o Lista de ficheros
abiertos). Este programa muestra una lista de todos los ficheros abiertos
en el sistema proporcionando mucha información adicional sobre ellos
(proceso que los ha abierto, nombre de los ficheros, tipo, etc.).
Recordemos que en los sistemas UNIX virtualmente todo es un fichero, lo
que significa que este programa mostrará, además de los ficheros abiertos
propiamente dichos, dispositivos de entrada/salida, sockets, etc.
Espero que
te sea útil toda esta información preparada exclusivamente para tí, si
tuvieras alguna consulta al respecto puedes hacerlo al siguiente e-mail
mailto:boletin@aprendaredes.com
Saludos;
Sergio
Untiveros
Editor |