揭开异常工作的恶意文档的秘密
来源:互联网 发布:淘宝的a3狗粮怎么样 编辑:程序博客网 时间:2024/06/05 06:47
有时会出现一些让人感到陌生的恶意文档,这类恶意文档不能被工具或者沙盒分析。本文将对其进行深入研究。(这篇文章是Didier Stevens 的博客《Malfunctioning Malware》的后续)。
0×01 疑似异常工作的恶意文档
几周前,katja Hahn在推特上公布了一个恶意样本。
文件在这里公布出来了(SHA256 41a84ee951ec7efa36dc16c70aaaf6b8e6d1bce8bd9002d0a b5236197eb3b32a)。
在十六进制编辑器中打开,明显包含了VBA宏病毒指令:
但是像oledump或是olevba却不能够检测到VBA宏病毒。甚至MS word都不能显示或者运行这些宏病毒。
$ olevba 41a84ee951ec7efa36dc16c70aaaf6b8e6d1bce8bd9002d0ab5236197eb3b32a.bin
olevba 0.42 – http://decalage.info/python/oletools
[...]
FILE:
41a84ee951ec7efa36dc16c70aaaf6b8e6d1bce8bd9002d0ab5236197eb3b32a.bin
Type: OLE
No VBA macros found.
在文章《Malfunctioning Malware》中,作者通过一些底层的技术重建并提取文档中宏的源码。
现在我们想知道这是一种躲避检测的方法或者是另一种漏洞?
0×02 oledir
首先使用oledir查看文档内部的OLE目录,oledir是我的oletoos工具包中比较新的工具。
OLE的目录就是一种包含名称和存储了文件数据流位置的一种数据结构(详见[MS-CFB])。每个目录可能会被使用,或者完全是空的。
在本例中,我们可以看到有好几个空的目录入口(id从6到12),其后是一个非空目录(id13)。由于这些目录入口会被连续的创建,这就暗示了,这些空的入口可能是在使用完后释放了的。
这同样也证实了不存在VBA宏,因为在文件中没有存储名为”VBA”的结构(详见[MS-OVBA])。
0×03 olemap
接着,我们使用另一个新工具olemap看一下OLE的FAT(文件分配表):
[…]
从上图可知,在使用过的节区后存在大量标记为free的节区。这也从另一个侧面显示一些流可能被删除了。
这也证实了在Hex Editor中文件偏移地址为0XE440处出现的VBA宏位于一个未使用的节区(number 71,offset 0XE400)。
很有可能这个文档中原来包含的VBA宏病毒已经被删除了。一个恶意软件的作者发送一个去除宏病毒的文档,这就很奇怪了,因为这些宏不可能会被执行。
我认为这个文档实际上应该是被杀软或者一些查杀工具清理了一番。例如, F-Prot和McAfee杀毒引擎就可以移除宏病毒。其他例如ExeFilter也可以做到。
为了证实这个,我们要找到清理之前的原始恶意样本。这个也不简单,因为原始文件早已被更改了:原始文件有不同的hash,而且原始文件名也不知道。
0×04 Tip: 如何找到含有特定字符串的恶意软件样本
详见FreeBuf文章。
0×05 分析
在这些搜索结果中,我们可以看到在某个时期段有至少两个样本的大小是一样的(78848bytes),但是hash不一样:
Ø WIN_019_11.doc, SHA256 6780af202bf7534fd7fcfc37aa57e5a998e188ca7d65e22c0ea658 c73fad36a2
Ø WIN_019_11.doc, SHA256 f36cb4c31ee6cbce90b5d879cd2a97bcfe23a38d37365196c25e 6ff6a9f8aaa6
这次olevba检测到两个文件中都包含VBA宏,可以在下面看到好几个典型的恶意样本特征。这两个文件除了在宏的一行源代码其他都几乎相同。
$ olevba -a 6780af202bf7534fd7fcfc37aa57e5a998e188ca7d65e22c0ea658c73fad36a2.bin
olevba 0.42 - http://decalage.info/python/oletools
Flags Filename
----------- -----------------------------------------------------------------
OLE:MASIHB-V 6780af202bf7534fd7fcfc37aa57e5a998e188ca7d65e22c0ea658c73fad36a2.bin
(Flags: OpX=OpenXML, XML=Word2003XML, MHT=MHTML, TXT=Text, M=Macros, A=Auto-executable, S=Suspicious keywords, I=IOCs, H=Hex strings, B=Base64 strings, D=Dridex strings, V=VBA strings, ?=Unknown)
===============================================================================
FILE: 6780af202bf7534fd7fcfc37aa57e5a998e188ca7d65e22c0ea658c73fad36a2.bin
Type: OLE
-------------------------------------------------------------------------------
VBA MACRO ThisDocument.cls
in file: 6780af202bf7534fd7fcfc37aa57e5a998e188ca7d65e22c0ea658c73fad36a2.bin - OLE stream: u'Macros/VBA/ThisDocument'
-------------------------------------------------------------------------------
VBA MACRO Module1.bas
in file: 6780af202bf7534fd7fcfc37aa57e5a998e188ca7d65e22c0ea658c73fad36a2.bin - OLE stream: u'Macros/VBA/Module1'
+------------+----------------------+-----------------------------------------+
| Type | Keyword | Description |
+------------+----------------------+-----------------------------------------+
| AutoExec | AutoOpen | Runs when the Word document is opened |
| Suspicious | Kill | May delete a file |
| Suspicious | Open | May open a file |
| Suspicious | Shell | May run an executable file or a system |
| | | command |
| Suspicious | vbNormal | May run an executable file or a system |
| | | command |
| Suspicious | CreateObject | May create an OLE object |
| Suspicious | Chr | May attempt to obfuscate specific |
| | | strings |
| Suspicious | FileCopy | May copy a file |
| Suspicious | SaveToFile | May create a text file |
| Suspicious | Write | May write to a file (if combined with |
| | | Open) |
| Suspicious | Hex Strings | Hex-encoded strings were detected, may |
| | | be used to obfuscate strings (option |
| | | --decode to see all) |
| Suspicious | Base64 Strings | Base64-encoded strings were detected, |
| | | may be used to obfuscate strings |
| | | (option --decode to see all) |
| Suspicious | VBA obfuscated | VBA string expressions were detected, |
| | Strings | may be used to obfuscate strings |
| | | (option --decode to see all) |
| IOC | codakes.exe | Executable file name (obfuscation: VBA |
| | | expression) |
| Base64 | 2'+ | Micr |
| String | | |
| VBA string | GE | Chr(80 - 9) + "E" |
| VBA string | t | (Chr(100 + 10 + 6)) |
| VBA string | TE | Chr(80 + 4) + "E" |
| VBA string | mP | (Chr(80 + 20 + 9)) + "P" |
| VBA string | \codakes.exe | Chr(90 + 2) + "codakes" + Chr(50 - 4) + |
| | | "exe" |
| VBA string | ConnectionDB | ("Connection") & "DB" |
+------------+----------------------+-----------------------------------------+
0×06 文件比较
如果我们将这两个文件和原始文件的OLE目录进行对比,结果显示除了包含VBA宏的流和存储数据,其他目录完全相同。
而且,文档的元数据也完全相同,包括最后保存的时间戳。
如果该文件是在像MS Word编辑器中修改的,是不会出现这种情况的。
0×07 总结
分析后我们可以知道,这些不能够被正常分析的文件(SHA256 41a84ee951ec7efa36dc1 6c70aaaf6b8e6d1bce8bd9002d0ab5236197eb3b32a)不是恶意软件的作者实际发送的,而是被杀软或者其他相似的工具清洁之后的文件。
寻找和恶意样本具有相同的特征字符串,有可能找到最原始的,具有正常功能的文件。随后像olevba和oledump就可以提前并分析VBA宏病毒。
这里给个建议,如果你捕获了这样一个不能被分析的样本,首先可以在MS Office中运行下,检查payload是否能够执行。如果不能说明这是一个阉割的版本,下面就去找到最原始的版本。
为了防止恶意软件的作者找到其他方法来躲避检测,请将任何Bug或者奇怪的样本发送至tool developers( olevba, use https://bitbucket.org/decalage/oletools/issues?status=new&st atus=open)
至于杀软引擎和文件清理工具,这里例子显示他们还不足以完全清楚包含的宏病毒。为了避免这些杀软在正常文件中根据特征值查杀,最好用null或者空格填充这些相关节区。
- 揭开异常工作的恶意文档的秘密
- 揭开《秘密》的秘密
- 揭开密码的秘密?
- 揭开Windows网络邻居的内幕秘密
- 揭开.NET程序保护的秘密
- 揭开伟大架构师的秘密
- 揭开Google暴利秘密的数学公式
- 揭开Google暴利秘密的数学公式
- 揭开Google暴利秘密的数学公式
- 揭开半透明窗体的秘密(转)
- 揭开关于你生世的秘密
- 揭开应用推广运营背后的秘密
- 揭开应用推广运营背后的秘密
- 数据中心发展历程 揭开不为人知的秘密
- 揭开应用推广运营背后的秘密
- 揭开应用推广运营背后的秘密
- 揭开演讲恐惧的五大“秘密”
- 揭开演讲恐惧的五大“秘密”
- 通过AIDL进程间通信
- hdu 1907 John
- 技术剖析Potato提权原理
- DBCP数据库连接池的配置
- Trianglur Design--找规律
- 揭开异常工作的恶意文档的秘密
- 分页核心SQL
- poj 1651
- cocos2dx 定时器
- 二叉树存储 最小堆
- Blog Four years
- Android 之绑定服务
- day11续—状态管理
- Android下的Button按钮点击事件