病毒+蠕虫+bot+rootkit
恶意软件类型
- 恶意软件大概分为两种类型:依附于宿主和独立于宿主程序。
- 前者被称为寄生程序,其本质不能独立于应用程序,实用程序,操作系统而独立存在的程序片段,例如,病毒,后门,逻辑炸弹。后者是可以被操作系统调度和执行的独立程序,例如,蠕虫和bot程序。
- 根据恶意软件是否进行复制划分:不进行复制的和进行复制的。
- 前者是触发执行的程序或程序片段,如逻辑炸弹,后门和bot程序。后者是一个程序或程序片段,执行时会产生一个或多个自身的拷贝,这些拷贝会在合适的时候在当前系统或其他系统中**,例如病毒,蠕虫。
- 后门
- 它是进入程序的一个入口,可以使攻击者不通过通常的访问控制机制获取程序的访问权。
- 后门一般被程序员用于程序的调试和测试。设置后门的另一个目的是当当前应用程序的认证机制失效时,还有其他方式**程序。
- 后门是一个能识别特殊的输入序列或用户ID进程或不可能的事件序列所触发的代码。
- 逻辑炸弹
- 逻辑炸弹是嵌入正常程序的一段代码,在满足的条件时就会被引爆。
- 能引爆逻辑炸弹的条件有很多,例如,某个特殊文件是否存在,执行程序的用户,日期等等。
- 逻辑炸弹一旦被引爆,他就会修改或删除数据及文件,导致系统崩溃。
- 特洛伊木马
- 是一个有用的或表面看起来有用的程序或命令,但其内部藏有恶意代码,当其被调用时,就会执行非预期的或有害的功能。
- 特洛伊木马可以间接完成一些非授权用户无法直接完成的工作。
- 例:一个用户想要访问另一个用户的私有文件,他可以将特洛伊木马放在公公文件夹中,诱导其他用户使用,一旦木马被执行就会修改该用户私有文件的访问权。
- 木马程序的主要动机是破坏数据
- 特洛伊木马的三种类型:
继续执行源程序的同时,执行独立的恶意程序。
继续执行源程序的功能,但会对源程序进行修改,以执行恶意行为或隐藏另一个恶意行为。
只执行恶意行为
- 移动代码
- 移动代码指那些不加修改就是能不同系统平台上运行并且能够实现相同功能的程序。
- 移动代码从远程传输到本地系统,然后在没有得到用户许可的情况下在本地系统运行。
- 移动代码通常作为蠕虫,病毒和特洛伊木马的载体,将这些恶意代码传播到系统中去。
- 移动代码能够利用漏洞实现某些功能,例如非授权的数据访问或系统入侵。
- 移动代码的传播方式:跨站点脚本,交互式动态web站点,电子邮件附件,从不信的网站上下载程序。
- 多重威胁的恶意软件
- 复合:病毒能够以多种方式进行感染。
- 混合攻击:使用多种感染和传播方式来获得最大的感染速度和破坏性。
病毒
- 典型的病毒会将代码拷贝到正常程序中,这样一旦被感染的计算机与未被感染的软件进行交互时,病毒就能将自己的拷贝到另一个正常程序中。
- 病毒能够实现正常程序的任何功能,所不同的是病毒将自己附着在宿主程序上,随着程序的运行而悄悄运行,一旦病毒被执行,就能执行任何功能,例如,删除文件和程序等。
- 病毒的三个组成部分:
- 病毒机制:是指病毒传播和病毒自我复制的方法。
- 有效载荷:指病毒传播之外的活动,包括破坏和非破坏性的活动。
- 触发条件:**病毒有效载荷的事件
- 病毒的四个阶段:
- 潜伏阶段:病毒处于休眠阶段
- 传播阶段:病毒将自己的拷贝到另一个程序中或硬盘上某个与系统相关的区域
- **阶段:病毒被**以执行预先设定的功能
- 执行阶段:执行病毒的功能
- 病毒的结构
- 病毒的代码可以放到程序的前端或后端,也可以是其它地方,但必须保证程序执行时,先执行病毒代码,然后执行被感染程序的正常代码。
- 例:病毒代码v位于被感染程序的前端,其执行过程如下:
程序的第一个指令跳转到病毒代码中。
第二行的数字1234567是一个特殊的标记,病毒用它来判断程序是否已经被感染。程序跳转到病毒主程序中,病毒会搜索一些没有被感染的程序,然后进行感染。然后进行一些破坏性的操作。
这种类型的病毒很容易被检测出来,因为被感染的程序的可执行文件的长度会增加。
躲避这种病毒检测的方法-将可执行文件压缩
对于每个没有发现感染的文件P2,病毒首先把这个文件压缩成与原来相比正好相差一个病毒的大小。
将一个病毒的拷贝到压缩后的程序P2的前端(然后病毒可能会执行一些破坏操作)。
将P1’解压缩,执行P1程序的正常功能。
- 病毒的分类
- 按病毒的感染对象划分:
感染引导扇区病毒:感染主引导记录或引导记录,当操作系统开始运行时,病毒就开始传播。
感染可执行文件病毒:感染可以在操作系统中或shell中执行的文件
宏病毒:感染含有应用程序解释的可执行宏代码文件。
- 按病毒的隐藏方式进行分类:
加密型病毒:病毒先通过部分随机代码生成随机**,然后用随机**加密病毒的剩余部分,**就保存在病毒代码中,当被感染程序执行时,先要用随机**解密病毒被加密部分,在感染的过程中还会生成新的随机**,对每一个病毒都使用不同的随机**进行加密,因此很难在病毒中找到用于模式匹配的固定字节。
病毒代码中负责生成**和执行加密/解密的部分称为变形引擎,这个变形引擎在每一次执行过程中也会发生改变。
隐蔽型病毒:不仅仅隐藏病毒部分代码而是病毒整体进行隐藏。
实例:压缩技术。
设置逻辑中断:当用户使用例程访问磁盘的可疑部分时,病毒将原始的没有被感染的可执行文件呈现在用户面前。多态病毒:每次感染都会发生变异的病毒,使基于病毒特征码的检测方法失效。
多态病毒在复制时,生成功能相同但排列方式完全不同的拷贝,在这种方式下,每个拷贝的特征码都不相同,为了达到这个目的,多态病毒可能插入冗余指令或交换指令顺序,更有效的方法是使用加密。
变形病毒:变形病毒变异不仅仅改变病毒代码的组织形式,而且病毒的行为也改变了。
- 病毒生成工具包
工具包制造的病毒比设计的病毒简单一些,但是数据巨大。 - 宏病毒
- 由于以下原因,宏病毒具有严重的安全威胁:
宏病毒是与系统平台无关的。宏病毒大多会感染微软Word文档或其他微软Office文档。任何支持这类应用软件的硬件平台和操作系统都可能被感染。
宏病毒只感染文档,而不感染可执行文件。计算机系统中的绝大部分信息都是以文档的形式而不是程序文件的形式保存的。
宏病毒传播简单。电子邮件就是宏病毒的一种最常见的传播方式。
由于宏病毒感染的是用户的文档,而不是系统程序,因此传统的文件系统访问控制机制对宏病毒传播的控制能力有限。
- 实质上,宏就是嵌入到字处理文档或其他类型文件中的可执行程序。当用户按下某个功能键或者某些键的组合肘,宏就被调用来完成用户预先设定的功能。
- 电子邮件病毒
- 第一代快速传播的电子邮件病毒,例如梅丽莎(Melissa ),将微软Word 宏病毒嵌入到电子邮件的附件中。一旦接收者打开电子邮件的附件,宏病毒就会被**。
- 出现了一种更具破坏性的电子邮件病毒。这种新病毒并不需要用户打开电子邮件的附件,只要用户浏览邮件就会**病毒。
病毒的防范措施
- 理想的应对病毒威胁的方告是预防:首先是阻止病毒进入计算机系统,或者阻止病毒修改任何包含可执行代码或宏的文件。
- 被病毒感染后可执行的方法:
- 检测(detection ):一旦被感染,就马上确定病毒的存在并对其定位。
- 识别( identification ):一旦检测到病毒,立即识别被感染程序中的病毒类型。
- 清除( removal ):一旦识别出病毒类型,立刻清除病毒代码井修复被感染的程序。将病毒从所有被感染的系统中清除,以阻止病毒的继续扩散。
- 反病毒软件分类
- 简单扫描器
第一代扫描器需要病毒特征码来识别病毒。所有拷贝都具有相同的结构和比特模式。基于病毒特征码的扫描仅仅局限于检测已知病毒。另一种第一代扫描器记录系统中各可执行文件的长度信息,然后通过检查文件长度变化来检测病毒。
- 启发式扫描器
第二代扫描器不再依赖于病毒特征码,而是通过启发式规则来检测可能存在的病毒感染。
其中有一类扫描器是通过搜索经常与病毒关联的代码段来检测病毒。例如,扫描器可能会搜索多态病毒使用的加密循环的起始部分并发现其加密的**。
第二代扫描的另一种方法是完整性检测。每个程序都被附加一个校验和。如果病毒感染
了程序但没有修改程序后面附加的校验和,那么完整性检测就能发现病毒对文件的修改。
- 活动陷阱
是内存驻留程序,它通过病毒行为而不是被感染文件的内部结构特征来识别病毒。
- 全面的保护
综合运用各种反病毒技术的软件包。它包括扫描和活动陷阱组件。同时还加入了访问控制功能,从而限制了病毒对系统渗透的能力,也就限制了病毒修改文件以继续传播的能力。
- 高级反病毒技术
- 通用解密:
在保持很快的扫描速度的同时,很容易地检测到即使是最复杂的多态病毒。
为了检测到这样的病毒结构,可执行文件要通过GD扫描器运行。 GD扫描器包括以下要素:CPU 仿真器(CPU emulator ):一个基于软件的虚拟计算机。可执行文件中的指令被仿真器所解析,而不是直接在底层的处理器上执行。
病毒特征码扫描器( virus signature scanner ):扫描目标代码来寻找已知的病毒特征码的
模块。
仿真控制模块(emulation control module ):控制目标代码执行的模块。流程:
每一次仿真开始时, CPU仿真器会逐条解释目标代码中的指令。因此,如果代码中包含用于解密和释放病毒的解密过程,那么这段代码将被解释出来。实际上,病毒暴露本身就帮助反病毒程序完成了工作。控制模块会周期性地中断仿真器的执行,并扫描目标代码中是否含有病毒特征码。设计GD扫描器的最大困难是确定运行每次解释的时间。太短并不能发现病毒,太长占用系统资源。
- 数字免疫系统
系统的目标是对新病毒进行快速响应,使病毒一旦入侵系统就会被查杀。当一个新病毒进入一个组织的系统后,免疫系统会自动捕获、分析、检测井屏蔽以及清除它。然后把这个新病毒的信息发送到运行IBM反病毒软件的系统上,使这个病毒在其他地方运行之前就被检测出来。
流程:每一台PC上都运行着一个监控程序,该程序使用了多种启发式方法,这些启发式方法基于系统行为、程序的可疑变化以及病毒的特征库来推断病毒是否存在。监控程序会将认为被感染的程序的拷贝发送给数字免疫系统的管理机。
管理机先对样本进行加密,然后将其发送给*病毒分析机。
病毒分析机建立一个能使被感染程序安全运行以便分析的环境。实现这样的环境使用的技术包括仿真或者建立一个可以执行井监控可疑程序的受保护环境。然后病毒分析机生成用于识别并清除病毒的解决方案。
这个解决方案被送回管理机。
管理机将解决方案转发给被感染的客户端。
解决方案也同时被转发到组织中其他的客户端。
全世界的用户将接收到定期的反病毒更新,以保护他们不受到新病毒的攻击。
- 行为阻断软件
- 行为阻断软件与主机的操作系统相结合,实时监控恶意的程序行为。行为阻断软件能够在程序的恶意行为影响计算机之前将其阻断。
- 被监控的程序行为包括:
试图打开、浏览、删除和/或修改文件。
试图格式化磁盘以及其他不可恢复的磁盘操作。
对可执行程序或宏的逻辑机制进行修改。
修改系统的关键设置,例如启动设置。
通过电子邮件或者即时通信软件发送可执行内容。
初始化网络通信。
- 行为阻断软件同时在服务器和桌面计算机上运行,根据网络管理员制定的策略工作,让正常的程序行为得到执行,但当出现非授权或可疑行为时,要予以处理。该模块将阻止任何可疑的软件运行。行为阻断软件会将可疑程序隔离到沙箱(sandbox)中,以限制其对操作系统的各种资源和其他应用程序的访问。然后向管理员发送警报。
- 恶意代码也必须要向系统发送特定的请求。因此,行为阻断程序通过截获所有这样的请求,就能够识别并阻止恶意行为,而不管病毒或者蠕虫如何使其代码变得模糊、难以识别。
蠕虫
- 蠕虫是一种能够自我复制并通过网络连接将其拷贝传播到其他计算机上的程序。
- 蠕虫会主动地去寻找更多的计算机来进行感染,并且每一台被感染的计算机又会变成一个跳板,继续自动地攻击其他计算机。
- 网络蠕虫程序一且在系统中被**,它 就会像计算机病毒或细菌那样工作,或者植入木马程序或者执行一些分裂性或破坏性的行为。
- 蠕虫传播工具:
- 电子邮件工具:蠕虫通过邮件将自己的拷贝发送到其他系统中去,当打开邮件的附件或者浏览邮件时,蠕虫的代码就会被执行。
- 远程登录能力:蠕虫以一个用户的身份登录到远程系统,然后使用命令将自己拷贝到将要被执行的另一个系统中。
- 远程执行能力:蠕虫在其他系统中执行自己的拷贝的能力。一般通过直接的远程执行工具,或者通过在网络服务上产生一个溢出从而暗中执行操作。
- 网络蠕虫显示出与计算机病毒相同的特征,具有下面几个阶段:潜伏阶段、传播阶段、触发阶段和执行阶段。
- 在传播阶段中主要执行如下功能:
通过检查主机列表或者相似的远程系统地址库,来寻找要感染的系统。
与远程主机建立连接。
将自己复制到远程主机上,并使该拷贝运行。
- 在多进程系统中,蠕虫通过把自己命名为系统进程或者其他不被系统操作员注意的名字来伪装自己。
- Morris蠕虫
- 当蠕虫的某个拷贝执行时,其首要任务就是找到从当前主机所能进入的其他主机。
当前系统所信任的主机表
用户的邮件转发文件
远程胀户访问权限表
网络连接状态报告程序
- Morris蠕虫会尝试多种方法以获得访问权:
蠕虫会试图**本地口令文件。然后,利用**得到的口令和对应用户ID登录远程主机。该方法的前提是许多用户在不同系统中使用相同的口令。
蠕虫执行口令**程序,尝试用以下字符串作为口令:
每个用户的账户名和账户名中字母的简单排列。
内置的432 Morris认为可能的候选口令。
本地系统字典中的所有单词。利用UNIX系统中finger协议的漏洞,这个漏洞会报告远程用户的信息。
利用负责收发邮件的远程进程的调试选项中的一个陷门。
- Morris蠕虫病毒就能够和操作系统命令解释器进行通信。它会向该命令解释器发送一个简短的引导程序,并发出一个命令来执行该程序,然后注销登录。随后引导程序回调父程序井下载蠕虫的其余部分。这样新的蠕虫就可以执行了。
- 蠕虫传播模型
- 在初始阶段:被感染主机的数量按指数方式增长。,当一个蠕虫被撤**后,它感染了附近的两台主机,每台被感染的主机又分别感染了另外两台主机, 然后以这种方式继续感染,结果就呈现出指数增长。
- 快传播:一段时间之后,被感染的主机在攻击已经被感染的主机上浪费了一些时间,从而使感染率降低了。在这个中间阶段,感染的主机数近似于线性的增长,但是这个阶段的感染率是最快的。
- 慢结束:在这一阶段蠕虫要寻找那些很难被识别出来的剩余主机。
- 反蠕虫的目标应该是在慢启动阶段捕获蠕虫,因为那时只有少量的主机被感染。
- 近期蠕虫攻击
- 红色代码蠕虫
红色代码蠕虫利用微软的IIS ( Microsoft Internet Information Server )安全漏洞渗透到系统井进行传播。该蠕虫通过对随机的IP地址进行探测来传播到其他主机上。在某段时间内,它只进行传播。然后,它利用大量被感染的主机向一个*Web站点发送大量数据包进行“拒绝服务”攻击。
- 红色代码II
红色代码II 是以Microsoft IIS 为攻击目标的蠕虫变种。该变种会在被感染主机上建立一个后门,使攻击者可以在这些主机上远程执行命令。
- SQL Slammer蠕虫
该蠕虫利用了微软SQL服务器上的缓冲区溢出漏洞。
- Sobig.f蠕虫
利用开放的代理服务器将被感染的机器变成垃圾邮件发送器。
- Mydoom
-种大量发送邮件的电子邮件蠕虫。它沿袭了在被感染计算机上安装后门的做法,从而使黑客可以远程访问到用户的口令、信用卡卡号等数据。
- Warexov蠕虫
该蠕虫被**时,它会在系统目录下生成一些可执行文件,井通过添加新的注册表项,把它设置成每当Windows 启动都自动运行。
- 蠕虫技术的现状
- 蠕虫的特征:
多平台
多种攻击手段::新的蠕虫会使用多种方战对系统进行渗透,例如利用Web服务器、浏览器、电子邮件、文件共享或其他基于网络的应用程序漏洞。
超快速传播
多态
变形
传输载体:传播其它分布式攻击程序的理想载体
零天攻击::为获得最大的震动和扩散范围,蠕虫会利用不为人知的漏洞。
- 手机蠕虫
Comm Warrior蠕虫利用蓝牙技术向接受区域内的其他手机传播。它也以彩信的方式向手机通讯录中的号码发送自己的拷贝,而且会自动回复收到的短信和彩信。除此之外,它还会将自己复制到手机的可移动存储卡中井且将自身插入到手机的程序安装文件中。 - 防范措施
- 应满足哪些要求:
通用性
及时性
弹性::使用的方法应该能够抵抗攻击者为了躲避反蠕虫技术而使用的隐藏技术。
最小拒绝服务代价:防治技术的应用要尽量减少对主机性能和服务质量的影响。
透明性:防治软件和设备不能要求修改现有的操作系统、应用程序和硬件。
全局与局部覆盖范围:使用的方法应该能够同时处理来自企业网外部和内部的攻击源。
- 防范方法:
基于特征码的蠕虫扫描过滤:
首先要生成蠕虫的特征码,然后把这些特征码应用到阻止蠕虫进/出网络或主机的扫描中。
基于过滤的蠕虫围墙策略
它关注于蠕虫的内容而不是扫描特征码。这种过滤会检查消息中是否含有病毒代码。
基于净载分类的蠕虫围墙策略
基于网络的技术检测数据包中是否包含蠕虫:
可以使用各种异常检测技术,但是需要注意避免较高的误报和漏报。
没有使用基于字节模式的蠕虫特征码,而是通过识别攻击的控制和数据流结构进行检测。阀值随机行走 (TRW )扫描检测
利用随机选取连接目标的方法,来检测是否有蠕虫正在活动.
速率限制
限制那些类似于从被感染主机发出的蠕虫扫描的通信量的发送速率。包括限制一台主机在一个时间窗内所连接的新主机数量,检测主机的高连接失败率,限制主机在一个时间窗内所能扫描的唯一IP地址数。
速率阻断
当输出连接率或连接尝试的差异性超过阑值时,这种方住会立即阻断输出的通信量。
- 两种实例:
主动蠕虫围堵-PWC方案
PWC方案是基于主机的,而不是像蜜罐、防火墙、网络入侵检测系统等是基于网络设备的。装在主机上的软件会寻找输出连接尝试的频率变化率和远程连接差异性(diversity )的披动。当发现这样的波动时,软件会立即阻断主机的进一步连接尝试。
PWC用来解决那些具有快速传播能力的蠕虫所带来的安全威胁。
运行流程:
A. PWC代理通过监控输出通信量来扫描网络活动,寻找与远程主机的TCP,UDP连接尝试的波动,来检测蠕虫。如果检测到这样的波动,则该代理将执行如下步骤:( 1 )向本地系统发出警报 (2 )阻断所有输出连接尝试 (3 )向PWC管理器发出警报: (4 )进行松弛(relaxation )分析,具体过程在 中描述。
B. PWC管理器收到代理发送的警报,然后向所有其他的代理(除原来发出警报的代理之外)转发这个警报。
c. 当主机收到警报肘,代理通过以下方法来决定是否忽略这个警报。如果从收到最后一个输入包到现在的时间已经足够长,那么如果被蠕虫感染,代理应该已经检测到该蠕虫,所以忽略这个警报。否则,代理就会假定它可能已经被感染了,并执行如下步骤:( l )阻断所有从特定的警报端口发出的输出连接尝试 (2 )进行松弛分析,具体过程在 中描述。
D. 松弛分析的执行过程如下:代理用固定的时间窗来监控输出活动,检查输出连接的数量是否超过一定的阔值。如果超过,则将继续阻断并且用新的时间窗来执行下一轮的松弛分析。分析过程会持续到输出连接率低于阙值,届时代理将解除阻断。如果在足够数目的时间窗内,闹值被持续超过,那么代理将隔离该主机并报告给PWC管理器。
基于网络的蠕虫围堵策略:
基于网络的蠕虫防范的关键部分是蠕虫监控软件。考虑到一个企业内部网络可能由一个或多个互连的局域网组成,因此需要两类监控软件:入口监控软件(ingress monitors ):这类软件被安装在企业内部网络和因特网之间。
出口监控软件( egress monitors ):这些软件可以被安装在企业内部网络中的各个独立局域网的出口点上,也可以被安装在企业内部网与因特网之间。出口监控就是用来通过监控输出通信中是否存在扫描或者其他可疑行为来捕获蠕虫攻击的源头。工作流程:
布置在网络的各种位置中的传感器用来检测潜在的蠕虫。这种传感器逻辑也可以合并到入侵检测系统的传感器中。
传感器向*服务器发送警报。*服务器会关联井分析输入的警报。关联服务器( correlation server )会确定发现蠕虫攻击的可能性以及攻击的关键特征。
服务器把攻击的信息转发到一个可控的环境(或者受保护的环境)中,在这个环境中可以对蠕虫建立沙箱模型以进行分析和测试。
受保护的系统检测可疑软件对目标应用程序某一版本的攻击,来识别攻击所利用的漏洞。
可控系统生成一个或多个相应的软件补丁,井对这些补丁进行测试。
一般的补丁方法:
增加缓冲区的长度。
使用局部代码随机化( minor code-randomization )技术,使攻击因为被攻击代码的格式和位置发生变化而不起作用。
给应用程序添加过滤器,使其能够识别井忽略攻击。
如果补丁程序能够阻止感染,井且不影响应用程序的功能,那么系统会将该补丁发送到应用程序主机上以更新目标应用程序。
bot
- bot也叫僵尸程序,它会秘密地控制一台连接因特网的计算机,并利用所控制的计算机发动攻击,这样使追踪bot 的作者变得很困难。一大群bot 就组成了僵尸网络( botnet )。
- bot的用途:
- 分布式拒绝服务攻击
- 发送垃圾邮件
- 嗅探通信流量: bot可以使用数据包嗅探工具来查看经过受控主机的数据包,寻找那些感兴趣的明文数据。
- 记录键盘
- 传播新的恶意软件
- 安装广告插件和浏览器辅助插件
- 攻击IRC聊天网络
- 操作在线投票或游戏
- 远程控制功能
- 是否具有远程控制功能是bot 与蠕虫的区别所在。蠕虫是自我复制并自我**,而bot是由一些*程序所控制,至少在开始阶段是这样。
- 典型的实现远程控制的工具是IRC 服务器。所有的bot都会加入这个服务器的一个特定通道中,并把通道中收到的消息当作命令处理。
- 当控制模块和bot 的通信通道建立后,控制模块就可以**bot 了。
控制模块可以轻松地向bot发送命令,让bot去执行一个已经在bot上设定好的例程。
更灵活的方式是,控制模块向bot发送更新命令,命令它们从某个因特网地址上下载一个程序,然后执行这个程序。
- 建立僵尸网络
- 建立僵尸网络所需要的条件:
实施攻击的bot软件。
在大量系统中都存在的漏洞。
定位井识别漏洞主机的策略,这个过程被称为扫描( scanning )或特征码识别.几类扫描策略:
随机扫描( random ):每个受控主机使用一个不同的种子,在IP地址空间中探查随机的地址。
攻击列表( hit-list ):攻击者先编辑生成一个潜在的易受攻击主机列表。一旦这个列表编辑完成,攻击者就开始逐一感染这个列表中的每一台主机。每个被感染的主机都拥有这个列表的一部分来继续执行扫描。这种策略导致扫描过程短,因此很难被检测到感染的进行。
拓扑扫描( topological ):这种方也利用被感染主机中的信息来找到更多的主机。
本地子网扫描 (local subnet ):如果在防火墙之后的主机被感染,那么这台主机就在它所在的本地网络中寻找感染目标。
- 防范措施
包括入侵检测系统、蜜罐系统、数字免疫系统。当bot被**并进行攻击时,这些防范措施能够检测到这个攻击。防范的主要目标应该是在僵尸网络创建阶段就检测到井阻止它。
rootkit
- rootkit是安装在系统中用来支持以管理员(或root )权限对系统进行访问的一组恶意程序。
- rootkit能够对系统进行很多的修改来隐藏自己,使用户很难察觉到 rootkit 的存在,也很难确定它对系统进行了哪些修改。
- rootkit是通过破坏系统对进程、文件、注册表的监控和报告机制而实现隐藏的。
- rootkit 可以根据重启后能否继续工作以及执行模式进行分类。 rootkit可以是:
- 持续的( persistent ):系统每一次启动都会被**。 rootkit 必须把它的代码存储在持续性存储如注册表或文件系统中,并配置一种方式使它不需要用户干预就可以自己执行。
- 基于内存的(memory based ):没有持续性,重起后rootkit就会失效。
- 用户模式( user mode ):截获API (应用程序接口)调用,并修改返回值。例如,当一个应用程序执行列出目录中文件的操作时,使得返回结果中不包括与rootkit 相关的文件。
- 内核模式( kernel mod巳):能够截获对本地内核模式的API 的调用。 rootkit还能够通过删除内核的活动进程列表中的恶意软件进程来隐藏自己。
- rootkit 的安装
- 一种rootkit 的安装方式是通过木马程序。先引诱用户装载木马程序,然后通过木马程序安装rootkit。
- 另一种rootkit 安装方式是通过黑客入侵活动实现。
过程:
黑客使用工具扫描目标主机打开的端口或者其他的漏洞。
黑客使用口令**、恶意软件或系统漏洞获得初始访问权限,最终获得管理员权限。
黑客上载rootkit 到受害者的主机中。
黑客能够把病毒、拒绝服务或其他类型的攻击加到rootkit有效载荷中。
然后黑客执行rootkit的安装脚本。
rootkit替换二进制数据、文件、命令或系统实用程序来隐藏自己。
rootkit监听目标服务器的某个端口,安装嗅探软件或键盘记录程序,**恶意的有效载荷,或者通过其他步骤来攻陷受害主机。
- 系统级调用攻击
- 在用户级运行的程序是通过系统调用来与内核交互的。因此,系统调用是内核级rootkits实现隐藏的主要目标。
- Linux 中,每一个系统调用都会被分配一+唯一的系统调用编号。当一个用户模式的进程执行系统调用时,该进程是通过系统调用编号来引用系统调用的。
- 内核维护着一张系统调用表,每一项对应着一个系统调用,其中每项的内容是对应系统调用例程的入口地址。系统调用编号就是这个调用在表中的索引。
- 三种可以用来修改系统调用的技术:
修改系统调用表( modify the system call table ):黑客修改存储在系统调用表中的选定的系统调用的地址。这样rootkit就把系统调用从原来合法的例程指向了rootkit所指定的程序上。图7-9 显示了knark rootkit是如何实现的。
修改系统调用表的目标对象( modify system call table target ):黑客用恶意代码覆盖了所选定的正常系统调用例程,而系统调用表没有被修改。
重定向系统调用表( redirect the system call table ):黑客把对整个系统调用表的引用重定向到新的内核存储单元中的一个新表上。
- 防范措施
- 防范rootkit需要多种网络级和计算机级的安全工具。基于网络的和基于主机的入侵检测系统都能够用来检测输入通信量中己知的rootkit 攻击的代码特征。基于主机的反病毒软件也能被用来识别那些已知rootkit 的特征。
- 对某类文件做完整性校验。这个工具将使用API 的系统扫描结果与不使用API 的指令所获得的实际存储视图进行对比。