脚本附加库DynamicWrapperX利用介绍 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

脚本附加库DynamicWrapperX利用介绍

3gstudent 技术 2016-10-01 01:50:10
373681
收藏

导语:Casey Smith@subTee近日更新了新的博客,介绍了如何利用脚本附加库DynamicWrapperX实现JS/VBS对win32 API的调用,我很感兴趣,于是对其进行了学习研究。

目录:

1. 介绍如何配置使用脚本附加库DynamicWrapperX 
2. 通过JS/VBS实现对win32 API的调用
3. 如何在js脚本中加载shellcode 
4. 结合sct的攻击思路
5. 补充在64位下的使用方法
6. 对该方法的检测

00 前言

Casey Smith@subTee近日更新了新的博客,介绍了如何利用脚本附加库DynamicWrapperX实现JS/VBS对win32 API的调用,我很感兴趣,于是对其进行了学习研究。本文用来记录测试心得并补充个人理解。

01 Dynamic Wrapper X简介

1. 下载获得dynwrapx.dll

下载地址: http://www.script­coding.com/dynwrapx_eng.html

注册DynamicWrapperX:

卸载DynamicWrapperX:

注:

/i表示对当前用户操作,当前用户权限即可;如何不加/i,代表对所有用户操作,需要管理员权限

/s可去掉注册成功弹出的提示框

2. 通过JS/VBS来调用win32 API

注册组件后就可以通过JS/VBS来调用win32 API

js脚本弹框实例:

注册前,js脚本执行失败,如图

注册组件,执行

再次执行js脚本,成功弹框,如图

成功调用win32 API

dynwrapx.dll是一个32位的dll,所以在64位系统下通过regsvr32 /i dynwrapx.dll注册后,在使用js调用win32 API时注意需要选择32位的cscript.exe,代码如下:

如图,默认64位cscript.exe无法调用COM组件,换成32位,执行成功

vbs脚本弹框实例:

02 生成shellcode

使用msf:

如图

获得shellcode

03 js脚本加载shellcode

步骤:

1. 通过VirtualAlloc申请一块具有RWX权限的内存,函数返回值为内存的基地址
2. 向这段内存写入shellcode
3. 调用CreateThread加载shellcode

实例代码如下:

https://gist.github.com/subTee/ca6ab8ec75ec38c213da580cd0de30fe

代码比较简洁,在此不做详细介绍,直接替换其中的shellcode,正常执行,如图

注: VirtualAlloc第二个参数表示分配内存的大小,shellcode的长度不要超过这个数值

DynamicWrapperX 1.0提供了英文版说明,可对照语法进行二次开发,参考地址如下: http://www.script­coding.com/dynwrapx_eng.html

DynamicWrapperX2.0中默认提供英文帮助文档,语法有细微变化,需要注意

04 regsvr32利用方式

前面提到过dynwrapx.dll是一个32位的dll,注册的组件也只能供32位程序调用所以在64位系统下使用需要注意如下:

1. 只支持x86shellcode
2. 在64位系统下要使用syswow64文件夹下的32位程序

利用方式:

将js代码写到sct文件中,就可以将其放到服务器上

实现远程调用sct的实例地址

https://gist.github.com/subTee/ca6ab8ec75ec38c213da580cd0de30fe

自动化download, register dll, execute Shellcode的实例地址: 

https://gist.github.com/subTee/aa548b36b5d3c8f07e2024ab39217712

里面多了一个调用certuil.exe对文件进行base64加解密

cmd下执行如下代码实现远程调用sct:

注: 使用前需要提前安装DynamicWrapperX 

实际测试如图

05 补充

最新的DynamicWrapperX已经支持x64,版本为DynamicWrapperX 2.0 

相关地址:

http://www.minner.ru/html/Dynwrapx.html

在64位系统上面需要分别注册32位和64位的DynamicWrapperX

64位dll注册成功后,js脚本可直接运行,如图

注:使用DynamicWrapperX 2.0需要提前卸载DynamicWrapperX 1.0 否则,使用2.0需要将object改为DynamicWrapperX.2,如: newActiveXObject("DynamicWrapperX") 改为newActiveXObject("DynamicWrapperX.2")

06 防御

该方法利用的前提是注册dynwrapx.dll,所以通过查看系统已注册的com组件就能够检测该方法

推荐工具:

下载地址: 

http://www.nirsoft.net/utils/registered_dll_view.html

特点:

1. 显示所有注册DLL/OCX / exe文件列表
2. 查看注册的最近时间
3. 查看CLSID和ProgID 
4. 可以手动卸载DLL/OCX文件
5. 可以手动注册DLL/OCX文件

如图,通过查看已注册的COM控件,找到dynwrapx.dll

手动卸载组件,即可限制该方法的运用。

  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务