0x1 摘要:
利用CHM格式文件的hhctrl控件的灵活易用性,可以成功执行任意可执行程序,而且没有UAC报警,CHM格式就变成了一个具有潜在威胁的EXE程序.因此黑客很容易利用这种帮助文档执行恶意程序,广大网民针对帮助文档文件的警惕性往往比EXE文件要低很多,使黑客更加容易入侵成功。
0x2 原理:
CHM文件格式是微软1998年推出的基于HTML文件特性的帮助文件系统,由于使用方便形式多样,常被用于制作电子书。CHM支持各种脚本语言,以及压缩的HTML文件、图像、音频、视频文件。在CHM文件中利用"shortcut"命令使其运行任意可执行程序。使用shortcut快捷键的热点可以启动其他应用程序,也可以使用快捷键来激活Windows的控制面板。使用快捷命令,可以指定要打开的程序,发送一个标准的Windows消息。
Button:指定按钮样式,可选
Command:调用命令的快捷方式
Font:指定字体属性
Item1: 指定可执行文件(.exe)的文件路径,及任何传递到该程序的参数。这些值之间用逗号分隔。HTML帮助不支持%WINDIR%或其他系统变量中的文件路径。
Item2: 指定一个标准的Windows消息,wParam参数值,和值的lParam的消息ID。这些值之间用逗号分隔。
Text:指定链接文本,如果程序无法找到可以指定跳转到一个HTML文件。
在阅读电子图书时,可以在页面中直接调用Windows的记事本或写字板,。这一应用我们可以通过在页面中插入相应的快捷方式按钮来实现。例如,启动记事本按钮的制作方法是,直接插入如下代码。
< object id="hhctrl" type="application/x-oleobject"classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
< param name="Command" value="Shortcut">
< param name="text" value="text:启动记事本">
< param name="FONT" value="宋体,9,,underline">
< param name="Item1" value=",notepad.exe"></object>
一般情况触发这个动作需要点击一个页面上的按钮来启动,而恶意的CHM一般是自动运行的,这也是一个关键。
0x3 测试PoC:
安天实验室shadowhunter团队的小伙伴从网络上获取到的测试程序,经过测试发现是自动触发运行的。
双击打开calc.chm之后我们发现成功执行了计算器程序,也没有任何的系统警告,如果把calc.exe换成恶意程序,运行后后果将不堪设想
使用hh进行反编译,
HH.EXE -decompile <输出路径> <目标chm文件>
相关的代码如下:
打开doc.htm可以看到如下代码:
它利用JavaScript脚本“x.Click()”模拟点击控件“x”,点击之后触发shortcut命令执行”cmd /c calc”
0x4 真实案例分析:
从网络上获取到一个真实的样本案例,首先我利用系统自带的hh.exe把它反编译,保存到桌面的test.html目录
反编译之后可以看到它包含如下文件
对比之前的打开calc PoC的chm文件反编译的文件可以发现,文件基本相同,可见该样本就是从这个PoC里修改得到的。doc.htm文件的大小与PoC不同,打开doc.htm我们发现它可以自动触发下载可执行文件并执行的操作。与PoC的差异在于自动点击之后触发shortcut命令执行pwoershell脚本。PowerShell是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能。这里利用System.Net.WebClient对象提供的DownloadFile方法来接收由URI标识的一个资源中的数据,接收到之后保存至%TEMP%natmasla2.exe,最后调用ShellExecute执行。
0x5 沙箱检测:
将该样本投放到安天追影高级威胁检测系统,分别测试了windows xp32和windows 7,发现都存在该安全威胁,可以监控发现电子书利用ShortCut自动创建威胁进程。
0x6 安全建议:
建议在收到电子书时候要像对待陌生EXE文件一样提高警惕,可使用虚拟机,使用杀毒软件或在线沙箱进行判断.对于广大网民最重要就是选择一个安全可信的电子书网站.
0x7 参考文献:
https://msdn.microsoft.com/zh-cn/library/ms644697