This new version of oledump.py adds some extra features for YARA rule scanning.
oledump.py declares 2 external variables that can be used in your YARA rules.
External variable streamname is a string with the stream name, as printed in oledump’s report.
External variable VBA is a boolean that is set to true when the data to scan is VBA source code. Previous versions of oledump would scan the raw stream content with YARA, but this new version also decompresses all streams with VBA macros, and concatenates them together to scan them after all streams have been scanned.
Example of a rule using external variable VBA:
rule VBA_Autorun { strings: $a = "AutoExec" nocase fullword $b = "AutoOpen" nocase fullword $c = "DocumentOpen" nocase fullword $d = "AutoExit" nocase fullword $e = "AutoClose" nocase fullword $f = "Document_Close" nocase fullword $g = "DocumentBeforeClose" nocase fullword $h = "Document_Open" nocase fullword $i = "Document_BeforeClose" nocase fullword $j = "Auto_Open" nocase fullword $k = "Workbook_Open" nocase fullword $l = "Workbook_Activate" nocase fullword $m = "Auto_Close" nocase fullword $n = "Workbook_Close" nocase fullword condition: VBA and any of ($*) }
The condition of this rule is true when external variable VBA is true and when at least on of the strings are found:
This rule is included in a new set of YARA rules I included with oledump.py: vba.yara.
I made a video to illustrate this:
And there is also a new plugin: plugin_str_sub. It tries to de-obfuscate strings with padded characters:
oledump_V0_0_27.zip (https)
MD5: A6C6728E20AE46A4FECC5F3976AF33BF
SHA256: 54FE550D5102A0E9428F6BD9B5170B50797EDA2076601634519CDBB574004A3C

Article Link: https://blog.didierstevens.com/2017/03/07/update-oledump-py-version-0-0-27/