O que é um vírus metamórfico
Um vírus metamórfico é um programa que se replica sozinho e que não apenas esconde o código, mas o modifica. Cada nova cópia é gerada por um mecanismo embutido que reescreve as instruções, então as cópias têm o mesmo comportamento, mas quase nenhum padrão de bytes em comum. Esse é o ponto central: o antivírus clássico reconhece o malware pela aparência, e o vírus metamórfico nunca tem a mesma aparência duas vezes.
O que ele faz depois de executado é outra questão. O mecanismo de mutação é só o disfarce, e a carga pode ser qualquer coisa, da infecção de arquivos a um keylogger ou um canal discreto de exfiltração de dados. Vale pensar assim: o mecanismo decide se você consegue reconhecer o programa, e a carga decide quanto isso vai custar.
Como ele se reescreve
A mutação acontece em um ciclo que o próprio vírus carrega consigo, sem nenhuma ajuda externa.
- 1
Leitura do próprio código
O mecanismo desmonta o corpo do vírus em uma lista de instruções que ele consegue entender e editar.
- 2
Transformação
Aplica regras de reescrita, como trocar uma instrução por outra equivalente, reordenar blocos independentes ou inserir enchimento inofensivo.
- 3
Reconstrução
Remonta as instruções alteradas em um corpo novo e funcional, com endereços e saltos diferentes.
- 4
Infecção e repetição
A nova cópia é anexada a um alvo e, ao ser executada, inicia o mesmo ciclo de novo.
Metamórfico versus polimórfico
Os dois são frequentemente confundidos. O vírus polimórfico mantém o mesmo código central e muda apenas a camada externa, em geral uma criptografia com chave diferente a cada vez. Removida essa camada, o mesmo corpo aparece, e os analistas têm algo estável para comparar. O vírus metamórfico não tem um corpo estável para ser encontrado.
| Aspecto | Vírus polimórfico | Vírus metamórfico |
|---|---|---|
| O que muda | A camada de criptografia e o seu decodificador | O próprio código do programa |
| Corpo após a descompactação | Idêntico em todas as cópias | Diferente em cada cópia |
| O que carrega | Um mecanismo de mutação para a camada externa | Um mecanismo que desmonta e reconstrói o código |
| Esforço para escrever | Moderado | Bem maior |
| Ponto fraco | O corpo descriptografado pode ser comparado | O comportamento e os padrões do próprio mecanismo |
Técnicas comuns de mutação
Os mecanismos metamórficos combinam um conjunto pequeno de transformações. Nenhuma é sofisticada sozinha, e o efeito vem de empilhá-las ao longo das gerações.
- Substituição de instruções: trocar uma instrução por outra que dá o mesmo resultado.
- Reordenação de código: embaralhar blocos que não dependem uns dos outros e corrigir os saltos entre eles.
- Troca de registradores: usar registradores diferentes do processador para as mesmas operações.
- Inserção de código inútil: adicionar instruções que não fazem nada, como operações vazias ou que se anulam.
- Expansão e redução: trocar uma sequência curta por um equivalente mais longo, ou o contrário.
Por que as assinaturas falham
A verificação por assinatura compara um arquivo com padrões de bytes extraídos de amostras conhecidas. O metamorfismo ataca exatamente essa premissa, porque uma nova variante não tem nenhum padrão que já tenha sido registrado. A detecção passa então do que o arquivo parece para o que ele faz.
Uma camada relacionada é o monitoramento de integridade de arquivos. Ele não reconhece o vírus: percebe que um arquivo protegido mudou sem que ninguém tenha autorizado a mudança, e isso funciona seja qual for a aparência do código.
| Abordagem de detecção | Exige um padrão de bytes conhecido | Vê o comportamento em execução |
|---|---|---|
| Comparação de assinaturas | ||
| Heurística estática | ||
| Monitoramento de comportamento | ||
| Sandbox ou emulação |
Defesa em camadas
Como nenhuma verificação isolada reconhece todas as variantes, a defesa é feita de camadas que falham de maneiras diferentes. Proteção de endpoint baseada em comportamento, lista de aplicativos permitidos e atualizações em dia reduzem a chance de infecção. Ainda assim, a maioria das infecções começa por uma pessoa, com uma mensagem como o clone phishing ou um arquivo de mídia removível, então o filtro de e-mail e as regras de dispositivos importam tanto quanto o antivírus.
Parta do princípio de que uma variante vai acabar sendo executada. Segmentação de rede, contas com privilégio mínimo e backups testados limitam o que ela pode alcançar e o tempo da limpeza.
Uma verificação limpa não prova que a máquina está limpa: diante de uma amostra metamórfica, o antivírus por assinatura só pode informar que não achou nada que conhecesse.
Por onde começar
Comece perguntando até onde uma infecção bem-sucedida poderia chegar, e não como pegar todas as variantes. Faça o inventário dos endpoints que guardam dados sensíveis, ative neles a detecção baseada em comportamento e garanta que mudanças incomuns em arquivos e transferências de saída sejam notadas.
A última linha de defesa são os próprios dados. Um controle de DLP de endpoint, como o Anexet DLP, observa os canais por onde os dados saem, e assim um vazamento pode ser barrado mesmo quando o programa que o iniciou nunca foi reconhecido.
Nem sempre você reconhece o invasor, mas sempre pode observar o que sai pela porta.
