Desde el laboratorio de malware, como ya se imaginará más de uno, le tenemos cierto cariño a Trickbot. Es curioso ver cómo avanzan paso a paso en cuestión de semanas. Hace relativamente poco estaban añadiendo objetivos nuevos en su versión 19, y en pocos días, avanzan hasta la versión 24, con nuevas mejoras en cuestión de ofuscación de información y de ocultación en el sistema.
En esta entrada vamos a repasar los detalles interesantes que hemos visto modificados en esta última versión.
Lo primero, para constatar cual es la versión del binario que nos ha caído entre manos, extraemos de las strings del proceso la versión de la configuración que carga de sus recursos.
Como podemos observar, se trata de la versión 1000024, y el código de campaña es mac1.
Como siempre, en primer lugar carga un loader que comprueba la arquitectura del SO y de sus recursos extrae, descifra y ejecuta el bot de 32 bits (1:0) o un segundo loader (C64:1033) que inyecta el bot de 64 bits (2:0) en un proceso “svchost.exe”.
El primer cambio interesante es que se ha mudado de ubicación. Hasta ahora, se instalaba junto con sus ficheros de configuración y la carpeta de sus módulos en %APPDATA%. Las últimas versiones que hemos visto crean una carpeta en esta misma ruta, llamada “winapp”, en la que se instala. A priori no parece gran cosa, pero encontrar un ejecutable en %APPDATA% es bastante sospechoso. Sin embargo, no es raro encontrar una lista larga de carpetas en esta ruta con nombres parecidos, y sin saber lo que se busca, puede pasar desapercibido fácilmente.
En cuanto a su lógica interna, antes era relativamente fácil adivinar su comportamiento en cada zona, gracias a que tiene un funcionamiento muy característico, con un switch para llamar a cada uno de sus comandos. Antes de las llamadas a esa función siempre se suele ver un “push [numero]” que sirve de argumento para escoger el comando que quiere ejecutar en ese momento.
En la siguiente captura se puede apreciar una llamada como la que mencionamos y que ahora es un caso muy raro, ya que en la mayoría de casos lo han cambiado por un número calculado editando registros o lo han encadenado con una función intermedia, lo que complica un poco seguir la lógica de la aplicación.
Un paso bastante relevante de esta nueva versión es que la lista de comandos ya no se puede encontrar en los strings del ejecutable, ni la lista de dominios de obtención de la IP pública del host tan fácilmente. Así como anteriormente se podían encontrar en claro, ahora todo está en base64 y cifrado por debajo con un algoritmo aparentemente propio de ellos:
Utilizando saltos a las referencias de estas cadenas se puede observar cómo, justo después de cargarlas, hace una llamada siempre a la misma función. De hecho, esta función es llamada por una larga lista de offsets dentro de la aplicación, lo que generalmente indica que se trata de la función de descifrado:
Ahora no basta con hacer un strings de fichero, sino que hay que replicar el algoritmo de esa función o poner breakpoints justo al final de esa función, para ir viendo cadena a cadena como va descifrando toda la información que necesita.
Por último, Hispasec hace unos días detectó que en una de las últimas versiones, el listado de dominios target de Trickbot se había ampliado con entidades bancarias españolas, lo que indica que ya estamos entre sus objetivos y es probable que veamos campañas de infección de este malware dirigidas a España estos días.
Por el momento, respecto a nuestro análisis anterior, esto es todo lo destacable en cuanto a cambios. No obstante, seguro que si se le dedica más tiempo, guarda más sorpresas que probablemente os traigamos en futuras revisiones de nuestro bicho favorito ;)