ELF, Não Dados: Identificando um Binário Linux pelo Cabeçalho 7F 45 4C 46

Engenharia Reversa & Exploração Binária Nível 2/4 ~3 min 19 de agosto de 2026

O desafio

Um arquivo suspeito chamado blob.dat foi deixado em /tmp num servidor Linux. Abra-o no visualizador hexadecimal, compare os primeiros bytes com as assinaturas de referência e digite o tipo real do arquivo.

O que você vai aprender

  • Reconhecer a assinatura ELF 7F 45 4C 46 e ler 'ELF' a partir dos bytes ASCII
  • Interpretar os bytes de classe e endianness (64 bits, little-endian) que seguem
  • Ler os campos e_type e e_machine para confirmar um executável x86-64
  • Explicar por que um arquivo .dat com cabeçalho ELF é um sinal de alerta de malware
  • Diferenciar ELF das assinaturas PE/MZ, Mach-O e Java class

Habilidades testadas

Identificação de cabeçalho ELFLeitura de magic bytes e ASCIITriagem de malware em Linux

Pré-requisitos

  • Noção básica de que executáveis Linux usam o formato ELF
  • Familiaridade com leitura de valores de bytes em hexadecimal

Como funciona

No Linux, executáveis nativos, bibliotecas compartilhadas e core dumps usam todos o contêiner ELF (Executable and Linkable Format). Todo arquivo ELF começa com a assinatura de quatro bytes 7F 45 4C 46. O byte inicial 0x7F é deliberadamente não imprimível (ele quebra ferramentas que tentam tratar o arquivo como texto), e os três bytes seguintes são as letras ASCII ELF.

Os bytes logo após o magic number são o cabeçalho de identificação ELF e confirmam o diagnóstico. 02 define a classe como 64 bits (um 01 seria 32 bits), 01 define a codificação de dados como little-endian, e 01 é a versão do ELF. Um pouco mais adiante, o campo e_type 02 00 marca o arquivo como executável e o e_machine 3E 00 identifica a arquitetura x86-64.

Um arquivo chamado blob.dat localizado em /tmp com esse cabeçalho é um sinal clássico de malware dropado: a extensão de aparência inofensiva esconde um binário executável. A lista de referência contrasta o ELF com os outros formatos executáveis principais - PE/MZ (4D 5A, 'MZ') para Windows, Mach-O (FE ED FA CE) para macOS, e arquivos Java class (CA FE BA BE) - nenhum dos quais corresponde.

Erros comuns

  • Tratar o .dat como dado opaco. A extensão é propositalmente vaga, mas o cabeçalho é uma assinatura ELF concreta.
  • Travar no byte 7F. Ele é não imprimível por design; o ELF legível vem logo em seguida.
  • Confundir ELF com um Java class. Arquivos Java class começam com CA FE BA BE ('cafebabe'), o que não tem relação com 7F 45 4C 46.
  • Adivinhar o sistema operacional pelo nome do arquivo. O formato, não o nome ou a localização, é o que indica que se trata de um binário Linux.

Como se proteger

Defensores de sistemas Linux devem classificar arquivos dropados pelo conteúdo e monitorar os diretórios que o malware costuma preferir.

  • Monitore caminhos com permissão de escrita para todos, como /tmp, /dev/shm e /var/tmp, em busca de novos arquivos cujos magic bytes sejam ELF, independentemente da extensão.
  • Monte esses caminhos com noexec quando viável, para que um ELF dropado não possa ser executado diretamente.
  • Use tipagem de arquivo baseada em conteúdo no seu EDR e alerte sobre incompatibilidades entre extensão e tipo.
  • Estabeleça uma linha de base dos binários esperados e sinalize arquivos ELF não assinados ou desconhecidos que aparecerem fora de locais gerenciados por gerenciador de pacotes.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

129 resoluções
81% taxa de sucesso
M2F14M3 Primeiro sangue

Hacks de hoje relacionados

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