Máquinas Zombies (DDOS)

Anuncio
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 Distribuidos
Departamento 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............................................................ 9
Clasificación según la vulnerabilidad explotada.............................. 12
Calificación según la taza dinámica de ataque.................................13
Capitulo 4.....................................................................................15
Conclusión....................................................................................30
Introducció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)
Capitulo 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
Capitulo 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
Capitulo 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 DDoS
Para 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 explotada
Segú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 ataque
Dependiendo 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
Capitulo 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
#define ID_SMURF
666
/* to icmp flood */
/* 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
Conclusió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.pcnews.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
http://www.rediris.es/cert/doc/reuniones/cord/jt2004/botnets.pdf
 Sistemas
Distribuidos
de
http://www.fi.upm.es/~flimon/ddos.pdf
Denegación
de
 Denegación
de
Servicios:
http://tau.uab.es/~gaby/DEA/2%20DOS-DDOS.pdf

Botnets:
Servicios:
DOS/DDOS:
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
http://www.rebelion.org/cibercensura/ddos240403.htm
de
The
"stacheldraht"
distributed
denial
of
service
http://staff.washington.edu/dittrich/misc/stacheldraht.analysis
attack

Internet:
tool:
 Números y tipos de puertos: http://www.wittys.com/files/all-ip-numbers.txt
 An analysis of the ``Shaft'' distributed denial of
http://www.ussrback.com/docs/distributed/shaft_analysis.txt
service
tool:
 Analysing Distributed Denial Of Service Tools: The Shaft
http://www.usenix.org/event/lisa2000/full_papers/dietrich/dietrich_html/
Case:

The
"mstream"
distributed
denial
of
service
http://staff.washington.edu/dittrich/misc/mstream.analysis.txt
32
attack
tool:

“TCP SYN flooding and IP spoofing attacks”, http://www.cert.org/advisories/CA1996-21.html
33
Documentos relacionados
Descargar