恶意代码分析之Office宏代码分析( 三 )

如果要扫描单个文件,可以使用如下命令mraptro file.doc
 
0x02 TransparentTribe的Dropper样本样本md5:bce8a8ea8d47951abffeec38fbeeeef1样本App.any.run沙箱链接:https://app.any.run/tasks/d6d22f4e-0376-49f5-8480-d07489a4e03b/

恶意代码分析之Office宏代码分析

文章插图
 
且从any的沙箱中,我们可以看到,该样本原始类型是xls 。
我们将样本下载到本地,然后添加xls后缀打开(本地测试环境为office2013) 。
恶意代码分析之Office宏代码分析

文章插图
 
该样本打开之后,没有任何的信息,office官方弹框提示用户选择启用/禁用宏 。这里如果选择禁用的话,那么后续文档将显示为空:
恶意代码分析之Office宏代码分析

文章插图
 
这是攻击者一种迷惑用户的手法,诱导用户第二次重新打开并启用宏:
恶意代码分析之Office宏代码分析

文章插图
 
翻译后内容大概如下:
恶意代码分析之Office宏代码分析

文章插图
 
翻译文档内容的意义在于,通常来说,为了隐藏攻击痕迹,攻击者都会使用一个看起来正常的文档以迷惑用户 。让用户以为打开的就是正常的文档,当用户认定这是一个正常文档,文档中的内容有”价值”时,往往就不会起疑心,木马就能够长时间的运行在用户的计算机上 。所以我们通过文档的内容,通常情况下就可以推测出受攻击的目标 。可以在攻击的背景分析中提供一些有用的信息 。
我们从该样本的文档内容中大概可以得知此次攻击的目标是国防部,文档中提到了一个jsls@ddpmod.gov.in的邮箱,我们通过对后面域名的查询,基本可以确定该文档是针对印度国防部的攻击文档:
恶意代码分析之Office宏代码分析

文章插图
 
由这个信息,我们也可以大概的对攻击者进行一个猜测 。由攻击目标为印度,根据已有的信息,我们可以找到一些针对印度的攻击组织,如Confucius 、APT36(C-Major、Transparent Tribe)、GravityRAT等 。
接下来我们看看具体的恶意宏代码 。
在打开的xls文档中,安ALT + F11,即可打开宏窗口,红框中的内容即为该文档的宏对象 。
恶意代码分析之Office宏代码分析

文章插图
 
依次展开选项卡,可以看到有两个对象有数据,一个是名为UserForm1的窗体,一个是名为Module1的模块
恶意代码分析之Office宏代码分析

文章插图
 
我们直接将鼠标光标定位到右边的Module1模块中,然后按下键盘的F8,开始调试 。在通过office调试宏代码时,调试的快捷键和od、x64dbg这种调试器有部分区别,具体如下:
恶意代码分析之Office宏代码分析

文章插图
 
这里F8类似于od中的F7,会逐语句执行代码,当遇到函数调用时,F8会跟进到函数内部 。
逐过程Shift + F8相当于od中的F8,遇到函数调用时,将会直接执行完函数而不进入函数 。
运行到光标处 Ctrl + F8 相当于od中的F4
此外,在宏调试器中,设置断点是F9,运行程序是F5 。所以我们之后在调试宏代码时,我们也可以直接在某行代码设置断点,然后F5运行到断点处 。
我们这里直接F8就是在当前的模块窗口中,开始调试宏代码,调试的方式是单步运行 。
通常来说,F8运行之后,程序就会停在该模块的入口点 。标黄显示,并且在最下面的本地窗口中会显示一些将要使用到的变量 。
恶意代码分析之Office宏代码分析

文章插图
 
有时候不小心关闭了本地窗口,我们需要在视图窗口中重新打开 。
恶意代码分析之Office宏代码分析

文章插图
 
接下来我们来看看代码,既然是调试VBA的代码,我们需要先对VBA的语法有个认识 。比如应该知道Dim用于定义变量 。在代码最开始,程序定义了多个变量
Dim path_Aldi_file As StringDim file_Aldi_nameAs StringDim zip_Aldi_fileAs VariantDim fldr_Aldi_nameAs VariantDim byt() As ByteDim ar1Aldi() As String然后通过file_Aldi_name = “rlbwrarhsa”对file_Aldi_name进行了赋值 。
通过fldr_Aldi_name = Environ$(“ALLUSERSPROFILE”) & “Tdlawis”对fldr_Aldi_name进行赋值 。其中,Environ$(“ALLUSERSPROFILE”) 表示获取%ALLUSERSPROFILE%环境变量,&符号表示拼接 。所以该语句运行完之后,fldr_Aldi_name = %ALLUSERSPROFILE%Tdlawis当然,我们也可以直接按F8单步往下走,在调试器中查看对应的值,这是最快的方法 。


推荐阅读