Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

Nukes

Última Actualización: 7 de Julio de 1.998 - Martes

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 conozco. Si dispones de información adicional, nuevas técnicas o quieres matizar algo, escríbeme. Puedes consultar también un documento alternativo, escrito por otra persona, llamado Tácticas de Guerra en el IRC.

Si tienes Windows 95/NT, tienes una página en castellano con los parches: Anti Winnuke Software en español. Tienes lo mismo, pero en inglés, en Nuke Patches for Win95/NT. La descripción técnica de algunos de los ataques se puede ver en Denial of Service or "Nuke" Attacks, que es una página oficial de la red IRCNet.

Aunque teniendo parcheado el servidor se paran el 95% de los ataques, algunos usuarios pueden encontrar interesantes algunos cortafuegos "personales" y sistemas de aviso.

ICMP Attack

Las viejas glorias nunca mueren

El ICMP es el protocolo encargado de, entre otras cosas, informar de errores y problemas en la red. Se puede encontrar más información en mi Proyecto Fin de Carrera y, por supuesto, en el RFC 792. 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 sólo los ICMP (y sólo los ICMP problemáticos) dirigidos al servidor IRC.

PING Attack

La ley del más fuerte

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.

Nota:

Existe una variedad de este ataque que resulta realmente impresionante, llamada "SMURFING". Consiste en enviar un ICMP echo request a la dirección de broadcast de toda una subred, poniendo de remitente el sistema que queremos atacar. Las consecuencias son desastrosas. Más información, en inglés, sobre el ataque y como protegerse.

Prevención

  • Los routers no deben enviar al exterior datagramas cuyo remitente no pertenezca a su red.
  • Los routers intermedios deberían descartar cualquier datagrama dirigido a una dirección de broadcast.
  • Los routers de area local no deben aceptar paquetes a la dirección de broadcast de su red local.
  • Un ICMP Echo Request dirigido a la dirección de broadcast debería ser descartado por todos los receptores.
  • Para más información, mira la URL de arriba.

Winnuke OOB

La muerte acecha

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.

Hace varios meses publiqué alguna información sobre estos temas, un poco anticuada ya, pero que puede resultar útil para la gente con Windows 95.

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 (no lo he probado) que en Windows 3.1x se puede corregir el problema de forma similar a Win95 (renombrando el DLL).

Otra posibilidad, que no he comprobado personalmente, es emplear otra implementación TCP/IP diferente de la de Microsoft (por ejemplo, Trumpet??). Una empresa puede protegerse filtrando el puerto 139 en su cortafuegos.

Recientemente, Microsoft ha publicado los parches oficiales. No parecen proteger el ordenador contra las variantes OOB.

Windows 95
Windows NT

Recientemente (Mayo 98) Microsoft ha sacado una actualización WinSock para Windows 95: WinSock 2.2. Si tienes la versión 2.0, actualízate, ya que tiene importantes bugs.

También encontrarás información sobre el tema en uno de mis artículos: Compartición de Discos mediante NetBIOS.

Winnuke PING

Windows se ha colgado... Qué raro...

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

Microsoft ha publicado una serie de parches para Windows 95 y Windows NT. Curiosamente no se responsabilizan de ellos y recomiendan que no se utilicen a menos que sea estrictamente necesario...

Recientemente (Mayo 98) Microsoft ha sacado una actualización WinSock para Windows 95: WinSock 2.2. Si tienes la versión 2.0, actualízate, ya que tiene importantes bugs.

IP Fragment Overlap (Teardrop - 18/Nov/97)

Y Microsoft lo ha hecho de nuevo...

...Aunque esta vez no son los únicos. Efectivamente, este bug afecta también a los LINUX y otros. En una red con MTU (Maximum Transfer Unit) reducida, el protocolo IP se encarga de fragmentar el datagrama original en trozos más pequeños, que serán unidos de nuevo en la máquina destino.

El problema surge cuando los fragmentos que llegan tienen una estructura ilegal (algo que puede ocurrir cuando los fragmentos se construyen a propósito para hacer daño). En estos casos el resultado supone, normalmente, el cuelgue de la máquina.

Detección

La máquina se queda colgada instantaneamente, o se reinicia.

Prevención

Si tienes LINUX, actualiza a 2.0.32 o bien a 2.1.63 o superiores.

Si tienes Windows NT, actualiza a SP3 e instala el hotfix "simply-TCP".

Sigue este enlace si tienes Windows 95. Para que este parche funcione correctamente debes tener instalada la versión 2 de las librerías Winsock. De todas formas parece que a algunas personas les funciona el parche, y a otras no. Cuestión de instalar y probar :-). Microsoft recomienda también instalar el parche para OOB descrito más arriba en este mismo documento.

Recientemente (Mayo 98) Microsoft ha sacado una actualización WinSock para Windows 95: WinSock 2.2. Si tienes la versión 2.0, actualízate, ya que tiene importantes bugs.

Si tienes un sistema raro... reza... Solaris, BSD, etc., no son vulnerables.

Land/LaTierra (05/Dic/97)

Y la oscuridad se hizo

Si el bug anterior afectaba a Windows, Linux y algunos otros, este bug amenaza con paralizar todo Internet, dado su amplio espectro: Windows, Linux, Cisco, BSD, muchos Unix. Una pesadilla, vaya. El problema consiste en enviar a una máquina vulnerable un datagrama de conexión TCP indicando que el remitente es exactamente la misma IP y puerto al que se la enviamos. Ello provoca, en muchos casos, que el servidor se bloquee mandándose paquetes a sí mismo. El exploit inicial era "land", que mandaba un único paquete. Ha aparecido una secuela, "LaTierra" que permite, adicionalmente, barrido de puertos y Syn Flood.

Detección

Algunas máquinas se ponen a 100% de CPU, ya sea por tiempo indefinido o durante unos minutos. Otros sistemas operativos simplemente se caen. En algunas versiones de TCP Transport de Apple Macintosh, sólo se muere esa aplicación, perdiendo la conectividad IP.

Si se ataca un router vulnerable, éste se cuelga. Ello deja sin conectividad internet a toda la red local. En caso de routers en el backbone las consecuencias pueden ser dramáticas.

Prevención

Dado que el problema es debido a la recepción de un paquete externo con la misma IP que la máquina atacada, la solución más simple consiste en utilizar reglas anti IP Spoof (por ejemplo, ver las medidas anti "smurf" listadas en una sección anterior):

  • Ningún router/cortafuegos debería permitir salir datagramas cuyo remitente no pertenezca a su red.
  • Ningún router/cortafuegos debería permitir entrar datagramas cuyo remitente pertenezca a la red.
  • Ninguna máquina debería aceptar datagramas externos cuyo remitente sea sí misma.

El poner filtros de entrada en routers con carga elevada puede desencadenar un problema grave de rendimiento. En ese caso es imprescindible actualizar el sistema. CISCO ya ha publicado los parches para sus sistemas.

Puedes encontrar más información sobre el problema en:

Cisco Field Notice: TCP Loopback Denial-of-Service Attack and Cisco Devices
Network Ingress Filtering: Defeating Denial of Service Address Spoofing

Las máquinas clientes pueden protegerse si no dejan abierto ningún puerto TCP. Ello incluye cerrar NetBIOS sobre TCP, por ejemplo, algo recomendable de todas formas según se describe en mi artículo Compartición de Discos mediante NetBIOS. En el caso de clientes IRC es necesario desconectar el servidor IDENT (puerto 113). Bajo windows pueden comprobarse los puertos abiertos ejecutando "netstat -a".

Windows95 se muere y NT también cae salvo que se haya instalado el hotfix ICMP-FIX posterior al SP3. Según la configuración local, Windows NT se cuelga o la carga de CPU pasa a 100% durante unos minutos.

Windows NT Slows Down Due to Land Attack. Incluye parche.

Windows 95 Stops Responding Because of Land Attack. Incluye parche para WinSock < 2.0. Si tienes 2.0, todavía tendrás que cruzar los dedos unos días más (9/Dic/97).

Recientemente (Mayo 98) Microsoft ha sacado una actualización WinSock para Windows 95: WinSock 2.2. Si tienes la versión 2.0, actualízate, ya que tiene importantes bugs.

Bonk/Boink/NewTear (30/Ene/98)

Windows, Windows, Windows... Goteo de Bugs Constante :-(

Bonk es una modificación del TearDrop (listado más arriba). Esta versión cuelga máquinas parcheadas contra TearDrop. Boink es una modificación al Bonk, atacando todo un rango de puertos. NewTear utiliza fragmentos muy cortos y longitudes falsas.

La mayoría de los Sistemas Operativos parcheados contra el TearDrop original son insensibles a estos nuevos ataques. Windows es, nuevamente, la excepción.

Detección

La máquina se bloquea.

Prevención

Si tienes NT, lee un artículo de Microsoft al respecto: STOP 0x0000000A or 0x00000019 Due to Modified Teardrop Attack. Incluye Parches.

Si tienes Windows 95, de momento (30/Ene/98) tendrás que esperar.

Recientemente (Mayo 98) Microsoft ha sacado una actualización WinSock para Windows 95: WinSock 2.2. Si tienes la versión 2.0, actualízate, ya que tiene importantes bugs.

Dado que tanto estos ataques como el TearDrop original se basan en el envío de datagramas fragmentados, se pueden evitar los ataques utilizando un router intermedio (o una máquina Linux, BSD, etc) con la opción de reensamblaje de paquetes activa. De esta forma en ensamblado de los paquetes externos los hará esa máquina/router (suponiendo que esté bien parcheada), y no los sistemas internos, vulnerables.

Otra posibilidad, que parece refrendada por la experiencia, es simplemente no tener ningún puerto abierto en la máquina. Una máquina sin puertos abiertos no es vulnerable. En Windows 95, sin nada raro instalado, los únicos puertos abiertos suelen ser los NetBios y el IDENTd si usamos el IRC. Los puertos NetBios pueden eliminarse usando la información listada en la sección "Winnuke OOB". El puerto IDENT se puede quitar simplemente deshabilitando el servicio IDENT en nuestro cliente IRC.

Nestea/Nestea2 (07/May/98)

Y sigue, y sigue, y sigue...

Las máquinas Linux con kernel inferior a 2.0.34 (o 2.0.33 con parches) son susceptibles de ataque mediante una variante de fragmentación (¡otra vez!). "Nestea2" es como "nestea", pero con más opciones.

Detección

La máquina se bloquea.

Prevención

Si tienes Linux, actualiza tu kernel a una versión superior a la 2.0.33, o usa la 2.0.33 con el parche apropiado. Los puedes encontrar en ftp://ftp.uk.linux.org/pub/linux/alan/2.0.34pre/.

La máquinas Windows no parecen ser vulnerables si están parcheadas contra los ataques anteriores.

Ping Of Death

Las antiguallas atacan

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

¡Toma Clono!

É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

La ingeniería social nunca falla

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. Esos son los peores };-).



Python Zope ©1997-98 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS