僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染 bot 程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。之所以用僵尸网络这个名字,是为了更形象地让人们认识到这类危害的特点:众多的计算机在不知不觉中如同中国古老传说中的僵尸群一样被人驱赶和指挥着,成为被人利用的一种工具。
概念介绍
在 Botnet 的概念中有这样几个关键词。“bot 程序”是 robot 的缩写,是指实现恶意控制功能的程序代码;“僵尸计算机”就是被植入 bot 的计算机;“控制服务器(Control Server)”是指控制和通信的中心服务器,在基于 IRC(因特网中继聊天)协议进行控制的 Botnet 中,就是指提供 IRC 聊天服务的服务器。僵尸网络是一种由引擎驱动的恶意因特网行为:DDoS 攻击是利用服务请求来耗尽被攻击网络的系统资源,从而使被攻击网络无法处理合法用户的请求。 DDoS 攻击有多种形式,但是能看到的最典型的就是流量溢出,它可以消耗大量的带宽,却不消耗应用程序资源。DDoS 攻击并不是新鲜事物。在过去十年中,随着僵尸网络的兴起,它得到了迅速的壮大和普遍的应用。僵尸网络为 DDoS 攻击提供了所需的“火力”带宽和计算机以及管理攻击所需的基础架构。
网络特点
首先
是一个可控制的网络,这个网络并不是指物理意义上具有拓扑结构的网络,它具有一定的分布性,随着 bot 程序的不断传播而不断有新位置的僵尸计算机添加到这个网络中来。僵尸病毒被人放到计算机时机器会滴滴的响上 2 秒
工作过程
Botnet 的工作过程包括传播、加入和控制三个阶段。
一个 Botnet 首先需要的是具有一定规模的被控计算机,而这个规模是逐渐地随着采用某种或某几种传播手段的 bot 程序的扩散而形成的,在这个传播过程中有如下几种手段:
(1)主动攻击漏洞。其原理是通过攻击系统所存在的漏洞获得访问权,并在 Shellcode 执行 bot 程序注入代码,将被攻击系统感染成为僵尸主机。属于此类的最基本的感染途径是攻击者手动地利用一系列黑客工具和脚本进行攻击,获得权限后下载 bot 程序执行。攻击者还会将僵尸程序和蠕虫技术进行结合,从而使 bot 程序能够进行自动传播,著名的 bot 样本 AgoBot,就是实现了将 bot 程序的自动传播。
(2)邮件病毒。bot 程序还会通过发送大量的邮件病毒传播自身,通常表现为在邮件附件中携带僵尸程序以及在邮件内容中包含下载执行 bot 程序的链接,并通过一系列社会工程学的技巧诱使接收者执行附件或点击链接,或是通过利用邮件客户端的漏洞自动执行,从而使得接收者主机被感染成为僵尸主机。
(3)即时通信软件。利用即时通信软件向好友列表中的好友发送执行僵尸程序的链接,并通过社会工程学技巧诱骗其点击,从而进行感染,如 2005 年年初爆发的 MSN 性感鸡(Worm.MSNLoveme)采用的就是这种方式。
(4)恶意网站脚本。攻击者在提供 Web 服务的网站中在 HTML 页面上绑定恶意的脚本,当访问者访问这些网站时就会执行恶意脚本,使得 bot 程序下载到主机上,并被自动执行。
(5)特洛伊木马。伪装成有用的软件,在网站、FTP 服务器、P2P 网络中提供,诱骗用户下载并执行。
通过以上几种传播手段可以看出,在 Botnet 的形成中传播方式与蠕虫和病毒以及功能复杂的间谍软件很相近。
在加入阶段,每一个被感染主机都会随着隐藏在自身上的 bot 程序的发作而加入到 Botnet 中去,加入的方式根据控制方式和通信协议的不同而有所不同。在基于 IRC 协议的 Botnet 中,感染 bot 程序的主机会登录到指定的服务器和频道中去,在登录成功后,在频道中等待控制者发来的恶意指令。图 2 为在实际的 Botnet 中看到的不断有新的 bot 加入到 Botnet 中的行为。
在控制阶段,攻击者通过中心服务器发送预先定义好的控制指令,让被感染主机执行恶意行为,如发起 DDos 攻击、窃取主机敏感信息、更新升级恶意程序等。图 3 为观测到的在控制阶段向内网传播恶意程序的 Botnet 行为。
分类介绍
Botnet 根据分类标准的不同,可以有多许多种分类。
按 bot 程序种类
(1)Agobot/Phatbot/Forbot/XtremBot。这可能是最出名的僵尸工具。防病毒厂商 Spphos 列出了超过 500 种已知的不同版本的 Agobot(Sophos 病毒分析),这个数目也在稳步增长。僵尸工具本身使用跨平台的 C++写成。Agobot 最新可获得的版本代码清晰并且有很好的抽象设计,以模块化的方式组合,添加命令或者其他漏洞的扫描器及攻击功能非常简单,并提供像文件和进程隐藏的 Rootkit 能力在攻陷主机中隐藏自己。在获取该样本后对它进行逆向工程是比较困难的,因为它包含了监测调试器(Softice 和 O11Dbg)和虚拟机(VMware 和 Virtual PC)的功能。
(2)SDBot/RBot/UrBot/SpyBot/。这个家族的恶意软件目前是最活跃的 bot 程序软件,SDBot 由 C 语言写成。它提供了和 Agobot 一样的功能特征,但是命令集没那么大,实现也没那么复杂。它是基于 IRC 协议的一类 bot 程序。
(3)GT-Bots。GT-Bots 是基于当前比较流行的 IRC 客户端程序 mIRC 编写的,GT 是(Global Threat)的缩写。这类僵尸工具用脚本和其他二进制文件开启一个 mIRC 聊天客户端, 但会隐藏原 mIRC 窗口。通过执行 mIRC 脚本连接到指定的服务器频道上,等待恶意命令。这类 bot 程序由于捆绑了 mIRC 程序,所以体积会比较大,往往会大于 1MB。
按 Botnet 控制方式
(1)IRC Botnet。是指控制和通信方式为利用 IRC 协议的 Botnet,形成这类 Botnet 的主要 bot 程序有 spybot、GTbot 和 SDbot,目前绝大多数 Botnet 属于这一类别。
(2)AOL Botnet。与 IRC Bot 类似,AOL 为美国在线提供的一种即时通信服务,这类 Botnet 是依托这种即时通信服务形成的网络而建立的,被感染主机登录到固定的服务器上接收控制命令。AIM-Canbot 和 Fizzer 就采用了 AOL Instant Messager 实现对 Bot 的控制。
(3)P2P Botnet。这类 Botnet 中使用的 bot 程序本身包含了 P2P 的客户端,可以连入采用了 Gnutella 技术(一种开放源码的文件共享技术)的服务器,利用 WASTE 文件共享协议进行相互通信。由于这种协议分布式地进行连接,就使得每一个僵尸主机可以很方便地找到其他的僵尸主机并进行通信,而当有一些 bot 被查杀时,并不会影响到 Botnet 的生存,所以这类的 Botnet 具有不存在单点失效但实现相对复杂的特点。Agobot 和 Phatbot 采用了 P2P 的方式。
带来危害
综述
Botnet 构成了一个攻击平台,利用这个平台可以有效地发起各种各样的攻击行为,可以导致整个基础信息网络或者重要应用系统瘫痪,也可以导致大量机密或个人隐私泄漏,还可以用来从事网络欺诈等其他违法犯罪活动。下面是已经发现的利用 Botnet 发动的攻击行为。随着将来出现各种新的攻击类型,Botnet 还可能被用来发起新的未知攻击。
拒绝服务攻击
使用 Botnet 发动 DDos 攻击是当前最主要的威胁之一,攻击者可以向自己控制的所有 bots 发送指令,让它们在特定的时间同时开始连续访问特定的网络目标,从而达到 DDos 的目的。由于 Botnet 可以形成庞大规模,而且利用其进行 DDos 攻击可以做到更好地同步,所以在发布控制指令时,能够使得 DDos 的危害更大,防范更难。
发送垃圾邮件
一些 bots 会设立 sockv4、v5 代理,这样就可以利用 Botnet 发送大量的垃圾邮件,而且发送者可以很好地隐藏自身的 IP 信息。
窃取秘密
Botnet 的控制者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等。同时 bot 程序能够使用 sniffer 观测感兴趣的网络数据,从而获得网络流量中的秘密。
滥用资源
攻击者利用 Botnet 从事各种需要耗费网络资源的活动,从而使用户的网络性能受到影响,甚至带来经济损失。例如:种植广告软件,点击指定的网站;利用僵尸主机的资源存储大型数据和违法数据等,利用僵尸主机搭建假冒的银行网站从事网络钓鱼的非法活动。
可以看出,Botnet 无论是对整个网络还是对用户自身,都造成了比较严重的危害,我们要采取有效的方法减少 Botnet 的危害。
研究现状
对于 Botnet 的研究是最近几年才逐渐开始的,从反病毒公司到学术研究机构都做了相关的研究工作。最先研究和应对 Botnet 的是反病毒厂商。它们从 bot 程序的恶意性出发,将其视为一种由后门工具、蠕虫、Spyware 等技术结合的恶意软件而归入了病毒的查杀范围。著名的各大反病毒厂商都将几个重要的 bot 程序特征码写入到病毒库中。赛门铁克从 2004 年开始,在其每半年发布一次的安全趋势分析报告中,以单独的章节给出对 Botnet 活动的观测结果。卡巴斯基也在恶意软件趋势分析报告中指出,僵尸程序的盛行是 2004 年病毒领域最重大的变化。
学术界在 2003 年开始关注 Botnet 的发展。国际上的一些蜜网项目组和蜜网研究联盟的一些成员使用蜜网分析技术对 Botnet 的活动进行深入跟踪和分析,如 Azusa Pacific 大学的 Bill McCarty、法国蜜网项目组的 Richard Clarke、华盛顿大学 Dave Dittrich 和德国蜜网项目组。特别是德国蜜网项目组在 2004 年 11 月到 2005 年 1 月通过部署 Win32 蜜罐机发现并对近 100 个 Botnet 进行了跟踪,并发布了 Botnet 跟踪的技术报告。
Botnet 的一个主要威胁是作为攻击平台对指定的目标发起 DDos(分布式拒绝服务攻击)攻击,所以 DDos 的研究人员同样也做了对 Botnet 的研究工作。由国外 DDosVax 组织的“Detecting Bots in Internet Relay Chat Systems”项目中,分析了基于 IRC 协议的 bot 程序的行为特征,在网络流量中择选出对应关系,从而检测出 Botnet 的存在。该组织的这个研究方法通过在 plantlab 中搭建一个 Botnet 的实验环境来进行测试,通过对得到的数据进行统计分析,可以有效验证关于 Botnet 特征流量的分析结果,但存在着一定的误报率。
国内在 2005 年时开始对 Botnet 有初步的研究工作。北京大学计算机科学技术研究所在 2005 年 1 月开始实施用蜜网跟踪 Botnet 的项目,对收集到的恶意软件样本,采用了沙箱、蜜网这两种各有优势的技术对其进行分析,确认其是否为僵尸程序,并对僵尸程序所要连接的 Botnet 控制信道的信息进行提取,最终获得了 60,000 多个僵尸程序样本分析报告,并对其中 500 多个仍然活跃的 Botnet 进行跟踪,统计出所属国分布、规模分布等信息。
国家应急响应中心通过 863-917 网络安全监测平台,在 2005 年共监测到的节点大于 1000 个的 Botnet 规模与数量统计如图 4 所示。
这些数据和活动情况都说明,我国国内网上的 Botnet 的威胁比较严重,需要引起网络用户的高度重视。
CCERT 恶意代码研究项目组在 2005 年 7 月开始对 Botnet 的研究工作,通过对大量已经掌握的 Botnet 的实际跟踪与深入分析,对基于 IRC 协议的 Botnet 的服务器端的特征进行了分类提取,形成对于 Botnet 服务器端的判断规则,从而可以对网络中的 IRC Server 进行性质辨别。设计并初步实现了 Botnet 自动识别系统,应用于中国教育和科研计算机网络环境中。
可以看出,从国内到国外,自 2004 年以来对 Botnet 的研究越来越多地受到网络安全研究人员的重视,研究工作已经大大加强。但是这些工作还远远不够,在检测和处置 Botnet 方面还有许多工作要做。
研究方法
综述
对于目前比较流行的基于 IRC 协议的 Botnet 的研究方法,主要使用蜜网技术、网络流量研究以及 IRC Server 识别技术。
使用蜜网技术
蜜网技术是从 bot 程序出发的,可以深入跟踪和分析 Botnet 的性质和特征。蜜网有着三大核心需求:即数据控制、数据捕获和数据分析。主要的研究过程是,首先通过密罐等手段尽可能多地获得各种流传在网上的 bot 程序样本;当获得 bot 程序样本后,采用逆向工程等恶意代码分析手段,获得隐藏在代码中的登录 Botnet 所需要的属性,如 Botnet 服务器地址、服务端口、指定的恶意频道名称及登录密码,以及登录所使用到的用户名称,这些信息都为今后有效地跟踪 Botnet 和深入分析 Botnet 的特征提供了条件。在具备了这些条件之后,使用伪装的客户端登录到 Botnet 中去,当确认其确实为 Botnet 后,可以对该 Botnet 采取相应的措施。
网络流量研究
网络流量的研究思路是通过分析基于 IRC 协议的 Botnet 中僵尸主机的行为特征,将僵尸主机分为两类:长时间发呆型和快速加入型。具体来说就是僵尸主机在 Botnet 中存在着三个比较明显的行为特征,一是通过蠕虫传播的僵尸程序,大量的被其感染计算机会在很短的时间内加入到同一个 IRC Server 中;二是僵尸计算机一般会长时间在线;三是僵尸计算机作为一个 IRC 聊天的用户,在聊天频道内长时间不发言,保持空闲。将第一种行为特征归纳为快速加入型,将第二、三种行为特征归纳为长期发呆型。
研究对应这两类僵尸计算机行为的网络流量变化,使用离线和在线的两种分析方法,就可以实现对 Botnet 的判断。
IRC Server 识别技术的研究
通过登录大量实际的基于 IRC 协议的 Botnet 的服务器端,可以看到,由于攻击者为了隐藏自身而在服务器端刻意隐藏了 IRC 服务器的部分属性。同时,通过对 bot 源代码的分析看到,当被感染主机加入到控制服务器时,在服务器端能够表现出许多具有规律性的特征。通过对这些特征的归纳总结,就形成了可以用来判断基于 IRC 协议的 Botnet 的服务器端的规则,这样就可以直接确定出 Botnet 的位置及其规模、分布等性质,为下一步采取应对措施提供有力的定位支持。
以上三种研究方法都是针对基于 IRC 协议的 Botnet。对于 P2P 结构的 Botnet 的研究较少,原因是由于其实现比较复杂,在网络中并不占有太大比例,同时也因为其在控制方式上的分布性使得对它的研究比较困难。但随着 Botnet 的发展,对于 P2P 结构的 Botnet 的研究也将进一步深入。
应对
采用 Web 过滤服务
Web 过滤服务是迎战僵尸网络的最有力武器。这些服务扫描 Web 站点发出的不正常的行为,或者扫描已知的恶意活动,并且阻止这些站点与用户接触。
Websense、Cyveillance 、FaceTime 都是很好的例子。它们都可以实时地监视互联网,并查找从事恶意的或可疑的活动的站点,如下载 JavaScript 或执行 screen scrapes 等正常 Web 浏览之外的其它骗局。Cyveillance 和 Support Intelligence 还提供另外一种服务:通知 Web 站点操作人员及 ISP 等恶意软件已经被发现,因此黑客攻击的服务器能被修复,他们如是说。
转换浏览器
防止僵尸网络感染的另一种策略是浏览器的标准化,而不是仅仅依靠微软的 Internet Explorer 或 Mozilla 的 Firefox.当然这两者确实是最流行的,不过正因为如此,恶意软件作者们通常也乐意为它们编写代码。同样的策略也适用于操作系统。据统计,Macs 很少受到僵尸网络的侵扰,正如桌面 Linux 操作系统,因为大多数僵尸的罪魁祸首都把目标指向了流行的 Windows.
禁用脚本
另一个更加极端的措施是完全地禁用浏览器的脚本功能,虽然有时候这会不利于工作效率,特别是如果雇员们在其工作中使用了定制的、基于 Web 的应用程序时,更是这样。
部署防御系统
另一种方法是调整你的 IDS(入侵检测系统)和 IPS(入侵防御系统),使之查找有僵尸特征的活动。例如,重复性的与外部的 IP 地址连接或非法的 DNS 地址连接都是相当可疑的。虽然难于发现,不过,另一个可以揭示僵尸的征兆是在一个机器中 SSL 通信的突然上升,特别是在某些端口上更是这样。这就可能表明一个僵尸控制的通道已经被激活了。您需要找到那些将电子邮件路由到其它服务器而不是路由到您自己的电子邮件服务器的机器,它们也是可疑的。僵尸网络的专家 Gadi Evron 进一步建议,您应该学会监视在高层对 Web 进行访问的家伙。它们会激活位于一个 Web 页面上的所有的链接,而一个高层次的访问可能会指明一台机器正被一个恶意的 Web 站点所控制。
一个 IPS 或 IDS 系统可以监视不正常的行为,这些行为指明了难于发现的、基于 HTTP 的攻击和来自远程过程的攻击、Telnet 和地址解析协议(即 ARP)欺骗等等。然而,值得注意的是,许多 IPS 检测器使用基于特征的检测技术,也就是说,这些攻击被发现时的特征被添加到一个数据库中,如果数据库中没有有关的特征就无法检测出来。因此,IPS 或 IDS 就必须经常性的更新其数据库以识别有关的攻击,对于犯罪活动的检测需要持续不断的努力。
保护用户生成的内容
还应该保护你的 WEB 操作人员,使其避免成为“稀里糊涂”的恶意软件犯罪的帮凶。如果你并没有朝着 WEB 2.0 社会网络迈进,你公司的公共博客和论坛就应该限制为只能使用文本方式,这也是 Web Crossing 的副总裁 Michael Krieg 的观点,他是社会化网络软件和主机服务的创造者。
Krieg 说,“我并不清楚我们成千上万的用户有哪一个在消息文本中允许了 JavaScript,我也不清楚谁在其中嵌入了代码和其它的 HTML 标签。我们不允许人们这样做。我们的应用程序在默认情况下要将这些东西剥离出去。”
Dan Hubbard 是 Websense 安全研究的副总裁,他补充说,“那是用户创建内容站点的一个严重问题,即 Web 2.0 现象。你怎么才能在允许人们上传内容的强大功能与不允许他们上传不良的东西之间寻求平衡呢?”
这个问题的答案是很明确的。如果你的站点需要让会员或用户交换文件,就应该进行设置,使其只允许有限的和相对安全的文件类型,如那些以。jpeg 或 mp3 为扩展名的文件。(不过,恶意软件的作者们已经开始针对 MP3 等播放器类型,编写了若干蠕虫。而且随着其技术水平的发现,有可能原来安全的文件类型也会成为恶意软件的帮凶。)
使用补救工具
如果你发现了一台被感染的计算机,那么一个临时应急的重要措施就是如何进行补救。像 Symantec 等公司都宣称,他们可以检测并清除即使隐藏最深的 rootkit 感染。Symantec 在这里指明了 Veritas 和 VxMS(Veritas Mapping Service)技术的使用,特别是 VxMS 让反病毒扫描器绕过 Windows 的文件系统的 API(API 是被操作系统所控制的,因此易于受到 rootkit 的操纵)。其它的反病毒厂商也都试图保护系统免受 rootkit 的危害,如 McAfee 和 FSecure 等。
不过,Evron 认为,事后进行的检测所谓的恶意软件真是一个错误!因为它会使 IT 专家确信他们已经清除了僵尸,而其实呢,真正的僵尸代码还驻留在计算机上。他说,“反病毒并非是一个解决方案,因为它是一个自然的反应性的东西。反病毒能够识别有关的问题,因而反病毒本身也会被操纵、利用。” 这并不是说你不应该设法实施反病毒软件中最好的对付 rootkit 的工具,不过你要注意这样做就好似是在你丢失了贵重物品后再买个保险箱而已。用一句成语讲,这就叫做“亡羊补牢”。Evron 相信,保持一台计算机绝对安全干净、免受僵尸感染的方法是对原有的系统彻底清楚,并从头开始安装系统。
不要让你的用户访问已知的恶意站点,并监视网络中的可疑行为,保护你的公共站点免受攻击,你的网络就基本上处于良好状态。这是安全专家们一致的观点。
可以注意到,如果一个网络工作人员对于网络安全百思不得其解,并会油然而生这样一种感觉,‘我应该怎么对付这些数以百万的僵尸呢?’。“其实,答案非常简单。正如,FaceTime 的恶意软件研究主管 Chris Boyd 所言,”只需断开你的网络,使其免受感染─病毒、木马、间谍软件或广告软件等……。将它当作一台 PC 上的一个流氓文件来进行清除(不过,谁又能保证真正清除干净呢?)。这就是你需要做的全部事情。
手机僵尸网络特征
手机流量总不够用、自动安装陌生软件、弹通知栏广告,你可能遇到了中国最大的安卓手机僵尸网络的攻击。这是一款叫做 Android.Troj.mdk 的后门程序(简称 MDK),感染率高达千分之七,总计感染了不少于 105 万部智能手机。用户手机中招后,流量消耗剧增、广告频繁弹出、机器变卡变慢,隐私被窃取甚至存在被监听被跟踪的隐患。
手机僵尸网络是由攻击者通过手机僵尸程序构建的,可以通过一对多的命令控制信道远程控制的、协同的只能手机群,“手机僵尸程序”特别突出构建在手机平台;“一对多的命令与控制信道”是僵尸网络区别于其他网络攻击的本质特征,正是这种一对多的控制关系使得攻击者可以以极地的代价控制大量的资源并为其服务,“协同性”则用来突出僵尸网络具有的基于其规模的特有的攻击方式,如 DDos 等。
手机僵尸网络传播途径
恶意广告作者将正常的游戏应用,流行应用进行重新打包,然后再发布到市场,由于带有正常游戏或正常应用功能因此用户很难发现问题 ,并有可能会将游戏推荐给你身边的朋友。同时,恶意广告作者会进行后台刷榜,一提升用户热度,从而用户将流失流量。
手机僵尸网络与传统僵尸网络的区别
手机平台的特殊性决定了手机僵尸网络与传统僵尸网络相比较而言的特殊性。
手机平台具有不同于桌面系统的独特性。
手机僵尸网络必须借助传统服务器构建和维护,手机间的通讯方式除了可以通过 3G/Wifi 接入 Internet 实现网络通信,还可以借助 SMS/MMS 等固有通信方式和蓝牙、红外灯局域通信协议,这就为组建手机僵尸网络提供了灵活性。
手机作为个人通讯工具,相比于桌面系统有独特的危害性。
手机僵尸网络更易造成用户的财产损失,手机僵尸网络可以对用户的隐私安全威胁更大。