微软在2017年6月份的补丁中修补了一个快捷方式(CVE-2107-8464)的漏洞,公告称此漏洞被国家背景的网络攻击所使用来实施攻击,该漏洞也被称为震网三代,近日Metasploit上发布了该漏洞的PoC。[ 本文系HanSight瀚思原创稿件,如需转载请注明出处!]
微软在2017年6月份的补丁中修补了一个快捷方式(CVE-2107-8464)的漏洞,公告称此漏洞被国家背景的网络攻击所使用来实施攻击,该漏洞也被称为“震网三代”,近日Metasploit上发布了该漏洞的PoC。
该漏洞的原理同2010年美国和以色列入侵并破坏伊朗核设施的震网行动中所使用的穿透核设施隔离网络的漏洞(CVE-2010-2568)非常类似,「它可以很容易的被黑客利用来攻击基础设施、存放关键资料的核心隔离系统等」。
「当存在漏洞的电脑被插上保存有漏洞文件的U盘时,不需要额外操作,漏洞攻击程序就可以执行并完全控制用户的电脑系统」。
漏洞PoC演示:
PoC的LNK文件格式如下图:
LNK文件格式如下图
一般包含有Link文件头、LinkTargetIDList、LinkInfo、StringData和ExtraData。
PoC中涉及到的重要字段,后文会一一解释。
想要触发这个漏洞,LNK文件必须要有LinkTargetIDList和ExtraData两个Block。PoC文件格式图中第二行的数字81,代表的是LNK文件头的LinkFlags字段,81的含义是本LNK文件包含有LinkTargetIDList,并且字符串使用的是Unicode编码。在LinkTargetIDList之后紧跟着的就是ExtraData,本漏洞中使用的是SpecialFolderDataBlock。
LinkTargetIDList格式如下图
本PoC中包含有3个item,其中item 2含有触发漏洞后自动执行的恶意DLL文件路径:
PoC中IDListSize是0x8E,它有3个item,第一个item大小是0×14,第二个item大小也是0×14,第三个item大小是0×64。
LinkTargetIDList中包含的Item格式如下:
ExtraData格式如下图
本漏洞使用的是SpecialFolderDataBlock:
了解完文件格式后,漏洞原理不是很复杂:在解析完LinkTargetIDList后,会解析SpecialFolderDataBlock,解析SpecialFolderDataBlock过程中(CShellLink::_DecodeSpecialFolder)会根据其中的偏移(0×28)去找到前面的item 2,并将其中的DLLload进内存从而执行其中的DllMain。由于这个解析过程是在explorer.exe中实现的,所以对应的load进内存的恶意DLL也具有同样的高权限(一般是High)。
下图是PoC漏洞触发时的调用栈,以及漏洞执行之后会load恶意DLL进内存:
补丁对比:
微软在补丁中,通过调用_IsRegisteredCPLApplet函数对DLL路径进行校验,失败就不会再调用CPL_LoadCPLModule函数。
HanSight 解决方案
HanSight Enterprise通过主机日志关联分析,总结震网漏洞的共性,包括U盘插拔行为和主机进程行为等,可以侦测此类问题,并产生告警:
防护策略建议
1. 使用HanSight Enterprise监控主机行为,及时对警告排查处理。
2. 更新Windows操作系统补丁
https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2017-8464
参考资料
1. Metasploit
2. Shell Link (.LNK) 文件格式:
https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-SHLLINK/[MS-SHLLINK].pdf
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/54999.html