Sandworm Attack小结

这个漏洞网上的各种中英文分析已经很多了,因此这里我只根据自己的情况做一个小的整理和总结,并将参考的各种相关资料贴上来大家交流学习。

 

1. CVE-2014-4114

首先,CVE-2014-4114这个逻辑漏洞的核心在于当PPT调用IPersistStorage接口的Load方法来加载storage对象 (OLE复合文档)对应的OLE复合文档对象时,未对所有类型的复合文档进行MOTW(Mark On The Web)处理导致的。从而使得攻击者可以通过伪造OLE复合文档的CLSID来绕过MOTW保护。其执行过程如下图所示:

 

Sandworm Attack小结
图1 执行路径[1]

 

CVE-2014-4114攻击样本中复合文档对应的CLSID [2]如图所示:

Sandworm Attack小结
图2 CLSID

通过查询注册表,{00022602-0000-0000-C000-000000000046} 对应的是Video Clip。由图1可见,CPackage::Load调用了ReadClassStg来获取复合文档的文件类型,并根据CLSID分两类处理。

而 样本中两个文档的类型都为0x22602(对应_CLSID_AVIFile),因此CPackage::Load调用 LoadMMSStorage进一步处理。LoadMMSStorage内部根据具体类型,调用 CPackage::OLE2SoundRecReadFromStream –> CPackage::CreateTempFileName –> CopyStreamToFile最终将文件写入临时目录。

由图1可见,CopyFileW和CopyStreamToFile之后,未将读取到文件进行MOTW处理,即未调用MarkFileUnsafe。

 

Sandworm Attack小结图3 MarkFileUnsafe

 

—————————————————————————————————

MarkFileUnsafe

MarkFileUnsafe的作用是通过调用IZoneIdentifier::SetId来设置文件的Security Zone。此处设置的URLZONE值为3,即URLZONE_INTERNET类型(图4),从而标明此文件来自于其他计算机(图5)。

 Sandworm Attack小结

图4 URLZONE

Sandworm Attack小结
图5 Security Zone

 

注 意,Security Zone是通过NTFS文件系统的Alternate Data Streams (ADS)特性实现的,而不属于Windows的ACL机制。它通过给文件创建一个名为Zone.Identifier:$DATA的Alternate Streams来保存Zone信息。如图6所示。

 Sandworm Attack小结

图6 Zone.Identifier:$DATA

 

随后,当用户试图运行、安装此类文件时,Windows会检测文件的Zone信息,阻塞执行并弹出一个警告提示,提示用户将有不可信的文件执行。

 Sandworm Attack小结

图7 安全警告

 

—————————————————————————————————

最终,写入临时目录的slides.inf和slide1.gif未经MOTW处理,如图8所示。

Sandworm Attack小结
图8 样本释放的文件

 

随后,PPT通过OLE复合文档对象IOleObject接口的DoVerb方法来响应终端用户的动作。这里PPT根据幻灯片xml的定义,调用DoVerb方法(iVerb == 3)。如下图所示

 

Sandworm Attack小结

图9 slide1.xml

IOleObject::DoVerb() 内部根据iVerb的值进行不同的处理。当iVerb大于等于3时,执行流程来到图10所示的位 置。其功能与“右键单击文件,在Popup菜单中选择第2个(3-2=1)选项来运行文件”一致,而对于inf文件,其Popup菜单第二个选项刚好为 “安装”(如图11所示),因此最终通过InfDefaultInstall.exe安装了inf。

 

 Sandworm Attack小结

图10 IOleObject::DoVerb() with iVerb=3 [3]

 

Sandworm Attack小结

图11 Popup菜单

 

 

2. CVE-2014-6352

MS14-060发布3天后,就爆出补丁依旧可以被绕过,并在野外发现了相应的样本。随后微软发布了临时解决方案Fix it (Security Advisory 3010060)在MS14-064发布前缓解漏洞利用。

首先,看一下MS14-060补丁的修补方案,通过二进制对比工具可以发现MS14-060只完善了所有类型复合文档的MOTW处理,如下图所示。

Sandworm Attack小结

图12 添加MOTW保护 [1]

 

然而,本次漏洞的问题不止这一处,前面的分析已经指出攻击者可以同时通过操控“OLE复合文档的CLSID”和“xml中的OLE Verb”来改变执行流程。

但问题在于并不是所有被“MOTW保护”标记的文件在打开时都会弹出警告窗口。例如从网上下载的docx、pdf、zip等等文件,打开它们时并不会被提示安全警告(注:docx等office文件会在保护视图模式下打开)。

 

 Sandworm Attack小结Sandworm Attack小结

图13 “MOTW保护”标记的文件

 

当 安装相关的软件后,会在右键Popup菜单中注册快捷方式方便用户操作,如图14所示,当安装python后,针对*.py文件的 Popup菜单第二项便为Edit with IDLE。当攻击者操控“xml中的OLE Verb”为3来使用“edit with IDLE”编辑打开*.py时,并不会得到安全警告。Mcafee的研究人员通过这种方法实现了漏洞利用,详情请参考[4],这里不再重复。

 

 Sandworm Attack小结

图14 针对*.py文件的Popup菜单

 

另外,在野外捕获到的攻击样本中,也有攻击者直接将exe嵌入ppt,并通过操控“xml中的OLE Verb”为3来使用“管理员权限”运行exe,如图15所示。此时,若受害者使用了管理员账户登录系统或关闭了UAC,也将得不到任何安全警告。若受害 者使用标准用户账户登录系统或未关闭UAC,则将得到UAC警告对话框。

 

Sandworm Attack小结

图15 以管理员身份运行

 

3. 其他

可 以通过Jon Erickson在BlackHat 2014 Asia上的报告《Persist It Using and Abusing Microsoft’s Fix It Patches》来学习、分析微软在本次Sandworm Attack中发布的fix it。

在CVE-2014-4114曝出后不久就出现了直接嵌入文件(而非最早的UNC下载)的利用样本[5],我通过CVE-2014-4114生成器源代码修改了一份嵌入方式的生成器,但在保证复合文档类型为0x22602的情况下,inf并未按照预期安装(MS14-060补丁前),精力有限就没再去跟踪调试原因了。

                                                                                                          —— 信息系统及安全对抗实验中心    韦伟

4. 参考文献

[1] Timeline of Sandworm Attacks

http://blog.trendmicro.com/trendlabs-security-intelligence/timeline-of-sandworm-attacks/

[2] Microsoft Compound Document File Format.

http://www.openoffice.org/sc/compdocfileformat.pdf

[3] Bypassing Microsoft’s Patch for the Sandworm Zero Day: a Detailed Look at the Root Cause

http://blogs.mcafee.com/mcafee-labs/bypassing-microsofts-patch-sandworm-zero-day-root-cause

[4] Bypassing Microsoft’s Patch for the Sandworm Zero Day: Even ‘Editing’ Can Cause Harm

http://blogs.mcafee.com/mcafee-labs/bypassing-microsofts-patch-for-the-sandworm-zero-day-even-editing-can-cause-harm

[5] Xecure lab discovers new variant of CVE-2014-4114 in Taiwan APT attacks

http://blog.xecure-lab.com/2014/10/cve-2014-4114-pptx-apt-xecure-lab.html

原创文章,作者:admin,如若转载,请注明出处:https://www.isclab.org.cn/2015/01/28/sandworm-attack%e5%b0%8f%e7%bb%93-2/

(0)
adminadmin
上一篇 2015年1月18日
下一篇 2015年1月28日

相关推荐

  • 机器学习中的数据不平衡问题

          数据不平衡问题是指一个类别的数据个数远远少于另一个类别的数据个数,通常这种问题被称为“数据不平衡”问题,在这…

    2018年12月17日
    3.0K
  • 逆向分析与软件保护

    逆向思维应用在学习、工作中的方方面面,学术报告中介绍了逆向分析的概念及应用,通过微信的破解演示展示了软件逆向的过程。在最后针对软件发布后可能存在的被调试、被破解风险,介绍了几种软件…

    2020年5月5日
    4.0K
  • 弱监督技术方法

    当前监督学习技术已经取得了巨大的成功,但是值得注意的是,由于数据标注过程的成本太高,很多任务很难获得如全部真值标签这样的强监督信息。而无监督学习由于学习过程太过困难,它的发展缓慢。…

    2022年2月21日
    3.1K
  • 面向NIDS的流量对抗样本检测

    在AI攻击复杂性和密集性不断提升的大背景下,ML-NIIDS面临巨大挑战,其中流量对抗样本严重威胁其安全稳定。本次报告从NIDS的迭代发展,聚焦到对抗性安全威胁,再引出主流流量对抗…

    2023年10月23日
    3.2K
  • 人工智能模型的公平性测试

    人工智能技术发展迅速,不仅在图像领域,在决策系统等领域也发挥了重要作用。用于模型训练的数据集中含有显示或者隐式的敏感属性(如性别、种族等),模型往往会利用敏感属性的特征做出决策,这…

    2024年9月29日
    3.4K
  • 模型窃取

    机器学习,尤其是神经网络,已广泛部署在行业环境中,模型通常被部署为预测服务。但是,具有对模型的查询访问权的对手可以窃取该模型以获得与远程目标模型基本一致的替代模型,这就是模型窃取攻…

    2021年5月10日
    5.5K
  • 检索增强生成系统的知识投毒攻击

    本报告围绕RAG系统知识投毒攻击展开:PoisonedRAG首次揭示知识库投毒攻击面,提出”检索条件+生成条件”的启发式分解框架;Joint-GCG在此基础…

    2026年5月18日
    1.6K
  • 面向无人机系统的漏洞挖掘

    无人机广泛应用但传统模糊测试存在物理感知盲区且飞控输入高维,漏洞难挖掘。本报告介绍两种新方法:路径规划漏洞挖掘框架 DPFuzzer 及 PID 参数规范推断技术 RouthSea…

    2026年6月1日
    1.2K
  • DNN模型水印及其鲁棒性评估

    模型水印技术是一种利用特定信息认证保护模型知识产权的方法。本次报告分析了深度学习领域现有的模型水印嵌入方法,从性能鲁棒性和稳定鲁棒性两方面讲述模型水印鲁棒性评估方法,并以实例分析和…

    2023年11月30日
    3.2K
  • 面向深度学习软件库的API层的漏洞挖掘方法

    深度学习软件库作为构建和训练深度学习模型的基础,对深度学习软件库进行检测、挖掘软件库的代码漏洞,是保障深度学习模型的可靠性的基础之一。本次报告介绍了2种基于API层的深度学习软件库…

    2023年2月27日
    3.3K