Malware & Ameaças
QWERTY e Regin: código vazado, Five Eyes e o contexto GCHQ
Como uma comparação de binários ligou QWERTY a Regin: drivers, dependências, armazenamento virtual e os limites da atribuição à inteligência britânica.
Um código vazado pode revelar mais pelaquilo de que depende do que pelo seu nome. QWERTY e Regin oferecem um exemplo particularmente interessante: pesquisadores encontraram código compartilhado e referências a módulos de uma mesma plataforma. A análise ligou um keylogger publicado a partir do acervo Snowden a um ecossistema de espionagem que já estava sob investigação.
Esta matéria examina pesquisas de 2014 e 2015, com atenção ao contexto Five Eyes e à inteligência britânica. A publicação em outubro de 2026 não representa um novo vazamento. O objetivo é explicar como comparação de binários, dependências e memória ajudam a construir conclusões verificáveis, sem tratar toda hipótese de atribuição como confirmação oficial.
QWERTY e Regin: o contrato entre módulos é mais forte que uma string
A comparação publicada pelos pesquisadores associa código de 20123.sys ao módulo 50251 e aponta a dependência do módulo 50225. Essa relação é mais informativa que encontrar a palavra QWERTY em um arquivo: mostra componentes que precisam concordar sobre inicialização e serviços de hook.
Uma arquitetura modular pode carregar um componente, registrar suas capacidades e resolver dependências por identificador. A rotina abaixo demonstra apenas esse contrato com funções inertes. É uma reconstrução didática própria, não o loader de Regin e não um keylogger.
modulos = {
50225: {'dependencias': [], 'versao': 'lab-1'},
50251: {'dependencias': [50225], 'versao': 'lab-1'}
}
def pronto(identificador, disponiveis):
return all(d in disponiveis for d in modulos[identificador]['dependencias'])
assert not pronto(50251, set())
assert pronto(50251, {50225})
assert pronto(50225, set())
print('dependencia necessaria, nao atribuicao')
Se um componente requer a mesma interface e compartilha implementações com outro, há uma hipótese concreta de plataforma comum. Os números usados aqui são referências do estudo, mas os registros e a função são fictícios. A conclusão do exemplo é estrutural, não operacional.
Para comparar binários, mapeie funções por fluxo de controle, chamadas, constantes e operações, preservando diferenças de compilador e arquitetura. Uma sequência curta de biblioteca pode coincidir em software sem relação. Já múltiplas funções específicas, dependências e inicialização compatíveis reduzem essa explicação alternativa.
No armazenamento virtual, bytes no disco, conteúdo expandido e módulos em memória são camadas diferentes. Calcule hashes por camada e documente a transformação necessária para compará-las. Não chame um hash do contêiner de hash do módulo. Esse cuidado permite reproduzir a análise sem transformar similaridade técnica em certeza sobre qual agência operou cada máquina.
QWERTY: a documentação publicada a partir do acervo Snowden
A apresentação publicada junto ao material QWERTY descreve um componente de captura de teclado para WARRIORPRIDE. Ela distingue um driver que interage com o teclado e uma biblioteca que recebe os dados. O documento enquadra a plataforma no compartilhamento de ferramentas dos Five Eyes.
Essa descrição fornece uma alegação documental e um contexto de origem. A etapa seguinte é perguntar se as características podem ser reconhecidas por análise independente. Um nome escrito num documento, por si só, não identifica um arquivo recolhido em outra investigação. É preciso conectar os objetos através de propriedades técnicas.
O elo técnico entre QWERTY e Regin
Em 27 de janeiro de 2015, Costin Raiu e Igor Kuznetsov publicaram a comparação entre QWERTY e o módulo Regin 50251. A pesquisa encontrou código compartilhado entre o driver 20123.sys e o plugin 50251, além de referências ao módulo 50225, responsável por funções de hooking em modo kernel.
Os autores também analisaram inicialização e registro de plugins. A combinação de semelhança de código e dependência operacional sustentou a conclusão de que os componentes pertenciam à mesma plataforma, com desenvolvedores comuns ou em colaboração. A razão dos identificadores diferentes permaneceu desconhecida.
Relações descritas na pesquisa histórica
QWERTY: 20123.sys ── código compartilhado ── Regin: 50251
│ │
└──────── dependência: módulo 50225 ──────┘
Semelhança + dependência + inicialização
→ vínculo técnico de plataforma
Vínculo de plataforma
≠ identificação automática do operador de cada incidente
A diferença entre essas conclusões é essencial. O grafo mostra uma relação técnica que pode ser examinada. A identificação de quem implantou o componente em uma vítima exige outras evidências. Uma empresa ou governo também pode adquirir, compartilhar ou reutilizar ferramentas; a autoria do código e o operador de uma campanha não são necessariamente a mesma entidade.
GCHQ, MI6 e os limites da atribuição
GCHQ e MI6 são organizações distintas. O perfil oficial do GCHQ descreve suas funções de inteligência e proteção da informação. O perfil do Secret Intelligence Service, conhecido como MI6 apresenta a atuação de inteligência no exterior. Usar os dois nomes como sinônimos prejudica a leitura do caso.
O relatório suíço de segurança da informação relativo ao segundo semestre de 2014 contextualiza Regin, Belgacom e a atribuição ao GCHQ a partir dos documentos Snowden. É um registro contemporâneo dessa discussão, não uma confissão da agência. A ligação técnica QWERTY/Regin e a atribuição de uma operação devem permanecer em camadas separadas.
Para escrever uma conclusão precisa, informe quem formulou a atribuição, qual material utilizou e a que operação ela se refere. A capa desta matéria usa GCHQ como referência ao contexto britânico; não apresenta o caso como um pacote exclusivamente britânico, nem como uma ferramenta comprovadamente pertencente ao MI6.
Hash, similaridade e dependência respondem perguntas diferentes
Dois arquivos podem implementar funções parecidas e ter hashes completamente diferentes. O hash criptográfico identifica o conteúdo exato usado no cálculo. Já a comparação estrutural busca relações entre funções, fluxo de controle ou interfaces. Esses métodos são complementares, mas seus resultados não são intercambiáveis.
| Tipo de evidência | Pergunta respondida | Limitação |
|---|---|---|
| Hash do arquivo | O conteúdo corresponde exatamente à referência? | Uma alteração muda a identidade calculada |
| Comparação de funções | Há implementação compartilhada ou semelhante? | Código comum e bibliotecas podem gerar coincidências |
| Dependência de módulo | Que interface o componente espera encontrar? | Uma referência isolada pode estar inativa |
| Registro e inicialização | Como o componente se integra à plataforma? | Requer interpretação do caminho de execução |
| Contexto documental | Como o material foi descrito e publicado? | Não substitui análise do artefato coletado |
Uma comparação profissional deve registrar critérios e alternativas. Antes de atribuir uma função ao mesmo desenvolvedor, verifique se ela vem de uma biblioteca comum, de código gerado ou de uma interface padronizada. Depois, procure relações menos genéricas: convenções de registro, dependências específicas e comportamentos que fazem sentido dentro da mesma arquitetura.
Por que a busca por arquivos pode ser insuficiente
A pesquisa comparativa da Kaspersky descreve plugins armazenados em um sistema de arquivos virtual, cifrado e comprimido, com carregamento pelo dispatcher. Esse detalhe explica por que procurar apenas um nome de driver no disco pode não encontrar o componente na forma esperada.
Como método de investigação, organize as fontes por camada: arquivos persistidos, estruturas de armazenamento, memória e eventos de carregamento. Anote a cobertura de cada uma. Um resultado negativo numa busca por nomes deve ser registrado como ausência naquela fonte, não como prova de ausência de todos os componentes de uma plataforma.
A captura de memória precisa de planejamento e ferramentas compatíveis com o sistema investigado. Preserve informações de coleta, hash, horário e cadeia de custódia. O carregamento de um driver também exige contexto: componentes legítimos podem operar em modo kernel, e a presença de uma assinatura digital não resolve, sozinha, a avaliação de finalidade.
Laboratório de dependências sem executar malware
O exemplo abaixo usa um conjunto fictício de metadados para comparar dependências. Os rótulos lembram o caso histórico, mas os dados foram construídos apenas para o exercício. Não há amostras, keylogger, captura de teclado ou consulta à rede.
modulos = {
"qwerty-lab": {"dependencias": {"hook-lab", "registro-lab"}},
"regin-lab": {"dependencias": {"hook-lab", "registro-lab"}},
"driver-comum": {"dependencias": {"entrada-sistema"}}
}
primeiro = modulos["qwerty-lab"]["dependencias"]
for nome, dados in modulos.items():
if nome != "qwerty-lab":
comuns = primeiro & dados["dependencias"]
print(nome, sorted(comuns))
A saída mostra duas dependências comuns para regin-lab e nenhuma para driver-comum. Isso representa uma pista de compatibilidade, não uma prova de autoria. Um exercício mais completo acrescentaria a informação sobre quais dependências são realmente utilizadas e em que condições.
Essa limitação torna o laboratório mais útil: ele permite discutir falsos positivos. Se todos os programas de um sistema utilizam a mesma biblioteca, sua presença tem pouco poder de discriminação. Uma dependência específica, combinada com inicialização compatível e código semelhante, oferece um conjunto de evidências mais forte.
Como documentar uma comparação que outra equipe possa revisar
Comece pela proveniência dos arquivos e pela preservação de seus hashes. Registre ferramenta e versão utilizadas na comparação. Explique o que foi normalizado e o que permaneceu intacto, porque remover diferenças de compilação pode ajudar a análise, mas também altera o objeto observado.
Separe resultados diretos de interpretação. Uma referência de módulo encontrada é um resultado; dizer que ela integra determinada plataforma é uma interpretação apoiada em outras relações. Anote caminhos não analisados, trechos incompletos e hipóteses alternativas. Essa organização permite uma revisão independente sem exigir confiança cega no primeiro analista.
Por fim, preserve conclusões proporcionais à evidência. O relatório pode demonstrar que duas implementações compartilham uma arquitetura sem afirmar qual agência operou uma máquina. Essa precisão aumenta o valor da análise para resposta a incidentes, inteligência de ameaças e engenharia reversa.
Perguntas frequentes sobre QWERTY e Regin
QWERTY e Regin têm hashes iguais?
A relação estudada não depende de igualdade entre arquivos completos. A pesquisa compara código, referências e integração de módulos, aspectos que podem existir entre binários diferentes.
Esse é um vazamento confirmado do MI6?
Não. O caso está relacionado ao acervo Snowden, ao contexto Five Eyes e às atribuições discutidas sobre Regin. MI6 e GCHQ não são intercambiáveis.
Qual é a lição técnica mais interessante?
Investigar dependências e caminhos de carregamento, além de nomes e hashes. Uma relação operacional entre componentes pode revelar a plataforma que torna aquele código utilizável, e essa relação precisa ser demonstrada separadamente da atribuição política.