当前位置:网站首页 > 网络安全培训 > 正文

看萌新如何分析一款开源工具

freebuffreebuf 2019-04-24 259 0

本文来源:看萌新如何分析一款开源工具

原创: 萌新 合天智汇 

0x01

最近发现老师傅发了一篇介绍宏病毒检测的文章,跃跃欲试,也来照猫画虎地分析一把。

0x02

先介绍下什么是宏病毒。

现在的大部分文字处理程序,电子表格和数据库都包含功能强大的程序语言,允许在文档中使用命令序列。这些命令序列或小程序就被叫做宏。因此数据文件(或称文档)不能感染病毒的定理已不再成立,因为每一个文档现在都可能含有可执行指令。许多应用程序如MicrosoftWord,都允许建立宏。它在某操作发生时可自动运行。拥有这些条件,恶意程序——宏病毒的生成不过是一个时间的问题。宏病毒编制极其容易,微软的宏语言都是BASIC语言的子集。BASIC是众多病毒制造者钟爱的编程语言,它比汇编语言容易许多。所以本质上任何人都能制造宏病毒,因此不难理解宏病毒如此之多且日趋复杂化。

宏病毒利用宏语言外部的例程的调用能力如使用WindowsAPI函数,能进行任何操作。与传统的病毒相比,宏病毒的最新特色是它们不依赖操作系统。只要有应用程序支持解释,宏病毒无需改动可在许多平台上运行。例如MicrosoftWord宏病毒能在任何安装过MicrosoftWord的系统中运行(Windows3.1x,Windows95,Windows NT,MAC等)。

0x03

和其他语言一样,宏病毒一被杀软盯上还想活命就得变身了,最简单的方法就是混淆咯。针对混淆的宏病毒,该如何检测?老师傅推荐了ViperMonkey。

ViperMonkey是一个用Python编写的VBA仿真引擎,用于分析和反混淆MicrosoftOffice文件(Word,Excel,PowerPoint,Publisher等)中包含的恶意VBA宏。主要是通过VBA解析和仿真的方式来进行分析。

但是由于VBA语言、微软office全家桶以及所有可以从VBA调用的动态链接库和动态链接库对象的所有特性,VBA仿真既困难又复杂,所以效率不是非常高,不过用于日常分析也够了。

本文主要就是简单分析下ViperMonkey的原理。

0x04

安装非常简单,这儿不再一一截图细说了。

image.png

安装完ViperMonkey后,输入vmonkey.exe[file_name]就能对宏病毒进行分析。我们以某宏病毒样本进行试验。

看下图第二个红框,就是提取出来的宏代码,但是我们看到经过了高强度的混淆,根本不知道它在干什么,接下来就是展现ViperMonkey虚拟执行的时候了

image.png

ViperMonkey会先搜索,寻找入口函数,这里只有一个函数AutoOpen,就从AutoOpen开始模拟

image.png

大概过了一分钟,虚拟执行完成了,我们可以看到如下红框中的代码,就是最终解密出来的VBA代码,ViperMonkey成功对该宏病毒代码进行了反混淆,并提示发现了InterestingFunction Call。


image.png

0x05

老样子,还是先定位到main函数

image.png

主要就是打印个banner以及接受参数

image.png

开始分析工作的是在下图


image.png

调用的process_file

看看是在哪儿声明的

image.png

Emm,找到了


image.png

1330处调用ViperMonkey创建了一个模拟器vm

去找ViperMonkey在哪儿声明的


image.png

image.png

在类ViperMonkey中定义了entry_point入口点和callback_suffixes回调函数

我们已经创建了一个vm,在后续过程中,程序就会从vba中搜索是否存在上图定义的entry_point,callback_suffix中的一些函数,来找到入口点。

初始化vm之后,接下来调用vba_parser,看着名字是用于解析的


image.png

找一下VBA_Parser


image.png

Emm,没有自定义,是从oletools库中导出的

去查一下这是做什么用的


image.png

从介绍中我们知道,levba用于解析OLE和OpenXML文件,如MSOffice文档(例如Word,Excel),检测VBA宏,以明文提取源代码,以及检测安全相关模式,如自动执行宏,可疑VBA恶意软件,反沙箱和反虚拟化技术使用的关键字,以及潜在的IOC(IP地址,URL,可执行文件名等)。它还检测和解码几种常见的混淆方法,包括十六进制编码,StrReverse,Base64,Dridex,VBA表达式,并从解码的字符串中提取IOC。

那也就是说ViperMonkey是直接把olevba拿到用于解析,提取宏代码了

按照关键词Parse去查一下吧


image.png

找到解析宏的部分了


image.png


image.png

注释里已经说明了,主要是文件格式解析的操作。

解析的操作一直到1530行

接下来是trace()

image.png

找到trace声明处


image.png


image.png

在下图可以看到其遍历函数来获取入口点


image.png

如下红框中,显示了该VBA代码中调用的所有函数,然而真正有意义的函数只有Run、GetObject、Shapes,其他函数都是作混淆用的。


image.png

遍历入口点,只有一个AutoOpen。

image.png

遍历变量名,都是些随机名。


image.png

根据函数名,进入到对应的函数模拟


image.png


image.png

并不是每一个VBA函数都需要模拟,只模拟那些用于字符串混淆的函数,如:StrReverse、Replace、Join、Split等。


image.png

image.png

如下,ViperMonkey成功模拟出了,

Shapes("AtwGUaJHEhkMnR").TextFrame.TextRange.Text执行后的代码,如下图右边红框所示,也是该宏病毒最后要执行的powershell恶意代码。

image.png

0x06

文末还是致谢老师傅,文中一些图片从老师傅那儿直接拿来用了,但是由于老师傅原文为内部分享,所以不方便指出参考来源及作者,还请老师傅见谅~

相关操作学习

宏病毒:掌握宏病毒的原理。

http://www.hetianlab.com/expc.do?ec=4d499790-ba9f-4f32-91cd-315af2187a35


image.png


本文为合天原创,未经允许,严禁转载。

转载请注明来自网盾网络安全培训,本文标题:《看萌新如何分析一款开源工具》

标签:合天智汇

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表