僵尸网络分析实验设计
2014-12-25高敏芬蔡亚运
高敏芬,蔡亚运
(1.南开大学 数学科学学院,天津 300071;2.南开大学 计算机与控制工程学院,天津 300071)
僵尸网络(botnet)是指攻击者通过各种手段恶意传播僵尸程序(bot)以控制大量的计算机,通过相对集中的若干计算机直接向大量受控计算机发送指令的攻击性网络[1-3]。攻击者通常利用大规模的僵尸网络进行分布式拒绝服务攻击(DDoS)、窃取用户信息、发送大量的垃圾邮件(spam)和传播其他恶意软件(如计算机病毒)等恶意活动。僵尸网络已经成为当今互联网最大的安全威胁之一,也因此成为网络安全领域研究的热点[4]。
僵尸网络分析实验是南开大学信息安全专业本科生“恶意代码分析”课程的重要实验内容之一。该实验的目的是帮助学生理解僵尸网络的基本工作原理及其行为特征,掌握分析和防治僵尸网络的技术和方法。
由于僵尸网络分析过程对学生的知识基础和综合分析能力要求较高,因此,也是对信息安全专业本科生综合应用所学知识分析问题、解决问题能力和创新意识的培养。首先,对僵尸网络的分析实验建立在计算机网络、汇编语言、编译原理、高级程序设计语言等多门专业基础或专业课程基础之上,学生通过实验可以更加深入地理解所学的专业知识,提高综合应用这些知识的能力。其次,学生在实验过程中可以利用真实的僵尸网络样本进行学习和研究,提高学生学习的兴趣和积极性,提高利用最新的恶意代码分析技术进行分析的能力。最后,学生通过实验还可以了解僵尸网络的发展过程,认识典型的僵尸网络,掌握常规的僵尸网络的分析和防治技术。在实验教学过程中,适当引导学生进一步探索新的恶意代码分析方法,有助于学生创新意识和创新能力的提高。
1 实验目的和任务
依据“恶意代码分析”课程的教学内容和教学目标,僵尸网络分析实验的目的和任务主要有3个方面。
(1)分析僵尸程序的行为和行为特征。该实验的一个重要目的就是认识僵尸程序的基本特征和攻击方式,对恶意代码的最新发展动态有更加深入的了解。通过实验,分析僵尸程序执行后的行为表现(例如自删除、修改系统文件和修改注册表选项)以及会进行怎样的网络通信;通过对僵尸程序的跟踪和分析获得僵尸网络的相关信息,如僵尸主机的地址、命令与控制服务器的地址或域名、僵尸程序与控制命令服务器通信的方式或时间等。通过实验分析,把握僵尸程序的主要行为和行为特征[5]。
(2)发掘僵尸网络的控制命令。在实际网络中,僵尸程序的高级语言源代码往往难以获得,因此二进制代码分析技术在僵尸网络等恶意代码的分析过程中有着较为广泛的应用。利用二进制代码分析技术解决僵尸网络分析中实际存在的难题——在没有源代码的情况下从僵尸程序的二进制可执行文件中发掘出该僵尸网络的控制命令集合,是本实验中的一个重要环节,也是本实验的难点。通过该环节,学生可以掌握最新、最实用的二进制代码分析技术。
(3)分析僵尸网络的命令与控制(command and control,C&C)机制。与计算机病毒和蠕虫等恶意代码不同,僵尸网络的一个重要特点就是其具有高度可控性,攻击者和僵尸程序之间通过命令与控制信道形成一对多的控制关系。僵尸网络的命令与控制机制决定了僵尸网络的拓扑结构、通信效率、可扩展性以及是否容易被防守者发现和破坏,是僵尸网络工作机制的核心部分[2,6-7]。通过对僵尸网络控制命令的发掘,可以掌握控制命令与僵尸程序行为的对应关系,分析僵尸程序和命令与控制服务器的通信方式和通信内容,形成对僵尸网络命令与控制机制的宏观认知,并通过对不同类型的控制协议和控制机制进行对比、分析,探讨可能存在的新的命令与控制机制。
2 实验环境构建
笔者结合南开大学信息安全专业实验室的软硬件环境[8-9]和已有的实验方案[10-11],设计了僵尸网络分析实验环境,其基础架构如图1所示。
在上述硬件环境的基础上,搭建了自动化、系统性的僵尸程序监控分析平台,其结构如图2所示。该分析平台运行在 Ubuntu 10.04/12.04操作系统下,主要由4个部分组成。
(1)僵尸程序执行过程监控平台。该平台负责僵尸程序的运行监控、执行轨迹的捕获、污点传播分析、符号执行及约束求解等实验任务。该监控平台的主要部分是二进制代码分析平台BitBlaze[12],包括动态分析部分TEMU和静态分析部分VINE。
图1 僵尸网络分析实验环境基础架构
图2 僵尸程序分析平台结构
(2)执行轨迹分析工具包。该工具包由Perl语言实现,完成对执行轨迹的分析实验,比如分析僵尸程序代码空间中的代码覆盖情况,分析僵尸程序执行过程中与系统交互情况等。
(3)控制命令挖掘工具包。控制命令挖掘工具包也由Perl语言实现,通过和执行轨迹分析工具的结合,利用部分僵尸程序执行逻辑的先验知识,可以进行对僵尸网络未知控制命令进行挖掘,并在此基础上对僵尸网络的命令控制机制进行进一步的分析研究。
(4)僵尸程序行为监控工具包。该工具包由文件系统监视软件FileMon和网络分析软件Wireshark等成熟的系统监控软件组成,工作在Windows系统的僵尸主机下,用于对僵尸程序的宏观行为进行跟踪和监控。
3 实验步骤
(1)熟悉监控环境和分析平台的使用。熟悉监控环境的使用,并在其中运行僵尸程序,尝试和僵尸网络命令与控制服务器进行连接和通信;熟悉二进制代码分析平台BitBlaze的使用,学习利用其动态分析组件TEMU进行轨迹捕获、二进制代码插装的技术和方法,熟悉利用静态分析组件VINE进行二进制代码的执行轨迹反汇编及符号执行、约束求解等分析方法。
(2)僵尸程序执行轨迹捕获。执行轨迹是僵尸程序路径空间中一条路径的执行过程的详细记录。在BitBlaze平台的TEMU中运行僵尸程序,监控其执行过程,并将从命令与控制信道中接收到的网络数据标记为污点,捕获得到僵尸程序的执行轨迹文件。可以分别捕获僵尸程序在与控制命令服务器无网络交互、有网络交互及接收到不同控制命令等情况的几组不同的执行轨迹,以便于进行对比分析,并用BitBlaze平台中的VINE将这些二进制的执行轨迹文件转换成汇编语言格式。
(3)僵尸程序执行轨迹文件分析。对捕获到的执行轨迹文件进行处理和简化,然后编写程序对其进行分析:统计分析僵尸程序执行轨迹中的线程个数及线程号、污点传播过程等信息;分析僵尸程序代码空间中的代码覆盖情况,计算代码覆盖率并分析其特点;统计分析系统API调用情况;从执行轨迹文件构造僵尸程序的控制流图。通过分析,对执行轨迹的特点和僵尸程序的执行逻辑有更加清晰的认识。
(4)僵尸网络控制命令提取。根据步骤(3)中的分析结果,结合僵尸程序的固有特点,从执行轨迹中定位到僵尸程序中对控制命令进行判断、处理的命令控制逻辑代码段。定位的方法可以结合参考文献[3]中提出的规律,也希望学生探索和发现新的特点和规则。然后,在可控环境中执行僵尸程序,当执行到命令控制逻辑代码段时,利用代码插装等二进制代码动态分析技术[13]提取出僵尸程序可执行的控制命令。
(5)僵尸程序行为分析。在可控环境中再次运行僵尸程序,利用FileMon和Wireshark等软件对僵尸程序的行为进行跟踪监控。其一,在没有与命令控制服务器交互时,分析僵尸程序执行后会有怎样的行为表现,例如自删除、修改系统文件、修改注册表选项、试图连接命令与控制服务器等;其二,在和命令与控制服务器进行交互时,利用步骤(4)中提取出的僵尸网络命令,触发僵尸程序运行,再监控其会有怎样的行为,并总结控制命令与僵尸行为的对应关系。通过多次实验和观察,对僵尸程序的行为和特征进行归纳总结。
(6)僵尸网络命令与控制机制的进一步思考和探索。思考上述从僵尸程序二进制文件中挖掘未知命令方法的优缺点,并探索新的改进方法。根据提取出的控制命令及其对应的行为,分析僵尸程序和命令与控制服务器通信的方式,从整体上对该僵尸网络的命令与控制机制进行认识和思考。
在上述步骤中,步骤(3)“执行轨迹文件分析”和步骤(4)“控制命令的提取”涉及较多的专业知识和二进制代码分析技术,是本实验的难点。
4 实例分析
在TEMU中运行Zeus僵尸程序,在和命令与控制服务器进行通信时,动态捕获了Zeus僵尸程序的3条执行轨迹,其中的线程数、汇编指令总数和系统API调用个数见表1。
表1 捕获的Zeus执行轨迹信息
对3个执行轨迹进行分析,了解Zeus僵尸程序的执行逻辑,利用执行轨迹中的代码块覆盖率特征,从中定位到满足参考文献[3]中提出的覆盖率规律的代码块,其所在代码区域就是僵尸程序的命令控制逻辑代码段。根据此方法,可以定位到的代码段地址范围为0x26e877c—0x26e87a2,其中调用了系统比较函数lstrcmpiw来进行比较,它是一个循环结构(见图3)。
图3 Zeus僵尸程序的命令控制逻辑结构
将Zeus僵尸程序再次放在TEMU中运行。当僵尸程序运行到命令判定循环的入口地址0x26e877c时,开始监控是否调用判定函数lstrcmpiw。如果发生调用,则修改输入命令为随机数据,使程序进入判定循环。在判定过程中,通过获取用来和输入数据比较的参数,动态捕获了Zeus僵尸网络的25个控制命令:
提取出控制命令以后,就可以用这些控制命令作为网络输入来触发Zeus僵尸程序,使其表现出相应的行为。掌握了僵尸网络的命令与控制机制以后,也可以尝试伪造Zeus命令与控制服务器并向僵尸主机发送bot_uninstall等命令来卸载、删除僵尸程序,瓦解僵尸网络。
5 结束语
本文根据僵尸网络的特点,结合南开大学信息安全专业实验室的软件和硬件环境,设计了僵尸网络分析的实验教学平台,并提出了实验目的、方法和步骤。利用本实验平台,学生可以进行僵尸程序行为特征分析、僵尸网络命令与控制机制研究的实验。通过实验,学生可以更加深入理解僵尸网络的基本原理和行为特征,掌握僵尸网络分析的相关技术,进而进行僵尸网络分析与防治的新方法、新途径的探索。本实验环境为信息安全专业学生的实践动手能力和创新能力的培养提供了良好的实验条件。
(
)
[1]方滨兴,崔翔,王威.僵尸网络综述[J].计算机研究与发展,2011,48(8):1315-1331.
[2]江健,诸葛建伟,段海新,等.僵尸网络机理与防御技术[J].软件学报,2012,23(1):82-96.
[3]王志,蔡亚运,刘露,等.基于覆盖率分析的僵尸网络控制命令发掘方法[J].通信学报,2014,35(1):156-166.
[4]Zhu Zhaosheng,Lu Guohan,Chen Yan,et al.Botnet research survey[C]//In Proceeding of 32nd Annual IEEE Computer Software and Applications Conference(COMPSAC’08),Turku,Finland,2008:967-972.
[5]Husna H,Phithakkitnukoon S,Palla S,et al.Behavior analysis of spam Botnets[C]//IEEE COMSWARE.Bangalore,India,2008:246-253.
[6]Brezo F,De La Puerta J G,Santos I,et al.C&C Techniques in Botnet Development[C]//International Joint Conference CISIS’12.Ostrava,Czech Republic,2012:97-108.
[7]Zeidanloo H R,Manaf A.Botnet command and control mechanisms[C]//The 2nd International Conference on Computer and Electrical Engineering,Dubai,UAE,2009:564-568.
[8]王志,贾春福.“恶意代码及其防治技术”课程的实验环境构建与实验内容设计[J].计算机教育,2009(18):140-142.
[9]高敏芬,王志.二进制代码分析实验平台设计[J].实验室科学,2011,14(6):121-123.
[10]郭凤海,贾春福.信息安全开放实验探讨[J].计算机教育,2010(10):119-122.
[11]高敏芬,郭凤海.恶意代码防治技术课程的实践和实验室的有效管理[J].实验室科学,2010,13(2):141-144.
[12]Song D,Brumley D,Yin H,et al.BitBlaze:a new approach to computer security via binary analysis[C]//International Conference on Information Systems Security(ICISS 2008).Hyderabad,India,2008:1-25.
[13]Yin H,Song D.TEMU:The BitBlaze Dynamic Analysis Component[EB/OL].[2014-03-01].http://bitblaze.cs.berkeley.edu/temu.html.