# Binwalk

### Manipulação da Ferramenta Binwalk

#### Definição

Binwalk é uma ferramenta utilizada para analisar imagens binárias em busca de arquivos e códigos executáveis embutidos. É especialmente desenvolvida para detectar esses elementos em imagens de firmware. Utilizando a biblioteca libmagic, Binwalk é compatível com assinaturas mágicas utilizadas pelo utilitário de arquivos Unix.

Além disso, Binwalk possui um arquivo de assinatura mágica personalizado, que inclui assinaturas aprimoradas para arquivos frequentemente encontrados em imagens de firmware, como arquivos compactados ou arquivados, cabeçalhos de firmware, kernels Linux, gerenciadores de inicialização, sistemas de arquivos, entre outros.

Este pacote é essencialmente um pacote vazio, pois a ferramenta binária já é fornecida juntamente com a biblioteca, a qual é uma dependência deste pacote.

### Instalação

```bash
sudo apt install binwalk
```

Versão Py3:

```bash
sudo apt install python3-binwalk
```

## Usos Principais

Binwalk é extremamente útil em diversos cenários, especialmente quando se trata de análise de firmware e extração de arquivos embutidos. Algumas das principais aplicações incluem:

1. **Análise de Firmware:** Binwalk permite aos usuários dissecar e explorar imagens de firmware, revelando a estrutura interna e os componentes utilizados pelo firmware. Isso é essencial para encontrar vulnerabilidades e compreender como o firmware interage com o hardware.
2. **Extração de Arquivos Embutidos:** Em muitos casos, arquivos binários contêm outros arquivos incorporados, como imagens, áudio e até mesmo outros executáveis. Binwalk pode identificar e extrair esses arquivos, facilitando a análise de conteúdos ocultos ou maliciosos.
3. **Pesquisa de Vulnerabilidades:** Com Binwalk, pesquisadores de segurança podem identificar componentes de software desatualizados ou inseguros dentro de um firmware, auxiliando na descoberta de pontos fracos que poderiam ser explorados por atacantes.
4. **Recuperação de Dados:** Para analistas forenses, Binwalk pode ser uma ferramenta valiosa na recuperação de dados de dispositivos danificados ou comprometidos, permitindo a extração de informações que, de outra forma, estariam inacessíveis.

## Arquitetura da Ferramenta

Binwalk opera através da análise e identificação de assinaturas dentro de arquivos binários. Utilizando uma base de dados de assinaturas conhecidas, Binwalk varre o arquivo em busca de padrões que correspondam a diferentes tipos de dados, como sistemas de arquivos, imagens e arquivos comprimidos. A ferramenta é projetada para ser modular, permitindo que os usuários adicionem assinaturas personalizadas e estendam suas capacidades com plugins.

## Comandos Básicos

Esses são os comandos básicos de uso:

* **Extrair automaticamente arquivos embutidos em um binário:**

  ```bash
  binwalk -e <arquivo>
  ```

  A opção `-e` indica que Binwalk deve tentar descompactar e extrair todos os arquivos que encontrar.
* **Especificar um tipo de arquivo para extração e o diretório de destino:**

  ```bash
  binwalk -D '<tipo>:<diretório>' <arquivo>
  ```

  Esse comando é útil quando se deseja extrair apenas um tipo específico de dados.
* **Habilitar modo de análise recursiva:**

  ```bash
  binwalk -M <arquivo>
  ```

  A opção `-M` faz com que Binwalk analise não apenas o arquivo principal, mas também quaisquer arquivos extraídos, aplicando a mesma análise a cada novo arquivo encontrado.

## Tipos de Arquivos Suportados

Binwalk suporta uma ampla variedade de formatos de arquivos e dados. Alguns dos tipos de arquivos mais comuns que Binwalk pode identificar e analisar incluem:

* **Sistemas de arquivos:** FAT, ext, JFFS2, squashfs.
* **Arquivos compactados:** ZIP, gzip, bzip2, tar, etc.
* **Imagens de disco e partições:** ISO, img, bin.
* **Formatos de imagens e multimídia:** JPEG, PNG, GIF, MP3, WAV.
* **Assinaturas customizadas:** Os usuários podem adicionar suas próprias assinaturas para detectar tipos de arquivos específicos ou estruturas de dados personalizadas.

## Binwalk - CTFlearn Writeups

> *Here is a file with another file hidden inside it. Can you extract it?* [Download](https://mega.nz/#!qbpUTYiK!-deNdQJxsQS8bTSMxeUOtpEclCI-zpK7tbJiKV0tXYY)

### Passo a Passo

1. **Baixar o arquivo** do link fornecido.
2. **Utilizar a ferramenta Binwalk para analisar arquivos embutidos:**

![alt text](https://3136530646-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsIzz1GS79zTX2bE4IBNm%2Fuploads%2Fgit-blob-70c2d384addfae4123f63bcd25e40af53f00bedf%2Fimage.png?alt=media)

3. **Identificar arquivos ocultos:**

   * Se encontrarmos um arquivo PNG embutido, podemos extraí-lo com:

   ```bash
   binwalk -D 'png image:png' PurpleThing.jpeg
   ```

   Esse comando analisará `PurpleThing.jpeg` em busca de imagens PNG embutidas e extrairá essas imagens como arquivos separados com a extensão `.png`.

![alt text](https://3136530646-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsIzz1GS79zTX2bE4IBNm%2Fuploads%2Fgit-blob-ab150b64f8636f28bdc7821ae8f1d7958af51c2d%2Fimage-1.png?alt=media)

Foi criada a pasta `_PurpleThing.jpeg.extracted` com os arquivos extraídos.

4. **Abrir a imagem correspondente:**

![alt text](https://3136530646-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsIzz1GS79zTX2bE4IBNm%2Fuploads%2Fgit-blob-c0ed5d9d29ffcd6386ce10e15bab1442e03e6cc3%2Fimage-2.png?alt=media)

Encontramos a flag.
