Investigadores del equipo de ESET Research descubrieron el primer caso conocido de malware para Android que abusa de la IA generativa para manipular la interfaz de usuario en función del contexto. Si bien el aprendizaje automático ya se ha utilizado con fines similares —hace poco, los investigadores de Dr.WEB descubrieron Android.Phantom, que utiliza modelos de aprendizaje automático con TensorFlow para analizar capturas de pantalla de anuncios y hacer clic automáticamente en elementos detectados para cometer fraude publicitario a gran escala—, esta es la primera vez que vemos IA generativa desplegada de esta manera. Debido a que los atacantes se apoyan en ingresarle instrucciones a un modelo de IA mediante prompts (en este caso, Gemini de Google) para guiar la manipulación maliciosa de la interfaz de usuario, hemos denominado a esta familia PromptSpy. Se trata del segundo malware basado en IA que descubrimos, después de PromptLock en agosto de 2025, que fue el primer caso conocido de ransomware basado en IA.

Aunque la IA generativa se utiliza solo en una parte relativamente menor del código de PromptSpy —la encargada de lograr persistencia—, aun así tiene un impacto significativo en la adaptabilidad del malware. En concreto, Gemini se utiliza para analizar la pantalla actual y proporcionar a PromptSpy instrucciones paso a paso sobre cómo garantizar que la aplicación maliciosa permanezca anclada en la lista de aplicaciones recientes, evitando así que el sistema la elimine fácilmente. El modelo de IA y el prompt están predefinidos en el código y no pueden modificarse. Dado que el malware para Android a menudo se basa en la navegación por la interfaz de usuario, aprovechar la IA generativa permite a los actores de la amenaza adaptarse más o menos a cualquier dispositivo, diseño o versión del sistema operativo, lo que puede ampliar enormemente el grupo de víctimas potenciales.

El objetivo principal de PromptSpy es desplegar un módulo VNC integrado, que proporciona a los operadores del malware acceso remoto al dispositivo de la víctima. Este malware para Android también abusa del Servicio de Accesibilidad para bloquear la desinstalación con superposiciones invisibles, captura datos de la pantalla de bloqueo y graba vídeo. Se comunica con su servidor de C&C a través del protocolo VNC, utilizando cifrado AES.

A partir de indicios localización por idioma y los vectores de distribución observados durante el análisis, esta campaña parece tener una motivación financiera y parece dirigirse principalmente a usuarios de Argentina. Curiosamente, las muestras analizadas de PromptSpy sugieren que fue desarrollado en un entorno de habla china.

PromptSpy se distribuye a través de un sitio web dedicado y nunca ha estado disponible en Google Play. No obstante, como socios de la App Defense Alliance, hemos compartido nuestros hallazgos con Google. Los usuarios de Android están protegidos automáticamente contra las versiones conocidas de este malware por Google Play Protect, que está activado por defecto en los dispositivos Android con Google Play Services.

Puntos clave de este artículo:
  • PromptSpy es el primer malware Android conocido que utiliza IA generativa en su flujo de ejecución, aunque solo sea para conseguir persistencia.
  • Gemini de Google se utiliza para interpretar elementos en pantalla en el dispositivo comprometido y proporcionar a PromptSpy instrucciones dinámicas sobre cómo ejecutar un gesto específico para permanecer en la lista de aplicaciones recientes.
  • El objetivo principal (no asistido por inteligencia artificial generativa) de PromptSpy es desplegar un módulo VNC en el dispositivo de la víctima, lo que permite a los atacantes ver la pantalla y realizar acciones de forma remota.
  • PromptSpy aún no ha sido observado en nuestra telemetría, lo que lo convierte en una posible prueba de concepto; sin embargo, el descubrimiento de un probable dominio de distribución sugiere la existencia de una variante dirigida a usuarios de Argentina.
  • PromptSpy puede capturar datos de la pantalla de bloqueo, bloquear la desinstalación, recopilar información del dispositivo, realizar capturas de pantalla, grabar la actividad de la pantalla en vídeo y mucho más.

Funcionalidad basada en IA de PromptSpy

Aunque PromptSpy sólo utiliza Gemini en una de sus funciones, sigue demostrando cómo la incorporación de estas herramientas de IA puede hacer que el malware sea más dinámico, proporcionando a los actores maliciosos formas de automatizar acciones que normalmente serían más difíciles con el scripting tradicional.

Como ya se ha mencionado brevemente, el malware para Android suele depender de funciones de pantalla hardcodeadas como toques, coordenadas o selectores de interfaz de usuario, métodos que pueden romperse con los cambios de interfaz de usuario en los distintos dispositivos, versiones del sistema operativo o capas de personalización de los fabricantes. PromptSpy busca lograr persistencia manteniéndose incrustado en la lista de apps recientes mediante la ejecución del gesto de “bloquear la app en recientes” (el proceso completo se describe en la sección Análisis), que varía entre dispositivos y fabricantes. Esto hace que sea difícil de automatizar con scripts fijos tradicionalmente utilizados por el malware para Android.

Por lo tanto, PromptSpy adopta un enfoque completamente diferente: envía a Gemini un mensaje en lenguaje natural junto con un volcado XML de la pantalla actual, proporcionando a la IA una visión detallada de cada elemento de la interfaz de usuario: su texto, tipo y posición exacta en la pantalla.

Gemini procesa esta información y responde con instrucciones en formato JSON que indican al malware qué acción debe realizar (por ejemplo, un toque) y dónde ejecutarla. El malware guarda tanto sus instrucciones anteriores como las respuestas de Gemini, lo que permite que Gemini entienda el contexto y coordine interacciones de varios pasos.

La Figura 1 muestra un fragmento de código del inicio de la comunicación de PromptSpy con Gemini, incluido el primer prompt utilizado. Al delegar la toma de decisiones a Gemini, el malware puede reconocer el elemento correcto de la interfaz de usuario y realizar el gesto apropiado, manteniéndose activo incluso si el usuario intenta cerrarlo.

Figure 1. Malware code snippet with hardcoded prompts
Figura 1. Fragmento de código de malware con avisos hardcodeados

 

PromptSpy continúa enviándole prompts a Gemini hasta que la IA confirma que la app se bloqueó correctamente, lo que evidencia un bucle de retroalimentación en el que el malware espera validación antes de continuar.

Resumen de PromptSpy

En febrero de 2026, descubrimos dos versiones de una familia de malware para Android desconocida hasta entonces. La primera versión, que denominamos VNCSpy, apareció en VirusTotal el 13 de enero de 2026 y estaba representada por tres muestras subidas desde Hong Kong. El 10 de febrero de 2026, cuatro muestras de malware más avanzado basado en VNCSpy fueron subidas a VirusTotal desde Argentina.

Nuestro análisis de las muestras de Argentina reveló un malware multietapa con una carga maliciosa (payload) que hace un uso indebido de Gemini de Google. Basándonos en estos hallazgos, llamamos a la primera etapa de este malware PromptSpy dropper, y a su carga útil PromptSpy.

Cabe señalar que aún no hemos visto ninguna muestra del dropper PromptSpy ni de su payload en nuestra telemetría, lo que podría indicar que ambos son sólo pruebas de concepto. Sin embargo, basándonos en la existencia de un posible dominio de distribución descrito en los párrafos siguientes, no podemos descartar la posibilidad de que el dropper PromptSpy y PromptSpy estén circulando como parte de campañas maliciosas.

Según los datos de VirusTotal, las cuatro muestras del dropper PromptSpy se distribuyeron a través del sitio web mgardownload[.]com; que ya estaba fuera de línea durante nuestro análisis.

Tras instalar y ejecutar el dropper PromptSpy, se abría una página web alojada en m-mgarg[.]com. Aunque este dominio también estaba fuera de línea, la versión en caché de Google reveló que probablemente se hacía pasar por un sitio que utilizaba el nombre de Chase Bank (legalmente, JPMorgan Chase Bank N.A.) (ver Figura 2).

Figure 2. Google’s cached data for the fake website
Figura 2. Datos almacenados en caché de Google para el sitio web falso

El malware utiliza una marca similar, con el nombre de la aplicación MorganArg y el icono inspirado en el banco Chase (véase la figura 3). MorganArg, probablemente una abreviatura de "Morgan Argentina", también aparece como el nombre del sitio web en caché, lo que sugiere un enfoque regional.

Figure 3. Dropper requests permission to install unknown apps to proceed with PromptSpy installation
Figura 3. El dropper solicita permiso para instalar aplicaciones desconocidas para proceder con la instalación de PromptSpy

Utilizamos el dominio m-mgarg[.]com para pivotar en VirusTotal, lo que nos condujo a otra muestra de malware para Android (Android/Phishing.Agent.M). VirusTotal mostraba el sitio web falsificado en español, con un botón Iniciar sesión, lo que indicaba que la página probablemente pretendía imitar el sitio web de un banco o utilizar su marca (ver Figura 4).

Figure 4. User interface of Android Phishing Agent M
Figura 4. Interfaz de usuario de Android/Phishing.com
Interfaz de usuario de Android/Phishing.Agent.M mostrando el mismo sitio web falso que el dropper PromptSpy (fuente: https://www.virustotal.com/gui/file/4ee3b09dd9a787ebbb02a637f8af192a7e91d4b7af1515d8e5c21e1233f0f1c7/)

Este troyano parece funcionar como una aplicación complementaria desarrollada por el mismo actor de amenazas que está detrás de VNCSpy y PromptSpy. En segundo plano, el troyano contacta con su servidor para solicitar un archivo de configuración, que incluye un enlace para descargar otro APK, presentado a la víctima, en español, como una actualización. Durante nuestra investigación, el servidor de configuración ya no estaba accesible, por lo que la URL exacta de descarga sigue siendo desconocida. Sin embargo, dado que utiliza el mismo sitio web que utiliza el nombre de una reconocida entidad financiera, el mismo nombre de aplicación, icono y, lo más importante, está firmado por el mismo certificado de desarrollador que el dropper de PromptSpy, sospechamos que esta aplicación puede servir como etapa inicial diseñada para llevar a las víctimas a instalar PromptSpy.

Tanto VNCSpy como PromptSpy incluyen un componente VNC, que proporciona a sus operadores acceso remoto completo a los dispositivos comprometidos una vez que las víctimas activan los Servicios de Accesibilidad (véase la Figura 5). Esto permite a los operadores del malware ver todo lo que ocurre en el dispositivo y realizar toques, deslizamientos, gestos y entradas de texto como si estuvieran sosteniendo físicamente el teléfono.

Figure 5. PromptSpy requests the victim to allow Accessibility services
Figura 5. PromptSpy solicita a la víctima que permita los servicios de accesibilidad

Además de las capacidades maliciosas ya contenidas en VNCSpy, PromptSpy añade la manipulación de la interfaz de usuario asistida por IA, lo que le ayuda a mantener la persistencia manteniendo la aplicación maliciosa anclada en la lista de aplicaciones recientes (en la Figura 6 se puede ver un ejemplo de cómo se indica el bloqueo en la lista).

Figure 6. Not locked (left) and locked (right) MorganArg app in the list of recent apps
Figura 6. Aplicación MorganArg no bloqueada (izquierda) y bloqueada (derecha) en la lista de aplicaciones recientes, con el icono del candado representando el bloqueo

Creemos que esta funcionalidad se utiliza antes de que se establezca la sesión VNC, para que el usuario o el sistema no eliminen la actividad de PromptSpy de la lista de aplicaciones recientes. En la Figura 7, puedes ver la comunicación de red de PromptSpy con Gemini AI.

Figure 7. Network communication of malware and Gemini (1)
Figura 7. Comunicación de red del malware y Gemini con la solicitud y respuesta de PromptSpy mostradas en rectángulos rojos

Orígenes

Al analizar PromptSpy, notamos que contiene cadenas de depuración escritas en chino simplificado. Incluso incluye el manejo de varios tipos de eventos de accesibilidad en chino (ver Figura 8), un método de depuración que había sido desactivado en el código pero no eliminado. El objetivo principal de este método es proporcionar una explicación localizada (en chino) de varios eventos de accesibilidad que se producen en un dispositivo Android. Esto hace que los registros de eventos sean más comprensibles para los usuarios o desarrolladores que hablan chino, en lugar de mostrar simplemente códigos enteros sin procesar.

Figure 8. Parsing and logging various event types
Figura 8. Análisis sintáctico y registro de varios tipos de eventos

Con una confianza media, estos detalles sugieren que PromptSpy fue desarrollado en un entorno de habla china.

Análisis

Nuestro análisis técnico se centra en el dropper PromptSpy y su payload, PromptSpy. PromptSpy está incrustado(app-release.apk) dentro del directorio asset del dropper. Este APK contiene el núcleo de la funcionalidad maliciosa. Cuando se ejecuta el dropper, aparece un mensaje instando al usuario a instalar lo que parece ser una versión actualizada de la aplicación. Esta "actualización" es en realidad la carga útil de PromptSpy, que el usuario debe instalar manualmente (ver Figura 9).

Figure 9. Malware’s initial screen that requests to install PromptSpy payload
Figura 9. Pantalla inicial del malware que solicita instalar la carga útil de PromptSpy

Una vez instalado e iniciado, PromptSpy solicita permisos del Servicio de Accesibilidad, lo que le da al malware la capacidad de leer el contenido en pantalla y realizar clics automáticos.

A continuación, PromptSpy muestra una simple pantalla señuelo de carga en primer plano (véase la Figura 10). Mientras tanto, en segundo plano, comienza a comunicarse con Gemini AI para obtener las instrucciones necesarias para bloquear su proceso en la lista de aplicaciones recientes, una sencilla técnica de persistencia que permite a PromptSpy permanecer activo y bloqueado incluso después de reiniciar el dispositivo.

Figure 10. Overlay decoy activity
Figura 10. Actividad señuelo superpuesta

Cuando el usuario ve la actividad Cargando, por favor espere, PromptSpy utiliza los Servicios de Accesibilidad para abrir la pantalla de Aplicaciones Recientes y recolectar información detallada de la UI: texto visible, descripciones de contenido, nombres de clases, nombres de paquetes y límites de pantalla. Serializa esta instantánea dinámica de la interfaz de usuario como XML y la incluye en su solicitud a Gemini. Gemini devuelve entonces instrucciones paso a paso sobre cómo realizar el gesto de "bloqueo de la aplicación".

Este proceso forma un bucle continuo:

  • PromptSpy envía un contexto de interfaz de usuario actualizado a Gemini
  • Gemini responde con nuevas acciones
  • PromptSpy las ejecuta y devuelve el estado resultante de la pantalla

El bucle continúa hasta que Gemini confirma que la aplicación se ha bloqueado correctamente en aplicaciones recientes. He aquí un ejemplo de estructura:

  • Prompt: Eres un asistente de automatización de Android. El usuario te dará los datos XML de la interfaz de usuario de la pantalla actual. Usted necesita analizar el XML y las instrucciones de operación de salida en formato JSON para lograr el objetivo del usuario.\nLos nodos en el XML contienen atributos 'bounds' en el formato '[izquierda,arriba][derecha,abajo]'. Es necesario calcular las coordenadas centrales para generar las instrucciones de clic. **NO suponga que la tarea está completada. Sólo devuelva 'COMPLETADO' cuando vea claramente una evidencia visual de éxito en el XML de la interfaz de usuario actual (por ejemplo, texto como 'Guardado', aparece 'Éxito', el estado del interruptor pasa a ser checked=\"true\", o la pantalla ha navegado al estado objetivo).\n2. Si ha realizado el último paso pero el XML actual aún no refleja el resultado, devuelva 'IN_PROGRESS' con la acción 'NONE' (o espere) para comprobar el nuevo estado de la interfaz de usuario en el siguiente ciclo.\n3. Si no está seguro, permanezca 'IN_PROGRESS' e intente verificar.\n4. Si el XML de la interfaz de usuario actual está vacío, utilice 'RECENTS' para acceder a la lista de aplicaciones recientes.\n\nPuede utilizar SWIPE para desplazarse\deslizarse para encontrar objetivos:\nCuando action_type = \"SWIPE\", debe proporcionar x1,y1,x2,y2,duration_ms.\npor ejemplo Scroll UP: deslizar de abajo hacia arriba (y2 < y1).\n\nPor favor, siga estrictamente este formato de salida JSON, no de salida cualquier etiqueta Markdown o texto extra:\n{n "status\": \EN CURSO | COMPLETADO | Imposible", "razonamiento": \"Explicación detallada: qué texto o estado específico vi en la pantalla para juzgar que la tarea está completada o necesita siguiente Objetivo del usuario: Bloquear la aplicación MorganArgs actual en la lista de aplicaciones recientes. Device info: <DEVICE MODEL> \n\nUI XML actual:
  • Respuesta de Gemini (instrucciones de acción): status\": \"IN_PROGRESS\",\n \"reasoning\": \"He accedido a la lista de aplicaciones recientes. Puedo ver 'MorganArgs' en la lista de aplicaciones recientes. El siguiente paso es hacer clic largo en la tarjeta de aplicación 'MorganArgs' para que aparezca el menú de opciones, que debe incluir una opción para bloquearlo: \"LONG_CLICK", "x": 586,\n \n "y\n": 1126,n "x1": -1,00 "Y1": -1,00 "x2\N": -1,00 "y2": -1,00 "duración_ms": -1\n
  • Seguimiento del malware con resultados de pantalla actualizados: La acción anterior se ha ejecutado. Este es el nuevo XML de la interfaz de usuario, por favor determine si la tarea está completa o proporcione la siguiente instrucción: <ACTIVIDAD VISIBLE ACTUALMENTE>

Todas las acciones sugeridas por Gemini -toques, deslizamientos, navegación- se ejecutan a través de los Servicios de Accesibilidad, lo que permite al malware interactuar con el dispositivo sin la intervención del usuario.

La principal capacidad maliciosa de PromptSpy reside en su servicio VNC integrado. Esto permite a los atacantes ver remotamente la pantalla de la víctima en tiempo real y controlar completamente el dispositivo.

El malware se comunica con su servidor de mando y control (C&C) codificado en 54.67.2[.]84 mediante el protocolo VNC; los mensajes están cifrados con AES utilizando una clave codificada. A través de este canal de comunicación, el malware puede:

  • recibir una clave API Gemini,
  • cargar la lista de aplicaciones instaladas,
  • interceptar el PIN o la contraseña de la pantalla de bloqueo,
  • capturar el patrón de desbloqueo de la pantalla como un vídeo de grabación,
  • informar si la pantalla está encendida o apagada,
  • informar de la aplicación actual en primer plano,
  • grabar la pantalla y los gestos del usuario para las aplicaciones especificadas por el servidor, y
  • realizar capturas de pantalla bajo demanda.

PromptSpy también utiliza indebidamente los Servicios de Accesibilidad como mecanismo antidesinstalación. Cuando el usuario intenta desinstalar la carga útil o desactivar los servicios de accesibilidad, el malware superpone rectángulos transparentes en zonas específicas de la pantalla, especialmente sobre botones que contienen subcadenas como detenerfinalizarborrar y desinstalar. Estas superposiciones son invisibles para el usuario, pero interceptan las interacciones, lo que dificulta su eliminación. En la Figura 11, hemos ejecutado PromptSpy con la bandera de depuración habilitada (mantenida allí por los desarrolladores) que establecería el color del rectángulo transparente, para visualizar dónde se muestran específicamente. Sin embargo, en el dispositivo real, son totalmente invisibles.

Figure 11. Invisible rectangles (displayed in color for clarity) covering specific buttons (1)
Figura 11. Rectángulos invisibles (mostrados en color para mayor claridad) cubriendo botones específicos

Debido a que PromptSpy bloquea la desinstalación mediante la superposición de elementos invisibles en la pantalla, la única manera de que una víctima lo elimine es reiniciar el dispositivo en Modo Seguro, donde las aplicaciones de terceros están deshabilitadas y se pueden desinstalar normalmente.

Para entrar en el modo seguro, los usuarios deben mantener pulsado el botón de encendido, pulsar prolongadamente el botón de apagado y confirmar el mensaje de reinicio en modo seguro (aunque el método exacto puede variar según el dispositivo y el fabricante). Una vez que el teléfono se reinicie en Modo Seguro, el usuario puede ir a Ajustes → Apps → MorganArg y desinstalarlo sin interferencias.

Conclusión

PromptSpy demuestra que el malware para Android está empezando a evolucionar de forma siniestra. Al basarse en IA generativa para interpretar los elementos en pantalla y decidir cómo interactuar con ellos, el malware puede adaptarse a prácticamente cualquier dispositivo, tamaño de pantalla o diseño de IU que encuentre. En lugar de pulsaciones codificadas, simplemente entrega a la IA una instantánea de la pantalla y recibe a cambio instrucciones precisas de interacción paso a paso, lo que le ayuda a conseguir una técnica de persistencia resistente a los cambios de la interfaz de usuario.

En términos más generales, esta campaña muestra cómo la IA generativa puede hacer que el malware sea mucho más dinámico y capaz de tomar decisiones en tiempo real. PromptSpy es un ejemplo temprano de malware para Android impulsado por IA generativa, e ilustra lo rápido que los atacantes están empezando a utilizar las herramientas de IA para mejorar el impacto.

Para cualquier consulta sobre nuestra investigación publicada en WeLiveSecurity, por favor contáctenos en threatintel@eset.com.
ESET Research ofrece informes privados de inteligencia APT y fuentes de datos. Para cualquier consulta sobre este servicio, visite la página de ESET Threat Intelligence.

IoCs

Puede encontrar una lista completa de indicadores de compromiso (IoCs) y muestras en nuestro repositorio GitHub.

Archivos

SHA-1 Filename Detection Description
6BBC9AB132BA066F63676E05DA13D108598BC29B net.ustexas.myavlive.apk Android/Spy.VNCSpy.A Android VNCSpy malware.
375D7423E63C8F5F2CC814E8CFE697BA25168AFA nlll4.un7o6.q38l5.apk Android/Spy.VNCSpy.A Android VNCSpy malware.
3978AC5CD14E357320E127D6C87F10CB70A1DCC2 ppyzz.dpk0p.ln441.apk Android/Spy.VNCSpy.A Android VNCSpy malware.
E60D12017D2DA579DF87368F5596A0244621AE86 mgappc-1.apk Android/Spy.PromptSpy.A Android PromptSpy dropper.
9B1723284E311794987997CB7E8814EB6014713F mgappm-1.apk Android/Spy.PromptSpy.A Android PromptSpy dropper.
076801BD9C6EB78FC0331A4C7A22C73199CC3824 mgappn-0.apk Android/Spy.PromptSpy.A Android PromptSpy dropper.
8364730E9BB2CF3A4B016DE1B34F38341C0EE2FA mgappn-1.apk Android/Spy.PromptSpy.A Android PromptSpy dropper.
F8F4C5BC498BCCE907DC975DD88BE8D594629909 app-release.apk Android/Spy.PromptSpy.A Android PromptSpy.
C14E9B062ED28115EDE096788F62B47A6ED841AC mgapp.apk Android/Phishing.Agent.M Android phishing malware.

Red

IP Domain Hosting provider First seen Details
52.222.205[.]45 m-mgarg[.]com Amazon.com, Inc. 2026‑01‑12 Phishing website.
54.67.2[.]84 N/A Amazon.com, Inc. N/A C&C server.
104.21.91[.]170 mgardownload[.]com Cloudflare, Inc. 2026‑01‑13 Distribution website.

Técnicas ATT&CK de MITRE

Esta tabla se ha elaborado utilizando la versión 18 del marco MITRE ATT&CK.

Tactic ID Name Description
Persistence T1398 Boot or Logon Initialization Scripts PromptSpy receives the BOOT_COMPLETED broadcast intent to activate at device startup.
T1541 Foreground Persistence PromptSpy uses foreground persistence to keep a service running.
Defense Evasion T1516 Input Injection PromptSpy abuses the accessibility service to prevent its removal.
Credential Access T1417.002 Malicious Third Party Keyboard App: GUI Input Capture PromptSpy can intercept Android lockscreen PIN and password.
Discovery T1426 System Information Discovery PromptSpy obtains device name, model, and OS version.
Collection T1418 Software Discovery PromptSpy can obtain a list of installed applications.
T1513 Screen Capture PromptSpy can record the screen.
Command and Control T1663 Remote Access Software PromptSpy can use VNC to remotely control a compromised device.
T1521.001 Standard Cryptographic Protocol: Symmetric Cryptography PromptSpy encrypts C&C communication using AES.
Exfiltration T1646 Exfiltration Over C2 Channel PromptSpy can exfiltrate collected data to the C&C server.