Decifre a Nota de Resgate: XOR de Byte Único sob Base64
O desafio
Um ransomware deixou um arquivo de 'nota' em base64 numa estação infectada. A amostra do descriptografador mostra que a nota foi embaralhada com um XOR de byte único antes de ser codificada em base64. Encontre o byte, remova as duas camadas e envie o flag recuperado (HDNA{...}).
O que você vai aprender
- Reconhecer o base64 como a camada externa de transporte de um artefato descartado
- Identificar um XOR de byte único e raciocinar sobre seu espaço de 256 chaves
- Recuperar o texto original aplicando XOR com o byte de chave 0x42
- Remover duas transformações empilhadas na ordem inversa correta
- Explicar por que o XOR de byte único não oferece confidencialidade real
Habilidades testadas
Pré-requisitos
- Familiaridade com base64
- Entender que XOR é sua própria inversa
- Saber que um byte tem 256 valores possíveis
Como funciona
Um XOR de byte único aplica a mesma chave de um byte a cada byte dos dados. É a "cifra" mais simples que existe, e sua fraqueza está no espaço de chaves: existem apenas 256 chaves possíveis, então um analista pode testar todas elas em uma fração de segundo e ficar com o resultado que se parece com texto. Ransomwares e droppers o usam não por segurança, mas para manter sua nota fora de um dump casual de strings, depois envolvem o resultado em base64 para que os bytes sobrevivam à gravação em um arquivo.
Remova as camadas na ordem inversa. A nota descartada é base64 imprimível, então decodifique isso primeiro para obter os bytes brutos embaralhados pelo XOR. Depois aplique XOR em cada byte com a chave. XOR é simétrico, então a mesma operação com a mesma chave desfaz o processo, porque A XOR B XOR B = A. Aqui a amostra do descriptografador revela que a chave é 0x42, a letra ASCII B. Mesmo sem essa dica, uma força bruta de byte único revelaria isso imediatamente.
Na bancada de trabalho, adicione From Base64, depois XOR com a chave B (ou 0x42), e a nota se resolve ao vivo na saída. As demais operações (hex, ROT, atbash, reverse, Vigenere, URL-decode) são iscas cujos formatos de entrada nunca correspondem aos dados em nenhuma etapa.
Erros comuns
- Aplicar XOR diretamente no texto base64. Base64 é a camada externa; decodifique antes de aplicar XOR nos bytes.
- Supor uma chave de múltiplos bytes. O enunciado e os dados apontam para um único byte - digitar uma chave longa não vai decodificar nada.
- Digitar a chave errada. 0x42 é a letra 'B'; insira como o byte que a bancada espera.
- Adicionar iscas. ROT e Vigenere atuam sobre letras, não sobre bytes brutos - verifique o formato dos dados primeiro.
Como se proteger
Para defensores, a lição é que o XOR de byte único é a ofuscação mais fraca que existe - deve ser a primeira coisa que você tenta (ou testa por força bruta) ao fazer a triagem de um artefato descartado, e nunca deve aparecer onde você precisa de proteção real. Se o seu próprio código "criptografa" algo com um único byte de XOR, trate esses dados como texto puro.
- Durante a triagem, teste por força bruta as 256 chaves possíveis de XOR de byte único contra blobs suspeitos para revelar notas e configurações ocultas.
- Decodifique automaticamente os envoltórios base64 antes de examinar os bytes subjacentes.
- Nunca proteja segredos com XOR de byte único (ou qualquer XOR estático) - use criptografia autenticada com uma chave gerenciada.
- Baseie as detecções em comportamento e em arquivos descartados, não apenas em strings legíveis que um atacante pode esconder facilmente.