流氓软件的原理

2024-04-08 13:32
文章标签 原理 流氓软件

本文主要是介绍流氓软件的原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转贴:转自 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,防止这种情况出现。

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

这篇关于流氓软件的原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885726

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们

Smarty模板执行原理

为了实现程序的业务逻辑和内容表现页面的分离从而提高开发速度,php 引入了模板引擎的概念,php 模板引擎里面最流行的可以说是smarty了,smarty因其功能强大而且速度快而被广大php web开发者所认可。本文将记录一下smarty模板引擎的工作执行原理,算是加深一下理解。 其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者

Restful API 原理以及实现

先说说API 再说啥是RESRFUL API之前,咱先说说啥是API吧。API大家应该都知道吧,简称接口嘛。随着现在移动互联网的火爆,手机软件,也就是APP几乎快爆棚了。几乎任何一个网站或者应用都会出一款iOS或者Android APP,相比网页版的体验,APP确实各方面性能要好很多。 那么现在问题来了。比如QQ空间网站,如果我想获取一个用户发的说说列表。 QQ空间网站里面需要这个功能。

laravel框架实现redis分布式集群原理

在app/config/database.php中配置如下: 'redis' => array('cluster' => true,'default' => array('host' => '172.21.107.247','port' => 6379,),'redis1' => array('host' => '172.21.107.248','port' => 6379,),) 其中cl