Por
Abel Toro, equipo de Investigación de Seguridad e Investigaciones Especiales de Forcepoint Security Labs
En Forcepoint Security
Labs estamos observando siempre los métodos que los creadores de
amenazas utilizan para evadir la protección existente. Una investigación
nos llevó a analizar el uso
del servicio de mensajes cifrados de Telegram como una infraestructura de malware de Comando y Control (C2).
El malware que emplea
Telegram como un canal C2 normalmente usa el Telegram Bot API para las
comunicaciones. En el curso de una investigación de una pieza de
malware, descubrimos una falla
importante en la manera en que Telegram maneja los mensajes enviados a
través de su Bot API.
Debido a la manera en
que funciona el Bot API, todos los mensajes bot anteriores pueden
enviarse otra vez por un adversario que es capaz de interceptar y
desencriptar el tráfico HTTPS. En la
práctica, esto puede proporcionarle al adversario el historial completo
de todos los mensajes enviados o recibidos por el bot objetivo. Esto a
menudo incluye mensajes entre usuarios humanos regulares ya que los bots
comparten con frecuencia un chat grupal
con ellos.
Acceso a los mensajes de Telegram C2
Telegram utiliza su
encripción interna MTProto dentro del tráfico TLS para proteger los
mensajes entre usuarios regulares ya que ve (con
justa razón) a TLS como algo no muy seguro para una aplicación de mensajería encriptada.
Desafortunadamente,
esto no se aplica en el caso de programas que utilizan los mensajes del
Telegram Bot API enviados de este modo, los que sólo están protegidos
por la capa HTTPS. Para empeorar
las cosas, los adversarios que son capaces de obtener información clave
transmitida en cada mensaje no sólo se limitan a espiar los mensajes en
tránsito, sino que también pueden recuperar el hilo de mensajes
completos del bot objetivo.
Una de estas piezas
clave de información es el token bot API, el cual se inserta en todos
los mensajes (así como en el binario de cualquier programa –malware o
legítimo- usando el Telegram
Bot API). Esto resulta trivial para un adversario que realiza MiTM en
la conexión HTTPS del objetivo para obtener estos datos.
La otra pieza
importante del rompecabezas es un Telegram chat_id generado
aleatoriamente. En el caso de los chats individuales, este es un ID
único del usuario, mientras que los chats grupales
tienen su propio chat_id generado en el momento en que se crean. Sin
embargo, esta información también se envía en cualquier solicitud del
Bot API cuando el bot necesita saber a qué usuario y/o chat grupal
enviar la información.
Equipados con esta información, hay
varios métodos
que pueden ser tomados del Telegram Bot API. En nuestro caso, el método
forwardMessage()
es bastante útil, pues permite que un mensaje de cualquier chat al que
un bot dado tiene acceso sea reenviado a un usuario de Telegram
arbitrario. Para hacer esto, necesitamos que el token API y el chat_id
(extraídos de los mensajes previos enviados por el
bot o, en el caso del malware, del propio binario – junto con el
chat_id objetivo (que es nuestro propio user id) y finalmente el message
id que nos gustaría enviar.
Para nuestra suerte,
los message_id crecieron gradualmente de 0, de modo que un simple script
Python puede enviar todos los mensajes que se hayan enviado a un chat
de Telegram del que es parte
el bot actualmente.
Una pieza particular de
malware demostró ser un caso de estudio excelente de por qué esto es
peligroso, especialmente debido a que el creador de la amenaza no tiene
la separación necesaria
entre sus pruebas/desarrollo y los entornos operativos. Esto nos
permitió seguir sus primeros pasos hacia la creación y despliegue del
malware (ver el Cronograma de Actividades de abajo) hasta las campañas
actuales en la forma de comunicaciones hacia y desde
las víctimas y las máquinas de prueba.
En un despliegue de
seguridad operativa extraordinariamente pobre, una de esas máquinas de
prueba parece haber pertenecido al propio autor, la cual reveló su
dirección IP, así como información
personal sensible.
Un GoodSender no tan bueno
La pieza de malware en
cuestión es un malware .NET bastante simple que el operador denominó
‘GoodSender’ y que utiliza Telegram como C2. Opera de una forma muy
sencilla: una vez que el malware
se descarga, crea un nuevo usuario administrador y habilita un
escritorio remoto, y se asegura de que no sea bloqueado por el firewall.
El nombre de usuario del nuevo administrador es estático, pero la
contraseña se genera aleatoriamente.
Toda esta información
(el nombre de usuario, la contraseña y la dirección IP de la víctima) se
envía al operador a través de la red de Telegram, dándole al operador
acceso a la computadora
de la víctima a través de RDP.
Figura 1 – El código en GoodSender que construye la URL del Telegram Bot
Figura 2 - La pantalla de perfil del Telegram Bot
Cronograma de actividades, el creador de la amenaza y las víctimas
Inicialmente, el
creador utilizó el Telegram bot en cuestión para una pieza de malware
diferente que estaba desarrollando. Este primer malware se llamó
‘RTLBot’, y después de algunos meses
agregó varias funcionalidades adicionales antes de abandonar el
desarrollo a favor del malware ‘GoodSender’ descrito anteriormente.
Los detalles del
timeline a continuación y las capturas de pantalla incluidas se
recuperaron de las comunicaciones históricas de C2 del malware y
demuestran la capacidad de usar el método descrito
para recuperar los mensajes históricos de un canal de Telegram.
·
4 de febrero de 2018 – Surge el Telegram bot
·
18 de febrero de
2018 – El creador de la amenaza comienza a incorporar la funcionalidad
Telegram C2 en RTLBot y cambia el desarrollo a Telegram
·
20 de febrero de 2018 – Quita la infraestructura de su computadora personal para llevarla a AWS (Amazon Web Services)
·
1 de abril de 2018 – GoodSender se active y envía la información de su primera víctima
·
6 de junio de 2018 – Renta otro VPS para usarlo como un Telegram proxy
·
5 de julio de 2018 – GoodSender envía la última información de la víctima real hasta la fecha.
·
29 de septiembre 2018 – GoodSender envía la información de su última víctima a la fecha
El 23 de noviembre de
2018, el actor incorporó la misma clave de API del bot y el canal C2 en
una herramienta que parece recopilar imágenes de las cuentas de
Instagram. Dada la frecuente denominación
de elementos como prueba (por ejemplo, testbot en la Figura 3 a
continuación), parece probable que este canal se use para probar bots
antes de cambiar la clave API y el canal a los valores de "producción".
Figura
3: una captura de pantalla, aparentemente de la máquina de desarrollo
del autor, subido en el canal de Telegram por el bot
Figura 4 - Otra captura de pantalla
del entorno de desarrollo del autor que muestra el nuevo proxy observado
por primera vez el 6 de junio de 2018
Si bien no encontramos
una respuesta definitiva respecto a qué vector de ataque debió haber
usado el autor para dejar su malware, varias pistas indican que utilizó
la explotación EternalBlue
para descargar su malware a la máquina que no tenía parches.
·
Utiliza intensivamente el escáner de vulnerabilidades EternalBlue llamado ‘EternalBlues’
·
Tiene una lista de
IPs escaneadas de Estados Unidos y de Vietnam que eran vulnerables a
EternalBue, el cual que utilizó para infectar a algunas de sus víctimas
De acuerdo con nuestra telemetría, GoodSender ha infectado al menos a 120 víctimas, especialmente en Estados Unidos.
Mapa: Distribución de Víctimas
Figura 5: un mapa de rojo-calor/azul-frío de las víctimas de GoodSender basado en información de GeoIP
Figura 6 - Gráfico de barras de víctimas basado en información de GeoIP
Resumen
En nuestro caso de
estudio, esta técnica particular para reenviar mensajes se utilizó para
descubrir a un creador de amenazas, pero pudo haberse utilizado contra
aplicaciones legítimas que
emplean la Telegram Bot API.
Aunque Telegram se
promociona como una ‘aplicación de mensajería segura’ y utiliza un
esquema de encripción con controles más altos que TLS (por lo menos en
teoría), durante los chats normales,
los bots usan TLS tradicional para encriptar los datos en tránsito. Por
lo tanto, un atacante en la posición MitM con capacidad para
desencriptar TLS, puede tener acceso al bot token así como al chat_id
comprometiendo completamente no sólo la comunicación
actual sino también todas las comunicaciones previas.
Por ende, Forcepoint
Security Labs recomienda a todos los usuarios evitar los Telegram bots
así como los canales y grupos que utilicen bots.
Forcepoint ha informado a Telegram sobre esta vulnerabilidad.
Los clientes de
Forcepoint están protegidos contra el malware GoodSender de nuestro caso
de estudio en las siguientes etapas del ataque:
·
Etapa 5 (Dropper File) – Se evita que los archivos maliciosos se descarguen.
IOCs (GoodSender)
943eceb00ea52948c30deab1d5824ffcf2fd1cec
Forcepoint es una empresa mundial de seguridad cibernética centrada en los humanos. Transforma a las empresas digitales al adaptar la respuesta de seguridad a los riesgos planteados por los usuarios individuales y las máquinas. El sistema Human Point de Forcepoint brinda Protección Adaptada a los Riesgos para garantizar el uso confiable de datos y sistemas. Con sede en Austin, Texas, Forcepoint protege los puntos humanos en miles de clientes corporativos y gubernamentales de más de 150 países. www.forcepointblog.com
No hay comentarios:
Publicar un comentario