Voltar para todos os artigos
A Dissecação do Chrysalis: Como uma APT Patrocinada pelo Estado Armou o Botão de Atualização do Seu Editor de Texto

A Dissecação do Chrysalis: Como uma APT Patrocinada pelo Estado Armou o Botão de Atualização do Seu Editor de Texto

Como a APT Lotus Blossom comprometeu as atualizações do Notepad++ para implantar o backdoor Chrysalis. DLL sideloading, API hashing e regras de detecção.

Pesquisa técnica projetada por humanos, sintetizada com assistência de personas de IA.
16 min de leitura

TL;DR / Sumário Executivo

Como a APT Lotus Blossom comprometeu as atualizações do Notepad++ para implantar o backdoor Chrysalis. DLL sideloading, API hashing e regras de detecção.

"O ataque mais perigoso é aquele que chega através de um canal em que você já decidiu confiar."


💡 TL;DR (Muito Longo; Não Li)

Principais conclusões em 60 segundos:

  • O que Aconteceu: A APT chinesa Lotus Blossom comprometeu a infraestrutura de hospedagem do Notepad++ por 6 meses (junho-dezembro de 2025), entregando um backdoor personalizado chamado Chrysalis via tráfego de atualização sequestrado.
  • Como Funcionou: DLL sideloading usando um binário Bitdefender renomeado, cifra de fluxo baseada em LCG personalizada para descriptografia de shellcode, e API hashing FNV-1a + MurmurHash para evitar detecção.
  • A Parte Assustadora: Eles armaram o framework não documentado Warbird da Microsoft para fazer o shellcode parecer originar-se de binários assinados pela Microsoft.
  • Quem Foi Atingido: Organizações governamentais nas Filipinas, instituições financeiras em El Salvador, provedores de TI no Vietnã — alvos clássicos de inteligência.
  • Suas Ações: Audite cada atualizador em %AppData%, cace IOCs do Chrysalis, imponha verificação de assinatura de binários em CI/CD.
  • Conclusão: Suas ferramentas de desenvolvedor agora são uma superfície de ataque primária. Trate cada uma delas como um vetor de ameaça potencial.

1. O Gancho: Por Que Isso Importa Agora

Em 2 de fevereiro de 2026, Don Ho — o mantenedor do Notepad++, um editor de texto instalado em milhões de estações de trabalho de desenvolvedores em todo o mundo — publicou uma divulgação que deveria fazer cada engenheiro reconsiderar o que acontece quando clica em "Atualização Disponível". Por seis meses, de junho a dezembro de 2025, um grupo de ameaças patrocinado pelo estado chinês chamado Lotus Blossom esteve silenciosamente dentro da infraestrutura de hospedagem do Notepad++, redirecionando seletivamente o tráfego de atualização para entregar um backdoor personalizado e não documentado para alvos escolhidos a dedo.

O backdoor chama-se Chrysalis. E depois de passar a última semana estudando a análise forense da Rapid7, a telemetria da Kaspersky e o mapeamento MITRE ATT&CK da cadeia de ataque, posso dizer: é um dos comprometimentos de cadeia de suprimentos mais tecnicamente sofisticados que vi desde o SolarWinds. Não por causa do acesso inicial — isso foi deprimentemente simples. Mas por causa do que veio depois.

Este não é um resumo de notícias. Esta é uma dissecação.


2. A Superfície de Ataque Que Ninguém Audita

Antes de entrarmos no shellcode e no API hashing, vamos falar sobre por que isso importa para você, o engenheiro lendo isso em seu laptop de trabalho que quase certamente tem Notepad++, extensões do VS Code ou uma dúzia de outras ferramentas instaladas fora do inventário MDM do seu departamento de TI.

Aqui está a verdade desconfortável: ferramentas de desenvolvedor são o alvo mais fácil em sua organização. Elas ficam em máquinas privilegiadas — máquinas com chaves SSH, credenciais AWS, chaves de assinatura Git, tokens CI/CD e acesso à produção. E a maioria delas se atualiza automaticamente por meio de mecanismos que ninguém em sua equipe de segurança jamais auditou.

Como o GUP.exe Se Tornou um Cavalo de Troia

O Notepad++ usa um atualizador personalizado chamado GUP (Generic Updater Plugin). O GUP verifica um manifesto hospedado no site do Notepad++, baixa o instalador e o executa. Antes da versão 8.8.9, ele não verificava o certificado ou a assinatura do binário baixado. Ele confiava implicitamente na infraestrutura de hospedagem.

A Lotus Blossom não precisou de um zero-day. Eles não precisaram comprometer o código-fonte. Eles comprometeram o provedor de hospedagem, ganharam a capacidade de redirecionar seletivamente o tráfego HTTP e serviram um update.exe envenenado para alvos que haviam pré-selecionado por intervalo de IP ou outra impressão digital de rede.

O código-fonte nunca foi tocado. O repositório Git estava limpo. O binário na página oficial de download era legítimo. Apenas o tráfego de atualização foi contaminado.

Este é o novo manual. E se você acha que não pode acontecer com sua extensão favorita do VS Code, pacote npm ou fórmula Homebrew, você não tem prestado atenção.


3. A Cadeia de Abate (Kill Chain): De GUP.exe ao Chrysalis

Deixe-me percorrer a cadeia de execução completa conforme documentado pela Rapid7 e Kaspersky. Esta é a parte tecnicamente mais interessante e revela um nível de disciplina operacional que vai muito além do território de script-kiddie.

3.1 Estágio 1: O Instalador NSIS

O update.exe malicioso é um instalador NSIS (Nullsoft Scriptable Install System) — um formato de empacotamento que é essencialmente o veículo de entrega padrão para grupos APT chineses. A Kaspersky observou pelo menos três cadeias de infecção distintas entregues ao longo de quatro meses, cada uma com caminhos de execução e payloads diferentes. Os atacantes rotacionaram endereços C2, downloaders e payloads finais em uma cadência quase mensal.

O instalador cria um diretório oculto em %AppData%\Bluetooth\ e dropa três arquivos:

ArquivoIdentidade VerdadeiraPropósito
BluetoothService.exeBitdefender Submission Wizard renomeadoBinário legítimo abusado para DLL sideloading
log.dllDLL maliciosa personalizadaDescriptografa e executa shellcode Chrysalis
BluetoothService (sem ext)Blob de shellcode criptografadoO payload do backdoor Chrysalis

A escolha de um binário Bitdefender renomeado não é aleatória. A Lotus Blossom usou exatamente essa técnica antes — documentada pela Symantec em abril de 2025 — com o mesmo binário, o mesmo nome de DLL (log.dll) e o mesmo padrão de sideloading. Foi isso que deu à Rapid7 uma atribuição de confiança moderada.

3.2 Estágio 2: DLL Sideloading

Quando o BluetoothService.exe (a ferramenta legítima da Bitdefender) executa, ele importa log.dll e chama duas funções exportadas: LogInit e LogWrite. Na biblioteca legítima, elas lidariam com logging. Na versão maliciosa:

  • LogInit lê o blob de shellcode criptografado (BluetoothService) para o espaço de memória do processo.
  • LogWrite executa a rotina de descriptografia e transfere a execução para o payload descriptografado.

A descriptografia não é trivial. Ela usa uma cifra de fluxo personalizada baseada em um Gerador Congruencial Linear (LCG) com as constantes 0x19660D (multiplicador) e 0x3C6EF35F (incremento) — estas são as constantes bem conhecidas do Numerical Recipes. O material da chave é derivado de um valor de hash calculado anteriormente, e o algoritmo aplica uma série de transformações XOR, adição e subtração para recuperar o shellcode em texto plano.

Isso não é AES. Não precisa ser. O objetivo é evitar análise estática e detecção baseada em assinatura, e uma cifra personalizada faz isso melhor do que uma padrão porque não há estrutura conhecida para os motores AV se fixarem.

3.3 Estágio 3: O Despertar do Chrysalis

Uma vez descriptografado e executando na memória, o Chrysalis inicia sua sequência de inicialização:

3.3.1 Resolução Dinâmica de API

O Chrysalis não importa APIs do Windows através da Import Address Table (IAT) normal. Em vez disso, ele percorre o Process Environment Block (PEB), analisa tabelas de exportação de módulos e resolve endereços de funções em tempo de execução usando um esquema de hashing personalizado.

O algoritmo de hash é um processo de dois estágios:

  1. Estágio 1: Hash dos nomes de exportação usando FNV-1a (vetor de inicialização 0x811C9DC5, primo 0x1000193)
  2. Estágio 2: Aplica um finalizador de avalanche estilo MurmurHash (constante 0x85EBCA6B)
  3. Estágio 3: Compara com hashes de alvo com salt (salgados)

Esse hashing de camada dupla significa que você não pode simplesmente jogar os valores de hash no Google para descobrir quais APIs o malware está chamando. Cada implantação pode usar salts diferentes, tornando a detecção baseada em assinatura através de campanhas não confiável.

Se o hashing falhar (o que não deveria, mas a resiliência operacional é claramente uma prioridade), o Chrysalis recorre à resolução de APIs via GetProcAddress — obtido anteriormente na cadeia de execução através de um caminho de resolução separado.

3.3.2 Descriptografia de Configuração

A configuração embutida é criptografada com RC4 e contém o endpoint C2. Nas amostras analisadas pela Rapid7, a configuração apontava para:

https://api.skycloudcenter[.]com/a/chat/s/{GUID}

Note a estrutura da URL: /a/chat/s/ seguido por um GUID. Isso é deliberadamente criado para imitar o formato de endpoint da API de chat da DeepSeek. A string User-Agent é um identificador padrão do Chrome. Para uma ferramenta de monitoramento de rede realizando DPI (Deep Packet Inspection), esse tráfego parece alguém usando um chatbot de IA. Brilhante e enfurecedor na mesma medida.

3.3.3 Processamento de Comandos

O Chrysalis suporta pelo menos 16 comandos distintos recebidos via respostas HTTP do servidor C2:

  • Spawnar um reverse shell interativo
  • Criar processos arbitrários
  • Operações de sistema de arquivos (ler, escrever, deletar, enumerar)
  • Upload de arquivos para o C2
  • Download de arquivos do C2
  • Auto-desinstalação e limpeza de artefatos
  • Gerenciamento de persistência (criação de serviço ou chaves Run do registro)

Isso não é um dropper. É um implante completo projetado para operações de espionagem de longo prazo.


4. O Coringa Warbird

Talvez a descoberta tecnicamente mais fascinante (e alarmante) no relatório da Rapid7 seja a descoberta de um loader secundário que abusa do Microsoft Warbird — um framework interno de proteção e ofuscação de código não documentado usado pela Microsoft para proteger partes do kernel do Windows.

Um arquivo chamado ConsoleApplication2.exe foi encontrado em hosts comprometidos que usa regiões de memória protegidas pelo Warbird para executar shellcode. Ele chama NtQuerySystemInformation com parâmetros não documentados para mapear código em regiões de memória que parecem pertencer a binários assinados pela Microsoft.

Isso é uma militarização direta de pesquisa acadêmica sobre componentes internos do Windows. O abuso do Warbird significa que ferramentas EDR (Endpoint Detection and Response) que verificam se o código em execução pertence a um binário assinado verão a assinatura da Microsoft e potencialmente permitirão a execução. A Rapid7 chama isso explicitamente de "rápida operacionalização de pesquisa pública".

Vou ser franco: se uma APT estatal está lendo seus artigos de pesquisa de segurança e transformando-os em armas em meses, a lacuna entre a publicação de pesquisa ofensiva e a cobertura defensiva é uma vulnerabilidade sistêmica em toda a nossa indústria.


5. Três Cadeias, Uma Campanha

A telemetria da Kaspersky adiciona outra dimensão que a resposta a incidentes da Rapid7 não capturou totalmente: os atacantes executaram três cadeias de infecção distintas ao longo de quatro meses, cada uma visando vítimas diferentes com ferramentas diferentes:

A progressão conta uma história. Cadeia 1 usa ferramentas de commodity (exploit ProShow, Metasploit). Cadeia 2 introduz scripting Lua para flexibilidade. Cadeia 3 implanta o backdoor personalizado Chrysalis — sua joia da coroa.

Isso parece uma operação que estava testando e refinando seus mecanismos de entrega em alvos iniciais antes de implantar suas ferramentas mais valiosas nos alvos de maior prioridade.

Os alvos em todas as três cadeias: organizações governamentais nas Filipinas, instituições financeiras em El Salvador, provedores de serviços de TI no Vietnã e indivíduos na Austrália. Alvos clássicos de coleta de inteligência para uma operação de espionagem focada no Sudeste Asiático.


6. O Que Sua Equipe Deve Fazer na Segunda-Feira de Manhã

Eu não escrevo seções como esta com frequência. A maioria dos "conselhos de mitigação" em análises de segurança é genérica a ponto de ser inútil. Mas este ataque tem lições específicas e acionáveis.

6.1 Audite os Mecanismos de Atualização de Ferramentas de Desenvolvedor

Execute este comando em cada estação de trabalho de desenvolvedor em sua organização:

powershell
# Windows: Encontrar executáveis de atualização automática em locais comuns de ferramentas dev Get-ChildItem -Path "$env:APPDATA", "$env:LOCALAPPDATA", "$env:PROGRAMFILES", "${env:PROGRAMFILES(x86)}" ` -Recurse -Include "*update*","*updater*","*GUP*" -ErrorAction SilentlyContinue | Where-Object { $_.Extension -in '.exe','.dll' } | Select-Object FullName, LastWriteTime, @{N='Signed';E={(Get-AuthenticodeSignature $_.FullName).Status}} | Format-Table -AutoSize
bash
# macOS/Linux: Encontrar binários de atualização automática find ~/Library/Application\ Support /usr/local /opt \ -name "*update*" -o -name "*updater*" 2>/dev/null | \ while read f; do echo "$f $(stat -f '%Sm' "$f" 2>/dev/null || stat -c '%y' "$f" 2>/dev/null)" done

Qualquer atualizador que não verifique assinaturas criptográficas em binários baixados é um risco à cadeia de suprimentos. Ponto final.

6.2 Cace Indicadores do Chrysalis

Verifique seu ambiente para estes artefatos específicos:

yaml
# Sigma Rule - Detecção do Backdoor Chrysalis title: Chrysalis Backdoor - Notepad++ Supply Chain id: gsstk-a0079-chrysalis-detect status: experimental description: Detects artifacts associated with Chrysalis backdoor references: - https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/ logsource: category: process_creation product: windows detection: selection_process: Image|endswith: '\BluetoothService.exe' Image|contains: '\AppData\' selection_network: DestinationHostname|contains: - 'api.skycloudcenter.com' - 'api.wiresguard.com' selection_files: TargetFilename|contains: - '\AppData\Roaming\Bluetooth\BluetoothService.exe' - '\AppData\Roaming\Bluetooth\log.dll' condition: selection_process or selection_network or selection_files falsepositives: - Legitimate Bluetooth software (verify publisher signature) level: high tags: - attack.execution - attack.t1574.002 - attack.t1195.002

6.3 Imponha Verificação de Binários em CI/CD

Se seu pipeline de build baixa ferramentas em tempo de execução (e a maioria o faz), adicione verificação de assinatura:

bash
# Exemplo: Verificar assinatura GPG antes de usar ferramenta baixada gpg --keyserver keyserver.ubuntu.com --recv-keys $EXPECTED_KEY_ID gpg --verify tool.sig tool.bin || { echo "FALHA NA VERIFICAÇÃO DE ASSINATURA"; exit 1; } # Exemplo: Fixar hashes SHA-256 para binários conhecidos EXPECTED_HASH="abc123..." ACTUAL_HASH=$(sha256sum downloaded-tool | awk '{print $1}') if [ "$EXPECTED_HASH" != "$ACTUAL_HASH" ]; then echo "MISMATCH DE HASH - possível comprometimento da cadeia de suprimentos" exit 1 fi

6.4 Detecção em Nível de Rede

Bloqueie ou alerte sobre os seguintes domínios e IPs C2 imediatamente:

# IOCs de Rede (da Rapid7 e Kaspersky)
api.skycloudcenter[.]com
api.wiresguard[.]com
95.179.213[.]0

# Padrão de URI (Imitação DeepSeek)
/a/chat/s/[Padrão GUID]

Monitore tráfego HTTPS para esses destinos e considere alertar sobre qualquer tráfego de estações de trabalho de desenvolvedores para endpoints que correspondam ao padrão de URI /a/chat/s/ com strings User-Agent do Chrome — o uso legítimo do DeepSeek se originaria de um navegador, não de um serviço em segundo plano.


7. O Quadro Geral: Sua Toolchain é uma Superfície de Ataque

Escrevemos sobre o React2Shell (CVE-2025-55182) no artigo a0070, e sobre riscos de segurança MCP nos artigos a0055 e a0062. O comprometimento do Notepad++ faz parte da mesma macro-tendência: a cadeia de suprimentos de software — do seu IDE ao seu sistema de build e ao seu gerenciador de pacotes — é agora a principal superfície de ataque para atores de ameaças sofisticados.

O manual SolarWinds de 2020 foi industrializado. A Lotus Blossom não precisou de uma operação em escala Orion. Eles comprometeram um provedor de hospedagem compartilhado e armaram um mecanismo de atualização que não havia mudado significativamente em anos. O ataque estava rodando há seis meses antes da descoberta. E o conjunto de alvos — governo, telecomunicações, finanças, infraestrutura crítica — diz que esta não foi uma operação motivada financeiramente. Isso foi coleta de inteligência em escala.

Para aqueles de nós que criam software para viver, a lição é simples e difícil de implementar: trate cada ferramenta em seu ambiente de desenvolvimento como um vetor de ataque potencial. Seu editor de texto. Seu emulador de terminal. Sua GUI Git. Sua ferramenta de teste de API. Cada um deles tem um mecanismo de atualização, e a maioria desses mecanismos foi projetada para conveniência, não para segurança.

O Notepad++ desde então reforçou seu atualizador com verificação de assinatura de certificado e instalador na versão 8.8.9, com validação obrigatória de assinatura XML (XMLDSig) chegando na versão 8.9.2. Eles migraram para um novo provedor de hospedagem com segurança mais forte e rotacionaram todas as credenciais. Don Ho fez as coisas certas — depois do fato.

A pergunta é: quantas outras ferramentas na sua pasta %AppData% estão a um comprometimento de provedor de hospedagem do mesmo destino?

Eu não sei a resposta. E é isso que me mantém acordado à noite.


Principais Conclusões

  1. Ferramentas de desenvolvedor são alvos fáceis: Elas rodam em máquinas privilegiadas com acesso a credenciais, chaves e sistemas de produção — mas raramente recebem o mesmo escrutínio de segurança que a infraestrutura de produção.

  2. Ataques à cadeia de suprimentos estão se industrializando: O manual SolarWinds (comprometer infraestrutura, não código-fonte) está sendo adotado por mais atores de ameaças. O comprometimento de provedores de hospedagem é a nova fronteira.

  3. Malware personalizado evade defesas de commodity: O uso do Chrysalis de cifras de fluxo LCG, hashing de API de camada dupla e abuso do Warbird mostra como os atacantes estatais investem em engenharia de evasão.

  4. Ação sobre conscientização: Audite seus mecanismos de atualização, cace IOCs, imponha verificação de binários e monitore padrões C2. Estes são passos concretos que você pode tomar hoje.


Qual é a sua experiência com segurança de ferramentas de desenvolvedor? Você auditou os mecanismos de atualização em sua toolchain? Compartilhe suas descobertas nos comentários abaixo — e mantenha-se seguro por aí.

Receba novos artigos

Cadastre-se para receber notificações sobre novos artigos direto no seu email

Não enviaremos spam. Você pode cancelar a inscrição a qualquer momento.