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 |
Sin hook instalado |
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 |