本文主要是介绍流氓软件的原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转贴:转自 http://bbs.yesky.com/soft/viewthread.php?tid=2708674 天极软件论坛 by 路在何方流氓软件的原理
1.“劫持”浏览器
现在一部分流氓软件是在IE中增加个工具条,然后再实现各种功能,比如雅虎助手。通常我们会把这种情况叫做“浏览器劫持”(Browser Hijack)。
◇IE主页被改,原来是主页被劫持!
“浏览器劫持”是一种不同于普通病毒木马感染途径的网络攻击手段,而是使用各种技术(如DLL插件等)插件对用户的浏览器进行篡改。安装后,它们会成为浏览器的一部分,可以直接控制浏览器进行指定的操作,根据需要,可以让你打开指定的网站,甚至是收集你系统中的各种私密信息。最可怕的是只有当浏览器已经被劫持了,你才会发现,反应过来,原来电脑已经出现了问题。比如IE主页被改,开机就会弹出广告等等。目前,浏览器劫持已经成为Internet用户最大的威胁之一。
◇原来个性化IE软件用的是BHO接口
你一定很奇怪,这些浏览器被劫持时,你的杀毒软件在干嘛?为什么不报警呢?其实“浏览器劫持”是通过BHO(Browser Helper Object,浏览器辅助对象,简称BHO)的技术手段进入你的系统的,而这种技术是合法的。
BHO是微软推出的作为浏览器对第三方程序员开放交互接口的业界标准,通过简单的代码就可以进入浏览器领域的“交互接口”(INTERACTIVED Interface)。通过这个接口,程序员可以编写代码获取浏览器的行为,比如“后退”、“前进”、“当前页面”等,利用BHO的交互特性,程序员还可以用代码控制浏览器行业,比如修改替换浏览器工具栏,添加自己的程序按钮等(见图1)。这些在系统看来都是没有问题的。BHO原来的目的是为了更好的帮助程序员打造个性化浏览器,以及为程序提供更简洁的交互功能,现在很多IE个性化工具就是利用BHO的来实现。
当然BHO同样也可以实现流氓软件所需要的一切功能,于是就有了“浏览器劫持”。
◇BHO文件在哪里?
如果你需要手动清理流氓软件,就必须要道BHO文件的保存位置,一般来说这些文件都隐藏在“C:/Windows/Downloaded Program Files/”文件夹下,也有一些是做为单独的程序保存在“C:/Program Files/”目录下。
我们是可以通过文件名,文件属性信息来确定某个文件是否为流氓软件。如果是无法删除的DLL文件,可以先用“Regsvr32.exe /U 文件名”的方法反注册DLL文件,再删除。如果还是不成,可以试着进入安全模式删除,或是前面介绍的IceSword等软件删除。
2.“耍流氓”的都改注册!
注册表是Windows的“根”,即便是前面提到的BHO技术,也能和注册表扯上些关系,可以说是流氓软件就会修改注册表。
注册表这东西,既方便我们的管理,又很容易受到攻击。于是,当我们辛辛苦苦清理了恶意劫持后,重新一启动,就发现一切又都恢复了,这就是由于流氓软件不仅仅修改了与IE有关的注册表项,同时启动项也被它们篡改了。
◇找到“流氓”的启动位置
Windows注册表中可以用于程序启动的项有很多,但主要是下面这些:
[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run]
[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce]
[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run]
[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunOnce]
[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunServices]
[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/policies/Explorer/Run]
如何清除这些启动项也是非常让人头痛的事,不过只要我们记清楚它们的位置,会对你的日常使用有非常大的帮助。
◇清除杂项
在一般情况下,一个最干净的系统,只有一个启动项。
(排表)
启动项目 命令 作用
Windows 2000 Synchronization Manager mobsync.exe /logon 系统数据管理同步
Internat Internat.exe 输入法指示器
Windows XP/2003 CTFMON CTFMON.exe 输入法指示器
不过,刚安装完系统后,为什么有那么多启动项呢?那些多出来的项目多是通过安装的驱动或应用程序添加的,可以从注册表中文件的启动目录进行判断。如果在上面这些启动项中出现了保存在系统目录下,并以系统文件来命名的启动项,很可能就是病毒,比如Svchost.exe、C:/Windows/System32/CApp.exe等等。注意,有些DLL文件是靠Rundll32.exe来进行启动的,不少的BHO就是这样实现自启动的(见图2),所以就会出现重启后流氓软件又复活的情景!
小提示
部分流氓软件会在注册表中与文件关联,更有甚者会使用病毒的一些特性,比如通过感染EXE文件保护自己等等。
3.容易被忽视的Winsock LSP
不知道你是否出现过这种情景:费尽心力,终于找到了流氓软件的所有文件,将它们彻底清除出了你的电脑,重启电脑后,系统终于正常了。正当你洋洋得意之时,突然发现无法上网了!这是怎么回事呢?
我们看到在本文介绍到安全卫士360及SSM时,都出现了Winsock LSP(即“分层服务提供商”),那么它是什么呢?流氓软件和它有什么关系呢?
◇无法上网的背后是“LSP”被破坏
LSP全称Windows Socket Layered Service Provider(分层服务提供商),简单地说,它是Windows底层网络Socket通信需要经过的大门,而流氓软件把自己加进去后,就可以截取、访问、修改网络的数据包,自然可以随意的添加广告,还能获取你的访问习惯。有这么个东西盯着你,会是什么感受呢?流氓软件使用LSP还有一个好处就是可以不分浏览器的类型进行劫持,不管你是用IE、Maxthon,还是Opera、Firefox都难逃一劫。
由于LSP工作在底层,在不知情的情况下,把LSP的DLL文件删除了,就出现了前面所提到无法上网的现象。
◇LSP也藏在注册表中
LSP服务隐藏在注册表中的[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/WinSock2/Parameters/NameSpace_Catalog5/Catalog_Entries]项下(见图3)。
默认系统已经已经有LSP,分别负责TCP/IP组件(mswsock.dll)和NTDS组件(winrnr.dll)的正常工作,它们的项分别为000000000001及000000000002,这两个项表示优先权,如果流氓软件想要劫持,那么只要将自身改为000000000001,将系统原有的LSP项往后推为000000000002等,就可以优先处理恶意LSP了。
不过有些LSP也是好的,比如江民杀毒软件会在这里添加一个kvwsp.dll,微软的Firewall Client会添加一个FwcWsp.dll,要根据实际情况进行处理。
◇手动修复受损的LSP
如果你突然发现不能上网了,找不到修复软件了,那别忘了拿出这期《电脑爱好者》杂志看看哦。
第一步:删除流氓软件的LSP组件项(记下文件保存位置,以便删除),根据[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/WinSock2/Parameters/NameSpace_Catalog5/Catalog_Entries/00000000000*]项下的“DisplayString”键,找到Tcpip、NTDS及“网络位置知晓 (NLA) 名称空间”,将它们三个的项,分别恢复为000000000001、000000000002、000000000003。
第二步:完成上面的修改后,还要定位至[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/WinSock2/Parameters/NameSpace_Catalog5],根据上面的长串数,修改Num_Catalog_Entries键,比如只有000000000001、000000000002、000000000003,那就修改为3,如果还有000000000004,那就修改为4。
第三步:重新启动计算机,删除流氓软件的LSP文件。
4.来自驱动的劫持
如果说流氓都耍到驱动级了,那可真称得上是有水平了。比如雅虎助手、划词搜索等软件都利用了这种技术。
◇没有启动项也能自启动!
当注册表被越来越多的研究透彻后,流氓软件、病毒和木马就把目标转向了如何实现无启动项运行,于是也就有了驱动级的劫持技术。我们知道系统启动时,最先启动的就是系统驱动,如果程序伪装成一般的驱动,系统可不会去管它是否有害,一律按驱动载入。
由于是驱动技术,程序可以非常轻松的隐藏自己,不管是进程信息,还是文件实体,甚至是通讯端口和流量都可以。在这样强大的隐藏技术面前,任务管理器或是一般的进程查看软件,乃至注册表工具都失去了作用,这种形式的后门被称为Rootkit。关于这种技术的详细介绍,我们会在近期介绍给大家。
◇清除驱动技术
要清除Bootkit,就要用到IceSword了。在IceSword中,我们在“查看”标签下点击“SSDT”按钮,然后在右侧标有红色的就是非系统驱动了(见图4),这里一定要注意,不一定所有红色的就是流氓软件,像Klif.sys就是杀毒软件卡巴斯基的驱动。由于是在系统底层,这些驱动是没办法删除的,更有甚者在安全模式下也无法删除。若你强行在DOS下删除,可能会引起系统故障。
所以我们要先记下文件名,然后到注册表中的[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services]项中找到该文件对应的子项,如果重启后没有再出现红色,表示流氓软件已经被清除了。
5.来自ISP的威胁
不知你有没有这种现象:刚刚拨号上了ADSL,马上就弹出了广告窗口,这就是ISP(主要就是电信和网通)干的“好事”。前一段就出现了电信强制安装互联星空事件,该软件会监听你的网络,当有TCP请求时,反馈一个广告,接着再打开正常网页。有人说可以在上网前开一些UDP类的网络程序,如QQ,防止这种情况出现。
基本上流氓软件主要的原理我们已经介绍完了,当然现在的流氓软件都是综合了数种方法同时进入你的系统,要做到彻底清除流氓软件,还是直接用软件来得更方便。
这篇关于流氓软件的原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!