僵尸网络控制协议挖掘方法和装置制造方法
【专利摘要】本发明涉及一种僵尸网络控制协议的挖掘方法和装置。所述方法包括以下步骤:捕捉僵尸程序的执行轨迹;对所述执行轨迹进行代码块划分;统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率;对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块;根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域;对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令;引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。上述僵尸网络控制协议的挖掘方法和装置,提高了分析的准确率,分析的更全面。此外,简化执行轨迹中的指令数目,大幅减小分析所需的时间复杂度和空间复杂度。
【专利说明】僵尸网络控制协议挖掘方法和装置
【技术领域】
[0001]本发明涉及计算机技术,特别是涉及一种僵尸网络控制协议挖掘方法和装置。
【背景技术】
[0002]随着互联网的发展,僵尸网络逐渐发展成规模庞大、功能多样的恶意网络,给当前的信息安全带来了不容忽视的威胁。其中,僵尸网络是指采用一种或多种传播手段将主机感染僵尸病毒,从而在控制者与被感染主机之间形成的可一对多控制的网络。在很多情况下,僵尸网络的控制协议和僵尸程序的高级语言形式的源代码难以得到,能够得到的仅仅是一些通过监视CPU (Central Processing Unit,中央处理器)的执行及其状态而捕捉到的僵尸程序执行部分命令时的二进制执行轨迹。如何利用这些执行轨迹挖掘出僵尸程序的全部命令,进而挖掘出该僵尸程序所在僵尸网络的控制协议是一个亟待解决的问题。
[0003]传统的对僵尸网络的命令和控制协议的挖掘主要包括动态分析和静态分析。动态分析的研究对象是僵尸网络的数据包,通过统计分析挖掘数据包中的特征,然后开发网络过滤工具阻断僵尸网络的通信;静态分析一般是由病毒分析员手工完成的,从僵尸网络的恶意代码样本中找出其中包含的命令与控制协议。然而传统的技术方案成本较高,需要大量的人力资源,分析的效率低,需要较长的分析时间,漏报率高。
【发明内容】
[0004]基于此,有必要针对传统的对僵尸网络的控制协议的挖掘中漏报率高的问题,提供一种能提高分析准确率的僵尸网络控制协议的挖掘方法。
[0005]此外,还有必要针对传统的对僵尸网络的控制协议的挖掘中漏报率高的问题,提供一种能提高分析准确率的僵尸网络控制协议的挖掘装置。
[0006]一种僵尸网络控制协议的挖掘方法,包括以下步骤:
[0007]捕捉僵尸程序的执行轨迹;
[0008]对所述执行轨迹进行代码块划分;
[0009]统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率;
[0010]对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,所述第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块;
[0011]根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域;
[0012]对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令;
[0013]引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
[0014]一种僵尸网络控制协议的挖掘装置,包括:
[0015]捕捉模块,用于捕捉僵尸程序的执行轨迹;
[0016]划分模块,用于对所述执行轨迹进行代码块划分;[0017]获取模块,用于统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率;
[0018]分析模块,用于对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,所述第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块;
[0019]定位模块,用于根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域;
[0020]提取模块,用于对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令;
[0021]引导模块,用于引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
[0022]上述僵尸网络控制协议的挖掘方法和装置,对僵尸网络的执行轨迹进行划分代码块后,对代码块的覆盖率及被覆盖次数进行分析定位可疑区域,针对可疑区域进行分析提取出恶意控制命令及对应的特定程序,将提取的恶意控制命令及特定程序覆盖到僵尸程序,可分析得到僵尸程序的全部控制命令,如此提高了分析的准确率,分析的更全面。且无须高级语言形式的语义支持,能直接通过二进制执行轨迹分析,处理简单。
【专利附图】
【附图说明】
[0023]图1为在一个实施例中僵尸网络控制协议的挖掘方法的流程示意图;
[0024]图2为代码块划分前执行轨迹中一组指令示例;
[0025]图3为图2中执行轨迹的一组指令进行代码块划分后的第一代码块;
[0026]图4为图2中执行轨迹的一组指令进行代码块划分后的第二个代码块;
[0027]图5为某个执行轨迹划分代码块后得到的代码块序列中的一部分;
[0028]图6为化简前的执行轨迹中的一组按序执行的指令示例;
[0029]图7为图6中指令简化后的示例;
[0030]图8为代码块覆盖次数示例;
[0031]图9为计算得到的代码块覆盖率的示例;
[0032]图10为代码块覆盖次数、覆盖率结合示例;
[0033]图11为第一类代码块示例;
[0034]图12为设置阈值r为50时筛选出来的SCB ;
[0035]图13为设置阈值r为30时筛选出来的SCB ;
[0036]图14为Zeus僵尸网络的僵尸程序对应的执行轨迹中定位到的可疑区域;
[0037]图15为代码块26d879a_>26d879c和在它之前执行的代码示例;
[0038]图16为一个实施例中僵尸网络控制协议的挖掘装置的结构示意图;
[0039]图17为另一个实施例中僵尸网络控制协议的挖掘装置的结构示意图。
【具体实施方式】
[0040]下面结合具体的实施例及附图对僵尸网络控制协议的挖掘方法和装置的技术方案进行详细的描述,以使其更加清楚。
[0041]如图1所示,在一个实施例中,一种僵尸网络控制协议的挖掘方法,包括以下步骤:
[0042]步骤S102,捕捉僵尸程序的执行轨迹。
[0043]本实施例中,捕捉僵尸程序中预设数量个不同输入对应的不同二进制执行轨迹,并将二进制执行轨迹反汇编成汇编指令格式的执行轨迹。具体的,在一个全系统模拟器中运行僵尸程序,监视僵尸程序的执行过程,捕捉僵尸程序在输入为ti的情况下的二进制执行轨迹TRi (i = I, 2,…,η)。然后将这η个二进制执行轨迹TRi反汇编成汇编指令格式的执行轨迹tri (i = I, 2,…,η)。后续步骤中所指的“执行轨迹”均指汇编语言格式的执行轨迹,η为输入不同的执行轨迹的总个数。
[0044]例如在全系统模拟器中运行Zeus僵尸网络的僵尸程序,捕捉到10个输入不同命令时的二进制执行轨迹,然后将这10个二进制执行轨迹进行反汇编,得到10个汇编语言格式的执行轨迹。对每条指令的格式可如下:
[0045]地址:汇编指令、参与操作的寄存器或存储器中的数据污点信息。
[0046]步骤S104,对该执行轨迹进行代码块划分。
[0047]具体的,首先将汇编指令分为两类,一类是可能会直接引起程序执行过程中的执行路径或功能发生变化 或指令地址发生转移的指令,即程序转移指令,如无条件转移指令(jump)、条件转移指令(jz、jnz、je、jne、jb 等)、循环指令(loop、loopz、loopnz 等)、过程调用指令(call)、调用返回指令(ret)、中断指令(INT等)等;另一类是非程序转移指令。
[0048]然后再以程序转移指令作为代码块的边界对执行轨迹进行代码块划分。且所有代码块中包含的指令集合的并集等于执行轨迹中包含的指令集合,任意两个代码块的交集为空。如,将执行轨迹tri (i = 1,2, - ,η)划分成m个代码块Cb11Cb2,...,cbm,满足
m
【权利要求】
1.一种僵尸网络控制协议的挖掘方法,包括以下步骤: 捕捉僵尸程序的执行轨迹; 对所述执行轨迹进行代码块划分; 统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率; 对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,所述第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块;根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域; 对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令; 引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
2.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,所述捕捉僵尸程序的执行轨迹的步骤包括: 捕捉僵尸程序中预设数量个不同输入对应的不同二进制执行轨迹,并将所述二进制执行轨迹反汇编成汇编指令格式的执行轨迹。
3.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,在对所述执行轨迹进行代码块划分的 步骤之前,还包括步骤: 对所述执行轨迹进行简化处理。
4.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,所述计算得到每个代码块的覆盖率的步骤包括: 统计预设数量个执行轨迹对每个代码块的覆盖状态,计算覆盖代码块的执行轨迹的个数与该预设数量的比值,将所述比值作为相应的代码块的覆盖率。
5.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,在根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域的步骤之后,还包括步骤: 获取每个代码块的污点状态,将没有污点的代码块从所述可疑区域中剔除。
6.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,所述对所述执行轨迹进行代码块划分的步骤包括: 以程序转移指令作为代码块的边界对执行轨迹进行代码块划分,且所有代码块中包含的指令集合的并集等于执行轨迹中包含的指令集合,任意两个代码块的交集为空。
7.一种僵尸网络控制协议的挖掘装置,其特征在于,包括: 捕捉模块,用于捕捉僵尸程序的执行轨迹; 划分模块,用于对所述执行轨迹进行代码块划分; 获取模块,用于统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率; 分析模块,用于对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,所述第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块; 定位模块,用于根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域; 提取模块,用于对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令; 引导模块,用于引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
8.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述装置还包括反汇编模块,所述捕捉模块还用于捕捉僵尸程序中预设数量个不同输入对应的不同二进制执行轨迹;所述反汇编模块用于将所述二进制执行轨迹反汇编成汇编指令格式的执行轨迹。
9.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述装置还包括: 简化模块,用于对所述执行轨迹进行简化处理。
10.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述获取模块还用于统计预设数量个执行轨迹对每个代码块的覆盖状态,计算覆盖代码块的执行轨迹的个数与该预设数量的比值,将所述比值作为相应的代码块的覆盖率。
11.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述装置还包括: 剔除模块,用于获取每个代码块的污点状态,将没有污点的代码块从所述可疑区域中剔除。
12.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述划分模块还用于以程序转移指令作为代码块的边界对执行轨迹进行代码块划分,且所有代码块中包含的指令集合的并集等于 执行轨迹中包含的指令集合,任意两个代码块的交集为空。
【文档编号】G06F21/56GK103902895SQ201210568194
【公开日】2014年7月2日 申请日期:2012年12月24日 优先权日:2012年12月24日
【发明者】王志, 邹赞, 张晓康, 贾春福, 蔡亚运 申请人:腾讯科技(深圳)有限公司, 南开大学