Nukers
Se llama "nuke" la caída de una
conexión TCP/IP por parte de un agente externo, normalmente un usuario con ganas de fastidiar. En realidad "nuke" es un concepto
demasiado genérico. A continuación se describirán las técnicas que se conocen.
El ICMP es el protocolo encargado de, entre
otras cosas, informar de errores y problemas en la red. En resumen, consiste en enviar al cliente o al servidor un paquete
ICMP indicando que la conexión no puede continuar debido a uno de los siguientes errores:
Network Unreachable Host Unreachable Bad
Protocol Bad Port
Es decir, el agente "enemigo" envía paquetes al cliente diciéndole que el servidor tiene alguno de los
problemas anteriores, o viceversa. En realidad las cosas son un poco más complicadas, ya que el atacante debe acertar con
los puertos que se están utilizando en esa conexión en particular. Generalmente ello es bastante sencillo, ya que el servidor
acostumbra a emplear el puerto 6667, el estándar IRC, y la víctima un puerto bajo, a partir del 1024 si usa Windows.
Detección:
Si se ataca el servidor, el
cliente no verá nada. Simplemente se desconecta con toda limpieza, ya que el servidor habrá cerrado la conexión TCP y en cuanto
reciba un nuevo datagrama del cliente lo rechazará con un RST. El cliente verá "conection reset by peer" y el resto de los
usuarios verán alguno de los errores indicados arriba.
Un sniffer en la red del servidor detectará
una prolongada ráfaga de paquetes ICMP indicando errores entre un cliente y el servidor de IRC. Cada uno de los paquetes contiene
puertos distintos, ya que se está realizando un barrido. Es posible reconocer tales ráfagas y adoptar contramedidas, tales
como tomar nota de la IP y la hora para ponerse en contacto con el proveedor del cual dependa el agresor.
Si se ataca el cliente, el servidor no ve
nada. Simplemente recibirá un "conection reset by peer" en cuanto envíe un datagrama, ya que el cliente habrá cerrado su conexión.
El cliente puede detectar el ataque observando una inusitada actividad en su módem o bien instalando software de traceo tal
como el incluído en el paquete Winsock de Trumpet.
Prevención:
La protección más obvia consiste
en utilizar puertos poco previsibles. Es decir, emplear un puerto diferente del 6667 en la conexión al servidor y un puerto
aleatorio en nuestra máquina local (esto último suele estar fuera del alcance de la mayoría de los usuarios). Un paquete ICMP
es ignorado si no contiene los puertos correctos.
Un cliente no puede protegerse salvo que instale
un cortafuegos o una versión modificada de su pila TCP/IP. Un servidor puede protegerse con un cortafuegos que filtre las
tramas ICMP. Dado que dichos paquetes son útiles en el diagnóstico de problemas en la red y resulta contraproducente filtrarlos
todos y para todas las máquinas, se puede optar por filtrar solo los ICMP (y solo los ICMP problemáticos) dirigidos al servidor
IRC.
Ping Attack
Este ataque consiste en
desbordar el módem de la víctima, de forma que no pueda responder a los pings periódicos del IRC (el famoso "ping?pong!" de
la ventana de estado). Si un cliente no responde al servidor IRC en un período determinado (uno o dos minutos) el servidor
entenderá que el cliente ha muerto y cerrará su conexión. Es el conocido "ping timeout" que hemos visto tantas veces.
Para que el ataque sea efectivo el agresor
debe disponer de un ancho de banda superior al de la víctima. De esta forma monopolizará su módem y no podrá responder a tiempo
a los datagramas del servidor IRC. Para que el ataque sea efectivo hay que mantenerlo, naturalmente, durante el tiempo suficiente
como para que venzan las temporizaciones.
En algunos casos se ha indicado que este tipo
de ataque incluso consigue colgar el teléfono de la víctima. No he podido comprobarlo personalmente pero es posible que tenga
algo que ver con timeouts en el protocolo PPP.
Detección:
El usuario atacado observa una
actividad inusual en su módem y nota que el servidor IRC tarda en responder o no responde en absoluto a sus comandos. Un software
de traceo diagnostica el problema.
Prevención:
Este tipo de ataque no se
puede prevenir, ya que aunque el cliente descarte los paquetes de ataque que le llegan, estos ocupan su ancho de banda de
recepción. Es necesario que en la ruta de los paquetes exista router con capacidad de controlar la congestión de forma inteligente.
Algo no demasiado difícil de programar pero, desde luego, poco difundido.
Winnuke OOB:
Este nuke se basa en lo
que parece un fallo de programación de la interfaz netbios de windows, incapaz de soportar OOB (datos "Out Of Band") en el
puerto TCP 139.
Detección:
En Windows95 aparece una pantalla
azul informando de un error en uno de los módulos del sistema. El ordenador parece seguir funcionando sin problemas, pero
todas las conexiones TCP/IP se bloquean.
En Windows NT aparece una pantalla azul y
el sistema operativo procede al volcado de memoria. Una vez hecho eso (algo que puede llevar varios minutos, durante los cuales
el ordenador no hace nada más), la máquina se reinicia automáticamente.
Prevención:
En Windows95 es posible detectar
el atacante realizando un netstat, ya que ese comando nos lista las conexiones activas. Bajo NT No queda ningún LOG. En cualquier
caso en NT el problema se soluciona instalando el Service Pack 3. De todas formas existe una variante de este nuke, afortunadamente
poco difundida, que sigue provocando un dump del sistema y el reinicio posterior de la máquina. Parece ser que en Windows
3.1x se puede corregir el problema de forma similar a Win95 (renombrando el DLL). Recientemente, Microsoft ha publicado los
parches oficiales. No parecen proteger el ordenador contra las variantes OOB. Ver Pantalla Azul.
Winnuke Ping:
Recientemente se ha descubierto
un problema de estabilidad en Windows 95/NT que hace que el ordenador se cuelgue instantaneamente cuando recibe fragmentos
de datagramas ICMP inválidos.
Detección:
El ordenador se queda bloqueado.
No funciona ni el puntero del ratón ni control+alt+sup.
Prevención:
Se puede encontrar información
sobre el tema, chequeos y parches en http://www.darkening.com/ssping
Ping O Death:
Este nuke bloquea los
ordenadores vulnerables enviando fragmentos ICMP Ping que, una vez reensamblados, superan los 64Kbytes legales. Se trata de
un truco bastante viejo pero que, sorprendentemente, sigue funcionando en muchas máquinas Linux no actualizadas. La forma
más obvia de protegerse es instalar un sistema operativo mínimamente reciente.
IRC Flood:
Ésta es, sin duda, la forma
más "castiza" de echar a alguien del IRC. Como todos sabemos, los servidores IRC, para proteger la red y los usuarios, limitan
la velocidad (y tamaño en bytes) de los datos enviados por un cliente. Si alguien se pasa, es desconectado automáticamente
con un "Excess Flood".
¿Cómo conseguir que alguien se desconecte
a sí mismo por flood?
La respuesta es simple: Obligándole a que envíe a la red más datos de las que ésta está dispuesta
a aceptar. Para ello existen varias técnicas, todas ellas muy simples. La más obvia, por ejemplo, es enviarle IRC PINGs. Dado
que cada ping respuesta implica un ping pregunta, y nosotros no queremos caernos, lo más sencillo consiste en lanzar un clon
en la red de forma que las dos (o más) conexiones envíen peticiones PING en el límite de la "paciencia" del servidor. La víctima
se cae porque responde a las peticiones de todos los atacantes, superando con mucho el límite permitido por la red.
Detección:
Observamos varias peticiones
de información a nuestro cliente IRC y un momento después nos caemos por "Excess flood".
Prevención:
Dado que este tipo de ataque
es muy viejo (y efectivo), muchos scripts incorporan protecciones anti flood que evitan responder cuando se detecta un número
de peticiones de información por encima de un valor dado. De hecho muchos clientes IRC incluyen esos controles como una funcionalidad
extra.
Kill Yourself:
Hay auténticos genios
que consiguen colarte casi cualquier trola sin apenas esfuerzo, aprovechándose de su ascendiente sobre la víctima por confianza,
experiencia, y demás.... Y de su inocencia, claro. Ejemplo típico "Pulsa ALT+F4" para conseguir opciones". Parece mentira
lo bien que funciona.
Detección:
Hacemos algo que nos dice algún
tertuliano y nos caemos del servidor, se nos cierra el programa, dejamos nuestro disco duro abierto para todo el mundo, etc.
Prevención:
Simple: No hacer nada cuyas
implicaciones no conozcamos enteramente. AUNQUE nos lo pida alguien de confianza.
Pantalla Azul:
Todos hemos leído y
sufrido los famosos cuelques y "pantallas azules" del Windows 95 cuando alguien nos manda un poco de basura al puerto 139
(Netbios). Bajo Windows NT la cosa aún es más cruda, ya que, aparte del reinicio del sistema, se genera un core ("memory.tmp")
tan grande como memoria tengamos (o sea, como poco, 64megas...). En este texto nos vamos a centrar en las soluciones para
windows 95.
Resistencia al ataque:
Este parche ha sido
publicado en diversas listas de correo, y se indica que puede no funcionar en todas las versiones del Windows 95.
Cargar el Regedit
Ir a hkey_local_machine
> system > currentcontrolset > services > vxd > mstcp
A=F1adir una variable tipo cadena (String) de nombre
"BSDUrgent"
Hacer doble click sobre esa variable y darle el valor "0" (cero) e) Reiniciar el equipo.
Si se quiere
quitar el parche basta con borrar la variable "BSDUrgent", o bien darle el valor "1" (uno).
Netbios sobre TCP/IP
Otra posibilidad consiste
en quitar el acceso netbios a través de TCP/IP. Este parche, además, elimina el riesgo de que un usuario remoto monte nuestros
discos e impresoras. Si se quiere seguir compartiendo recursos en la red local ha de instalarse otro nivel de transporte,
como puede ser el NetBEUI.
Entrar en la carpeta \windows\system
Buscar
un fichero llamado "vnbt.386"
Renombrarlo (por ejemplo "vnbt.bak")
Reiniciar el equipo Cualquiera de los dos parches
previene los cuelgues del módulo TCP/IP del Windows 95. Naturalmente se pueden utilizar los dos a la vez.