CNNIC发布了中文官方上网软件,说这只是一款浏览器辅助软件,但真的是这样吗?看完本文你就知道你所安装的这个“辅助软件”到底是个什么货色了。
先来看看它的安装和卸载吧,等会专门分析安装过程,先说一些卸载吧。卸载中文官方上网需要填一个随即生成的确认码,这是为了防止竞争同行或类似360安全助手之类的软件自动删除自己,然后执行正常的卸载程序。但是问题是卸载干净了吗?答案是没有,有一个残留的驱动程序仍然驻留在你的系统中,目的是干扰同行或类似360安全助手之类的软件正常运行,这个逻辑很简单,不用我?别的你也别想用的好。证据:主驱动程序cdnprot.sys不能删除,有些安全程序能够删除cdnprot.sys,但是CNNIC可没有那么简单,他还有一个影子驱动程序,名字是随机生成的,可能是类似sdgwuwks.sys之类的名字,这些就残留在你的系统中了,请神容易送神难。CNNIC在安装的时候会释放一个驱动程序,这是一个临时的,安装完成后就会删除,这个驱动程序的目的是检测别的软件是否有破坏自己安装的行为,保证安装程序能够正常进行,同时,安装程序还有反调试的手段,当检测到自己处于被调试的状态时就主动退出,以保护关键代码的安全,做成这样大概也是同行竞争的结果吧,只是苦了用户,你们之间互相残杀,造成用户的系统不稳定,这个责任是不是到了应该用法律手段解决的时候了?
一个浏览器辅助软件至于要用到驱动程序那一级吗?如果仅仅是作个浏览器增强功能当然用不到,但是如果做别的流氓行为就需要啦。现在看看cdnprot.sys驱动程序都干了些什么,首先它Hook了几个系统关键函数,关于这一点我要特别说明一点,很多病毒都是采用这种技术,这些被称作rootkit。它和一般的API hook不太一样,它通过修改ntoskrnl.exe的System Services Descriptor Table,直接hook ntdll.dll中的内核函数,这样相关的用户态API最终都会调到这些底层API,通过hook相关的API可以分析用户的行为,同时干扰同行软件的运行。比如本文提到的中文上网,它就hook了ZwTerminateProcess,这使的别的程序(甚至是通过windows的进程管理器)都无法删除CNNIC的 cdnup.exe进程。因为所有的中止进程都调用的是TerminateProcess API,这最终调用的是ZwTerminateProcess,CNNIC的Hooker函数判断参数,发现是中止自己的程序时就直接返回错误,这样就永远无法中止cdnup.exe。中文上网还Hook了ZwDeleteValueKey,目的是相同的,所有注册表删除操作都要经过Hooker的过滤,发现是删除自己的东西的时候就直接返回错误。使用rootkit Hooker函数对系统安全构成了威胁,不仅影响系统的稳定性,严重的还会通过Hooker收集用户的信息,造成信息安全泄漏。对CNNIC的hooker还要进一步分析才能判定它到底有什么危害,不过有一点可以证明的是,CNNIC的中文上网Hooker了ZwSetSecurityObject,并严重干扰了这个函数的正常功能,这是一个给用户帐号赋予权限的函数,CNNIC的中文上网为了防止用户使用SDTrestore工具恢复系统的SSDT(System Services Descriptor Table),所以hooker了这个函数,使得SDTrestore工具无法获得权限正常运行,但是这种行为已经影响到了依赖与这个函数的软件的运行,SDTrestore就是受害者之一。顺便说一下,cdnup.exe一开始是正常的,可以中止,而且对用户没有任何功能(只是为了检查升级,这很无聊,我需要检查升级的时候我会运行你的,用不找你这么热心一直运行吧?),只是为了监控它的驱动程序是否受到了别的软件的进攻,如果发现有别的软件“恶意”删除自己,他就会处于一种癫狂状态,此时无法中止也不能从注册表中删除相关的启动项,这就算赖上你了。
中文上网的驱动程序不是只安装一个,而是一次装三个,目的是为了互相监视,互相保护,它倒是想的周到,只是用户倒霉了,占用系统资源还不说,什么时候来个蓝屏也不知道是怎么回事。
CNNIC的中文上网还会在Winsock2的SPI接口上做手脚,先来介绍一下SPI。Winsock2提供了LSP(Layer Service Provider: 层服务提供者)接口标准SPI,允许应用软件开发商对Winsock进行扩展,对传输层的TCP/UDP等网络协议进行专门的数据流控制(如加密/解密、监控)和错误控制等。各层LSP实现不同开发商对Winsock DLL的扩展,以支持不同目的的网络数据流控制操作。而基本服务提供者实现最基本的TCP 协议堆栈的功能。明白了吧,这其实就是一个过滤器,给使用者提供了发现和使用任意数量的底层传输协议所提供的通信能力,中文上网用它来做一些URL重定向,其它还做了什么就不得而知了。很多广告弹出者就是利用了这一点,如果你上网时经常弹出一些广告窗口,又在注册表中找不到线索,那不妨研究一下你的机器上是否被装了SPI。
安装程序还会暗自生成一个BHO,这个是捆绑“销售”,不要也得要,这个BHO是随机命名的,被安置在windows目录下的\Downloaded Program Files中,这一招够歹毒,因为在资源管理器中查看这个目录下是看不到文件的,很容易被忽略,不过在dos窗口中它就原形毕露。一个浏览器助手需要被装到这个地方,足以说明这不是什么好鸟。顺便说一下,这个BHO做的也是很歹毒的,用了壳,还对内部代码加密了,每次生成这个文件的时候都会修改文件的大小,同时还修改相应的注册GUID和CLSID,这使得一些靠判断注册表中GUID和CLSID来免疫和删除插件的一些小工具变得无效。删除方式很简单,将这个目录中的dll全部删除就行了。我个人感觉这一招最令人无法接受,这种偷偷摸摸的行为应该受到鄙视。
现在你了解了中文官方上网到底是什么货色了吧,这到底是一个应用程序还是病毒?我想用流氓软件来形容它最恰当。