一例加密保护Excel的VBA宏病毒下载器分析-更新
本帖最后由 Loopher 于 2020-11-9 15:35 编辑# 概述
> 分析时间:2020-11-07
> 更新:2020-11-09 增加解决方案和防护建议
在早前笔者写的一篇恶意样本分析的笔记中有同学评论说是自己的电脑中了病毒,如下
经过沟通后获取样本,趁着周末就分析了一下,该样本的宏经过了密码保护,启用宏功能后程序会在后台下载`synpatic.exe和一个临时文件cache1` 文件 并且会隐藏文件和执行,截止笔者分析时宏内的下载链接已经不能下载了。下面详细分析该文档的功能,包括的内容如下
- 分析加密码保护的 `vba` 宏程序
- 使用 `vipermonkey` 模拟分析宏
# 样本分析
## 基础静态分析
样本文件是一个 `excel` 样本,由于是论坛的@[无量那由他劫](https://www.52pojie.cn/home.php?mod=space&uid=951967)提供,打开文件后,接着查看一下宏内容,如下
> 这里先不要打开宏,使用alt+F11的快捷键打开接口
这个宏受密码保护,要想直接打开并不可能
在这里要说一下在早前的样本分析笔记中[ Word文档宏病毒样本分析](https://www.52pojie.cn/thread-1287476-1-1.html)中有人给我说笔者写的调试方式
不能应对一些宏病毒,这里感谢提醒。除了(https://github.com/DidierStevens/DidierStevensSuite/blob/master/oledump.py)之外,这里提供另一个功能强大的宏病毒分析模拟程序(https://github.com/decalage2/ViperMonkey) 除了提供宏代码提取,还能模拟执行宏程序。
### 使用vipermonkey
这个库是一个 `python` 的库,安装命令为
```
pip install -U https://github.com/decalage2/ViperMonkey/archive/master.zip
```
不过在 `windows` 上安装运行可能会有点问题,解决方案具体参考(https://github.com/decalage2/ViperMonkey/issues/84)就能正常运行了。安装完成后使用如下命令提取宏
- 提取宏
运行如下命令分析内嵌的宏,如下
```
vmonkey p.xls
```
得到如下
整理后保存为 `a.vbs` 如下
- 模拟运行
除了上面提到的方式提取脚本,有时候希望得到运行的结果,可以使用如下方式来进行模拟运行
```
vmonkey -s a.xls
```
运行如下,
提取完成基本的信息后,下面分析程序。
### 宏代码分析
#### 入口分析
打开程序后来到入口位置 `Workbook_Open` 得到如下内容
开始程序会先统计excel的表单数量,接着调用 `RegKeySave` 函数关闭掉 `excel和word` 的宏警告
> 参考: https://getadmx.com/?Category=Office2016&Policy=word16.Office.Microsoft.Policies.Windows::L_VBAWarningsPolicy
接着将打开的 `excel` 文档的警告提示关闭,保存表单的数量。程序调用 `MPS` 函数后,设置表单的默认选项是第一个。这里基本的入口分析完成了,接着分析一下 `MPS` 函数分析
#### MPS 函数分析
进入到 `MPS` 函数内后得到如下结果
首先创建一个 `FSO` 对象和一个数组 `FP` 以及一个 `URL` 数组
> 我也不是很懂VBA语法,不过从赋值上来看是数组
这个函数的功能主要是判断是 `\~cache1或者\~Synaption.exe` 是否存在,如果存在则复制到`tmp\cache1.exe` 并使用隐藏的窗口的方式启动。
> 参考: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/shell-function
其中 `FP` 数组用来保存两个文件名分别是 `\~cache1 \~Synptics.exe` 程序,然后 `URL` 数组用来保存要下载的文件 `url` 地址,接着调用 `FSO` 对象判断 `cache1和Synaption.exe` 是否存在,如果存在则将对应的文件复制到 `%TMP%` 目录下的 `cache1.exe` ,复制完成后还会将 `tmp\cache1.exe` 以隐藏 `shell` 窗口启动进程的方式运行。 如果文件不存在则分别到如下地址下载,只要有一个文件下载成功则启动进程
```
URL(1) = "https://docs.google.com/uc?id=0BxsMXGfPIZfSVzUyaHFYVkQxeFk&export=download"
URL(2) = "https://www.dropbox.com/s/zhp1b06imehwylq/Synaptics.rar?dl=1"
URL(3) = "https://www.dropbox.com/s/zhp1b06imehwylq/Synaptics.rar?dl=1"
```
目前改地址已经不能访问了,调用的 `FDW` 函数如下
访问上述地址后都是不能存在了
该样本运行后会还会自动填充数据,笔者认为这个宏提供的功能是一些常用的 `excel` 的过滤,排序等手动操作的过程,使用脚本来做重复的工作,不过这也是猜测。
## 动态调试
根据上面的静态分析已经很清晰了,下面进入动态调试来执行查看一些运行的变量来确保分析结果,同时也提供一些针对密码保护的宏样本分析手段。因为有时候分析的样本经过了重度混淆此时静态分析将会无从下手,如下是查看宏提示要求输入密码
### 去除密码保护
由于这个样本已经使用了密码保护,要想动态调试需要量样本的密码保护去掉,这里推荐使用 `VBA PASSWORD BYPASS` 来完成密码的绕过,有需要的可以到提供的下载。使用 `VBA Password Bypass` 打开样本是提示如下
提示要求打开样本后不要关闭 `bypass` 软件,此时对应的 `excel` 文件将被打开,打开后我们将宏功能打开
**VBA password bypass**
```
https://appnee.com/vba-password-bypasser/
```
`为了调试需要打开宏` 程序会运行失败,如下
> 由于文件是有点不适合公开,打码了
接着点击 `End` 后使用 `Alt+F11` 打开宏,如下
核心部分在 `ThisWorkbook` 内,打开后如下
设置断点后开始调试命中断点后如下
> 可能运行样本时不一定能设置断点,此时按下F5后再次尝试即可设置断点,之后点击运行按钮
查看运行变量后观察到表单的数量有 `6` 个
接着调用 `RegKeySave` 函数关闭宏警告提示
运行完成后将会设置 `excel word` 的宏警告关闭。
之后禁用excel警告提示 ,紧接着来到 `MPS` 函数,运行时参数如下
接着进行文件判断后调用网络下载
继续执行到 `send` 函数执行后网络失败
不能下载远端的 `payload` 程序,则后续就不能继续分析了。
### 2020-11-09更新
> 后续,感染病毒的同学问我为啥保存的excel文件会变为.xlsm文件
**这个恶意软件为了让用户开启宏功能,将用户的数据全部隐藏掉,开启宏运行后就执行后台程序然后再显示用户数据,如果用户没有开启宏执行,则默认显示一个表,其余的全部不显示。**
**如下没有开启宏的情况,只有一个表可见**
开启宏之后就会自动加载其余剩下的表
在 `VBA` 脚本内有如下函数
`Workbook_BeforeSave` 是 `excel` 的函数,触发条件是用户保存数据时的动作
> 参考 https://docs.microsoft.com/en-us/office/vba/api/excel.workbook.beforesave
保存 `excel` 的触发条件为
- ctrl+s
- File->save
- File->saveAs
如果前两个触发,则传入的 `SaveAsUI` 动作是将所有的表单设置为不可见,只保留一个可见
**此时试运行的情况,当保存触发,程序执行完红色框的程序后,只有一个表保留,其他的都被隐藏了,如下**
**当执行文件另存为的时候只显示一个可显示选项保存为 `xlsm` 文件,如下**
**点击另存为触发函数**
**接着将另存为的文档其余的表单隐藏,只保留一个**
**弹出保存文档框并提供保存的文件只能是.xlsm格式**
此时的数据格式只有一个可见
接着会在最后判断 `cache1` 是否存在,如果存在则再次复制到 `%ALLUSERSPROFILE%\synaptics\Synaptics.exe` 下
`可以查看解决办法,好像格式有点变了`
## 信息收集分析
经过上述分析后知道该样本是一个下载,此时将文件的 `hash` 信息到 `VT` 上查询,
还是被很多 `AV` 检测出来了标记为 `Downloader` ,查看分析历史,该样本在最早在 `2015-01-15` 就已经被创建了,内容是在 `2012-07-02` 的时候曾经被修改过,猜测这个样本该不会是一个钓鱼样本吧,并且首次提交 `VT` 分析的时间是笔者分析的时间,换句话说这个样本此前并未被上传分析过,如下
再结合文件的名称和内容来看就比较可疑,如下
不知道给我分析的人是不是自己的文档,希望各位不要随意点击未知邮件或者开启 `office` 的宏功能。
#解决办法 2020-11-09 更新
## 数据恢复
**在宏开启的时候,新建一个excel文档数据复制数据到新的excel文档,不要在使用这个有宏excel程序即可** 如果复制了原始宏的数据会提示如下是我测试的结果
重新保存为新表即可。
## 将宏的保护功能开启
打开注册表执行如下命令 **Win+R** 弹出如下框输入 `regedit`
找到**`****HKEY_CURRENT_USER\soft\Microsoft\Office\version\` 下的** `**excel|word**` 将security的宏警告开启,
上述的程序将此功能关闭了,修改值如下
**修改前**
选中 `VBAWarings` 右键-->修改值,将 `1-->0`
保存后如下
**修改后**
修改后保存下次运行带有宏自动运行的文档就会有提示要求开启宏。
**该样本已经将系统宏警告防护关闭,后续的带有宏的程序就能直接运行,请将此防护功能开启**
# 总结
## 建议
最近分析了好几种不同的 `office` 类型的病毒,很多宏的病毒都是诱骗用户开宏来执行,在收到未知邮件或者文档
时,不要着急开启宏功能,先确保文件的安全性在运行。
## 样本特征
**sha1: e3f7fcd1ce2e4fd02c2470e52203512cdda2d944**
**URLS**
```
URL(1) = "https://docs.google.com/uc?id=0BxsMXGfPIZfSVzUyaHFYVkQxeFk&export=download"
URL(2) = "https://www.dropbox.com/s/zhp1b06imehwylq/Synaptics.rar?dl=1"
URL(3) = "https://www.dropbox.com/s/zhp1b06imehwylq/Synaptics.rar?dl=1"
```
**RegKey**
```
"HKCU\Software\Microsoft\Office\" & Application.Version & "\Excel\Security\VBAWarnings", 1, "REG_DWORD"
"HKCU\Software\Microsoft\Office\" & Application.Version & "\Word\Security\VBAWarnings", 1, "REG_DWORD"
```
funzeroo 发表于 2020-11-15 12:17
看完帖子,总结一下,楼主看是否正确:
1、不要随意点开不知名或不了解的excel文件,点开了也不要随意开启 ...
嗯嗯,可以这么理解{:1_918:} 无量那由他劫 发表于 2020-11-9 11:22
大老厉害,求后续解决途径,又不能用VBA,也不敢在电脑继续使用,每次做完表重新打开都是空的,害,
我等会更新一下分析内容,不好意思当时没仔细分析剩下的函数功能,我等下更新一下,手动关闭一下宏功能,具体做法:
1、windows+R
2、输入 regdedit
3、将HKEY_CURRENT_USER\soft\Microsoft\Office\version\下的【Exce|word】\Security\VBAWarnigs修改为0
4、重新编辑内容就不会被删除表了,具体看我具体分析吧,这个说不完,然后你看解决方案就能处理了。
谢谢分享
大致是不是去除vba保护密码,禁用宏,看代码分析删除
感谢分享 最近就被感染了 宏病毒 所有excel 全部变成xlsm格式了 谢谢分享,又学到东西了。。 不错,支持,赞一个。 回复赚CB 感谢分享,小白一个有些看不懂,但会再加油
谢谢分享,又学到东西了。。
感谢分享