O Blob GPG: Lendo a Tag de um Pacote OpenPGP a Partir de Um Byte

Criptografia Nível 3/4 ~5 min 28 de julho de 2026

O desafio

Uma ferramenta de exfiltração deixou data.bin num host comprometido e a equipe registrou como binário bruto. Só o primeiro byte revela o formato. Abra-o no visualizador hexadecimal, compare esse byte com as tags de pacote de referência e digite o formato real.

O que você vai aprender

  • Explicar que pacotes binários OpenPGP são delimitados por um byte de tag, não por uma longa string mágica
  • Reconhecer que um byte inicial com o bit 0x80 ativado marca o cabeçalho de um pacote OpenPGP
  • Identificar 0x85 como o início de um pacote de chave de sessão cifrada por chave pública
  • Diferenciar um blob GPG de ZIP, GZIP e PNG pelos seus diferentes primeiros bytes
  • Triar um binário desconhecido lendo apenas o suficiente do cabeçalho para classificá-lo

Habilidades testadas

Reconhecimento do formato de pacote OpenPGPRaciocínio sobre assinaturas de byte únicoTriagem de artefatos cifrados

Pré-requisitos

  • Familiaridade básica com GPG / OpenPGP como ferramenta de criptografia de chave pública
  • Facilidade para ler valores de bytes hexadecimais individuais

Como funciona

A maioria dos formatos se anuncia com um magic number de vários bytes, mas o OpenPGP (o padrão por trás do GPG) é estruturado de forma diferente: um fluxo binário OpenPGP é uma sequência de pacotes, e cada pacote começa com um único byte de tag. Nesse byte, o bit mais significativo (0x80) está sempre ativado para marcar o limite de um pacote, e os bits restantes codificam o tipo do pacote e o formato de comprimento.

Aqui o primeiro byte é 0x85. Como 0x80 está ativado, isso é um cabeçalho de pacote; a tag que ele carrega identifica um pacote de chave de sessão cifrada por chave pública, exatamente o que você vê no início de uma mensagem cifrada com a chave pública de alguém (gpg --encrypt em modo binário, sem armor). Então um arquivo registrado como data.bin opaco é, na verdade, um blob cifrado com GPG, e só esse primeiro byte foi necessário para descobrir isso.

Os iscas são todos formatos com magic numbers convencionais de vários bytes: ZIP é 50 4B 03 04, GZIP é 1F 8B, e PNG é 89 50 4E 47. Nenhum deles corresponde a um byte inicial 0x85. Esse é o lado sutil da identificação de arquivos: quando não há uma assinatura ASCII óbvia, a estrutura de um único byte de framing ainda é suficiente para nomear o formato.

Erros comuns

  • Procurar por um magic ASCII de quatro bytes. O OpenPGP não tem um; o sinal é o byte de tag único, então buscar texto imprimível não encontra nada.
  • Descartar como binário aleatório. A extensão 'bin' e o corpo de alta entropia tentam fazer você desistir, mas o byte 0 é estruturado.
  • Confundir com GZIP. O GZIP também parece binário comprimido, mas começa com 1F 8B, não 85.
  • Ler o cabeçalho além do necessário. Não é preciso analisar o pacote inteiro; o byte de tag sozinho classifica o formato.

Como se proteger

Defensores devem detectar blobs cifrados pela sua estrutura e tratar saídas inesperadas de GPG como possível artefato de exfiltração ou preparação de dados.

  • Execute detecção baseada em conteúdo que compreenda o framing de pacotes OpenPGP, não apenas magic numbers de vários bytes, para que blobs binários GPG sejam classificados em vez de registrados como 'binário desconhecido'.
  • Alerte quando arquivos cifrados com GPG aparecerem em locais ou fluxos de trabalho que normalmente não os produzem, um passo comum de empacotamento antes da exfiltração.
  • Monitore a execução inesperada das ferramentas gpg / openpgp em servidores que não deveriam cifrar dados.
  • Faça um inventário de quais chaves conseguem decifrar esses blobs, para que um respondente de incidentes possa determinar o destinatário pretendido.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

97 resoluções
73% taxa de sucesso
Guilhermee Primeiro sangue

Hacks de hoje relacionados

25.000+ Hackers 100+ Labs & Cursos Grátis
Comece Grátis