远控木马是一种恶意软件, 攻击者可使用远控木马对目标计算机进行远程控制, 访问目标主机文件系统收集信息, 并利用目标主机进一步展开攻击行为。高级远控木马通常具有潜伏性和隐藏性, 能够长期驻留在目标主机中, 并绕过反病毒引擎查杀进行隐蔽运行而不被发现。
针对Linux平台病毒木马的检测问题, 反病毒软件的常用方法主要包括静态分析和行为分析2种。静态分析的优势在于分析速度快, 但检测结果容易受到代码混淆技术的影响, 而行为分析会在文件执行期间收集行为信息并进行分析, 其能够有效解决代码混淆问题, 但往往需要消耗较长时间, 在恶意行为触发之后才能判断出恶意文件。
目前, 深度学习技术在图像分类和文本识别领域得到广泛应用[1-2], 其通过多层神经网络结构与大量的参数调节, 对样本的特征进行逐层抽取。本文结合静态分析和动态检测2种方法, 提取Linux样本数据, 利用深度学习算法循环神经网络(Recurrent Neural Network, RNN)训练模型, 预测输入文件是否为恶意文件。将检测模型的预测结果与常见的机器学习算法, 如支持向量机(Support Vector Machine, SVM)[3]、K-近邻(K-Nearest Neighbor, KNN)算法[4]、决策树(Decision Tree, DT)[5]和随机森林(Random Forest, RF)算法[6]相比较, 并使用混淆矩阵来分析机器学习算法的性能。
1 相关工作常见的病毒木马检测方法主要包括静态分析和基于行为分析的动态检测。静态分析通过提取文件特征并与已知特征库进行对比分析, 从而判断该文件是否为恶意文件, 其分析速度较快, 但特征误报率较高, 并且很难分析混淆后的文件。文献[7]使用代码特征结合深度前馈神经网络将恶意软件与安全软件进行区分, 其真正率达到95.2%。然而, 在使用由某个日期之前的样本数据训练出的模型来检测该日期之后的数据时, 该方法的真正率下降至67.7%, 表明静态分析的方法对于全新且未知的恶意软件的检测效果较差。文献[8]证明了使用静态数据训练的模型的准确率约为95%, 但对经过重新打包的恶意样本检测的准确率下降至20%。
基于行为分析的动态检测方法弥补了静态分析方法的不足, 其通过监控文件执行时的行为, 分析其系统调用、文件操作和网络连接等行为, 进而判断文件是否存在恶意行为。文献[9]使用RNN提取5 min内API调用序列特征, 将其反馈给卷积神经网络(Convolutional Neural Network, CNN)以获得具有170个样本的数据集, 该方法的模型评估指标AUC分值高达0.96。文献[10]采用RF算法, 使用API调用和相关元数据作为训练集, 其准确率和F1值分别达到97%和98%。动态检测方法在一定程度上提高了病毒木马的检测率, 但其分析时间较久, 具有滞后性, 且在触发恶意行为后才能判断出恶意文件。
本文结合上述2种方法, 利用深度学习算法RNN训练分类检测模型, 并通过超参数配置来优化模型性能。
2 模型设计本节将详细介绍检测模型的基本框架与算法结构, 给出具体的样本分析方法和所选特征集, 并说明超参数配置的选择方法。
2.1 整体设计Linux远控木马检测模型的整体框架如图 1所示。模型首先对样本进行静态分析和行为分析, 提取相应的静态数据以及行为数据。在特征学习模块中, 采用RNN算法, 结合k-折交叉验证并使用随机参数空间配置超参数循环训练模型, 在随机超参数中最终选择训练期间效果较优的超参数配置, 最后输出模型。
![]() |
Download:
|
图 1 检测模型整体框架 Fig. 1 Overall framework of detection model |
样本分析技术[11]分为3个部分:文件和元数据分析, 静态分析, 动态分析。
1) 文件和元数据分析。文件和元数据分析侧重于文件本身, 提取操作系统运行ELF文件时所需的字段信息。首先, 过滤掉与分析无关的文件, 例如共享库、核心转储损坏的文件或为其他操作系统设计的可执行文件; 其次, 利用获取到的文件信息来识别异常文件结构; 最后, 从VirusTotal中提取每个样本的AV标签并将其提供给AV类工具[12]以获取恶意软件的标准化名称。
2) 静态分析。静态分析阶段包含二进制代码分析和打包检测2个部分。二进制代码分析依赖于众多自定义的IDA Pro脚本来提取多个代码指标[13], 包括函数数量、环路复杂度、整体覆盖范围以及是否存在重叠指令等; 打包检测将从ELF头部提取的信息与二进制代码分析相结合, 以识别可能的打包程序。
3) 动态分析。动态分析包含2种类型的行为分析:在仿真器中执行5 min以及常规的打包分析和解包尝试。对于仿真, 采用2种类型的动态沙箱, 即基于KVM的虚拟沙箱以及一组基于QEMU的仿真沙箱。对于监听, 主要采用SystemTap[14]来实现内核探测器(kprobes)和用户探测器(uprobes)。在执行结束时, 每个沙箱都返回一个文本文件, 其中包含系统调用和用户空间函数的完整跟踪, 然后立即解析此跟踪以识别沙箱的有用反馈信息。
样本分析具体流程如图 2所示。
![]() |
Download:
|
图 2 样本分析具体流程 Fig. 2 Specific procedure of sample analysis |
经过样本分析后得到json文件形式的分析数据, 将json文件中的数据进行清理, 使用逐步回归方法检查最重要的预测变量, 本文最终采用46个变量用于训练机器学习和深度学习模型, 并将数据保存至csv文件中形成数据集。所选变量详细信息如表 1~表 4所示, 其中, 表 1为字节部分特征变量, 表 2为ELF部分特征变量, 表 3为Funcover部分特征变量, 表 4为其他部分特征变量。
![]() |
下载CSV 表 1 字节部分变量描述 Table 1 Byte part variable description |
![]() |
下载CSV 表 2 ELF部分变量描述 Table 2 ELF part variable description |
![]() |
下载CSV 表 3 Funcover部分变量描述 Table 3 Funcover part variable description |
![]() |
下载CSV 表 4 其他部分变量描述 Table 4 Other variable description |
为了提高检测模型的泛化能力, 同时更准确地评估模型的性能, 本文对数据集采用k-折交叉验证[15]方法构造训练集。k-折交叉验证指将样本数据集随机划分为k个相同大小的子集, 在每次模型训练迭代过程中, 按顺序选取其中的一个子集作为测试集, 剩下的k-1个子集作为训练集。本文取k=10, 即将数据集分为10份, 每次取其中9份进行训练, 根据损失函数(用来评估预测值与实际值的差距)进行优化后执行下一次迭代。
2.5 循环神经网络RNN算法[16]是一种基于时序关系的深度学习算法, 具体表现形式为:网络会记忆前面的信息并将其应用于当前输出的计算中, 即隐藏层之间的节点存在连接, 并且隐藏层的输出不仅包括输入层的输出还包括上一时刻隐藏层的输出, 因此, RNN具有一定的记忆性。
典型的RNN结构如图 3所示, RNN会结合每一个时刻的输入与当前模型的状态从而给出一个输出, 从图 3可以看出, RNN主体结构A的输入除了来自输入层的xt, 还会接收前一时刻的状态, 同时A的状态也会从当前步传递到下一步。
![]() |
Download:
|
图 3 RNN的典型结构 Fig. 3 Typical structure of RNN |
RNN能有效处理序列数据, 为了深层挖掘静态数据以及行为数据前后依赖关系的特征, 本文模型采用RNN中的门控循环单元(Gated Recurrent Unit, GRU)神经网络[17]。GRU通过“门”结构使信息有选择性地影响RNN中每个时刻的状态。“门”结构使用sigmoid(激活函数)的神经网络和一个按位做乘法的操作, 如图 4所示, GRU有更新门与重置门2个门, 上述结构使得GRU神经网络能够解决序列数据中存在的长期依赖问题, 且具有参数少、收敛快的优势。
![]() |
Download:
|
图 4 GRU结构 Fig. 4 Structure of GRU |
本文采用随机搜索参数的方法进行超参数配置, 随机搜索从可能的参数组合中随机选择配置, 通过使用相对权重值的字典对偏置参数进行选择。随机搜索将一直循环运行, 默认选择轮数为100轮, 超参数配置随机搜索空间如表 5所示。
![]() |
下载CSV 表 5 超参数配置随机搜索空间表 Table 5 Random search space table of hyperparameters configuration |
本文所使用的数据集来自文献[18], 该数据集从Padawan[19]多架构ELF分析在线平台中获取, 并将得到的Linux样本分析数据清理成多个重要值, 最终将数据保存至csv文件中。
利用Padawan平台可通过Linux样本哈希值的URL访问到json格式的分析报告, 哈希值列表可在平台上获取。平台提供的数据集[11]除了包含僵尸网络中的Linux恶意攻击样本, 还包含数千个属于其他类别的样本, 例如远控木马、后门、勒索软件、传统文件感染、权限提升工具、Rootkit、蠕虫、APT活动中使用的RAT程序以及基于CGI的二进制文件webshells等。
文献[18]在Padawan平台上获得了10 548个json格式的样本数据, 并将json文件中的数据进行清理整合, 过滤NA值过大的数据, 将json文件转换成csv格式的文件。在此基础上, 本文将几款开源Linux远控工具生成的有效负载上传至Padawan平台中进行分析, 包括Meterpreter生成编码混淆的Payload、Stitch Payload、TheFatRat Payload、Pupy Payload和PyIris Backdoor Payload等, 获取其静态以及行为数据, 并将数据添加到数据集中。最终数据集共包含5 518个样本, 其中, 3 983个是恶意样本, 1 535个是安全样本。
3.2 评估指标为了对检测模型进行分析, 本文选取准确率(ACC)和F1值[20]2个评估指标, 如式(1)和式(2)所示:
$ {{\rm{ACC}} = \frac{{{T_P} + {T_N}}}{{{T_P} + {T_N} + {F_P} + {F_N}}}} $ | (1) |
$ {{\rm{F}}1 = \frac{{2{T_P}}}{{2{T_P} + {F_P} + {F_N}}}} $ | (2) |
其中, F1值是综合考虑查准率和查全率的指标, TP是将正类预测为正类的数量, TN是将负类预测为负类的数量, FP是将负类预测为正类的数量, FN是将正类预测为负类的数量。
3.3 参数选择本文在随机搜索空间中循环训练检测模型, 随机选择100种参数配置, 经过训练对比, 最终选择评估指标结果最好的超参数配置, 如表 6所示。
![]() |
下载CSV 表 6 随机搜索空间中最优超参数配置 Table 6 Optimal hyperparameters configuration in random search space |
本文实验计算机配置为双核8 GB内存, Intel Core i5处理器, 计算机型号为Macbook Pro 2015版, 操作系统为macOS 10.14.2版本。在模型搭建阶段, 采用TensorFlow作为神经网络框架, python使用2.7.15版本, R语言采用3.5.3版本。在参数设置方面, 使用随机搜索空间中100种超参数配置, 并使用k-折交叉验证, k值取10, 每种参数配置训练轮数为10轮。此外, 为了提升训练速度并防止过拟合现象, 模型采用dropout方法, 丢弃率使用[0.1, 0.2, 0.3, 0.4, 0.5]中的随机值[21]。在随机搜索空间中选择评价指标结果最优的超参数配置重新进行模型训练, 训练轮数为30轮。
3.5 结果分析在100轮不同超参数配置的模型训练过程中, 若某一轮次采用的参数配置评估指标未超过在此之前的轮次结果, 则放弃此轮参数直接进行下一轮参数配置训练。最终挑选出其中最优的参数配置(表 6), 使用此超参数配置再次进行模型训练, ACC和F1值最高分别达到92.64%和95.20%。图 5所示为本文模型在表 6参数配置下的ACC值和F1值。
![]() |
Download:
|
图 5 最优超参数配置下的评估结果 Fig. 5 Evaluation results under optimal hyperparameter configuration |
为了验证RNN算法训练出的检测模型的整体性能, 将RNN训练出的模型与不同的机器学习算法进行比较, 其中, 机器学习算法包括决策树中的CART算法、RF算法、SVM算法和KNN算法。所有机器学习算法的训练和测试数据都相同, 以便准确地进行比较, 采用ACC和F1值2个评价指标来对比算法, 表 7所示为RNN与机器学习算法的性能比较结果。
![]() |
下载CSV 表 7 RNN与机器学习算法的性能比较结果 Table 7 Performance comparison results of RNN and machine learning algorithms |
在表 7中, RNN为100种随机超参数配置中的最优选择, 可以看出, 其准确率和F1值略优于CART和SVM, 但是整体表现不如RF算法。RNN-BP为在Linux数据集上执行更多轮次随机搜索得到的全局超参数最优配置, 该配置下RNN的准确率为95.72%, F1值为97.41, 相比100种随机超参数配置下的结果提高了2个~3个百分点, 且检测性能优于RF算法。
4 结束语混淆编码技术可绕过大部分反病毒系统的静态恶意软件检测, 动态分析方法虽然能克服静态分析的不足, 但其会耗费较多时间。本文使用Linux样本静态与动态分析中所提取的大量数据, 通过深度学习算法RNN训练检测模型。该模型可以用于预测Linux恶意攻击(包括Linux远控木马、Linux后门、Rootkit等), 准确率为92.64%, F1值为95.20%。下一步将针对Linux远控木马检测问题, 寻找更优的深度学习神经网络结构(如LSTM等), 丰富训练数据并提高模型的泛化能力, 以加快训练速度并降低过拟合的可能性。
[1] |
MAHENDRAN A, VEDALDI A.Understanding deep image representations by inverting them[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.Washington D.C., USA: IEEE Press, 2015: 5188-5196.
|
[2] |
DENG L. Deep learning:methods and applications[J]. Foundations and Trends in Signal Processing, 2014, 7(3/4): 197-387. |
[3] |
VISHWANATHAN S V M, MURTY M N.SSVM: a simple SVM algorithm[C]//Proceedings of 2002 International Joint Conference on Neural Networks.Washington D.C., USA: IEEE Press, 2002: 2393-2398.
|
[4] |
ZHANG M L, ZHOU Z H. ML-KNN:a lazy learning approach to multi-label learning[J]. Pattern Recognition, 2007, 40(7): 2038-2048. |
[5] |
SAFAVIAN S R, LANDGREBE D. A survey of decision tree classifier methodology[J]. IEEE Transactions on Systems, Man, and Cybernetics, 1991, 21(3): 660-674. |
[6] |
LIAW A, WIENER M. Classification and regression by random forest[J]. R News, 2002, 2(3): 18-22. |
[7] |
SAXE J, BERLIN K.Deep neural network based malware detection using two dimensional binary program features[C]//Proceedings of 2015 International Conference on Malicious and Unwanted Software.Washington D.C., USA: IEEE Press, 2015: 11-20.
|
[8] |
GROSSE K, PAPERNOT N, MANOHARAN P, et al.Adversarial examples for malware detection[C]//Proceedings of European Symposium on Research in Computer Security.Berlin, Germany: Springer, 2017: 62-79.
|
[9] |
TOBIYAMA S, YAMAGUCHI Y, SHIMADA H, et al.Malware detection with deep neural network using process behavior[C]//Proceedings of 2016 IEEE Annual Computer Software and Applications Conference.Washington D.C., USA: IEEE Press, 2016: 577-582.
|
[10] |
TIAN R, ISLAM R, BATTEN L, et al.Differentiating malware from cleanware using behavioural analysis[C]//Proceedings of 2010 International Conference on Malicious and Unwanted Software.Washington D.C., USA: IEEE Press, 2010: 23-30.
|
[11] |
COZZI E, GRAZIANO M, FRATANTONIO Y, et al.Understanding Linux malware[EB/OL].[2019-04-20]. http://www.s3.eurecom.fr/docs/oakland18_cozzi.pdf.
|
[12] |
MARCOS S, RIVERA R, KOTZIAS P, et al.AVclass: a tool for massive malware labeling[C]//Proceedings of International Symposium on Research in Attacks, Intrusions, and Defenses.Berlin, Germany: Springer, 2016: 263-276.
|
[13] |
WANG Xiajing, HU Changzhen, MA Rui, et al. A survey of the key technology of binary program vulnerability discovery[J]. Netinfo Security, 2017(8): 1-13. (in Chinese) 王夏菁, 胡昌振, 马锐, 等. 二进制程序漏洞挖掘关键技术研究综述[J]. 信息网络安全, 2017(8): 1-13. |
[14] |
Systemtap[EB/OL].[2019-04-20]. https://sourceware.org/systemtap.
|
[15] |
WU Di, FANG Binxing, CUI Xiang, et al. BotCatcher:botnet detection system based on deep learning[J]. Journal on Communications, 2018, 39(8): 18-28. (in Chinese) 吴迪, 方滨兴, 崔翔, 等. BotCatcher:基于深度学习的僵尸网络检测系统[J]. 通信学报, 2018, 39(8): 18-28. |
[16] |
WANG Guihuai, ZHONG Cheng, CHU Xiumin, et al. Ship trajectory restoration method based on BLSTM-RNN[J]. Journal of Chongqing Jiaotong University(Natural Sciences), 2019, 38(10): 7-12, 67. (in Chinese) 王贵槐, 钟诚, 初秀民, 等. 基于BLSTM-RNN的船舶轨迹修复方法[J]. 重庆交通大学学报(自然科学版), 2019, 38(10): 7-12, 67. |
[17] |
RUI F, ZUO Z, LI L.Using LSTM and GRU neural network methods for traffic flow prediction[C]//Proceedings of Youth Academic Conference of Chinese Association of Automation.Washington D.C., USA: IEEE Press, 2017: 266-276.
|
[18] |
RHODE M, BURNAP P, JONES K. Early-stage malware prediction using recurrent neural networks[J]. Computers & Security, 2018, 77: 578-594. |
[19] |
NATHANLOPE Z.Python remote administration tool[EB/OL].[2019-04-20]. https://github.com/nathanlopez/Stitch.
|
[20] |
HUANG Wenming, MO Yang. Chinese spam message filtering based on text weighted KNN algorithm[J]. Computer Engineering, 2017, 43(3): 193-199. (in Chinese) 黄文明, 莫阳. 基于文本加权KNN算法的中文垃圾短信过滤[J]. 计算机工程, 2017, 43(3): 193-199. |
[21] |
FANG Yong, ZHU Guangxiatian, LIU Luping, et al. Research on browser Fuzz sample generation technology based on deep learning[J]. Netinfo Security, 2019, 19(3): 26-33. (in Chinese) 方勇, 朱光夏天, 刘露平, 等. 基于深度学习的浏览器Fuzz样本生成技术研究[J]. 信息网络安全, 2019, 19(3): 26-33. |