查看: 2811|回复: 10
收起左侧

[评测] 安全新技术简介(高手请飘过)

[复制链接]
evolution1240
发表于 2011-3-11 21:25:36 | 显示全部楼层 |阅读模式
启发式扫描
传统上,影音解决方案已经强烈地依赖基于签名的扫描,也称为扫描字符串为基础的技术。
基于签名的扫描文件,为在给定的(通常只有在某些地区也)搜索引擎存在某些字符串。
如果这些预定义的字符串被发现,像警报某些行动可以被触发。
现代扫描基于字符串的引擎还支持通配符在扫描字符串,如使略多态恶意代码更容易检测。
不过,基于签名的扫描仅检测已知的恶意软件,可能无法检测到对新的攻击的机制。
启发式扫描特征码扫描类似,只不过不是在寻找特定的签名,在一个不属于典型的应用程序中的启发式扫描程序发现某些指令或命令的样子。
因此,启发式引擎可以发现潜在的,如病毒,蠕虫的分配或一个木马程序复制机制的有效载荷在新的,以前未经审查,恶意功能的恶意功能。
他们通过运用其重量为基础的系统和/或规则为基础的系统(这两个会更详细地解释了本文后面)这一点。
一种启发式引擎的重量为基础的系统为基础,这是一个很旧风格的方式,利率每一个具有一定重量是根据它的危险程度可能造成检测功能。
如果这些权重的总和达到一定的门槛,也可以触发报警。
现在几乎所有使用启发式方法实施规则为基础的系统。
这意味着,该启发式引擎进行分析(分析仪)组件从文件中提取一定的规则,这规则将针对恶意代码的规则集进行比较。
如果有匹配的规则,可以触发报警。
第一启发式检测引擎是在1989年推出DOS的病毒。
但是,现在存在着几乎所有种类的病毒(即使老式的,过时的几乎一样啸风/ Paix Excel4公式病毒)的启发式引擎。
多年来,影音的发展令人印象深刻,并在运用了启发式引擎技术已经变得越来越复杂。
第一启发式引擎进行简单的字符串或模式匹配操作来检测恶意代码,并常常被称为最小化扫描字符串启发。
这方面的一个例子是在下面的代码示例从VBA5串显而易见的:
Options.VirusProtection= 0
此字符串禁用内置Word97中的宏病毒保护。
一对VBA的宏病毒的启发式引擎的很多初步遏制这条线作为扫描字符串。
针对这种扫描字符串明显的攻击是改变了“0”表示。
另一个可能的恶意串(如在宏病毒的变种夫妇像一些W97M/Coldape所示)可能是:
Options.VirusProtection= 1 AND 0
这些技术,这是由病毒程序员介绍,被称为反启发式技术。
他们强迫启发式扫描引擎,更精确的表达,并分析(在0 10的逻辑运算结果再次)。
启发式引擎和加密的病毒
从历史上看,启发式引擎只能评估他们看到了什么,这样一来,加密病毒引起他们的主要问题。
在应对这个问题,现代启发式引擎,试图找出解密循环,摧毁他们,并评估加密根据附加功能检测到的循环存在。
那么,如何将AV扫描仪识别加密循环(如除m68k汇编作为当前Palm OS平台使用)?
对有下列条件/说明可能表明存在一个加密循环组合:
·
初始化一个地址指针,一个有效的内存;
·
初始化一个计数器;
·
内存读操作取决于指针;
·
逻辑运算的结果在读记忆体;
·
存储器写操作的操作与逻辑的结果;
·
操纵柜台;以及
·
根据不同的分支柜台。
一个简单的例子,可以除m68k汇编看起来像这样(汇编指令符合上述描述的条件/指令):

利测试(件),A0Move.l10d0的。循环move.ba0的),D1eor.b0D1move.b D1的,(a0的)+ subq.l1中,D0 bne.s 。循环... 测试dc.b“加密与三次采油和重点0

当然,上面的例子是一个很平凡的加密循环,一个是很容易被检测到的启发式引擎。
然而,如何实现加密循环可以理解是实施启发式引擎,可以发现他们很能干的基础。
因此,我们看到了病毒,尝试通过插入隐藏的加密代码或使垃圾循环加密长,所以很多启发式引擎循环(更准确地说,分析组件)获取混淆。
如果我们在这些检测看,我们看到,在大多数情况下,加密循环检测是不够精确的一个确切的分类,为多种病毒可以使用相同的加密例程。
在二元viruses世界上,我们看到了加密引擎(TPE)的很多;一般而言,这些宏病毒是不符合共同的(例如,利用发动机的W97M/Pri相当频繁)多态引擎配合使用。
因此,在检测和清除的目的,发动机经常交流和/或利用仿真系统,该系统已在其他的事情,有能力打破和/或模拟加密程序。
加密后断裂(即循环结束的加密已经达到),现在的解码部分的启发式分析可以开始。
根据不同的环境中,这种仿真过程是复杂的,因此,有些平台存在没有充分模拟器。
VisualBasic的应用程序(VBA)和Visual Basic脚本(VBS的)是典型的复杂环境中的仿真器可以非常有助于打破加密,但是,一个完整的仿真是非常复杂的。
在大多数情况下(如W97M/AntiSocial家庭,它采用加密),加密指令的数量和高如宏或自动*某些文件处理程序的典型宏已经没有存在的仿真器的使用,完全足以检测这种宏病毒类。
这是显而易见的从W97M/AntiSocial.D解密引擎采取的这个例子:

1
号线中:Private Sub Document_Open():Application.EnableCancelKey =wdCancelDisabled

私人文档处理程序Document_Open()(经常不准确地称为宏)的定义是不常见的应用程序的典型,所以它应该是一个低优先级标记。
下一个操作禁用按'esc'键,并具有相同的安全作为私人文件处理程序定义的风险水平,因此,应相应标记。

线路2:。当d = 6ThisDocument.VBProject.VBComponents.Item1CodeModule.CountOfLines中:C $ =“”

此行只是初始化一个for循环,取决于行数。
这样的字符串应该标记的启发式引擎,为要求计数现有的宏代码行是可疑的。
另外一个启发式引擎应该记得其中的'd'是一个整型变量,最大值,其中对代码行数而定。

线路3:我=ThisDocument.VBProject.VBComponents.Item1CodeModule.Lines的(d1)。)

阿行代码,在柜台上的不同,将读出的宏代码。
从计数器范围选择这种方式,让每行的恶意代码可以被访问。
同样,这可以被看作是一个内存读操作如上所述,应标记。
此外,变量''应该被存储为一个字符串,其中包含行信息变量。

4
号线:女=(中(一,二,1)):对于X = 3len(一):乙$ =升序(中(一,十,1)) - f选项中:C $ = C$&染色体(乙$):下一个x:甲=加元

一组操作工作将与从上一行读的内容。
其实,对于启发,加密类型,发生在这里并不重要,这样一个例行的存在是可疑够了,应该被标记。
对于仿真问题,加密功能分析去更深。

5行:。ThisDocument.VBProject.VBComponents.Item1CodeModule.ReplaceLineD,一个:下ð:结束小组

这条线将替换现有的代码(参数'D'类定义的行号和'A'定义实际内容),是另一个关键的操作(相当于存储器写上述操作),它与一个高安全性标记风险级别。
此行还包含for循环,它是用于访问文件在一定范围内的所有行负责外端。

6行:'6 Vxo | gzkY {{sktzeIruyk ħ及瑞/ @Uvzouty4Yg | kTuxsgrVxusvzC6

这条线(以及下面的13条线路全部)包含了这种加密代码注释类。
如何启发式引擎检测到这样的评语,就是加密?
·
相当长的字符串(即,字符由超过四十),不包含空格;
·
这不是典型的启动数字注释;及,
·
该字符串包含字母数字字符混合可疑,特殊字符和普通。
即使是在这六线看,这是很明显,这种代码包含可疑行动,这是一个充分的理由启发式引擎发出警报。



evolution1240
 楼主| 发表于 2011-3-11 21:26:14 | 显示全部楼层
如今,我们也看到发动机与常规检测方法的混合启发式检测能力。 这意味着引擎试图找出一个特定的功能集内找到一个文件属于一种特殊的类/恶意代码的家庭。 去除能力是最经常使用的这种由“类/家庭”检测检测文件的类型。

启发式引擎的组件

根据不同的环境和技术水平,下面的组件可以发现在启发式引擎:

·                 变量/内存仿真器;

·                 解析器;

·                 流量分析仪;

·                 分析仪;

·                 反汇编器/仿真器,以及,

·                 重量为基础的系统和/或规则为基础的系统。

当在基于脚本的恶意代码看,一个检测引擎的第一步,这并不一定要作为一个启发式引擎的一部分实现,可能是给定的输入文件正常化,消除坏的格式,缩短刺激性的变量名并有选择记号化给定的脚本。 传统宏病毒时,也有工作的AV引擎,直接与PCode(一元代码)在OLE文件结构中。

一旦文件类型确定后,启发式引擎将检查给定文件的入口点。 在二进制文件的情况下,这是相当简单,因为这种类型的大多数文件都有一个清晰可辨的起始点(例如Win32的体育入口点)。 基于脚本的恶意代码,它可能有一个入口几个百分点(如汽车*宏和文件处理程序在MS Word文档的情侣)。 最简单的方法显然是要扫描完整的程序忽略程序流。 显然,这种做法将错过如那些之间使用宏/函数棘手的参数分析样品,很多;因此,它通常有一个返回结果不足的高风险。

每个循环的启发式引擎主要选择/提取信息(通常为下一个指令的操作码,或者在脚本的恶意软件的情况下一行),并通过指令的核心元素分析仪。 该分析仪元素,以确定操作和设置标志根据这个鉴定。 此外,该模拟器与可能的变数或记忆模拟器通信通常处理分析仪的一部分。 回顾W97M/AntiSocial.D例如背部,它为分析重要的是知道该变量'D'类,如3号线和5中使用,其实不是静态的或在代码行数而定。 该评级是明显较高,当变量d为不是一成不变的。

评级的发现功能

完整的程序后,进行了分析,找到的功能可以评分。 完成这个任务通常是按重量计算为基础的系统或以规则为基础的系统。 前者系统为每发现一个特殊的功能,只是增加了重量找到的功能权重。 这种技术是在不经常使用的基本形式了,因为它会造成大量的误报。 对于宏病毒,传统的重量为基础的系统能够产生非常高的评价,如果一个副本操作从当前文档到全球大量文档模板(“的Normal.dot”)被发现。 这个等级可能会导致一个警告,即使没有其他恶意操作被发现。 因此,程序员必须实现的AV系统,只要产生了特殊的条件得到满足,因此利用启发式影音解决方案,在以规则为基础的系统的想法诞生了警钟。

显然,更好的结果可以达到当使用规则为基础的系统。 以规则为基础的系统只是相比之下,一套规则发现功能。如果一个预定义的规则是在代码中发现,与一个积极的结果以规则为基础的系统回报。 根据整个系统的精确的结果,如“一般病毒”,如“VBS的/ Loveletter变种”或者是可以实现的。 不过,应该不会忘记,启发式引擎可以造成假阳性,例如,如果体重为基础的系统进行训练或有错误在规则为基础的系统部署坏的规则。

主动防御

所谓基于特征码的精确检测,就是指将计算机上的对象与已知病毒的模版(比如特征码)进行对比。这项技术要求反病毒厂商不断地发现、收集并分析新的威胁,并且制作出关于这些新威胁的描述及相应的处理方法,将它们放入特征数据库。对该方法进行评测的最主要标准就是:对新威胁的反应速度、反病毒数据库的更新频率和对恶意代码的检测率。这种检测方法的优点是能够准确地确定恶意代码并对其进行清除。但是,它的缺点也是显而易见的,那就是滞后性-总是在新的威胁产生后,才能对其进行分析并生成对应的特征码和处理方法。但是,随着新威胁产生速度的越来越快,它们能够在很短的时间内感染数以百万计的计算机。因此,越来越多的反病毒厂商开始在他们的产品中加入主动防御技术。

  主动防御技术首先会构造一个框架(类似于一个筛子的外框),并在其内填入一组预先定义好的规则(类似于筛眼),这些规则是根据反病毒工程师在分析了超过几十万的大量病毒(或者说恶意程序)的代码特征和行为特征后提炼总结出来的,因此具有很大的代表性和前瞻性。主动防御会使用这组规则对被扫描对象内的代码和运行的行为进行分析,以确定其是否含有恶意代码和具有恶意行为。

 从理论上来看,主动防御技术能够检测所有已知和未知恶意程序。但实际上,这是不现实的。我们要判断一个主动防御技术的有效性以及它能否脱离基于特征码的扫描技术而独立承担反病毒任务,就需要理解主动防御技术所基于的理论。目前来看,各反病毒厂商采用的主动防御技术主要有:启发式分析技术、入侵防御系统技术、缓冲区溢出检测技术、基于策略的检测技术、警告系统和行为阻止技术。卡巴斯基使用的技术主要有启发式分析技术、入侵防御系统技术、警告系统和行为阻止技术。而总的来说,反病毒厂商使用最多的是启发式分析和行为阻止这两项技术。

  我们首先来看一下启发式分析技术。启发式分析技术又分为静态分析和动态分析两种。“静态分析”就是指使用启发式分析器分析被扫描对象中的代码(指令),判断其中是否包含某些恶意的指令(反病毒程序中会定义一组预先收集到的恶意指令特征)。比如说,很多病毒会搜索可执行文件,创建注册表键值等行为。“静态”启发式分析器就会对被扫描对象中的代码进行解释,检查是否包含执行这些行为的指令,一旦找到这样的指令,就调高“可疑分数”。当可疑分数高达一定值,就会将被扫描对象判断为可疑的恶意程序。这种分析技术的优点在于,对系统资源使用较少,但是坏处就在于误报率太高。而“动态分析”是指由反病毒程序在计算机内存中专门开辟一个受严格保护的空间(由“虚拟机”技术来实现),并将被检测对象的部分代码拷贝进这个空间,使用一定的技术手段来诱使这段代码执行,同时判断其是否执行了某些恶意行为(反病毒程序中会定义一组预先收集的恶意行为特征)。一旦发现有匹配的恶意行为,就会报告其为对应的恶意程序。这种技术的优点在于准确度很高。目前卡巴斯基7.0单机版中使用的启发式扫描技术就是基于卡巴斯基实验室于1992年就创造出来并经过多年不断改进的虚拟机技术。

  接下来,我们再来看行为阻止技术。行为阻止技术是对程序的运行行为进行监控,并对任何的危险行为进行阻止的技术。该技术与使用虚拟机技术的启发式扫描不同,启发式扫描是在受保护的内存空间虚拟地运行代码,而行为阻止技术工作在实际的计算机环境中。它会检查包括修改(添加/删除/编辑)系统注册表、注入系统进程、记录键盘输入、试图隐藏程序等在内的大量潜在恶意行为。第一代的行为阻止技术,适用性并不是很强。当它检测到一个潜在的恶意行为时,就会弹出提示窗口,提示用户是否允许/阻止该行为。在某些时候,某些合法程序的行为也会被提示为恶意行为,这会给很多不理解这些进程及其行为的用户带来困扰。第二代,也是新一代的行为阻止技术在第一代技术的基础上,做了很大的改进。它不会仅仅根据某个独立的潜在恶意行为就提示风险,而是对程序行为执行的先后顺序进行分析,从而以更加智能和成熟的方式来判断程序的行为是否有恶意。该技术大大提高了对恶意行为判断的准确率。目前,卡巴斯基所有的产品中使用的就是新一代的行为阻止技术。在我们的技术中,不仅会分析/阻止恶意的行为,还能够修复恶意行为对系统造成的修改和破坏。

  从以上着重描述介绍的主动防御技术(启发式分析技术和行为阻止技术)来看,主动防御技术也需要基于一个“知识库”进行工作。这个“知识库”中包含了大量恶意程序的潜在恶意行为/指令特征。主动防御技术分析/监控系统内进程或程序的行为和指令,并将它们与“知识库”中的特征进行比对,判断是否符合。而这个“知识库”需要反病毒专家对大量已知病毒进行分析,并且对它们的常见行为和指令进行归纳总结,并将提炼出来的特征值添加入“知识库”。说到这里,我们应该可以想到,主动防御技术能够防御大量使用已有恶意行为的新恶意程序。但是,如果某些新的恶意程序采用了全新的方法(不在“知识库”中的方法)来入侵、感染计算机,并盗取私密数据的话,主动防御技术仍然是无法对其进行有效防御的。因此,主动防御技术也需要不断地更新其“知识库”和其采用的判断逻辑,否则可能还是会被新的威胁钻了空子。

Rookit

在网络安全中经常会遇到rootkit,NSA安全和入侵检测术语字典( NSA Glossary of Terms Used in Security and Intrusion Detection)对rootkit的定义如下:A hacker security tool that captures passwords and message traffic to and from a computer. A collection of tools that allows a hacker to provide a backdoor into a system, collect information on other systems on the network,mask the fact that the system is compromised, and much more. Rootkit is a classic example of Trojan Horse software. Rootkit is available for a wide range of operating systems.
  好多人有一个误解,他们认为rootkit是用作获得系统root访问权限的工具。实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。通过 rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统。
  什么是rootkit
  Rootkit出现于二十世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了 rootkit这个名词。这篇安全咨询就是CERT-CC的CA-1994-01,题目是Ongoing Network Monitoring Attacks,最新的修订时间是1997年9月19日。从出现至今,rootkit的技术发展非常迅速,应用越来越广泛,检测难度也越来越大。
  rootkit介绍Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。换句话说,这种程序可能一直存在于我们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的 ——不论是计算机黑客,还是计算机取证人员。黑客可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用 Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。!
  一、背景知识
  我们通常所说的智能机器,大至超级计算机,中到个人PC,小至智能手机,通常都有两部分组成:硬件和软件。并且,设备的智能是通过软件来实现的。所有软件中,有一种是必不可少的,那就是操作系统。操作系统可以简单理解为一组高度复用的核心程序,一方面,它要管理低层的硬件设备,另一方面,为上层其它程序提供一个良好的运行环境。真是同人不同命,同为软件,操作系统却享有至高无上的特权:它不仅管理硬件,而且其他所有软件也都受制于它。
  因为在应用程序和硬件之间隔着操作系统,所以应用程序不能直接访问硬件,而是通过调用操作系统提供的接口来使用硬件。也就是说,对应用程序而言,硬件是不可见的。当然,凡事是没有绝对的,应用程序绕过操作系统来直接访问硬件也不是不可能的,但这样做会付出高昂的代价。设想一个软件开发商在开发一款功能丰富的软件,功能本身就够他头痛得了,现在他还得操心某个数据在某个磁道的某个簇上,某个字符在某品牌显示器上的颜色的二进制代码等等繁琐的事情,不用说财力和物力,单说开发周期就是无法容忍的。所以,现在的应用程序都是使用操作系统提供的简单明了的服务来访问系统的,因为毕竟没有谁愿意自讨苦吃。
  二、内核的主要功能
  从上文中我们已经了解,内核在系统中处于核心枢纽的地位,下面我们具体介绍内核中与Rootkit紧密相关的几个主要功能,更重要的是这些功能对Rootkit的意义所在:
  进程管理。进程可以简单理解为运行中的程序,它需要占用内存、CPU时间等系统资源。现在的操作系统大多支持多用户多任务,也就是说系统要并行运行多个程序。为此,内核不仅要有专门代码来负责为进程或线程分配CPU时间,另一方面还要开辟一段内存区域存放用来记录这些进程详细情况的数据结构。内核是怎么知道系统中有多少进程、各进程的状态等信息的?就是通过这些数据结构,换句话说它们就是内核感知进程存在的依据。因此,只要修改这些数据结构,就能达到隐藏进程的目的。
  文件访问。文件系统是操作系统提供的最为重要的功能之一。内核中的驱动程序把设备的柱面、扇区等原始结构抽象成为更加易用的文件系统,并提供一个一致的接口供上层程序调用。也就是说,这部分代码完全控制着对硬盘的访问,通过修改内核的这部分代码,攻击者能够隐藏文件和目录。
  安全控制。对大部分操作系统来说,因为系统中同时存在多个进程,为了避免各进程之间发生冲突,内核必须对各进程实施有效的隔离措施。比如,在MS-Windows系统中,每个进程都被强制规定了具体的权限和单独的内存范围。因此,对攻击者而言,只要对内核中负责安全事务的代码稍事修改,整个安全机制就会全线崩溃。
  内存管理。现在的硬件平台(比如英特尔的奔腾系列处理器)的内存管理机制已经复杂到可以将一个内存地址转换成多个物理地址的地步。举例来说,进程A按照地址 0x0030030读取内存,它得到值的是“飞机”;然而,进程B也是按照同样的地址0x0030030来读取内存,但它取得的值却是“大炮”。像上面这样,同一个地址指向截然不同的两个物理内存位置,并且每个位置存放不同的数据这种现象并不足以为怪——只不过是两个进程对虚拟地址到物理地址进行了不同的映射而已。如果这一点利用好了,我们可以让Rootkit躲避调试程序和取证软件的追踪。
  上面介绍了内核的主要功能,以及它们对 Rootkit的重大意义。说到这里,我们就要切入正题了,即:只要我们颠覆(即修改)了操作系统的核心服务(即内核),那么整个系统包括各种应用就完全处于我们的掌控之下了。要想颠覆内核,前提条件是能把我们的代码导入内核。
  其中针对SunOS和Linux两种操作系统的rootkit最多(树大招风:P)。所有的rootkit基本上都是由几个独立的程序组成的,一个典型rootkit包括:
  1 以太网嗅探器程程序,用于获得网络上传输的用户名和密码等信息。
  2 特洛伊木马程序,例如:inetd或者login,为攻击者提供后门。
  3 隐藏攻击者的目录和进程的程序,例如:ps、netstat、rshd和ls等。
  4 可能还包括一些日志清理工具,例如:zap、zap2或者z2,攻击者使用这些清理工具删除wtmp、utmp和lastlog等日志文件中有关自己行踪的条目。
  一些复杂的rootkit还可以向攻击者提供telnet、shell和finger等服务。
  还包括一些用来清理/var/log和/var/adm目录中其它文件的一些脚本。
  攻击者使用rootkit中的相关程序替代系统原来的ps、ls、netstat和df等程序,使系统管理员无法通过这些工具发现自己的踪迹。接着使用日志清理工具清理系统日志,消除自己的踪迹。然后,攻击者会经常地通过安装的后门进入系统查看嗅探器的日志,以发起其它的攻击。如果攻击者能够正确地安装rootkit并合理地清理了日志文件,系统管理员就会很难察觉系统已经被侵入,直到某一天其它系统的管理员和他联系或者嗅探器的日志把磁盘全部填满,他才会察觉已经大祸临头了。但是,大多数攻击者在清理系统日志时不是非常小心或者干脆把系统日志全部删除了事,警觉的系统管理员可以根据这些异常情况判断出系统被侵入。不过,在系统恢复和清理过程中,大多数常用的命令例如ps、df和ls已经不可信了。许多rootkit中有一个叫做FIX的程序,在安装rootkit之前,攻击者可以首先使用这个程序做一个系统二进制代码的快照,然后再安装替代程序。FIX能够根据原来的程序伪造替代程序的三个时间戳(atime、ctime、mtime)、date、permission、所属用户和所属用户组。如果攻击者能够准确地使用这些优秀的应用程序,并且在安装rootkit时行为谨慎,就会让系统管理员很难发现。
  LINUX ROOTKIT IV
  前面说过,大部分rootkit是针对Linux和SunOS的,下面我们介绍一个非常典型的针对Linux系统的rootkit--Linux Rootkit IV。Linux Rootkit IV是一个开放源码的rootkit,是Lord Somer编写的,于1998年11月发布。不过,它不是第一个Linux Rootkit,在它之前有lrk、lnrk、lrk2和lrk3等Linux Rootkit。这些rootkit包括常用的rootkit组件,例如嗅探器、日志编辑/删除工具、和后门程序的。
  经过这么多年的发展,Linux Rootkit IV功能变的越来越完善,具有的特征也越来越多。不过,虽然它的代码非常庞大,却非常易于安装和使用,只要执行make install就可以成功安装。如果你还要安装一个shadow工具,只要执行make shadow install就可以了。注意:Linux Rootkit IV只能用于Linux 2.x的内核。下面我们简单地介绍一下Linux Rootkit IV包含的各种工具,详细的介绍请参考其发布包的README文件。
  隐藏入侵者行踪的程序
  为了隐藏入侵者的行踪,Linux Rootkit IV的作者可谓煞费心机,编写了许多系统命令的替代程序,使用这些程序代替原由的系统命令,来隐藏入侵者的行踪。这些程序包括:
  ls、find、du
  这些程序会阻止显示入侵者的文件以及计算入侵者文件占用的空间。在编译之前,入侵者可以通过 ROOTKIT_FILES_FILE设置自己的文件所处的位置,默认是/dev/ptyr。注意如果在编译时使用了SHOWFLAG选项,就可以使用 ls -/命令列出所有的文件。这几个程序还能够自动隐藏所有名字为:ptyr、hack.dir和W4r3z的文件。
  ps、top、pidof
  这几个程序用来隐藏所有和入侵者相关的进程。
  netstat
  隐藏出/入指定IP地址或者端口的网络数据流量。
  killall
  不会杀死被入侵者隐藏的进程。
  ifconfig
  如果入侵者启动了嗅探器,这个程序就阻止PROMISC标记的显示,使系统管理员难以发现网络接口已经处于混杂模式下。
  crontab
  隐藏有关攻击者的crontab条目。
  tcpd
  阻止向日志中记录某些连接
  syslogd
  过滤掉日志中的某些连接信息
  木马程序
  为本地用户提供后门,包括:
  chfn
  提升本地普通用户权限的程序。运行chfn,在它提示输入新的用户名时,如果用户输入rookit密码,他的权限就被提升为root。默认的rootkit密码是satori。
  chsh
  也是一个提升本地用户权限的程序。运行chsh,在它提示输入新的shell时,如果用户输入rootkit密码,他的权限就被提升为root。
  passwd
  和上面两个程序的作用相同。在提示你输入新密码时,如果输入rookit密码,权限就可以变成root。
  login
  允许使用任何帐户通过rootkit密码登录。如果使用root帐户登录被拒绝,可以尝试一下rewt。当使用后门时,这个程序还能够禁止记录命令的历史记录。
  木马网络监控程序
  这些程序为远程用户提供后门,可以向远程用户提供inetd、rsh、ssh等服务,具体因版本而异。随着版本的升级,Linux Rootkit IV的功能也越来越强大,特征也越来越丰富。一般包括如下网络服务程序:
  inetd
  特洛伊inetd程序,为攻击者提供远程访问服务。
  rshd
  为攻击者提供远程shell服务。攻击者使用rsh -l rootkitpassword host command命令就可以启动一个远程root shell。
  sshd
  为攻击者提供ssh服务的后门程序。
  工具程序
  所有不属于以上类型的程序都可以归如这个类型,它们实现一些诸如:日志清理、报文嗅探以及远程shell的端口绑定等功能,包括:
  fix
  文件属性伪造程序
  linsniffer
  报文嗅探器程序。
  sniffchk
  一个简单的bash shell脚本,检查系统中是否正有一个嗅探器在运行。
  wted
  wtmp/utmp日志编辑程序。你可以使用这个工具编辑所有wtmp或者utmp类型的文件。
  z2
  utmp/wtmp/lastlog日志清理工具。可以删除utmp/wtmp/lastlog日志文件中有关某个用户名的所有条目。不过,如果用于Linux系统需要手工修改其源代码,设置日志文件的位置。
  bindshell rootkit
  在某个端口上绑定shell服务,默认端口是12497。为远程攻击者提供shell服务。
  如何发现rootkit
  很显然,只有使你的网络非常安全让攻击者无隙可乘,才能是自己的网络免受rootkit的影响。不过,恐怕没有人能够提供这个保证,但是在日常的网络管理维护中保持一些良好的习惯,能够在一定程度上减小由rootkit造成的损失,并及时发现rootkit的存在。
  首先,不要在网络上使用明文传输密码,或者使用一次性密码。这样,即使你的系统已经被安装了rootkit,攻击者也无法通过网络监听,获得更多用户名和密码,从而避免入侵的蔓延。
  使用Tripwire和aide等检测工具能够及时地帮助你发现攻击者的入侵,它们能够很好地提供系统完整性的检查。这类工具不同于其它的入侵检测工具,它们不是通过所谓的攻击特征码来检测入侵行为,而是监视和检查系统发生的变化。 Tripwire首先使用特定的特征码函数为需要监视的系统文件和目录建立一个特征数据库,所谓特征码函数就是使用任意的文件作为输入,产生一个固定大小的数据(特征码)的函数。入侵者如果对文件进行了修改,即使文件大小不变,也会破坏文件的特征码。利用这个数据库,Tripwire可以很容易地发现系统的变化。而且文件的特征码几乎是不可能伪造的,系统的任何变化都逃不过Tripwire的监视(当然,前提是你已经针对自己的系统做了准确的配置:P,关于Tripwire和aide的使用请参考本站的相关文章)。最后,需要能够把这个特征码数据库放到安全的地方。
  Rootkit 是一种特殊类型的 malware(恶意软件)。Rootkit 之所以特殊是因为您不知道它们在做什么事情。Rootkit 基本上是无法检测到的,而且几乎不可能删除它们。虽然检测工具在不断增多,但是恶意软件的开发者也在不断寻找新的途径来掩盖他们的踪迹。
  Rootkit 的目的在于隐藏自己以及其他软件不被发现。它可以通过阻止用户识别和删除攻击者的软件来达到这个目的。Rootkit 几乎可以隐藏任何软件,包括文件服务器、键盘记录器、Botnet 和 Remailer。许多 Rootkit 甚至可以隐藏大型的文件集合并允许攻击者在您的计算机上保存许多文件,而您无法看到这些文件。
  Rootkit 本身不会像病毒或蠕虫那样影响计算机的运行。攻击者可以找出目标系统上的现有漏洞。漏洞可能包括:开放的网络端口、未打补丁的系统或者具有脆弱的管理员密码的系统。在获得存在漏洞的系统的访问权限之后,攻击者便可手动安装一个 Rootkit。这种类型的偷偷摸摸的攻击通常不会触发自动执行的网络安全控制功能,例如入侵检测系统。
  找出 Rootkit 十分困难。有一些软件包可以检测 Rootkit。这些软件包可划分为以下两类:基于签名的检查程序和基于行为的检查程序。基于签名(特征码)的检查程序,例如大多数病毒扫描程序,会检查二进制文件是否为已知的 Rootkit。基于行为的检查程序试图通过查找一些代表 Rootkit 主要行为的隐藏元素来找出 Rootkit。一个流行的基于行为的 Rootkit 检查程序是 Rootkit Revealer.
  在发现系统中存在 Rootkit 之后,能够采取的补救措施也较为有限。由于 Rootkit 可以将自身隐藏起来,所以您可能无法知道它们已经在系统中存在了多长的时间。而且您也不知道 Rootkit 已经对哪些信息造成了损害。对于找出的 Rootkit,最好的应对方法便是擦除并重新安装系统。虽然这种手段很严厉,但是这是得到证明的唯一可以彻底删除 Rootkit 的方法。
  防止 Rootkit 进入您的系统是能够使用的最佳办法。为了实现这个目的,可以使用与防范所有攻击计算机的恶意软件一样的深入防卫策略。深度防卫的要素包括:病毒扫描程序、定期更新软件、在主机和网络上安装防火墙,以及强密码策略等。

PS rookit部分来自安全运维网
BEYONDLOVE
发表于 2011-3-11 22:39:08 | 显示全部楼层
消灭零回复!!
1e3e
头像被屏蔽
发表于 2011-3-12 12:17:55 | 显示全部楼层
太复杂,不太懂
yu1nizai
发表于 2011-3-12 13:20:14 | 显示全部楼层
  菜鸟 来 学习来了。。。
wuxuelin123
发表于 2011-3-12 19:33:22 | 显示全部楼层
学习了,感谢楼主分享
evolution1240
 楼主| 发表于 2011-3-12 20:23:34 | 显示全部楼层
病毒和正常程序的区别可以体现在许多方面,比较常见的如通常一个速应用程序在最初的指令是检查命令行输入有无参数项,清屏和保存原来屏幕显示等,而病毒程序则从来有会这样做,它通常最初的指令是直接写盘操作、解码指令,或搜索某路径下的可执行程序等相关操作指令序列。这些显著的不同之处,一个熟练的程序员在调试状态下只需一瞥便可一目了然。启发式扫描技术实际上就是把这种经验和知识移植到一个查病毒软件中的具体程序体现

基因查杀技术的原理是通过分析大量病毒样本提取一类病毒的共同代码来防杀这类病毒,通常是提取关键代码。优点:提升侦测率,降低病毒分析师的压力。缺点:有误报的可能性。难点:必须不断更新基因代码,否则会使效果大打折扣。

来自百度
evolution1240
 楼主| 发表于 2011-3-12 20:24:51 | 显示全部楼层
一般意义上的“主动防御”,就是全程监视进程的行为,一但发现“违规”行为,就通知用户,或者直接终止进程。它类似于警察判断潜在罪犯的技术,在成为一个罪犯之前,大多数的人都有一些异常行为,比如“性格孤僻,有暴力倾向,自私自利,对现实不满”等先兆,但是并不是说有这些先兆的人就都会发展为罪犯,或者罪犯都有这些先兆。


因此“主动防御”并不能100%发现病毒或者攻击,它的成功率大概在60%--80%之间。如果再加上传统的“特征码技术”,则有可能发现100%的恶意程序与攻击行为了。从国外的情况看,诺顿、Kaspersky、McAfee等主流安全厂商,都已经向“主动防御”+“特征码技术”过渡了,可以说这是安全系统的必然发展趋势。


此外,防火墙也是一个运用“主动防御”技术的典型例子。目前的企业都在使用防火墙,很多用户对于防火墙经常询问是否放行一个进程访问网络,或者有不明连接进入本机而发出警告印象深刻。


其实防火墙就是在全程监视进程的网络行为,一但发现违反规则的行为就发出警告,或者直接根据用户设定拒绝进程访问网络。当然,现在的防火墙一般都把系统网络进程,如Services.exe、Svchost.exe、Lsass.exe记在“受信名单”里,这些进程是默认允许访问网络的,如果禁止的话,操作系统就不正常了,这也是现在很多病毒和木马都喜欢远程注入这些系统进程,以求突破防火墙而访问网络的原因。


“主动防御”的技术实现


在“主动防御”技术的的实现上,主要是通过函数来进行控制。因为一个程序如果要实现自己的功能,就必须要通过接口调用操作系统提供的功能函数。以前在DOS里几乎所有的系统功能或第三方插件都是通过中断提供的,在Windows里一般是通过DLL里的API提供,也有少数通过INT 2E或SYSENTER提供。一个进程有怎么样的行为,通过看它调用了什么样的API就大概清楚了,比如它要读写文件就必然要调用CreateFile(),OpenFile(),NtOpenFile(),ZwOpenFile()等函数,要访问网络就必然要使用Socket函数。因此只要挂接系统API(尽量挂接RING0层的API,如果挂接RING3层的API将有可能被绕过),就可以知道一个进程将有什么动作,如果有危害系统的动作该怎么样处理等等。例如瑞星反病毒系统,用户可以在它的安装目录里找到几个驱动文件,其实这些驱动就是挂接了ntoskrnl.exe,ndis.sys等系统关键模块里的API,从而对进程的普通行为,网络行为,注册表行为进行监视的。


在此基础上,用户可以自己设想一下一个“主动防御”型安全系统的一般操作流程:通过挂接系统建立进程的API,系统就在一个进程建立前对进程的代码进行扫描,如果发现SGDT,SIDT,自定位指令(一般正常软件不会有这些指令),就进行提示,如果用户放行,就让进程继续运行;接下来监视进程调用API的情况,如果发现以读写方式打开一个EXE文件,可能进程的线程想感染PE文件,就发出警告;如果收发数据违反了规则,发出提示;如果进程调用了CreateRemoteThread(),则发出警告(因为CreateRemoteThread()是一个非常危险的API,正常进程很少用到,倒是被病毒、木马用得最多)。


可以想象,未来企业用户在运行程序时可能会被提示多次,访问网络也可能被提示多次,各种各样的提示有可能将大多数人搞的昏头转向。不过这就是安全,也是主动防御的魅力,一句话,企业想安全就要管严,放松就不安全了!

还是百度
evolution1240
 楼主| 发表于 2011-3-12 20:25:42 | 显示全部楼层
好多人有一个误解,他们认为rootkit是用作获得系统root访问权限的工具。实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统。
什么是rootkit
Rootkit出现于二十世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了rootkit这个名词。这篇安全咨询就是CERT-CC的CA-1994-01,题目是Ongoing Network Monitoring Attacks,最新的修订时间是1997年9月19日。从出现至今,rootkit的技术发展非常迅速,应用越来越广泛,检测难度也越来越大。

rootkit介绍Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。换句话说,这种程序可能一直存在于我们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机黑客,还是计算机取证人员。黑客可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。!
一、背景知识
我们通常所说的智能机器,大至超级计算机,中到个人PC,小至智能手机,通常都有两部分组成:硬件和软件。并且,设备的智能是通过软件来实现的。所有软件中,有一种是必不可少的,那就是操作系统。操作系统可以简单理解为一组高度复用的核心程序,一方面,它要管理低层的硬件设备,另一方面,为上层其它程序提供一个良好的运行环境。真是同人不同命,同为软件,操作系统却享有至高无上的特权:它不仅管理硬件,而且其他所有软件也都受制于它。
因为在应用程序和硬件之间隔着操作系统,所以应用程序不能直接访问硬件,而是通过调用操作系统提供的接口来使用硬件。也就是说,对应用程序而言,硬件是不可见的。当然,凡事是没有绝对的,应用程序绕过操作系统来直接访问硬件也不是不可能的,但这样做会付出高昂的代价。设想一个软件开发商在开发一款功能丰富的软件,功能本身就够他头痛得了,现在他还得操心某个数据在某个磁道的某个簇上,某个字符在某品牌显示器上的颜色的二进制代码等等繁琐的事情,不用说财力和物力,单说开发周期就是无法容忍的。所以,现在的应用程序都是使用操作系统提供的简单明了的服务来访问系统的,因为毕竟没有谁愿意自讨苦吃
Rootkit基本是由几个独立程序组成,一个典型rootkit包括: 以太网嗅探器程程序,用于获得网络上传输的用户名和密码等信息。 特洛伊木马程序,为攻击者提供后门。 隐藏攻击者目录和进程的程序。还包括一些日志清理工具,攻击者用其删除wtmp、utmp和lastlog等日志文件中有关自己行踪的条目。 复杂的rootkit还可以向攻击者提供telnet、shell和finger等服务。还包括一些用来清理/var/log和/var/adm目录中其它文件的脚本。


最近最让IT管理员头痛的是什么呢?--毫无疑问是rootkit。这种可恶的程序是一批工具集,黑客用它来掩饰对计算机网络的入侵并获得管理员访问权限。一旦黑客获得管理员访问权限,就会利用已知的漏洞或者破解密码来安装rootkit。然后rootkit会收集网络上的用户ID和密码,这样黑客就具有高级访问权限了。


rootkit还有监控网络数据和按键的功能;为黑客在系统上开“后门”;修改日志文件;攻击网络上的其他计算机;修改系统上已有的工具防止被检测出来。 那么如何发现rootkit呢?看看三位Windows安全专家对用户的rootkit问题提供了什么解决方案吧。//本文来自电脑软硬件应用网www.45it.com


用户的问题:我是一家大型非营利机构的IT管理员。由于我们缺乏资金和人手,我们的许多用户需要用管理员访问权限来完成工作。最近,越来越多的用户抱怨他们的管理员应用程序崩溃了。他们的一些管理软件不再工作,例如,一些系统上的抗病毒软件神秘的失效了。有的在试图使用应用程序时蓝屏死机,有的计算机莫名其妙地重启或发送错误信息。用普通的间谍软件和特洛伊木马扫描工具没有发现任何问题。是什么在捣鬼?我们需要重装所有出现问题的计算机吗?



专家教你清除rootkit之诊断:


Kurt Dillard:缺少细节,但是,有一些关键的信息。以前一直很可靠的各种计算机系统频繁出现操作系统崩溃的问题意味着受到感染的计算机中的某些东西被改变了。另一个重要的线索是杀毒软件自动关闭自己。最后一个线索是,标准的安全工具不能发现任何恶意软件表明如果这些计算机中有新的软件,这种软件正在偷偷地运行。这种文件隐藏起来了看不到,但是,仍在运行。如果惟一奇怪的事情是数不清的系统崩溃,我会怀疑操作系统最新使用的补丁、设备驱动程序或者一个安全应用程序有问题。这些症候结合在一起暗示某些恶意的东西在起作用。然而,它也许不是一个rootkit。你必须要做额外的研究以便发现正在发生的是什么。


Lawrence Abrams:当你的计算机开始出现异常情况时,我想到的第一件事情就是你的计算机被间谍软件、病毒、特洛伊木马、蠕虫或者其它形式的恶意软件感染了。如果在你使用杀毒软件和/或者反间谍软件进行扫描之后继续存在这个问题,那么,这个时候就该使用某些工具进行深入的分析了。需要检查的是计算机的启动程序,看看是否存在当前杀毒软件定义中没有的新的恶意软件。某些检测故障的软件程序是:


HijackThis:这是一种通用的主页劫持者检测和清除工具,能够连续不断地更新。


WinPFind:这个工具软件可以扫描硬盘中的普通位置,查找与已知的恶意软件使用的方式相匹配的文件。


Silent Runners:这个软件工具检查Windows是如何启动的并且创建一个文本文件以便进行研究或者作为一个基准储存起来。如果没有检测到任何东西,设法用安全模式运行这个程序和你的杀毒/反间谍软件。很多与蠕虫一起发布的普通的rootkit在安全模式不能够运行。因此,故障排查软件在安全模式下可以看到这些恶意软件。


如果在安全模式下发现新的记录和文件,计算机很可能受到了在Windows正式模式下看不到的普通rootkit的感染。另一方面,如果你在安全模式下运行同一个工具软件之后仍没有发现任何可疑的现象,但是这个恶意软件的行为继续存在,你可以推测你正在应付一个更高级的rootkit。


Kevin Beaver:考虑到安装的应用程序的奇怪行为,你很可能正在对付某种类型的恶意软件,最有可能是rootkit或者以远程接入特洛伊木马。这些恶意软件能够让黑客从外部偷偷进入没有保护措施的计算机。了解这个事情的惟一方法是运行能够扫描或者监视异常行为和rootkit的存在的其它扫描软件。这种工具可以是Sana安全公司的“Primary Response”,或者Finjan软件公司的各种解决方案以及Sysinternals公司的“RootkitRevealer”。

sujun888
发表于 2011-3-13 16:52:42 | 显示全部楼层
太复杂,头晕。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-4-26 22:58 , Processed in 0.135931 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表