En la última edición de ekoparty 2018, asistimos a la conferencia titulada “Dynamic Callbacks for Persistence”, donde @xtr4nge mostró una innovadora implementación de llamadas dinámicas (dynamic callbacks) para restablecer la comunicación entre equipos comprometidos y las infraestructuras de comando y control (C&C).

Se trata de mecanismos post-explotación para lograr la persistencia en infraestructuras donde los equipos han sido infectados previamente, de manera que pueda mantenerse una conexión el mayor tiempo posible.

La presentación se planteó desde un escenario en el que participan los equipos de seguridad ofensivos (red team) y defensivos (blue team) de una organización, en el cual los SOC emplean mecanismos de detección y bloqueo de conexiones (generadas por las infraestructuras C&C), lo que reduce significativamente la persistencia en equipos comprometidos, y dificulta las actividades de los equipos de seguridad ofensiva.

Además, una vez que los sistemas son infectados, la distribución de las cargas efectivas (payload) aumenta la probabilidad de detección, lo que significaría la pérdida de conexiones previamente establecidas. Por ello, desde la perspectiva ofensiva de red team, resulta necesario aplicar nuevas formas para restablecer comunicaciones con los sistemas que han sido comprometidos.

Dynamic Callbacks for Persistence

Debido a que el malware generalmente emplea llamadas incrustadas en el código fuente para ejecutar instrucciones maliciosas en los sistemas infectados, los métodos de persistencia podrían fallar. Por esta razón, xtr4nge plantea el uso de llamadas dinámicas mediante la generación de conexiones periódicas, para restablecer la comunicación con infraestructura C2 en busca de que éstas no puedan ser detectadas y tampoco bloqueadas.

En este caso, lejos de que la carga efectiva realice alguna acción maliciosa en el equipo comprometido, el payload únicamente se encarga de realizar peticiones a distintos servicios de Internet para encontrar una cadena de caracteres con un formato específico (hash), de esta manera evita ser detectado, ya que realiza conexiones con baja frecuencia y hacia servicios comúnmente utilizados, por lo que no suelen ser bloqueados en las empresas.

La respuesta recibida puede ser decodificada, descifrada o analizada (en función de la implementación de las llamadas dinámicas), para posteriormente parchear la carga efectiva y conectarse con un servidor que permite el direccionamiento hacia el C&C.

La idea puede implementarse de distintas formas, por lo que este trabajo pretende ser el punto de partida hacia el uso de las llamadas dinámicas para la persistencia. Para el ejercicio práctico de la presentación, la cadena tiene una estructura del siguiente estilo: x_^^_hash|servidor.dominio|hash_^^_x, que permite la interacción entre el equipo comprometido que realiza una solicitud a través de la carga efectiva hacia un dominio, éste a su vez, realiza el direccionamiento hacia el equipo C&C.

Los hashes pueden estar almacenados básicamente en cualquier servicio de Internet que permita al usuario almacenar información, como buscadores, archivos en repositorios, comentarios en publicaciones o videos, etc.

En el formato de la cadena propuesta, el primer hash hace referencia a la dirección del C&C (que en realidad es un servidor de redirección, para mantener oculto el C&C), mientras que el segundo hash almacena la información de la próxima búsqueda a realizar para renovar la conexión. Esta técnica permite que la carga útil puede renovarse a sí misma después de haber sido bloqueada, y reestablecer la comunicación mediante datos paramétricos dinámicos, por lo que el modelo propone conexiones mediante combinaciones aleatorias.

Además del modelo propuesto, xtr4nge ha desarrollado una aplicación que se suma al conjunto de herramientas de la familia Fruity. En este caso, la aplicación es FruityDC (Dynamic Calls), misma que se encuentra disponible en GitHub e implementa el método propuesto de llamadas dinámicas para la persistencia.

Los siguientes videos muestran la implementación de los métodos dynamic callbacks, abusando de correos electrónicos para activar la carga útil, para posteriormente establecer la comunicación con el sistema C&C.





Para los equipos de seguridad defensiva resulta difícil detectar la llamada si la dirección de comando y control es obtenida dinámicamente, sumado a que las comunicaciones se mezclan con tráfico legítimo. Además, las solicitudes pueden ser modificadas dinámicamente utilizando diferentes métodos, distintos sitios Web y sus funcionalidades, así como diversas direcciones de equipos C&C.

Fundamentos para la persistencia mediante llamadas dinámicas

Aunado a las características descritas anteriormente, este método también considera la combinación de solicitudes dinámicas y la persistencia para cada sistema comprometido, por lo que, si un equipo es detectado, los indicadores de compromiso no contribuyen a detectar otros sistemas infectados, junto con la característica de que las comunicaciones no son manipuladas para controlar los equipos infectados, sino únicamente son utilizadas para restablecer la comunicación con infraestructuras C&C.

Además, debido a que la carga efectiva utiliza peticiones a distintos servicios de Internet comúnmente utilizados, los encargados de la seguridad en las organizaciones difícilmente podrían bloquear sitios populares o protocolos necesarios para las actividades cotidianas en la organización, sumado a la dificultad de diferenciar el tráfico legítimo del que es utilizado para realizar las llamadas dinámicas.

En conclusión, las llamadas dinámicas facilitan una comunicación C&C dinámica y el establecimiento de persistencia robusta, mientras que las cargas útiles pueden parchearse a sí mismas y cambiar el comportamiento cuando sea requerido usando solicitudes dinámicas. Además, la detección y el bloqueo se dificulta, ya que los métodos para obtener una nueva solicitud son dinámicos.

Por lo tanto, las maniobras red team (y por supuesto, también de actores maliciosos), puede aprovecharse de estas técnicas para lograr la persistencia y la comunicación con los equipos infectados, el mayor tiempo posible. Sin duda, se trata de técnicas ofensivas que los equipos de seguridad defensiva deben considerar, en busca de proteger los activos en las empresas.