Uma das muitas estratégias utilizadas pelos cibercriminosos para tentar infectar os computadores de suas vítimas é o envio de um documento do pacote Office (documentos de texto, planilhas, apresentações, entre outros) com conteúdo malicioso. O documento pode ser anexado a um e-mail ou, em alguns casos, compactado em outro arquivo, por exemplo, um ZIP.
Esses documentos utilizados como uma isca geralmente se referem a diferentes assuntos (faturas, comprovantes, etc.) para fazer as pessoas acreditarem que é um arquivo legítimo e, assim, enganar o usuário para executá-lo. Assim, o invasor consegue executar seu código malicioso no computador da vítima, como, por exemplo, um spyware que é baixado de um site malicioso ou de uma página legítima que foi comprometida.
Os cibercriminosos aplicam técnicas diferentes a esses documentos no pacote Office para burlar as soluções de segurança instaladas no computador e ocultar suas intenções. Algumas dessas técnicas são o uso de macros com diferentes níveis de ofuscação ou o download de um modelo de uma URL maliciosa embutida no documento.
Conceitos teóricos para se ter em conta
Antes de mencionar os métodos que podem nos ajudar a determinar se um documento contém conteúdo malicioso ou não, é importante ter em conta alguns aspectos:
- Arquivos com extensão terminada em X (docx, xlsx, etc.):
Esses tipos de arquivos são organizados em uma estrutura com uma coleção de vários arquivos em formato XML com base no padrão Office Open XML (OOXML) desenvolvido pela Microsoft. Pela convenção adotada nesse padrão, os arquivos OOXML são arquivos ZIP, portanto, podemos abrir um desses arquivos com uma ferramenta de compactação/descompactação. Por exemplo, com 7zip.
Uma vez descompactado, observaremos a existência de muitos arquivos. Por exemplo, o arquivo [Content_Types].xml que contém informações de todo o documento; ou arquivos que terminam com a extensão "rels" (por exemplo "document.xml.rels") que são utilizados para estabelecer relações entre diferentes seções do documento - estilos, rodapé ou URL com links externos.
Esta definição nos ajudará na seção: Detecção de URLs maliciosas no documento
- Macros
Uma macro é uma série de instruções agrupadas sob o mesmo comando que permite que uma tarefa seja executada automaticamente em um documento. Dessa forma, os cibercriminosos desenvolvem macros (geralmente usando a linguagem de programação Visual Basic) para colocá-los dentro de documentos para fins maliciosos.
- Object Linking and Embedding (OLE)
OLE é uma tecnologia desenvolvida pela Microsoft que permite pegar um objeto de um documento e colocá-lo em outro; por exemplo, inclua uma tabela de uma planilha do Excel em um documento do Word.
A inclusão pode ser feita através da vinculação (linking) com outro aplicativo, permitindo que os dados não estejam no arquivo original. Outra opção pode ser que eles sejam incorporados (embedding), tornando-os parte do mesmo documento e desanexando-os de seu arquivo de origem.
Os criminosos podem usar esses objetos OLE para incluir código malicioso desenvolvido, por exemplo, em Visual Basic ou JavaScript, para que seja executado no momento em que o usuário tiver que interagir com eles.
Por último, se vamos realizar uma análise em um documento, é conveniente realizar esse processo dentro de uma máquina virtual para evitar uma possível infecção no computador físico.
Por sua vez, se alguém receber um documento cuja proveniência seja desconhecida, é aconselhável não baixá-lo ou executá-lo.
Métodos para determinar conteúdo malicioso em documentos:
Buscar o arquivo no Virus total
O VirusTotal é um site que nos oferece gratuitamente a possibilidade de analisar arquivos em diferentes soluções de segurança, bem como buscar um arquivo por hash ou a partir de uma URL.
Os arquivos carregados nesse site podem ser baixados por qualquer um de seus usuários registrados que possuam um serviço premium. Por esse motivo, não é recomendável fazer upload de arquivos que contenham informações confidenciais. Se você deseja buscar um arquivo específico, pode realizar esse processo por meio de seu respectivo valor hash.
Para obter o hash de um arquivo, você pode adquirir um console do PowerShell e executar o comando Get-FileHash <Arquivo>. Nesse caso, vamos realizar esse processo em um documento suspeito.
Como podemos ver, o arquivo está no VirusTotal e foi detectado como malicioso por várias soluções de segurança.
Análise o arquivo com Oletools e Oledump
Nesta parte, vamos extrair e analisar objetos OLE ou macros que estão dentro de um documento malicioso. Para fazer isso, usaremos duas ferramentas: oletools e oledump.py.
Para analisar um arquivo com o Oledump, primeiro vamos executar o programa e indicar o documento que queremos analisar.
Como resultado da análise, podemos ver vários streams listados. Aqueles que contêm a letra M indicam a existência de macros.
Com o argumento -s <STREAM_NRO>, podemos nos localizar em qualquer um desses streams e com o argumento -v podemos ver o código da macro.
Como pode ser visto na Imagem 7, conseguimos ver uma das macros no documento, embora possa não ser maliciosa, o nível de ofuscação que possui indica o contrário.
Se adicionarmos ao comando executado anteriormente (na Imagem 7) ">NOME_ARQUIVO" (neste exemplo o nome é "macro"), podemos salvar o conteúdo da macro em um novo arquivo para análise.
Oletools oferece muitas ferramentas. Neste caso, usaremos o script "olevba.py" para extrair e analisar macros de um documento.
Executamos o script com o argumento -a para que o documento seja analisado.
Como você pode ver na Imagem 10, existem algumas coisas suspeitas no arquivo. Por exemplo, as palavras-chave Create ou CreateObject, entre outras.
Em seguida, executamos o script (olevba.py) novamente com os comandos –decode (visualizar as strings não ofuscadas do código) e –deobf (tentar desofuscar partes do código).
Repetindo a etapa descrita na Imagem 8 com Oledump, podemos extrair as macros em um novo arquivo para análise.
Por último, mostramos uma análise sintetizada da atividade maliciosa neste documento. O documento estava tentando executar um código malicioso no PowerShell (oculto na página do documento) que se comunica com uma URL maliciosa que irá baixar e executar um executável.
Detecção de URLs maliciosas no documento
Às vezes, os cibercriminosos, em vez de colocar o código malicioso no documento, conduzem a outro documento por meio de uma URL maliciosa e, quando o abrimos, não vemos o conteúdo do documento em si, mas vemos outro documento que foi baixado na Internet. Essa técnica também é conhecida como template injection.
Para buscar a existência dessas URLs, abrimos o documento com a ferramenta 7zip e extraímos os arquivos contidos nela. Começamos extraindo arquivos como “document.xml.res” ou “webSettings.xml.res” procurando por tags ou atributos como sourceFileName, attachTemplate, Target, TargetMode.
Também procuramos uma URL diferente das oficiais da Microsoft. Exemplos de URLs oficiais podem ser: http://schemas.openxmlformats.org/, http://schemas.microsoft.com/.
Assim como podemos observar na Figura 17, conseguimos obter uma URL suspeita que é solicitada por meio de uma relação sobre o elemento com a ID “rId1”. O fato da URL não pertencer às URLs oficiais da Microsoft é um bom indicador para suspeitar desse documento.
Também podemos pesquisar a URL no VirusTotal para obter mais informações.
Detectando macros no documento
Este método requer que o documento seja aberto, portanto, antes de abri-lo devemos ter a proteção de macro habilitada. As etapas para habilitar a proteção podem ser encontradas neste link.
Ao abrir documento, devemos ir para a seção View -> Macros -> View Macros.
Feito isso, aparecerá um menu com as macros do documento. Para ver as macros, teremos que criar uma nova macro. Para isso, colocamos qualquer nome nas seções “Macro name” e “Macros in”, selecionamos a opção “All active templates and documents”. Isso habilitará a opção " Create ", que usamos para abrir o Visual Basic for Applications.
Ao abrir o Visual Basic for Applications, podemos ver o documento que estamos analisando e suas subpastas. Se selecionarmos cada elemento das subpastas, podemos obter o código-fonte de cada macro, caso exista.
Como podemos ver na imagem anterior, detectamos uma macro dentro do documento que possui um alto nível de ofuscação. Como mencionamos anteriormente, isso pode ser um indicador de que o documento seja malicioso.
Analisando texto invisível
Às vezes, os criminosos escondem parte de seu código malicioso em uma das páginas do documento para posteriormente ser manipulado e executado, por meio de uma macro, um objeto OLE, etc.
Este código pode ter um tamanho de fonte muito pequeno e da mesma cor da folha do documento, fazendo com que seja impossível detectá-lo a olho nu. No caso de detectar algo assim, seríamos confrontados com um indicador de que o arquivo provavelmente contém código malicioso.
Para fazer isso, novamente teremos que abrir o documento e selecionar tudo o que está contido nele, pressionando CTRL + A.
No exemplo da Imagem 21, o que deveria nos chamar a atenção é que se o documento tivesse apenas uma imagem, por que ele pinta partes que parecem vazias quando selecionamos todo o conteúdo? Para verificar isso, copiamos o conteúdo selecionado e colamos em outro documento.
Como podemos ver na Figura 22, temos um texto com tamanho 1 e na parte selecionada podemos ver como o corretor do Word indica que há texto com erros. Agora bastaria aumentar o tamanho e mudar a cor para ver o conteúdo.
Como podemos ver na Imagem 23, havia um grande número de personagens estranhos. Alguns caracteres são repetidos com alguma lógica, possivelmente para serem substituídos por alguma função. Olhando para isso, é muito provável que esse documento contenha algo malicioso e se quisermos analisá-lo, podemos ter que combinar isso com outro método, por exemplo, usando as ferramentas Oletools ou Oledump.
Conclusão
Estes são alguns dos métodos que podemos usar se recebermos um documento de uma fonte suspeita e quisermos detectar se ele contém código malicioso ou não. É importante lembrar que os cibercriminosos estão constantemente criando novas técnicas de evasão ou ofuscação, portanto, é possível que algumas dessas técnicas (ou todas) não possam ser aplicadas em um caso específico.