Como Usar o Binwalk: Extrair Arquivos Ocultos (2026)

Penetration Testing
18 min de leitura
Como Usar o Binwalk: Extrair Arquivos Ocultos (2026)
Nesta página
  1. O Que É o Binwalk?
  2. Binwalk v2 ou Binwalk v3: Qual Instalar
  3. Sua Primeira Varredura: Lendo a Tabela de Assinaturas
  4. Extraindo com -e, e a Armadilha do Root
  5. Extração Recursiva para Firmware
  6. Análise de Entropia: Achando Criptografia sem Assinatura
  7. Binwalk em Forense de CTF: Um Fluxo Repetível
  8. Quando o Binwalk É a Ferramenta Errada
  9. Considerações Legais e Éticas
  10. Perguntas Frequentes
  11. Seus Próximos Passos

Um arquivo é um recipiente, e a maioria dos recipientes tem espaço sobrando. Um PNG que abre perfeitamente no seu navegador pode estar carregando um arquivo ZIP grudado no final dele. Uma imagem de firmware de roteador de 12 MB é, na verdade, um bootloader, um kernel comprimido e um sistema de arquivos Linux inteiro empilhados um atrás do outro, sem nenhum índice. Aprender a usar o binwalk é enxergar essa estrutura em vez de adivinhar.

O binwalk varre um arquivo em busca dos padrões de bytes que marcam o início de outros tipos de arquivo, mostra o que encontrou e onde, e depois extrai esses pedaços para você. É um item fixo na pesquisa de firmware e a primeira jogada em forense de CTF, o que o coloca na mesma gaveta das ferramentas do nosso guia de teste de invasão. Se você quiser um arquivo para praticar enquanto lê, o capítulo sobre dados anexados do nosso curso de esteganografia foi montado em torno exatamente do truque que o binwalk pega melhor.

Resumo: o binwalk encontra e extrai arquivos escondidos dentro de outros arquivos. No Kali, sudo apt install binwalk instala a versão em Python 2.4.3 e sudo apt install binwalk3 instala a reescrita em Rust, a 3.1.0. Rode primeiro binwalk arquivo.bin para ler a tabela de assinaturas, depois binwalk -e arquivo.bin para extrair, e acrescente -M quando estiver desmontando firmware. A extração executa utilitários de terceiros sobre dados não confiáveis, então faça isso dentro de uma máquina virtual.

O Que É o Binwalk?

O binwalk é uma ferramenta de código aberto que varre um arquivo binário procurando assinaturas de outros formatos, informa a posição de cada uma e, se você pedir, as extrai. Craig Heffner o lançou em 2010 para tornar a análise de firmware de roteadores menos cansativa, e hoje ele é mantido sob a organização ReFirmLabs no GitHub.

A ideia por trás dele cabe em um parágrafo. Quase todo formato de arquivo começa com uma sequência fixa de bytes chamada número mágico: um arquivo ZIP começa com PK\x03\x04, um PNG com \x89PNG, um fluxo gzip com \x1f\x8b. O binwalk percorre o arquivo inteiro byte a byte, compara o que vê com uma biblioteca de várias centenas dessas assinaturas e imprime a lista de ocorrências. O comando file faz o mesmo truque, mas só na posição zero. O binwalk faz em todo lugar.

Essa diferença é o ponto inteiro. file challenge.png diz que é um PNG e para por aí, porque os oito primeiros bytes dizem PNG e o file não tem motivo para continuar olhando. O binwalk continua, e acha o arquivo que alguém anexou no byte 7858.

Dois usos dominam. Em análise de firmware, ele separa um despejo monolítico .bin da memória flash em bootloader, kernel e sistema de arquivos raiz, para você montar o sistema de arquivos e ler o código. Em forense de CTF, ele responde à pergunta "tem mais alguma coisa dentro deste arquivo", que é a pergunta em torno da qual a maioria dos desafios de forense e esteganografia é construída.

Binwalk v2 ou Binwalk v3: Qual Instalar

Esta é a parte que confunde as pessoas em 2026, e nenhum tutorial anterior ao fim de 2024 menciona. Existem dois binwalks.

O binwalk 2.x é a implementação original em Python. É o que uma década de tutoriais, write-ups e respostas do Stack Overflow descreve. O Kali empacota como binwalk, na versão 2.4.3.

O binwalk 3.x é uma reescrita completa em Rust, lançada como v3.1.0 em 31 de outubro de 2024. É mais rápido, produz menos falsos positivos e traz mais extratores embutidos. O Kali empacota separadamente como binwalk3, e a versão 3.1.0-0kali3 entrou no kali-rolling em 16 de outubro de 2025.

Instale o que você precisar, ou os dois, já que os binários têm nomes diferentes e não colidem:

sudo apt update
sudo apt install binwalk      # Python, v2.4.3, command: binwalk
sudo apt install binwalk3     # Rust, v3.1.0, command: binwalk3

Em outras distribuições, ou se você quiser a versão mais recente do projeto, a v3 instala pelo Cargo:

cargo install binwalk

Nenhuma das duas versões extrai muita coisa sozinha. As duas chamam utilitários externos para descompactar o que encontram, e o script de dependências do Ubuntu da v3 puxa uma lista longa deles: 7zip, sleuthkit, cabextract, unyaffs, srecord, device-tree-compiler, lz4, lzop, unrar, zstd, mais uma build Debian do sasquatch para as variantes de SquashFS remendadas pelos fabricantes, das quais os roteadores domésticos estão cheios. Se uma extração anuncia um sistema de arquivos e depois não produz nada, procure primeiro o utilitário faltando, não uma imagem corrompida.

Minha recomendação, e ela não é a popular: comece pela v2. Todo guia, todo write-up de CTF e toda desmontagem de firmware que você vai ler no próximo ano assume as opções da v2, e a v2 ainda tem recursos que a v3 abandonou. A linha de comando da v3 tem catorze opções, e comparação hexadecimal (-W), varredura de opcodes (-A) e recorte manual (--dd) não estão entre elas. Puxe o binwalk3 quando estiver encarando uma imagem grande de firmware e quiser velocidade.

💻
Pratique agora: Binary Secrets - um arquivo binário com uma flag escondida dentro, exatamente o formato de problema para o qual o binwalk foi criado. No navegador, sem instalar nada.

Sua Primeira Varredura: Lendo a Tabela de Assinaturas

Rode o binwalk sem nenhuma opção. É uma varredura de assinaturas somente leitura, e é sempre o primeiro movimento certo:

binwalk challenge.png

Aqui está a saída real do binwalk 2.3.3 sobre um PNG com um arquivo ZIP anexado, a construção clássica de CTF:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 64 x 64, 8-bit/color RGB, non-interlaced
41            0x29            Zlib compressed data, default compression
7858          0x1EB2          Zip archive data, at least v1.0 to extract, compressed size: 22, uncompressed size: 22, name: flag.txt
8024          0x1F58          End of Zip archive, footer length: 22

Três colunas, e as duas primeiras trazem o mesmo número em decimal e em hexadecimal. Leia a tabela de cima para baixo:

  • Posição 0, imagem PNG. O arquivo é o que diz ser. Esperado.
  • Posição 41, dados comprimidos Zlib. Isso é ruído. Um PNG guarda os pixels em um bloco IDAT comprimido com zlib, então todo PNG válido gera essa linha. Aprender quais ocorrências são estruturais e quais são interessantes é a maior parte da habilidade.
  • Posição 7858, arquivo ZIP. Esse é o achado. O binwalk até leu o diretório central do arquivo e tirou de lá o nome: flag.txt.
  • Posição 8024, fim do arquivo ZIP. O rodapé do arquivo, que confirma que ele está inteiro e não truncado.

Quando uma varredura devolve cinquenta linhas e só um formato interessa, filtre com -y para incluir e -x para excluir:

binwalk -y zip challenge.png
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
7858          0x1EB2          Zip archive data, at least v1.0 to extract, compressed size: 22, uncompressed size: 22, name: flag.txt
8024          0x1F58          End of Zip archive, footer length: 22

Na prática você vai ver falsos positivos, e o jeito é esperá-los em vez de correr atrás deles. Dados comprimidos aleatórios às vezes contêm quatro bytes que parecem um cabeçalho TIFF. Uma ocorrência com posição plausível, tamanho coerente e um rodapé que combina é real. Uma ocorrência isolada com tamanho sem sentido é coincidência.

Extraindo com -e, e a Armadilha do Root

Assim que a tabela mostra algo que vale a pena, o -e tira aquilo de lá:

binwalk -e challenge.png

Se você estiver logado como root, o que descreve boa parte dos usuários de Kali, esse comando falha e despeja um muro de traceback do Python. A linha que importa é esta:

Extractor Exception: Binwalk extraction uses many third party utilities,
which may not be secure. If you wish to have extraction utilities executed
as the current user, use '--run-as=root' (binwalk itself must be run as root).

Isso não é um bug, e vale mais entender do que contornar às cegas. Extrair significa que o binwalk entrega bytes controlados por um atacante a uma pilha de descompactadores de terceiros, e esses descompactadores têm um longo histórico de falhas de travessia de diretórios. Recusar-se a fazer isso como root é uma trava de segurança deliberada, acrescentada na versão 2.3.3. A correção honesta é trabalhar em uma conta comum. Se você fizer questão do root, precisa dizer isso em voz alta:

binwalk --run-as=root -e challenge.png

A extração cai em um diretório com o nome do arquivo de entrada, e cada pedaço recortado leva o nome da sua posição em hexadecimal:

_challenge.png.extracted:
-rw-r--r-- 1 user user   188 1EB2.zip
-rw-r--r-- 1 user user 12352 29
-rw-r--r-- 1 user user  8005 29.zlib
-rw-r--r-- 1 user user    22 flag.txt

Essa listagem conta uma pequena história. 1EB2.zip é o arquivo anexado, recortado na posição hexadecimal 0x1EB2, e flag.txt é o que saiu quando o binwalk foi em frente e descompactou para você. A dupla 29 e 29.zlib são os dados de pixel do próprio PNG: o fluxo comprimido e o conteúdo descomprimido. O binwalk extraiu o verdadeiro positivo chato junto com o interessante, e isso é normal.

O binwalk 3 usa a mesma opção -e, mas grava por padrão em um diretório chamado extractions em vez de _nomedoarquivo.extracted. As duas versões aceitam -C para você escolher o diretório de saída:

binwalk -e -C ./output challenge.png

Mais uma opção da v2 merece lugar na sua memória muscular. O -z recorta as faixas de bytes cruas e não executa nenhum descompactador externo:

binwalk -e -z suspicious.bin

Você recebe arquivos em vez de conteúdo já interpretado, o que dá mais trabalho e é muito mais seguro em uma amostra na qual você não confia.

Extração Recursiva para Firmware

Imagens de firmware se encaixam umas dentro das outras. Extraia a imagem de um roteador e você recebe um kernel comprimido e um blob SquashFS. Extraia esses e você recebe o kernel de verdade e uma árvore de diretórios completa. Fazer isso na mão são três ou quatro rodadas do mesmo comando, então o binwalk automatiza com -M, batizado a partir das bonecas matrioscas:

binwalk -Me firmware.bin

Esse comando sozinho varre, extrai e depois varre de novo tudo o que acabou de extrair, até uma profundidade padrão de oito níveis. A saída é longa. Mande para um arquivo e leia depois.

Controlar a profundidade importa mais do que parece. Em uma imagem grande, a recursão entra nos dados descomprimidos, produz milhares de ocorrências inúteis e vira um exercício de encher o disco. Limite:

binwalk -Me -d 2 firmware.bin

O prêmio no final costuma ser um diretório com nome parecido com squashfs-root, contendo um sistema de arquivos Linux embarcado completo. É aí que o trabalho interessante começa: um /etc/passwd com hashes fixos no código, chaves privadas em /etc, scripts de inicialização em /etc/init.d que revelam quais serviços escutam, e binários CGI em /www, a casa habitual da injeção de comandos em equipamentos domésticos.

Quando o binwalk anuncia um sistema de arquivos mas o diretório de extração fica vazio, a causa é quase sempre um descompactador faltando. Os fabricantes remendam o SquashFS com compressões fora do padrão, o unsquashfs original recusa, e o sasquatch existe justamente para essas variantes. Instale-o antes de concluir que a imagem está cifrada.

Análise de Entropia: Achando Criptografia sem Assinatura

Às vezes a varredura não devolve nada. Nenhum sistema de arquivos, nenhum kernel, nenhuma assinatura digna do nome. A pergunta útil passa a ser se os dados estão cifrados, comprimidos ou apenas em um formato que o binwalk não conhece. A entropia responde.

Entropia é uma medida de aleatoriedade dos dados, em uma escala de 0 a 1. Texto simples e código não comprimido ficam baixos, na faixa de 0,3 a 0,6, porque se repetem. Dados comprimidos e cifrados ficam perto de 1,0, porque os dois processos destroem a repetição por construção.

binwalk -E firmware.bin

A versão 2 imprime os pontos onde a entropia dá um salto e gera um gráfico, a menos que você passe -N para suprimir. No PNG de antes:

DECIMAL       HEXADECIMAL     ENTROPY
--------------------------------------------------------------------------------
4096          0x1000          Rising entropy edge (0.956868)

Uma borda de subida em 0x1000 e nenhuma borda de descida, o que se lê como "cabeçalho de baixa entropia, depois dados comprimidos até o fim". Para um PNG, isso é exatamente correto.

Ler um gráfico de entropia de firmware de verdade é reconhecimento de forma, e três desenhos cobrem quase tudo:

  • Plano e alto no arquivo inteiro. A imagem está cifrada, ou comprimida em bloco único. Não há o que recortar até você ter a chave.
  • Em blocos, alternando alto e baixo. Firmware normal. As regiões baixas são cabeçalhos, preenchimento e código não comprimido, as altas são seções comprimidas, e as transições são os seus limites de extração.
  • Quase todo baixo, com um platô alto. Uma carga comprimida dentro de um arquivo comum. Esse platô é o que você veio buscar.

Entropia é ferramenta de triagem, não prova. Ela diz que os dados estão comprimidos ou cifrados e não consegue dizer qual dos dois, porque um bom compressor e uma boa cifra produzem saídas estatisticamente parecidas.

💻
Pratique agora: Stego Hunt - um PNG com uma flag escondida, onde procurar dados anexados é uma das jogadas que funcionam. Plano gratuito, sem máquina virtual.

Binwalk em Forense de CTF: Um Fluxo Repetível

Em um desafio de forense ou esteganografia, o binwalk é o segundo comando que você digita. Esta é a sequência que resolve a maioria dos problemas do tipo "aqui está um arquivo, ache a flag", na ordem que custa menos tempo:

  1. Rode o file primeiro. Um segundo, e ele diz se a extensão é honesta. Um .jpg que o file chama de arquivo ZIP já entregou a resposta.
  2. Rode o binwalk sem opções. Leia a tabela. Compare o que ele achou com o que o formato legitimamente contém. Tudo que passar do fim esperado do arquivo é o desafio.
  3. Rode strings -n 8 arquivo | less. Flags ficam guardadas em texto puro com muito mais frequência do que se admite, e isso as pega antes de você gastar vinte minutos recortando.
  4. Extraia com binwalk -e. Se sair um arquivo protegido por senha, esse é o caminho previsto, e quebrar a senha é tarefa de outra ferramenta.
  5. Só então chame os especialistas. zsteg para dados LSB em PNG e BMP, steghide para JPEG e WAV com senha, exiftool para campos de metadados.

O passo 5 é onde as pessoas começam, e começar por ali desperdiça tempo. Dados anexados são muito mais comuns em desafios iniciantes e intermediários do que esteganografia de bit menos significativo de verdade, porque o autor leva dez segundos para criar isso com o cat. Nosso guia de técnicas de esteganografia cobre o que fazer quando o binwalk volta limpo e a flag está mesmo escondida nos pixels, e ler metadados com o ExifTool cobre os campos que o binwalk nunca olha.

Um hábito que vale construir: quando o -e não devolve nada mas a tabela de assinaturas mostra claramente um arquivo compactado, recorte na mão com o dd usando a posição que o binwalk imprimiu. O byte 7858 da varredura anterior vira:

dd if=challenge.png of=carved.zip bs=1 skip=7858

É rústico e sempre funciona, e é por isso que esse comando merece ficar na sua cabeça ao lado das opções mais sofisticadas.

Quando o Binwalk É a Ferramenta Errada

Saber até onde uma ferramenta vai importa tanto quanto saber conduzi-la, e o binwalk tem quatro limites claros.

Ele não acha dados escondidos dentro dos pixels. A esteganografia de bit menos significativo altera bytes existentes em vez de acrescentar novos, então não há assinatura para casar nem posição para relatar. O binwalk vai varrer uma imagem com LSB e dizer, corretamente, que nada foi anexado. Use zsteg ou stegsolve.

Ele não lê metadados. Tags EXIF, pacotes XMP, quadros ID3 e propriedades de documento PDF são campos estruturados dentro do formato, não arquivos embutidos. Esse trabalho é do ExifTool.

Ele não é ferramenta de forense de disco. Para uma imagem de disco inteira, com tabela de partições e arquivos apagados a recuperar, foremost, scalpel e o The Sleuth Kit entendem estruturas de sistema de arquivos que o binwalk trata como fluxo de bytes indiferenciado.

Ele não ajuda contra criptografia. Se a entropia fica plana em 1,0 na imagem inteira, não sobrou estrutura para reconhecer. Isso vira um problema de recuperação de chave, e em geral um problema de hardware.

Considerações Legais e Éticas

Lembrete essencial: sempre obtenha autorização por escrito antes de testar qualquer sistema, incluindo qualquer aparelho que você não comprou. Extrair firmware de um equipamento que é seu costuma ser pesquisa lícita na maioria das jurisdições. Fazer isso no equipamento de outra pessoa, não.

Dois riscos são específicos desta ferramenta, e os dois merecem um instante antes de você apontá-la para um arquivo desconhecido.

O primeiro é que a extração executa código que você não escreveu sobre dados que você não controla. A CVE-2022-4510 é o caso exemplar: as versões 2.1.2b até 2.3.3 do binwalk tinham uma falha de travessia de diretórios no plugin extrator de PFS, e uma imagem de sistema de arquivos forjada conseguia gravar arquivos em qualquer lugar que o processo alcançasse. Coloque um módulo malicioso em .config/binwalk/plugins e a próxima execução do binwalk o roda. Foi corrigido na 2.3.4, mas a lição geral sobrevive ao patch. Rode o -e em amostras não confiáveis dentro de uma máquina virtual ou de um contêiner, mantenha a ferramenta atualizada e use -z quando só os bytes interessarem.

O segundo é jurídico, não técnico. Firmware é software protegido por direito autoral, e fazer engenharia reversa dele cai em um mosaico de exceções específicas de cada jurisdição. Nos Estados Unidos, o Bibliotecário do Congresso renovou a exceção da seção 1201 do DMCA para pesquisa de segurança de boa-fé em dispositivos adquiridos legalmente, no nono processo trienal, em vigor desde 28 de outubro de 2024. Exceções vêm com condições, e não equivalem a permissão geral.

Análises que você pode fazer sem hesitar:

  • Firmware de aparelhos que são seus, baixado do site público de suporte do fabricante
  • Arquivos fornecidos por um cliente sob um contrato assinado cujo escopo os nomeia
  • Desafios de CTF e imagens de treino propositalmente vulneráveis
  • Projetos de firmware de código aberto, como o OpenWrt

Achar uma credencial fixa no código de um produto em circulação é o começo de um processo de divulgação, não o fim de um projeto de pesquisa. Reporte ao fabricante, dê um prazo razoável e publique depois.

Perguntas Frequentes

Para que serve o binwalk?

Para encontrar e extrair arquivos embutidos dentro de outros arquivos. Os usos principais são análise de firmware, onde ele separa uma imagem de flash em bootloader, kernel e sistema de arquivos, e forense de CTF, onde detecta dados anexados a imagens e documentos. Analistas de malware também o usam para tirar cargas empacotadas de dentro de droppers.

Como instalo o binwalk no Kali Linux?

Rode sudo apt install binwalk para a versão em Python 2.4.3, ou sudo apt install binwalk3 para a reescrita em Rust 3.1.0. Elas instalam comandos diferentes, binwalk e binwalk3, então dá para manter as duas. A versão 3 também sai por cargo install binwalk.

Por que o binwalk -e falha com um erro de root?

O binwalk 2.3.3 em diante se recusa a executar utilitários de extração de terceiros como root, porque esses utilitários processam dados não confiáveis e têm histórico de falhas de travessia de diretórios. Ou você roda o binwalk em uma conta comum, que é a escolha mais segura, ou aceita o risco explicitamente com binwalk --run-as=root -e arquivo.bin.

Onde o binwalk coloca os arquivos extraídos?

O binwalk 2 cria um diretório chamado _nomedoarquivo.extracted no diretório atual. O binwalk 3 usa um diretório chamado extractions. Os arquivos recortados levam o nome da sua posição hexadecimal no arquivo original, então 1EB2.zip foi achado na posição 0x1EB2. As duas versões aceitam -C para definir outro diretório de saída.

O binwalk detecta esteganografia?

Só a de dados anexados, em que um arquivo inteiro foi colado no fim de outro. Ele não detecta esteganografia de bit menos significativo, porque essa altera bytes existentes em vez de acrescentar uma assinatura reconhecível. Se o binwalk voltar limpo em um desafio de imagem, passe para zsteg, steghide ou uma ferramenta visual de planos de bits.

É seguro rodar o binwalk em amostras de malware?

A varredura é segura, já que só lê bytes. A extração não é, porque invoca descompactadores externos sobre entrada controlada pelo atacante. A CVE-2022-4510 permitia execução de código por meio de um sistema de arquivos PFS forjado, nas versões até a 2.3.3. Extraia dentro de uma máquina virtual isolada, mantenha a ferramenta atualizada e use -z para recortar sem executar descompactadores quando só os dados crus interessarem.

Seus Próximos Passos

Saber usar o binwalk se resume a quatro comandos que vão te servir por anos: binwalk arquivo para ler a tabela de assinaturas, binwalk -e arquivo para extrair o que ele achou, binwalk -Me -d 2 firmware.bin para descascar uma imagem de firmware aninhada, e binwalk -E arquivo para decidir se um blob opaco está comprimido ou cifrado. Todo o resto é refinamento, e o repositório do projeto documenta isso.

Ler uma tabela de assinaturas em um artigo não é a mesma coisa que achar a única linha que importa em uma saída real. Desmonte um arquivo você mesmo no lab Binary Secrets e depois faça o curso de esteganografia para os casos em que nada foi anexado e os dados estão mesmo escondidos nos pixels. Os dois rodam no navegador com o plano gratuito da HackerDNA, sem cartão de crédito e sem instalação local.

HackerDNA Team

Equipe HackerDNA

Escrito pela equipe HackerDNA - profissionais de cibersegurança que criam labs práticos de hacking e conteúdo educativo para ajudar você a desenvolver habilidades reais em segurança.

Conhecer a Equipe

Pronto para colocar isso em prática?

Pare de ler, comece a hackear. Ganhe experiência prática com mais de 170 labs de cibersegurança reais.

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