La resiliencia de las botnets: "redes duras de pelar"

De manera general, y más en el caso del malware relacionado con las botnets, buscan pasar desapercibidos con el fin de ser persistentes y así obtener el mayor beneficio posible: por ejemplo, a través de la exfiltración de información relevante, el envío masivo de spam, o de la subcontratación de la botnet para llevar a cabo ataques de denegación de servicio.
A lo largo de todo este tiempo, las botnets han ido incluyendo una serie de medidas y protecciones para aumentar su nivel de resiliencia, es decir, han ido implementando mecanismos para mantenerse funcionales el mayor tiempo posible. Es importante conocer este tipo de mecanismos para poder hacerse una idea aproximada del nivel de sofisticación y de la amenaza que suponen: «Conoce a tu enemigo y conócete a ti mismo; en cien batallas, nunca saldrás derrotado.» (El arte de la guerra - Sun Tzu).
Algoritmo de generación de dominios (DGA)
En lugar de tener en el código del malware los dominios con los que se comunican los nodos, muchas botnets incorporan un sistema DGA, mediante el cual se generan periódicamente gran cantidad de dominios en base a ciertos criterios, llegando incluso a más de 1.000 dominios diarios.
De este modo, el malware comprueba si esos dominios están accesibles, y en el caso de que lo estén, se conecta a ellos con el fin de recibir actualizaciones o instrucciones. El bot master, al haber creado el algoritmo, es capaz de predecir los dominios que se generarán, por lo que se anticipa y registra aleatoriamente algunos de ellos, los activa, realiza la comunicación con los nodos y finalmente los desactiva.
Este mecanismo dificulta el trabajo de los analistas de malware y de las empresas de seguridad, ya que se debe realizar ingeniería inversa con el fin de comprender el funcionamiento de dicho algoritmo y así evitar que el malware se conecte con el servidor C&C, o adelantarse al bot master y registrar algún dominio para poder establecer la comunicación con los nodos.
De manera habitual, utilizan el timestamp como base para generar los dominios, pero en ocasiones son más originales, como es el caso de la botnet Torpig, que utiliza los trending topics de Twitter como base para la generación de dominios.
Además, con el fin de ocultar este tráfico fraudulento, realizan peticiones a sitios legítimos.
Polimorfismo
Una gran parte de las detecciones que realizan los antivirus y suites de seguridad se hacen mediante detección por hashes, es decir, se crean detecciones únicas para cada uno de los ficheros catalogados como malware.
Con el fin de evadir este tipo de detecciones, los creadores de malware crean malware polimórfico, es decir, varían ligeramente el código con el fin de que cambie el hash del fichero y así invalidar su detección. Algunos de los métodos más habituales consisten en insertar código basura, reorganizar el código ya existente o la utilización de diferentes packers.
Anti-Crawling
Crawlear una botnet consiste en identificar todos los nodos pertenecientes a la misma. De este modo, se puede obtener una idea aproximada de su propagación y alcance, permitiendo notificar a los usuarios afectados que sus equipos están comprometidos, y los pasos que deben seguir para desinfectarse.
Con el fin de prevenir esto, en muchos casos los nodos de las botnets se envían únicamente listas parciales del resto de nodos de la botnet, es decir, envían únicamente el listado de nodos que conocen (peerlist), e incluso lo hacen de manera fragmentada. Además, algunas, como es el caso de Zeus, implementan mecanismos mediante los cuales bloquean los nodos que solicitan frecuentemente peerlist. De este modo, se consigue que crawlear la botnet resulte muy costoso.
Anti-Sinkhole
A grandes rasgos, Sinkhole es el término que describe el proceso de tomar el control de una botnet infiltrándose en la misma. Esta toma de poder se realiza provocando que los nodos se conecten para recibir instrucciones a uno que esté bajo nuestro control. De este modo, es posible enviar peerlist manipuladas o instrucciones para desmantelar la red.
Con el fin de prevenir esta técnica, las botnets incorporan esquemas de reputación para determinar qué nodos dentro de la botnet son confiables y cuáles no, y bloquean los nodos que identifican que han sido “sinkholeados”.
Así mismo, utilizan sistemas de backup de los servidores C&C.
Comprobación del entorno
Algunas botnets analizan diferentes aspectos del entorno en el que se ejecutan, con el fin de determinar si lo están haciendo en sandboxes o entornos de análisis de malware. En el caso de identificar estos entornos, su comportamiento es distinto con el fin de parecer goodware.
Incluso, en ocasiones, generan blacklists con las IPs de las sandboxes y entornos de análisis de malware con el fin de que otros malware utilicen ese conocimiento para evitar ser detectados.
Compartimentación de las funciones
De manera habitual, las botnets están formadas por gran cantidad de malware y con diferentes funcionalidades. Existen los droppers o downloaders encargados de introducir el payload en el sistema, que es el que contiene realmente la funcionalidad. De este modo, puede ocurrir que se detecten los droppers y downloaders, y no el payload, o al revés.
Fast Flux
Como se indicaba en el post «Uso y abuso de DNS», Fast Flux es una técnica que consiste en la asignación de múltiples direcciones IPs a un determinado dominio. De este modo, cada vez que se realiza una consulta DNS sobre ese dominio, se resuelve una dirección IP distinta. Las redes Fast Flux están formadas por nodos comprometidos de la propia botnet, y actúan como proxy entre los clientes y los servidores donde se almacena el contenido. Esta técnica permite ocultar la ubicación real del servidor desde el que se controla la botnet.
Descentralización de la estructura de una botnet
La utilización de botnets con estructura descentralizada, como es el caso de las P2P, dificulta significativamente su desmantelamiento.
En algunos casos, utilizan múltiples servidores C&C con distintas versiones del malware.
Así mismo, la utilización de servicios alojados en la red Tor, permite enmascarar la localización real de los servidores C&C.
Comunicación
Las botnets se comunican de diferentes maneras:
- A través de redes sociales: Facebook, Twitter o LinkedIn.
- A través de diferentes servicios: Google Groups, Google Calendar o Reddit.
- A través de IRC o programas de mensajería como Skype.
- A través de P2P.
- A través de esteganografía: habitualmente en imágenes con texto oculto aprovechando los metadatos, como es el caso de Zeus y Bredolab.
Así mismo, acostumbran a ofuscar los comandos que transmiten, de modo que pueden evadir las firmas de los sistemas de detección de intrusos (IDS) y similares.
Exfiltración de información
Dentro del proceso de comunicación, es importante tener en cuenta que utilizan diversas técnicas para llevar a cabo el proceso de exfiltración de información sensible:
- Diferentes métodos: HTTP, FTP, SSH, SMTP, etc.
- Dividen la información en un gran número de ficheros de tamaño pequeño, en lugar de enviar únicamente uno de gran tamaño.
- De manera habitual, utilizan algoritmos de cifrado simétrico por sustitución para cifrar la información: los más habituales son Cesar o ROT13. No es habitual la utilización del cifrado asimétrico ya que tiene un coste computacional alto.
En el proceso de comunicación, merecen especial atención los covert channels, es decir, las técnicas que permiten enviar información empleando para ello las cabeceras de los protocolos de comunicación. Mediante estas técnicas es posible tanto enviar instrucciones a los nodos de la botnet como exfiltrar información sensible.
Al llegar los paquetes a su correspondiente destino, se procesan los valores de las cabeceras de modo que se obtiene información que el bot master puede comprender.
Algunos de los ejemplos más habituales de covert channels son: «Timing Covert Channel» o «Storage Covert Channel».