发明内容
本发明要解决的技术问题是提供一种基于生成式对抗网络的恶意代码对抗样本自动生成方法,该方法可自动生成针对恶意代码检测机器学习模型的对抗样本,为发掘恶意代码检测模型缺陷、帮助更好地评估和完善恶意代码检测系统提供了样本,间接得保证了网络安全。
为解决上述技术问题,本发明采用的技术方案是:
一种基于生成式对抗网络的恶意代码对抗样本自动生成方法,包括如下步骤:
步骤1、选定训练用的恶意PE文件和良性PE文件,对PE文件进行如下操作:
1.1)提取各文件的结构特征;
1.2)将提取到的特征无重复的存储形成初始特征库;
1.3)将各文件与所述初始特征库中的所有特征做存在性特征映射,得到所述恶意PE文件与良性PE文件各自的初始特征映射向量;
步骤2、将上面得到所述初始特征映射向量输入到生成式对抗网络GAN进行训练,生成对抗特征映射向量;将此向量与所述初始特征库做对应性映射,得到对抗特征并无重复的保存生成对抗特征库;
步骤3、参照所述对抗特征库,利用进化算法对上述训练用的恶意PE文件进行对抗性修改,得到对抗性修改文件集;
步骤4、利用静态检测模型对步骤3中得到的对抗性修改文件集进行筛选,选择出被分类器标记为良性的文件作为规避样本集;
步骤5、对上述规避样本集进行恶意功能验证,将保留训练用恶意PE文件功能的规避样本作为恶意代码对抗样本文件进行输出。
所述步骤2中生成对抗特征映射向量的具体操作如下:
S1:随机生成一取值范围为[0,1)噪声向量Z,将向量Z和恶意PE文件的初始特征映射向量X作为输入传递给GAN的生成器G,输出对抗特征映射向量G(x,z);生成器G的损失函数公LG为:
LG
其中,x是所述恶意PE文件的初始特征映射向量X中的某一元素,Puniform[0,1)表示均匀分布在[0,1)范围内的随机数,E是求logD(G(x,z))的数学期望,D(G(x,z))是GAN中鉴别器D对所述对抗特征映射向量G(x,z)的预测结果;
S2:将S1中得到的对抗特征映射向量G(x,z)和良性PE文件的初始特征映射向量Y一并输入至GAN的鉴别器D和黑盒探测器f,所述黑盒探测器f对初始特征映射向量Y的预测结果用来对鉴别器D进行拟合,所述鉴别器D对G(x,z)的预测结果反馈至所述生成器G中,所述鉴别器D的损失函数为:
LD=Eg∈G(x,z)H(D(g),f(g))+Ey∈YH(D(y),f(y)) (2)
其中,g表示所述对抗特征映射向量G(x,z)的某一元素,D(g)表示鉴别器D对g的预测结果,f(g)表示黑盒探测器f对g的预测结果,y表示良性PE文件的初始特征映射向量Y的某一元素,D(y)表示鉴别器D对y的预测结果,f(y)表示黑盒探测器f对y的预测结果;H(a,b)表示参数a与b距离度量函数,H(a,b)=|a-b|;
S3:判断所述生成器G和所述鉴别器D的损失函数是否收敛,如果达到收敛状态,停止迭代,由生成器G输出对抗特征向量G(x,z)并无重复的保存成对抗特征库;否则继续迭代。
步骤4中的所述静态检测模型为MalConv。
所述步骤5中对规避样本集进行恶意功能验证的评价模型为Cuckoo sandbox,其验证公式为:
其中,B表示训练用恶意PE文件的恶意行为,num(B)表示恶意行为的数量,Beva表示步骤4得到的规避样本的恶意行为,hits(B,Beva)表示训练用恶意PE文件与规避样本之间相同的恶意行为,sim(B,Beva)表示两者之间恶意行为的相似度。
所述步骤1.1中所述的结构特征为Section names特征和Import function特征。
所述步骤1.1中提取文件结构特征的算法为lief算法。
采用上述技术方案所取得的技术效果在于:
本发明可以在无需人工干预的情况下高效生成对抗样本,生成的样本在有效对抗基于机器学习的恶意检测模型的同时,确保了对抗样本与原始恶意样本在恶意行为上的一致性,有效提升了生成对抗样本的真实性和模型对抗评估的准确性。本发明还可以实现人工调整训练参数、调控系统训练方式,提升了方法的灵活性和适应性。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,一种基于生成式对抗网络的恶意代码对抗样本自动生成方法,包括如下步骤:
步骤1、选定训练用的恶意PE文件和良性PE文件,对PE文件进行如下操作:
1.1)提取各文件的结构特征,本发明中所用的结构特征包括Section names特征和Import function特征,这两个特征属于PE文件结构名。对所述恶性PE文件提取这两类特征,对所述良性PE文件也提取这两类特征。本发明中采用lief算法来提取这两个特征,lief是第三方包,用来解析PE文件。
1.2)将提取到的特征无重复的存储形成初始特征库,也就是将所述恶意PE文件和所述良性PE文件的所有Section names特征和Import function特征合起来无重复的保存,组成初始特征库。
比如所述初始特征库为:
1 GetTabbedTextExtentA:user32.dll
2 AddAccessAllowedAce:ADVAPI32.dll
3 CoUninitialize:ole32.dll
……
上面的“1”“2”“3”表示特征的检索码。
1.3)将各文件与所述初始特征库中的所有特征做存在性特征映射,得到所述恶意PE文件与良性PE文件各自的初始特征映射向量。
具体做法为:首先设置一个二进制向量,向量长度与所述初始特征库所含特征的数量相等;然后将两个PE文件与初始特征库中所有的特征进行一一比对,当PE文件中存在初始特征库中的某一特征时,将这一特征检索码在向量中对应的位上的值设为1,若不存在,则将该位上的值设为0,这样就得到了该PE文件的初始特征映射向量。
假设训练用字典中所有特征为4个,对于某一恶意PE文件,文件中含有检索码为1和3的特征,那么该文件对应的初始特征映射向量便为1010。
参照此操作得到各个PE文件的初始特征映射向量。
步骤2、将上面得到所述初始特征映射向量输入到生成式对抗网络GAN进行训练,生成对抗特征映射向量;将此向量与所述初始特征库做对应性映射,得到对抗特征并无重复的保存生成对抗特征库。
具体分步骤如下:
S1:随机生成一取值范围为[0,1)噪声向量Z,将向量Z和恶意PE文件的初始特征映射向量X作为输入传递给GAN的生成器G,输出对抗特征映射向量G(x,z);其中,生成器G的损失函数公LG为:
LG
其中,x是所述恶意PE文件的初始特征映射向量X中的某一元素,Puniform[0,1)表示均匀分布在[0,1)范围内的随机向量,E是求logD(G(x,z))的数学期望,D(G(x,z))是GAN中鉴别器D对所述对抗特征映射向量G(x,z)的预测结果。
为了训练生成器G,可以通过最小化LG。这样可以降低鉴别器D预测的概率。由于鉴别器D试图拟合黑盒检测器f,对生成器G的训练将进一步欺骗黑盒检测器f。
在生成器G的损失函数中,含有鉴别器D的输出预测结果,这也就是生成器和鉴别器是相互博弈的关系,两者相互联系,相互制约。
S2:将S1中得到的对抗特征映射向量G(x,z)和良性PE文件的初始特征映射向量Y一并输入至GAN的鉴别器D和黑盒探测器f,所述黑盒探测器f对初始特征映射向量Y的预测结果用来对鉴别器D进行拟合,目的是希望鉴别器D的输出跟良性文件的特征更加接近;所述鉴别器D对G(x,z)的预测结果反馈至所述生成器G中,所述鉴别器D的损失函数为:
LD=Eg∈G(x,z)H(D(g),f(g))+Ey∈YH(D(y),f(y)) (2)
其中,g表示所述对抗特征映射向量G(x,z)的某一元素,D(g)表示鉴别器D对g的预测结果,f(g)表示黑盒探测器f对g的预测结果,y表示良性PE文件的初始特征映射向量Y的某一元素,D(y)表示鉴别器D对y的预测结果,f(y)表示黑盒探测器f对y的预测结果;H(a,b)表示参数a与b距离度量函数,H(a,b)=|a-b|;本发明中H(D(y),f(y))=|D(y)-f(y)|,在实际应用中可根据需要自行设置此函数。
为了训练鉴别器D,可以最小化LD,这样可以使鉴别器D更好的拟合黑盒检测器f,同时推动生成器G生成混淆度更高的样本来混淆鉴别器D。
生成器和鉴别器是相互博弈的关系,两者要经过多次迭代才能达到平衡,每次迭代,f和D会为每个输入分配相应的预测结果,即输出信号,使用f产生的预测结果去拟合D,使D的决策尽可能接近f。随着D与f相似度的提高,G对f的对抗攻击能力也会提高。
S1和S2其实是相互关联、相互嵌套的,生成器G和鉴别器D是相互博弈的,这就需要为S2的鉴别器D设置一个初值,以适应生成器G的初次使用。
S3:判断所述生成器G和所述鉴别器D的损失函数是否收敛,如果达到收敛状态,停止迭代,由生成器G输出对抗特征向量G(x,z)并无重复的保存成对抗特征库;否则继续迭代。
通过上述步骤得到跟初始特征映射向量长度一样的对抗特征映射向量,再将对抗特征映射向量跟初始特征库做比对式操作,比如对抗特征映射向量为1110,那么就按照初始特征库中检索码,提取得到相应检索码的特征作为对抗特征,并无重复的保存所有对抗特征生成对抗特征库。
步骤3、参照所述对抗特征库,利用进化算法对上述训练用恶意PE文件进行对抗性修改,得到对抗性修改文件集。
3.1)生成修改文件种群:首先随机生成n个基因组序列,这些基因组序列的长度是修改恶意PE文件常用操作的数量,比如常用的修改操作为10种,那么基因组序列的长度就位10。序列的每一位代表一种修改操作,用0和1来代表是否采用该操作对文件进行修改,1代表采用,0代表不采用。然后,再参照基因组序列来对恶意PE文件进行修改。
假设对恶意PE文件进行修改的所有操作为:{Overlay Append,Section Append,Section Add,Section Rename,Remove Certificate},数量为5,随机生成某一长度为5基因组序列为10110,那么参照该基因组序列对文件进行的修改操作便为:{Overlay Append,Section Add,Section Rename}。
而各种操作都是利用上述步骤得到的对抗特征库中的特征来进行的。比如,需要进行的修改操作为:Section Add,那么就在对抗特征库中随机挑选一个Section name添加到恶意PE文件中。其余操作按照这种逻辑进行即可,最后得到n个修改后的恶意PE文件。
3.2)选择操作:计算步骤3.1)中得到的n个修改后的恶意PE文件的适应度,根据适应度的大小利用锦标赛方法选择策略选择参与进一步进化的文件。
本发明中文件的适应度是采用random forest评价模型得到的恶意性评分。假设修改后的恶意PE文件为a,f(a)表示采用random forest评价模型对恶意PE文件的恶意性评分,f(a)的取值范围为[0,1],f(a)的值越小,说明该文件被修改的质量就越好,就越容易被挑选出来进行进一步操作。
锦标赛方法选择策略:每次随机从种群中取出一定数量个体(每个个体入选的概率相同),然后选择其中最好的一个进入子代种群。重复该操作,直到新的种群规模达到原来的种群规模。
本发明中设定每次选择的个体数量为2,即每次随机从上面修改后的文件中挑选出2个(每个文件入选的概率相同)构成一组,计算每个文件的适应度值,选择其中适应度值最好的保存为子代种群;重复该操作,直到得到的文件可以构成新一代种群,亦即得到n个文件为止。
将得到的这n个文件进行下一步操作。
3.4)交叉和突变操作:对上一步挑选出的文件,选择合适交叉率和突变率,进行交叉和突变操作。
3.5)判断是否到达预定的遗传代数,如果是,结束迭代,输出适应度在(0,0.2)区间内的修改后的恶意PE文件,得到对抗性修改文件集;否则,返回3.2。
步骤4、利用静态检测模型对步骤3中得到的对抗性修改文件集进行筛选,选择出被分类器标记为良性的文件作为规避样本集。
本发明中使用的静态检测模型为MalConv。在实际应用中可选择其他合适的检测模型。
步骤5、对上述规避样本集进行恶意功能验证,将保留训练用恶意PE文件功能的规避样本作为恶意代码对抗样本文件进行输出。
本步使用Cuckoo sandbox来进行恶意功能验证,其验证公式为:
其中,B表示训练用恶意PE文件的恶意行为,num(B)表示训练用恶意PE文件恶意行为的数量,Beva表示步骤4得到的规避样本的恶意行为,hits(B,Beva)表示训练用恶意PE文件与规避样本之间相同的恶意行为,sim(B,Beva)表示两者之间恶意行为的相似度。
sim(B,Beva)的取值范围为0~1,当sim(B,Beva)>0.6时,认为训练用恶意PE文件与规避样本之间有相同的恶意功能,即规避样本保留了训练用样本的功能,那么选择保存下来作为最后的输出。
比如,我们最初选定了一个恶意PE文件和一个良性PE文件进行训练。通过步骤1提取两个文件的Section names特征和Import function特征,无重复的保存10个特征,组成初始特征库;再将这两个文件与初始特征库进行存在性映射,得到各自的初始特征映射向量x(恶意PE文件的初始特征映射向量)和y(良性PE文件的初始特征映射向量),将x和y输入到生成式对抗网络GAN,经过生成器G和鉴别器D相互博弈后得到对抗特征映射向量g;将此向量与步骤1中的初始特征库做对应性映射,得到8个对抗特征并无重复的保存生成对抗特征库。
接着,利用进化算法对恶意PE文件进行对抗性修改,随机生成20个长度为5的基因组(即假设常用的修改操作为5种),按照这20个基因组修改恶意PE文件,得到20个修改后的文件,对这些修改后的文件进行基于锦标赛算法的选择操作,再进行交叉和突变操作,生成下一代种群,如此迭代。整个算法过程迭代60次后停止,得到20个文件组成的对抗性修改文件集,计算这些文件的适应度,选择8个适应度在(0,0.2)区间内的修改后的恶意PE文件,得到对抗性修改文件集;。
利用静态检测模型这8个对抗性修改文件进行筛选,选出5个作为规避样本集。
再对上面5个规避样本进行恶意功能验证,留下2个满足条件的规避样本文件作为恶意代码对抗样本文件输出。
在实际应用中,为了提高效率,可以一次选用较多的恶意PE文件和良性PE文件,即可以采用文件集的形式进行,这样使得处理效率更高。各个步骤中的参数、阈值等都可以自由选择设定。
利用VirusTotal上4个具有代表性的基于机器学习的恶意代码检测引擎(ClamAV,Antiy-AVL,Cylance,Ad-Aware)对本方法生成的对抗样本进行验证,每个检测引擎的逃逸率均可达到20%以上,最高可以达到50%,说明有较为优秀的表现,可应用于实际生产中。
本方法还可以优选恶意代码检测得分在0.9以上的恶意PE文件、检测得分在0.1以下的良性PE文件作为训练用文件,即选择的两种文件的良性和恶性比较分明,这样就可以更加保证训练的有效性,同时在生成对抗样本时更具说服性。
本发明可以自动的生成恶意代码对抗样本,在不改变样本原始动态行为的条件下,通过对抗性修改,使基于机器学习的恶意代码检测模型对生成的恶意代码对抗样本做出错误判定,同时还可以绕过商用恶意代码检测引擎。
本发明能够人工调整训练参数,调控系统训练方式,有效提升了生成对抗样本的真实性、高效性以及模型对抗评估的准确性。