Hirudo sustituye apps de banca en Android y burla controles
Un nuevo troyano bancario para Android llamado Hirudo elimina las aplicaciones bancarias legítimas de los móviles infectados e instala copias manipuladas que desactivan los propios controles de seguridad de esas apps, según la empresa de seguridad móvil ThreatFabric.
Los investigadores encontraron versiones maliciosas de ocho aplicaciones bancarias. Cada una lleva un motor de hooking que neutraliza las comprobaciones de firma de la app, de Accesibilidad y de Play Integrity. Lo consigue devolviendo información de certificados sustituida o listas vacías cuando la app pregunta qué se está ejecutando en el dispositivo. Play Integrity es el servicio de Google que permite a las apps confirmar que se ejecutan sin modificar en un dispositivo Android auténtico.
Se ha visto a Hirudo suplantar al menos a siete bancos indonesios. También ataca a entidades financieras de China, India, México, Marruecos y Tailandia.
Distribuido a través de apps que funcionan
El malware suele llegar dentro de aplicaciones que parecen legítimas y que de verdad hacen lo que prometen. ThreatFabric cita una app de compras (Shopora), una app de contenido para adultos (1V1 X) y apps de microdramas (ZoyaTV, KoiShort).
Estas apps funcionan como cargadores. Muestran al usuario un aviso falso de "actualización" que da paso a solicitudes de permisos, entre ellas el acceso a los servicios de Accesibilidad. Estas funciones de Android están pensadas para ayudar a usuarios con discapacidad, pero el malware abusa de ellas a menudo para leer la pantalla y pulsar botones en nombre del usuario.
Tras instalarse, Hirudo lanza el desinstalador de la app bancaria auténtica, descarga una copia parcheada y utiliza el permiso de Accesibilidad para instalarla. ThreatFabric señala que este paso es arriesgado para los atacantes, porque la víctima tiene dos oportunidades de interrumpir el proceso.
Las defensas del banco, puestas del revés
La app parcheada conserva casi todo el código original. La diferencia es un motor de hooking construido sobre los frameworks de código abierto YAHFA y Dobby. Cuando se inicia la app, el motor:
- devuelve el certificado de firma auténtico cada vez que la app lo comprueba
- oculta cualquier servicio de Accesibilidad que esté activado
- elimina la protección contra capturas de pantalla, de modo que la pantalla puede verse y grabarse a distancia
- altera los certificados de atestación de claves y hace pasar las peticiones de Play Integrity por un servidor controlado por los operadores
"Con el motor ejecutándose dentro del propio proceso de la app bancaria, las defensas de la app se vuelven contra ella", afirmaron los investigadores.
Estos trucos tienen sus límites. El keybox de atestación que incluye el malware ya se ha filtrado públicamente, y Google tiene dos de sus certificados catalogados como comprometidos. Por eso, las comprobaciones de revocación realizadas en el servidor pueden detectar las atestaciones falsificadas.
Qué roba
Una vez en marcha, Hirudo puede capturar contraseñas bancarias, PIN de pago, credenciales de desbloqueo del dispositivo y mensajes SMS. Los operadores pueden retransmitir la pantalla en directo, tomar el control del móvil en tiempo real, hacer capturas de pantalla, grabar audio y usar las dos cámaras.
El malware también muestra páginas de pago falsas que piden el PIN de pago. Después de que la víctima lo introduce, aparece una pantalla inventada de "pago realizado con éxito" mientras los datos se roban en segundo plano.
ThreatFabric encontró un panel de backend sin proteger que contenía miles de entradas de credenciales de aplicaciones, junto con datos del dispositivo, de la pantalla de bloqueo y del perfil financiero. Todavía se desconoce el número de víctimas.
Los investigadores describen Hirudo como "una escalada deliberada en la forma en que los troyanos bancarios de Android abordan las aplicaciones reforzadas". Los atacantes están dejando de intentar engañar a las comprobaciones de integridad del dispositivo y ahora van a por las protecciones integradas en las propias apps bancarias.
ThreatFabric aconseja a los bancos validar la integridad y la atestación en el servidor, vincular estas comprobaciones a las sesiones y a las acciones protegidas, y mantener los controles de comportamiento y de riesgo de las transacciones. Los usuarios deberían instalar las actualizaciones, evitar archivos APK de tiendas no oficiales y pasar de vez en cuando un análisis con Play Protect.
Nuestra opinión
Hirudo demuestra los límites de la protección en el lado del cliente. Si un atacante controla el proceso de la app, se puede hacer mentir a cualquier comprobación que se ejecute dentro de él. Esto indica que los bancos que dependen sobre todo de la detección dentro de la app deberían trasladar más decisiones de confianza al servidor, que es justo lo que recomienda ThreatFabric.
La vía de infección también encaja en una tendencia más amplia de las amenazas móviles. El malware llega a través de apps instaladas por fuera de las tiendas oficiales o viene preinstalado en móviles Android baratos, y ambas vías se saltan los filtros de Google Play. La higiene básica, como aplicar las últimas actualizaciones de seguridad de Android, sigue siendo importante, pero no detendrá a un usuario que concede acceso de Accesibilidad a una actualización falsa.
Habrá que estar atentos a si los operadores sustituyen el keybox filtrado y a si Hirudo se extiende más allá de su foco actual en Indonesia.
