Exemplo:
# du -sb /data/dirt_list.txt8 60 /data/dirt_list.txt
# du -sk /data/dirt_list.txt8 4 /data/dirt_list.txt
No exemplo, o arquivo tem 60 bytes, o que mostra o primeiro comando. O segundo comando, ao mos- trar o tamanho em kb, informa que o arquivo tem 4 kb, pois este é o espaço que ele ocupa em disco, contando o slack space. O arquivo ocupa um bloco inteiro, apesar de só utilizar 60 bytes deste bloco para seus dados.
Este espaço extra pode ser utilizado para esconder informação. Como os dados do arquivo não são modificados, sua assinatura SHA1 não é modificada, e como não há nenhuma referência aos dados que estão neste espaço extra, o sistema operacional nunca sabe que ele existe.
É possível até mesmo utilizar todos os arquivos de um diretório para armazenar um dado, se este tiver um tamanho maior do que o que caberia em um único
slack space de um bloco.
Vejamos alguns exemplos:
# bmap --mode slackbytes /data/dirt_list.txt8 4036
# cat /data/badfiles_hashs.sha1 | bmap --mode putsla ck /data/dirt_list.txt8
stuffing block 1540604 file size was: 60 slack size: 4036 block size: 4096
# bmap --mode slack /data/dirt_list.txt8 getting from block 1540604
8bc99cf58caca6e4c1c5d8eca5c59ecc01d4cc9f /bin/chmod 44bb98736c677c1c86d4fc984e66002fff9fccf5 /bin/echo
No primeiro exemplo, checamos o espaço disponível no slack space de um arquivo.
A seguir, escondemos um dado neste espaço. Veja que o programa bmap recebe os dados que vão ser gravados no slack space através do STDIN, e o arquivo especificado no comando é o arquivo onde vai ser gravada a informação. O último comando mostra como recuperar uma informação no slack space.
Slack space
Exemplo: # du -sb /data/dirt_list.txt 60 /data/dirt_list.txt # du -sk /data/dirt_list.txt 4 /data/dirt_list.txtMas o que isso tem a ver com esconder informação?
Contando que este espaço desperdiçado sempre vai existir, foram desenvolvidas ferramentas para esconder informações nele.
O bmap é uma ferramenta para esconder dados no slack space de qualquer arquivo, ou até mesmo em um diretório inteiro, e depois recuperar essas informações quando for necessário.
Slack space
Exemplos:
# bmap --mode slackbytes /data/dirt_list.txt
4036
# cat /data/badfiles_hashs.sha1 | bmap --mode putslack /data/dirt_list.txt
stuffing block 1540604 file size was: 60 slack size: 4036 block size: 4096
# bmap --mode slack /data/dirt_list.txt
getting from block 1540604
8bc99cf58caca6e4c1c5d8eca5c59ecc01d4cc9f /bin/chmod 44bb98736c677c1c86d4fc984e66002fff9fccf5 /bin/echo
Vejamos alguns exemplos:
# dcat /dev/sda5 1540604 | hexdump -C8
00000000 74 74 79 6f 70 0a 74 74 79 6f 61 0a 74 74 79 6f |ttyop.ttyoa.ttyo| 00000010 66 0a 68 64 78 31 0a 68 64 78 32 0a 73 73 68 64 |f.hdx1.hdx2.sshd| 00000020 20 76 65 72 73 69 6f 6e 0a 42 61 73 68 20 76 65 | version.Bash ve| 00000020 20 76 65 72 73 69 6f 6e 0a 42 61 73 68 20 76 65 | version.Bash ve| 00000030 72 73 69 6f 6e 0a 5c 77 40 5c 77 0a 38 62 63 39 |rsion.\w@\w.8bc9| # ls -l /data/dirt_list.txt8
-rw-r--r-- 1 root root 60 Jan 6 17:24 /data/dirt_li st.txt
# cat /data/compromised/smbd-D.core | slacker --mode fill /data/tools8
# slacker --mode pour /data/tools > /tmp/test.dat8
Somente para verificar o funcionamento, lemos com o dcat o bloco de dados onde a informação foi escondida, e notamos que os 60 bytes iniciais, marcados em negrito, são do arquivo original, enquanto o restante faz parte do arquivo que foi escondido. Normalmente, em um bloco sem informação escondida existiriam somente bytes 0x00 nestas posições ou restos de arquivos anteriores e dos buffers de gravação na memória.
Os dois últimos exemplos mostram a ferramenta slacker, que permite gravar uma informação em mais de um arquivo. Ela funciona da seguinte forma: lista o slack
space em cada arquivo do diretório passado como parâmetro, e grava um pedaço
da informação em cada arquivo até terminar o dado.
O último comando mostra como recuperar o arquivo deste diretório. Como não é possível saber onde a informação acaba, o comando acima vai ler o slack space de todos os blocos no diretório, mesmo que eles não tenham sido usados para gravar a informação original; por isso, para recuperar o arquivo original é necessário saber o tamanho total do arquivo, e separar esses bytes de dentro do arquivo /tmp/test.dat. Como não modificamos o conteúdo do arquivo, mas somente do espaço desperdiçado, nenhuma ferramenta que verifique a integridade do sistema vai acusar a presença destes dados.
Como o espaço utilizado para armazenar os dados é o espaço desperdiçado em um bloco, se o arquivo for apagado o bloco de dados pode ser alocado em outro arquivo e a informação no slack space pode ser sobrescrita.
Slack space
Vejamos alguns exemplos:
# dcat /dev/sda5 1540604 | hexdump -C
00000000 74 74 79 6f 70 0a 74 74 79 6f 61 0a 74 74 79 6f |ttyop.ttyoa.ttyo| 00000010 66 0a 68 64 78 31 0a 68 64 78 32 0a 73 73 68 64 |f.hdx1.hdx2.sshd| 00000020 20 76 65 72 73 69 6f 6e 0a 42 61 73 68 20 76 65 | version.Bash ve| 00000020 20 76 65 72 73 69 6f 6e 0a 42 61 73 68 20 76 65 | version.Bash ve| 00000030 72 73 69 6f 6e 0a 5c 77 40 5c 77 0a 38 62 63 39 |rsion.\w@\w.8bc9| # ls -l /data/dirt_list.txt
-rw-r--r-- 1 root root 60 Jan 6 17:24 /data/dirt_list.txt # cat /data/compromised/smbd-D.core | slacker --mode fill /data/tools # slacker --mode pour /data/tools > /tmp/test.dat
Slack space
Nenhuma ferramenta que verifique a integridade do sistema vai acusar a presença destes dados. Se o arquivo for apagado o bloco de dados pode ser alocado em outro arquivo e a informação no slack space pode ser sobrescrita.
O mesmo acontece se o arquivo que utilizamos para armazenar a informação aumentar de tamanho. Por isso, esta informação é considerada volátil. Existem ferramentas que permitem criar um sistema de arquivos completo dentro do slack space de um diretório.
O mesmo acontece se o arquivo que utilizamos para armazenar a informação aumentar de tamanho. Por isso, esta informação é considerada volátil. Mesmo assim, existem ferramentas que permitem criar até mesmo um sistema de arquivos completo dentro do slack space de um diretório.
Conclusões
Na próxima sessão reuniremos todas as evidências encontradas para correlacioná-las em uma linha de tempo. Com isso, vamos tentar descobrir como e quando o ataque ocorreu e identificar o que foi feito na máquina após a invasão. Esta informação será útil para que a empresa se proteja de ataques futuros.
Conclusões
Apenas recuperar arquivos apagados pode não ser suficiente Em alguns casos, precisamos nos aprofundar nas provas, e descobrir as funcionalidades de um executável desconhecido Podemos descobrir informações sobre o programa com ferramentas básicas ou realizar uma análise avançada, fazendo a engenharia reversa do código ou executando o programa em ambiente controlado
A análise do conteúdo de arquivos core dump pode fornecer informações sobre o invasor e a ferramenta
Precisamos procurar até mesmo onde nem imaginamos haver informação, como no slack space dos blocos de disco
6
Sessão de aprendizagem 6
Recuperação e análise de evidências
(parte 2)
Roteiro de atividades
Tópicos e conceitos
Investigação do conteúdo dos arquivos e descoberta de ferramentas
\ \
necessárias para pesquisas avançadas.
Competências técnicas desenvolvidas
Utilização de comandos que fazem análise do conteúdo de arquivos.
\ \
Outras competências desenvolvidas
Capacidade de investigação e pesquisa do aluno.
\ \
Tempo previsto para as atividades
90-120 minutos
\ \