Documentación del proyecto fin de carrera de Adríán Belmonte Martín, Bot y Botnets - Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos. Universidad de Sevilla Marzo 2007
Presentación guía sencilla en Microsoft Excel.pptx
Adrián Belmonte: Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
1. ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
Bot y Botnets: Análisis de estructura y funcionamiento de las redes de
ordenadores comprometidos
Realizado por
Adrián Belmonte Martín
Para la obtención del título de
INGENIERO TÉCNICO EN INFORMÁTICA DE SISTEMAS
Dirigido por
Sergio Pozo Hidalgo
Realizado en el departamento de
LENGUAJES Y SISTEMAS INFORMÁTICOS
Convocatoria de Marzo Curso 2006-07
2. Índice general
1. Introducción y conceptos previos……………………………………………...1
1.1 Introducción………………………………………………………………………………1
1.2 Definiciones y clasificación………………………………………………………………3
1.3 Objetivos………………………………………………………………………………….6
1.4 Justificación………………………………………………………………………………7
2. Historia……………………………………………………………………………………….13
2.1 Virus y gusanos: Los antecedentes……………………………………………………16
2.2 Bots de IRC. Antecedentes…………………………………………………………….28
3. Funcionamiento y estructura…………………………………………………30
3.1 Ciclos de un bot………………………………………………………………………….36
3.2 Algunos usos de las botnet……………………………………………………………...38
4. Fauna Bot…………………………………………………………………...…40
4.1 Los precursores. Bots IRC…………………………………………………………...…42
4.1.1 Coromputer dunno……………………………………………………………42
4.1.2 Skydance……………………………………………………………………...44
4.2 Los primeros bots C&C………………………………………………………………...45
4.2.1 Microbot…………………………………………………………………...…45
4.2.2 G-spot…………………………………………………………………...……47
4.2.3 Leechbot 2.0 VB……………………………………………………...………50
4.2.4 Data Spy Network (DSNX)……………………………………………..……50
4.2.5 Omega Project…………………………………………………………..……61
5. Las grandes Familias Bot…………………………………………………………..……66
5.1 Sdbot……………………………………………………………………………..………67
5.1.1 Versión 0.4……………………………………………………………………67
5.1.2 Versión 0.5……………………………………………………………………69
5.1.3 G-sys 3.0……………………………………………………………...………71
5.2 Spybot……………………………………………………………………………….……72
5.2.1 Versión 1.1……………………………………………………………………72
5.2.2 Versión 1.2……………………………………………………………………74
5.2.3 Versión 1.3……………………………………………………………………75
5.3 Rbot /rxbot/rx……………………………………………………………………………76
5.3.1 Los comandos……………………………………………………...…………80
5.4 Phatbot/Agobot…………………………………………………………………….……80
5.5 GT Bot (Global Threat bot) …………………………………………………....………83
3. 6. Montaje de una botnet……………………………………………………………………86
6.1 Configuración del bot…………………………………………………………...………86
6.2 Proceso de expansión……………………………………………………………………95
6.2.1 Infectando nuestro primer sistema. El bot semilla……………………………96
6.2.2 Proceso de expansion a otros sistemas…………………………...…………..97
6.3 Los “Spreaders…………………………………………………………………………102
6.3.1 NetBios spreader………………………………………………….…………102
6.3.2 SubSeven Spreader…………………………………………….……………107
6.3.3 Bagle spreader………………………………………………………………111
6.3.4 MyDoom spreader…………………………………………..………………113
6.3.5 Lsass spreader………………………………………………….……………113
6.3.6 Sasser Spreader……………………………………………….……..………115
6.3.7 Optix Spreader………………………………………………………………117
6.3.8 Dcom spreader………………………………………………………………120
6.3.9 Upnp spreader………………………………………………….……………123
6.3.10 MSSQL
spreader……………………………………………...…………………….124
6.3.11 WebDav spreader……………………………………………….…………125
6.4 Ordenando el análisis……………………………………………………..….………127
6.5 Proceso de infección en el sistema comprometido ………………………….………133
6.6 Protección del bot………………………………………………………..……………138
7. Explotación del sistema…………………………………………………………………150
7.1 KeyLogging…………………………………………………………………….………150
7.1.1 Envío de la información a un canal de IRC especificado…………...………151
7.1.2 Envío de información a un archivo local de la máquina comprometida…....153
7.2 Sniffing…………………………………………………………………………………158
7.2.1 Implementación en Rbot………………………………………….…………159
7.2.2 Implementación en Phatbot/Agobot…………………………...……………161
7.3 Ataques de Denegación de Servicio …………………………………………………165
7.4 Spam …………………………………………………………………..………………173
7.5 Funciones de proxy, pasarela y servidor………………………………….…………175
7.6 Fraude por clic…………………………………………………………………………179
7.7 Descargas y mejoras………………………………………………………...…………181
8. Técnicas de protección ……………………………………………………….…………185
8.1 Prevención de equipos…………………………………………………………………185
8.2 Detección de las comunicaciones…………………………………………..………….186
4. 8.3 Detección de características secundarias………………………………..……………187
8.4 Herramientas de detección……………………………………………………………189
8.4.1 Herramientas de análisis del sistema ……………………….………………189
8.4.2 Herramientas basadas en Honeypots…………………..……………………194
8.4.3 Herramientas de análisis de ficheros capturados. Proceso de captura de una
botnet……………………………………………………..…………………197
9. Mercado y futruro de las redes bots…………………………..……………202
9.1 Mercado de las redes bot………………………………………………………………202
9.2 Futuro de las redes bot………………………………………………………...………207
10. Conclusiones………………………………………………………………………..………210
Anexo A: Comandos de SDbot…………………………………………………………………....213
Anexo B: Comandos de Rbot……………………………………………………………………..219
Anexo C: Comandos de Phatbot/Agobot…………………………………………………………222
Anexo D: Desbordamiento de buffer…………………………………………………..…………232
Anexo E: Ataque de Denegación de Servicio……………………………………………….……236
Anexo F: Diccionario de términos…………………………………………………………..…….239
Anexo G: Bibliografia……………………………………………………………………..……….243
5. Índice de figuras
Figura 1.1 Topología centralizada
Figura 1.2: Topología p2p
Figura 1.3: Responsabilidades y técnicas de actuación de Shadowserver
Figura 1.4: Crecimiento del tamaño de las botnets informadas NOV-FEB 2007
Figura 1.5: Crecimiento del número de botnets informadas Nov-Feb 2007
Figura 2.1: Evolución de los primeros ataques a redes 1980-2000
Figura 2.2: Definición de Rootkit
Figura 2.3: Eventos relacionados con gusanos y virus
Figura 2.4: Descripción del funcionamiento del gusano blaster
Figura 2.5: Captura del código del blaster
Figura 2.6: Mensaje de infección del gusano Blaster
Figura 2.7: Funcionamiento del gusano MyDoom
Figura 2.8: Infección por el gusano Sasser
Figura 2.9: Cronología de la nueva generación de gusanos. 1-marzo 1999 /30 abril 2004
Figura 3.1: El atacante busca un primer equipo víctima
Figura 3.2: Se ordena al ordenador semilla buscar nuevos objetivos
Figura 3.3: Una vez encontrado la vulnerabilidad, se inyecta el código del bot
Figura 3.4: Los ordenadores comprometidos se unen al canal especificado
Figura 3.5: La botnet busca en Internet nuevos objetivos vulnerables
Figura 3.6: Estructura típica de una botnet C&C IRC
Figura 3.7: Definición de DNS Dinámico
Figura 3.8: Ciclo de un botnet desde el punto de vista del atacante
Figura 3.9: Ciclo de un bot desde la víctima
Figura 4.1: Diferencias entre bot IRC y bot C&C IRC
Figura 4.2: Comunicación con el servidor IRC
Figura 4.3: Ejemplo de comunicación con el servidor IRC
Figura 4.4: Configuración del bot
Figura 4.5: definición de Socket Raw
Figura 4.6: Definición de UPX
Figura 4.7: Configuración de Microbot
Figura 4.8: GUI de Gspot
Figura 4.9: Comandos G-spot
Figura 4.10: Gspot en acción
Figura 4.11: GUI Del bot Data Spy Network 0.4b
Figura 4.12: Comandos de DSNX
Figura 4.13: Diagrama de clases
Figura 4.14: Comentario del autor del archivo Readme.txt del bot DSNX
Figura 4.15: GUI del bot DSN versión 0.5b
6. Figura 4.16: Nuevos comandos DSN
Figurra 4.17: Plugin DDOS para DSNX
Figura 4.18: Plugin HTTP para DSNX
Figura 4.19: Plugin de análisis de puertos para DSNX
Figura 4.20: Comandos del bot Omega
Figura 5.1: Configuración del bot sdbot
Figura 5.2: Nuevos comandos versión 0.5
Figura 5.3: Comandos Spybot
Figura 5.4: Comandos Spybot versión 1.2
Figura 5.5: Editor de configuración de Phatbot
Figura 5.6: Evolución temporal de las familias
Figura 5.7: Directorio que contiene al bot
Figura 6.1: Ejemplo de configuración del bot Coromputer dunno
Figura 6.2: Archivo de configuración de Rbot
Figura 6.3: Ejemplo de archivo de cabecera externo del bot Leechbot
Figura 6.4: Archivo de configuración del bot Omega II
Figura 6.5: GUI del bot Dataspy Network
Figura 6.6: GUI del bot G-spot
Figura 6.7: Configuración del bot microbot
Figura 6.8: GUI del bot Phatbot
Figura 6.9: RPC de Microsoft
Figura 6.10: Diagrama de flujo de la función nb_net_exec
Figura 6.11: Codigo del modulo nb_net_upload
Figura 6.12: Función nb_port_scan
Figura 6.13: Diagrama de flujo de la función nb_net_connect
Figura 6.14: Diagrama de flujo de la función nb_spread
Figura 6.15: Clase CScannerNetBios del bot Agobot
Figura 6.16: Aprovechando el sub7
Figura 6.17: Diagrama de flujo Sub7
Figura 6.18: Código fuente del programa para explotar el gusano bagle
Figura 6.19: Diagrama de flujo del módulo bagle
Figura 6.20: Fragmento de codigo de las cadenas a inyectar
Figura 6.21: Funcionamiento del gusano Sasser
Figura 6.22: Diagrama de flujo de la explotación del gusano sasser
Figura 6.23: Código del programa de explotación del gusano Optix
Figura 6.24: Código del shellcode Dcom2
Figura 6.25: Detectando la versión del SO
Figura 6.26: Diagrama de flujo del programa de explotación de la vulnerabilidad DCOM
Figura 6.27: Extracto del código fuente del programa
Figura 6.28: Extracto del código fuente del programa
7. Figura 6.29: cuerpo de petición para WEBDAV
Figura 6.30: código de la explotación del sistema
Figura 6.31: Comandos para el análisis de equipos
Figura 6.32: Captura del bot en acción
Figura 6.33: Código UML de Phatbot
Figura 6.34: Función Doinfect ()
Figura 6.35: Explicación de algunas funciones útiles
Figura 6.36: Fichero startup.c
Figura 6.37: Fragmento de WinMain del bot spybot
Figura 6.38: Fragmento del archivo de configuración de sdbot
Figura 6.39: Fragmento de código con las claves del registro
Figura 6.40: Código UML del instalador en el inicio de Phatbot
Figura 6.41: Estructura de entada de procesos
Figura 6.42: Funciones de utilidad en el manejo de procesos
Figura 6.43: Función killav
Figura 6.44: Funciones útiles en el manejo de servicios
Figura 6.45: Código fuente de killsvc
Figura 6.46: Llamada a la comparación con la lista
Figura 6.47: Bloqueando la resolución de direcciones
Figura 6.48: Entradas en el registro de virus conocidos
Figura 6.49: Función removevirus
Figura 7.1: Función del capturador de teclas
Figura 7.2: Función sendkeys del bot spybot
Figura 7.3: Función StartLogging del bot DSN
Figura 7.4: Función JournelLogProc
Figura 7.5: Hilo de capturas de teclas
Figura 7.6: Función SaveKeys del Rbot
Figura 7.7: estructuras de la función Psniff
Figura 7.8: Declaración de las variables para el sniffer
Figura 7.9: Comparación del paquete con las variables definidas
Figura 7.10: Función que compara si el tráfico capturado es sospechoso de ser bot
Figura 7.11: Función que compara si el tráfico capturado es sospechoso de ser IRC
Figura 7.12: Función que compara si el tráfico capturado es sospechoso de ser FTP
Figura 7.13: Función que compara si el tráfico capturado es sospechoso de ser HTTP
Figura 7.14: Función que compara si el tráfico capturado es sospechoso de usar un programa vulnerable
Figura 7.15: Segmento de la función en donde se realiza la comparación de los paquetes
Figura 7.16: Bot Capturando tráfico
Figura 7.17: Ataque por DDOS
Figura 7.18: Ataque por denegación de servicio mediante una botnet
Figura 7.19: Definición de IP Spoofing
8. Figura 7.20: Función SYN Flood
Figura 7.21: Diagrama UML de las funciones DDOS de Agobot
Figura 7.22: Funcionamiento del spam
Figura 7.23: Definición de Proxy
Figura 7.24: Clase PortRedirect del bot DSN
Figura 7.25: Lanzador del servidor http
Figura 7.26: Fraude por clic
Figura 7.27: Petición http para visitar un sitio determinado
Figura 7.28: Estructura de la información de la descarga
Figura 7.29: Conexión con la URL remota
Figura 7.30: Copiando el archivo
Figura 7.31: Ejecución del archivo remotamente
Figura 7.32: Desinstalación del programa anterior
Figura 8.1: Captura de las comunicaciones
Figura 8.2: Secheck
Figura 8.3: Secheck analizando un sistema Windows
Figura 8.4: HijackThis
Figura 8.5: Archivo de log de Hijackthis
Figura 8.6: Multipot
Figura 8.7: Nepenthes
Figura 8.8: Archivo generado por RegShot con los cambios realizados en el sistema
Figura 8.9: Ejemplo de la captura del tráfico
Figura 8.10: Información sensible mostrada por el programa
Figura 8.11: LorPE
Figura 8.12: Desensamblador IDA
Figura 9.1: Ubicaciones de los servidores C&C
Figura 9.2: Entrevista publicada en Computer Sweden traducido por hispasec
Figura 9.3: Uso de Web para el comando y control
Figura 9.4: Ventana de comandos del C&C vía Web
9. Índice de Tablas
Tabla 1.1: Topologías de redes bot
Tabla 4.1: Características de los primeros bots C&C
Tabla 5.1: Características de las diferentes familias
Tabla 6.1: Puertos de las vulnerabilidades más usadas
Tabla 6.2: Características de la explotación en los distintos bots
Tabla 7.1: Resumen de características de explotación de los bots
10. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Capítulo 1
Introducción y conceptos previos
1.1 Introducción
En su sentido más amplio un bot (diminutivo de robot que a su vez deriva de la palabra
Checoslovaca “robota” que significa trabajo) es un programa informático que realiza
diversas funciones imitando a los humanos: Minería de datos en Internet, funciones
rutinarias de edición de páginas Web, arañas de búsqueda, cartografiar sitios Web…
En el mundo de los videojuegos y los juegos en on-line se conocen a los bots como
programas que son capaces de jugar por si mismos (Aquí denominados borgs), véase el
caso de juegos como Half-life o Quake en los que eran utilizados para sustituir a
contrincantes humanos. Los bots para juegos CRPG (computer role-playing games) son
particularmente conocidos, en juegos como World Of Warcraft o City of Heroes, es
posible dejar un bot en línea mientras el usuario no se encuentra conectado, incluso
pudiendo realizar algunas tareas de manera automática y subir de nivel.
En sitios de conversión en línea (IRC) algunos bots fueron creados para responder de
forma automática a eventos externos concretos, de tal modo se puede intentar “simular”
conversaciones de una persona real, también son usados por los operadores del servidor
para realizar algunas operaciones de control de los canales, ayuda a los usuarios e
incluso últimamente, de publicidad.
Otros bots, por el contrario, están destinados a propósitos menos lícitos, como abrir
cuentas en sitios de correo gratuitos, para evitar esto, los administradores optan a
menudo por añadir un paso adicional como escribir una palabra en formato gráfico que
el usuario debe introducir, algo difícil de interpretar para un bot, ya que estos no
reconocen el texto contenido en una imagen.
Es importante distinguir que bot es una definición funcional, y no hace diferencias en
cuanto a su implementación. Un bot puede estar diseñado en cualquier lenguaje de
programación, funcionar en un servidor o en un cliente, ser un agente móvil, etc. [2]
Autor: Adrián Belmonte Martín 1
11. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
En este proyecto vamos a centrarnos en un tipo de bot que está diseñado para tomar el
control de las máquinas a las que ataca y que es capaz en algunos casos de propagarse
automáticamente usando vulnerabilidades del sistema afectado.
Estos bots forman una red de máquinas comprometidas (botnet) bajo la dirección única
del creador de dicha red.
“En las seis horas que pasaron desde que se desplomó en la cama hasta
que salió de ella, el hacker de 21 años ha comprometido cerca de 2000
ordenadores personales en todo el mundo. Dormía mientras su
programa barría Internet en búsqueda de ordenadores vulnerables,
infectándolos con virus que los volvía su esclavo.
Ahora, con el humo de su primer Malboro del día, anda por la sala de
estar de la casa de sus padres. El hacker, conocido en la red como
0x80, se sienta en un sofá de cuero, pone su portátil en la mesa y teclea
una serie de comando. Con esta orden, los ordenadores infectados,
empezaran a bajar e instalar software que bombardeará a sus usuarios
con anuncios de sitios Web pornográficos. Tras la instalación, 0x80
ordenará a las máquinas buscar en Internet nuevas víctimas
potenciales.
El joven hacker [...] da una profunda calada y se recuesta en el sofá
para exhalarlo. Sonríe. Es su día de trabajo, terminado en menos de
dos minutos. En dos semanas recibirá un cheque por valor de 300
dólares de una de las compañías de marketing on-line que le paga por
sus servicios.”
Fragmento traducido del artículo: Invasion of the Computer Snatchers por Brian
Kreb. Publicado en The Washington post el Domingo 19 de Febrero del 2006
Página w10.
2 Autor: Adrián Belmonte Martín
12. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
1.2 Definiciones y clasificación
Así pues, definimos:
Bot: Se generaliza a programas sirvientes que realizan determinadas acciones a base de
comandos emitidos desde el controlador. El tipo de bot que estudiaremos aquí es el
denominado bot C&C (Command and Control, traducido: comando y control) cada vez
que nos refiramos de ahora en adelante al término bot, estaremos refiriéndonos
inequívocamente a este. Si hablamos de otro tipo, lo indicaremos explícitamente.
Botnet: Su nombre se generaliza a partir del 2003 y hace referencia a redes de equipos
comprometidos (bots) controlados desde un equipo central, empleando diversos
protocolos.
Bot herder o bot master: Es el “dueño” de la red de bots.
Máquina zombie (drone): Con anterioridad al 2000 se solía usar este término para
definir una máquina comprometida usada para ataques de denegación de servicio
distribuida. En la actualidad podemos ampliar el término a máquina comprometida con
un bot bajo las órdenes del bot herder o bot master
Existen varios tipos de bots de comando y control (C&C), y se suelen clasificar según
su topología [3]:
• Centralizada: Se caracteriza por un punto central que comunica los mensajes
entre los clientes. Al ser un sólo sistema único, los mensajes suelen tener una
latencia baja, ya que la dirección entre todos los puntos es conocida y bien
definida. Desde la perspectiva del atacante este sistema tiene dos puntos débiles:
1. Son fáciles de detectar si hay demasiados clientes conectados al mismo
punto
2. Si se desconecta el punto central, se desconecta el sistema completo.
Autor: Adrián Belmonte Martín 3
13. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 1.1 Topología centralizada
• Punto a punto (P2P): Este sistema está empezando a ser implantado en las
botnets más avanzadas, posee importantes ventajas sobre las redes centralizadas.
En primer lugar, es un sistema mucho más robusto. La desconexión de un bot no
significa necesariamente la pérdida de la botnet completa, por el contrario el
diseño de los sistemas p2p son más complejos y no existen garantías de entrega
de mensajes o latencia.
Figura 1.2: Topología p2p
4 Autor: Adrián Belmonte Martín
14. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
• Aleatoria: Un sistema de comunicaciones podría estar basado en el principio de
que ningún bot sabe nada sobre otro bot. En esta topología un bot o su
controlador que quisiera enviar un mensaje, lo cifraría, analizaría la red en
búsqueda de otro equipo infectado y enviaría el mensaje cuando lo detecte. Un
sistema como este, es relativamente fácil de implementar y la detección de un
bot nunca pondría en peligro toda la botnet, sin embargo, la latencia de los
mensajes será muy alta y sin garantías de entrega.
Topología Complejidad en Facilidad de Latencia de Supervivencia
el diseño detección mensajes
Centralizada BAJA MEDIA BAJA BAJA
P2P MEDIA BAJA MEDIA MEDIA
Aleatoria BAJA ALTA ALTA ALTA
Tabla 1.1: Topologías de redes bot
De manera un poco más abstracta también se clasifica según la cantidad de información
que se suministra: por un lado, tenemos la topología central, en la que el servidor sabe
todo acerca de todos los clientes mientras que en el otro extremo nos encontramos con
la topología aleatoria, en la que no sabemos nada de ningún cliente.
Cada topología tiene sus ventajas e inconvenientes, y sin duda, la topología óptima se
encuentra en algún sitio entre los extremos.
Entre todas estas opciones, vamos a focalizar el estudio en los bots de comando y
control bajo protocolo IRC, que estaría dentro de la topología centralizada. Existen
varios motivos para iniciar el estudio de los bots en esta categoría:
• Simplicidad: Es más sencillo que estudiar que otros protocolos como p2p y
mucho más clarificador. Además es un protocolo muy extendido y conocido.
Autor: Adrián Belmonte Martín 5
15. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
• Fueron los primeros en aparecer: Los primeros bots se programaron pensando
exclusivamente en esta topología, por lo tanto los programas están más
depurados y probados.
• Poseen más código fuente para su estudio: Las fuentes con bots programados
para esta topología son superiores a cualquier otra topología existente.
• Contamos con más cantidad de programas para comparar: Con lo que podemos
incluso realizar clasificaciones según distintos métodos o características.
Es, por tanto, una plataforma y un protocolo excelente para comenzar el estudio de
redes de bots, para ver cómo funcionan internamente, cómo se comunican y que
métodos podemos usar para evitarlas.
1.3 Objetivos
En este proyecto vamos a investigar a fondo las redes de bot, el objetivo final es
proporcionar una idea clara de la estructura y funcionamiento de las redes de equipos
comprometidos, de la amenaza que suponen a nivel particular y general, de concienciar
de la importancia de la seguridad en red y de proporcionar información sobre métodos y
herramientas que se puedan utilizar para combatir este tipo de amenazas. Para lograr
esto:
• Proporcionaremos una definición exacta sobre qué tipo de bot hablaremos. Al
ser un término con tantas acepciones es importante indicar a cuál exactamente
nos estamos refiriendo
• Se analizarán las diferentes topologías en las que se implementan dada la
importancia de conocer cómo se comunican estos tipos de redes para lograr su
desarticulación
• Conoceremos sus antecedentes. Sus diferencias con los gusanos de Internet, qué
características heredan de ellos y de los bots de IRC.
• Estudiaremos la historia de los diferentes virus y gusanos para comprender la
evolución tecnológica de los mismos.
6 Autor: Adrián Belmonte Martín
16. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
• Se realizará una clasificación exhaustiva por familias y características de
aproximadamente 300 tipos de bots diferentes, estudiando detalladamente sus
funcionalidades a través de su código fuente.
• Estudiaremos las vulnerabilidades de las que se aprovechan estos programas y
veremos cómo se implementan en los bots
• Veremos el proceso de expansión de una red de bots, cómo comprometen los
sistemas vulnerables y qué comandos y procedimientos se usan comúnmente
• Estudiaremos cómo explota el bot-herder los ordenadores comprometidos y
cuáles son los usos habituales de una red de bot para comprobar cómo nos
afectan
• Analizaremos las funcionalidades de cada tipo de bot
• Examinaremos qué beneficios obtiene el dueño de las botnets para comprobar
los negocios que se encuentran tras estas redes
• Estudiaremos qué herramientas y métodos existen para protegernos de la
amenaza que suponen
• Veremos cómo se puede desactivar una botnet
Para todo esto, comenzaremos el proyecto con la historia y antecedentes de los gusanos
así como de los bots de IRC, antecedentes de los bots. Posteriormente, los
clasificaremos según sus familias y siguiendo un orden cronológico para comprobar la
evolución de estos programas, a continuación, pasaremos a la parte más técnica del
proyecto y estudiaremos los módulos de expansión y explotación del sistema,
analizando en multitud de ocasiones el código fuente de los programas. Acabaremos
con las técnicas y programas usados para poder protegernos de estas redes.
1.4 Justificación
Visto todo esto es interesante resaltar por qué debemos estudiar el funcionamiento de
las redes de bots, ya que nos afecta directa e indirectamente. Podríamos diferenciar las
causas de interés de este estudio en tres grandes grupos:
Autor: Adrián Belmonte Martín 7
17. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
1. Usuarios Domésticos:
• Suplantación de identidad
• Robo de contraseñas
• Robo de datos bancarios
• Publicidad no deseada
• Derroche de recursos y deterioro en el funcionamiento del sistema
2. Empresas
• Deterioro de la imagen de la empresa:
• Perdidas económicas por posibles caídas en los servicios
• Filtrado de datos “sensibles” de la empresa
• Generación de tráfico innecesario
• Derroche de recursos
• Extorsión por parte de terceros
• Instalación de malware y envío de spam en los sistemas de la empresa
• Perdida de confianza del usuario en servicios on-line
3. Internet
• Generación de tráfico innecesario. Ruido de fondo de Internet
• Aumento de ataques y del uso indebido de las redes.
Los principales problemas que nos encontramos a la hora de hacer frente a una botnet
son los siguientes:
• Dificultad en la detección: Detectar un bot en un sistema es algo que en
ocasiones resulta bastante complejo, los bots de última generación incluyen
técnicas de ocultación avanzadas. Detectar una botnet es algo que dependerá de
la topología de la red, de los métodos que contemos y sobre todo de la
experiencia del administrador que realice esta tarea.
• Uso de protocolos comunes: El uso de protocolos como IRC o http y el uso de
puertos usuales, camufla este tipo de programas en el tráfico común de Internet,
además cuenta con la ventaja de que la mayoría de Firewalls están configurados
para permitir este tráfico.
8 Autor: Adrián Belmonte Martín
18. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
• Falta de detección por los Antivirus: Dado que cada programa puede ser
modificado, ampliado y lanzado a la red, se da el caso de que existen cientos de
variantes del mismo programa, con lo que, a no ser que el programa antivirus
posea unas características heurísticas muy buenas, la compañía tarda un tiempo
en recoger el binario, analizarlo y publicar una vacuna, esto añadido al tiempo
que tarda el usuario en aplicar la actualización, hace que los equipos puedan
estar mucho tiempo “al desnudo”.
• Dificultad de “cazar” al dueño de la red: Normalmente es muy difícil seguir el
rastro del bot master ya que el servidor IRC hace de capa de protección, incluso
es común que se conecte al servidor a través de uno de los equipos infectados,
haciendo este de “proxy”. Además es usual la instalación de servidores IRC
privados en máquinas infectadas, re-dirigiéndolos mediante DNS dinámicos y el
uso de máscaras de acceso en estos servidores.
Existen grupos en Internet que se dedican activamente a la caza de redes bots
(denominados bot hunters o zombie hunters) como por ejemplo ShadowServer , un
grupo de voluntarios expertos en seguridad que se encargan de recoger, clasificar e
informar de actividades como spam, botnets y fraude electrónico con la finalidad de
mejorar la seguridad de Internet.:
Figura 1.3: Responsabilidades y técnicas de actuación de Shadowserver
En la página Web del grupo, encontramos información sobre cómo instalar el software
adecuado para detectar e informar de bots al grupo.
Autor: Adrián Belmonte Martín 9
19. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Aparte de estos, organizaciones ligadas a los gobiernos como CERT en americano o
REDIRIS en España, se dedican a prevenir estas redes y concienciar a los usuarios de
los peligros que estas entrañan.
A pesar de todos estos esfuerzos, el creciente número de máquinas “zombie” en las
redes empieza a ser preocupante. De acuerdo con las estadísticas de Symantec, en los
primeros 6 meses del 2006, se observaron una media de 57.000 bots activos por día. Así
mismo, durante ese periodo 4.7 millones de ordenadores fueron usados activamente en
botnets. [1]
A pesar de contar con estas estadísticas nadie puede saber a ciencia cierta el porcentaje
exacto de máquinas que se encuentran operando en la actualidad, esto es difícil
determinar debido a las diferencias en su tipología y morfología, que las hace muy
difícil de detectar y catalogar.
El continuo crecimiento y diversificación de Internet, ha venido acompañado de un
incremento de los ataques e intrusiones. Sin embargo, se observa un cambio significante
en la motivación de los atacantes: se ha pasado del vandalismo y el reconocimiento en
la comunidad, a los ataques para obtener beneficio económico. Este cambio ha supuesto
un crecimiento en la sofisticación de los métodos y las herramientas de ataque.
Actualmente los PC´s domésticos son objetivos apetecibles para los atacantes. La
mayoría de los objetivos ejecutan Microsoft Windows y muy a menudo no son
actualizados correctamente o protegidos tras un firewall, dejándolos expuestos a ataques.
Además, se encuentran también los ataques indirectos como los archivos HTML que
explotan vulnerabilidades o software malicioso en las redes Peer to Peer.
Las máquinas con conexión de banda ancha que se encuentran siempre conectadas son
un objetivo valioso para un atacante: se estima que los beneficios de este tráfico de
ciclos de cpu y recursos gastados en la instalación de bots podrían llegar a rondar el
billón de dólares.
Trend Micro, afirma que al menos el 5% de todos los ordenadores conectados a Internet
han sido usados alguna vez en botnets en cualquiera de sus variantes. [1] y si
observamos los gráficos de los últimos meses en cuanto actividad de bot y botnets, en
tan sólo los casos notificados (en la realidad son mucho mayores, ya que no todas las
redes son fácilmente detectadas) observamos que nos encontramos lejos de acabar con
esta amenaza.
10 Autor: Adrián Belmonte Martín
20. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 1.4: Crecimiento del tamaño de las botnets informadas NOV-FEB
2007.Fuente ShadowServer
Figura 1.5: Crecimiento del número de botnets informadas Nov-Feb 2007: Fuente
ShadowServer
Autor: Adrián Belmonte Martín 11
21. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Nos encontramos sin duda, ante uno de los retos más importantes a los que se enfrenta
la seguridad informática en el principio de este nuevo milenio. Ya no sólo por el riesgo
de violación de privacidad o robo de información, si no porque, tras estas redes de
ordenadores remotamente controlados, se encuentran mafias perfectamente organizadas
que se lucran económicamente de cada sistema comprometido.
Existe en la actualidad una autentica lucha, un juego del ratón y el gato, entre los
creadores de las redes bot y los que luchan por desactivarlas. Las técnicas en el
desarrollo de los bots mejoran día a día, así como el abanico de vulnerabilidades que
explotan. Los intrusos ya no se mueven por diversión o autosatisfacción, ahora lo hacen
por beneficios económicos, lo que les permite dedicarle más tiempo y recursos al
desarrollo de los programas.
Sin embargo, el desconocimiento casi total que se tiene de este tema es una de sus
mejores bazas, es un tema poco conocido incluso en los ambientes de técnicos en
seguridad. Hay una enorme carencia de información con respecto a las redes bot, no hay
ningún libro publicado y la que existe se encuentra muy diseminada, poco organizada y
poco conocida.
Era necesario realizar este proyecto ya que era preciso recopilar la poca información
existente, organizarla y analizar a fondo cómo funcionan estos programas, será este, por
tanto, el documento de mayor extensión y profundidad que existe actualmente sobre el
tema. Conoce a tu enemigo, es importante estudiar siempre a qué nos enfrentamos y en
este caso es el estudio de una red de las que provienen la mayoría de los fraudes y
delitos cibernéticos que se usan en la actualidad siendo previsible que aumenten en un
futuro. Conocer su estructura y el funcionamiento nos permitirá analizar y buscar
soluciones ante uno de los principales problemas de Internet y que es,
sorprendentemente, desconocido para la mayoría de los usuarios de la Red.
12 Autor: Adrián Belmonte Martín
22. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Capítulo 2
Historia
Los intentos de comprometer un sistema han estado presentes desde la creación de las
redes de comunicaciones, el atractivo que los primeros “hackers” encontraban en
hacerse con el control de un sistema remotamente, solía ser el reto intelectual que les
suponía el conseguirlo o el reconocimiento de su “comunidad”, por otra parte, se
encontraban con la oportunidad acceder a una máquina con unas prestaciones que de
otra manera no tendrían oportunidad de usar.
El objetivo de estos atacantes solían ser ordenadores conectados a las redes de las
universidades: Eran un buen objetivo, tenían más probabilidades a priori de estar mal
configurados que un ordenador de un servidor militar o gubernamental, poseían una
buenas prestaciones de cómputo y además estaban conectados 24 horas al día 7 horas a
la semana. Usualmente, los atacantes a estos sistemas solían aprovechar de
configuraciones típicas vulnerables, contraseñas poco seguras (normalmente por defecto)
e incluso ingeniería social para acceder a los sistemas. La gran mayoría de estos
atacantes no comprometían el sistema con fines maliciosos, se limitaban a curiosear y a
intentar no ser detectados el máximo tiempo posible.
Con la expansión de la informática y de las redes de ordenadores, un mayor número de
usuarios se acercan a esta manera de comunicación y con ello un aumento de los
usuarios interesados en explotar los sistemas con fines no lícitos o simplemente
demostrar la inseguridad en las redes de comunicaciones.
Sin embargo, las técnicas para ganar el acceso a un sistema han variado con el tiempo,
mejorando y aumentando su complejidad técnica, se observa en la figura la evolución de
los primero ataques en Internet.
Autor: Adrián Belmonte Martín 13
23. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 2.1: Evolución de los primeros ataques a redes 1980-2000
Formalmente y muy resumidamente las fases de un ataque a un sistema se dividen en:
1. Exploración: El atacante analiza el sistema objetivo para comprobar si usa
Software vulnerable de ser explotado.
2. Acceso: Mediante un fallo de seguridad el atacante consigue acceder al sistema.
Aprovechando fallos locales, puede conseguir el acceso como administrador.
3. Consolidación: Una vez en el sistema, el intruso elimina las pruebas del ataque e
intenta instalar herramientas rootkit para asegurarse el acceso cómodo la
próxima vez.
4. Explotación: El atacante emplea el sistema para diversos fines.
14 Autor: Adrián Belmonte Martín
24. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Rootkit
Un rootkit es una herramienta, o un grupo de ellas usadas para esconder los
procesos y archivos que permiten al intruso mantener el acceso al sistema, a
menudo con fines maliciosos. Hay rootkits para una amplia variedad de sistemas
operativos, como Linux, Solaris o Microsoft Windows [1].
Figura 2.2: Definición de Rootkit
Las técnicas que usa un bot para comprometer un sistema viene heredado
principalmente de dos tipos de programas distintos:
• Gusano: El bot utiliza acciones típicas de un gusano de Internet para realizar
más o menos automáticamente las tres primeras acciones del proceso
( Exploración, acceso y consolidación)
• Bot de IRC: Es la técnica usada para mantener la estructura C&C y realizar la
explotación del sistema, Este punto puede variar según el tipo de protocolo o la
topología (por ejemplo si usamos p2p), como hemos comentado, en este
documento nos vamos a centrar en estudiar este tipo.
Vamos a comenzar definiendo estos tipos de programas y posteriormente intentaremos
estudiar los antecedentes históricos de cada uno de ellos.
Un virus informático es un pequeño programa creado para alterar la forma en que
funciona un equipo sin el permiso o el conocimiento del usuario. Por definición [5], un
virus debe presentar dos características:
• Debe ser capaz de ejecutarse a sí mismo. A menudo coloca su propio código en
la ruta de ejecución de otro programa.
• Debe ser capaz de replicarse. Por ejemplo, puede reemplazar otros archivos
ejecutables con una copia del archivo infectado. Los virus pueden infectar tanto
equipos de escritorio como servidores de red.
Algunos virus están programados para atacar el equipo dañando programas, eliminando
archivos o reformateando el disco duro. Otros no están creados para causar daño alguno,
Autor: Adrián Belmonte Martín 15
25. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
sino para replicarse y dar a conocer su presencia mediante la presentación de mensajes
de texto, vídeo o sonido. Incluso estos virus benignos pueden crear problemas al usuario
informático. Normalmente hacen uso de la memoria correspondiente a los programas
legítimos, como resultado, pueden provocar a un comportamiento irregular en el equipo
e incluso hacer que el sistema deje de responder. Además, muchos virus contienen
errores que pueden ocasionar pérdidas de datos y bloqueos del sistema.
Los gusanos son programas que se replican a sí mismos de sistema a sistema sin utilizar
un archivo para hacerlo. En esto se diferencian de los virus, que necesitan extenderse
mediante un archivo infectado. Aunque los gusanos generalmente se encuentran dentro
de otros archivos, a menudo documentos de Word o Excel, existe una diferencia en la
forma en que los gusanos y los virus utilizan el archivo que los alberga. Normalmente el
gusano generará un documento que ya contendrá la macro del gusano dentro. Todo el
documento viajará de un equipo a otro, de forma que el documento completo debe
considerarse como gusano, mientras que en los virus, sólo una parte del programa
legítimo se encuentra infectado.
En el siguiente punto estudiamos la historia de estos tipos de programas y cual ha sido
su evolución a lo largo de los años que ha permitido el desarrollo de los programas bot.
2.1 Virus y gusanos: Los antecedentes
Quizás los primeros interesados en la seguridad de los ordenadores no estaban
demasiado relacionados con el acceso a los sistemas en redes ni a su explotación,
deberíamos remontarnos mucho tiempo atrás, hasta 1939, año en el que el famoso
matemático John Louis Von Neuman escribió un articulo en una revista científica de
Nueva York exponiendo su “Teoría y organización de autómatas complejos” , donde
demostraba la posibilidad de desarrollar pequeños programas que pudiesen tomar el
control de otros de similar estructura. [9]
Von Neuman, en 1944 contribuyó de forma directa en la fabricación de la ENIAC, una
de las computadoras de primera generación y posteriormente la UNIVAC.
16 Autor: Adrián Belmonte Martín
26. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
En 1949, en los laboratorios de la Bell Computer, subsidiaria de la AT&T, tres jóvenes
programadores: Robert Thomas Morris, Douglas McIlory y Victor Vysottsky, a
maneras de entrenamiento, crearon un juego al que denominaron CoreWar, inspirados
en la teoría de Neuman. Este juego, ejecutaba programas que iban paulatinamente
disminuyendo la memoria del ordenador y el ganador era el que finalmente conseguía
eliminarlos totalmente. Este juego fue motivo de concursos en importantes centros de
investigación como el de la Xerox en California y el MIT.
Sin embargo, por aquellos años la computación era manejada por una pequeña élite de
intelectuales, por lo que el CoreWar fue mantenido en el anonimato. [4]
A principios de 1972 Robert Thomas Morris escribió lo que muchos consideran el
primer gusano informático. Este programa, denominado `creeper', no era ni mucho
menos dañino, sino que era utilizado en los aeropuertos por los controladores aéreos
para notificar que el control de determinado avión había pasado de un ordenador a otro.
Otros ejemplos de gusanos útiles fueron los desarrollados por John Shoch y Jon Hupp,
del centro de investigación de Xerox en Palo Alto, California; estos worms se dedicaban
a tareas como el intercambio de mensajes entre sistemas o el aprovechamiento de
recursos ociosos durante la noche. Todo funcionaba aparentemente bien, hasta que una
mañana al llegar al centro de investigación ningún ordenador funcionaba debido a un
error en uno de los gusanos; al reiniciar los sistemas, estos volvían a fallar porque el
gusano seguía trabajando, por lo que fue necesario diseñar una vacuna; Se había
diseñado el primer “antivirus” aunque evidentemente por entonces no existía tal
término. Este es considerado el primer incidente de seguridad en el que entraban
gusanos en juego. Aunque este nombre no fue ampliamente usado para describirlos
hasta que en 1975 John Brunner publicó la novela de ciencia ficción The Shockwave
Rider, en ella Brunner aplicó termino gusano (Worm) para describir el programa que
utilizó el protagonista y que se caracterizaba por su capacidad de auto replicarse en una
red pudiendo, de esta manera, vulnerar y desvelar los oscuros secretos de la red de
computadores que usaba el gobierno para controlar a sus ciudadanos.
En 1984, el Dr.Fred Cohen, al ser homenajeado en una graduación, en su discurso de
agradecimiento incluyó las pautas para el desarrollo de un virus. Este y otros hechos
Autor: Adrián Belmonte Martín 17
27. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
posteriores lo convirtieron en el primer autor oficial de los virus (aunque hubo varios
autores más que actuaron en el anonimato) [6]
El Dr. Cohen ese mismo año, escribió su libro “Virus Informáticos: teoría y
experimentos” donde además de definirlos los califica como un grave problema
relacionado con la seguridad nacional. Al poco, los usuarios del BIX BBS, reportaron la
presencia y propagación de algunos programas que habían ingresado en sus ordenadores,
actuando como “caballos de Troya”, logrando infectar a otros programas y hasta el
propio sistema operativo, principalmente al sector de arranque.
El año de la gran epidemia fue 1986, ese año se difundieron los virus Brain, Bouncing
Ball y Marihuana, que fueron las primeras especies representativas de difusión
masiva .Estas tres especies virales tan sólo infectaban el sector de arranque de los
disquetes. Posteriormente aparecieron los virus que infectaban los archivos EXE y
COM.
Sin embargo, no fue hasta 1988 cuando se produjo el primer incidente de seguridad
“serio” provocado por un gusano, que a la larga se ha convertido en el primer problema
de seguridad informática que saltó a los medios. El 2 de noviembre de ese año, Robert T.
Morris (hijo de Robert Thomas Morris, creador del ‘creeper’ y experto en seguridad en
UNIX) saltó a la fama cuando uno de sus programas se convirtió en ` Gusano'
el con
mayúsculas. La principal causa del problema fue la filosofía `
Security through
Obscurity'que muchos aún defienden hoy en día: Este joven estudiante se aprovechó
de uno de los muchos fallos en Sendmail descubiertos por su padre y los incluyó en su
gusano, además, explotaba varias vulnerabilidades en programas como, fingerd, rsh y
rexecd para acceder a un sistema, contaminarlo, y desde él seguir actuando hacia otras
máquinas En unas horas, miles de equipos conectados a la red dejaron de funcionar,
todos presentando una sobrecarga de procesos sh (el nombre camuflado del gusano en
los sistemas Unix), reiniciar el sistema no era ninguna solución, porque tras unos
minutos de funcionamiento el sistema volvía a presentar el mismo problema.
Fueron necesarias muchas horas de trabajo para poder detener el Worm de Morris;
Expertos de dos grandes universidades norteamericanas, MIT y Berkeley, fueron
capaces de desensamblar el código y proporcionar una solución al problema. Junto a
ellos, cientos de administradores y programadores de todo el mundo colaboraron
18 Autor: Adrián Belmonte Martín
28. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
ininterrumpidamente durante varios días para analizar cómo se habían contaminado y
cuáles eran los efectos que el gusano había causado en sus sistemas. El día 8 de
noviembre, casi una semana después del ataque, expertos en seguridad de casi todos los
ámbitos de la vida estadounidense se reunieron para aclarar qué es lo que pasó
exactamente, cómo se había resuelto, cuáles eran las consecuencias y cómo se podía
evitar que sucediera algo parecido en el futuro; allí había desde investigadores del MIT
o Berkeley hasta miembros de la CIA, el Departamento de Energía o el Laboratorio de
Investigación Balística, pasando por supuesto por miembros del National Computer
Security Center, organizador del evento. Esta reunión, y el incidente en sí, marcaron un
antes y un después en la historia de la seguridad informática; La sociedad en general y
los investigadores en particular tomaron conciencia del grave problema que suponía un
ataque de esa envergadura, y a partir de ahí comenzaron a surgir organizaciones como el
CERT, encargadas de velar por la seguridad de los sistemas informáticos. También se
determinaron medidas de prevención que siguen vigentes hoy en día, de forma que otros
ataques de gusanos no han sido tan espectaculares: a finales de 1989 un gusano llamado
wank, que a diferencia del de Morris era destructivo, no tuvo ni de lejos las
repercusiones que éste. Desde entonces, no ha habido ninguna noticia importante - al
menos publicada por el CERT - de gusanos en entornos Unix.
Figura 2.3: Eventos relacionados con gusanos y virus
Autor: Adrián Belmonte Martín 19
29. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Una nueva generación
La popularidad de Internet, el amplio uso de el correo electrónico, la potencia de los
interpretes de script de MS Office unido con la ingenuidad de algunos usuarios hicieron
posible la creación de una nueva generación de gusanos que usaban estos medios para
propagarse, Sin embargo, no se podría hablar de un cambio de la “scene” en cuanto a
dejar de programar virus a programar gusanos, sería más correcto hablar de evolución
de los virus, de una adaptación a nuevos medios; Nuevos métodos de propagación y con
otros fines. La barrera entre la programación de virus/gusanos y la “scene” hacker será,
como veremos, cada vez más difusa.
Marzo de 1999, el virus Melissa provoca una de las infecciones masivas más
importantes de la historia de los virus informáticos. En principio un virus de macro de
Word, se auto enviaba por correo electrónico a los 50 primeros contactos de la lista de
correo del ordenador infectado.
En Noviembre de ese mismo año el gusano VBS/BubbleBoy marca un antes y un
después en los métodos de infección, dicho gusano, escrito en Visual Basic Script y
aprovechando un agujero del Internet Explorer 5 se activaba sin necesidad de ejecutar
ningún fichero adjunto, tan sólo con abrir el mensaje o visualizarlo el equipo quedaba
infectado.
Sin embargo, destaca el gusano VBS/LoveLetter ( 3 de Mayo 2000), comúnmente
denominado “I Love You” que era especialmente ingenioso combinando los métodos
expansión del gusano con técnicas de ingeniería social. Dicho gusano se mandaba por
correo electrónico con un mensaje cuyo asunto era “I Love You” e incluía adjunto el
fichero “Love-Letter-For-You-txt.vbs” que al abrirlo infectaba el ordenador y que se
tomaba la libertad de sobrescribir archivos y música, imágenes y otros.
También en el año 2000 apareció el gusano JS/Kak.Worm el cual se propagaba mediante
la ocultación tras un guión de Java Script en la autofirma de Outlook Express, lo cual le
permitía infectar sistemas sin que fuera necesario abrir ningún fichero adjunto.
Por tanto, podemos observar una sustancial mejora en las técnicas de infección: Desde
los primeros gusanos que necesitaban la interacción del usuario, se evoluciona a una
infección cada vez más automática e independiente. Los creadores de virus aprovechan
vulnerabilidades en el software de uso habitual a través de exploits programados por
20 Autor: Adrián Belmonte Martín
30. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
terceros; Pocas veces están realizados por el autor del programa malicioso, ya que su
creación suele ser una tarea compleja, no apta para cualquier usuario. Pero, en ocasiones,
el autor del exploit lo pone a disposición de otros usuarios, esto es aprovechado por los
creadores de virus y gusanos que lo incorporan en sus creaciones.
Hay que destacar las múltiples ventajas de este nuevo método de infección: Si se trata
de una vulnerabilidad para el sistema operativo Windows o un programa muy común,
dispone de millones de víctimas potenciales. A esto hay que añadirle que la propagación
puede llegar a realizarse de manera extraordinariamente rápida, ya que no hay ninguna
barrera que evite su expansión.
El 13 de Julio del 2001, una vulnerabilidad en el servidor Web de Microsoft, Internet
Information Server (IIS) permitió al gusano Code Red infectar 359.000 ordenadores, en
menos de una semana y más de un millón en su corta vida.
A diferencia de sus predecesores, Code Red no requería ninguna intervención del
usuario para ejecutarse y auto replicarse, además de las características típicas de
expansión, este gusano al infectar el sistema, buscaba nuevos servidores IIS y
comprobaba si había sido ya infectado, además pasados unos días, intentaba un ataque
de denegación de servicio contra algunas IP´s prefijadas, como por ejemplo la de la
Casa Blanca.
A partir de ese momento, la expansión de este tipo de gusanos, se hace cada vez más
dañina, y por tanto más famosa y mediática:
El gusano Blaster, también conocido como Lovsan o Lovesan infectaba ordenadores
que ejecutaba Windows Xp o 2000 y que no estaban correctamente parcheados.
Este gusano fue detectado por primera vez el 11 de Agosto de 2003 alcanzando sus
máximas cotas de infección el 13 de Agosto.
Autor: Adrián Belmonte Martín 21
31. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Gusano Blaster
Blaster utiliza una vulnerabilidad en la interfaz RPC que permite la ejecución arbitraria de código
mediante un desbordamiento de buffer en dicho servicio de Windows.
RPC (Remote Procedure Call) es un protocolo que proporciona a Windows un mecanismo de
comunicación entre procesos para que un programa que se está ejecutando en un equipo ejecute
fácilmente código en un equipo remoto. La falla mencionada permite que se pueda ejecutar código en
forma aleatoria, enviando mensajes construidos maliciosamente entre procesos específicos.
Estudiando un poco más en detalle, el gusano hace uso de los siguientes archivos:
MSBLAST.EXE: Es el gusano propiamente dicho, un archivo comprimido con la utilidad UPX.
El gusano se propaga a través del puerto TCP/135, copiándose en los ordenadores que no poseen el
parche para la vulnerabilidad, crea un shell remoto (ejecutando CMD.EXE) en el puerto TCP/4444 de
la máquina infectada (un SHELL es un intérprete de comandos que interpreta y activa los comandos o
utilidades introducidos por el usuario)
y usando este shell, el gusano ejecuta un comando TFTP (get) para descargar el gusano propiamente
dicho en el directorio System32 de Windows.
TFTP: (Trivial File Transfer Protocol) Es una versión simplificada de FTP (File Transfer Protocol), un
protocolo que permite la transferencia de archivos entre dos ordenadores conectados en red.
Además de todo esto el gusano también se ejecuta como un servidor FTP en el ordenador atacado
usando el puerto UDP/69, con lo que permite que la víctima sirva de host a otros usuarios para que
descarguen de allí una copia del gusano (MSBLAST.EXE).
Para propagarse, el gusano utiliza una ingeniosa rutina que optimiza la infección en las redes más
cercanas al host infectado. Para ello, genera 20 direcciones al azar por vez, tomando como base la
dirección IP actual del ordenador infectado, y las explora, buscando otros sistemas vulnerables.
Por ejemplo, si la dirección IP del host es AAA.BBB.CCC.DDD, las direcciones generadas por el
gusano al comienzo tendrán AAA y BBB iguales a los del host.
DDD siempre será cero, y CCC será un número al azar entre 0 y 253. Si el número es mayor de 20, se
le restará otro valor menor de 20 también al azar. Después de ello, alternará las siguientes
combinaciones:
AAA será un número de 1 a 254
BBB será un número de 0 a 253
CCC será un número de 0 a 253
DDD será siempre 0
Con las direcciones generadas, el gusano analiza otros equipos vulnerables, siempre hasta 20
direcciones IP al mismo tiempo. Como resultado de toda esta actividad, la subred local será saturada
con pedidos al puerto 135.
Además de todo ello, el gusano está preparado para realizar ataques distribuidos de denegación de
servicio (DDoS), al servidor de actualizaciones de Microsoft, con la intención es impedir la descarga
del parche que evita que el propio gusano pueda propagarse. Para ello, y comenzando el 16 de agosto
de 2003, todas las máquinas infectadas pueden enviar en forma masiva, una gran cantidad de paquetes
de 40 bytes, en intervalos de 20 milisegundos, al puerto 80 de "windowsupdate.com". Curiosamente el
daño a Microsoft fue mínimo, ya que el ataque fue realizado a windowsupdate.com y no a
windowsupdate.microsoft.com que era la página a la cual era redirigida. De todas maneras y como
medida preventiva, la página objetivo fue desconectada para minimizar el daño del gusano.
Como curiosidades, en su código, el gusano contiene el siguiente texto (no mostrado al usuario):
I just want to say LOVE YOU SAN!!
billy gates why do you make this possible ?
Stop making money and fix your software!!
Figura 2.4: Descripción del funcionamiento del gusano blaster
22 Autor: Adrián Belmonte Martín
32. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 2.5: Captura del código del blaster
Otro detalle curioso e identificativo de este gusano es que en ocasiones, y debido a un
error en el exploit utilizado para aprovecharse de la vulnerabilidad, se muestra el
siguiente mensaje antes de que el sistema se cierre:
Figura 2.6: Mensaje de infección del gusano Blaster
Este mensaje de error se hizo famoso en ordenadores de todo el mundo.
Autor: Adrián Belmonte Martín 23
33. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Pese a todo, el efecto del gusano pudo ser mucho peor, pero los intentos de los ISP por
filtrar el tráfico y las medidas informativas para que los usuarios y empresas aplicaran el
correspondiente parche ayudaron mucho a mitigar el impacto.
Aun así se estima en billones de dólares en pérdidas económicas y cientos de miles de
ordenadores infectados en todo el mundo.
Como puede observarse en estos primeros gusanos de nueva generación, cada nuevo
elemento usa características de los anteriores, refinan las técnicas antiguas y añaden
nuevas, así mismo, la complejidad y sofisticación de los métodos de propagación y su
efecto dañino se fue incrementando con el tiempo.
Aprovechando las puertas traseras
Otro de los gusanos que más equipo infectó y de los que hubo hasta 100 variantes,
algunas de ellas aún en activo, es el Bagle, una vez en el equipo infectado, abría un
puerto TCP que era usado remotamente por una aplicación para acceder a los datos del
sistema, es decir, combinaba los métodos de propagación de los gusanos con la
instalación de puertas traseras(del estilo de Back Orifice o SubSeven) en el equipo
infectado lo cual daba al creador del programa o a cualquier atacante acceso posterior al
sistema.
El 26 de Febrero del 2004, el gusano MyDoom se convirtió en el gusano de propagación
por email más rápido de la historia (aunque también se propagaba por las carpetas
compartidas de la red Kazaa) y también uno de los más dañinos, se dice que llegó a
ralentizar Internet un 10% y la carga de las paginas Web hasta un 50%. [7]
24 Autor: Adrián Belmonte Martín
34. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Gusano MyDoom
La primera cepa de MyDoom se transmitía principalmente por mail, aparentando ser un error en la
recepción de un correo. Contenía el encabezado “Error”, “Mail Delivery System”,”Test” o “Mail
Transaction Failed” en diferentes lenguajes, incluidos Ingles y Francés. El mail contenía un
documento adjunto que si era ejecutado se reenviaba a direcciones de mail encontradas en los
documentos locales, tales como la libreta de direcciones del usuario, también se copiaba en las
carpetas compartidas de Kazaa en un intento de aumentar su expansión.
MyDoom evitaba las direcciones de ciertas universidades como Rutgers, MIT, Stanford y Berkeley,
no porque fuera un virus “estudiante” si no porque de esta manera evitaba que infectara equipos con
personal que pudiera estudiar su código y dar soluciones para su expansión, por el mismo motivo
evitaba direcciones de compañías como Microsoft, Symantec y algunas más relacionadas con la
seguridad.
La cepa primaria de MyDoom realizaba dos acciones primordiales:
1. Abría una puerta trasera en el puerto TCP/3127 que permitía el control remoto del ordenador
infectado
2. Realizaba un ataque de denegación de servicio contra el sitio Web de SCO Group. (Esta
acción finalmente sólo funcionó en el 25% de los sistemas infectados).
Las siguientes cepas del gusano, realizaban acciones mucho más interesantes e innovadoras. Por
ejemplo bloqueaban el acceso http a algunos sitios antivirus online, bloqueaba utilidades antivirus o
sus actualizaciones.
Pero sin duda una de las características más novedosas y que llevaron a pensar que los autores del
gusano podían pertenecer a redes de crímenes organizados o con fines lucrativos fue que añadía
anuncios pop-up de algunas compañías de marketing.
Este virus causó unas perdidas económicas de 40 billones de dólares. [7]
Figura 2.7: Funcionamiento del gusano MyDoom
El último caso de gusano que salió a la luz de los medios públicos, y sin duda uno de los
que más daños causó fue el gusano Sasser (una variante de Netsky) que comenzó su
actividad el 30 de Abril del 2004.
Dicho gusano, se aprovechaba de un desbordamiento de buffer en el componente de
Windows LSASS (Local Security Authority Subsytem Service). El gusano analizaba
diferentes rangos de direcciones IP y conectaba al ordenador de la víctima
principalmente a través del puerto 445.
Sasser no era transmitido vía email y no requería usuarios para propagarse (como el
Blaster). Cada vez que encontraba sistemas Windows 2000 y Windows Xp no
actualizados, este era replicado.
Autor: Adrián Belmonte Martín 25
35. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Los sistemas infectados experimentaban una gran inestabilidad, apareciendo otro
famoso mensaje:
Figura 2.8: Infección por el gusano Sasser
Los efectos se hicieron notar en todo el mundo, aparte de infectar millones de
ordenadores personales de todo el mundo, el gusano:
• Bloqueó las comunicaciones de la agencia de comunicaciones francesa por
cuatro horas.
• La compañía de vuelos Delta Airlines tuvo que cancelar muchos vuelos
transatlánticos por que su sistema de ordenadores estaba colapsado por el virus.
• La compañía de seguros Nordic tuvo que cesar su actividad y cerrar sus 130
oficinas en Finlandia.
• Los servicios de mapas electrónicos de los guardacostas Británicos estuvieron
desconectados por horas
• El departamento de rayos-x de Hospital Universitario de Lund tuvo sus
máquinas de rayos-x apagadas por unas horas y tuvo que redirigir las
emergencias a un hospital cercano. [8]
26 Autor: Adrián Belmonte Martín
36. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 2.9: Cronología de la nueva generación de gusanos. 1-marzo 1999 /30 abril
2004
Actualmente
Sin duda, desde entonces, han aparecido miles de nuevos gusanos y variantes de los
anteriores, sin embargo se ha logrado minimizar enormemente el impacto y la
expansión de los gusanos, esto es debido entre otras causas:
• Esfuerzos de los ISP´s por filtrar y aislar el tráfico de su red.
• Las campañas de concienciación de los departamentos de alertas y respuestas de
seguridad y
• Las investigaciones de las casas antivirus por encontrar las nuevas firmas que
detecten estos gusanos
En todos los casos de grandes epidemias de gusanos, es importante resaltar que fueron
todos creados con base en vulnerabilidades anunciadas por el fabricante y que antes de
cada ataque había disponible un parche que las corregía. [8]
De cada error se aprende algo nuevo, y de estas epidemias aprendimos que es necesario
tomar en serio las actualizaciones de seguridad para el sistema operativo y los
programas que usemos.
Desde entonces, dos nuevos objetivos están siendo enfocados por los atacantes: por un
lado, las aplicaciones del tipo punto a punto; es decir, aquellos servicios que permiten la
conexión directa de dos equipos en Internet, como es el caso de la mensajería
instantánea y los programas para compartir archivos, tan populares hoy en día.
Autor: Adrián Belmonte Martín 27
37. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Y en todo esto: ¿Dónde se quedan las redes de bots? Bien, los gusanos son, sin duda, los
antecedentes directos de estas redes, los bots están programados para seguir el modelo
de expansión de las últimas generación de programas, es decir, la explotación de
vulnerabilidades en el software del equipo víctima.
Sin embargo, una vez que el equipo está comprometido debemos observar la manera en
la que el atacante hace uso del mismo. Como hemos visto, la forma más habitual de
controlar la red de bots es a través del IRC, por tanto, si estamos estudiando la historia y
los antecedentes de las redes de bots, sería interesante, estudiar la historia del modelo
C&C mediante IRC:
2.2 Bots de IRC. Antecedentes
Un bot de IRC (IRC bot) es un conjunto de scripts o un programa independiente que se
conecta a un servidor de charlas como un cliente y aparece a los otros usuarios como un
nick más. El bot responde a comandos predefinidos con acciones determinadas y suelen
usarse para diversos motivos:
• Proteger a los canales de inundaciones y absorciones.
• Mantenimiento de los canales.
• Mantener listas de acceso.
• Permitir el acceso a bases de datos.
• Creación de estadísticas.
• Publicidad.
• Ejecutar juegos (el Trivial es el más común).
De hecho él primer bot de IRC llamado GM escrito por el operador de IRC Greg
Lindahl (de nick Wumpus), era un juego para los usuarios que se comunicaban
mediante IRC, el juego se denominaba “Hunt the Wumpus”.
El primer bot usado para controlar y proteger un canal de Chat fue programado en
Diciembre de 1993 por Robert Pointer en Tcl/tk bajo código abierto. Se creó para ser
usado en el canal #gayteen, ya que el autor deseaba controlar y proteger, su por
28 Autor: Adrián Belmonte Martín
38. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
entonces “controvertido” canal de Chat. Este programa empezó a volverse muy popular
a través de los años y posteriormente, Robert Pointier en conjunción con un grupo de
aficionados evolucionaron sus Scripts hasta convertirlos en sistemas, tal como es hoy el
denominado Eggdrop, reclamado por ser el más popular bot de IRC y cuya comunidad
ha crecido enormemente en estos últimos años, aunque su creador ya no pertenezca al
grupo.
La disponibilidad del código fuente de este y otros programas de bots de IRC, la
facilidad del control remotamente de cualquier equipo remotamente y la gran
popularidad de estas redes, hizo que los programadores de bots vieran una plataforma
perfecta para el desarrollo de la estructura de comando y control.
Por tanto, ahora poseemos una idea de cuales son los antecedentes y las influencias que
hacen que estas redes de bots tengan la estructura que tienen y cómo funcionan, como
iremos viendo a lo largo del proyecto, dependiendo de la complejidad de cada bot
utilizará métodos y técnicas distintas y más o menos sofisticadas.
Autor: Adrián Belmonte Martín 29
39. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Capítulo 3
Funcionamiento y estructura
Ahora bien, ¿cómo funciona un bot? Un ejemplo de funcionamiento de una botnet C&C
bajo IRC sería la siguiente:
• Un atacante primero lanza un gusano que infecta varios Hosts. Estos se
convierten en zombies y se conectan al servidor IRC para recibir instrucciones.
• El servidor IRC puede ser una máquina pública en una de las redes IRC, o un
servidor dedicado instalado por el atacante en uno de los Hosts infectados.
• Los bots funcionan en los ordenadores infectados formando una botnet.
• El bot master ordena a los bots, infectar más equipos para aumentar la red.
Figura 3.1: El atacante busca un primer equipo víctima
30 Autor: Adrián Belmonte Martín
40. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 3.2: Se ordena al ordenador semilla buscar nuevos objetivos
Autor: Adrián Belmonte Martín 31
41. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 3.3: Una vez encontrado la vulnerabilidad, se inyecta el código del bot
Figura 3.4: Los ordenadores comprometidos se unen al canal especificado
32 Autor: Adrián Belmonte Martín
42. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 3.5: La botnet busca en Internet nuevos objetivos vulnerables
Por lo tanto una red de bots o botnet se podría dividir en:
1. El atacante: Este se conecta al servidor IRC a un canal definido por el y
normalmente por medio de una contraseña, una vez allí, envía las ordenes
que desee a la red de bots.
2. Servidor IRC: Hace de “máscara” entre el atacante y la red de ordenadores
bots.
3. Red de ordenadores zombies comprometidos: Ejecutan las órdenes que el
atacante les manda desde el canal IRC.
Autor: Adrián Belmonte Martín 33
43. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 3.6: Estructura típica de una botnet C&C IRC
Es, como vemos, una estructura muy sencilla, que permite al atacante tener el
control absoluto de las máquinas zombies, la denominada C&C (Command and
control, comando y control) y que hace muy difícil su detección, ya que no son los
ordenadores comprometidos quienes reciben las órdenes directamente si no que todo
el tráfico se realiza a través de un tercero, que es en este caso un servidor IRC.
Ahora bien, que ocurriría si el ordenador comprometido como servidor de IRC no es
accesible, el bot es eliminado, o si, simplemente cierran el acceso al canal de IRC
público. ¿Es tan sencillo eliminar una botnet?
Como refuerzo para las redes de bots, los creadores, comenzaron a utilizar
redirección dinámica de DNS (DDNS, Dynamic Domanin Name Server), una
solución sencilla y con la cual no se perdía la red de bots completa. Tan sólo tenían
que cambiar la DNS del servidor IRC caído por otra accesible y todos los
ordenadores zombies sabrían a que IP conectarse de nuevo.
Normalmente, para conseguir esto, se usa un DDNS gratuito, como DynDns.org o
No-IP.com para apuntar hacia el servidor IRC con el canal que albergará a los bots.
El servidor de DNS dinámico no proveerá servicio alguno para los ataques, tan sólo
34 Autor: Adrián Belmonte Martín
44. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
trabajará como punto de referencia, con lo cual no realiza ninguna actividad ilegal
con tales servidores.
! "# $
! %"
&
' !
' ( & ( '
) "
# '* ! ) + $, $ '
$ $ $ & -
$ $ "
! - ' " $ -
. %
- ' $ ( %
-+ ! "
Figura 3.7: Definición de DNS Dinámico
Sin embargo, aun con todo esto, las redes de bots son bastante frágiles,
principalmente por dos motivos:
• En la actualidad las compañías de DNS dinámicos, se han dado cuenta del
alcance del problema y están intentando eliminar los subdominios que
apunten a redes bots.[10]
• Falta de redundancia: si se descubre un servidor botnet o un canal IRC que
albergue la red bot , todos los bots quedarán al descubierto, la desconexión
del servidor o el cierre del canal, hará que caiga toda la estructura (al menos
hasta que el controlador consiga una nueva dirección para el host)
Como contrapartida, las nuevas versiones de programas para servidores de IRC
incluyen entre sus características “enmascarar” otros servidores con lo cual si se
descubre un host usado como servidor IRC y se consigue cerrar, la reconexión a un
nuevo servidor IRC se haría de forma automática.
Autor: Adrián Belmonte Martín 35
45. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
3.1 Ciclos de un bot
La actividad de una botnet se considera “cíclica” y se podría observar desde dos
puntos de vista diferentes. Por un lado, se puede observar el ciclo de actividad del
atacante (ciclo de la botnet):
• El ‘bot-herder’ configura los parámetros iniciales del bot, tal como los vectores.
de infección, el payload, ocultamiento y los detalles de C&C.
• Procede al registro del DDNS.
• El ‘bot-herder’ lanza los bots-semilla. Comienzo de la infección.
• Fase de crecimiento- expansión-propagación.
• Pérdida de bots a otras botnets.
• Pico de máximo crecimiento.
• Abandono de la botnet.
• Da de baja el DDNS.
Baja del DDNS Configuración
Abandono del botnet
Registro del DDNS
Perdida de bots
Pico máximo de Lanzamiento del bot
crecimiento semilla
Crecimiento
Figura 3.8: Ciclo de un botnet desde el punto de vista del atacante
36 Autor: Adrián Belmonte Martín
46. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Por otro el lado, el ciclo del equipo infectado (ciclo de un bot):
• Infección. Establecimiento del C&C
• Análisis de objetivos vulnerables para la expansión del bot
• Pérdida del bot
• Recuperación del bot
• Actualización con nuevo código del bot
• Espera
Infección
Espera de órdenes
Pérdida del bot
Análisis de otros
Recuperación equipos/Uso del bot
Actualización con
nuevo código
Figura 3.9: Ciclo de un bot desde la víctima
Una de las características más importante de los bots, es que pueden extenderse con
facilidad a otros ordenadores. La planificación cuidadosa del proceso de infección
ayuda a conseguir mejores resultados en menos tiempo.
El uso de los canales IRC para la comunicación remota de redes botnets tiene las
siguientes ventajas:
• Es flexible: Incluso los servidores públicos pueden usarse como medio de
comunicación.
• Simple: Es posible controlar cientos e incluso miles de bots de forma
simultanea y con pocos comandos.
Autor: Adrián Belmonte Martín 37
47. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
• Fácil de usar: Se usan los comandos usuales del IRC, ampliamente
conocidos.
• Anónima: Permite al atacante ocultar su identidad, usando técnicas
sencillas como servidores proxies anónimos, cuentas shell remotas o
spoofing de direcciones IP, por lo que es difícil dar caza al dueño de la red
de bots.
3.2 Algunos usos de las botnet
Se va a ver aquí el uso que hacen los controladores de las redes bots. Aunque
hablaremos en profundidad y lo analizaremos más concienzudamente en capítulos
posteriores, servirá de introducción para incidir en la peligrosidad de estas redes y el
peligro que conlleva para la seguridad en los sistemas.
Una vez que el ‘bot herder’ se ha hecho control de una máquina (bot semilla), la botnet
crece de manera exponencial. El atacante, ordenará a este equipo seguir rastreando la
red en busca de equipos vulnerables, infectándolos, pudiendo llegar a montar redes de
miles de sistemas comprometidos bajo su control.
Aunque no es muy difícil imaginar que se podría realizar con una red de cientos o miles
de ordenadores comprometidos bajo el control total de una persona, desglosaremos aquí
algunas “aplicaciones”:
Ataques de denegación de servicio distribuido (DDOS, Distributed Denial of
Service)
Supongamos que tenemos una botnet de 100 equipos, una red bastante pequeña, cada
equipo tiene de media una conexión de subida de 128 kb/s, de la cual supongamos que
sólo usa la mitad para el ataque (debido a que se esté usando la conexión para el usuario
o por otros motivos) 128/2= 64kb/s*100= 6400kb/s, es decir, el equivalente a 8MB en
datos por segundo contra sólo un objetivo, todo esto con tan sólo 100 equipos y con una
conexión media-baja (lo normal en los equipos es 300kb/s de subida), sin duda capaz de
saturar a más de un host de Internet.
38 Autor: Adrián Belmonte Martín
48. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Muchas redes han sufrido estos ataques, los controladores de las bots en ocasiones
alquilan la red a mafias o a empresas para que ataquen empresas rivales.
Sniffing y keylogging
La observación de los datos que circulan por un equipo puede permitir la detección de
una cantidad increíble de información que puede ser usada para actos maliciosos futuros,
en este apartado se podría incluir, hábitos de usuario, análisis de paquetes TCP, robo de
claves de correo, paypal, robo de identidades, información de banca online, tarjetas de
crédito, licencias lícitas de software…
Spamming
Las botnets son el medio ideal para los spammers, se usan para intercambiar direcciones
de email recogidas para controlar oleadas de correo basura de la misma forma que se
hacen los ataques DDOS. Puede enviarse un sólo mensaje de correo basura a la botnet y
ser distribuida a través de bots que envían el correo basura. El spammer permanece
anónimo y toda la culpa será de los ordenadores afectados.
Sembrar Malware
Con tan sólo una orden del ‘bot herder’ todos los bots de una red pueden comenzar a
descargar de cualquier sitio de la red, programas malware o de publicidad “pop-up”
Crear servidores proxy
Bien para ocultarse para acceder a los servidores IRC o para redirigir ataques de spam y
malware
Creación de servidores Web
Con ficheros maliciosos, para ataques de phising o para almacenamiento de software
ilegal, el ordenador infectado se usará como almacén dinámico de software pirata,
pornografía, material ilegal, etc.…mientras que el legítimo usuario ignora que esto
sucede.
Autor: Adrián Belmonte Martín 39
49. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Capítulo 4
Fauna Bot
A la hora de abordar el estudio de los bots, contamos a nuestro favor con que muchos de
ellos tienen el código fuente disponible para su estudio, los más famosos incluso se
encuentran bajo licencia GPL, otros poseen su código descargable de Internet (pero sin
derecho de modificación), hecho que motiva su enorme expansión y diferentes
versiones de cada uno.
No obstante, no todos los programas que hemos podido encontrar incluyen su código
fuente, hay algunos que traen tan sólo un ejecutable, lo que dificulta su análisis. Otros
incluso contienen falsos bots en archivos binarios que en realidad ejecutan puertas
traseras en el equipo, convirtiendo al supuesto atacante en víctima.
El hecho de tener el código fuente disponible es causa directa de que estos bots sean los
más frecuentes y de los que existen más variantes, también son los más desarrollados y
los que más funcionalidades poseen. Por tanto, estudiaremos en mayor medida estos
bots que normalmente forman las denominadas “familias”. Cada versión del bot en estas
familias posee unas características diferentes, nuevas mejoras, o simplemente son
personalizadas a gusto del “bot herder” que las compila y distribuye.
Hay que destacar que sólo vamos a estudiar una pequeña muestra representativa de
todos los bots existentes, sería imposible estudiarlas todas, ya que cada creador de bots
va modificando y ajustando los programas según las necesidades de cada momento, es
por tanto probable que si alguien continua este trabajo o lo empieza de nuevo, encuentre
disponible otras versiones de los bots con nuevas características o no encuentre algunas
a las que me refiero aquí.
Sin embargo, las principales funcionalidades están comentadas a fondo en este proyecto.
Se clasifican las características de los bots con la finalidad de poder contar con un
número suficiente de elementos como para estudiarlos a fondo en los siguientes puntos,
bien sea de manera conjunta (las de un mismo bot) o bien las singulares de un bot que
resulte interesante resaltar.
Para ello comenzaremos de un modo constructivo, desde los bots más básicos, iremos
avanzando hasta llegar a las grandes familias que poseen decenas de versiones y
características diferentes.
40 Autor: Adrián Belmonte Martín
50. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Se comienza el estudio con los primeros bots de IRC (no se pueden denominar aun de
comando y control) que empezaban a “esbozar” la estructura y características que
usarían posteriormente este tipo de bot C&C. Para ello, es importante definir cuales son
las diferencias entre uno y otro, ya que a veces es difícil determinar la línea que los
separa:
Bot IRC Bot C&C IRC
• No “infecta” el sistema: No se • Se instala sin consentimiento
instala sin consentimiento del del legitimo usuario
usuario legitimo del equipo. • Implementa acciones dañinas
• No implementa acciones • Implementa acciones de robo
dañinas contra el sistema en el de información
que esta instalado ni contra • Permite el control absoluto
otros equipos de la red del equipo infectado
• No implementa características • Se instala usualmente en
de robo de información en el ordenadores remotos
equipo que se instala domésticos.
• No permite el control
absoluto del equipo que es
instalado
• Normalmente en ordenadores
remotos mediante cuentas
shell
Figura 4.1: Diferencias entre bot IRC y bot C&C IRC
Las diferencias entre uno y otro son meramente funcionales.
Autor: Adrián Belmonte Martín 41
51. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
4.1 Los precursores. Bots IRC
Como antecedentes de los bots de comando y control, vamos a estudiar dos programas:
4.1.1 Coromputer_dunno
Es un bot de IRC muy simplificado y bastante fácil de estudiar, nos ayudará a
comprender:
• Cómo se realiza y se mantiene la comunicación con el servidor IRC.
• Cómo se establecen los parámetros de configuración del programa.
Sus características:
• Escrito en C
• Para sistemas *NIX, fácilmente portable a Windows.
• Bastante más simple que otros programas bot IRC para el estudio de las
comunicaciones con el servidor.
La estructura de una conexión con el servidor IRC típica es la que se muestra en la
figura:
42 Autor: Adrián Belmonte Martín
52. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 4.2: Comunicación con el servidor IRC
Sin embargo, este bot más escueto en el manejo de las comunicaciones con el servidor,
ya que por ejemplo, no implementa acciones cuando recibe un mensaje privado.
Un ejemplo de cómo realizar dicha comunicación lo encontramos en las siguientes
líneas de código
strcat(nick,NICK); // Introduce en la variable la cadena NICK
strcat(nick,"n"); // Añade retorno de carro
send(sock,"USER X X X :Xn",14,0); //Lo envía al servidor
recv(sock,buff,sizeof(buff),0); //Recibe lo que el servidor responda
memset((void *)&buff,0,sizeof(buff)); //Limpiamos buffer
send(sock,nick,strlen(nick),0);
recv(sock,buff,sizeof(buff),0);
strcat(ping,&buff[6]); //Enviamos el buffer
strcat(ping,"rn"); // Junto con la cadena PING
Figura 4.3: Ejemplo de comunicación con el servidor IRC
Se trata del envío del comando NICK_USER y PING que corresponde con el primer y
segundo estado en la figura.
Autor: Adrián Belmonte Martín 43
53. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Otro aspecto interesante a estudiar son las líneas de configuración del programa, en las
que definimos el servidor IRC, los archivos temporales de las acciones que realicemos,
así como el nick que queramos que tenga el bot:
#define SERV "Geneva.CH.EU.Undernet.org" /* Don'forget to put the IRC server with his Upper Cases */
t
#define FILLE "lala.txt" /* temporary file where WHO list will be placed at the end it will be erased */
#define TIMEOUT 4 /* seconds */
#define LOG "log.txt" /* log file where results will be writed(when you dont use verbose mode */
#define NICK "ZaIrcBot" /* the nick of the bot */
Figura 4.4: Configuración del bot
Así pues, la simplicidad de este programa, nos sirve de lanzadera al estudio de otros
bots, ya que nos ayuda a comprender fácilmente como funcionan los bots.
4.1.2 Skydance
El siguiente programa es un poco más complejo que el anterior y ya posee algunas
características de bot de comando y control, sin embargo, no llega a entrar todavía en
esta categoría.
Se clasifica como un bot “dedicado”, está diseñado para cumplir una función especifica:
Realizar ataques de denegación de servicio distribuidos (Consultar anexo) usando
sockets RAW:
Raw sockets
Es un Socket que tiene la capacidad de comunicarse directamente con el hardware de
comunicación del ordenador permitiendo al programa el acceso directo a todos los
aspectos de los datos en el paquete.
Raw Sockets permite al usuario personalizar varias características de estos paquetes,
lo que incrementa la probabilidad de error, accidental o intencionadamente.
Figura 4.5: definición de Socket Raw
44 Autor: Adrián Belmonte Martín
54. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Entre sus características se encuentran:
• Usa el protocolo ICMP
• Incluye entre sus ataques SYN-ACK Flood y Simple ping flood attack
• No aparece cuando se realiza un netstat (por el uso del ICMP)
• No se detecta cuando se realiza un análisis de puertos (Usa RAW)
• Permite spoofing de IP en Win2k/XP
Actualmente se trata de un bot ya bastante obsoleto, las características de ocultación
fueron rápidamente subsanadas y no funcionan actualmente, aun así, nos es útil para
observar en este tipo de programas una evolución en cuanto la utilidad de los bots de
IRC para otro tipo de fines.
4.2 Los primeros bots C&C
Avanzando un poco en la complejidad de los programas, nos encontramos una gran
variedad de bots más enfocados al “control simple”, suelen ser poco complejos, con tan
sólo unos pocos comandos, que sin embargo, confieren un gran potencial de acción.
4.2.1 Microbot
Posee tan sólo cuatro comandos:
• .login <password> - Registro como dueño del bot
• .die – Desconecta el bot del IRC y mata el proceso
• .raw <commands> - Envía un texto RAW al servidor IRC
• .run <file> - Descarga y ejecuta un archivo desde una Url o un comando DOS
Características:
• Empaquetado UPX
• Pequeño tamaño: 14 Kb
• Posibilidad de ejecutar y descargar programas
• Para entornos Windows
Autor: Adrián Belmonte Martín 45
55. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
UPX
UPX (Ultimate Packer for eXecutables) es un empaquetador de ejecutables gratuito,
portable y de alto rendimiento. UPX soporta diferentes formatos de ejecutables, incluyendo
programas de Windows 95/98/ME/NT/2000/XP y DLLs, programas de DOS, Linux, etc.
• Excelente relación de compresión: típicamente comprime mejor que el
WinZip/zip/gzip.
• Descompresión muy rápida: ~10 MB/s en una Pentium 133, ~200 MB/s en un
Athlon XP 2000+.
• Universal: UPX puede empaquetar muchos formatos de ejecutables.
• Portable
• Libre: UPX es distribuido bajo la GNU General Public License. [11]
Figura 4.6: Definición de UPX
Sin embargo, a pesar de su corto número de instrucciones, puede volverse un arma
extremadamente potente: Su pequeño tamaño y la posibilidad de descargar y ejecutar
instrucciones desde una dirección, permitiría a un atacante con la suficiente experiencia,
tener un control absoluto de la máquina.
Este bot no provee de su código fuente, toda la configuración se realiza a través de un
archivo ejecutable de configuración:
46 Autor: Adrián Belmonte Martín
56. Bot y Botnets: Análisis de estructura y funcionamiento de las redes de ordenadores comprometidos
Figura 4.7: Configuración de Microbot
4.2.2 G-spot
Incluye un archivo de configuración en modo grafico y bastante intuitivo, sin
embargo, tampoco provee de código fuente.
Figura 4.8: GUI de Gspot
Autor: Adrián Belmonte Martín 47