¡Hola a todos! Hacía mucho tiempo que no me pasaba por aquí. Espero que estéis todos bien y que el post que os traigo os resulte útil. Al lío.
En esta ocasión quiero dar a conocer un kit de herramientas en Python3 que me ha parecido muy bueno para el análisis de Maldocs, Oletools. Hasta el momento había utilizado la conocida suite DidierStevensSuite de DidierStevens (https://github.com/DidierStevens/DidierStevensSuite), de las que destaca su herramienta oledump.py para Python2. Pero claro, ya ha pasado tiempo y esta herramienta está un poco desactualizada, aunque sigue siendo muy útil.
El caso es que el otro día, en un imprevisto, me tocó analizar un Maldoc y no tenía a mano mi kit de herramientas, así que me tocó improvisar. Gracias a ello pude descubrir la suite de herramientas denominada oletools de Philippe Lagadec (https://github.com/decalage2/oletools) para Python3. Me gustó tanto la versatilidad y comodidad que me ofreció que creo que vale mucho la pena añadirla a nuestro kit de herramientas.
Instalación
Para instalar la herramienta solamente necesitamos tener Python3 instalado en nuestro sistema y el gestor de paquetes de este. Es decir, pip3. Si cumplimos estos requisitos, podemos instalar las oletools de la siguiente manera:
sudo -H pip install -U oletools
De no cumplir con los requisitos, siempre queda la opción de descargar el software directamente desde el repositorio de GitHub de la herramienta.
Una vez se ha instalado el paquete, tenemos disponibles una serie de nuevos comandos:
- oleid: permite analizar ficheros OLE para detectar características que normalmente se encuentran en ficheros maliciosos.
- olevba: dispone de la capacidad de extraer y analizar las macros VBA de los ficheros de MS Office (OLE y OpenXML).
- MacroRaptor: sirve para detectar las Macros VBA maliciosas.
- msodde: proporciona la capacidad de detectar enlaces DDE/DDEAUTO de los ficheros de MS Office, RTF y CSV.
- pyxswf: Detecta, analiza y extrae los objetos Flash (SWF) que pueden estar embebidos en ficheros con formato de MS Office y RTF.
- oleobj: Extrae los ficheros embebidos de los ficheros OLE.
- rtfobj: Lo mismo que el anterior pero con ficheros RTF.
- olebrowse: Proporciona una interfaz gráfica simple para navegar por los ficheros OLE. Este permite visualizar y extraer partes concretas del fichero.
- olemeta: Consigue los metadatos de los ficheros OLE.
- oletimes: Extrae las marcas de tiempo del fichero como la fecha de creación, la fecha de modificación, etc.
- oledir: Muestra todas las entradas de directorio de un archivo OLE.
- olemap: Pinta una tabla con todos los sectores, y sus atributos, del fichero OLE.
Probando las herramientas
Para poder probar la herramienta necesitamos disponer de un Maldoc el cual analizar. Para ello podemos visitar la web malware-traffic-analysis.net y descargar alguna muestra de allí. ¡OJO! Se trata de Malware que de verdad puede infectar y estropear tú equipo. ¡No lo hagas si no sabes lo que estás haciendo! (No me hago responsable de lo que hagas con la información que aquí se proporciona).
[La otra alternativa es que crees tú mismo un documento con alguna macro inofensiva y lo pruebes. Esta es, sin lugar a dudas, la alternativa más segura.]
En este caso se ha optado, por ejemplo, por descargar la siguiente muestra, que en este caso está relacionada con el Malware Emotet: https://malware-traffic-analysis.net/2021/01/04/index.html
Si deseas saber más sobre Emotet te dejamos por aquí esta publicación anterior:
Por tanto, descargamos el fichero ZIP y extraemos el PCAP. Desde la herramienta Wireshark podemos obtener el documento fácilmente:
Una vez nos hemos hecho con el fichero malicioso, podemos empezar a trastear con él haciendo uso de las herramientas. Por ejemplo, podemos ejecutar el primer comando listado anteriormente:
Efectivamente, el comando nos devuelve en los resultados que el fichero contiene Macros VBA entre otras cosas. A partir de este punto, podemos ejecutar el comando que queramos. No obstante, el más interesante de todos es olevba, ya que sabemos que el fichero tiene Macros en él:
Como se puede ver en la imagen, al lanzar el comando, la herramienta se encarga de extraer la Macro o Macros del fichero y a su vez se dedica a analizarlas. Si nos fijamos, la palabra “Create” aparece destacada en rojo, ya que es un indicativo de que la Macro intenta llevar a cabo acciones como por ejemplo crear un fichero, un objeto, etc.
Por otro lado, comentar que la flag --decode
sirve para indicarle a la herramienta que si encuentra cadenas codificadas en base64 las decodifique automáticamente. Podemos descubrir todos los parámetros que se pueden utilizar con la herramienta si ejecutamos el siguiente comando: olevba -h
.
Al tratarse de un caso real, la Macro está lo suficientemente ofuscada como para complicarle la vida lo máximo posible al analista. No obstante se pueden apreciar algunas cosas a simple vista.
Finalmente, tras el código obtenido de la Macro, el comando proporciona una tabla con un resumen del análisis que ha realizado:
En esta tabla podemos encontrar cosas interesantes como que la Macro se ejecutará en el momento se abra el documento. Además, tal y como se ha comentado previamente, también ha encontrado palabras clave como “Create” y derivadas, así como cadenas codificadas en base64 o cadenas ofuscadas.
Cabe destacar que en el caso de encontrar un comando codificado en base64 de Powershell, la herramienta es capaz de extraerlo y decodificar dicho código en base64 de manera automática. De hecho, la herramienta es capaz de detectar técnicas tan complejas como VBA Stomping (https://attack.mitre.org/techniques/T1564/007/). En conclusión, es una herramienta muy completa para el análisis de este tipo de documentos.
Aquellos que ya la conocíais podéis compartir vuestras experiencias con nosotros en el canal de Telegram o a través de Twitter. Y aquellos que no, ya sabéis lo que toca. ¡A trastear! 🤓
Espero que os haya gustado el post. Saludos y hasta pronto.🤗
Colaborador de “Derecho de la red”.