Uma das maiores reclamações dos estudantes da segurança da informação, é o fato de utilizar máquinas virtuais para os estudos. Muitos acham frustante por não estar instalado em uma máquina física. Pensando nisso, foi desenvolvida uma distribuição para ser instalada em um Raspberry Pi e que é intencionalmente vulnerável. Essa distribuição é a RasPwn OS.

A distribuição RasPwn OS é baseada na distribuição Debian Wheezy. De acordo com o Github oficial, é uma distro Linux no espírito da distro “Damn Vulnerable Linux (DVL)” e usa o Raspberry Pi 2B e 3 para emular um servidor Linux vulnerável, por tanto esse é o único propósito do RasPwn OS e ele não deve ser exposto a internet, pois pode comprometer toda a sua rede interna. 

No meu caso, tenho um Raspberry Pi 3 com cartão de memória de 16 gb. É o suficiente para começar os estudos. Também é possível instalar no Raspberry Pi 2B, porém precisa de uma adaptador wifi conectado a uma das portas USB, pois não possui uma interface interna de wifi, ao contrário do Raspberry Pi 3 que já possui wifi integrado.

Meu Raspberry Pi 3... <3

Meu Raspberry Pi 3…

 

Baixei a imagem no site oficial, extrai usando o 7ZIP e fiz a cópia da ISO para o cartão utilizando o Etcher. O procedimento usado para gerar o conteúdo da imagem pode variar, não sendo uma regra.

Após esse procedimento, coloquei o cartão no slot do Raspberry e liguei a fonte na energia. Caso queira acompanhar a primeira inicialização do OS, basta colocar um monitor HDMI. O sistema reiniciará uma vez e após isso estará pronto para o uso.

 

A primeira coisa a se fazer é conectar-se o sistema operacional que você utilizará para estudar no wifi que o RasPwn criou. 
SSID: RasPwn OS
Senha: In53cur3!

Depois de conectar-se a rede wifi criada, utilize um browser e acesse o endereço: http://playground.raspwn.org/. Essa é a página principal do RasPwn OS e que dará acesso aos outros sistemas instalados no mesmo sistema. Você notará que a rede criada é a 192.168.99.0/24, assim você pode passar algum scanner de rede para testes.

A documentação oficial da distribuição informa os ips atribuídos a cada serviço:

Bind (192.168.99.1, 192.168.99.10) – DNS Server
Postfix (192.168.99.18) – Mail Transfer Agent
Dovecot (192.168.99.18) – Mail Client Server
Samba (192.168.99.10) – Windows File Sharing Server
Apache2 (192.168.99.13) – Web Server
Nginx (192.168.99.7) – Web Server
MySQL Server (127.0.0.1) – Database Server
OpenSSH (192.168.99.1) – SSH server

 

Além disso, há alguns aplicativos instalado com versões desatualizadas para as vulnerabilidades conhecidas serem exploradas:

Concrete 5.6.3.4 – http://playground.raspwn.org/concrete5/
Drupal 6.34 – http://playground.raspwn.org/drupal-6.34/
Drupal 7.34 – http://playground.raspwn.org/drupal-7.34/
Joomla 2.5.28 – http://playground.raspwn.org/joomla-2/
Joomla 3.4.0 – http://playground.raspwn.org/joomla-3/
osCommerce 2.3 – http://playground.raspwn.org/oscommerce/
phpBB 3.0.13 – http://playground.raspwn.org/phpBB3/
WordPress 3.8.1 – http://playground.raspwn.org/wordpress3/
WordPress 4.1 – http://playground.raspwn.org/wordpress4
Zen-Cart 1.5.4 – http://playground.raspwn.org/zencart
PhpMyAdmin 3.4.11 – http://playground.raspwn.org/phpmyadmin/
Samba SWAT 3.6.6 – http://playground.raspwn.org:901 (wifi adapter only)
Roundcube 0.7.2 – http://playground.raspwn.org/roundcube/

 

Há também serviços WEB para testes de vulnerabilidades:

OWASP Bricks – http://playground.raspwn.org/bricks
Damn Vulnerable Web Application (DVWA) – http://playground.raspwn.org/dvwa
OWASP Hackademic – http://playground.raspwn.org/hackademic
OWASP Mutillidae II – http://playground.raspwn.org/mutillidae
Peruggia – http://playground.raspwn.org/peruggia
WackoPicko – http://wackopicko.playground.raspwn.org (wifi adapter only)
WebGoat – http://playground.raspwn.org:8080/WebGoat (wifi adapter only)

 

Para título de exemplo, vou usar o DVWA para exemplificar a vulnerabilidade XSS (Cross-Site Scripting)

 

 

Primeiramente, vamos acessar o DVWA:

http://playground.raspwn.org/dvwa
Login: admin
Senha: password

 

 

Iremos fazer os testes com 3 níveis de segurança: Low, Medium e High.

Todos os 3 ataques abaixo são do tipo Refletido ou Não Persistente.

Vamos começar com o Low. Para fazer isso, no Menu da esquerda, basta clicar em DVWA Security.

 

Só escolher Low e depois clicar em Submit.

 

 

Agora, vamos acessar a página para testes XSS. No menu da esquerda, clicar em XSS (Reflected).

 

 

Como estamos estudando, vamos olhar o código do fonte da página para assim entender como funcionam as proteções.

 

 

Para ver o código fonte (lembre-se que não é possível ver em uma página comum da web, pois o código php será interpretado e exibido apenas o resultado HTML final), basta clicar no final da página em View Source.

 

 

Como é possível observar, não há nenhuma proteção para evitar o XSS, então podemos utilizar o XSS mais básico (afinal, a segurança está setada para Low)

 

 

No único campo que há (What’s your name?):

<script>alert(“Ataque XSS LOW”);</script>

 

 

Sucesso!

 

Agora com o nível de segurança em “Medium”. Lembre-se de mudar o nível na página de configuração.

 

 

Mais uma vez, vamos olhar o código fonte:

 

 

Agora é possível observar que no código há uma proteção para evitar que o código <script> seja interpretado. Porém, é apenas para <script>, caso utilize o mesmo texto, mas com letras maiúsculas e minúsculas, o script será interpretado. Logo, por exemplo, podemos utilizar <ScRiPt>.

 

 

<ScRiPt>alert(“Ataque XSS MEDIUM”);</sCrIpT>

 

 

Sucesso!

 

Uma outra forma é colocar o script dentro do código script. Estranha explicação, então vamos para a prática e ficará mais claro.

 

 

<scri<script>pt>alert(“Ataque XSS MEDIUM 2”);</scri<script>pt>

 

 

Sucesso!

A explicação é que com a proteção da forma que está, a string <script> será suprimida, isso fará que o texto que está “em volta” da string fica um texto só, e será novamente <script>, assim executando o código.

 

E finalmente, nível de segurança HIGH!

 

 

Novamente, olhando o código fonte, podemos perceber que o código agora está mais sofisticado, impedindo que o <script> seja executado de qualquer forma. Então, vamos tentar inserir código html.

 

 

<img src=x onError=alert(“document.cookie”);>

 

Sucesso!

Nesse exemplo, é inserido um código html de imagem, porém a imagem não existe, logo existe um tratamento para o erro que é executado quando essa condição for verdadeira, que é o caso. Assim, o código XSS é executado. Também é possível perceber que foi utilizado o parâmetro alert(document.cookie) que serve para exibir o cookie da sessão atual.

 

Depois de contemplado os 3 ataques em modo Refletido, agora em modo Persistente:

No menu da esquerda, clicar em XSS (Stored).

 

 

Em todos os exemplos, vamos colocar os códigos no campo “Name”

Começando pelo Persistente no modo LOW:

 

 

Sempre é bom olhar o código fonte para verificar se há alguma proteção.

Como é no nível LOW, não há nenhuma proteção:

 

 

Então, vamos usar o ataque básico:

<script>alert(“Ataque XSS LOW”);</script>

 

 

Pode observar que não foi possível inserir todo texto no campo Name. Logo, vamos inspecionar o elemento.

 

 

Observe que na linha destacada, há a limitação para apenas 10 caracteres . Vamos aumentar pra 100!

 

 

É possível observar que agora o código cabe todo. Agora é só executar:

 

 

Sucesso! 

Como as informações inseridas ficam no banco de dados, vamos dar um reset no banco antes de ir para o nível de segurança “Medium”

Para fazer isso, basta ir no menu do lado esquerdo e clicar em “Setup / Reset DB”.

 

 

No final da página, basta clicar em “Create / Reset Database DB”.

 

 

Ao fazer isso, os bancos serão apagados e criados novamente. Assim, podemos passar para o nível de segurança Medium.

 

 

Agora no nível “MEDIUM” e já olhando o código fonte:

 

 

Há a mesma proteção que já observamos no mesmo nível no modo Persistente, então vamos usar as mesmos scripts.

 

 

E aparentemente, também há a limitação de 10 caracteres. Então vamos mudar logo pra 100 também.

 

 

<ScRiPt>alert(“Ataque XSS MEDIUM”);</sCrIpT>

 

 

Também funciona a mesma técnica de colocar o “script” dentro de outro “script”.

 

 

<scri<script>pt>alert(“Ataque XSS MEDIUM 2”);</scri<script>pt>

 

 

Sucesso!

Agora, level “HIGH”. Não esquecer de dar reset no banco novamente.

 

 

Analisando o código fonte, também há a mesma proteção, logo vamos usar o mesmo código.

 

 

E adiantando também a limitação do campo “Name”, então vamos mudar logo pra 100 e colocar o código.

 

 

<img src=x onError=alert(“document.cookie”);>

 

 

Sucesso!

Isso é uma pequena amostra sobre o que é possível fazer com o RasPwn OS na parte de estudos. Espero trazer mais exemplos usando esse sistema, com outros sistemas e outras vulnerabilidades.

Caso queira testar com mais códigos XSS, no site GBHackers há uma lista com 500 exemplos: https://gbhackers.com/top-500-important-xss-cheat-sheet/

Espero ter ajudado e até uma próxima.

Ao som de: Rashid – Interior ft. Rapadura

 

Fontes:

http://raspwn.org/
https://github.com/alphacharlie/RasPwn
https://computersecuritystudent.com/SECURITY_TOOLS/DVWA/DVWAv107/lesson9/index.html
https://www.hackingarticles.in/xss-exploitation-dvwa-bypass-security/
http://2001594623noviani.blog.binusian.org/2018/05/27/cross-site-scripting-xss-on-dvwa/

Por padrão, a versão do Autopsy que vem nos repositórios oficiais do Debian é a versão 2.24 porém para Windows já existe a versão 4.10. Como o Autopsy roda com o SleuthKit e Java no linux, vamos fazer um passo a passo dessas instalações.

Um ponto importante de se observar é que as versões atualizadas do Autopsy “acompanham” as versões atualizadas do Sleuth Kit. No caso do Autopsy 4.10, a versão utilizada do Sleuth Kit é a 4.6.5. Essa verificação é feita pelo script de instalação e caso esteja diferente, a instalação não será concluída. No caso de atualização do Autopsy, também é necessário a atualização do Sleuth Kit.

No nosso caso, vamos utilizar o Debian 9, porém pode ser instalada em qualquer outra distribuição baseada no Debian (Ubuntu, Kali, Parrot, Caine…), pois vamos utilizar um arquivo .deb.
No final do post há uma lista com todos os comandos utilizados sem as explicações, caso seja um usuário avançado ou não queira ver as explicações do post.

Preparando o Ambiente

O Debian que estou utilizando está em sua configuração padrão, apenas com o Vim e Terminator instalados e o usuário utilizado é o root (apenas para melhor compreensão do post).

Então vamos começar atualizando o sistema:

apt update && apt -y upgrade

Agora vamos instalar o photorec, programa necessário para a execução do Autopsy

apt -y install testdisk

O Debian 9 já vem com o Java OpenJDK 8 instalado, não sendo necessário fazer qualquer instalação Java. Caso queira atualizar ou usar outra aplicação Java, como da Oracle, não fará diferença para a execução do Autopsy, apenas trará as melhorias de cada pacote ou de um sistema sempre atualizado.
Mesmo assim, precisamos fazer uma configuração no Java para indicarmos onde está instalado o java. E primeiramente, vamos pegar o diretório onde o OpenJDK está instalado com:

java -XshowSetting

Vamos procurar uma linha com o conteúdo parecido com esse: java.home = /usr/lib/jvm/java-8-openjdk-amd64/jre
Lembrando que a saída do “java.home” pode variar de acordo com o sistema instalado.

Em seguida, adicione essa informação na variável de ambiente do Debian para que o sistema reconheça através da variável $JAVA_HOME onde está instalado o Java.

vim /etc/environment 

Adicione a seguinte linha no final do arquivo:

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre"

Depois basta salvar o arquivo e sair do editor com o comando:

:wq

Agora vamos carregar esse arquivo

source /etc/environment

E verificar se o sistema já reconhece o novo path

echo $JAVA_HOME

A saída será o diretório que consta no arquivo /etc/environment

Instalando o Sleuth Kit 4.6.5

Inicialmente, vamos baixar o arquivo .deb de instalação do SleuthKit

wget https://github.com/sleuthkit/sleuthkit/releases/download/sleuthkit-4.6.5/sleuthkit-java_4.6.5-1_amd64.deb

E em seguida instalar esse pacote

apt install ./sleuthkit-java_4.6.5-1_amd64.deb 

Caso apresente algum erro com falta de alguma dependência, basta executar “apt -f install” e depois fazer a instalação do sleuthkit novamente repetindo o comando acima (apt install ./sleuthkit-java_4.6.5-1_amd64.deb).

Instalando o Autopsy 4.10

Agora, basta fazer o download do Autopsy 4.10 no github oficial

wget https://github.com/sleuthkit/autopsy/releases/download/autopsy-4.10.0/autopsy-4.10.0.zip

Extrair o pacote:

unzip autopsy-4.10.0.zip && cd autopsy-4.10.0

Executar o instalador:

sh unix_setup.sh

Acessar o diretório bin/ dentro do diretório do autopsy

cd bin

E executar o autopsy

./autopsy
Debian 9.9 – Kernel 4.9 – Java 8 OpenJDK
Parrot OS 4.6 – Kernel 4.19 – Java 11 OpenJDK

Sugiro que criem um atalho para a execução do programa para não ter que acessar o diretório e executar o programa sempre for utilizar.

O objetivo deste post é apenas ajudar aos peritos que utilizam Linux, porém sentiam falta de uma versão mais atualizada do Autopsy no Linux e tinham que recorrer ao Windows, muita vezes tendo que interromper o fluxo de trabalho para a troca de sistema operacional.

Comando utilizados para caso alguém queira fazer um script (e postar nos comentários depois):

apt update && apt -y upgrade && apt -y install testdisk
echo JAVA_HOME=\"/usr/lib/jvm/java-8-openjdk-amd64/jre\" >> /etc/environment
source /etc/environment
wget https://github.com/sleuthkit/sleuthkit/releases/download/sleuthkit-4.6.5/sleuthkit-java_4.6.5-1_amd64.deb && wget https://github.com/sleuthkit/autopsy/releases/download/autopsy-4.10.0/autopsy-4.10.0.zip && unzip autopsy-4.10.0.zip
apt -y install ./sleuthkit-java_4.6.5-1_amd64.deb
cd autopsy-4.10.0
sh unix_setup.sh
./autopsy

Caso dê erro: apt -f install && apt -y install ./sleuthkit-java_4.6.5-1_amd64.deb

https://www.autopsy.com/
https://www.sleuthkit.org/
https://github.com/sleuthkit/sleuthkit/releases/tag/sleuthkit-4.6.5
https://github.com/sleuthkit/autopsy/releases/tag/autopsy-4.10.0
https://github.com/sleuthkit/autopsy/blob/develop/Running_Linux_OSX.txt

Ao som de: Testament – The Pale King

O Binwalk é uma ferramenta criada pelo Craig Heffner e feita para realizar buscas em arquivos de imagens (raw). Ela foi pensada para fazer a análise e extração de códigos e arquivos dentro de firmwares, porém como ela é bastante poderosa, acaba sendo utilizadas para outros fins. O intuito desse post é demonstrar que um desses possíveis cenários de utilização desse software no campo da computação forense, e assim apresentar mais uma ferramenta que possa ser utilizada em uma análise forense. Isso não quer dizer que ela substitui qualquer outra ferramenta! Existem ferramentas específicas para cada tipo situação e de análise. Porém, assim como qualquer outra ferramenta, ela server para ajudar um profissional capacitado a chegar um resultado desejado.

O programa utiliza a biblioteca libmagic, assim reconhece os “Magic Numbers” no bloco de dados de um arquivo, conseguindo identificar o tipo de arquivo dentro de uma imagem. Porém, ele também contém uma lista extra desses números mágicos para ficar ainda mais completo.

“Números Mágicos” ou “Magic Numbers” é o termo utilizado para designar as constantes de um tipo de arquivo, assim definindo as assinaturas desses arquivos e assim criando um padrão para a identificação desses arquivos. Essa assinatura se localiza no início do bloco de informação do arquivo. Por exemplo: Todo arquivo arquivo PNG irá começar com esse dados em HEXADECIMAL 89 50 4E 47 0D 0A 1A 0A.

Para observar esses dados, basta abrir qualquer arquivo em um editor Hexadecimal de sua preferência. Também iremos verificar esses dados usando o binwalk.
Caso queira uma lista de alguns números mágicos, existem várias listas na internet, como esta do Wikepédia: https://en.wikipedia.org/wiki/List_of_file_signatures

 

Instalação

Para fazer a instalação do binwalk, basta utilizar o gerenciador de repositórios da sua distribuição ou fazer o download no Github oficial da ferramenta: https://github.com/ReFirmLabs/binwalk

Algumas distribuições Linux já possuem essa ferramenta em seu repositório.

 

git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
sudo python setup.py install
 
Caso esteja utilizando o Python 2.x, instale a dependência:
sudo apt install python-lzma ou sudo yum install pyliblzma

Utilização

A sintaxe do programa é bem simples

$ binwalk [opções] [arquivo]

Caso não utilize nenhum argumento, o binwalk fará uma varredura no arquivo e exibirá os arquivos correspondentes as suas assinaturas compostas nos cabeçalhos utilizando os números mágicos. Há basicamente 3 colunas: Decimal e Hexadecimal, exibe a posição, nos respectivos nomes, do início do número mágico de um arquivo. A terceira coluna é a descrição do arquivo que foi localizado nas duas primeiras colunas.

 

Filtros

Como o retorno da pesquisa dos arquivos pode ser muito grande, é possível aplicar “filtros” para você ver apenas o que está buscando especificamente.

Filtro de Inclusão

-y ou –include=<filtro>

A opção -y inclui apenas os resultados correspondentes para o texto (ou string) de pesquisa especificado. Nessa pesquisa, serão retornados apenas arquivos onde os “Magic Numbers” são possíveis de ser identificados. É possível utilizar expressões regulares para a pesquisa.

$ binwalk -y image exemplo.raw

Exibe apenas as imagens encontradas no arquivo

Filtro de Exclusão

-x ou –exclude=<filtro>

A opção -x é o oposto da anterior (-y) e exclui o texto especificado (ou string) que corresponde a regra nos resultados da pesquisa. Assim como a pesquisa, a exclusão também pode usar expressões regulares. Também apresenta os resultados baseado nas assinaturas dos arquivos.

$ binwalk -x image exemplo.raw

Comparação de Arquivos

 

-W ou –hexdump

O binwalk pode exibir os códigos hexadecimais de arquivos e exibir a diferença e semelhança entre eles. Para fazer essa diferenciação, ele utiliza 3 cores para demonstrar cada uma dessas diferenças e semelhanças.

Verde: Os bytes semelhantes em todos os arquivos;
Vermelho: Os bytes diferentes em todos os arquivos;
Azul: Os bytes diferentes em apenas um arquivos.

$ binwalk -W arquivo01.raw arquivo02.raw arquivo03.raw

Para melhor visualização, podemos aplicar alguns argumentos para limitar a exibição das informações. No nosso exemplo, vamos utilizar:

–block para limitar o tamanho do bloco, em bytes, que será exibido;
–length para exibir apenas a quantidade de bytes selecionados.

$ binwalk -W --block=8 --length=128 *.mp3

No nosso exemplo, podemos identificar nos 3 arquivos que os primeiros bytes são idênticos. Isso acontece pois são 3 arquivos de áudio em MP3 e os “Números Mágicos” nos informa que existe a ID3 Tag nesses arquivos. A assinatura da ID3 tag é “49 44 33”. Como o padrão se repete em todos, esses dados estão em verde.

Seguindo o arquivo, podemos observar que mais uma informação é idêntica nos 3 arquivos. É possível ver o “texto” TALB. Lendo a documentação do ID3tag (http://id3.org/id3v2.3.0), esse campo corresponde ao “Álbum” em que essa MP3 pertence (TALB [#TALB Album/Movie/Show title]). Mas isso não quer dizer que as 3 MP3 são do mesmo Álbum e sim que os 3 arquivos estão com esse campo da ID3 Tag preenchidas. Por esse motivo, podemos observar um bloco bem maior de dados em vermelho, pois são 3 músicas de álbuns diferentes.

Se avançarmos um poucos mais, veremos o “TPE1”, que corresponde ao “Artista” da música. Mesmo essa informação presente nos 3 arquivos, eles não estão na mesma posição, por isso continua em vermelho. Isso acontece por causa dos nomes dos Álbuns, que são diferentes e não tem o mesmo número de caracteres.

Observando essas informações, podemos concluir:
musica01.mp3: Álbum (TALB): “The Rise and Fall of Ziggy Stardust and The Spider From Mars” e Artista (TPE1): “David Bowie”
musica02.mp3: Álbum (TALB): “Scenes From a Memory” e Artista (TPE1): Dream Theater
musica03.mp3: Álbum (TALB): “Just The Two of Us, Me And Then” e Artista (TPE1): MindFlow

Os dados em azul são que estão iguais em 2 arquivos, mas no terceiro. No exemplo abaixo, peguei 2 músicas do mesmo álbum e uma de um terceiro álbum. Usando as informações acima, fica fácil ver a semelhança entre os 2 primeiros e o terceiro arquivo.

Pesquisa RAW

 

-R ou –raw=<string>

 

A pesquisa RAW permite que você faça uma busca diretamente no arquivo, podendo conter strings octal, hexadecimal ou texto puro.

No nosso exemplo, vou utilizar uma MP3 da banda MindFlow e ela contém os metadados da ID3 tag preenchida.

Vamos fazer a busca pelo nome da banda dentro da MP3. Como é um nome composto, vamos procurar pelos primeiro nome apenas:

$ binwalk -R "Mind" musica03.mp3

Caso não retorne nenhuma resposta, pode tentar com outros argumento, como o segundo nome, o nome completo, o texto em caixa alta ou baixa, ou até mesmo em Hexadecimal:

$ binwalk -R "\x4D\x69\x6E\x64" musica03.mp3

Observe que o retorno estão exatamente na mesma posição inicial da busca antetior. O binwalk fez uma varredura no hexadecimal da MP3 e encontrou essas informações no metadados ID3 Tag do arquivo.

Extração de Arquivos

Como o binwalk é capaz de reconhecer arquivos dentro de um outro arquivo, também é possível fazer a extração desses desses arquivos para um diretório.

Extraindo manualmente

 

-D ou -dd=<Tipo:Extensão:Comando>

 

O formato usado para extrair a regra especificada é:
Tipo:Extensão:Comando

Tipo: string, em “caixa baixa”, para informar o tipo do arquivo que se quer extrair;
Extensão: define qual será a extensão que o arquivo será salvo no diretório. Por padrão, o binwalk não coloca nenhuma extensão;
Comando: é um argumento opcional para ser executado após a extração para o diretório.

$ binwalk --dd='zip archive:zip:unzip %e' exemplo.raw

No exemplo acima:

–dd: informa que será feito uma extração de arquivo;
zip archive: será localizado todos os arquivos que contêm a assinatura de um arquivo ZIP;
zip: todos os arquivos localizados com essa assinatura será salvos com a extensão .zip;
unzip: após os arquivos “zip archive” serem localizados, depois salvos como .zip, esse arquivos serão extraídos com o unzip.
%e: é onde você deve informar onde o diretório para a extração desses “zip archives”

Por padrão, os nomes dos arquivos serão atribuídos às suas posições hexadecimais incluindo a extensão encontrada nos números mágicos. Os “zip archives” extraídos da imagem estarão com os nomes: 6BF9434.zip, 39F3593.zip, 39F3660.zip

Caso queira extrair tudo que o binwalk possa localizar, basta usar a expressão regular com * para fazer a extração:

$ binwalk --dd='.*' file.bin

Extraindo automaticamente

Caso utilize a extração automática, o binwalk irá criar um diretório automaticamente com os arquivos extraídos.

$ binwalk -e exemplo.raw

A opção -e é usada para executar a extração automática dos dados. O binwalk só vai conseguir extrair os arquivos que serão identificados pelos números mágicos.

Extração recursiva

 

-M ou –matryoshka

A opção -M (–matryoshka) fará a extração de forma recursiva, porém ela só pode ser usada se combinada com a opção -e (ou –extract)

$ binwalk -Me exemplo.raw

 

LOG

-f ou –log=<arquivo.log>

Nos sistemas operacionais modernos, podemos concatenar as informações de saída de fluxo (stdout) para outro fluxo de informações. Geralmente usamos essas saídas de informações concatenadas com ‘>’ para gerarmos um arquivo de “log” escrevendo um arquivo de texto. Porém, o binwalk já tem um argumento para isso, que é o -f (ou –log)

$ binwalk -f saída_dos_dados.log exemplo.raw

Caso queira que esses dados sejam extraídos diretamente para um arquivo no formato CSV, pode se utilizar o argumento –csv já combinado com o -f

$ binwalk -f saída_dos_dados.csv --csv exemplo.raw

Utilizando o comando acima, será exibida a informação na tela e também criado o arquivo csv. Se deseja que apenas o arquivo seja criado com essas informações, sem a exibição no terminal, basta usar o -q (ou –quiet).

$ binwalk -q -f saída_dos_dados.csv --csv exemplo.raw

 

 

Exemplo Prático:

Primeiramente, vamos usar o binwalk padrão:

$ binwalk Trabalho.pdf

 

No nosso caso, retornou algumas informações. Na primeira posição foi encontrada a assinatura do “PDF Document, version 1.4”. Verificando o arquivo no nosso editor hexadecimal, podemos ver o “número mágico” do pdf (25 50 44 46).

Seguindo o arquivo, o binwalk encontrou a biblioteca zlib, pois o pdf a utiliza para essa biblioteca para a compressão de dados, além dos metadados dos arquivos. Porém, foi encontrado uma assinatura de JPG (posição 0x90F6) e dois PDF (0x21C3C e 0x2F37D).

Agora, vamos fazer a extração de todos os arquivos para não perder muito tempo e depois da extração, localizar os arquivos.

$ binwalk --dd='.*' Trabalho.pdf

 

Após os arquivos extraídos, vamos separar os arquivos com os nomes das posições onde foram encontrados, com exceção da posição “0” pois já  sabendo que é o arquivo que conseguirmos ver normalmente.

90F6 = Imagem JPG
21C3C = Primeiro PDF
2F37D = Segundo PDF

Utilizando um editor hexadecimal, e olhando essas posições indicadas pela aplicação, podemos extrair os blocos e verificar os arquivos. A extração será feita nas assinaturas seguintes. Assim como o anterior, a primeira assinatura identificada foi depois do PDF visível foi o JPG, vamos selecionar o bloco entre o início do suposto JPG (0x90F6) e o início do segundo PDF (0x21C3C), logo em seguida vamos do início do segundo PDF até o começo do terceiro PDF (0x2F37D) e esse vai até o final do arquivo.

 

O resultado nos dois casos será o mesmo:

 

Em um arquivo PDF havia uma imagem e mais 2 PDFs “escondidos” dentro dele. Isso tudo foi possível observando os números mágicos que haviam no arquivo “principal”

Como disse inicialmente, a ideia deste post é apresentar mais uma ferramenta para análises forenses. Em alguns dos exemplos mostrados, existem softwares que nos exibem as informações mais legíveis e mais rápido, como é o caso do ID3 Tag, onde há vários leitores como o PoodleTag. Mas o binwalk também pode ser usado justamente para confirmar esses dados dos outros aplicativos. A combinação “binwalk + editor hexadecimal” podem nos trazer muitos resultados positivos nas mãos de bons peritos forense.

 

https://tools.kali.org/forensics/binwalk
https://github.com/ReFirmLabs/binwalk/wiki/quick-start-guide
https://securityonline.info/introduction-to-binwalk-firmware-analysis-tool/

 

Ao Som de: Criolo – Não Existe Amor em SP