彻底了解windows脚本后门

上传人:hs****ma 文档编号:553574504 上传时间:2023-12-01 格式:DOCX 页数:7 大小:25.87KB
返回 下载 相关 举报
彻底了解windows脚本后门_第1页
第1页 / 共7页
彻底了解windows脚本后门_第2页
第2页 / 共7页
彻底了解windows脚本后门_第3页
第3页 / 共7页
彻底了解windows脚本后门_第4页
第4页 / 共7页
彻底了解windows脚本后门_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《彻底了解windows脚本后门》由会员分享,可在线阅读,更多相关《彻底了解windows脚本后门(7页珍藏版)》请在金锄头文库上搜索。

1、WMI 是事件驱动的。整个事件处理机制分为四个部分:1,事件生产者(provider):负责产生事件。WMI包含大量的事件生产者。有性能计数器 之类的具体的事件生产者,也有类、实例的创建、修改、删除等通用的事件生产者。 2, 事件过滤器(filter):系统每时每刻都在产生大量的事件,通过自定义过滤器,脚本可以捕获 感兴趣的事件进行处理。 3,事件消费者(consumer):负责处理事件。它可以是可执行程 序、动态链接库(dll,由WMI服务加载)或者脚本。4,事件绑定(binding):通过将过滤器和消费者绑定,明确什么事件由什么消费者负责处理。 事件消费者可以分为临时的和 永久的两类。临时

2、的事件消费者只在其运行期间关心特定事件并处理。永久消费者作为类的 实例注册在WMI名字空间中,一直有效直到它被注销。显然,永久事件消费者更具实用性。 还是来看个例子:nslink=winmgmts:.rootcimv2: 只需要本地连接,所以用这种语 法 , 不 用 swbemlocator 对 象 setasec=getobject(nslink&ActiveScriptEventConsumer).spawninstance_ 创建“活动脚本事件消 费者”asec.name=stopped_spooler_restart_consumer 定义消费者的名字 asec.scriptingen

3、gine=vbscript 定义脚本语言(只能是 vbscript) asec.scripttext=getobject(winmgmts:win32_service=spooler).startservice 脚本代 码set asecpath=asec.put_ 注 册 消 费 者 , 返 回 其 链 接 setevtflt=getobject(nslink&_EventFilter).spawninstance_ 创建事件过滤器evtflt.name=stopped_spooler_filter 定义过滤器的名字qstr=select * from _instancemodificati

4、onevent within 5 每 5 秒查询一次“实例修改事 件”qstr=qstr&where targetinstance isa win32_service and 目 标 实 例 的 类 是 win32_serviceqstr=qstr&targetinstance.name=spooler 实例名是 spooler qstr=qstr&and targetinstance.state=stopped 实例的 state 属性是 stopped evtflt.query=qstr 定义查询语句evtflt.querylanguage=wql 定义查询语言(只能是 wql)set f

5、ltpath=evtflt.put_ 注 册 过 滤 器 , 返 回 其 链 接 setfcbnd=getobject(nslink&_FilterToConsumerBinding).spawninstance_ 创建过滤器和消费 者的绑定fcbnd.consumer=asecpath.path 指定消费者fcbnd.filter=fltpath.path 指定过滤器fcbnd.put_ 执行绑定wscript.echo 安装完成这个脚本的效果是:当“后台打印”服务(spooler)状态改变为停止时,消费者将进行处理重启spoolero先net start spooler,然后net sto

6、p spooler。最多5秒钟,spooler又会启动。直接运行上面的脚本会出错,因为“活动脚本事件消费者(ActiveScriptEventConsumer ASEC默认没有 被安装到 rootcimv2 名字空间。用记事本打开windir%system32wbemscrcons.mof,将第一行 “#pragma namespace (.RootDefault)删除,或者修改 为“#pragma namespace (.Rootcimv2)”。 XP/2003 没有这一行,不用修改。然后执行下面这个命令:C:WINNTsystem32wbemmofcomp.exe -N:rootcimv2

7、scrcons.mofMicrosoft (R) 32-bit MOF 汇编器版本 1.50.1085.0007版权所有 (c) Microsoft Corp. 1997-1999。保留所有权利。 正在分析 MOF 文件:scrcons.mofMOF 文件分析成功将数据储存到储备库中.已完成!这样就把ASEC安装到rootcimv2 了。mofcomp.exe和scrcons.mof都是系统自带的。2000默认将ASEC安装到rootWdefault名字空间,而XP/2003默认已经安装到rootWsubscription名字空间,但由于事件过滤器不能跨名字空间捕捉事件(XP/2003可以),

8、 事件绑定也不能跨名字空间,而大部分事件都在rootcimv2产生,所以需要重新安装ASEC 到事件源所在的名字空间。 下面这个脚本自动完成 ASEC 重安装任务。 set shl=createobject(WScript.Shell)set fso=createobject(Scripting.FileSystemObject) path=shl.expandenvironmentstrings(%windir%system32wbem)set mof=fso.opentextfile(path&scrcons.mof,l,false,-l) mof都是 Unicode 格式的 mofs=m

9、of.readallmof.closemofs=replace(mofs,Default,cimv2,l,l) 替换默认的名字空间 mofp=path&asecimv2.mofset mof=fso.createtextfile(mofp,false,true) 创建临时 mof 文件mof.write mofsmof.closeshl.run path&mofcomp.exe -N:rootcimv2 &mofp,0,true 安装到 rootcimv2fso.deletefile(mofp)wscript.echo 安装完成注销永久事件: nslink=winmgmts:.rootcimv

10、2:myconsumer=stopped_spooler_restart_consumer 指定消费者的名字 myfilter=stopped_spooler_filter 指定过滤器的名字set binds=getobject(nslink&_FilterToConsumerBinding).instances_for each bind in bindsif strcomp(right(bind.consumer,len(myconsumer)+l),myconsumer&chr(34),l)=0 _and strcomp(right(bind.filter,len(myfilter)+l

11、),myfilter&chr(34),l)=0 thengetobject(winmgmts:&bind.consumer).delete_ 删除消费者 getobject(winmgmts:&bind.filter).delete_ 删除过滤器 bind.delete_ 删除绑定exit forend ifnextwscript.echo 卸载完成 除了 ASEC, WMI 还提供其他永久事件消费者,比如 SMTPEventConsumer。当系统出现异常时,可以通过它自动给管理员的信箱发信WMITools 里的 WMI Event Registration 用于创建、修改、删除指定名字空间

12、里的永久事件消费者、事 件过滤器和计时器事件源的实例,以及绑定或解除绑定它们。关于事件处理机制的各个部分,在WMI技术指南里有详细的讲述,MSDN里当然更 全面。我就点到为止了。(看累了吧,喝口水,休息一下A_A)下面开始讨论脚本后门。 WMI 提供了两个计时器:AbsoluteTimerInstruction 和_IntervalTimerInstruction, 分别在指定的时刻和时间间隔触发事件,注册一个过滤器来捕获计时器事件,再和 ASEC 绑定,我们就获得了一种少见的程序自启动的方法。而且,脚本代码完全隐藏在CIM存储 库中,不以独立的文件存在,查杀比较困难。这是脚本后门的优势,但困

13、难也不少: l,脚本运行时,由系统自带的scrcons.exe作为脚本宿主(windows的设计者还没有笨到用WMI 服务作为脚本宿主)。这就会增加一个进程,虽然是系统正常的进程,杀毒软件拿它没辙, 但还是太显眼了。所以,不能让脚本一直在后台运行,而是应该每隔一段时间启动一次,然 后尽快结束。脚本结束后, scrcons.exe 进程不会自动结束,必须让脚本借助 WMI 提供的 Win32_Process 对象主动终止宿主进程(煮豆燃豆萁?!)。 2,脚本的网络功能很差,基 本上只能依靠Microsoft.XMLHTTP之类的对象。因此,脚本后门不能监听端口并提供cmd shel 1,只能反向

14、连接到web服务器,获取控制命令。一个可行的办法是,在web服务器上放 一个命令文件,脚本后门根据域名找到服务器并下载命令文件,再根据文件内容作出响应。 所以,你需要一台web服务器,或者用netbox等工具建个临时服务器。当然,你不需要让 服务器总是在线,需要控制脚本后门时再运行就可以了。 3,由于脚本后门间歇式运行, 需要防止重复运行同一个命令。解决方法是在注册表里记录命令的长度,每次获取命令后将 长度和记录做比较,如果相同则跳过,不同则覆盖并执行命令。 4为了借助ie对象穿 透防火墙, XMLHTTP 对象必须在 ie 中被创建,这会受到 Internet 域安全级别的限制。即使 将代码保存在html文件中再用ie打开,也不过是“我的电脑”域,创建不安全的ActiveX对象 还是会弹出警告对话框。解决办法是修改注册表,临时更改安全设置。5, WScript对象由 wscript.exe 或 cscript.exe 提供,而 scrcons.exe 没有提供,所以很多常用的功能,比如 WScript.Sleep都不能用了。不能Sleep就无法异步使用XMLHTTP,而同步XMLHTTP可能 被长时间阻塞,大大不利于后门的隐蔽。调用ping命令来延时会创建新进程,用WScript.Shell 的 Popup 方法延时则有“咚”一声提示音。好在 Microsoft

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号