随笔 - 22, 评论 - 123, 引用 - 0

导航

关于

本Blog站点上的任何言论仅代表个人观点,与其所在的公司,团体或者其他组织没有任何关系。本Blog站点的内容是按原样提供的,作者并不对其提供任何种类的担保。此外还否认所有暗示的保证,包括但不局限于在任何试销性或某一特定用途的适用性方面的暗示保证。由于本站内容的使用或性能表现带来的全部风险将由使用者自己承担。任何由于使用或无法使用本站内容而带来的损失(包括但不局限于商业利润、业务中断、业务信息或其他财产上的损失),即使在 本站作者曾经被提醒可能出现这些损失的情况下,本站 及其作者或涉及内容创建的任何其他人等对任何上述的损失概不负责。

标签

每月存档

最新留言

  • 回复: 搜搜地址栏的一些技术分析
    唉,象天书一样!有简单的办法没?就象用工具拆卸一样。请制造一种工具吧!SOSO简直是流氓的爷爷!谁行行好帮帮菜鸟们!!!
    by ZSD(匿名) on 2008/1/14 2:14:00
  • 回复: 搜搜地址栏的一些技术分析
    我的电脑出问题了,kernel32.dll的错误,是不是QQ引起的啊,重装了系统,还是这里的错误,晕了
    by wang(匿名) on 2007/12/18 22:40:00
  • 回复: 搜搜地址栏的一些技术分析
    太专业拉我看不懂,不过我还是卸掉拉 <br>
    by L(匿名) on 2007/12/12 22:35:00
  • 回复: 搜搜地址栏的一些技术分析
    佩服专业精神,让我学习到了很多知识和技术! <br>我遇到过你所到说的情况,不知道怎么办.现在看了你的的分析,我知道了.非常相当的谢谢! <br>
    by m9cn(匿名) on 2007/12/9 19:44:00
  • 回复: 搜搜地址栏的一些技术分析
    我看SOSO就是一个病毒
    by 我(匿名) on 2007/11/24 12:35:00
  • 回复: SoDAHK.DLL问题
    晕,这么简单的问题,居然也搞半小时!? <br>开个SRENG一看,就一清二楚了。一分钟的时间都不用,就能修复。
    by RAY(匿名) on 2007/11/13 16:53:00
  • 回复: RMS与PKI
    ding,TAIHAO LE RMS中用户的认证,最终是通过证书来进行的。在证书中对于用户的标志,是用户在AD中设置的电子邮件地址。因此,在使用RMS的时候,必须在AD中(可以通过AD用户和计算机管...
    by AA(匿名) on 2007/10/6 18:54:00
  • 回复: RMS与PKI
    ding
    by AA(匿名) on 2007/10/6 18:53:00
  • 回复: 搜搜地址栏的一些技术分析
    具体怎么删,能说的简单些吗?它弄的我c盘打不开
    by xiaoyue(匿名) on 2007/9/14 15:18:00
  • 回复: Outlook Add-In,安全带来的麻烦
    您好: <br> 我是一个VB程序员,目前有这样一个需求,写一个程序从Exchange2003收下一卦邮件,并将这卦邮件的附件更新到DB里,以前我用MAPI控件实现了,但是老是要弹...
    by 张逸(匿名) on 2007/8/7 11:37:00

广告

搜搜地址栏的一些技术分析

上篇blog中所述,由于朋友笔记本的性能问题,无意中发现QQ可能在用户的计算机上,留下了常驻内存的代码。为了验证该问题,笔者在新装的Windows XP SP2虚拟机上,进行了试验。

分析结果表明,在QQ2006 Beta3安装程序中,默认包含了搜搜地址栏。如果按照QQ安装向导的默认设置,完成安装,搜搜地址栏也会被安装到计算机上。而他们的反安装程序是独立的。因此如果用户从控制面板——添加/删除程序中仅仅卸载了QQ,搜搜地址栏会依然运行于用户的计算机上。由于该程序的存在,用户在IE地址栏中输入关键字时,将会被导向Tencent的Soso。

在添加/删除程序中,可以卸载掉搜搜地址栏。但与一般应用程序有所不同的是,搜搜地址栏具有反删除功能,如果用户没有注意到添加/删除程序中的卸载选项,而是想直接从文件系统中删掉相关程序文件的话,将会遇到很大的困难。因为即使删除了该系统的部分文件或者注册表启动选项之后,它也会自动恢复这些内容。

技术上,该系统的文件主要位于C:\Program Files\Tencent\Adplus目录下。根据测试的情况,部分文件的部分作用如下:
SSAddr.dll:以Shell Extension的形式驻留Explorer进程,作为URL Extension控制了IE地址搜索功能。
Adplus.dll:驻留Explorer以及其他用户进程。
stup.exe:进行某些初始化操作,使Adplus.dll能够驻留在各用户进程中。为了让stup在计算机启动时自动运行,在注册表HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run中,存在名为stup的启动选项,值为C:\Program Files\Tencent\Adplus\stup.exe。

系统各模块相互作用,防止被清除。根据笔者的测试,如果删除了注册表中stup启动选项,它会被自动恢复;而在连入互联网的情况下,被删除的stup.exe文件也会重新生成。

在分析过程中,还有两个令笔者不安的发现:

---通过Windows提供的Task机制,腾讯在拥有Local System权限的service进程中运行了部分代码
---该应用读取并复制了Kernel32.dll

基于个人的经验,这两者更多的被用于病毒木马等恶意软件,很难想象普通的应用程序为何需要采取上述两种行为。说搜搜是病毒木马缺乏事实,不过它的行为的确有些邪气。一个能想出的理由是,IE地址栏就那么一个,盯着它的不仅仅是腾讯一家(比如3721什么的),未免大家有磕磕碰碰的时候。设计这么复杂一个东西出来,大概是为了对决或者群殴?

从朋友计算机的遭遇和网上的一些用户反馈来看,腾讯的这个遗留系统可能会导致用户的系统性能大幅度下降。如果需要使用QQ,最好在安装向导中仅仅选择安装QQ。至少在QQ2006 Beta3中,这种情况下不会安装搜搜。如果已经安装了QQ2006,可以查看控制面板——添加/删除程序中是否有卸载搜搜地址栏的选项。

本文后面部分是一些关键的测试和分析过程,如有troubleshooting类似问题的可以参考(在测试环境中的状况与我在朋友计算机上遇到的并不完全一致,估计是由于QQ不同的版本实现该系统的方式不完全一致。但总体方法上大致相同)。

试验环境是运行于Virtual PC上的Windows XP SP2虚拟机,干净的系统,默认状况下与互联网断开连接。

www.qq.com下载新版的QQ,安装程序名称为qq2006beta3。

运行安装程序,看看许可协议:

按照安装向导的默认选项,完成安装。

运行msconfig,在注册表startup选项中,发现新增了两项与腾讯相关内容,其中之一名为stup,指向C:\Program Files\Tencent\Adplus\stup.exe。

重启计算机,从添加/删除程序中,卸载QQ(注意添加/删除程序中还有搜搜地址栏的卸载工具,如果也运行了该选项,可以将搜搜地址栏卸载,也不会出现下文的状况)。

卸载之后,运行msconfig,stup依然存在于注册表startup选项中。于是我清除掉了stup选项,以阻止它自动运行。在重启计算机后,运行msconfig,在注册表的启动选项中,又出现了新的stup!

显然是有驻留的应用程序在监控注册表中的startup选项,并且在发现stup项目被删除后,重新生成了该启动项目。我首先查看了msconfig中的“服务”标签,但是没有发现可疑的服务。

打开stup中指向的C:\Program Files\Tencent\Adplus目录,有启动选项中指定的stup.exe,以及其他几个文件,其中包括Adplus.dll、SSAddr.dll。

尝试删除Adplus目录,但系统报错,提示Adplus.dll访问被拒绝。

根据这种现象,猜测Tencent使用了Dll Injection技术,将Adplus.dll注入到其他进程中。导致系统无法删除该文件。

检查hkey_local_machine\software\microsoft\windows nt\currentversion\windows\Appinit_Dlls,没有发现相关的键值。

为了验证我的猜测,运行notepad,然后运行Process Explorer查看进程信息,有如下发现:

Adplus.dll驻留在进程notepad.exe中;Adplus.dll、SSAddr.dll驻留在进程explorer.dll中。

为了更多地了解Adplus被访问的情况,我关闭了刚刚打开的Notepad。下载并运行Filemon,监控文件系统的活动,然后运行Notepad。

从Filemon的输出显示,进程ID为872的svchost进程,也访问了Adplus.dll。从Process Explorer中,看出svchost.exe:872是host windows主要服务的进程。但是并没有Adplus.dll或者任何其他Tencent的dll驻留在该进程中。这意味着很可能svchost.exe是为了运行Adplus.dll中的代码而访问该文件。

而比较常见的在该svchost.exe环境下执行代码的方式,是通过Task Scheduler Service。为了验证我的猜测,我禁用掉了Task Scheduler Service,然后重新运行Notepad。在这种情况下,svchost.exe不再访问Adplus.dll。而一旦enable Task Scheduler,则Filemon中又显示出svchost.exe访问Adplus.dll的记录。由此推断,搜搜工具条通过Task Schedule运行了部分代码。

考虑到svchost.exe是运行在Local System帐号下,对于本地系统有相当高的特权,对于这一发现我感到不安。而在将Filemon的日志导入Excel作进一步分析的时候,我注意到了另外一个现象。Notepad进程读取并复制了kernel32.dll文件(复制文件名为s88..dll,而svchost曾经尝试访问该复制的kernel32.dll。同时,svchost还尝试访问过另外几个命名规则跟s88..dll类似的文件。

为进一步查明搜搜地址栏的启动流程,对于ADPLUS目录,我启用了NTFS文件审计,然后重启计算机,打开安全日志。重启之后Adplus下第一个被审核记录的文件,是stup.exe,由explorer.exe访问。

?

从Adplus中删除stup.exe,能够正常删除。等待三分钟,资源管理器中没有再次出现该文件,关闭计算机。几分钟之后重新开机。在Adplus目录中依然没有stup.exe(后来的测试表明,如果计算机连接到互联网上,那么stup.exe将会被重新生成)。

打开Notepad,运行Process Explorer,这次Adplus.dll没有出现在进程的dl列表中。但是,在Explorer.exe中,依然驻留着SSAddr.dll。

打开Filemon,设置Filter,使之仅仅显示包含adplus或者ssaddr的访问记录。运行Notepad,然后关闭。在Filemon的输出界面中,依然存在Adplus.dll的访问信息。

由于看到搜搜曾经复制过Kernel32.dll,我怀疑是否关键的Windows内核文件已经被更改。于是关闭QQ测试虚拟机,启动另外一台干净的XP虚拟机,将QQ测试机的硬盘挂上去。对比两台机器的Windows和Windows\System32目录下的文件,没有发现文件被篡改。

重新启动QQ测试机,下载并运行DriverView,检查内核驱动程序。发现名为nProtect的driver,位于Tencent\QQ目录下。根据网上的信息,应该是一个防止窃取键盘输入的驱动。反正QQ已经删除了,使用SRVINSTW工具将该驱动卸载。

重启计算机,运行Process Explorer,SSAddr.dll依然在Explorer进程中。猜测它可能是通过Shell Extension的方式驻留进程,下载并运行ShellExView,果然找到相关的Shell Extensions:

在ShellExView中Disable相关Shell Extensions,重启计算机。Explorer中没有SSAddr.dll驻留了。

此后顺利删除C:\Program Files\Tencent\Adplus目录下的文件和注册表中的stup启动项目。

posted on 2006-09-22 15:32:00 by johnxu  评论(43) 阅读(25962)

搜搜工具栏引发的问题——安装QQ时请小心

前两天接到朋友的电话,她的笔记本现在性能很差,打开应用程序需要很长时间,而且界面响应很慢,让我帮忙看看。

启动电脑后我按照通常的三板斧,禁掉IE的插件,运行msconfig清除所有不明启动选项,检查注册表hkey_local_machine\software\microsoft\windows nt\currentversion\windows\Appinit_Dlls下是否有Injected Dll,然后重启。


但是系统性能还是没有根本的改善,我尝试运行了几次Notepad,启动的时间都在10秒以上。重新运行msconfig,我惊奇的发现,在上一步操作中曾经清除掉的一个选项,stup(指向C:\Program Files\Tencent\Adplus\stup.exe),又被加入了启动选项。

朋友的机器上曾经安装过QQ,后来卸载掉了。查看Adplus目录,除了stup.exe外还有几个Dll。从上述迹象判断,即使在卸载之后,腾讯依然有遗留的应用代码运行,并且采取了措施防止它被删除。于是我运行Process Explorer,查看Notepad进程,发觉其中加载了一个名称为rtckr.dll,位于C:\windows\Downloaded Program Files,Company Name为Tencent的Dll。

我打开FileMon,运行Notepad然后关闭,以监控相关文件活动流程。初步分析Filemon的输出,有两个值得注意的地方:
---在C:\Windows\System32下面,有名称为thcjhy.exe的文件,访问了Adplus目录下的相关文件。Thcjhy.exe文件属性中的Company Name为Tencent。
---运行基本Windows服务的svchost进程访问了thcjhy.exe。该svchost运行在Local System帐号下,对于本地系统有相当高的特权。

在有了上述发现之后,我更加相信这并非偶然的巧合,是一个经过预先设计的系统,有意驻留在用户计算机上,用于实现某种程度的控制。由于时间的关系来不及做进一步的调查,为了快速解决问题,我设置了NTFS的权限,拒绝了Everyone对Thcjhy.exe和Adplus目录的访问。重启计算机后,性能问题得到解决。以Notepad启动为例,从原来的10多秒变为1秒。

回到家之后心存疑惑,为了验证是否QQ包含了这样一个系统,我访问www.qq.com下载了新版的QQ,在干净的Windows XP虚拟机上进行了测试和分析。测试过程的现象与朋友计算机上并不完全一致,但是综合两者(以及网上的一些相关文章)来看,在最近版的QQ安装程序中,捆绑了搜搜地址栏(默认情况下会安装,但是可以在运行安装向导时清除该选项)。如果按照QQ安装向导的默认设置完成了安装。即使在添加\删除程序中卸载了QQ(QQ2006 Beta3中搜搜地址栏在添加/删除程序中有另外的条目,可以用该条目删除搜搜地址栏),搜搜地址栏依然会运行在用户计算机上,它的特性如下:

---保护自身不被删除,或者在被删除后恢复
---用户在IE搜索栏中输入关键字时,将会被引入Tencent的Soso
---可能会导致用户的系统性能大幅度下降

不想去做反向工程,是否还有其他的功能和影响,目前不得而知。但是从技术角度,如果认为QQ是一个普通应用软件,有两个问题我觉得很奇怪:
---有什么必要不直接运行程序,而是要在拥有Local System权限的svchost环境中运行?
---读取并复制Kernel32.dll派什么作用?

尽量往比较好的方向上猜,想了想似乎悟出点什么。IE地址栏就那么一个,盯着它的不仅仅是腾讯一家,未免大家有磕磕碰碰的时候。设计这么复杂一个东西出来,大概是为了对决或者群殴?何况顺便还是可以防止直接被从用户从文件系统或者注册表中清理出局么。添加/删除程序中是提供了搜搜的卸载功能,不过从我的经验,会Delete文件的,已经算是中级用户了。能够用添加/删除程序的,那是高级用户。

基于搜搜地址栏已经提供了卸载程序,再说它是流氓软件似乎有些理不直气不壮。但是从它的行为来看,又的确流氓气。打个比方,难道电视台可以把私人武装偷偷开到用户家里,就为了防止别的台抢频道。

相关文章:搜搜地址栏的一些技术分析

posted on 2006-09-21 15:12:00 by johnxu  评论(8) 阅读(11395)

Powered by: Joycode.MVC引擎 0.5.2.0