Friday, April 29, 2011

File Slack Space

Durante o trabalho de perícia, os usuários experimentam diversas formas para ocultação de dados. Já falei aqui neste blog sobre ADS, vou falar agora sobrem file slack space.

Basicamente, o file slack space é o espaço não utilizado no final de um arquivo, conforme figura abaixo:


O slack space é o espaço que "sobra" no final do arquivo, mas como o setor já foi "parcialmente" utilizado por uma porção de dados, o file system marca aquele espaço como utilizado. Pode parecer pouco, mas vamos a um exemplo prático: no Explorer, as propriedades de um cartão de memória me mostra que neste dispositivo cabem 527.138.816 bytes (quase 503 Mb, já que 1 Mb =1024K e 1 K = 1024 bytes). Desses, 302.809.088 estão livres e 224.329.728 foram usados. Somando-se os bytes livres com os usados obtém-se exatamente a capacidade do disco, como era de esperar. Por outro lado, na mesma tela o Explorer informa que nesse disco há 2.832 arquivos que, por sua vez, contêm 210.329.425 bytes. Fazendo os cálculos, conclue-se que o “slack space” desse disco é de 14.000.303 bytes (!!!). São quase 14MB de espaço, suficiente para um malware.

Como tanto espaço é disperdiçado? Simples, o tamanho da unidade de alocação de arquivos (cluster) é de 8.192 bytes, já que elas se estendem por dezesseis setores de 512 bytes. Não lembra (ou se confunde) com cluster e setor?? Vai uma ajudinha:



Portanto, por menor que seja o tamanho efetivo de um arquivo, ele jamais “gastará” menos de 8.192 bytes do disco. E a razão é simples: como cada entrada da FAT “aponta” para um trecho de 8.192 bytes e cada arquivo tem que usar no mínimo uma entrada da FAT, se eu criar um arquivo texto com um único caractere, o “tamanho” desse arquivo será de um byte. Mas como na unidade de alocação onde se acomoda esse byte nada mais poderá ser gravado, o arquivo gastará exatos 8.192 bytes de disco. Resultado: 8.191 bytes foram desperdiçados.


Utilizando o slack space para ocultar informações:

Como é um bloco "desperdiçado" do disco, o file system não o endereça, conseqüentemente, o sistema operacional não "enxerga", fazendo do file slack space uma ótima opção para ocultar informações. 

A melhor forma (leia-se a mais fácil) de se brincar com slack space é utilizando o bmap do Linux:

$ echo ”dados” | bmap –mode putslack /home/luiz.rabelo/.bash_history

Este comando grava a string "dados" no slack space do arquivo .bash_history do meu home. 

$ bmap –mode slack /home/luiz.rabelo/.bash_history
getting from block 192288501
file size was: 26
slack size: 4070
blocksize: 4096
dados

Este comando "lê" o file slack do arquivo do meu home.

$ bmap –mode wipeslack /home/luiz.rabelo/.bash_history

Finalmente, este comando "limpa" o slack do arquivo.


Não poderia ser mais simples =)






Maiores informações sobre opções de data hide em: http://www.techrepublic.com/blog/security/computer-forensics-finding-hidden-data/232
Maiores informações sobre file slack em: http://www.wikistc.org/wiki/Slack_space_data
Maiores informações sobre bmap em: http://realinfosec.com/?p=470

No comments:

Post a Comment