-
Notifications
You must be signed in to change notification settings - Fork 586
Description
Hi folks,
Trying to perform systematic scan of office files sent by some customers, and facing this issue with olevba with one malware spotted by another tool.
Thx for your set of tools first, and for checking that issue as well :)
Affected tool:
olevba
Describe the bug
For one particular malware xls file, olevba is crashing and not extracting macros
File/Malware sample to reproduce the bug
sha256 0fca202016369aa44b281470c9c7f7b8dc9653802995faeadb09bebab33685da
md5 47f5f19bafd5969dc41307e16de798b9
Get archive of the file here inv_397145572_1781481758.xls.zip
protected by "oledump.plugin_biff"
How To Reproduce the bug
olevba /tmp/officescan/inv_397145572_1781481758.xls
Expected behavior
extract the malicious macro, and not crash :)
Console output / Screenshots
olevba 0.56.1 on Python 2.7.18 - http://decalage.info/python/oletools
INFO Opening OLE file /tmp/officescan/inv_397145572_1781481758.xls
INFO Check whether OLE file is PPT
DEBUG using open OleFileIO
DEBUG File appears not to be a ppt file (In stream "root" for field "listdir" found value "[u'\x05documentsummaryinformation', u'\x05summaryinformation', u'book']" but expected Current User!)
FILE: /tmp/officescan/inv_397145572_1781481758.xls
Type: OLE
DEBUG detect vba macros
DEBUG VBA_Parser.find_vba_projects
DEBUG Checking DirEntry #0
DEBUG Checking DirEntry #1
DEBUG Reading data from stream u'Book' - size: 255780 bytes
DEBUG Read 255780 bytes
DEBUG '\t\x08\x08\x00\x00\x05\x05\x00\x177\xcd\x07\xe1\x00\x00\x00\xc1\x00\x02\x00\x00\x00\xbf\x00\x00\x00\xc0\x00\x00\x00\xe2\x00\x00\x00\\\x00p\x00\x015 '...[much more data]...'\x00\x00\xab\x00"\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x02\x00\x92\x04\n\x00\x00\x00'
DEBUG Checking DirEntry #2
DEBUG Reading data from stream u'\x05SummaryInformation' - size: 4096 bytes
DEBUG Read 4096 bytes
DEBUG "\xfe\xff\x00\x00\x06\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xe0\x85\x9f\xf2\xf9Oh\x10\xab\x91\x08\x00+'\xb3\xd90\x00\x00\x00\x84\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x008\x00\x00\x00\x08\x00\x00\x00@\x00\x00\x00\x12\x00\x00\x00L\x00\x00\x00\x0c\x00\x00\x00d\x00\x00\x00\r\x00\x00\x00p\x00\x00\x00\x13\x00\x00\x00"...[much more data]...'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DEBUG Checking DirEntry #3
DEBUG Reading data from stream u'\x05DocumentSummaryInformation' - size: 4096 bytes
DEBUG Read 4096 bytes
DEBUG '\xfe\xff\x00\x00\x06\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\xd5\xcd\xd5\x9c.\x1b\x10\x93\x97\x08\x00+,\xf9\xae0\x00\x00\x00\xd0\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x000\x00\x00\x00\x0b\x00\x00\x008\x00\x00\x00\x10\x00\x00\x00@\x00\x00\x00\r\x00\x00\x00H\x00\x00\x00\x0c\x00\x00\x00\x8d\x00\x00\x00\x02\x00\x00\x00'...[much more data]...'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DEBUG detect xlm macros
DEBUG Found Excel stream 'Book'
DEBUG Running BIFF plugin from oledump
ERROR Error when running oledump.plugin_biff, please report to https://github.com/decalage2/oletools/issues
Traceback (most recent call last):
File "/home/simon/.local/lib/python2.7/site-packages/oletools/olevba.py", line 3350, in detect_xlm_macros
self.xlm_macros = biff_plugin.Analyze()
File "/home/simon/.local/lib/python2.7/site-packages/oletools/thirdparty/oledump/plugin_biff.py", line 1657, in Analyze
parsedExpression, stack = ParseExpression(expression, definesNames, sheetNames, options.cellrefformat)
File "/home/simon/.local/lib/python2.7/site-packages/oletools/thirdparty/oledump/plugin_biff.py", line 1197, in ParseExpression
stack.append('"' + stringValue + '"')
UnboundLocalError: local variable 'stringValue' referenced before assignment
No VBA macros found.
DEBUG Checking for encryption (normal)
DEBUG is_encrypted
DEBUG Checking for encryption using msoffcrypto
INFO msoffcrypto failed to interpret file /tmp/officescan/inv_397145572_1781481758.xls or determine whether it is encrypted: Unrecognized file format
DEBUG Checking for encryption in OLE file
DEBUG no encryption detected
DEBUG will exit now with code 0
Version information:
- OS: Ubuntu
- OS version: 20.04 - x86_64
- Python version: 2.7.18
- oletools version: olevba 0.56.1 on Python 2.7.18