O RTF, acrônimo de Rich Text Format (literalmente, formato de texto enriquecido) é um formato de arquivo de computador desenvolvido em 1987 pela Microsoft que é usado para criar todos os tipos de documentação. No Brasil, este tipo de aquivo é preferencialmente usado para edição e distribuição de textos oficiais, segundo orientação do Manual de Redação da Presidência da República. Além disso, os Tribunais Superiores (STF e STJ) também são exemplos de intituições onde os documentos são geralmente guardados e distribuídos em formato Rich Text.

A vantagem do RTF em compararção com os arquivos DOC ou DOCX é que a grande maioria dos programas de processamento de texto podem abrir esse formato de arquivo com total compatibilidade. Por essa razão e pela sua semelhança com os outros documentos do pacote da Microsoft Office, o formato RTF também é usado ​​por cibercriminosos para realizar ataques contra empresas e usuários. Na verdade, ao longo dos anos foram encontradas diferentes vulnerabilidades no RTF que permitiram que os atacantes criassem exploits para ganhar algum tipo de vantagem sobre as vítimas.

Como analisar um arquivo RTF em busca de uma possível ameaça?

Neste post, tentaremos determinar se um arquivo RTF é ou não uma ameaça para o nosso equipamento ou empresa. Para isso, usaremos três ferramentas: oletools, oledump.py e rtfdump.py, que foram desenvolvidas para analisar arquivos OLE (Object Linking and Embedding), assim como arquivos de pacotes da Microsoft Office.

A seguinte captura é de um documento analisado com o rftdump.py. Ao executar a ferramenta, indicando o arquivo como um parâmetro, no resultado da análise, é possível ver que um arquivo OLE foi encontrado dentro do documento. Mas isso não diz nada, já que o conteúdo pode ser benigno ou não.

Em uma segunda instância, realizamos uma nova análise, mas desta vez mais detalhada, com os parâmetros "-s" indicamos qual item queremos selecionar, com o -hexdecode e o -extract convertemos os caracteres para que sejam facilmente visualizados. Essa informação é muito útil, uma vez que a primeira sequência de bytes que a ferramenta nos devolve corresponde aos bytes do cabeçalho de um arquivo OLE.

Depois de confirmar que o arquivo RTF contém um arquivo OLE, realizamos a sua extração para que seja possível fazer uma nova análise sobre o último e determinar se o objeto tenta executar ações indesejadas no equipamento.

A ferramenta Oledump.py nos dá um tipo diferente de informação que é muito útil. Ao iniciar a ferramenta sobre o arquivo OLE podemos visualizar a presença de três itens. Agora, para poder ver o conteúdo, devemos usar o parâmetro -s seguido pelo item desejado. Como você pode ver na captura, o primeiro resultado contém um URL, com o qual podemos assumir que o documento RTF tentará baixar e executar um binário.

Outra opção de análise pode ser através do uso do oletools, que tem um módulo chamado rtfobj que pode ser usado como uma biblioteca Python ou como uma ferramenta por linha de comando.

Ao executar o script, ele retorna um breve relatório indicando que encontrou objetos incorporados no documento RTF. Como você pode ver na imagem da captura abaixo, a informação obtida é muito detalhada, pois indica que pode ser uma exploit para uma certa vulnerabilidade. Além disso, se quiséssemos, poderíamos extrair o objeto e verificar que a informação do rtfobj é real, como podemos ver no final da captura.

Posteriormente, usamos o oledump.py e o resultado obtido nos dá a mesma informação que vimos com o oletools.

Embora existam diferentes metodologias e/ou procedimentos para identificar um documento malicioso, estas são duas boas práticas para obter informações sobre um documento RTF cuja origem é desconhecida e, dessa forma, evitar um ataque em nosso dispositivo.

Como vimos nos exemplos deste post, é possível esconder uma ameaça dentro de um arquivo RTF. Por isso, fique atento! :)