CiberLab
Logotipo Ciência Embarcada Ciência Embarcada
Relatório técnico de análise de artefato

PseudoManuscrypt

Spyware de distribuição massiva por instaladores piratas e canal de comando KCP

Uma família de spyware que não chega por exploração remota nem por phishing dirigido, e sim pelo download voluntário de um ativador de software pirata. Este relatório reconstitui a cadeia de infecção, a persistência em serviço do Windows com carga guardada no registro, o canal de comando e controle em KCP sobre UDP com algoritmo de geração de domínios, e define o que caçar e o que bloquear em uma rede corporativa e de ensino.

Objeto analisado PseudoManuscrypt
Severidade avaliada Alta
Classificação TLP:CLEAR
Base de evidência OSINT verificado
Data de emissão 31 de agosto de 2026
Versão 2.0

00Sumário

  1. 01Sumário executivo
  2. 02Identificação do objeto analisado
  3. 03O mercado que entrega o implante
  4. 04Cadeia de infecção
  5. 05Persistência, evasão e residência no registro
  6. 06Capacidades de espionagem
  7. 07Comando e controle: KCP, DGA e sinkhole
  8. 08Alcance da campanha e exposição industrial
  9. 09Detecção
  10. 10Mitigação e resposta
  11. 11Indicadores de comprometimento
  12. 12Limitações da análise
  13. 13Referências
Achado principal

O PseudoManuscrypt é spyware de coleta ampla distribuído por um serviço de pagamento por instalação (PPI), entregue dentro de instaladores de software pirata anunciados em sites otimizados para busca [1] [3]. O vetor de entrada não é uma falha técnica da rede, e sim uma decisão do usuário de executar um ativador ou keygen.

Consequência operacional: uma estação que executou instalador pirata deve ser tratada como candidata a comprometimento, mesmo sem alerta de antivírus. O implante desativa defesas antes de operar [1].

A carga registra teclas, captura tela e áudio e rouba credenciais de VPN, enviando tudo por KCP sobre UDP na porta 53 [2], que atravessa sem esforço regras escritas para HTTP.

01Sumário executivo

O PseudoManuscrypt foi identificado pela Kaspersky ICS CERT em junho de 2021 e recebeu esse nome porque o seu carregador guarda semelhanças com o Manuscrypt, ferramenta associada ao grupo Lazarus, sem que a atribuição se sustente [1]. Entre 20 de janeiro e 10 de novembro de 2021, os produtos da fabricante bloquearam a família em mais de 35.000 computadores em 195 países [1].

A distribuição não é dirigida. O implante chega por uma plataforma de malware como serviço que empacota cargas dentro de instaladores de software pirata, promovidos por envenenamento de resultados de busca [1] [3]. Isso produz um perfil de vítima peculiar, porque a mesma campanha atinge o computador doméstico e a estação de engenharia de uma planta industrial. Segundo a telemetria da fabricante, 7,2% das máquinas atacadas pertenciam a sistemas de controle industrial, com concentração em engenharia e automação predial [1].

>35 mil computadores bloqueados pela telemetria em 2021 [1]
195 países e territórios com infecções bloqueadas [1]
7,2% das vítimas em ambiente industrial (ICS/SCADA) [1]
100 versões distintas do carregador catalogadas [1]
~500 mil máquinas vistas em 8 meses de sinkhole [2]
53/UDP porta do canal principal de C2 sobre protocolo KCP [2]

Três características tornam o caso relevante para uma rede corporativa e de ensino:

As recomendações se organizam em detecção (seção 09), que parte de DNS, de fluxos UDP anômalos e de telemetria de EDR (Endpoint Detection and Response), e em resposta (seção 10), que trata a estação como comprometida e assume vazamento de credenciais.

02Identificação do objeto analisado

Este relatório não descreve uma detonação local

Não houve submissão a sandbox nem análise de amostra por esta equipe. Todo o conteúdo técnico é inteligência de fonte aberta, extraída das referências [1] a [4] e conferida contra o texto original de cada uma. Não trate as informações abaixo como prova pericial de um incidente local. Elas servem para orientar caça e resposta, e cada achado precisa ser confirmado no seu próprio ambiente.

Tabela 1. Ficha técnica da família
CampoValor
NomePseudoManuscrypt
ClasseSpyware modular, com carregador e módulo principal
PlataformaMicrosoft Windows, 32 e 64 bits
Primeira observaçãoCompilações de teste a partir de 27 de março de 2021 [1]
DivulgaçãoKaspersky ICS CERT, 16 de dezembro de 2021 [1]
Veredito de exemploTrojan.Win64.Manuscrypt.do [1]
Origem do nomeSemelhança do carregador com o Manuscrypt, do arsenal Lazarus, sem atribuição confirmada [1]
CatálogoMalpedia, win.pseudo_manuscrypt [4]
Sobre a atribuição

A fonte primária reúne indícios de operador de língua chinesa: comentários em chinês nos metadados das compilações de teste, cabeçalho de idioma preferido zh-cn, uso da biblioteca KCP antes vista apenas no arsenal do APT41, integração com armazenamento em nuvem Baidu e janela de atividade compatível com GMT+8 [1]. Nenhum desses pontos, isolado ou somado, fecha atribuição a um grupo. Não use este relatório para afirmar autoria. A campanha se comporta como crime comum de coleta em massa, e é assim que ela deve ser respondida.

03O mercado que entrega o implante

Compreender o modelo de distribuição importa mais aqui do que em uma campanha dirigida, porque ele determina onde a defesa é possível. O PseudoManuscrypt não escolhe as suas vítimas: ele é uma das cargas compradas em uma plataforma de pagamento por instalação (PPI), na qual o operador paga por máquina infectada e escolhe filtros de país e de perfil [3].

A cadeia comercial funciona da seguinte forma:

  1. o distribuidor mantém páginas otimizadas para busca oferecendo software pirata, ativadores, geradores de chave e cópias de ferramentas de engenharia;
  2. o usuário procura por um ativador, encontra a página no topo do resultado e baixa um arquivo compactado, com frequência protegido por senha para escapar da inspeção de conteúdo;
  3. o instalador dentro do arquivo executa o carregador do serviço de distribuição, que consulta a plataforma e baixa as cargas contratadas naquele momento;
  4. o PseudoManuscrypt é uma dessas cargas, ao lado de dezenas de outras famílias, entre ladrões de dados, mineradores e ransomware [3].
Tabela 2. Exemplos de arquivos usados como isca, citados na fonte primária [1]
Nome do arquivoSoftware imitado
microsoft_office_365_july_keygen_by_keygensumo.zipSuíte de escritório
windows_10_pro_full_keygen_by_keygensumo.zipSistema operacional
modscan32_v8_a00_crack.zipFerramenta Modbus, uso industrial
solarwinds_broadband_engineers_keymaker.zipGerência de rede
Por que isso explica a presença em ambiente industrial

Duas das quatro iscas documentadas imitam ferramentas de engenharia e de rede, não jogos ou utilitários domésticos. O público que procura uma cópia pirata de um cliente Modbus ou de um pacote de gerência de rede é exatamente o operador com acesso privilegiado a sistemas sensíveis.

A consequência para a política institucional é direta: tratar software pirata como questão de licenciamento é subestimar o problema. Neste caso é o vetor de infecção principal, e ele entra pela estação com maior valor de espionagem.

Não conclua exclusividade do vetor

A fonte primária documenta também a instalação do carregador por meio da botnet Glupteba [1], ou seja, em máquina já comprometida por outro motivo. Uma estação sem histórico de download pirata não fica descartada pela ausência desse indício. Use o vetor para priorizar a caça, não para encerrá-la.

04Cadeia de infecção

A fonte primária documenta duas variantes de cadeia, ambas partindo do arquivo baixado pelo usuário e terminando no módulo principal de espionagem [1]. As duas ilustram o mesmo padrão: vários estágios curtos, cada um com nome banal, para diluir a responsabilidade entre processos que isoladamente parecem inofensivos.

4.1Variante por gerador de chave

A primeira cadeia parte de um arquivo de lote e termina em uma descarga remota do módulo principal:

Cadeia de execuçãoVariante por gerador de chave [1]
key.bat
  └─ Keygen-step-4.exe        # e41826b342686c7f879474c49c7eed98
       └─ flash player.exe    # 2aab0ec738374db4e872812a84a0bc11
            └─ 2.exe          # 8b9f6b0c98c0afdd75c2322f1ca4d0e8
                 └─ game.exe  # baixado de google.diragame[.]com

O último estágio é obtido em hxxps://google[.]diragame[.]com/userf/3002/gogonami.exe [1]. Note o padrão de nomenclatura: a palavra game aparece no subdomínio de boa parte da infraestrutura desta campanha, incluindo os servidores de comando e controle da seção 07.

4.2Variante por instalador agrupado

A segunda cadeia é a assinatura clássica do serviço de pagamento por instalação, com um instalador que descompacta vários executáveis numerados e os dispara em sequência:

Cadeia de execuçãoVariante por instalador agrupado (PPI) [1]
main_setup_x86x64.exe        # 1fecb6eb98e8ee72bb5f006dd79c6f2f
  └─ setup_installer.exe     # 5de2818ced29a1fedb9b24c1044ebd45
       └─ setup_install.exe  # 58efaf6fa04a8d7201ab19170785ce85
            └─ metina_8.exe  # 839e9e4d6289eba53e40916283f73ca6
                 └─ crack.exe # 89c8e5a1e24f05ede53b1cab721c53d8

Esta variante compartilha infraestrutura com a botnet Glupteba [1]. O nome crack.exe no estágio final é o próprio PseudoManuscrypt.

O que aproveitar disso na caça

Os hashes acima identificam amostras específicas de 2021 e a fonte cataloga cem versões distintas do carregador [1]. Use-os em caça retroativa, e não como base de bloqueio: o valor duradouro está no padrão de execução, ou seja, um processo em %TEMP% ou em pasta de download disparando uma cadeia de três a cinco executáveis não assinados em poucos segundos, com nomes como setup_install, crack ou keygen.

05Persistência, evasão e residência no registro

Esta é a parte mais acionável do relatório, porque descreve artefatos que sobrevivem no disco e no registro da máquina infectada, ao contrário do tráfego, que só existe no momento da comunicação.

5.1Serviço do Windows como âncora

O carregador se instala como serviço do Windows, com biblioteca de nome aleatório [1]. A fonte documenta dois nomes de serviço em variantes distintas:

Tabela 3. Nomes de serviço documentados [1]
NomeNome de exibiçãoVariante
AppServicen/dVariante inicial
iexploreSystem Remote Data Simulation LayeerrVariante posterior

O nome de exibição da segunda variante contém um erro de grafia evidente, Layeerr, e é justamente esse tipo de imperfeição que uma busca por texto exato encontra em segundos em toda a frota.

5.2Carga guardada no registro, não em arquivo

O implante armazena a carga cifrada dentro do registro, sob HKLM\SOFTWARE\Classes\CLSID, em um identificador derivado do MachineGuid da máquina, o que torna o caminho diferente em cada vítima [1].

A técnica derrota dois controles ao mesmo tempo. Primeiro, uma varredura de disco por executável malicioso não encontra a carga, porque ela não está em arquivo. Segundo, um indicador de caminho de registro colhido em uma vítima não serve para procurar nas demais, porque a semente é local. A caça precisa então mirar o formato, ou seja, valores anormalmente grandes e binários sob CLSID, e não um caminho literal.

5.3Neutralização de defesas

Segundo a fonte primária [1], o implante realiza as seguintes ações evasivas:

O artefato de caça mais forte deste caso

Uma exclusão de caminho no Windows Defender que ninguém da equipe de TI criou é o indicador de maior valor disponível, porque é comportamental, sobrevive à recompilação do implante e é trivial de inventariar em toda a frota por política de grupo ou por consulta de EDR.

Some a isso o apagamento de log de eventos. Os dois juntos, na mesma máquina e na mesma janela de tempo, praticamente eliminam a hipótese de falso positivo.

5.4Artefatos em disco

Apesar da residência no registro, a fonte documenta caminhos fixos que valem uma varredura [1]:

Tabela 4. Caminhos de arquivo documentados [1]
CaminhoPapel
%WinDir%\System32\[0-Z]{10}.tmpComponente do carregador, nome de dez caracteres aleatórios, por exemplo I59RFRLY9J.tmp
%TEMP%\[0-Z]{10}.tmpMesma convenção, em área temporária do usuário
%System32%\9cda11af69ab0a2b6a9167f7131e7b93.keyArquivo de registro de teclas digitadas, nome fixo entre vítimas

O último é o mais valioso dos três, porque o nome não varia. Uma varredura por esse arquivo em System32 é barata, específica e conclusiva.

06Capacidades de espionagem

O módulo principal evoluiu entre as versões documentadas. A tabela separa o que já existia na primeira versão do que foi acrescentado a partir de julho de 2021, porque essa distinção importa para estimar o dano de uma infecção antiga [1].

Tabela 5. Funções de coleta do módulo principal [1]
FunçãoVersãoDetalhe
Registro de teclas1 e 2Código da tecla, nome da janela ativa e carimbo de tempo
Área de transferência1 e 2Cópia do conteúdo copiado pelo usuário
Credenciais de VPN1 e 2Leitura de rasphone.pbk no perfil do usuário e em %ProgramData%
Registros de eventos1 e 2Coleta dos logs de Aplicação, Sistema e Segurança
Áudio do microfone1 e 2Gravação ativada por comando do servidor
Vídeo da tela2Captura contínua comprimida com codec XviD 1.3.0
Contas de mensageria2Credenciais de QQ e WeChat
Inventário do host2Versão e compilação do Windows, atualizações, papel do servidor, adaptadores de rede e portas em escuta
Autoatualização2Troca do próprio binário e autorremoção por comando
Consequência para o plano de resposta

Um host com este implante entregou tudo o que foi digitado nele, incluindo senhas que nunca aparecem em log e conteúdo de sessões autenticadas capturado em vídeo. A rotação de credenciais da seção 10.2 não é uma formalidade de checklist: é a única medida que limita o dano depois do fato.

Atenção especial às credenciais de VPN. A leitura de rasphone.pbk é dirigida, e a conta de VPN costuma dar acesso interno bem mais amplo do que a estação comprometida.

07Comando e controle: KCP, DGA e sinkhole

7.1O protocolo

O canal de exfiltração usa uma implementação do KCP, protocolo de transporte confiável construído sobre UDP, antes visto apenas no arsenal do APT41 [1]. O trabalho de sinkhole da Bitsight detalha a operação em rede: KCP sobre UDP na porta 53, com TCP na porta 443 como reserva, em duas camadas, uma de metadados iniciada pelo byte 0x43 e outra de carga, com compressão zlib ou RtlCompressBuffer e cifra XOR opcional de chave 0x88 [2].

Não leia porta 53 como DNS

Um fluxo UDP na porta 53 que não contém consultas DNS válidas passa despercebido por qualquer regra escrita em cima do número da porta. Não classifique tráfego por porta neste caso. A detecção precisa de inspeção de protocolo, ou do controle estrutural da seção 10.4, que é permitir UDP 53 de saída apenas a partir do resolvedor institucional. Uma estação de usuário falando UDP 53 diretamente com a internet já é anomalia, independentemente do conteúdo.

7.2Servidores e geração de domínios

A fonte primária lista os servidores embutidos nas amostras analisadas [1]:

Tabela 6. Servidores de comando e controle documentados [1] [2]
DomínioPapel
toa.mygametoa[.]comC2 principal, semente do algoritmo de geração de domínios (DGA) [2]
tob.mygametob[.]comC2 secundário, usado também como canal de atualização [2]
email.yg9[.]meServidor de C2 em amostras analisadas [1]
google.vrthcobj[.]comServidor de C2 em amostras analisadas [1]
d.diragame[.]comColeta de estatísticas, associada à plataforma de distribuição [1]

Bloquear apenas esses cinco nomes é insuficiente, porque o implante gera domínios de reserva. O algoritmo DGA (Domain Generation Algorithm) documentado pela Bitsight [2] é circular e determinístico:

  1. calcula um MD5 sobre o domínio de C2 embutido concatenado a uma chave constante, separados por vírgula;
  2. extrai oito bytes das posições 4 a 12 do resumo;
  3. converte os valores hexadecimais em letras, com os dígitos virando a a j e as letras maiúsculas virando m a r;
  4. acrescenta o sufixo .com.

O resultado é um espaço de cerca de 585.723 domínios a partir do C2 principal e 812.811 a partir do secundário [2]. Todos obedecem ao mesmo formato, e é esse formato, e não a lista, que serve de regra de detecção: dez caracteres do conjunto a a j e m a r, seguidos de .com.

7.3Estado atual da infraestrutura

A Bitsight registrou mais de cinquenta desses domínios gerados e os converteu em sinkhole, passando a observar a população de vítimas [2]. Isso significa que parte do tráfego de C2 desta campanha hoje chega a um servidor de pesquisa, e não ao operador. Como no caso de qualquer sinkhole, a consequência prática é que o beaconing continua saindo das máquinas infectadas, e é justamente por isso que ele permanece detectável: o host segue chamando, ainda que ninguém responda com ordens.

Nota sobre a idade da infraestrutura

A pesquisa de sinkhole foi publicada em outubro de 2022 e descreve o estado da botnet àquela época [2]. Domínios expiram e são reaproveitados, e a botnet mudou de versão durante o próprio período observado. Confira o estado atual antes de agir sobre qualquer nome desta seção, e prefira as regras de formato, que não envelhecem.

08Alcance da campanha e exposição industrial

Duas medições independentes dimensionam a campanha. A telemetria de antivírus da Kaspersky contabiliza mais de 35.000 computadores em 195 países entre 20 de janeiro e 10 de novembro de 2021, com picos de distribuição em 27 de março e 15 de maio [1]. O sinkhole da Bitsight, olhando o outro lado do canal, observou cerca de 500.000 máquinas em oito meses, sobre 2,2 milhões de endereços IP distintos, com pico de 51.500 identificadores únicos de cliente e botnet diário entre 7.000 e 16.000 máquinas [2].

Por que os dois números diferem tanto

As medições não são comparáveis, e somá-las seria erro. A primeira conta bloqueios em máquinas protegidas por um fabricante específico; a segunda conta infecções ativas que chegaram a falar com o servidor, ou seja, máquinas onde nada bloqueou. A diferença de ordem de grandeza entre elas é a própria medida do que passa despercebido.

A distribuição setorial das vítimas industriais, segundo a telemetria da fonte primária [1], é o dado que justifica a severidade atribuída a esta família:

Tabela 7. Participação de cada setor entre as vítimas em ambiente industrial [1]
SetorParcelaRelevância
Uso geral, não classificado51,2%Contexto
Engenharia, incluindo modelagem 3D31,5%Alta
Automação predial12,5%Alta
Manufatura2,1%Média
Energia1,8%Média
Construção0,7%Baixa
Utilidades0,1%Baixa
Saneamento0,1%Baixa

Fora do universo industrial, a concentração geográfica reportada é Rússia com 10,1%, Índia com 10% e Brasil com 9,3% [1]. O Brasil é, portanto, o terceiro país mais atingido pela campanha, o que basta para justificar a caça preventiva descrita na seção seguinte mesmo sem alerta em aberto.

09Detecção

A ordem abaixo reflete a relação entre custo e cobertura. Os dois primeiros itens exigem apenas consultas sobre dados que a maioria das instituições já coleta.

9.1Exclusões do Windows Defender, a consulta de maior retorno

Comece por aqui. Inventarie as exclusões de caminho em toda a frota e confronte a lista com o que a equipe de TI configurou de propósito. Toda exclusão não explicada é candidata a investigação imediata, e a consulta é barata em qualquer EDR.

KQL, Microsoft Defender for EndpointExclusões e serviços suspeitos [1]
DeviceRegistryEvents
| where RegistryKey has "Windows Defender\\Exclusions"
     or RegistryValueData has "System Remote Data Simulation Layeerr"
| project Timestamp, DeviceName, ActionType, RegistryKey,
          RegistryValueName, RegistryValueData,
          InitiatingProcessFileName, InitiatingProcessFolderPath
| order by Timestamp asc

9.2Artefatos fixos em disco e em serviço

O arquivo de teclas digitadas tem nome constante entre vítimas (seção 5.4), o que o torna o melhor alvo de varredura ampla. O mesmo vale para o nome de exibição do serviço.

KQL, Microsoft Defender for EndpointArquivos e serviços fixos [1]
DeviceFileEvents
| where FileName == "9cda11af69ab0a2b6a9167f7131e7b93.key"
     or (FolderPath has @"\Windows\System32"
         and FileName matches regex @"^[0-9A-Z]{10}\.tmp$")
| project Timestamp, DeviceName, FolderPath, FileName,
          InitiatingProcessFileName, InitiatingProcessCommandLine
| order by Timestamp asc

9.3DNS e o formato dos domínios gerados

A lista de domínios da seção 7.2 é um piso. O ganho real vem de procurar o formato produzido pelo algoritmo, ou seja, dez caracteres restritos a a a j e m a r, seguidos de .com. O conjunto de letras exclui k, l e todas as vogais fora de a, e e i em posição arbitrária, o que torna o padrão bastante específico contra nomes legítimos.

SPL, SplunkDomínios conhecidos e formato do algoritmo [1] [2]
index=dns (query="*mygametoa.com" OR query="*mygametob.com"
           OR query="*yg9.me" OR query="*vrthcobj.com"
           OR query="*diragame.com" OR query="*diregame.live")
| append
  [ search index=dns query_regex="^[a-jm-r]{10}\.com$" ]
| stats count, dc(query) AS dominios_distintos,
        min(_time) AS primeiro, max(_time) AS ultimo BY src_ip
| sort - dominios_distintos, - count
Espere ruído neste padrão

Dez letras minúsculas com sufixo .com também descrevem domínios legítimos. Não bloqueie o padrão diretamente no resolvedor, porque a taxa de falso positivo derruba serviço. Use-o como consulta de caça e priorize pelo sinal que realmente distingue a família: um mesmo host consultando muitos domínios distintos desse formato em curto intervalo, com boa parte deles sem resposta, que é a assinatura de qualquer algoritmo de geração de domínios.

9.4Fluxos de rede

9.5Regras de IDS e IPS

As regras abaixo cobrem o canal de reserva e o cabeçalho de agente de usuário documentado na fonte primária, que é obsoleto e por si só anômalo em uma frota atual [1]. Seguem a sintaxe documentada em [5].

SuricataDerivada de [1] [5], não validada contra tráfego real
# Agente de usuário obsoleto documentado na campanha
alert http $HOME_NET any -> $EXTERNAL_NET any (
  msg:"CIBERLAB PSEUDOMANUSCRYPT User-Agent MSIE 6.0 legado";
  flow:established,to_server;
  http.user_agent;
  content:"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";
  classtype:trojan-activity; priority:2;
  sid:9100001; rev:1;
)

# UDP 53 de saída que não é consulta DNS, fora do resolvedor
alert udp $HOME_NET any -> !$DNS_SERVERS 53 (
  msg:"CIBERLAB PSEUDOMANUSCRYPT Possivel KCP em porta 53";
  app-layer-protocol:!dns;
  dsize:>20;
  classtype:trojan-activity; priority:1;
  sid:9100002; rev:1;
)
Ajuste a segunda regra antes de ligar

A variável $DNS_SERVERS precisa ser definida com os resolvedores institucionais, e o controle de egresso da seção 10.4 deve estar em vigor. Não publique essa regra em modo de bloqueio sem essa preparação, porque em uma rede que permite resolvedor externo ela gera alerta para cada estação com DNS configurado à mão.

10Mitigação e resposta

10.1Contenção imediata

  1. Bloqueie os domínios da seção 7.2 no resolvedor recursivo, no proxy e no firewall de borda, sempre com registro em log. O objetivo é gerar alerta a cada tentativa, e não apenas impedir a conexão.
  2. Isole a estação identificada, mantendo-a ligada. Não reinicie, porque a carga vive cifrada no registro e é decifrada em memória, que é a melhor evidência disponível.
  3. Preserve evidências antes de qualquer remediação: captura de memória, cópia da colmeia de registro SOFTWARE, o arquivo de teclas digitadas quando presente, e exportação dos logs de EDR, proxy e DNS da janela relevante. Aja rápido, porque o implante limpa o log de eventos.

10.2Erradicação

  1. Enumere o serviço malicioso e a biblioteca associada, e reconstitua a cadeia parental até o instalador original baixado pelo usuário.
  2. Remova a exclusão indevida do Windows Defender e verifique se as chaves de fabricantes de segurança apagadas precisam de reinstalação do produto.
  3. Localize e extraia o valor sob HKLM\SOFTWARE\Classes\CLSID que guarda a carga, para análise própria. Não conte com um caminho fixo, porque ele deriva do MachineGuid local (seção 5.2).
  4. Reinstale o sistema a partir de imagem confiável. Dada a desativação de defesas e a possibilidade de outras cargas terem sido entregues pelo mesmo serviço de distribuição, remoção pontual não oferece garantia de erradicação.
  5. Rotacione todas as credenciais usadas na máquina, com prioridade para VPN, conta de domínio, chaves SSH, tokens de aplicação e sessões de navegador. Havendo registro de teclas ativo, assuma que todas foram capturadas (seção 06).

10.3Avaliação de alcance

Verifique nos logs de DNS e de fluxo se outras estações apresentam o mesmo padrão, e trate a origem como problema de política, não como caso isolado. Se a infecção veio de instalador pirata, procure a mesma origem de download nos logs de proxy da instituição inteira, porque uma página que atendeu um usuário costuma ter atendido vários. Considere ainda que o serviço de distribuição entrega dezenas de famílias distintas por instalação [3], portanto a presença do PseudoManuscrypt em um host não exclui a presença simultânea de um ladrão de dados ou de um minerador.

10.4Prevenção estrutural

Tabela 8. Controles recomendados para prevenção estrutural
ControleAplicação
Controle de execuçãoApplication allowlisting ou WDAC nas estações, com atenção especial às de engenharia. É o único controle que impede de fato a execução de um ativador pirata.
Egresso de DNSPermitir UDP e TCP na porta 53 de saída apenas a partir dos resolvedores institucionais. Fecha o canal principal desta família e elimina resolvedores externos como evasão.
DNS RPZ e filtragemResponse Policy Zones no resolvedor, alimentadas por feeds de C2, mais bloqueio de categorias de software pirata e de warez.
Integridade das defesasAlerta dedicado para criação de exclusão no Windows Defender, para parada de serviço de antivírus e para limpeza de log de eventos, com envio ao SIEM em prioridade alta.
Política de softwareProvimento de alternativas licenciadas ou livres para as ferramentas que os usuários hoje piratam, comunicada de forma ativa. Proibição sem alternativa apenas empurra o download para fora da rede monitorada.
Retenção de logsLogs de DNS, proxy e fluxo por 90 dias no mínimo. Como o implante apaga o log local de eventos, a linha do tempo terá de ser reconstruída pela rede.

10.5Mapeamento MITRE ATT&CK, acesso inicial e evasão

As técnicas abaixo derivam da literatura das seções 03 a 05, e não de observação local. Os nomes seguem o catálogo oficial [6].

Tabela 9. Técnicas de acesso inicial, persistência e evasão [6]
TécnicaNomeRelação com o caso
T1608.006Stage Capabilities: SEO PoisoningPáginas de software pirata promovidas no topo dos resultados de busca (seção 03)
T1204.002User Execution: Malicious FileExecução voluntária do ativador ou gerador de chave baixado (seção 04)
T1543.003Create or Modify System Process: Windows ServiceCarregador instalado como serviço, com nome de exibição forjado (seção 5.1)
T1112Modify RegistryCarga armazenada sob CLSID em caminho derivado do MachineGuid (seção 5.2)
T1027.013Obfuscated Files or Information: Encrypted/Encoded FileCarga mantida cifrada no registro, decifrada apenas em memória (seção 5.2)
T1685Disable or Modify ToolsExclusão no Windows Defender, encerramento de processos e remoção de chaves de fabricantes de segurança (seção 5.3)
T1685.005Disable or Modify Tools: Clear Windows Event LogsLimpeza dos registros de eventos do Windows (seção 5.3)

10.6Mapeamento MITRE ATT&CK, coleta e comando e controle

Tabela 10. Técnicas de coleta e de comunicação com o servidor [6]
TécnicaNomeRelação com o caso
T1056.001Input Capture: KeyloggingRegistro de teclas com nome de janela e carimbo de tempo (seção 06)
T1113Screen CaptureCaptura de tela e vídeo comprimido em XviD (seção 06)
T1123Audio CaptureGravação de microfone ativada por comando (seção 06)
T1115Clipboard DataRoubo do conteúdo da área de transferência (seção 06)
T1552.001Unsecured Credentials: Credentials In FilesLeitura de rasphone.pbk para obter dados de conexão VPN (seção 06)
T1095Non-Application Layer ProtocolKCP sobre UDP como transporte do canal de C2 (seção 7.1)
T1571Non-Standard PortUso da porta 53 para tráfego que não é DNS, e da 443 sem TLS (seção 7.1)
T1568.002Dynamic Resolution: Domain Generation AlgorithmsGeração circular por MD5 de centenas de milhares de domínios de reserva (seção 7.2)

11Indicadores de comprometimento

Tabela 11. Indicadores de rede extraídos das referências [1] e [2]
TipoIndicadorSeveridadeContexto e ação
Domíniotoa.mygametoa[.]comAltaC2 principal [1] [2]. Bloquear e alertar
Domíniotob.mygametob[.]comAltaC2 secundário e canal de atualização [1] [2]. Bloquear e alertar
Domínioemail.yg9[.]meAltaServidor de C2 em amostras analisadas [1]. Bloquear e alertar
Domíniogoogle.vrthcobj[.]comAltaServidor de C2 em amostras analisadas [1]. Bloquear e alertar
Domíniod.diragame[.]comAltaColeta de estatísticas da plataforma [1]. Bloquear e alertar
URLhxxps://google[.]diragame[.]com/userf/3002/gogonami.exeMédiaDescarga do módulo principal [1]. Caça retroativa
URLhxxps://jom[.]diregame[.]live/userf/2201/google-game.exeMédiaDescarga de componente secundário [1]. Caça retroativa
Padrão DNS^[a-jm-r]{10}\.com$ em volume, com respostas negativasMédiaDomínios gerados por algoritmo [2]. Caçar, não bloquear
ComportamentoUDP 53 de saída partindo de estação, fora do resolvedorAltaCanal de C2 em KCP [1] [2]. Alertar imediatamente
CabeçalhoUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)MédiaAgente legado documentado na campanha [1]. Monitorar em proxy
CabeçalhoAccept-Language: zh-cn em estação institucionalContextoIdioma preferido em compilações [1]. Apoio à triagem
Tabela 12. Indicadores de host extraídos das referências [1] e [2]
TipoIndicadorSeveridadeContexto e ação
Arquivo%System32%\9cda11af69ab0a2b6a9167f7131e7b93.keyAltaArquivo de teclas digitadas [1]. Caçar em disco
Arquivo%WinDir%\System32\[0-Z]{10}.tmp e %TEMP%\[0-Z]{10}.tmpMédiaComponentes do carregador [1]. Caçar em disco
Serviçoiexplore, exibido como System Remote Data Simulation LayeerrAltaServiço com erro no nome de exibição [1]. Caçar na frota
ServiçoAppServiceMédiaVariante inicial do serviço [1]. Verificar caso a caso
RegistroHKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions\PathsAltaExclusão indevida no Defender [1]. Inventariar e alertar
RegistroHKLM\SOFTWARE\Classes\CLSID (valor binário derivado de MachineGuid)MédiaCarga cifrada no registro [1]. Caçar por formato
MD51fecb6eb98e8ee72bb5f006dd79c6f2f
4da2c2abcf1df9749b64b34160bd3ebf
5dc7fbf2141f7dfe5215c94895bf959c
70e9416833b2f933b765042f8e1ea0bc
8074f73f7742309b033676cd03eb0928
8ae40c8418b2c36b58d2a43153544ddd
MédiaAmostras do carregador [1]. Caça retroativa
MD5e41826b342686c7f879474c49c7eed98
2aab0ec738374db4e872812a84a0bc11
8b9f6b0c98c0afdd75c2322f1ca4d0e8
5de2818ced29a1fedb9b24c1044ebd45
58efaf6fa04a8d7201ab19170785ce85
839e9e4d6289eba53e40916283f73ca6
89c8e5a1e24f05ede53b1cab721c53d8
MédiaCadeia de infecção da seção 04 [1]. Caça retroativa
SHA-256dd19804b5823cf2cab3afe4a386b427d9016e2673e82e0f030e4cff74ef73ce1
ecdfa028928da8df647ece7e7037bc4d492b82ff1870cc05cf982449f2c41786
MédiaComponentes sqlite.dll e sqlite.dat [2]. Caça retroativa
Sobre os hashes

A fonte primária catalogou cem versões do carregador [1], e os hashes acima cobrem uma fração mínima delas, colhida em 2021 e 2022. Não construa a detecção sobre eles, porque a ausência de correspondência não significa ausência da família. Eles servem para caça retroativa e para confirmar uma suspeita já levantada por outro indicador. A detecção sustentável está nos comportamentos: exclusão indevida no Defender, serviço com nome forjado, arquivo de teclas em System32 e UDP 53 fora do resolvedor.

12Limitações da análise

13Referências

  1. [1] Fonte primária. Kaspersky ICS CERT. PseudoManuscrypt: a mass-scale spyware attack campaign, 16 de dezembro de 2021. Análise que identificou e nomeou a família. Documenta as duas cadeias de infecção e os seus hashes, os nomes de serviço, o armazenamento da carga no registro sob CLSID, a exclusão no Windows Defender, os caminhos de arquivo, as funções de espionagem das duas versões do módulo principal, os servidores de C2 e a telemetria de 35.000 máquinas em 195 países. https://ics-cert.kaspersky.com/publications/reports/2021/12/16/pseudomanuscrypt-a-mass-scale-spyware-attack-campaign/
  2. [2] Bitsight. From Zero To 50k Infections: PseudoManuscrypt Sinkholing, Part 1, outubro de 2022. Pesquisa que registrou mais de cinquenta domínios gerados pelo algoritmo da família e os converteu em sinkhole. Fonte do detalhamento do KCP sobre UDP 53 com reserva em TCP 443, do algoritmo de geração de domínios e do seu espaço, das estatísticas de população de vítimas e dos componentes sqlite.dll e sqlite.dat. Sustenta as seções 7.1 a 7.3. https://www.bitsight.com/blog/zero-50k-infections-pseudomanuscrypt-sinkholing-part-1
  3. [3] Bitsight. Tracking PrivateLoader: Malware Distribution Service. Análise do serviço de pagamento por instalação distribuído por sites de software pirata otimizados para busca. Lista o PseudoManuscrypt entre as famílias entregues, ao lado de outras trinta. Sustenta o modelo de distribuição da seção 03 e a ressalva de cargas simultâneas da seção 10.3. https://www.bitsight.com/blog/tracking-privateloader-malware-distribution-service
  4. [4] Malpedia. PseudoManuscrypt (win.pseudo_manuscrypt). Verbete de catálogo mantido pelo Fraunhofer FKIE, usado neste relatório como identificador estável da família e como índice das publicações públicas a seu respeito. https://malpedia.caad.fkie.fraunhofer.de/details/win.pseudo_manuscrypt
  5. [5] Suricata. Rules Format Documentation. Referência de sintaxe para as regras propostas na seção 9.5, incluindo as palavras-chave http.user_agent, app-layer-protocol e dsize. https://docs.suricata.io/
  6. [6] MITRE ATT&CK. Enterprise Matrix. Fonte dos nomes oficiais das quinze técnicas mapeadas nas seções 10.5 e 10.6: T1608.006, T1204.002, T1543.003, T1112, T1027.013, T1685, T1685.005, T1056.001, T1113, T1123, T1115, T1552.001, T1095, T1571 e T1568.002. https://attack.mitre.org/

PseudoManuscrypt, relatório técnico de análise de artefato. Versão 2.0, emitida em 31 de agosto de 2026.
Lucas Rayan Guerra, CiberLab, uma iniciativa do Ciência Embarcada.
Classificado TLP:CLEAR: distribuição livre, sem restrição de compartilhamento.