las maquinas zombies en los ataques ddos. · espera de las maquiavélicas órdenes de un criminal;...

39
LAS MAQUINAS ZOMBIES EN LOS ATAQUES DDoS. por FERRADAL, Gustavo Andrés F-1675/6 IGLESIAS, Natalia Celeste I-0306/9 MICHELINO, Juan Pablo M-3623/4 Monografía propuesta para la asignatura Sistemas Distribuidos. Carrera Ing. Electrónica. FCEIA. U.N.R 2006

Upload: duongnga

Post on 24-Sep-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

LAS MAQUINAS ZOMBIES EN LOS ATAQUES DDoS.

por

FERRADAL, Gustavo Andrés F-1675/6

IGLESIAS, Natalia Celeste I-0306/9

MICHELINO, Juan Pablo M-3623/4

Monografía propuesta para la asignatura Sistemas Distribuidos.

Carrera Ing. Electrónica. FCEIA.

U.N.R

2006

Universidad Nacional de Rosario

Resumen

MAQUINAS ZOMBIES EN LOS

ATAQUES DDOS

Por

Gustavo Ferradal, Natalia Iglesias y Juan Pablo Michelino

Asignatura Optativa: Sistemas DistribuidosDepartamento de Sistemas e Informática

Imagine un ejército compuesto por cientos de miles de robots a la

espera de las maquiavélicas órdenes de un criminal; peor aun,

imagine que estos robots luzcan absolutamente inofensivos o que

ni siquiera sepan que forman parte del ejército malhechor, hasta

que el “líder invisible” dé la orden, activando una programación

latente que los obligue a llevar a cabo órdenes de destrucción

contra objetivos públicos. Esto, que pareciera el argumento de

una película hollywoodense, es una realidad que ya se encuentra

entre nosotros.

Extraído de: “Una invasión de robots amenaza la red”. pc-news.com

i

TABLA DE CONTENIDO

Estrategia de ataque de DDoS............................................................ 9Clasificación según la vulnerabilidad explotada.............................. 12Calificación según la taza dinámica de ataque.................................13

Capitulo 4.....................................................................................15Conclusión....................................................................................30

I n t r o d u c c i ó n

Como dice un famoso refrán: "la unión hace la fuerza". Esta frase tan sabia nos

explica de la importancia que tiene el trabajar unidos. Si muchas personas se

unen con un fin benéfico, probablemente concretarán sus deseos.

Una situación opuesta es la que se ve en una Botnet: El trabajo conjunto de

muchas máquinas se utiliza para un fin dañino y, agravando la situación, las

mismas máquinas que participan de éste ataque también son víctimas de algún

atacante. A estas víctimas que son usadas, es a las que llamamos "máquinas

zombis".

En la presente monografía intentamos explicar como organizar un conjunto de

máquinas zombis para llevar a cabo un ataque. Explicaremos como un atacante

puede armar una red de máquinas esclavas, como es la comunicación entre

ellas y como se mantiene escondida toda la Botnet.

Si bien, una Botnet puede usarse para diversos fines maléficos, centramos

nuestra atención en un ataque de Denegación de Servicio Distribuido (DDoS por

sus siglas en inglés)

C a p i t u l o 1

¿QUÉ ES UNA MAQUINA ZOMBIE?

Las maquinas zombies son computadoras infectadas por algún tipo de malware,

al servicio de terceras personas para ejecutar actividades hostiles con total

desconocimiento del propietario o administrador del equipo. El nombre procede

de los zombies o muertos vivos esclavizados, figuras legendarias surgidas de los

cultos vudú.

Grupos organizados pueden controlar redes de miles de decenas de

computadoras infectadas, zombie, que pueden utilizarse para:

• Generar envío de SPAM, a través de una sofisticada estructura de envío

de correo basura.

• Servidores de pornografía

• Gestión de servicios y recursos destinados al fraude como puede ser el

phishing

• Distribución de malware

• Generación de gran cantidad de trafico proveniente de múltiples

direcciones de Internet, dirigidos todos a una sola red o servidor. Esto

genera lo que se conoce como Distributed Denial of Service o DdoS y se

usa para chantajear, haciendo que las victimas deban pagar para

asegurarse tener activa la red.

2

Las maquinas zombies se siguen comportando mas o menos de la misma forma

que lo hacen comúnmente para no despertar ninguna sospecha a sus usuarios y

así seguir buscando victimas, infectarlas y continuar con este proceso de forma

exponencial de infección.

Los equipos que actúan como maquinas zombies se encuentran dentro de una

red de bot conocida como bonets.

3

C a p i t u l o 2

BotNet

¿Qué es una botnet?

La palabra Botnet hace referencia a la unión de dos palabras del idioma

americano: “Bot”, versión abreviada de la palabra Robot, y “Net”, que significa

red. Por lo tanto, una Botnet es una red compuesta por robots. Computadores

que han sido comprometidos por un código malicioso que ha sido instalado, y

son todos controlados, como robots, de forma remota con fines maliciosos.

Estas redes constituyen la mayor amenaza actual en Internet, debido a que

pueden atacar coordinadamente cualquier dirección IP y hacerla colapsar con

ataques distribuidos de negación de servicio (DdoS). Además, pueden servir

para difundir correo spam, e incluso pueden ser usados como centros de

distribución de malware. Una vez que son ejecutados, estos ataques pueden ser

devastadores.

Un botnet es parecidos a un troyano en el sentido que se hacen pasar por

programas válidos para que sean instalados en equipos víctimas, y pueden

permitir que el atacante tenga absoluto control sobre el equipo. No es necesario

tener un amplio conocimiento informático para poder desarrollar y controlar uno

de estos “ejércitos”: con conocimientos rudimentarios y los kits disponibles en

Internet, se puede desarrollar uno.

El objetivo inicial de los Bots, era el de preservar nombres de usuario favoritos

en los canales de chat IRC, al finalizar la sesión uno activaba el Bot, el cual

tomaría el nombre y permanecería conectado al IRC, preservando el nombre

4

favorito y evitando que cualquier otro usuario pudiera tomarlo mientras uno

permanecía desconectado.

Actualmente, los Bots son amenazas múltiples, que combinan aspectos del

spyware, spam, malware y DDoS, y son distribuidos por virus y gusanos. Miles

de computadores pueden ser rápidamente infectados, formando redes de Bots

(Botnets).

La misión de los botnet es la de gestionar las maquinas zombies creando una

infraestructura común de mando y control.

¿Cómo se crea una botnet?

Normalmente se utilizan lenguajes Orientados a Objetos para construir estas

botnet ya que resultan mucho más cómodos.

Para la plataforma Windows, es fácil que las personas se bajen programas

desde Internet sin saber exactamente qué es lo que hace el programa. Este

software contiene un bot, una vez que el programa se ejecuta, puede escanear

la red de área local, disco duro, puede intentar propagarse usando

vulnerabilidades conocidas de Windows, etc.

En entornos más serios como UNIX, GNU/Linux o BSD la forma más clásica de

ataque a servidores para construir y expandir una Botnet es por telnet o SSH

(puertos 23 y 22 respectivamente) por medio del sistema prueba-error, probando

usuarios comunes y contraseñas al azar contra todas las IPs que se pueda de

forma sistemática o bien mediante ataques a bugs muy conocidos dado que los

administradores descuidados dejan sin parchear o corregir vulnerabilidades en

sus servidores causando un gran perjuicio para ellos (consumo de ancho de

banda, tiempo de CPU, pérdida de prestigio, repercusiones legales...) y para el

resto de Internet (spam, dDOS...).

Las compañías deben estar alertas, ya que sus activos se ven amenazados en

dos frentes: 1) los atacantes intentan tomar control de los computadores de la

red para utilizarlos como parte de ataques coordinados; o 2) los activos de la

5

organización pueden ser el objetivo de un ataque coordinado de DDoS.

En la mayoría de los casos, los Bots implantados se aprovechan de

vulnerabilidades en los sistemas operativos para distribuirse. Incluso se han

detectado casos donde el Bot aprovecha una vulnerabilidad en el sistema, se

instala, y después aplica las actualizaciones necesarias para corregir dicha

vulnerabilidad, para que el computador parezca que no es vulnerable al Bot. Una

vez infectado, lo primero que debe hacer un computador es reportarse con el

hacker creador.

Debido a que los Bots utilizan IRC para comunicarse, dado que de esta forma

pueden expandirse mas rápidamente y pasar desapercibidos puesto que el

atacante actúa como un usuario mas del canal. Generalmente se establece un

enlace de comunicaciones TCP por el puerto 6667, el puerto IRC por defecto.

Esta comunicación es necesaria ya que por esta vía el hacker ejecutará las

instrucciones necesarias para llevar a cabo su ataque.

Cuando se ha establecido la comunicación con el hacker, el computador

permanecerá inactivo hasta que el hacker ejecute las instrucciones necesarias.

El resultado de estas instrucciones variará enormemente dependiendo del tipo

de ataque que el hacker tenga en mente: pudiera ser un DDoS, haciendo

peticiones legítimas contra un objetivo determinado, y eventualmente

colapsándolo.

Como se ha mencionado, las Botnets pudieran ser utilizados como medio de

distribución de malware, y se dice que son ideales para esta función, ya que

permiten que un malware, tal como un virus, pueda ser distribuido

simultáneamente por miles de equipos, dándole una ventana de acción muy

corta a las compañías antivirus para liberar actualizaciones.

Finalmente, podría ser utilizado para distribuir correos SPAM y de phishing. Esto

hace casi imposible la detección del atacante original, ya que el mismo no forma

parte de la Botnet. Actualmente, más del 70% de todo el correo SPAM es

originado por Botnets.

6

Existen paginas en Internet donde se pueden encontrar foros y tutoriales con

información de cómo montar una bonet en forma practica. Para mayor

información consultar la bibliografía.

7

C a p i t u l o 3

Taxonomía de mecanismos de ataques DdoS

Información General de un ataque DDoS.

Para denegar el servicio, el atacante envía un stream de paquetes que logra

consumir recursos claves de la víctima, así logra que para ésta sea muy difícil

legitimar a los clientes, o provee al atacante de acceso ilimitado a la máquina

víctima y así poder infligir daños arbitrariamente.

Arquitectura de Internet.

Internet fué diseñado teniendo en mente una red funcional y no una red

segura.

Su diseño sigue un paradigma extremo a extremo: Los host extremos que se

están comunicando despliegan complejas funciones para acceder a ciertos

servicios, mientras que la red subyacente intenta hacer el mejor esfuerzo para

lograr una comunicación entre los extremos.

Internet es administrado de una forma distribuida y es por ello que no es

posible establecer una política de seguridad pareja entre sus miembros.

Existen varios puntos que abren la posibilidad de un ataque de DDoS:

a) La seguridad en Internet es altamente interdependiente: Sin importar que

tan seguro sea el sistema de la víctima, el éxito de un ataque depende del

estado de seguridad del resto de Internet.

8

b) Los recursos en Internet son limitados: Cada host de la red tiene un

número limitado de recursos que pueden ser consumidos por un número lo

suficientemente grande de usuarios.

c) El poder de muchos es mayor que el poder de pocos: Una acción

coordinada y simultánea de muchos participantes hacia una víctima puede

ser demoledor.

d) Inteligencia y recursos no van de la mano: El paradigma de comunicación

extremo a extremo hace que todo el esfuerzo intelectual sea colocado en

los host a fin de garantizar el servicio deseado. Así mismo, la necesidad de

una gran taza lleva al diseño de una red con un gran ancho de banda. Con

esto, clientes maliciosos pueden hacer mal uso de la abundancia de

recursos de una red mal diseñada para realizar un bombardeo de paquetes

hacia su víctima.

Estrategia de ataque de DDoSPara realizar un DDoS, el atacante necesita “entrenar” a un gran número de

“máquinas agentes” (slave). Éste proceso generalmente se hace en forma

automática a través de un escaneo remoto para encontrar algún “hueco” en su

seguridad. Es entonces cuando la máquina vulnerable es “explotada” usando

su talón de Aquiles para ganar acceso a ella y lograr infectarla con el código

malicioso.

La fase de explotación/infección es realizada en forma automática y ésta

máquina puede ser utilizada para entrenar futuros agentes.

Es el agente el que realiza el ataque hacia la víctima. El atacante

usualmente esconde la identidad del agente por medio de un “spoofing”

(engaño) en el campo “source address” de los paquetes.

Taxonomía de un ataque DDoS.

Para poder realizar una taxonomía de un ataque de Denegación de Servicio

Distribuido, se ha tenido en cuenta:

9

a) Los medios utilizados para preparar y concretar el ataque.

b) La característica del ataque

c) Efecto que tiene en la víctima

Clasificación según el grado de autonomía:

Durante el proceso de preparación, el atacante necesita localizar agentes

probables e infectarla con el código malicioso.

Esta primera clasificación se hace según el grado de autonomía del ataque:

Ataque manuales: El atacante hace un escaneo remotamente en busca de

vulnerabilidades, quiebra la defensa de la víctima, instala el código malicioso y

luego comanda a distancia el ataque.

Ataque Semiautomático: Para un ataque semiautomático, la red DDoS

necesita una máquina maestra y una agente (esclavo, demonio, etc).

El atacante despliega código automatizado para el escaneo y

comprometimiento de las máquinas y luego instala el código malicioso. A

través de la máquina maestra, especificará el tipo de ataque, la dirección de

las víctimas y comandar remotamente a los agentes quienes bombardean con

paquetes a la víctima.

Según el tipo de comunicación entre los agentes y el maestro, el ataque

semiautomático se divide en:

a) Ataque con comunicación directa: En éste caso, el agente y el maestro

necesitan conocer sus identidades a fin de poder comunicarse. Esto se logra a

través de una dura codificación de la dirección IP del maestro, dentro del

código malicioso, que luego se instalará en la máquina agente. Cada agente

“se presenta” al maestro quien almacena su sus direcciones IP.

b) Ataque con comunicación indirecta: En éste caso, el agente se comunica

con el maestro a través de un canal IRC oculto. Es muy difícil localizar al

10

maestro, debido a que se usa un servicio legítimo para comunicar y coordinar

una botnet.

Ataque automático: En éste último caso, se automatiza la fase de ataque,

eliminando la necesidad de una comunicación entre el maestro y el agente. El

momento de inicio del ataque, el tipo de ataque, duración y dirección de las

víctimas son programados dentro del código malicioso.

Suelen dejarse “puertas traseras” abiertas dentro de la máquina comprometida

a fin de habilitar un futuro acceso y modificación del código malicioso.

Tanto el automático como el ataque semiautomático entrenan máquinas

agentes quienes ejecutan técnicas de escaneo y propagación automática.

Según la estrategia de escaneo se puede diferenciar entre:

a) Escaneo aleatorio: Durante un escaneo aleatorio, cada host comprometido

prueba una dirección IP, elegida en forma aleatoria, de un espacio de

direcciones.

b) Escaneo por “lista negra” (hitlist): Una máquina ejecutando un escaneo

sobre todas las direcciones de una lista (la “hitlist”) externamente

suministrada. Cuando ésta detecta una máquina vulnerable, envía la mitad

de la lista inicial al receptor y mantiene la otra mitad. Ésta técnica permite

una gran velocidad de propagación (debido a su propagación exponencial)

sin colisiones durante la fase de escaneo.

c) Escaneo topológico: El escaneo topológico usa la información dentro de

una máquina comprometida (direcciones de e-mail, direcciones IP, etc)

para localizar nuevos objetivos.

d) Escaneo permutado: Durante un escaneo permutado, todas las máquinas

comprometidas comparten una combinación pseudos-aleatoria de espacios

de direcciones IP comunes. Cada dirección IP es mapeada a un índice en

esta permutación. Una máquina comienza el escaneo usando el índice

11

computado desde su espacio de direcciones. Cuando encuentra una nueva

máquina ya infectada, elige un nuevo punto de inicio aleatorio. Este

escaneo tiene el efecto de permitir un escaneo semi coordinado y sensitivo

mientras mantiene los beneficios de un sondeo aleatorio.

e) Escaneo en una subred local: El escaneo dentro de una subred local

puede ser agregado a las técnicas anteriormente descriptas. Buscando

objetivos que residen dentro de la subred a la que el host comprometido

pertenece.

Según las técnicas de mecanismos de propagación del código malicioso, se

puede diferenciar entre:

a) Con una fuente central de propagación: El código maliciosos reside

dentro de un servidor central. Luego de comprometer una máquina, el

código se descarga por medio de un mecanismo de transferencia de

archivos.

b) Propagación encadenada: El código malicioso es descargado desde

una máquina que fue usada para explotar el sistema. La máquina

infectada se convierte entonces en la fuente para un nuevo paso en

la propagación del código.

c) Propagación autónoma: La propagación autónoma elimina el paso de

recuperación de archivos, inyectando directamente instrucciones de

ataque dentro del host objetivo durante la fase de explotación.

Numerosos gusanos de e-mail utilizan esta propagación.

Clasificación según la vulnerabilidad explotadaSegún la vulnerabilidad que es objetivo de nuestro ataque, se puede

diferenciar entre:

Ataque de protocolo: El ataque de protocolo explota una característica

específica o un problema no resuelto de una implementación del protocolo

instalado en el host de la víctima logrando así un consumo excesivo de sus

12

recursos. Algunos ejemplos de éste método son: ataque TCP SYN, ataque

CGI request y ataque de autenticación de servidor.

Ataque por fuerza bruta: El ataque por fuerza bruta se logra por el inicio de

un gran conjunto de transacciones aparentemente legítimas. Una upstream

network normalmente puede entregar un volumen de tráfico tan grande que la

red víctima no puede manejar, esto desgasta sus recursos.

Según la relación existente entre el contenido de los paquetes con los

servicios de las víctimas, podemos dividir los ataques por fuerza bruta en:

a) Ataques filtrables: Éste tipo de ataque usa paquetes falsos o que nos son

críticos para los servicios de la víctima. El problema puede ser filtrado con

un firewall.

b) Ataques no filtrables: Los ataques no filtrables usan paquetes que

requieren servicios legítimos de las víctimas. Filtrando entonces paquetes

que concuerdan con éste ataque, se puede denegar el servicio tanto al

atacante como a clientes legítimos.

La línea que separa un ataque de protocolo y uno por fuerza bruta es muy

fina.

Oponerse al ataque por protocolo con una modificación de la implementación,

facilita al ataque correspondiente de la categoría fuerza bruta. Por ejemplo, si

la víctima utiliza TCP SYN cookies [1] para combatir un ataque TCP SYN, ésta

todavía será vulnerable a un ataque TCP SYN que genere mas request que la

red pueda manejar. Sin embargo, el ataque por fuerza bruta necesita generar

un volumen mucho mayor de paquetes que el ataque por protocolo para poder

realizar algún daño. Así es que, modificando el protocolo implementado, la

víctima empuja los límites de vulnerabilidad un poco mas arriba.

Calificación según la taza dinámica de ataqueDependiendo de la taza dinámica de ataque, se puede dividir entre:

13

Ataque a taza continua: Una vez que se ordena a los agentes que realicen el

ataque, las máquinas agentes generan paquetes de ataque con toda su

fuerza. Este repentino diluvio hace estragos rápidamente en los servicios de

las víctimas y ponen al descubierto el ataque.

Ataque a taza variable: Un ataque a taza variable es más precavido

comprometiendo a sus víctimas, de ésta forma disminuye la posibilidad de ser

detectados y que se tomen medidas al respecto.

Según el mecanismo con el que se varía la taza de carga, se puede distinguir

entre:

a) Ataque a taza incremental: Con un ataque a taza incremental lleva a

un lento agotamiento de los recursos de la víctima.

b) Ataque a taza fluctuante: En éste caso se ajusta la taza según el

comportamiento de la víctima, ocasionalmente alivian el efecto para

eliminar la posibilidad de ser detectado.

Clasificación según el impacto

Según el impacto que el ataque tenga en la víctima, se diferencia entre:

Ataque disruptivo: El objetivo de éste tipo de ataque es denegar

completamente el servicio de da la víctima a sus clientes.

Ataque degradante: El objetivo de un ataque degradante es el de consumir

parte (presumiblemente constante) de los recursos de la víctima. Al no llegar a

una total denegación de servicio, éste tipo de ataques pueden permanecer sin

ser detectados por un período de tiempo mas prolongado. El daño infligido

sobre la víctima podría ser inmenso: perdida de clientes a un servidor de

Internet, compra de ancho de banda innecesario, etc.

14

C a p i t u l o 4

Sistemas Distribuidos de Denegación de servicios.

Ataques de denegación de servicios.

Con el paso del tiempo, y considerando la evolución que ha sufrido Internet, el

enfoque sobre posibles ataques ya no es tanto el intentar acceder a un

sistema, sino el imposibilitar su acceso. Es por ello que los hackers adoptan

una nueva estrategia de ataque: provocar la denegación de servicio o

imposibilidad de prestar el servicio del sistema atacado.

La denegación de servicio, por tanto, sólo busca el impedir que los usuarios de

un determinado sistema no puedan acceder a él, y por consiguiente a los

servicios que proporciona. En las circunstancias actuales de globalización, el

daño económico y de imagen que sufre una empresa por un ataque de este

tipo probablemente sea mucho mayor que el derivado de una simple intrusión.

El primer sistema de denegación de servicio fue el denominado mail bombing,

consistente en el envío masivo de mensajes a una máquina hasta saturar el

servicio.

Hoy en día, los mecanismos de ataque por denegación de servicio resultan

bastante más sofisticados, empleando debilidades de los protocolos TCP/IP

para generar auténticas avalanchas de paquetes sobre un sistema concreto, o

15

simples estados de inconsistencia que provocan que el proceso que atiende el

servicio quede inoperante.

El caso del smurfing, o amplificación de peticiones broadcast, ha sido

ampliamente utilizado en ataques por denegación de servicio, y como se verá,

es relativamente fácil prevenir el no ser usados en un ataque de este tipo. Este

sistema de ataque se basa en transmitir a la red una trama ICMP

correspondiente a una petición de ping. Esta trama lleva como dirección de

origen la dirección IP de la víctima, y como dirección de destino la dirección

broadcast de la red atacada. De esta forma se consigue que por cada trama

que se transmite a la red, contesten a la víctima todos aquellos sistemas

(relays) que tienen habilitado el poder contestar a paquetes destinados a la

dirección broadcast de la red.

Se define como factor de amplificación a la relación entre tramas recibidas por

la víctima por cada trama transmitida por el demonio.

La solución a este problema es relativamente simple: hay que configurar los

sistemas para que no contesten a tramas ICMP cuyo destinatario sea una

dirección de broadcast. El problema se convierte en irresoluble cuando los

usuarios no quieren o no saben cómo hacerlo.

Ataques distribuidos de denegación de servicios.

A continuación describiremos cinco sistemas básicos de ataque distribuido de

denegación de servicios:

16

TRINOO

El proyecto TRINOO también conocido como TRIN00, es una herramienta que

implementa un ataque de denegación de servicio mediante un modelo

jerárquico maestro / esclavo (master/slave).

El caso típico de un ataque sería: En una cuenta de un sistema asaltado se

deposita un repositorio de herramientas precompiladas: rastreo, ataque,

sniffers, root kits, así como demonio y maestro de Trinoo. El sistema idóneo

para un asalto dispondrá de un gran número de usuarios, y por consiguiente,

una gran potencia de proceso y amplio ancho de banda en sus

comunicaciones.

Posteriormente, desde este ordenador comprometido se procede al rastreo

(scanning) de otros ordenadores con vulnerabilidades conocidas en servicios

básicos (FTP, RPC, NFS…) para proceder a su infección.

Con los resultados obtenidos del rastreo se genera una lista de ordenadores

vulnerables dónde se ejecutarán los programas para obtener el acceso

(exploits).

Para verificar que ordenadores de la lista han podido ser captados, el

ordenador de origen suele tener un proceso demonio (daemon) que escucha el

puerto TCP 1524, dónde se enviará una señal por cada ordenador infectado.

Una red Trinoo esta formada por Atacantes, Maestros, Demonios y Víctimas, y

tendría una estructura como la reflejada en la siguiente figura.

17

El atacante controla uno o más maestros. Cada maestro controla a gran

cantidad de demonios. Los demonios son los que reciben la orden coordinada

de realizar un ataque contra una o más víctimas.

La comunicación entre los distintos niveles de realiza de la siguiente forma:

Atacante a Maestro: 27665/TCP

Maestro a Demonio: 27444/UDP

Demonio a Maestro: 31335/UDP

La comunicación entre el atacante y el maestro, así como la del maestro y el

demonio están protegidas por claves de acceso. Las claves se emplean en

forma simétrica, de manera que se almacenan cifradas tanto en el maestro

como en el demonio, procediéndose a su comparación con la clave que se

proporciona y transporta sin cifrar por la red.

El ataque de Trinoo es del tipo de inundación por tramas UDP.

En los ataques de este tipo, el atacante envía tramas UDP con dirección de

origen falsa y que consigue enlazar el servicio de generación de caracteres

(chargen) de una de las víctimas con el servicio de eco (echo) de la otra. La

primera comienza a enviar caracteres que la segunda responde. El volumen de

18

tráfico se va incrementando hasta que los dos sistemas terminan por inundar la

red.

TRIBE FLOOD NETWORK

También conocido como TFN, esta compuesto por un conjunto de programas

clientes y demonios que implementan herramientas de denegación de servicios

distribuidas, capaces de generar ataques por flujo de paquetes ICMP, SYN,

UDP y ataques estilo Smurf (falsificar respuestas de eco ICMP desde la victima

a una serie de direcciones broadcast). Así como también obtener bajo

demanda un root shell mediante un demonio que escucha el puerto TCP

especificado, lo que permite al atacante tener acceso ilimitado a la maquina

cuando lo desee.

La arquitectura de funcionamiento TFN es bastante parecida a la de TRINOO.

Una red TFN esta formada por Atacantes, Clientes, Demonios y Victimas.

El atacante controla uno o más clientes, los cuales pueden controlar varios

demonios. Los demonios son quienes reciben las instrucciones para realizar un

ataque coordinado basado en paquetes hacia una o más victimas por cliente.

19

El control remoto de una red TFN es logrado vía ejecución de comandos de

línea desde el programa cliente lo cual puede lograrse a través de alguno de

los siguientes métodos de conexión:

• remote shell bound to a TCP port

• UDP based client/server remote shells

• ICMP based client/server

• shells such as LOKI

• SSH terminal sessions

• normal "telnet" TCP terminal sessions

La comunicación desde el cliente hacia los demonios es lograda mediante el

envío de paquetes ICMP_ECHOREPLY, por lo que no existe comunicación

TCP o UDP entre ambos equipos, a diferencia de TRINOO. Uno de los puntos

fuertes de esta herramienta de ataque por denegación de servicio es que

muchas herramientas de monitorización de redes no analizan todo el abanico

de paquetes de tipo ICMP o simplemente no muestran la parte de datos de

estos paquetes, por lo que la detección del diálogo entre cliente y demonio

puede resultar compleja.

Aunque el acceso a los clientes no esta protegido por palabra clave, los

comandos que el cliente envía a los demonios van codificados en forma de

número binario en dos bytes, siendo fijo el número de secuencia del paquete:

0x0000, lo que puede hacer que parezca como el primer paquete generado por

un comando ping.

Los valores definidos por defecto son:

#define ID_ACK 123 /* for replies to the client */#define ID_SHELL 456 /* to bind a root shell, optional */#define ID_PSIZE 789 /* to change size of udp/icmp packets */#define ID_SWITCH 234 /* to switch spoofing mode */

20

#define ID_STOPIT 567 /* to stop flooding */#define ID_SENDUDP 890 /* to udp flood */#define ID_SENDSYN 345 /* to syn flood */#define ID_SYNPORT 678 /* to set port */#define ID_ICMP 901 /* to icmp flood */#define ID_SMURF 666 /* haps! haps! */

El motivo de este cambio en la comunicación viene dado en que muchos

sistemas de monitorización / protección de redes en la actualidad (Firewalls...)

filtran los paquetes TCP/UDP, y especialmente aquellos que van a puertos no

estándares o bien conocidos (como WWW que es puerto 80, SSH que es el

puerto 22...). Sin embargo, la mayoría de sistemas dejan pasar los paquetes

ICMP de ECHO y REPLY utilizados en el PING que permiten comprobar si un

ordenador está encendido o no (entre otras posibles opciones). Además, pocas

herramientas de filtrado de red muestran adecuadamente los paquetes ICMP,

lo que permite camuflarse entre el tráfico normal de la red.

Tanto los clientes como los demonios necesitan ejecutar con privilegio de root,

pues utilizan sockets del tipo SOCK_RAW. Por otra parte, el cliente necesita

disponer del fichero conteniendo la lista de direcciones IP de los demonios

(iplist), por lo que localizado el cliente se dispone de la relación de demonios.

En las últimas versiones se ha detectado tratamiento criptográfico en el fichero

iplist mediante el sistema Blowfish.

El cliente TFN admite los siguientes parámetros:

./tfn <lista_ip> <tipo> [ip] [port]<lista_ip> Contiene la lista de direcciones IP a atacar.<tipo> -1 Tipo de máscara (spoofmask type)

0 para stop/status.1 Para realizar UDP Flooding.2 Para realizar SYN Flooding.3 Para realizar ICMP Flooding.

-2 Tamaño de los paquetes a enviar.4 Realizar un “root shell” (se debe espicifar en que puerto)

21

5 Realizar un ataque SUMRF, la primera IP es la dirección de origen y las demás son usadas como direcciones de broadcast.

[ip] Dirección de origen (separadas por @ si hay mas de una)[port] Debe especificarse para SYN Flood (0 =aleatorio).

TRIBE FLOOD NETWORK 2000 / TFN2K

TFN2K es una evolución del anteriormente comentado TFN. La estructura es

similar, aunque cambia la terminología.

De esta forma, se denomina Maestro al sistema informático en el que corre el

Cliente, y Agente al sistema informático donde se ejecuta el Demonio.

Las nuevas características añadidas a TFN2K son principalmente:

• Las comunicaciones master/slave se realizan vía protocolos TCP, UDP,

ICMP o los tres a la vez de forma aleatoria.

• Los ataques utilizados son TCP SYN Flood, UDP Flood, ICMP/PING

Flood o SMURF. El demonio (daemon) puede ser programado para que

alterne entre estos cuatro tipos de ataque, lo que permite mantener un

ataque sostenido contra un ordenador concreto dificultando la detección

del ataque por los sistemas tradicionales de seguridad (Firewall).

• Las cabeceras de los paquetes de comunicación master/slave son

aleatorias, excepto en el caso del ICMP dónde siempre se utiliza

ICMP_ECHO_REPLY, de esta forma se evita que puedan ser

detectados por patrones de comportamiento.

• A diferencia de otras herramientas de DDOS, los daemons no

responden a cada comando recibido (acknowledge). En su lugar, el

cliente envía el mismo comando 20 veces esperando que al menos

llegue una de sus peticiones.

22

• Los comandos enviados ya no se basan en cadenas de caracteres

(strings), sino que son de la forma

<ID> + <DATA>

<ID> Un byte que indica (codifica) el comando a efectuar.

<DATA> Indica los parámetros del comando.

• Todos los comandos están cifrados usando CAST-256 [RFC2612]. La

clave se define en tiempo de compilación y se usa como password para

acceder al cliente. Además todos los datos cifrados se pasan a BASE64

antes de ser enviados para asegurar que todo está en caracteres ASCII

imprimibles (argucia común en prácticamente todos los ordenadores).

• Los paquetes UDP y TCP no incluyen en la pseudo-cabecera (header)

del paquete en el cálculo del checksum correctamente, lo que hace que

todos sean incorrectos.

• El daemon genera un proceso hijo para cada ataque a una dirección IP.

Además prueba de diferenciarse entre sí por los argumentos/parámetros

(arg[0]) que se pasan al ejecutarse.

Por lo que se ha visto, la detección de TFN2K resulta a priori muy compleja,

pero también tiene su “talón de Aquiles”. Puede que por un descuido, o por un

simple error, en la codificación a Base 64 siempre aparece una marca al final

de cada paquete. No se tiene claro el objetivo, pero al final de cada trama se

introduce una colección de ceros (entre 1 y 16) que al ser codificados en Base

64 quedan como 0x41 (carácter A). De esta forma, el número de 0x41 que

aparecen al final de cada paquete es variable, pero siempre aparece por lo

menos uno. La presencia de esta marca permite rastrear y localizar los

paquetes de comandos.

23

Otros errores que pueden ayudar en la detección de tramas generadas por

TFN2K son:

• La longitud de los paquetes UDP (la que aparece en la cabecera UDP)

es tres bytes mayor que la real.

• La longitud de las cabeceras TCP (la que aparece en la cabecera TCP)

es siempre cero, lo que nunca podría ocurrir.

• Los checksums de las tramas UDP y TCP no incluyen los 12 bytes de

las pseudo cabeceras y por lo tanto son incorrectos.

STACHELDRAHT

El término de origen alemán Stacheldraht podría traducirse por alambre de

espina. Combina características de Trinoo y TFN, y añade mecanismos de

cifrado en la comunicación entre el cliente y el conductor, así como

mecanismos de actualización automática de los agentes.

Como en TRINOO, la arquitectura básica de STACHELDRAHT mantiene una

jerarquía dónde existen los master (denominados ahora “handlers”,

manipuladores o controladores) y demonios/daemons o bcast (denominados

ahora “agents” o agentes).

24

Algunos analistas consideran Stacheldraht como la competencia a TFN2K,

pues presentan muchas similitudes en cuanto a comportamiento y facilidades:

denegación de servicio mediante avalancha de tramas ICMP, SYN y UDP, así

como ataques mediante técnicas de amplificación de broadcast (smurf). Sin

embargo a diferencia del TFN no contiene la posibilidad de proporcionar un

“shell de root” en las máquinas infectadas.

Al contrario que la primera versión de TFN, en donde la conexión entre el

atacante y el cliente se transmitía sin cifrar, Stacheldraht dispone de un

mecanismo similar a un Telnet (Stacheldraht Term) para la comunicación del

cliente con el conductor que incluye cifrado mediante el uso de clave simétrica.

Una vez establecida la comunicación entre el cliente y el conductor, se solicita

un password que está cifrado mediante crypt(). A partir de ese momento toda la

comunicación se realiza de forma cifrada mediante el algoritmo Blowfish.

La comunicación entre los distintos niveles de realiza de la siguiente forma:

• Cliente a Conductor: 16660/TCP

• Conductor a/desde Agente: 65000/TCP, ICMP_ECHOREPLY

A diferencia de las herramientas TRINOO (que usaba UDP para las

comunicaciones entre master/slave) o TFN (que utiliza ICMP como vehículo de

comunicación entre clients/daemons), STACHELDRAHT utiliza para sus

comunicaciones entre handlers y agentes los protocolos ICMP y TCP

indistintamente.

La mayor novedad que presenta Stacheldraht respecto a otras herramientas

anteriormente analizadas es la posibilidad de ordenar a los agentes su

actualización. Para ello se utiliza el comando rcp (514/tcp) sobre una cuenta

robada en cualquier máquina de la red. Los agentes borran la actual copia del

programa, descargan la nueva versión y arrancan ésta usando nohup. En ese

momento finaliza la ejecución de la antigua copia.

25

En el momento de arranque de un agente, éste intenta leer un fichero de

configuración en el que se le indica qué conductores le pueden controlar. Este

fichero contiene una relación de direcciones IP y está cifrado mediante

Blowfish. Para los casos en que falle la localización del mencionado fichero, el

propio agente lleva definido en el código una serie de direcciones que debe

usar por defecto.

Una vez que el agente ha arrancado y dispone de la lista de conductores,

comienza a transmitir tramas del tipo ICMP_ECHOREPLY con ID 666 y

conteniendo en el campo de datos la palabra “skillz”. Todos aquellos

conductores que reciben esta trama contestan con otra del mismo tipo, con ID

667 y en el campo de datos la palabra “ficken”. El diálogo entre conductor y

agente se mantiene de forma periódica, lo que permite detectar la presencia de

Stacheldraht mediante la monitorización pasiva de la red a través de un sniffer.

SHAFT

Es otra herramienta de denegación de servicio distribuido. Su característica

más distintiva es la capacidad de cambiar los servidores y puertos de

comunicación en tiempo de ejecución. Una de las novedades que presenta

esta herramienta es el uso de ticket para garantizar el control sobre los

agentes. Tanto el password como el ticket deben ser correctos para que un

agente acepte las peticiones que le puedan llegar. Hace especial hincapié en

las estadísticas de los paquetes.

Como las otras herramientas se basa en un paradigma jerárquico de la forma:

26

en donde a los conductores (master/handler) los llama shaftmaster y a los

agentes (slaves) shaftnode.

El atacante se conecta mediante un programa cliente a los shaftmasters desde

dónde inicia, controla y finaliza los ataques DDOS.

El atacante se conecta vía TELNET a un shaftmaster utilizando una conexión

fiable, una vez conectado se le pide un password para autorizar su acceso al

sistema. La comunicación entre los shaftmasters y shaftnodes se realiza

mediante el protocolo UDP que no es fiable, por eso SHAFT utiliza la técnica

de los “ticket” para mantener el orden de la comunicación y poder asignar a

cada paquete un orden de secuencia.

La combinación del password y el ticket son utilizadas para el envío de ordenes

a los shafnodes, que verifican que sean correctos antes de aceptarlos.

Tanto el conductor como el agente disponen de su propio conjunto de

comandos. Aunque el atacante sólo interactúa con el conductor mediante

comandos a través de una conexión Telnet.

La posibilidad de cambiar los números de los puertos dinámicamente hace que

SHAFT sea difícilmente detectable por sistemas convencionales. Por otra

parte, el programa por sí mismo intenta camuflarse como un proceso habitual,

como puede ser por ejemplo http.

27

Por otro lado en lo que se supone un fallo de implementación, tenemos que el

número de secuencia de todos los paquetes TCP es fijo siempre (0x28374839)

lo que permite su detección a nivel de red.

Los autores de Shaft han demostrado tener un interés muy especial por

disponer de estadísticas. En concreto, la tasa de generación de paquetes de

cada uno de los agentes. Es posible que esta información les permita optimizar

el número de agentes necesarios para ejecutar un ataque, o añadir más en

caso de disminuir el nivel estimado de carga para que el ataque proporcione los

resultados esperados.

MSTREAM

Es la más primitiva de todas las herramientas, la comunicación entre agentes y

maestro se realiza mediante el intercambio de paquetes UDP. Ha sido

diseñada para bloquear una red ahogando determinados sistemas mediante la

generación de gran cantidad de tramas.

La red mstream esta formada al igual que trinoo y shaft por:

cliente(s)-->conductor / master(es)-->agente/slave(s)-->victima(s)

El cliente es la máquina que el atacante emplea para lanzar el ataque. El

conductor coordina a todos los agentes. Y son éstos los que realizan el ataque

a la víctima. Cada conductor puede coordinar un número indeterminado de

agentes, y cada agente puede estar coordinado por un número indeterminado

de conductores, además de poder atacar a una o más victimas.

El tipo de ataque que realiza es Stream:

• Agente > Víctima: envía TCP ACK a puertos aleatorios y dirección de

remitente falsa (normalmente de otra red).

• Víctima: contesta TCP RST al remitente a través del router.• Router > Víctima: ICMP indicando que el destinatario no existe. • Se consigue un elevado consumo de ancho de banda. • Ataque con único origen: pocos efectos.

28

• Ataque con múltiples orígenes: saturación de la red

La comunicación entre el atacante y el conductor se realiza sin encriptar sobre

una conexión TCP, mientras que la comunicación entre conductor y agente se

realiza sobre UDP sin encriptar.

Los puertos utilizados para la comunicación son:

• Atacante a conductor(es): 6723/tcp (acceso mediante password)• Agentes a conductor(es): 9325/udp • Conductor a agente(s): 7983/udp

Cada conductor mantiene una lista de agentes activos. Codificación de Cesar.

Al igual que las otras herramientas tanto los agentes como los conductores

tienen un grupo de comandos para comunicarse.

29

C o n c l u s i ó n

La disponibilidad de recurso es lo mas preciado en los Sistemas Distribuidos. La

limitación de éstos es un problema, no solo para la víctima, sino tambien para el

victimario. Por un lado la victima se vera imposibilitada de acceder a estos o lo

hara con un desempeño menor debido al daño causado por el atacante. Por el

otro lado, el atacante, seguramente no contará con los recursos necesarios para

realizar el daño deseado, es por ello que recurre a esclavizar máquinas para

aumentar su poder.

Estas maquinas esclavas, las máquinas zombis, deben realizar un trabajo

coordinado para ser más eficientes. Es por ello que se agrupan en Botnets.

Como en todo ataque es importante que la identidad del atacante esté escondida

para de esta manera dificultar enormemente el desarme de la red.

A diferencia de otros ataques, el objetivo de un DDoS no es el de acceder a un

servidor, y de esta manera robar información, sino el de denegar un servicio o

causar daño.

Para denegar un servicio, todas arquitecturas de redes actúan similarmente:

- Bombardean a un servidor hasta que éste caiga o sus recursos

queden limitados.

- Falsifican el origen de las tramas que, por lo general, solicitan una

respuesta (jugando al frontón).

- El atacante, generalmente, controla remotamente a alguna PC que, a

su vez, coordina un ataque.

- Usan los paquetes ICMP.

- Pata coordinar un ataque se usa protocolo TCP o UDP.

30

- Algunos cifran sus comunicaciones para esconder mejor su trabajo

(ataque no filtrable - como puedo saber si me están acatando cuando no puedo

entender el contenido de los paquetes).

- El ocultamiento trata de lograrse camuflándose como un programa

cualquiera.

- Otras técnicas mas avanzadas utilizan ataques de protocolo.

A pesar de su intento por mantenerse oculta, las Botnets pueden ser

detectadas. Para ello se necesita un continuo y minucioso testeo de los paquetes

que viajan por la red. El problema se agrava si se crea una nueva arquitectura

de Botnet. En ese caso será necesario, no solo recurrir a la técnica, sino también

a la intuición para ver que "algo huele mal" y saber que es lo que "está podrido".

31

BIBLIOGRAFÍA

Definición de maquina zombie: http://es.wikipedia.org/wiki/Zombie_(ordenador)

Una invasión de robot amenaza la seguridad en la red. http://www.pc-news.com/detalle.asp?sid=&id=5&Ida=2161

Articulo sobre bonets: http://jocker.es/archives/3#more-3

Definición de Botnet: http://es.wikipedia.org/wiki/Botnet

Que son y como crear una Botnet: http://miarroba.com/foros/ver.php?foroid=953103&temaid=4909674&imprimible=si

Articulo sobre Botnets: http://www.rediris.es/cert/doc/reuniones/cord/jt2004/botnets.pdf

Sistemas Distribuidos de Denegación de Servicios: http://www.fi.upm.es/~flimon/ddos.pdf

Denegación de Servicios: DOS/DDOS: http://tau.uab.es/~gaby/DEA/2%20DOS-DDOS.pdf

The "Tribe Flood Network" distributed denial of service attack tool: http://staff.washington.edu/dittrich/misc/tfn.analysis

Tribe Flood Network: http://staff.washington.edu/dittrich/talks/cert/tfn.html

DDoS: Un campo de batalla abierto en la seguridad de Internet: http://www.rebelion.org/cibercensura/ddos240403.htm

The "stacheldraht" distributed denial of service attack tool: http://staff.washington.edu/dittrich/misc/stacheldraht.analysis

Números y tipos de puertos: http://www.wittys.com/files/all-ip-numbers.txt

An analysis of the ``Shaft'' distributed denial of service tool: http://www.ussrback.com/docs/distributed/shaft_analysis.txt

Analysing Distributed Denial Of Service Tools: The Shaft Case: http://www.usenix.org/event/lisa2000/full_papers/dietrich/dietrich_html/

The "mstream" distributed denial of service attack tool: http://staff.washington.edu/dittrich/misc/mstream.analysis.txt

32

“TCP SYN flooding and IP spoofing attacks”, http://www.cert.org/advisories/CA-1996-21.html

33