sábado, 15 de agosto de 2009

Byte Investigator II - OLE Structured Storage

OLE Structured Storage é uma estrutura de arquivo bastante interessante. É baseada no conceito recursivo de diretório e arquivo. Um diretório pode conter vários arquivos e outros diretórios. Um arquivo (stream) é onde fica o conteúdo propriamente dito. É simples assim.

Várias aplicações escolheram esse formato para seus arquivos. Dentre elas, o Registry e os arquivos do Office (.DOC, .XLS e .PPT).

Especificamente sobre os arquivos do Office, essa característica dá margem a uma estratégia de obfuscação bastante interessante. Como um diretório pode conter mais de uma stream (ou arquivo) é possível juntar um arquivo dentro do outro, de forma que fique oculto. Por exemplo, podemos colocar uma planilha do Excel dentro de um documento Word. A visualização de conteúdo é determinada pela extensão do arquivo; Ou seja, se a extensão é a .xls, vemos a planilha ao dar um duplo clique no arquivo. Se a extensão for um .doc, o Word é carregado e o que seria o documento pode ser acessado.

Esse comportamento é muito útil em alguns casos maliciosos e se torna ainda mais interessante por quase não ser divulgado. Um funcionário pode usar esse estratagema para subtrair uma planilha confidencial, bastando para isso mesclá-la internamente com um .doc inofensivo (um currículo, por exemplo). Quer ver o currículo, coloque a extensão .doc; quer ver a planilha, troque a extensão para .xls e lá estará o ouro ... Um pedófilo mais preparado e informado pode colocar as várias fotos suspeitas em um .doc e, em seguida, camuflar esse conteúdo dentro de uma planilha de contas a pagar. Nos dois casos, captar o truque pode ser bastante complicado.

Pensando nisso, desenvolvi uma nova rotina para o Byte Investigator. Ela tem por objetivo listar as streams de documentos Office que existem dentro de um arquivo Office. O uso é muito simples, e como é baseada em Perl, ela não depende de nenhum outro arquivo ou API externo, funcionando bem em Windows (com o Perl, lógico) e em qualquer live CD que tenha o Perl instalado.

Digitando OLEmerge.pl , ela verifica e lista cada stream encontrada. É possível usar o parâmetro -e, que apenas indica se há uma ou mais streams disponibilizadas. Obviamente, sempre que houver mais de uma stream, o arquivo deve ser analisado com mais detalhes, procurando qual o conteúdo oculto.

Você pode baixar a rotina aqui.

Comentários ?

Até o próximo post !

Nenhum comentário: