A equipe de pesquisa da ESET descobriu o primeiro caso conhecido de malware para Android que utiliza IA generativa para manipular a interface do usuário com base no contexto. Embora o aprendizado de máquina já tenha sido empregado para fins semelhantes, recentemente pesquisadores da Dr.Web identificaram o Android.Phantom, que utiliza modelos TensorFlow para analisar capturas de tela de anúncios e clicar automaticamente em elementos detectados, viabilizando fraude publicitária em larga escala. Esta é a primeira vez que observamos a IA generativa sendo aplicada dessa forma. Como os cibercriminosos dependem da solicitação a um modelo de IA, neste caso o Gemini, do Google, para orientar a manipulação maliciosa da interface do usuário, batizamos essa família de PromptSpy. Este é o segundo malware com uso de IA que descobrimos, após o PromptLock, identificado em agosto de 2025, o primeiro caso conhecido de ransomware orientado por IA.
Embora a IA generativa seja utilizada apenas em uma parte relativamente pequena do código do PromptSpy, responsável por garantir a persistência, seu impacto na adaptabilidade do malware é significativo. Especificamente, o Gemini é empregado para analisar a tela atual e fornecer ao PromptSpy instruções passo a passo para assegurar que o aplicativo malicioso permaneça fixado na lista de aplicativos recentes, evitando que seja facilmente removido ou encerrado pelo sistema. O modelo de IA e o prompt são predefinidos no código e não podem ser alterados. Como malwares para Android frequentemente dependem da navegação pela interface do usuário, o uso de IA generativa permite que os cibercriminosos se adaptem a praticamente qualquer dispositivo, layout ou versão do sistema operacional, ampliando consideravelmente o número potencial de vítimas.
O principal objetivo do PromptSpy é implantar um módulo VNC integrado, concedendo aos operadores acesso remoto ao dispositivo da vítima. Esse malware para Android também se aproveita do Serviço de Acessibilidade para impedir a desinstalação por meio de sobreposições invisíveis, capturar dados da tela de bloqueio e gravar vídeos. A comunicação com o servidor de comando e controle, C&C, ocorre por meio do protocolo VNC, com uso de criptografia AES.
Com base em indícios relacionados ao idioma e nos vetores de distribuição observados durante a análise, essa campanha aparenta ter motivação financeira e ter como principal alvo usuários da Argentina. Vale destacar que as amostras analisadas do PromptSpy indicam que ele foi desenvolvido em um ambiente de língua chinesa.
O PromptSpy é distribuído por meio de um site dedicado e nunca esteve disponível no Google Play. Como parceiro da App Defense Alliance, ainda assim compartilhamos nossas descobertas com o Google. Usuários de Android estão automaticamente protegidos contra versões conhecidas desse malware pelo Google Play Protect, que é ativado por padrão em dispositivos Android com o Google Play Services.
Pontos principais desta publicação:
O PromptSpy é o primeiro malware conhecido para Android a utilizar IA generativa em seu fluxo de execução, ainda que apenas para garantir persistência.
O Gemini, do Google, é empregado para interpretar elementos exibidos na tela do dispositivo comprometido e fornecer ao PromptSpy instruções dinâmicas sobre como executar um gesto específico para permanecer na lista de aplicativos recentes.
A principal finalidade do PromptSpy, que não depende de IA generativa, é implantar um módulo VNC no dispositivo da vítima, permitindo que os cibercriminosos visualizem a tela e executem ações remotamente.
O PromptSpy ainda não foi observado em nossa telemetria, o que sugere tratar-se possivelmente de uma prova de conceito. No entanto, a descoberta de um provável domínio de distribuição indica a existência de uma variante direcionada a usuários na Argentina.
O PromptSpy é capaz de capturar dados da tela de bloqueio, impedir a desinstalação, coletar informações do dispositivo, realizar capturas de tela, gravar a atividade da tela em vídeo, entre outras ações maliciosas.
Funcionalidade com IA do PromptSpy
Embora o PromptSpy use o Gemini em apenas um de seus recursos, ele ainda demonstra como a incorporação dessas ferramentas de IA pode tornar o malware mais dinâmico, oferecendo aos cibercriminosos maneiras de automatizar ações que normalmente seriam mais difíceis com scripts tradicionais.
Como já foi mencionado brevemente, o malware para Android geralmente depende de recursos de tela codificados, como toques, coordenadas ou seletores de interface do usuário - métodos que podem ser interrompidos com alterações de interface do usuário entre dispositivos, versões do sistema operacional ou skins do fabricante. O objetivo do PromptSpy é obter persistência permanecendo incorporado na lista de aplicativos recentes, executando o gesto "bloquear aplicativo em aplicativos recentes", que varia entre dispositivos e fabricantes. Isso dificulta a automatização com scripts fixos tradicionalmente usados por malware para Android.
Portanto, o PromptSpy adota uma abordagem completamente diferente: ele envia ao Gemini um prompt em linguagem natural junto com um dump XML da tela atual, dando à IA uma visão detalhada de cada elemento da interface do usuário: seu texto, tipo e posição exata na tela.
O Gemini processa essas informações e responde com instruções JSON que informam ao malware qual ação executar (por exemplo, um toque) e onde executá-la. O malware salva os prompts anteriores e as respostas do Gemini, permitindo que o Gemini entenda o contexto e coordene interações de várias etapas.
A Figura 1 mostra um trecho de código da inicialização da comunicação do PromptSpy com o Gemini, incluindo o primeiro prompt usado. Ao entregar a tomada de decisão ao Gemini, o malware pode reconhecer o elemento correto da interface do usuário e executar o gesto apropriado, mantendo o malware ativo mesmo que o usuário tente fechá-lo.
O PromptSpy continua solicitando o Gemini até que a IA confirme que o aplicativo foi bloqueado com êxito, mostrando um ciclo de feedback em que o malware aguarda a validação antes de prosseguir.
Visão geral do PromptSpy
Em fevereiro de 2026, descobrimos duas versões de uma família de malware para Android até então desconhecida. A primeira versão, que chamamos de VNCSpy, apareceu no VirusTotal em 13 de janeiro de 2026 e foi representada por três amostras carregadas de Hong Kong. Em 10 de fevereiro de 2026, quatro amostras de malware mais avançado baseado no VNCSpy foram carregadas no VirusTotal a partir da Argentina.
Nossa análise das amostras da Argentina revelou um malware de vários estágios com uma carga maliciosa que usa indevidamente o Gemini do Google. Com base nessas descobertas, nomeamos o primeiro estágio desse malware como PromptSpy dropper e sua carga útil como PromptSpy.
Deve-se observar que ainda não vimos nenhuma amostra do dropper PromptSpy ou de sua carga útil em nossa telemetria, o que pode indicar que ambos são apenas provas de conceito. No entanto, com base na existência de um possível domínio de distribuição descrito nos parágrafos a seguir, não podemos descartar a possibilidade de o dropper PromptSpy e o PromptSpy existirem em estado selvagem.
De acordo com os dados do VirusTotal, todas as quatro amostras do dropper PromptSpy foram distribuídas por meio do site mgardownload[.]com, que já estava off-line durante nossa análise.
Depois de instalar e iniciar o dropper PromptSpy, ele abriu uma página da Web hospedada em m-mgarg[.]com. Embora esse domínio também estivesse off-line, a versão em cache do Google revelou que ele provavelmente se fazia passar por um site do Chase Bank (legalmente, JPMorgan Chase Bank N.A.) (veja a Figura 2).
O malware usa uma marca semelhante, com o nome do aplicativo MorganArg e o ícone inspirado no banco Chase (veja a Figura 3). MorganArg, provavelmente uma abreviação de "Morgan Argentina", também aparece como o nome do site em cache, sugerindo um foco de segmentação regional.
Usamos o domínio m-mgarg[.]com como ponto de partida para um pivô no VirusTotal, o que nos levou a outra amostra de malware para Android (Android/Phishing.Agent.M). O VirusTotal mostrou o site falsificado em espanhol, com um botão Iniciar sesión (Login), indicando que a página provavelmente pretendia imitar o site de um banco (veja a Figura 4).
Esse trojan parece funcionar como um aplicativo complementar desenvolvido pelo mesmo grupo criminoso por trás do VNCSpy e do PromptSpy. Em segundo plano, o trojan entra em contato com seu servidor para solicitar um arquivo de configuração, que inclui um link para baixar outro APK, apresentado à vítima, em espanhol, como uma atualização. Durante nossa pesquisa, o servidor de configuração não estava mais acessível, portanto, o URL exato de download permanece desconhecido. No entanto, como ele usa o mesmo site exclusivo de falsificação de banco, o mesmo nome de aplicativo, ícone e, o mais importante, é assinado pelo mesmo certificado de desenvolvedor exclusivo que o dropper do PromptSpy, suspeitamos fortemente que esse aplicativo possa servir como o estágio inicial projetado para levar as vítimas a instalar o PromptSpy.
Tanto o VNCSpy quanto o PromptSpy incluem um componente VNC, dando aos seus operadores acesso remoto total aos dispositivos comprometidos quando as vítimas ativam os Serviços de Acessibilidade (veja a Figura 5). Isso permite que os operadores de malware vejam tudo o que acontece no dispositivo e executem toques, deslizes, gestos e entrada de texto como se estivessem fisicamente segurando o telefone.
Além dos recursos maliciosos já contidos no VNCSpy, o PromptSpy acrescenta a manipulação da interface do usuário assistida por IA, ajudando-o a manter a persistência ao manter o aplicativo malicioso fixado na lista de aplicativos recentes (um exemplo de como o bloqueio é indicado na lista pode ser visto na Figura 6).
Acreditamos que essa funcionalidade é usada antes de a sessão VNC ser estabelecida, para que o usuário ou o sistema não elimine a atividade do PromptSpy da lista de aplicativos recentes. Na Figura 7, você pode ver a comunicação de rede do PromptSpy com a Gemini AI.
Origens
Ao analisar o PromptSpy, notamos que ele contém strings de depuração escritas em chinês simplificado. Ele inclui até mesmo a manipulação de vários tipos de eventos de acessibilidade em chinês (veja a Figura 8), um método de depuração que foi desativado no código, mas não removido. O objetivo principal desse método é fornecer uma explicação localizada (em chinês) para vários eventos de acessibilidade que ocorrem em um dispositivo Android. Isso torna os logs de eventos mais compreensíveis para usuários ou desenvolvedores que falam chinês, em vez de apenas exibir códigos inteiros brutos.
Com confiança média, esses detalhes sugerem que o PromptSpy foi desenvolvido em um ambiente de língua chinesa.
Análise
Nossa análise técnica se concentra no dropper PromptSpy e em sua carga útil, o PromptSpy. O PromptSpy está incorporado(app-release.apk) dentro do diretório de ativos do dropper. Esse APK contém a funcionalidade maliciosa principal. Quando o dropper é iniciado, ele exibe um prompt solicitando que o usuário instale o que parece ser uma versão atualizada do aplicativo. Essa "atualização" é, na verdade, a carga útil do PromptSpy, que o usuário deve instalar manualmente (veja a Figura 9).
Uma vez instalado e iniciado, o PromptSpy solicita permissões do Serviço de Acessibilidade, dando ao malware a capacidade de ler o conteúdo da tela e executar cliques automatizados.
Em seguida, o PromptSpy exibe uma tela de engodo simples, no estilo de carregamento em primeiro plano (ver Figura 10). Enquanto isso, em segundo plano, passa a se comunicar com a Gemini AI para obter as instruções necessárias a fim de fixar seu processo na lista de aplicativos recentes. Essa é uma técnica de persistência relativamente simples, mas eficaz, que permite ao malware permanecer ativo e bloqueado em segundo plano, mesmo após a reinicialização do dispositivo.
Quando o usuário vê a atividade Loading, please wait (Carregando, aguarde ), o PromptSpy usa os Serviços de acessibilidade para abrir a tela Recent Apps (Aplicativos recentes) e coletar informações detalhadas da interface do usuário: texto visível, descrições de conteúdo, nomes de classes, nomes de pacotes e limites de tela. Ele serializa esse instantâneo dinâmico da IU como XML e o inclui em seu prompt para o Gemini. Em seguida, o Gemini retorna instruções passo a passo de toque sobre como realizar o gesto de "bloqueio de aplicativo".
Esse processo forma um loop contínuo:
- O PromptSpy envia o contexto atualizado da interface do usuário para o Gemini;
- O Gemini responde com novas ações;
- O PromptSpy as executa e retorna o estado da tela resultante.
O loop continua até que o Gemini confirme que o aplicativo foi bloqueado com sucesso nos aplicativos recentes. Aqui está um exemplo de estrutura:
- Prompt: You are an Android automation assistant. The user will give you the UI XML data of the current screen. You need to analyze the XML and output operation instructions in JSON format to achieve the user's goal.\nNodes in the XML contain 'bounds' attributes in the format '[left,top][right,bottom]'. You need to calculate the center coordinates to generate click instructions.\n\n*** Core Judgment Rules ***\n1. **Do NOT guess that the task is completed**. Only return 'COMPLETED' when you clearly see visual evidence of success in the current UI XML (e.g., text like 'Saved', 'Success' appears, switch status becomes checked=\"true\", or the screen has navigated to the target state).\n2. If you performed the last step but the current XML does not reflect the result yet, return 'IN_PROGRESS' with action 'NONE' (or wait) to check the new UI state in the next cycle.\n3. If unsure, remain 'IN_PROGRESS' and attempt to verify.\n4. If the current UI XML is empty, use 'RECENTS' to access the recent apps list.\n\nYou can use SWIPE to scroll\/slide to find targets:\nWhen action_type = \"SWIPE\", you must provide x1,y1,x2,y2,duration_ms.\ne.g., Scroll UP: slide from bottom to top (y2 < y1).\n\nPlease strictly follow this JSON output format, do not output any Markdown tags or extra text:\n{\n \"status\": \"IN_PROGRESS\" | \"COMPLETED\" | \"IMPOSSIBLE\",\n \"reasoning\": \"Detailed explanation: what specific text or state I saw on the screen to judge the task is completed or needs next <REDACTED>User Goal: Lock the current MorganArgs app in the recent apps list. Device info: <DEVICE MODEL> \n\nCurrent UI XML: <UI>
- Resposta do Gemini (instruções de ação): status\": \"IN_PROGRESS\",\n \"reasoning\": \"I have accessed the recent apps list. I can see 'MorganArgs' listed in the recent apps. The next step is to long-click on the 'MorganArgs' app card to bring up the options menu, which should include an option to lock it.\",\n \"action_type\": \"LONG_CLICK\",\n \"x\": 586,\n \"y\": 1126,\n \"x1\": -1,\n \"y1\": -1,\n \"x2\": -1,\n \"y2\": -1,\n \"duration_ms\": -1\n)
- Acompanhamento do malware com resultados de tela atualizados: The previous action has been executed. This is the new UI XML, please determine if the task is complete or provide the next instruction: <CURRENTLY VISIBLE ACTIVITY>
Todas as ações sugeridas pelo Gemini - toques, deslizes, navegação - são executadas por meio dos Serviços de Acessibilidade, permitindo que o malware interaja com o dispositivo sem a entrada do usuário.
O principal recurso malicioso do PromptSpy está em seu serviço VNC integrado. Isso permite que os criminosos visualizem remotamente a tela da vítima em tempo real e controlem totalmente o dispositivo.
O malware se comunica com seu servidor de comando e controle (C&C) codificado em 54.67.2[.]84 usando o protocolo VNC; as mensagens são criptografadas em AES usando uma chave codificada. Por meio desse canal de comunicação, o malware pode:
- Receber uma chave de API Gemini;
- Carregar a lista de aplicativos instalados;
- Interceptar o PIN ou a senha da tela de bloqueio;
- Capturar a tela de desbloqueio padrão como um vídeo de gravação;
- Informar se a tela está ligada ou desligada;
- Informar o aplicativo atual em primeiro plano;
- Gravar a tela e os gestos do usuário para aplicativos especificados pelo servidor;
- Fazer capturas de tela sob demanda.
O PromptSpy também utiliza indevidamente os Serviços de Acessibilidade como um mecanismo antirremoção. Quando o usuário tenta desinstalar a carga útil ou desativar os Serviços de Acessibilidade, o malware sobrepõe retângulos transparentes em áreas específicas da tela, especialmente sobre botões que contêm substratos como parar, finalizar, limpar e desinstalar. Essas sobreposições são invisíveis para o usuário, mas interceptam as interações, dificultando a remoção. Na Figura 11, executamos o PromptSpy com o sinalizador de depuração ativado (mantido lá pelos desenvolvedores), que definiria a cor do retângulo transparente, para visualizar onde eles são especificamente exibidos. No entanto, no dispositivo real, eles são totalmente invisíveis.
Como o PromptSpy bloqueia a desinstalação ao sobrepor elementos invisíveis na tela, a única maneira de a vítima removê-lo é reinicializar o dispositivo no Modo de Segurança, onde os aplicativos de terceiros são desativados e podem ser desinstalados normalmente.
Para entrar no modo de segurança, os usuários normalmente devem pressionar e manter pressionado o botão liga/desliga, manter pressionado o botão Liga/Desliga e confirmar o prompt Reiniciar no modo de segurança (embora o método exato possa variar de acordo com o dispositivo e o fabricante). Depois que o telefone for reiniciado no modo de segurança, o usuário poderá acessar Configurações → Aplicativos → MorganArg e desinstalá-lo sem interferência.
A nova geração de malware com IA
O PromptSpy evidencia que o malware para Android está entrando em uma nova fase de evolução, mais sofisticada e preocupante. Ao recorrer à IA generativa para interpretar os elementos exibidos na tela e decidir como interagir com eles, o código malicioso ganha a capacidade de se adaptar a praticamente qualquer dispositivo, independentemente do tamanho da tela ou do layout da interface.
Em vez de depender de comandos de toque previamente codificados, ele envia à IA um instantâneo da tela e recebe, em resposta, instruções detalhadas e passo a passo sobre como agir. Essa dinâmica permite que o malware implemente técnicas de persistência mais resilientes a mudanças na interface do usuário, reduzindo a necessidade de atualizações constantes no código.
De forma mais ampla, essa campanha demonstra como a IA generativa pode tornar o malware mais dinâmico, autônomo e capaz de tomar decisões em tempo real. O PromptSpy figura entre os primeiros exemplos conhecidos de malware para Android a incorporar IA generativa, evidenciando a rapidez com que cibercriminosos estão explorando essas ferramentas para ampliar o alcance e o impacto de suas operações.
Para qualquer dúvida sobre nossa pesquisa publicada no WeLiveSecurity, entre em contato conosco pelo e-mail threatintel@eset.com.
Indicadores de Comprometimento
Uma lista abrangente de indicadores de comprometimento (IoCs) e amostras pode ser encontrada em nosso repositório GitHub.
Arquivos
| SHA-1 | Filename | Detection | Description |
| 6BBC9AB132BA066F6367 |
net.ustexas. |
Android/Spy.VNCSpy.A | Android VNCSpy malware. |
| 375D7423E63C8F5F2CC8 |
nlll4.un7o6. |
Android/Spy.VNCSpy.A | Android VNCSpy malware. |
| 3978AC5CD14E357320E1 |
ppyzz.dpk0p. |
Android/Spy.VNCSpy.A | Android VNCSpy malware. |
| E60D12017D2DA579DF87 |
mgappc-1.apk | Android/Spy.PromptSpy.A | Android PromptSpy dropper. |
| 9B1723284E3117949879 |
mgappm-1.apk | Android/Spy.PromptSpy.A | Android PromptSpy dropper. |
| 076801BD9C6EB78FC033 |
mgappn-0.apk | Android/Spy.PromptSpy.A | Android PromptSpy dropper. |
| 8364730E9BB2CF3A4B01 |
mgappn-1.apk | Android/Spy.PromptSpy.A | Android PromptSpy dropper. |
| F8F4C5BC498BCCE907DC |
app-release. |
Android/Spy.PromptSpy.A | Android PromptSpy. |
| C14E9B062ED28115EDE0 |
mgapp.apk | Android/Phishing.Agent.M | Android phishing malware. |
Rede
| 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 |
Cloudflare, Inc. | 2026‑01‑13 | Distribution website. |
Técnicas do MITRE ATT&CK
Esta tabela foi criada usando a versão 18 da estrutura 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. |




