martes, 10 de octubre de 2017

Troyano bancario Trickbot - webinjects y bancos españoles.

Trickbot es un troyano bancario que se estima que lleva funcionando desde el 2016 y que afecta a una gran cantidad de bancos y de entre ellos a muchos españoles.

Se han escrito varios artículos sobre su funcionamiento, persistencia, tipos de inyecciones, etc. De modo que sólo quiero tratar el tema de los webinjects o inyecciones dimámicas (dinj).

Una vez Trickbot se ha instalado en el sistema y demás, inspecciona la lista de procesos en busca de los tres principales navegadores: firefox, chrome y iexplore. Si encuentra uno de ellos, reserva espacio de memoria dentro de cada uno de los procesos e inyecta una dll que es la encargada de realizar el hooking para inspeccionar y alterar el tráfico entre nuestro navegador y el servidor web del banco.

De entre la lista de bancos afectados, están los siguientes españoles:

caixaontinyent.es
cajamar.es
bancopopular.es
caja-ingenieros.es
caixabank.es
lacaixa.es
finconsum.es
cetelem.es
liberbankbancaprivada.es
openbank.es
bmn.es
cajasur.es
kutxabank.es
y más...

Voy a realizar una prueba con mi banco, ya que me preocupa especialmente porque es dónde tengo mi dinero.

Al conectar a cajamar.es con el navegador Internet Explorer versión 11, se puede apreciar que Trickbot ha instalado un hook en la función HttpSendRequestW dentro de la librería WININET.DLL realizando un salto incondicional JMP hacia la dirección 0x0A1EBFA0:

Hook instalado en la función HttpSendRequestW
Para que se pueda apreciar la diferencia entre la función hookeada y la que no lo está, hice la misma prueba pero sin Trickbot instalado.

Sin hook instalado
Una vez da el salto al hook, Trickbot realiza las comprobaciones para determinar si el sitio al que se ha conectado el usuario está entre la lista de las inyecciones dinámicas o "dinj". En ese caso, realiza una petición con el servidor malicioso y devuelve, entre otra información, la inyección a realizar en el sitio web:

Inicio de la inyección en cajamar.es

Función Javascript que roba credenciales de acceso a la banca electrónica de cajamar.es

Para que la inyección pueda realizarse sobre el sitio legítimo, Trickbot tiene que hookear la función InternetReadFile dentro de la librería WININET.DLL que es la encargada de leer la respuesta del servidor web bancario y alterarla para poder incluir la inyección correspondiente:

Hook instalado encargado de devolver a petición al navegador con la inyección
Una mitigación que se puede implementar desde el lado del servidor web del banco, es leer la cookie "tknz_referrer" para determinar si el usuario/cliente del banco está infectado y actuar en consecuencia.

No hay comentarios:

Publicar un comentario