Rich Text Format (RTF) es un formato de archivo informático desarrollado en 1987 por Microsoft que se utiliza  para crear todo tipo de documentación. La ventaja que tienen por sobre los archivos DOC o DOCX es que la gran mayoría de los programas de procesamiento de texto pueden abrir los archivos RTF con absoluta compatibilidad. Por esa razón y por su similitud con los otros documentos interpretados por el paquete de Microsoft Office, también son utilizados por los cibercriminales para realizar sus ataques tanto a empresas como a usuarios. De hecho, a lo largo de los años se han encontrado diferentes vulnerabilidades en los RTF que permitían a los atacantes crear exploits para sacar algún tipo de ventaja sobre las víctimas.

Cómo analizar un archivo RTF en busca de una posible amenaza

En esta oportunidad, intentaremos determinar si un archivo RTF es o no una amenaza para nuestro equipo u organización. Para ello, utilizaremos tres herramientas: oletools, oledump.py y rtfdump.py, las cuales fueron desarrolladas para analizar archivos OLE (Object Linking and Embedding), como también archivos del paquete Microsoft Office.

La siguiente captura es de un documento analizado con rftdump.py. Luego de correr la herramienta indicando como parámetro el archivo, en el resultado del análisis se puede observar que se encontró un archivo OLE dentro del documento. Pero esto no dice nada, ya que el contenido podría ser benigno o no.

En una segunda instancia realizamos un nuevo análisis, pero esta vez más detallado, con los parámetros “–s” indicamos que ítem deseamos seleccionar, con –hexdecode y –extract convertimos los caracteres para una fácil apreciación. Esta información es muy útil, ya que la primera secuencia de bytes que nos devuelve la herramienta coincide con los bytes de la cabecera de un archivo OLE.

Luego de confirmar que el archivo RTF contiene un archivo OLE procedemos a extraerlo para realizar un nuevo análisis sobre este último y determinar si el objeto intenta realizar acciones no deseadas en un equipo.

La herramienta Oledump.py nos brinda distinto tipo de información que resulta de mucha ayuda. Al iniciar la herramienta sobre el archivo OLE nos indica que contiene tres ítems. Ahora bien, para poder visualizar el contenido debemos utilizar el parámetro –s seguido del ítem deseado. Tal como se puede apreciar en la captura, el primer resultado contiene una URL, con lo cual, podríamos asumir que el documento RTF intentará descargar y ejecutar un binario.

Otra opción de análisis puede ser mediante el uso de oletools, que cuenta con un módulo llamado rtfobj que tiene la particularidad de que puede ser utilizado como una librería de Python o como una herramienta por línea de comando.

Al ejecutar el script nos devuelve un breve reporte donde nos indica que encontró objetos incrustados en el documento RTF. Como se puede apreciar en la imagen de la captura a continuación, la información obtenida es muy detallada, ya que nos indica que posiblemente se trate de un exploit para una vulnerabilidad determinada. Además, en caso que quisiéramos, podríamos extraer el objeto para luego verificar que lo que nos dice rtfobj es real, tal como se puede ver al final de la captura.

Posteriormente, utilizamos oledump.py y el resultado que obtenemos nos brinda la misma información que vimos con oletools.

Si bien existen distintas metodologías y/o procedimientos para identificar un documento mal intencionado, estas son dos buenas prácticas para obtener información sobre un documento RTF cuya procedencia se desconoce, y de esta manera evitar un ataque a nuestros equipos. Ya que tal como vimos en los ejemplos, dentro de un archivo RTF se puede esconder una amenaza informática.