具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参见图1,示出了根据本发明一个实施例的检测加壳可执行文件的方法的流程图,所述方法包括如下步骤。
步骤S100,根据加壳可执行文件样本的特征设置至少两项技术指标。
所述技术指标为用于表示可执行文件符合加壳可执行文件特征的程度的参量。
步骤S200,应用加壳可执行文件样本得出各项技术指标的权重值。
步骤S300,计算待检测的可执行文件的各项技术指标的值,使用权重值将各项技术指标的值加权求和,依据加权求和的结果判断该待检测的可执行文件是否为加壳可执行文件。
本方案提供了高效的针对新壳查壳方法。采用本方案能够结合特征匹配、静态分析的特点,一方面保证了对已知壳的检测,另一方面提高了对未知壳的检测。例如,测试证明,对于不常见的加壳软件diProtector、DiskDupe、DJoin、PUNiSHER、QrYPt0r等的加壳,都可以检测出来。
在一实施例中,在执行步骤S300前,将待检测的可执行文件与预设的特征项进行匹配,如果匹配成功,则待检测的可执行文件加壳,不执行步骤S300,如果不匹配,则没有检测出待检测的可执行文件加壳,执行步骤S300。
这样,将特征匹配的方式与加权求和的方式相结合,使得本实施例中技术方案具有较高的扩展性。开发人员,或者病毒分析人员,通过遵从一定的规范,添加新的加壳可执行文件的特征,仍可实现特征匹配所达到的检测效果。
在一实施例中,步骤S100可以按如下方式实现。
所述根据加壳可执行文件样本的特征设置至少两个技术指标具体包括:
从加壳可执行文件样本如下特征中选择至少两项特征,
所述特征包括:非正常区段特征、导入函数量特征、代码熵特征和附加特征,
所述代码熵为可执行文件中代码段大小与数据段大小的比值,
所述附加特征包括如下子特征中的一项或多项,
所述子特征包括:可执行文件包含附加数据段、可执行文件的资源节入口在第一区段、可执行文件中包含大小为0的区段、可执行文件的入口点在第一或第二区段、可执行文件包含名称为空的区段、和可执行文件包含预设的敏感字符串;
根据选择的特征对技术指标进行如下设置:
当非正常区段特征被选择时,根据非正常区段特征将非正常区段指标设置为:当可执行文件中包含除预设的正常区段之外的区段时,非正常区段指标的值为1,否则,非正常区段指标的值为0;
当导入函数量特征被选择时,根据导入函数量特征将导入函数量指标设置为:当可执行文件从外部导入的函数的数量大于等于预设阀值时,导入函数量指标的值为1,否则,导入函数量指标的值为导入函数数量除以所述阀值的商;
当代码熵特征被选择时,根据代码熵特征将代码熵指标设置为:当代码熵的值小于等于预设的下限阀值时,代码熵指标的值为0,当代码熵的值大于等于预设的上限阀值时,代码熵指标的值为1,当代码熵的值在所述下限阀值和所述上限阀值之间时,代码熵指标的值为
其中,e为代码熵,R
down为下限阀值,R
up为上限阀值;
当附加特征被选择时,根据附加特征将附加指标设置为:附加指标的值为可执行文件满足的子特征数量除以附加特征所包含的子特征总量的商。
上述设置的技术指标仅为示例性说明,本领域所属技术人员能够根据不同的加壳可执行文件样本统计出加壳可执行文件的特征,并由此设置技术指标。
此外,在现有技术中,可执行文件符合一项特征项则判定该可执行文件加壳,因此,采用的特征具有限制:采用特征为加壳可执行文件的显著特征,对于那些不能够仅凭单独一项符合便可判定为加壳的特征不采用。这样,使得很多对于加壳检测有价值的特征不能被采用。本实施例中,设置技术指标依据的特征不受上述限制,可以采用任何对于判定加壳有价值的特征来设置技术指标。本实施例中所用特征的范围大于现有技术中特征项对应特征的范围。具体地,本实施例中选用的非正常区段特征、导入函数量特征、代码熵特征和附加特征为一组优选的特征组合,从可执行文件的多个方面对可执行文件进行检测,得出各方面综合检测结果,提高加壳可执行文件被检测出的概率。
在一实施例中,步骤S200通过如下方式实现。
参见图2,示出了根据本发明一个实施例的求导技术指标权重值的方法的流程。所述步骤S200具体包括步骤S210和步骤S220。
步骤S210,求出每项技术指标在各个加壳可执行文件样本中的值的均值。
步骤S220,依据各项技术指标的均值得出各项技术指标的权重值。
进一步地,参见图3,示出了根据本发明一个实施例的根据技术指标的均值求导权重值的方法的流程。所述步骤S220具体包括如下步骤。
步骤S222,以各项技术指标的权重值集合为权重值组,为权重值组设置多组初始值。
其中,每组初始值中包含多个分量值,一个分量值对应权重值组中一个权重值的初始值。可以使用向量表示初始值,向量中的一个元素为初始值的一个分量值。
步骤S224,应用各项技术指标的均值对各组初始值进行迭代优化。
其中,步骤S224的实现为:根据初始值中分量值与对应技术指标的均值间绝对差值计算各组初始值的适应度,依据各组初始值的适应度对各组初始值进行迭代优化。
所述适应度为用于表示初始值趋向最优解的程度的参量,适应度的值越高表示越接近最优解。
举例而言,所述步骤S224具体包括:按如下公式计算各组初始值的适应度,依据各组初始值的适应度对各组初始值进行迭代优化,
所述公式为:
公式一
其中,fitness为适应度,Tk为第k项技术指标的均值,wk为初始值中对应于第k项技术指标权重值的分量值,d为技术指标的项数。
上述计算适应度的公式为一优选的实现方式,还可以采用其他利用各项技术指标的均值计算适应度的实现方式,例如,用如下公式计算适应度。
fitness=|T1-w1|+......+|Tk-wk|+......+|Td-wd| 公式二
其中,fitness为适应度,Tk为第k项技术指标的均值,wk为初始值中对应于第k项技术指标权重值的分量值,d为技术指标的项数。
进一步地,所述依据各组初始值的适应度对各组初始值进行迭代优化具体包括:以初始值为群体中的个体,以初始值的适应度为群体中个体的适应度,应用粒子群算法或遗传算法对各组初始值进行迭代优化。
此处,通过结合动态粒子群算法得出权重值,能够进一步提高对修改特征码,动态修改内存等方式逃避检测的加壳可执行文件检测出来的概率。
步骤S226,依据初始值评价标准,从优化后的多组初始值中选出最优的初始值作为各项技术指标的权重值。
举例而言,所述步骤S226具体包括:以初始值的适应度为初始值评价标准,从优化后的多组初始值中选择适应度的值最高的初始值作为各项技术指标的权重值。
上述举例中的选择方式仅为实现步骤S226的多种方式中的一种,也可以使用其他方式实现步骤S226。例如,按公式一计算步骤S224中适应度时,按公式二计算优化后的各个初始值的评价值,选择评价值最高的初始值为各项技术指标的权重值。
本实施例中,采用公式一计算适应度,所得优化后的多组初始值收敛情况最好,各组初始值间偏差小,因此,采用公式一计算适应度为一种优选方案。
通过应用各项技术指标的均值对各组初始值进行迭代优化,使得最终确定的权重值能够更好地反映各个技术指标在检测中权重,能够进一步提高加壳可执行文件被检测出的可能性。
特别是对于新壳或未知壳的可执行文件,由于现有技术中,不能够知晓新壳或未知壳的特定特征,无法针对该特定特征进行匹配,因而无法将新壳或未知壳的可执行文件检测出来。本实施中通过迭代优化得出权重值,对于待检测可执行文件依据该权重值得出加和,依据加和进行加壳判断,该权重值根据样本迭代优化得出,当样本中包含具有新壳或未知壳的可执行文件时,权重值能够反映出新壳或未知壳的特征,从而使得检测出新壳或未知壳的可执行文件的可能性增大。
本实施例中实现步骤S200的方式仅为一种优选方式,所述步骤S200除上述方式实现外,还可以通过其他多种方式实现。例如,可以通过如下方式实现应用加壳可执行文件样本得出各项技术指标的权重值。
预设多组权重值,并计算各个加壳可执行文件样本的各项技术指标的值;对应于每组权重值,使用权重值将每个加壳可执行文件样本的各项技术指标的值加权求和,并将加壳可执行文件样本的和值相加求均值;依据每组权重值对应的均值,选择出使得加壳可执行文件样本被判定为加壳的概率最大的一组权重值作为最终确定使用的权重值。
此外,在一实施例中本发明的方法还包括:定期从加壳可执行文件样本库中抽取新增的加壳可执行文件样本,依据抽取的加壳可执行文件样本对各项技术指标的权重值进行更新。具体更新的方式可采用与步骤S200中应用加壳可执行文件样本得出各项技术指标的权重值相同的方式,仅是更新时使用抽取的加壳可执行文件样本得出权重值。由此,可以依据新增的加壳可执行文件的特征更新权重值,使权重值体现新增的加壳可执行文件的特征,进一步提高新壳或未知壳的可执行文件的被检测出的可能性。
参见图4,示出根据本发明一个实施例的采用粒子群算法得出权重值来检测加壳可执行文件的方法的流程图。
步骤S410,根据加壳可执行文件样本的特征设置4项技术指标。
本实施例中,步骤S410的具体实施方式如下所述
确定加壳可执行文件样本的特征包括:非正常区段特征、导入函数量特征、代码熵特征和附加特征。针对各个特征设置技术指标值。
1、非正常区段指标:该项技术指标的值表示为S,当可执行文件中包含除预设的正常区段之外的区段时,S为1,否则,S为0。
本实施例中,预设的正常区段包括:[".text",".rdata",".data",".rsrc",".reloc","idata","code","data","bss",".idata",".tls"]。
2、导入函数量指标:该项技术指标的值表示为F,当可执行文件从外部导入的函数的数量大于等于预设阀值时,F为1,否则,F为导入函数数量除以所述阀值的商。
通过统计得知,98%的加壳可执行文件的导入的函数数量大于80,因此,本实施例中,预设阀值设为80。如果可执行文件中导入的函数数量大于等于80,F为1,否则,F为n/80,其中n为可执行文件中导入的函数数量。
3、代码熵指标:该项技术指标的值表示为C,代码熵为可执行文件中代码段大小与数据段大小的比值,当代码熵的值小于等于预设的下限阀值时,C为0,当代码熵的值大于等于预设的上限阀值时,C为1,当代码熵的值在所述下限阀值和所述上限阀值之间时,C为
其中,e为代码熵,Rdown为下限阀值,Rup为上限阀值。
根据统计可知,加壳可执行文件的代码熵的范围位于0.3~2.0之间。因此,本实施例中下限阀值设为0.3,上限阀值设为2.0,C的值如下所述。
4、附加指标:
附加指标对应的附加特征包括6项子特征:
子特征1,可执行文件包含附加数据段;
子特征2,可执行文件的资源节入口在第一区段;
子特征3,可执行文件中包含大小为0的区段;
子特征4,可执行文件的入口点在第一或第二区段;
子特征5,可执行文件包含名称为空的区段;
子特征6,可执行文件包含预设的敏感字符串。
附加指标的值表示为O,为可执行文件满足的子特征数量除以附加特征所包含的子特征总量的商,即n/6,n为可执行文件满足的子特征数量。
步骤S420,从样本库中抽取一定量的加壳可执行文件样本,计算每项技术指标在各个加壳可执行文件样本中的值的均值。
本实施中,从样本库中抽取1000个样本。
分别计算出这1000个样本的S,F,C,O的值,分别得向量
计算每项技术指标在各个加壳可执行文件样本中的值的均值,S的平均值为 F的平均值为 C的平均值为 O的平均值为
步骤S430,为权重值组设置多组初始值,应用各项技术指标的均值应用粒子群算法对各组初始值进行迭代优化,选出最优的初始值作为各项技术指标的权重值。
非正常区段指标对应的权重值为w1,导入函数量指标对应的权重值为w2,代码熵指标对应的权重值为w3,附加指标对应的权重值为w4。该4个权重组成权重值组,表示为向量 生成向量W的多个初始值,即权重值组的多组初始值,例如100个初始值,向量W中每个元素的值在0.5~1之间。
以向量W的每个初始值作为粒子群算法中的粒子,即粒子群算法中的个体,运用粒子群算法对每个初始值进行迭代优化。参见图5,示出根据本发明一个实施例的采用粒子群算法得出权重值的流程图。
步骤S510,设置初始值。
设置初始速度,本实施例中速度为包括4个元素的向量,例如设置每个元素为0.3~0.5之间的随机数;迭代次数阀值,例如50;粒子群算法中学习因子C1和C2,例如C1=C2=2;惯用因子ω,例如ω=0.5。各个粒子的初始位置为步骤S430中设置的初始值,即向量W。对该初始值进行迭代优化,则每代优化后,粒子位置被更新,即向量W的初始值中各个元素的值被更新。
步骤S520,计算各个粒子的适应度值,找出当前个体极值和全局极值
按如下公式计算各个粒子,即每个初始值的适应度值。
公式为:
其中,
为各个技术指标值的均值,w
1~w
4为权重值。
对于每个粒子,选出已经进行的一代一代的优化中,适应度值最大的位置值,即该粒子的个体极值Pbesti;以及从本代优化的各个粒子位置中选择适应度值最大的位置值,即全局极值gbest。
步骤S530,更新速度和粒子的位置。
对于每个粒子,按如下公式进行优化。
Vi=ω×Vi+c1×rand()×(pbesti-Wi)+c2×rand()×(gbest-Wi)
Wi=Wi+Vi
其中,Vi为粒子i的速度,C1和C2为粒子群算法中学习因子,ω为惯用因子,rand()为随机数,Pbesti为粒子i的个体极值,gbest为当代的全局极值,Wi为粒子i的位置。
每个粒子的位置中包含四个元素,即所述对应于四个技术指标的权重值。
步骤S540,判断是否达到迭代次数阀值,如果是,执行步骤S550,否则,执行步骤S520。
步骤S550,结束迭代。
通过上述方法,得出优化的各个粒子的位置,即向量W的各个初始值优化后的值。例如,当向量W初始值个数为100时,得出100个优化后的W的初始值。
以向量W优化后的多个初始值的适应度为初始值评价标准,从向量W优化后的多个初始值中选择适应度的值最高的初始值作为各项技术指标的权重值。
即按公式 计算步骤S550结束优化后得出的各个初始值的适应度的值,选择适应度的值最高的一个初始值作为使用的权重值。
步骤S440,对待检测的可执行文件计算4项技术指标的值。
计算待检测的可执行文件计算4项技术指标的值分别为Sdet、Fdet、Cdet和Odet。
步骤S450,应用权重值对待检测的可执行文件的技术指标的值加权求和。
按公式r=w1·Sdet+w2·Fdet+w3·Cdet+w4·Odet计算和值。
步骤S460,判断和值是否大于等于预设的检测阀值,如果是,则执行步骤S470,否则,执行步骤S480。
将和值r与检测阀值比较,例如检测阀值为0.5,如果大于等于0.5,则该待检测可执行文件为加壳可执行文件。
步骤S470,检测出待检测的可执行文件为加壳可执行文件。
步骤S480,检测出待检测的可执行文件不为加壳可执行文件。
在一测试举例中,迭代次数阀值为50,惯用因子ω=0.5,学习因子C1=C2=2,第一代的粒子进化的速度Vi中元素定义为[0.3,0.5]之间的随机值。
适应度函数为:
迭代50次后得出的最优量向量W值为:
对一待检测的可执行文件,计算其S、F、C、O值,分别为Sdet=0,Fdet=0.875,Cdet=0.764,Odet=0.5。
计算出r=0×0.35+0.875×0.67+0.764×0.82+0.5×0.63=1.52
因为1.52>0.5判定该可执行文件为加壳可执行文件。
在一实施例中使用遗传算法对权重值组的多组初始值进行迭代优化,其他步骤与前述实施例相同,在此省略其说明。参见图6,示出根据本发明一个实施例的采用遗传算法得出权重值的流程图。
步骤S610,设置编码规则。
遗传算法中采用二进制编码,
因此设置编码规则,将wi数值规范到[1,10]。
wi′=floor(9×wi+1),floor表示下取整。
经过变换后的w′为整数向量且
方便采用二进制编码,w′的每一维使用4位二进制表示,w′使用16位二进制表示。
如 经过变换后
步骤S620,判断是否达到迭代次数阀值,如果是,则执行步骤S670,否则,执行步骤S630。
步骤S630,执行选择算法。
适应度函数为:
其中,各个技术指标值的均值和权重值wi为按所述编码规则转换为整数后的数值。
随机确定本代优化中从种群中选取的个体的数量,例如,采用轮盘赌算法进行选择,每代选择的个体数量为:n_itertor=int(random())×n,其中n为种群规模,random为随机生成[0,1]的数。
对选出的每个个体使用下列公式计算出其被选中的概率
其中,fitnessi为第i个个体的适应度。
根据每个个体的Pi值选择出n_itertor个个体。例如,对于每个个体,每次产生一个随机数,当Pi大于该随机数时,该个体被选中,如此从没被选中的个体中选择,直到选择出n_itertor个个体为止。
步骤S640,对选择出的个体进行交叉操作。
本实施例中采用双点交叉。将两个选择出的个体的二进制表示值中一个指定位的值进行相互交换,将另一个指定位的值也进行相互交换。
步骤S650,对群体中个体进行变异操作。
产生一个随机数,当Pi大于该随机数时,对个体二进制表示值的一个指定位做取反操作,即0变为1,1变为0。
步骤S660,将迭代代数加1,执行步骤S620。
步骤S670,应用编码规则对种群中个体进行反编码。即
从而得到优化后的向量W的多个初始值。
进一步,可以应用适应度函数选出最优初始值后,仅对最优初始值做反编码。
在一测试举例中,最大迭代数:100
迭代100次,结束后得到最优向量W的初始值为
通过编码规则转换后
对一待检测的可执行文件,计算其S、F、C、O值,分别为Sdet=0,Fdet=0.875,Cdet=0.764,Odet=0.5。
计算出r=0×0.33+0.67×0.67+0.764×0.78+0.5×0.67=1.38
因为1.38>0.5判定该可执行文件为加壳可执行文件。
本发明还公开了一种检测加壳可执行文件的***。参见图7,示出了根据本发明一个实施例的检测加壳可执行文件的***的结构图。
该***包括服务器100和客户端200。服务器100中保存加壳可执行文件样本,并根据加壳可执行文件样本设置技术指标和计算权重值,将该技术指标和权重值下发给各个客户端200。客户端200通常位于用户终端,使用服务器100下发的技术指标和权重值对可执行文件进行是否加壳的检测。
所述服务器100包括如下模块。
样本存储模块110,用于存储加壳可执行文件样本。
技术指标设置模块120,用于根据加壳可执行文件样本的特征设置至少两项技术指标,所述技术指标为用于表示可执行文件符合加壳可执行文件特征的程度的参量。
权重值计算模块130,用于应用加壳可执行文件样本得出各项技术指标的权重值。
参量发送模块140,用将设置的技术指标和得出的权重值发送给客户端200。
所述客户端200包括如下模块。
参量存储模块210,用于保存服务器100发送的技术指标和权重值。
加壳检测模块220,用于根据参量存储模块210中保存的技术指标计算待检测的可执行文件的各项技术指标的值,使用参量存储模块210中保存的权重值将所述各项技术指标的值加权求和,依据加权求和的结果判断所述待检测的可执行文件是否为加壳可执行文件。
本实施例提供了高效的针对新壳查壳进行检测的***。采用该***能够结合特征匹配、静态分析的特点,一方面保证了对已知壳的检测,另一方面提高了对未知壳的检测。例如,测试证明,对于不常见的加壳软件diProtector、DiskDupe、DJoin、PUNiSHER、QrYPt0r等的加壳,都可以检测出来。此外,本***中将运算量和存储量要求高的部分在服务器侧完成,将运算和设置结果下发给客户端,能够进一步节约客户端的资源,并且便于管理。
本发明还公开了一种检测加壳可执行文件的装置。参见图8,示出了根据本发明一个实施例的检测加壳可执行文件的装置的结构图。所述装置包括如下模块。
样本存储模块310,用于存储加壳可执行文件样本。
技术指标设置模块320,用于根据加壳可执行文件样本的特征设置至少两项技术指标,所述技术指标为用于表示可执行文件符合所述特征的程度的参量。
权重值计算模块330,用于应用加壳可执行文件样本得出各项技术指标的权重值。
加壳检测模块340,用于计算待检测的可执行文件的各项技术指标的值,使用所述权重值将所述各项技术指标的值加权求和,依据加权求和的结果判断所述待检测的可执行文件是否为加壳可执行文件。
本实施例提供了高效的针对新壳查壳进行检测的***。采用该***能够结合特征匹配、静态分析的特点,一方面保证了对已知壳的检测,另一方面提高了对未知壳的检测。例如,测试证明,对于不常见的加壳软件diProtector、DiskDupe、DJoin、PUNiSHER、QrYPt0r等的加壳,都可以检测出来。此外,本***中将运算量和存储量要求高的部分在服务器侧完成,将运算和设置结果下发给客户端,能够进一步节约客户端的资源,并且便于管理。
在一实施例中,所述权重值计算模块具体包括如下子模块。参见图9,示出了根据本发明一个实施例的权重值计算模块的结构图。此处,权重值计算模块可以为所述***中服务器100中权重值计算模块130,也可为所述装置中权重值计算模块330,在此没有特别限制。
均值计算子模块910,用于求出每项技术指标在各个加壳可执行文件样本中的值的均值。
权重值求导子模块920,用于依据各项技术指标的均值得出各项技术指标的权重值。
进一步地,所述权重值求导子模块920具体包括如下单元。参见图10,示出了根据本发明一个实施例的权重值求导子模块920的结构图。
设置单元922,用于以各项技术指标的权重值集合为权重值组,为权重值组设置多组初始值。
迭代优化单元924,用于应用各项技术指标的均值对各组初始值进行迭代优化。
其中,所述迭代优化单元924具体用于:根据初始值中分量值与对应技术指标的均值间绝对差值计算各组初始值的适应度,依据各组初始值的适应度对各组初始值进行迭代优化。
所述适应度为用于表示初始值趋向最优解的程度的参量,适应度的值越高表示越接近最优解。
具体地,按如下公式计算各组初始值的适应度,依据各组初始值的适应度对各组初始值进行迭代优化,
所述公式为:
其中,fitness为适应度,Tk为第k项技术指标的均值,wk为初始值中对应于第k项技术指标的权重值的分量值,d为技术指标的项数。
迭代优化单元924具体用于以初始值为群体中的个体,以初始值的适应度为群体中个体的适应度,应用粒子群算法或遗传算法对各组初始值进行迭代优化。
此处,通过结合动态粒子群算法得出权重值,能够进一步提高对修改特征码,动态修改内存等方式逃避检测的加壳可执行文件检测出来的概率。
选取单元926,用于依据初始值评价标准,从优化后的多组初始值中选出最优的初始值作为各项技术指标的权重值。
其中,选取单元926具体用于以初始值的适应度为初始值评价标准,从优化后的多组初始值中选择适应度的值最高的初始值作为各项技术指标的权重值。
实验证明,采用所述公式计算适应度,所得优化后的多组初始值收敛情况好,各组初始值间偏差小,因此,采用所述公式计算适应度为一种优选方案。
通过应用各项技术指标的均值对各组初始值进行迭代优化,使得最终确定的权重值能够更好地反映各个技术指标在检测中权重,能够进一步提高加壳可执行文件被检测出的可能性。
特别是对于新壳或未知壳的可执行文件,由于现有技术中,不能够知晓新壳或未知壳的特定特征,无法针对该特定特征进行匹配,因而无法将新壳或未知壳的可执行文件检测出来。本实施中通过迭代优化得出权重值,对于待检测可执行文件依据该权重值得出加和,依据加和进行加壳判断,该权重值根据样本迭代优化得出,当样本中包含具有新壳或未知壳的可执行文件时,权重值能够反映出新壳或未知壳的特征,从而使得检测出新壳或未知壳的可执行文件的可能性增大。
此外,在一实施例中权重值计算模块还用于定期从加壳可执行文件样本库中抽取新增的加壳可执行文件样本,依据抽取的加壳可执行文件样本对各项技术指标的权重值进行更新。具体更新的方式可采用与所述应用加壳可执行文件样本得出各项技术指标的权重值相同的方式,仅是更新时使用抽取的加壳可执行文件样本得出权重值。由此,可以依据新增的加壳可执行文件的特征更新权重值,使权重值体现新增的加壳可执行文件的特征,进一步提高新壳或未知壳的可执行文件的被检测出的可能性。
在一实施例中,所述技术指标设置模块具体实现如下功能。此处,技术指标设置模块可以为所述***中服务器100中技术指标设置模块120,也可为所述装置中技术指标设置模块320,在此没有特别限制。从加壳可执行文件样本如下特征中选择至少两项特征,
所述特征包括:非正常区段特征、导入函数量特征、代码熵特征和附加特征,
所述代码熵为可执行文件中代码段大小与数据段大小的比值,
所述附加特征包括如下子特征中的一项或多项,
所述子特征包括:可执行文件包含附加数据段、可执行文件的资源节入口在第一区段、可执行文件中包含大小为0的区段、可执行文件的入口点在第一或第二区段、可执行文件包含名称为空的区段、和可执行文件包含预设的敏感字符串;
根据选择的特征设置技术指标,
当非正常区段特征被选择时,根据非正常区段特征将非正常区段指标设置为:当可执行文件中包含除预设的正常区段之外的区段时,非正常区段指标的值为1,否则,非正常区段指标的值为0;
当导入函数量特征被选择时,根据导入函数量特征将导入函数量指标设置为:当可执行文件从外部导入的函数的数量大于等于预设阀值时,导入函数量指标的值为1,否则,导入函数量指标的值为导入函数数量除以所述阀值的商;
当代码熵特征被选择时,根据代码熵特征将代码熵指标设置为:当代码熵的值小于等于预设的下限阀值时,代码熵指标的值为0,当代码熵的值大于等于预设的上限阀值时,代码熵指标的值为1,当代码熵的值在所述下限阀值和所述上限阀值之间时,代码熵指标的值为
其中,e为代码熵,R
down为下限阀值,R
up为上限阀值;
当附加特征被选择时,根据附加特征将附加指标设置为:附加指标的值为可执行文件满足的子特征数量除以附加特征所包含的子特征总量的商。
上述设置的技术指标仅为示例性说明,本领域所属技术人员能够根据不同的加壳可执行文件样本统计出加壳可执行文件的特征,并由此设置技术指标。
此外,在现有技术中,可执行文件符合一项特征项则判定该可执行文件加壳,因此,采用的特征具有限制:采用特征为加壳可执行文件的显著特征,对于那些不能够仅凭单独一项符合便可判定为加壳的特征不采用。这样,使得很多对于加壳检测有价值的特征不能被采用。本实施例中,设置技术指标依据的特征不受上述限制,可以采用任何对于判定加壳有价值的特征来设置技术指标。本实施例中所用特征的范围大于现有技术中特征项对应特征的范围。
具体地,本实施例中选用的非正常区段特征、导入函数量特征、代码熵特征和附加特征为一组优选的特征组合,从可执行文件的多个方面对可执行文件进行检测,得出各方面综合检测结果,提高加壳可执行文件被检测出的概率。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种检测加壳可执行文件的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。