浏览器快捷方式被修改的元凶
最近浏览器快捷方式目标属性被修改,后面上了“hao.169x.cn”这个导航 ,每次修改后一段时间总又被修改回来。现决心找一找元凶。
经过一番搜索,发现是用小马激活的后遗症,而且用关键字“remove hao.169x.cn”搜索,发现不少歪果朋友也纷纷中招,顿时感觉脸上火辣辣的,中国特色牛皮癣啊。。。
先说解决方案:
--你若懒得折腾,直接把浏览器快捷方式改回来,设为只读。若爱折腾,请继续看。
1. 任务计划名字里含有类似oem、kms删掉(不知道怎么操作可以百度一下)。这些计划任务会在每次重启创建下面的WMI相关东西。
2. 以管理员身份运行cmd,输入powershell,然后执行以下代码就可以了。这些WMI的东西会定时改你的浏览器快捷方式。
gwmi -Namespace "root/cimv2" -Class __FilterToConsumerBinding -Filter "Filter = ""__eventfilter.name='VBScriptKids_filter'""" | Remove-WmiObject
gwmi -Namespace "root/cimv2" -Class ActiveScriptEventConsumer -Filter "Name = 'VBScriptKids_consumer'" | Remove-WmiObject
gwmi -Namespace "root/cimv2" -Class __IntervalTimerInstruction -Filter "TimerID = 'VBScriptKids_timer'" | Remove-WmiObject
gwmi -Namespace "root/cimv2" -Class __EventFilter -Filter "Name = 'VBScriptKids_filter'" | Remove-WmiObject
如果你这步不行,大概是和我遭遇的流氓软件不同,所创建的东西名字不同。你可参照这篇博文找到类似的地方手动删除。
3. 将下面这段代码xxx替换为你的用户名,另存为后缀名为vbs的文件,运行一下就把所有的改的快捷方式改回来了。
On Error Resume Next Const link = "" Const link360 = "" browsers = "114ie.exe,115chrome.exe,1616browser.exe,2345chrome.exe,2345explorer.exe,360se.exe,360chrome.exe,,avant.exe,baidubrowser.exe,chgreenbrowser.exe,chrome.exe,firefox.exe,greenbrowser.exe,iexplore.exe,juzi.exe,kbrowser.exe,launcher.exe,liebao.exe,maxthon.exe,niuniubrowser.exe,qqbrowser.exe,sogouexplorer.exe,srie.exe,tango3.exe,theworld.exe,tiantian.exe,twchrome.exe,ucbrowser.exe,webgamegt.exe,xbrowser.exe,xttbrowser.exe,yidian.exe,yyexplorer.exe" lnkpaths = "C:\Users\Public\Desktop,C:\ProgramData\Microsoft\Windows\Start Menu\Programs,C:\Users\xxx\Desktop,C:\Users\xxx\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch,C:\Users\xxx\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu,C:\Users\xxx\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar,C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" browsersArr = Split(browsers,",") Set oDic = CreateObject("scripting.dictionary") For Each browser In browsersArr oDic.Add LCase(browser), browser Next lnkpathsArr = Split(lnkpaths,",") Set oFolders = CreateObject("scripting.dictionary") For Each lnkpath In lnkpathsArr oFolders.Add lnkpath, lnkpath Next Set fso = CreateObject("Scripting.Filesystemobject") Set WshShell = CreateObject("Wscript.Shell") For Each oFolder In oFolders If fso.FolderExists(oFolder) Then For Each file In fso.GetFolder(oFolder).Files If LCase(fso.GetExtensionName(file.Path)) = "lnk" Then Set oShellLink = WshShell.CreateShortcut(file.Path) path = oShellLink.TargetPath name = fso.GetBaseName(path) & "." & fso.GetExtensionName(path) If oDic.Exists(LCase(name)) Then If LCase(name) = LCase("360se.exe") Then oShellLink.Arguments = link360 Else oShellLink.Arguments = link End If If file.Attributes And 1 Then file.Attributes = file.Attributes - 1 End If oShellLink.Save End If End If Next End If Next
下面是第二步中4条命令的分析:
这其实是WMI的event。WMI的event包含三种东西:Consumer, Filter和Timer,对应的class分别是:__EventConsumer,__EventFilter和__TimerInstruction。 第二条ActiveScriptEventConsumer是__EventConsumer的子类要执行的操作,它有个script属性,可以执行脚本,上面解决方案的第三步的代码就是从这儿改来的(以其人之道还治其人之身)。
第三条的__IntervalTimerInstruction是__TimerInstruction的子类,是一个定时器,可以指定长时间执行一次。 第四条的__EventFilter有一个Query属性,内容是
第一条的__FilterToConsumerBinding顾名思义就是Filter和Consumer的对应关系,相当于数据库中的多对多关系的中间表。在wmi tool这个工具里配置也很简单,只需在Filter列表里选中一个filter,在右侧的Consumer列表中选择对应的consumer,然后点右上角的“√”(Register)就好了。
推荐阅读:
Windows Management Instrumentation (WMI) Offense, Defense, and Forensics(PDF)
其三篇译文:
WMI 的攻击,防御与取证分析技术之防御篇
WMI 的攻击,防御与取证分析技术之取证分析篇(作者尚未完成)
以及:
Show and Remove Permanent WMI Event Registrations
WMI Attacks
--完--
原文地址 http://www.cnblogs.com/szhx/p/5296822.html
By 博客园-心亦
作者:心亦
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
|