流氓软件的原理

转贴:转自 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),所以就会出现重启后流氓软件又复活的情景!
流氓软件的原理_第1张图片
 小提示

  部分流氓软件会在注册表中与文件关联,更有甚者会使用病毒的一些特性,比如通过感染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)。
流氓软件的原理_第2张图片
默认系统已经已经有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下删除,可能会引起系统故障。

流氓软件的原理_第3张图片
 所以我们要先记下文件名,然后到注册表中的[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services]项中找到该文件对应的子项,如果重启后没有再出现红色,表示流氓软件已经被清除了。

  5.来自ISP的威胁

  不知你有没有这种现象:刚刚拨号上了ADSL,马上就弹出了广告窗口,这就是ISP(主要就是电信和网通)干的“好事”。前一段就出现了电信强制安装互联星空事件,该软件会监听你的网络,当有TCP请求时,反馈一个广告,接着再打开正常网页。有人说可以在上网前开一些UDP类的网络程序,如QQ,防止这种情况出现。

  基本上流氓软件主要的原理我们已经介绍完了,当然现在的流氓软件都是综合了数种方法同时进入你的系统,要做到彻底清除流氓软件,还是直接用软件来得更方便。
流氓软件的原理_第4张图片

你可能感兴趣的:(IE编程)