Voltar para todas as publicações
Publicado em · por Renaud Deraison

A extensão que saiu do navegador

A Zscaler encontrou um backdoor chamado Edgecution que roda dentro de uma janela do Microsoft Edge que a vítima nunca abriu e, então, usa o Native Messaging — o canal legítimo que uma extensão usa para falar com um aplicativo de desktop — para executar comandos no host. A pergunta que vale a pena fazer é o que essa ponte até o host alcança quando o navegador vive numa VM descartável.

Uma extensão de navegador deveria ficar presa dentro do navegador. Um backdoor chamado Edgecution é uma demonstração funcional de que o “deveria ficar” estava fazendo boa parte do trabalho. Ele roda dentro de uma janela do Microsoft Edge que a vítima nunca abriu e não consegue ver, e usa um recurso embutido em todo navegador Chromium para executar comandos na máquina por baixo.

Imagine a recém-contratada do financeiro, três semanas no cargo, ainda dizendo sim para tudo. Chega uma mensagem no Microsoft Teams de alguém cujo nome está listado no suporte de TI. Há uma atualização do filtro de spam para o Outlook; a equipe de e-mail está liberando ela esta semana; aqui está a página. Ela abre. Está com a marca de “Console de Gerenciamento de Atualizações do Outlook”, parece bastante interna, e dá a ela um comando curto para rodar e finalizar a instalação. Ela roda. Nada parece acontecer. Ela fecha a aba e volta ao trabalho.

No fim de junho, a equipe ThreatLabz da Zscaler documentou o que acontece depois que ela fecha aquela aba. A família de malware é a Edgecution, e a BleepingComputer cobriu o caso na mesma semana. O malware é silencioso por design; a parte que merece um olhar mais atento é onde o atacante escolheu escondê-lo.

Uma mensagem da TI que não era da TI.

O movimento de abertura é engenharia social pelo Microsoft Teams, com o atacante se passando pela própria equipe de TI da empresa e conduzindo a funcionária até aquela página falsa de atualização do Outlook. A página oferece três maneiras de “finalizar a instalação” e, segundo a análise da Zscaler, todas elas entregam a mesma coisa: um script AutoHotKey ofuscado empacotado com um executável real do AutoHotKey, um script em lote do Windows copiado para a área de transferência, ou um script PowerShell copiado para a área de transferência. Duas dessas três são a jogada de colar da área de transferência que você talvez conheça como ClickFix — a página escreve o comando para você, e a única coisa que resta para o humano fazer é colar e apertar Enter.

Esse colar é o jogo inteiro. A carga chega dentro de um ZIP criptografado com os bytes mágicos PK removidos, de modo que o arquivo não pareça um ZIP para nada que o esteja escaneando. Assim que o script roda, o host está comprometido — não por uma exploração engenhosa, mas porque uma pessoa foi convencida a rodar um programa no próprio computador. Tudo o que vem depois disso é o atacante decidindo como permanecer.

O navegador como backdoor.

A forma como ele sobrevive a uma reinicialização é a parte que vale a pena desacelerar para observar. A maior parte do malware que quer persistir solta um executável, escreve uma chave de execução no registro ou instala um serviço — todas coisas que as ferramentas de segurança são feitas para vigiar. A Edgecution faz algo mais silencioso. O script de instalação agenda uma tarefa do Windows que inicia o Microsoft Edge com um punhado de flags de linha de comando, incluindo --load-extension para carregar lateralmente a extensão do próprio atacante e --headless=new para que a janela do navegador nunca seja desenhada na tela. Agora há um processo do Microsoft Edge rodando na máquina — um programa assinado, confiável e comum — que o usuário não consegue ver e não iniciou.

Dentro desse navegador invisível, a extensão faz duas coisas. Ela emite sinais para um servidor de comando e controle (o endereço que os atacantes usam para enviar instruções) por um WebSocket hospedado na Amazon CloudFront, de modo que o tráfego pareça um navegador normal falando com uma rede de conteúdo normal. E ela repassa os comandos que recebe até o host usando o Native Messaging.

O Native Messaging é um recurso real e documentado do Chromium, funcionando conforme o projetado. É o canal que permite que uma extensão de navegador fale com um programa de desktop instalado na mesma máquina — o mecanismo que uma extensão usa para passar trabalho ao seu aplicativo de desktop companheiro, por exemplo. Uma extensão chama chrome.runtime.sendNativeMessage, e o navegador inicia um pequeno programa “host nativo” nomeado num arquivo de manifesto e canaliza JSON para ele. A Edgecution registra seu próprio host nativo: um native_host.bat que inicia um backdoor em Python. A partir daí, o backdoor pode executar comandos de shell, rodar PowerShell, rodar Python arbitrário, ler e gravar arquivos, listar processos em execução e reportar informações do sistema de volta pela cadeia — tudo o que você precisa para ser o corretor de acesso inicial que entrega um ponto de apoio limpo a uma quadrilha de ransomware. A Zscaler associa o ofício desse operador à operação de ransomware Payouts King.

1 · TEAMSMensagem da “TI”atualização do filtro de spam2 · ISCAPágina falsa do Outlook“Console de Atualizações”3 · EXECUÇÃOVítima roda o scriptcolar, ou AutoHotKey4 · BACKDOOREdge oculto--headless --load-extLIMITE DA SANDBOX DO NAVEGADORNative MessagingsendNativeMessageNO SEU SISTEMA OPERACIONAL HOSTnative_host.batBackdoor em Pythoncomandos como o usuárioO QUE O BACKDOOR PODE FAZERrodar shell + PowerShellrodar Python arbitrárioler + gravar qualquer arquivolistar processoscoletar info do sistemarepassar a um ransomware
A cadeia da Edgecution. A vítima é convencida a rodar um script (passo 3) — o host é comprometido ali. A partir desse ponto de apoio, o malware inicia uma janela do Microsoft Edge que mantém escondida, carrega lateralmente sua própria extensão e usa o Native Messaging — o canal legítimo que uma extensão usa para falar com um programa de desktop — para executar comandos no host por meio de um backdoor em Python. Fonte: Zscaler ThreatLabz.

Note o que não está nessa imagem: nenhum serviço novo, e nenhum .exe solto no disco esperando para ser sinalizado. A coisa que executa os comandos do atacante é o python.exe iniciado por um arquivo em lote iniciado pelo Microsoft Edge — e o tráfego que carrega esses comandos é um navegador falando com uma CDN. Ele se mistura porque quase toda parte dele é uma coisa legítima fazendo uma ação que parece legítima.

As manchetes chamaram isso de fuga da sandbox. A versão precisa: o host já estava comprometido no momento em que a funcionária rodou o script. O Native Messaging não é um buraco que o atacante abriu à força; é uma porta que o navegador já traz, e o atacante passou por ela. A distinção aponta para onde a correção de verdade tem que morar. Você não se livra, com remendos, de um recurso funcionando conforme o projetado. Você muda para onde a porta dá.

O que “a ponte até o host” alcança no Bromure.

O Bromure é um navegador que coloca a segurança em primeiro lugar. Cada aba roda dentro de uma VM Linux descartável (máquina virtual — um computador separado próprio) no seu Mac, e a VM é apagada quando você fecha a janela. Essa única escolha de arquitetura muda o que o resto da história da Edgecution significa na sua máquina.

Comece pelo Native Messaging, o cerne de todo o ataque. Num navegador normal, o “host nativo” com o qual uma extensão fala é um programa no seu sistema operacional — o mesmo sistema operacional que guarda seus arquivos, seu keychain e seus compartilhamentos de rede. A ponte é aberta: qualquer extensão pode registrar um host nativo, e esse host pode ser qualquer coisa. Todo o truque da Edgecution depende de o navegador e seus arquivos estarem na mesma máquina.

No Bromure, o navegador não está naquela máquina. Ele roda dentro da VM descartável, então o sistema operacional por baixo do navegador é o convidado Linux descartável, não o macOS. Um host nativo malicioso registrado por algo dentro da VM seria um programa dentro da VM — falando com um computador que não contém nada da sua vida e deixa de existir quando você fecha a janela. O conjunto restrito de pontes que de fato alcançam o macOS é de primeira parte e está embutido na imagem de disco somente leitura: a ponte de credenciais, por exemplo, preenche passkeys e senhas a partir do Keychain do seu Mac. Não há como uma sessão em execução adicionar uma nova, porque — e esta é a segunda metade da resposta — você não pode instalar extensões de jeito nenhum.

Navegador tradicionalSEU COMPUTADORNavegadorExtensãoNative MessagingSISTEMA OPERACIONAL HOSTSeus arquivosKeychainCompartilhamentos de redeA ponte chega onde seus arquivos estão.BromureSEU MACVM DESCARTÁVELNavegadorapenas pontes de primeira parte · sem instalaçãoNative MessagingSistema Linux convidadoapagado quando você fecha a janelaISOLAMENTO POR HARDWAREmacOS — seus arquivos & KeychainintocadosA ponte fica na máquina descartável.
Mesma extensão, mesma chamada de Native Messaging. À esquerda, a ponte conecta o navegador ao sistema operacional que guarda seus arquivos. No Bromure, o navegador roda dentro de uma VM descartável, então a ponte alcança o Linux descartável do convidado — e você não teria conseguido instalar a extensão em primeiro lugar. As poucas pontes que de fato alcançam o macOS (passkeys e senhas do Keychain) são de primeira parte e embutidas na imagem.

O bloqueio não é uma configuração que uma página de phishing consiga contornar com conversa. Na política de navegador do Bromure, chrome://extensions e a Web Store estão numa lista de bloqueio rígida, e não há developer mode, nem “load unpacked”, nem chave avançada para driblar isso. Também não há como fazer o que a Edgecution faz no lado do host — iniciar um segundo Chromium com --load-extension apontado para o seu perfil de verdade — porque o seu perfil de verdade não é uma pasta no seu Mac para a qual um processo perdido possa apontar um navegador. Ele está lacrado dentro da VM.

Há mais um fio que vale a pena puxar, porque é a vitória mais barata de toda a história. A isca chegou pelo Microsoft Teams. Muita gente hoje usa o Teams, o Outlook e o Slack como aplicativos web. Se esse hábito vive dentro de uma aba descartável do Bromure, a mensagem de personificação, o link e a falsa página de “atualização do Outlook” caem todos numa sessão isolada desde o primeiro segundo — e a cadeia que acabamos de percorrer nunca chega ao passo três, porque a página que quer que você rode um script está sentada numa VM que não consegue alcançar o seu shell. O ataque que precisa do host nunca encontra o host.

O que isto não resolve.

Isolamento não é um feitiço, e seus limites merecem ser declarados com clareza.

Um comando que você mesmo roda

O ponto de entrada aqui é um humano rodando um script — um comando em lote ou PowerShell copiado para a área de transferência, ou um executável do AutoHotKey. Se você cola um comando no seu próprio shell e aperta Enter, nenhum isolamento de navegador está nesse laço. O compartilhamento de área de transferência entre a VM e o seu Mac vem ligado por padrão porque copiar e colar faz parte da navegação normal; você pode mudar um perfil para isolamento total, e a camada de phishing está lá para sinalizar a página antes de você agir. Mas a regra durável é mais antiga do que tudo isto: nunca rode um comando que uma página da web entregou a você.

Binários do Windows, uma técnica portátil

A Edgecution mira o Microsoft Edge no Windows, e esses arquivos exatos não vão rodar num Mac. Isso é um consolo frio, não uma defesa. O Native Messaging é um recurso do Chromium no macOS também, e a mesma semana trouxe uma campanha no macOS que convenceu usuários a colar um comando no Terminal para soltar o infostealer Atomic. A técnica é portátil; só os binários são específicos do sistema operacional.

O que o Bromure muda é mais estreito e, achamos, mais útil do que uma promessa de que nada de ruim jamais poderá alcançar você. Ele remove as condições que tornaram a Edgecution silenciosa e durável. O navegador não é mais um processo permanente e confiável sentado ao lado dos seus arquivos. O Native Messaging não é mais uma ponte aberta que qualquer extensão pode registrar — extensões não podem ser adicionadas de jeito nenhum, e o próprio sistema operacional do navegador é descartável. E a persistência, a coisa que toda essa arquitetura foi construída para alcançar, não tem nada em que persistir: feche a janela e a máquina em que o backdoor vivia se foi.

O navegador perigoso é aquele que você não consegue ver.

Por vinte anos, o conselho de segurança sobre navegadores foi sobre a janela à sua frente — confira a barra de endereços, procure o cadeado, não clique em links estranhos. A Edgecution é um pequeno lembrete de que o navegador que causa o estrago é, cada vez mais, aquele que você nunca vê: um processo headless, iniciado por uma tarefa agendada, falando com uma CDN, rodando uma extensão que você não instalou. Você não consegue inspecionar a barra de endereços de uma janela que nunca foi desenhada.

A pergunta não é mais se a janela à sua frente é segura. É o que qualquer navegador nesta máquina consegue alcançar, se for virado contra você. Num computador comum, a resposta são seus arquivos, por uma ponte que ele já traz. Numa máquina rodando o Bromure, a resposta é: uma caixa Linux descartável que esquece tudo no momento em que você termina com ela. Essa é a diferença que vale a pena ter. Instale-o, torne-o seu padrão para a metade da sua navegação em que você não confia, e deixe as janelas ocultas darem para algo que você ia jogar fora de qualquer forma.