Rilide malware: como as extensões de navegadores estão mudando os ataques cibernéticos

Uma tela de computador exibindo um sinal de alerta de triângulo vermelho de malware

Introdução ao Rilide

Rilide, também conhecido como LumaC2 e CookieGenesis, é um malware sofisticado que tem como alvo navegadores baseados em Chromium para sequestrar a atividade do usuário e roubar dados confidenciais. Descoberto em 2023, o Rilide opera usando extensões de navegador para realizar seus ataques. O Rilide abusa do seu componente de extensão de navegador para injetar scripts maliciosos em páginas da web. Além de suas habilidades de exfiltração de dados, também possui recursos avançados de roubo de criptomoedas, com manipulação de autenticação de dois fatores (2FA) para carteiras e clientes de e-mail populares.

Desde o início de 2025, o laboratório de pesquisa Trusteer registrou mais de 50.000 sessões de usuários infectadas, indicando a escala de atividade de ameaças. Rilide tem uma campanha mundial em andamento detectada pelo laboratório Trusteer atacando a América do Norte, América do Sul, Europa e Japão.

Neste post, vamos explorar como o Rilide opera no navegador por meio de sua extensão e examinar as técnicas que ele usa para realizar seus ataques, especialmente seu impacto nas plataformas financeiras.

Os recursos da Rilide destacam a mudança no cenário de ameaças de injeções tradicionais na web usando um único código JavaScript na página para extensões de navegador. As extensões de navegador facilitam muitas funções que são bastante difíceis de alcançar sem elas. A análise a seguir mostra o quão poderosa é uma extensão e por que o malware moderno tende a usá-las.

Man-in-the-browser: Antes e agora

No passado, a maioria dos ataques "man-in-the-browser" era executada por malware que escaneia a memória do navegador para identificar padrões HTML específicos e injetar uma tag <script> diretamente no conteúdo da memória da página. Apesar da intenção maliciosa, esses scripts ainda estavam sujeitos aos mecanismos de segurança do navegador, como operar em um ambiente isolado, aderir à política de mesma origem e estar vinculados ao ciclo de vida da página em que foram injetados.

Por exemplo, os scripts injetados não podiam acessar cookies ou recursos de outras origens, nem podiam persistir ou ser executados depois que a página fosse fechada.

Por outro lado, os ataques modernos que utilizam extensões maliciosas de navegadores superam a maioria dessas limitações. As extensões operam independentemente de qualquer página da Web específica, permitindo que sejam executadas persistentemente em segundo plano. Eles também têm privilégios elevados, o que lhes permite ignorar as restrições de mesma origem, acessar recursos de todo o navegador, como cookies ou armazenamento, e permanecer ativos mesmo quando nenhuma página está aberta. Essa mudança tornou as extensões de navegador uma ferramenta poderosa para invasores, fornecendo um nível de persistência e controle muito além dos métodos tradicionais de injeção na web.

As extensões também introduziram uma mudança no contexto de execução do JavaScript, o que tem seus próprios benefícios maliciosos. As injeções tradicionais na web foram executadas no mesmo contexto que o código da aplicação da web, incluindo ferramentas de segurança. Qualquer evidência deixada para trás (como elementos de script, solicitações de rede, variáveis js etc.) pode tornar o malware detectável.

Agora, existem dois ambientes JavaScript diferentes, além do contexto da página:

  1. Primeiro, há o contexto de script de conteúdo, que tem acesso ao documento da página, mas está parcialmente isolado do ambiente da página principal.
  2. Além disso, há um contexto de código em segundo plano (um trabalhador de serviço), que não tem acesso ao script de conteúdo e ao ambiente da página principal.

Todas as comunicações entre esses contextos ocorrem por meio de interfaces de navegador definidas que não são visíveis para a página ou seus desenvolvedores. A maioria das evidências e comportamentos de extensão é isolada por design, e a detecção é especialmente difícil se não houver alteração no documento principal.

Além de oferecer evasão aprimorada, o desenvolvimento de extensões de navegador também é simples, graças à extensa funcionalidade integrada e às permissões fornecidas pelas APIs dos navegadores modernos. A análise a seguir demonstra como as extensões facilitam o desenvolvimento de ataques complexos.

Dado o aumento de controle, persistência, recursos de evasão e facilidade de desenvolvimento que as extensões oferecem, a mudança das técnicas tradicionais "man-in-the-browser" para ataques baseados em extensão não é apenas compreensível, mas inevitável, na evolução dos ataques de navegador baseadas em ameaças.

Homem olhando para computador

Fortaleça sua inteligência de segurança 


Fique à frente das ameaças com notícias e insights sobre segurança, IA e outros semanalmente no boletim informativo do Think. 


Conheça a fundo a extensão do navegador Rilide

Análise do manifesto

Começaremos nossa análise do Rilide com o arquivo de manifesto — um componente crucial que descreve a funcionalidade da extensão e os níveis de acesso, fornecendo as primeiras pistas para entender os recursos maliciosos do Rilide.

Uma das variantes analisadas se apresenta como uma extensão do Google Drive:

Código para descrição da extensão de manifesto
Figura 1: Descrição da extensão do manifesto

Posteriormente, há uma lista de permissões necessárias. A lista contém várias funcionalidades críticas dos navegadores, incluindo, entre outras:

  • "Scripting": permite injetar e executar código JavaScript em páginas da web
  • "Cookies": permite ler, modificar ou excluir cookies do navegador
  • "WebRequest": observação e modificação de solicitações de rede feitas pelo navegador
  • "ClipboardRead/Write": leitura e modificação do conteúdo da área de transferência do usuário
  • "ActiveTab": acessa temporariamente o conteúdo da guia ativa no momento

Em "host_permission", a extensão tem permissão para acessar e interagir com <all_ urls>, ou seja, qualquer esquema, domínio, caminho e porta compatíveis com o navegador.

Os "scripts de conteúdo" também são configurados para serem executados em todas as URLs em document_start, o que significa que são executados assim que o navegador começa a carregar a página, antes que qualquer conteúdo seja totalmente renderizado.

Código mostrando a configuração do script de manifesto
Figura 2: Configuração de script de manifesto

O script main.js inclui recursos gerais de roubo de informações, enquanto gmail.js tem como alvo a página do cliente de e-mail do Gmail. No entanto, todos os scripts são injetados em todas as páginas.

Em “declarative_net_request”, a extensão configura regras para remover vários cabeçalhos da Política de Segurança de Conteúdo (CSP). Isso permite que o Rilide contorne as restrições de segurança e injete conteúdo em linha.

Em "plano de fundo", o trabalhador de serviço da extensão é configurado. É aqui que o malware monitora eventos do navegador e estabelece comunicação com o servidor C2. A seguir, nós nos aprofundaremos na análise do script em segundo plano para entender melhor como o malware detecta eventos do navegador e executa sua estratégia de ataque.

Análise script Background.js
Inicialização

O Background.js contém código de inicialização configurado para executar no evento de instalação da extensão. Ele busca as informações do dispositivo, como detalhes de CPU e armazenamento, usando chamadas do chrome.system e dados de extensões instaladas usando o chrome.mangement. O ID exclusivo é gerado usando o módulo npm uuid (importado via jspm) e salvo no armazenamento local. Por fim, todos os cookies são buscados usando chrome.cookies.getAll com um parâmetro de filtro vazio.

Código de inicialização
Figura 3: Código de inicialização

Esses dados são enviados para o servidor C2 e a resposta pode ativar os recursos de proxy da extensão. Injeções, comandos e configurações de malware também são buscados durante a inicialização da extensão.

A parte final da inicialização é habilitar as regras de remoção de CSP, após as quais o malware está pronto para configurar e monitorar os eventos do navegador. Mais uma vez, podemos ver claramente os benefícios de usar uma extensão de navegador em comparação com as técnicas tradicionais de injeção na web, tornando todas essas informações facilmente coletadas.

Novos métodos de extração de domínio

As versões anteriores do Rilide tinham domínios C2 codificados diretamente nos arquivos JavaScript. Outras variantes extraíram domínios recuperando detalhes da transação de uma carteira Bitcoin específica.

A nova variante analisada aqui inclui código projetado para buscar domínios de um bot do Telegram. Chamadas periódicas para buscar os domínios são configuradas para execução a cada minuto usando alarmes do Google Chrome.

Essa abordagem permite que o malware alterne facilmente os domínios se um deles for detectado e bloqueado.

Embora essa variante não contenha os tokens do Telegram, esse método provavelmente aparecerá em versões futuras.

código para extração de domínio do telegram bot
Figura 4: Extração de domínio do bot do Telegram

Pronto para a exfiltração de dados

O script de conteúdo envia todos os valores dos elementos de input da página utilizando chrome.runtime.sendMessage com o tipo de mensagem "new-grabber-info".

O listener a seguir é definido em segundo plano.js para transmitir os dados para o servidor C2.

código para listener de dados de input
Figura 5: listener de dados de input

Além disso, o plano de fundo está aguardando por mensagens de “set-screenshot-result”.

Essas mensagens acionam a captura de uma captura de tela usando chrome.tabs.captureVisibleTab e enviando os dados de volta para o C2.

código para tirar uma captura de tela e encaminhar os dados
Figura 6: tirar uma captura de tela e encaminhamento dos dados

Ao empregar esses métodos, se o usuário fizer login em um site bancário, uma série de dados confidenciais poderá ser roubada. Isso inclui nomes de usuário e senhas, números de conta, códigos PIN, detalhes de cartão de crédito, respostas a perguntas de segurança e informações do destinatário de transferência.

Na última parte dos scripts em segundo plano, as chamadas periódicas para busca de comandos e verificações de proxy são definidas usando "chrome.alarms". Os alarmes de comando buscam uma lista de comandos do C2 e os executam um por um.

O alarme de verificação de proxy verifica o status de conexão do proxy e inicia uma nova, se necessário. Depois que os ouvintes são definidos, a execução síncrona do script em segundo plano é concluída.

cmds.js, o que o malware pode fazer?

cmds.js contém um código que facilita o recebimento de um comando (de uma lista predefinida) junto com parâmetros do C2 e o envio de quaisquer resultados, se aplicável.

Alguns comandos interessantes incluem:

  • “Extension”: habilita uma extensão com base em um determinado ID
  • "Push": cria uma notificação no navegador com o conteúdo buscado e abre uma nova guia quando clica na notificação
  • “Screenshot”: capture o conteúdo da guia visível usando "chrome.tab.captureVisibleTab"
  • “History”: retorna o histórico de navegação
  • "Cookies": busca todos os cookies do navegador, os mesmos do código de inicialização
  • "URL": abre uma nova guia com o URL fornecido

Outros comandos permitem alterar a configuração da extensão, buscar informações do dispositivo, o URL atual e assim por diante. Esse conjunto de comandos permite alterações dinâmicas no fluxo de trabalho e na execução do malware, tornando-o mais capaz de atrair a interação do usuário. A maioria desses comandos utiliza funções de extensão do Chrome integradas, o que facilita o desenvolvimento para autores de malware.

Script de conteúdo do main.js: injeções personalizadas e roubo de dados

O script de conteúdo main.js começa com a biblioteca jQuery inicializada em uma função anônima, incorporada totalmente em linha sem importações externas. Isso é seguido pela execução de funções maliciosas em códigos ofuscados.

A arquitetura de extensão do Chromium permite que as extensões separem as responsabilidades da injeção e a tornem mais difícil de detectar. O trabalhador do serviço baixa e armazena as injeções durante a etapa de inicialização, enquanto o script de conteúdo as lê e executa. Nenhuma solicitação da web foi enviada no contexto da página, o que ajuda a manter o malware não detectado. O main.js itera todas as injeções buscadas e, se a URL atual corresponder à URL de injeção, ele a injeta.

O Rilide usa uma maneira inteligente de injetar scripts no DOM.

código para injeção de script
Figura 7: Injeção de script

Ele cria um atributo de documento "onreset" com a injeção como manipulador de eventos. Em seguida, ele envia imediatamente um evento personalizado de "redefinição", que executa a injeção e, por fim, remove o atributo.

Esse atributo é definido em um momento específico entre a chamada "setAttribute" e a chamada "removeAttribute", o que dificulta a detecção das ferramentas de segurança.

A última chamada de função configura o ouvinte de roubo de dados genérico.

Listener de entrada de script de conteúdo (após desofuscação e renomeação de variáveis)
Figura 8: listener de entrada de script de conteúdo (após desofuscação e renomeação de variáveis)

Usando um seletor jQuery, todos os elementos de entrada são selecionados e o ouvinte de eventos "change" é definido.

O evento "change" ocorre toda vez que o valor de um campo de entrada é alterado e perde o foco (o usuário clica em outro elemento). Por exemplo, quando uma vítima faz login na sua conta bancária, o seu nome de usuário é coletado quando clica no campo de senha, e a entrada de senha é roubada quando o usuário envia o formulário. Os dados são enviados para o trabalhador de serviço via chrome.runtime.sendMessage, que então os encaminha para os servidores C2.

script de conteúdo do gmail.js – ocultando o roubo de criptomoedas
 

O objetivo deste script é substituir a solicitação de autorização de 2FA de retirada por uma nova solicitação de autorização de dispositivo. Esperamos que essa abordagem mantenha os clientes cientes dos saques não autorizados, pois eles são mais propensos a perceber a autorização de um novo dispositivo como menos suspeita do que os saques.

O script começa com uma inicialização inline da biblioteca jQuery e uma verificação de que o local atual contém "mail.google" antes de iniciar a execução. A injeção verifica periodicamente os e-mails de carteiras de criptomoedas populares e, se detectada, invoca a função de carteira correspondente.

código para procurar e-mails sobre carteiras de criptomoedas
Figura 9: Procurar e-mails de carteiras de criptomoedas

Os seletores do jQuery são bem simples, utilizam “divs” que contêm os nomes das carteiras em texto.

Demonstraremos a injeção personalizada de um fornecedor específico, embora todos eles atuem de forma semelhante.

O código procura por elementos que contenham o texto "Solicitação de retirada" e o substitui por "Autorizar novo dispositivo".

código para alterar o texto da notificação de retirada
Figura 10: Alteração do texto da notificação de retirada

Ele também procura elementos de intervalo que contenham o texto "retirada" para substituir o conteúdo de visualização do e-mail.

Antes da injeção:

E-mail original de notificação de retirada
Figura 11: E-mail de notificação de retirada original

Após a injeção:

E-mail de notificação de novo dispositivo
Figura 12: E-mail de notificação de novo dispositivo

O corpo do e-mail em si é encontrado da seguinte maneira:

código para alterar o conteúdo do corpo do e-mail
Figura 13: Alterando o conteúdo do corpo do e-mail

Simplificando, o script encontra todos os elementos com a classe CSS "ii" que possuem um elemento descendente "div" com o texto "verifique o endereço com atenção". Ele também extrai o código de autorização com base no elemento e no estilo do texto do código de autorização. Este método para identificar elementos não é muito estável, pois pequenas mudanças no estilo, texto ou estrutura podem quebrá-lo.

E-mail de retirada HTML
Figura 14: HTML do e-mail de retirada

Por fim, o conteúdo HTML do e-mail é substituído por conteúdo codificado.

Conteúdo original:

notificação de retirada original redigida
Figura 15: Notificação de retirada original

Novo conteúdo:

novo conteúdo de e-mail injetado
Figura 16: Conteúdo de e-mail injetado

Esse mecanismo permite que o agente da ameaça retire criptomoedas sem alertar o usuário sobre os saques.

Código proxy: da prova de conceito ao malware do mundo real

Outro recurso de destaque, implementado sem esforço por meio de extensões, é o recurso de proxy. O Rilide permite converter o navegador da vítima em um proxy HTTP, encaminhando todas as solicitações enquanto utiliza as credenciais e dados da vítima.

Esse recurso é especialmente perigoso para fraudes financeiras, pois os invasores podem acessar portais bancários, contas de negociação e plataformas de pagamento sem acionar verificações extras de autenticação. Eles podem iniciar transações, modificar configurações de conta ou desviar fundos sob o pretexto de atividade legítima do usuário, ignorando medidas de segurança tradicionais, como rastreamento de endereços IP. Ao se passar pela vítima de forma eficaz, os invasores podem realizar exploração de mecanismos baseados em confiança para cometer fraudes sem dificuldades.

Essa funcionalidade foi notavelmente simples de implementar, pois foi copiada diretamente do CursedChrome, um projeto educacional que demonstra uma prova de conceito para esse tipo de ataque.

O proxy funciona usando o trabalhador do serviço de extensões para configurar uma conexão WebSocket com o servidor C2 do invasor. Essa conexão permite que o trabalhador do serviço receba comandos enviados pelo invasor. Esses comandos ditam as ações do proxy, como fazer solicitações ou navegar em sites. As solicitações são feitas usando os cookies coletados da vítima e as respostas são enviadas de volta para o nível C2.

Exemplo de código CursedChrome:

Código da função de inicialização do CursedChrome
Figura 17: Código da função de inicialização do CursedChrome

Exemplo de código Rilide:

Código da função Rilide startProxy
Figura 18: Código da função Rilide startProxy

Apesar de algumas diferenças de nomenclatura e local de definição de função, o código é o mesmo. Esse projeto ainda vem com código de back-end e uma interface de usuário (IU) de gerenciamento, facilitando a vida dos invasores.

Mantendo-se seguro com extensões
 

Rilide exemplifica como as extensões de navegador transformaram o cenário de ameaças para ataques man-in-the-browser. Ao aproveitar os recursos inerentes das extensões, os invasores ganham um controle sem precedentes sobre o navegador, permitindo uma exploração sofisticada e persistente que supera em muito as limitações das injeções tradicionais na web na página. Essa mudança destaca a crescente necessidade de vigilância e defesas robustas, pois a simplicidade e o poder dos ataques baseados em extensões os tornam um vetor atraente para os cibercriminosos.

Para se protegerem, os usuários devem revisar regularmente suas extensões de navegador instaladas, removendo imediatamente quaisquer extensões desconhecidas ou suspeitas.

Além disso, é essencial monitorar as contas de e-mail em busca de atividades incomuns, como tentativas inesperadas de login, e ficar de olho nas carteiras de criptomoedas em busca de transações não autorizadas ou ações desconhecidas. Manter-se proativo e cauteloso pode ajudar a mitigar os riscos representados por esse paradigma de ataque em evolução.

O IBM Trusteer ajuda você a detectar fraudes e malwares, autenticar usuários e estabelecer confiança na identidade em toda a jornada do cliente. Mais de 500 organizações líderes confiam no Trusteer para ajudar a proteger as jornadas digitais de seus clientes e apoiar o crescimento dos negócios.

Indicadores de comprometimento

Arquivos

historytab.js

 2b72cc2c0c53321a472471c5189fdb56

notif.js

 8679a34885a02e94189c8fe5132245a

config.js

 408d8fa7eade661e9a02b6065b792fca

ico.png

 40de419c81de274c26c63e0f23d91a3f

scrrule.js

 9db73e9a3a24070de075da13fdea01ab

exts.js

 868eb23af363b5790d16103d2dd94178

rules.json

 6c1f6ab3492a615404a70161303de746

manifest.json

 fd7d90a5e31cd19bbc65095d722c1525

utils.js

 bd14616118af50f6e0b886bd90144845

content-scripts-register-polyfill.4.0.0.js

 5bf61a91e003afb1e169e3e3be336cac

app.html

 08785f3794a7ae9aab6b3fa669646794

background.js

 1de94fff2cb80f44d82d69f816139974

main.js

 6c19e1bf9a7eac2c9b44f5e5c0b76d39

gmail.js

 49c851c025506d0a570d75bc00c7605a

csp.js

 15606d8d8d6ca797c2c98c20114619b4

exchangeSettings.js

 2dcf7f099c08f9d074994a0a4f996720

screen.js

 7d0defc1a08d5a58d95f5ca38509c8ef

domain.js

 bb0bc698eb64447a3ab581517273487b

inj.js

 3d67fa8a26390e8819d6bd36a2c5959f

set.js

 8049e7bd36a88f7a393b7ff0746a04db

proxing.js

 b4b2510d7ec41711ef29ddddd4cab09a

cmds.js

 0ebb9b78c38ae45884b85632fe087e49

machine.js

 c43644bed7d94e3ec880af3195e4c906

extFiles.zip

 3113c21eee9704b14437edb5c6f29634

Domínio:
statbrwsr.digital 

Mixture of Experts | 12 de dezembro, episódio 85

Decodificando a IA: resumo semanal das notícias

Participe do nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

Soluções relacionadas
Serviços de respostas a incidentes

Melhore o programa de resposta a incidentes da sua organização, minimize o impacto de uma violação e experimente respostas rápidas a incidentes de cibersegurança.

Conheça os serviços de resposta a incidentes
Soluções de detecção e resposta a ameaças

Use as soluções de detecção e resposta a ameaças da IBM para fortalecer sua segurança e acelerar a detecção de ameaças.

Explore as soluções de detecção de ameaças
Soluções do IBM® QRadar SOAR

Otimize os processos de tomada de decisão, aumente a eficiência do SOC e acelere a resposta a incidentes com uma solução de automação inteligente e orquestração.

Conheça o QRadar SOAR
Dê o próximo passo

Melhore o programa de resposta a incidentes da sua organização, minimize o impacto de uma violação e experimente respostas rápidas a incidentes de cibersegurança.

  1. Conheça os serviços de resposta a incidentes
  2. Saiba mais sobre o IBM X-Force