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.
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.
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].
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.
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.
| Campo | Valor |
|---|---|
| Nome | PseudoManuscrypt |
| Classe | Spyware modular, com carregador e módulo principal |
| Plataforma | Microsoft Windows, 32 e 64 bits |
| Primeira observação | Compilações de teste a partir de 27 de março de 2021 [1] |
| Divulgação | Kaspersky ICS CERT, 16 de dezembro de 2021 [1] |
| Veredito de exemplo | Trojan.Win64.Manuscrypt.do [1] |
| Origem do nome | Semelhança do carregador com o Manuscrypt, do arsenal Lazarus, sem atribuição confirmada [1] |
| Catálogo | Malpedia, win.pseudo_manuscrypt [4] |
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.
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:
| Nome do arquivo | Software imitado |
|---|---|
| microsoft_office_365_july_keygen_by_keygensumo.zip | Suíte de escritório |
| windows_10_pro_full_keygen_by_keygensumo.zip | Sistema operacional |
| modscan32_v8_a00_crack.zip | Ferramenta Modbus, uso industrial |
| solarwinds_broadband_engineers_keymaker.zip | Gerência de rede |
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.
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.
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.
A primeira cadeia parte de um arquivo de lote e termina em uma descarga remota do módulo principal:
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.
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:
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.
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.
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.
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:
| Nome | Nome de exibição | Variante |
|---|---|---|
| AppService | n/d | Variante inicial |
| iexplore | System Remote Data Simulation Layeerr | Variante 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.
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.
Segundo a fonte primária [1], o implante realiza as seguintes ações evasivas:
HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths, para que o próprio artefato deixe de ser inspecionado;hosts, redirecionando resoluções de nome no próprio host.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.
Apesar da residência no registro, a fonte documenta caminhos fixos que valem uma varredura [1]:
| Caminho | Papel |
|---|---|
| %WinDir%\System32\[0-Z]{10}.tmp | Componente do carregador, nome de dez caracteres aleatórios, por exemplo I59RFRLY9J.tmp |
| %TEMP%\[0-Z]{10}.tmp | Mesma convenção, em área temporária do usuário |
| %System32%\9cda11af69ab0a2b6a9167f7131e7b93.key | Arquivo 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.
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].
| Função | Versão | Detalhe |
|---|---|---|
| Registro de teclas | 1 e 2 | Código da tecla, nome da janela ativa e carimbo de tempo |
| Área de transferência | 1 e 2 | Cópia do conteúdo copiado pelo usuário |
| Credenciais de VPN | 1 e 2 | Leitura de rasphone.pbk no perfil do usuário e em %ProgramData% |
| Registros de eventos | 1 e 2 | Coleta dos logs de Aplicação, Sistema e Segurança |
| Áudio do microfone | 1 e 2 | Gravação ativada por comando do servidor |
| Vídeo da tela | 2 | Captura contínua comprimida com codec XviD 1.3.0 |
| Contas de mensageria | 2 | Credenciais de QQ e WeChat |
| Inventário do host | 2 | Versão e compilação do Windows, atualizações, papel do servidor, adaptadores de rede e portas em escuta |
| Autoatualização | 2 | Troca do próprio binário e autorremoção por comando |
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.
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].
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.
A fonte primária lista os servidores embutidos nas amostras analisadas [1]:
| Domínio | Papel |
|---|---|
| toa.mygametoa[.]com | C2 principal, semente do algoritmo de geração de domínios (DGA) [2] |
| tob.mygametob[.]com | C2 secundário, usado também como canal de atualização [2] |
| email.yg9[.]me | Servidor de C2 em amostras analisadas [1] |
| google.vrthcobj[.]com | Servidor de C2 em amostras analisadas [1] |
| d.diragame[.]com | Coleta 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:
a a j e as letras maiúsculas virando m a r;.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.
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.
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.
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].
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:
| Setor | Parcela | Relevância |
|---|---|---|
| Uso geral, não classificado | 51,2% | Contexto |
| Engenharia, incluindo modelagem 3D | 31,5% | Alta |
| Automação predial | 12,5% | Alta |
| Manufatura | 2,1% | Média |
| Energia | 1,8% | Média |
| Construção | 0,7% | Baixa |
| Utilidades | 0,1% | Baixa |
| Saneamento | 0,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.
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.
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.
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
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.
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
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.
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
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.
0x43 e que não obedeça ao formato de mensagem DNS [2].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].
# 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;
)
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.
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.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).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.
| Controle | Aplicação |
|---|---|
| Controle de execução | Application 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 DNS | Permitir 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 filtragem | Response Policy Zones no resolvedor, alimentadas por feeds de C2, mais bloqueio de categorias de software pirata e de warez. |
| Integridade das defesas | Alerta 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 software | Provimento 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 logs | Logs 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. |
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].
| Técnica | Nome | Relação com o caso |
|---|---|---|
| T1608.006 | Stage Capabilities: SEO Poisoning | Páginas de software pirata promovidas no topo dos resultados de busca (seção 03) |
| T1204.002 | User Execution: Malicious File | Execução voluntária do ativador ou gerador de chave baixado (seção 04) |
| T1543.003 | Create or Modify System Process: Windows Service | Carregador instalado como serviço, com nome de exibição forjado (seção 5.1) |
| T1112 | Modify Registry | Carga armazenada sob CLSID em caminho derivado do MachineGuid (seção 5.2) |
| T1027.013 | Obfuscated Files or Information: Encrypted/Encoded File | Carga mantida cifrada no registro, decifrada apenas em memória (seção 5.2) |
| T1685 | Disable or Modify Tools | Exclusão no Windows Defender, encerramento de processos e remoção de chaves de fabricantes de segurança (seção 5.3) |
| T1685.005 | Disable or Modify Tools: Clear Windows Event Logs | Limpeza dos registros de eventos do Windows (seção 5.3) |
| Técnica | Nome | Relação com o caso |
|---|---|---|
| T1056.001 | Input Capture: Keylogging | Registro de teclas com nome de janela e carimbo de tempo (seção 06) |
| T1113 | Screen Capture | Captura de tela e vídeo comprimido em XviD (seção 06) |
| T1123 | Audio Capture | Gravação de microfone ativada por comando (seção 06) |
| T1115 | Clipboard Data | Roubo do conteúdo da área de transferência (seção 06) |
| T1552.001 | Unsecured Credentials: Credentials In Files | Leitura de rasphone.pbk para obter dados de conexão VPN (seção 06) |
| T1095 | Non-Application Layer Protocol | KCP sobre UDP como transporte do canal de C2 (seção 7.1) |
| T1571 | Non-Standard Port | Uso da porta 53 para tráfego que não é DNS, e da 443 sem TLS (seção 7.1) |
| T1568.002 | Dynamic Resolution: Domain Generation Algorithms | Geração circular por MD5 de centenas de milhares de domínios de reserva (seção 7.2) |
| Tipo | Indicador | Severidade | Contexto e ação |
|---|---|---|---|
| Domínio | toa.mygametoa[.]com | Alta | C2 principal [1] [2]. Bloquear e alertar |
| Domínio | tob.mygametob[.]com | Alta | C2 secundário e canal de atualização [1] [2]. Bloquear e alertar |
| Domínio | email.yg9[.]me | Alta | Servidor de C2 em amostras analisadas [1]. Bloquear e alertar |
| Domínio | google.vrthcobj[.]com | Alta | Servidor de C2 em amostras analisadas [1]. Bloquear e alertar |
| Domínio | d.diragame[.]com | Alta | Coleta de estatísticas da plataforma [1]. Bloquear e alertar |
| URL | hxxps://google[.]diragame[.]com/userf/3002/gogonami.exe | Média | Descarga do módulo principal [1]. Caça retroativa |
| URL | hxxps://jom[.]diregame[.]live/userf/2201/google-game.exe | Média | Descarga de componente secundário [1]. Caça retroativa |
| Padrão DNS | ^[a-jm-r]{10}\.com$ em volume, com respostas negativas | Média | Domínios gerados por algoritmo [2]. Caçar, não bloquear |
| Comportamento | UDP 53 de saída partindo de estação, fora do resolvedor | Alta | Canal de C2 em KCP [1] [2]. Alertar imediatamente |
| Cabeçalho | User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) | Média | Agente legado documentado na campanha [1]. Monitorar em proxy |
| Cabeçalho | Accept-Language: zh-cn em estação institucional | Contexto | Idioma preferido em compilações [1]. Apoio à triagem |
| Tipo | Indicador | Severidade | Contexto e ação |
|---|---|---|---|
| Arquivo | %System32%\9cda11af69ab0a2b6a9167f7131e7b93.key | Alta | Arquivo de teclas digitadas [1]. Caçar em disco |
| Arquivo | %WinDir%\System32\[0-Z]{10}.tmp e %TEMP%\[0-Z]{10}.tmp | Média | Componentes do carregador [1]. Caçar em disco |
| Serviço | iexplore, exibido como System Remote Data Simulation Layeerr | Alta | Serviço com erro no nome de exibição [1]. Caçar na frota |
| Serviço | AppService | Média | Variante inicial do serviço [1]. Verificar caso a caso |
| Registro | HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths | Alta | Exclusão indevida no Defender [1]. Inventariar e alertar |
| Registro | HKLM\SOFTWARE\Classes\CLSID (valor binário derivado de MachineGuid) | Média | Carga cifrada no registro [1]. Caçar por formato |
| MD5 | 1fecb6eb98e8ee72bb5f006dd79c6f2f 4da2c2abcf1df9749b64b34160bd3ebf 5dc7fbf2141f7dfe5215c94895bf959c 70e9416833b2f933b765042f8e1ea0bc 8074f73f7742309b033676cd03eb0928 8ae40c8418b2c36b58d2a43153544ddd | Média | Amostras do carregador [1]. Caça retroativa |
| MD5 | e41826b342686c7f879474c49c7eed98 2aab0ec738374db4e872812a84a0bc11 8b9f6b0c98c0afdd75c2322f1ca4d0e8 5de2818ced29a1fedb9b24c1044ebd45 58efaf6fa04a8d7201ab19170785ce85 839e9e4d6289eba53e40916283f73ca6 89c8e5a1e24f05ede53b1cab721c53d8 | Média | Cadeia de infecção da seção 04 [1]. Caça retroativa |
| SHA-256 | dd19804b5823cf2cab3afe4a386b427d9016e2673e82e0f030e4cff74ef73ce1 ecdfa028928da8df647ece7e7037bc4d492b82ff1870cc05cf982449f2c41786 | Média | Componentes sqlite.dll e sqlite.dat [2]. Caça retroativa |
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.
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/
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
http.user_agent, app-layer-protocol e dsize.
https://docs.suricata.io/
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.