|
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.
ICMP Attack
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á
"conecttion 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 "conecttion 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 incluido 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
un 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
instantáneamente 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 Of 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 clono 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 op".
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 windows95.
* Paso 1: "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.
a) Cargar el Regedit
b) Ir a hkey_local_machine->system->currentcontrolset->
services->vxd->mstcp
c) A=F1adir una variable
tipo cadena (String) de nombre "BSDUrgent"
d) 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).
* Paso 2: "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.
a) Entrar en la carpeta
\windows\system
b) Buscar un fichero
llamado "vnbt.386"
c) Renombrarlo (por
ejemplo "vnbt.bak")
d) 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.