欢迎来到天天文库
浏览记录
ID:40837481
大小:54.50 KB
页数:7页
时间:2019-08-08
《彻底了解windows脚本后门》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、WMI是事件驱动的。整个事件处理机制分为四个部分: 1,事件生产者(provider):负责产生事件。WMI包含大量的事件生产者。有性能计数器之类的具体的事件生产者,也有类、实例的创建、修改、删除等通用的事件生产者。 2,事件过滤器(filter):系统每时每刻都在产生大量的事件,通过自定义过滤器,脚本可以捕获感兴趣的事件进行处理。 3,事件消费者(consumer):负责处理事件。它可以是可执行程序、动态链接库(dll,由WMI服务加载)或者脚本。 4,事件绑定(binding):通过将过滤器和消费者绑定,明确什么事件由什么消费者负责处理。 事件消费者可以分为临
2、时的和永久的两类。临时的事件消费者只在其运行期间关心特定事件并处理。永久消费者作为类的实例注册在WMI名字空间中,一直有效直到它被注销。显然,永久事件消费者更具实用性。还是来看个例子: nslink="winmgmts:\\.\root\cimv2:"'只需要本地连接,所以用这种语法,不用swbemlocator对象' setasec=getobject(nslink&"ActiveScriptEventConsumer").spawninstance_'创建“活动脚本事件消费者”' asec.name="stopped_spooler_rest
3、art_consumer"'定义消费者的名字' asec.scriptingengine="vbscript"'定义脚本语言(只能是vbscript)' asec.scripttext="getobject(""winmgmts:win32_service='spooler'"").startservice"'脚本代码' setasecpath=asec.put_'注册消费者,返回其链接' setevtflt=getobject(nslink&"__EventFilter").spawninstance_'创建事件过滤器'
4、 evtflt.name="stopped_spooler_filter"'定义过滤器的名字' qstr="select*from__instancemodificationeventwithin5"'每5秒查询一次“实例修改事件”' qstr=qstr&"wheretargetinstanceisa""win32_service""and"'目标实例的类是win32_service' qstr=qstr&"targetinstance.name=""spooler"""'实例名是spooler' qstr=qstr
5、&"andtargetinstance.state=""stopped"""'实例的state属性是stopped' evtflt.query=qstr'定义查询语句' evtflt.querylanguage="wql"'定义查询语言(只能是wql)' setfltpath=evtflt.put_'注册过滤器,返回其链接' setfcbnd=getobject(nslink&"__FilterToConsumerBinding").spawninstance_'创建过滤器和消费者的绑定' fcbnd.consumer=as
6、ecpath.path'指定消费者' fcbnd.filter=fltpath.path'指定过滤器' fcbnd.put_'执行绑定' wscript.echo"安装完成" 这个脚本的效果是:当“后台打印”服务(spooler)状态改变为停止时,消费者将进行处理——重启spooler。 先netstartspooler,然后netstopspooler。最多5秒钟,spooler又会启动。 直接运行上面的脚本会出错,因为“活动脚本事件消费者”(ActiveScriptEventConsumerASEC)默认没有被安装到root\cimv2名
7、字空间。 用记事本打开%windir%\system32\wbem\scrcons.mof,将第一行“#pragmanamespace("\\\\.\\Root\\Default")”删除,或者修改为“#pragmanamespace("\\\\.\\Root\\cimv2")”。XP/2003没有这一行,不用修改。 然后执行下面这个命令: C:\WINNT\system32\wbem>mof
此文档下载收益归作者所有