Method for Generating Malicious Code Adversarial Samples Based on Genetic Algorithm
-
摘要: 机器学习已经广泛应用于恶意代码检测中,并在恶意代码检测产品中发挥重要作用。构建针对恶意代码检测机器学习模型的对抗样本,是发掘恶意代码检测模型缺陷,评估和完善恶意代码检测系统的关键。该文提出一种基于遗传算法的恶意代码对抗样本生成方法,生成的样本在有效对抗基于机器学习的恶意代码检测模型的同时,确保了恶意代码样本的可执行和恶意行为的一致性,有效提升了生成对抗样本的真实性和模型对抗评估的准确性。实验表明,该文提出的对抗样本生成方法使MalConv恶意代码检测模型的检测准确率下降了14.65%;并可直接对VirusTotal中4款基于机器学习的恶意代码检测商用引擎形成有效的干扰,其中,Cylance的检测准确率只有53.55%。Abstract: Machine learning is widely used in malicious code detection and plays an important role in malicious code detection products. Constructing adversarial samples for malicious code detection machine learning models is the key to discovering defects in malicious code detection models, evaluating and improving malicious code detection systems. This paper proposes a method for generating malicious code adversarial samples based on genetic algorithms. The generated samples combat effectively the malicious code detection model based on machine learning, while ensuring the consistency of the executable and malicious behavior of malicious code samples, and improving effectively the authenticity of the generated adversarial samples and the accuracy of the model adversarial evaluation are presented. The experiments show that the proposed method of generating adversarial samples reduces the detection accuracy of the MalConv malicious code detection model by 14.65%, and can directly interfere with four commercial machine-based malicious code detection engines in VirusTotal. Among them, the accuracy rate of Cylance detection is only 53.55%.
-
Key words:
- Malware detection /
- Machine learning /
- Adversarial sample
-
1. 引 言
电子信息类产品广泛存在于人类点点滴滴的生活中,成为人们生活中不可或缺的组成部分[1]。集成电路作为电子信息类产品的基本单元,随着其向小体积、高密度、高开关速度等方向的快速发展,其在电子信息类产品的组成中发挥着越来越重要的作用,同时带来的电磁兼容性问题也越来越突出。其中,静电放电对电子产品的危害是很大的,它能在瞬间达到几千伏,对集成电路来说有时候是毁灭性的。因此,集成电路静电放电防护研究越来越备受关注[2,3]。
静电放电是指带电体周围的场强超过周围介质的绝缘击穿场强时,因介质电离而使带电体上的静电荷部分或全部消失的现象。静电放电过程往往会产生瞬时脉冲大电流,其强度可达到几十安培甚至上百安培,属于瞬态干扰类型。集成电路静电放电研究由来已久[4,5],目前在测试、建模等方面均已形成了很多标准[6,7]。同时,在建模、测试、防护等方面的研究[3-5,8,9]层出不穷,不断推进集成电路静电放电防护工作的进展。根据静电放电产生的方式、上升时间、衰减时间以及峰值电流等因素,将其主要划分为几种放电模式:人体模型、机器模型、人体金属模型、组件充电模型、家具模型等,以上模型能够确定失效等级。
另外,随着集成电路工艺水平的不断提升,集成度、小型化、高速度以及应用场景的电磁环境复杂性逐渐提升,集成电路更易受到静电放电干扰的影响,从而使得研究者也不断面临新的挑战。
但是研究静电放电还需要细节,传输线脉冲(Transmission Line Pulse, TLP)测试模型和技术因其可靠、可重复、过程参数能够被观察和记录等特点,被器件级静电放电特性研究广泛采用。TLP是研究静电放电防护公认的有效手段[7,10]。随着TLP测试技术的不断提升,应用TLP解决静电放电问题的研究[11,12]不断涌现。其中,研究者在证明静电放电测试方法和传输线脉冲测试方法结果之间的等效性或相关性方面有较多研究[13-15]。应用TLP技术在集成电路静电放电防护方面也有不少感兴趣的研究者[2]。基于传输线脉冲测试的各种仿真模型也已经被提出并不断改进。其中,分段线性模型由Ralph Santoro[16] 于1995年首次提出,并由Austermann等人[17]作为4种仿真模型之一进行了更为详细的介绍,但是他们所描述的分段线性模型不够完善,有一定的改进空间。
瞬态电压抑制(Transient Voltage Suppression, TVS)二极管是集成电路在进行静电放电防护时,最常采用的防护器件之一。TVS二极管作为防护器件使用时,通常采用两个方式应用到集成电路:一是片外防护,也就是将TVS二极管应用到芯片引脚回路远端;二是片内防护,也就是将TVS二极管直接集成在芯片内部。经过研究者的不断努力,TVS二极管在性能的设计和提高方面不断进步[18,19]。并且,更多的研究致力于应用TVS二极管进行集成电路片上或者片外的防护工作上,如芯片应对瞬态干扰的防护器件建模仿真[20,21]以及防护效果研究[22-25]等。
黄薇等人[20]对该器件在高电压大电流下的反向工作特性建模,在Matlab中利用所建模型仿真,来预测TVS二极管瞬态电压抑制时的电特性。周月宾等人[21]通过PSCAD/EMTDC自身提供的二极管,复合等值模型,有效解决了换流器闭锁、解锁行为的精确模拟问题。张杨等人[26]提出了TVS冲击电压模型,研究了抑制冲击电压措施,有效解决了TVS本身的寄生参数对ESD防护特性的影响。现有研究多为针对防护器件本身的建模仿真和性能提高的研究。Maghlakelidze等人[24]使用TLP测试手段研究了瞬态电压抑制器件对集成电路的防护效果。Zeng等人[25]证明了使用基于瞬态电压抑制器(TVS)二极管的电路在高功率微波(HPM)脉冲下的保护效果。同样是通过测试手段实现防护效果研究。陈强等人[27]依据IEC61000-4-2 ESD应力作用下完成了一款开关芯片防护电路的仿真。由此可见,当前在芯片防护效果研究方面,大多使用实测手段对防护效果开展验证,目前尚未发现应用仿真方法实现基于TLP的集成电路防护研究以及相关的仿真模型。
综上所述,国内外针对瞬态干扰的测试多以ESD等级测试为主,来判断器件是否能承受该级别的干扰,各等级之间的差异很大,缺乏对器件损毁的精确判据。而且,当前针对防护器件的选型和使用主要根据数据手册和工程经验,缺乏对基于器件实测数据的精准把握和精确的防护方法,容易出现过保护或欠保护现象。
因此,本文通过芯片在TLP应力作用下的伏安特性数据,构建了基于实测TLP数据的瞬态干扰模型,并建立了TVS防护器件的等效电路模型,提出了芯片的协同防护设计方法。本文精确地获取了器件的损毁阈值,实现了基于实测数据的精确协同防护设计。
2. 基于TLP测试的芯片分段线性建模方法
基于TLP测试芯片的分段线性建模是以对芯片的TLP测试获得的I-V数据为基础,对其进行近似线性分段后,进行模型的建立。根据分段线性建模方法,近似线性的线段一方面可以通过观察其线性程度,另一方面也可以通过观察I-V曲线的数据判断其线性程度来进行近似线性线段的选取。选取的每一个线段都需要具备近似线性的特点,从仿真成本的角度考虑近似线性线段的数量越少成本越低,但是从仿真精度的角度考虑近似线性线段的数量越多精度越高,因此结合自身对成本和精度的要求来选择合适的近似线性线段来进行仿真。
2.1 芯片的传输线脉冲测试
本文利用TLP自动测试系统,对型号为CD4001BE的芯片上的“B-Vss”回路也就是“输入到地”回路进行了TLP应力下的测试,获得了瞬态电压、瞬态电流、直流下的漏电流等数据。测试中所使用的传输线脉冲,其脉宽Pw=50 ns、上升沿和下降沿Tr =Tf =1 ns。其电压幅值自0.5 V开始,在0.5~445 V范围内逐渐增大,每一个TLP电压幅值都开展一次TLP应力测试。TLP自动测试系统向芯片CD4001BE“输入到地”回路自动发送一组脉冲串,同时监测瞬态电压、瞬态电流和漏电流等数据。当TLP电压幅值达到445 V时,所监测芯片CD4001BE“输入到地”引脚回路上的漏电流曲线出现的明显变化,证明芯片损毁,TLP测试停止,系统自动记录TLP脉冲应力下的相关参数。
本文还利用TLP自动测试系统,对型号为SN74LS04D的芯片的“A-GND”也是“输入到地”回路在100 ns脉冲宽度的TLP干扰下进行测试,并获得了该回路的I-V曲线数据。
2.2 芯片CD4001BE的分段线性建模
本文为了尝试构建分段线性模型,选取芯片CD4001BE“输入到地”回路在50 ns脉宽TLP作用下的I-V曲线,是芯片各回路在受到TLP干扰作用下比较典型的I-V曲线的形状。认真观察CD4001BE的“输入到地”回路通过在50 ns传输线脉冲干扰下获取的I-V曲线走势,选取7条(k1~k7)近似线性的线段作为构建I-V曲线模型的原始数据,并且这样能够满足本文尝试构建分段线性模型方法的目的,如图1所示。这7条近似线性线段共有8个拐点(P1~P8)也如图1所示。
在芯片CD4001BE“输入到地”回路在50 ns脉宽TLP作用下的I-V曲线,选取的8个拐点所对应的每一组瞬态电压和瞬态电流值如表1所示。所对应的电阻值是根据分段线性建模原理,利用每一组数据所对应的线段斜率进行计算得出的。
表 1 模型中的参数拐点 瞬态电压(V) 瞬态电流(A) 电阻(Ω) 0 0 0 – 1 31.8 0.050 1 634.730 5 2 44 0.429 –602.532 1 3 102 3.79 –14.941 7 4 113 4.34 2.743 231 5 125 4.88 2.222 222 6 136 5.31 3.359 173 7 75.1 6.69 –69.711 83 根据上述数据,构建了芯片CD4001BE“输入到地”回路在50 ns脉宽TLP作用下的I-V曲线的分段线性仿真模型,如图2所示,其中直流电流源为瞬态电流值,二端口网络为具有正阻二极管特性或者负阻二极管特性的网络,电阻值就是对应表1中的参数。
根据基于TLP测试的实际仿真模型进行仿真得到的仿真结果(红线)与TLP实际测试的结果(蓝线)进行比对,如图3所示,可以看出两条曲线基本吻合,说明该模型能够有效地模拟TLP测试得到的I-V曲线。
如果想要在更多细节上实现更好的吻合,提高拟合度,可增加更多级的电路进行模型的完善。
2.3 芯片SN74LS04D的分段线性建模
本文还选取了反相器芯片SN74LS04D的“1A_GND”“输入到地”回路在100ns脉冲宽度的TLP干扰下的I-V特性曲线,这是一种形状相对比较复杂的I-V曲线类型,来进一步验证模型的可行性。依据芯片CD4001BE上“输入到地”回路在50 ns脉冲宽度的TLP干扰下的上述建模方法,构建了反相器芯片SN74LS04D的“A_GND”也是“输入到地”回路在100 ns脉冲宽度的TLP干扰下的I-V特性仿真模型。
如图4所示两个结果可以看出,基于器件分段线性建模仿真方法,构建反相器芯片SN74LS04D的“输入到地”回路在100 ns脉冲宽度的TLP干扰下的模型仿真以后,仿真与实测数据拟合效果很好,说明该方法具有很强的通用性,可用于后续的协同防护仿真设计中。
3. 基于等效电路的TVS二极管建模方法
本节的模型主要以文献[28]中的稳压二级管的等效电路(如图5所示)为基础,并对其进行改进来开展本研究中TVS管的建模方法研究。
TVS二极管在防护时一般是与被保护器件并联连接,这样当TVS二极管的两端受到反向瞬态高能量冲击时,能在极快(纳秒量级)的时间内将两端的电压钳制在一个预定范围,能够有效地保护集成电路中的精密器件,使其免遭损坏,其伏安特性主要包括正向偏置区、反向电流区、击穿后偏置区和电流限制区等4个区域。
3.1 TVS二极管SMDJ13A的建模
结合TVS二极管的等效电路,依据数据手册中TVS二极管的伏安特性,本节构建了TVS二极管SMDJ13A的仿真电路模型,如图6所示。
通过TVS二极管SMDJ13A的等效电路仿真得到的I-V曲线与基于TLP方法的实测数据比对如图7所示,可以看出两者有较好的拟合。
3.2 TVS二极管SMDJ40A的建模
依据TVS二极管等效电路,本节还构建了TVS二极管SMDJ40A的仿真电路模型。
通过TVS二极管SMDJ40A的等效电路仿真得到的I-V曲线与基于TLP方法的实测数据的比对如图8所示,可以看出两者有较好的拟合。
击穿电压参数是二极管器件I-V曲线中关键的拐点。器件SMDJ13A及SMDJ40A的DATASHEET中的数据、建模仿真结果以及测试结果I-V曲线中关键拐点参数击穿电压如表2所示。
表 2 TVS 二极管击穿电压参数对比(V)序号 TVS型号 数据手册的击穿
电压实测击穿
电压仿真击穿
电压1 SMDJ13A 14.4~15.9 16.31 16.57 2 SMDJ40A 44.1~49.1 47.8 47.52 从上述数据可以看出:防护器件TVS二极管SMDJ13A的击穿电压参数,实测和仿真结果相似,并且均略高于数据手册中的击穿电压范围;而防护器件SMDJ40A的实测和仿真的击穿电压值相似,且属于数据手册中击穿电压范围。由此可见,本文的实测结果、建模仿真结果与数据手册中的击穿电压参数略有差异,但基本相符,具备以此为基础继续后续研究的条件。
最大钳位电压参数是TVS二极管在防护设计中判断防护能力的重要参数。器件SMDJ13A及SMDJ40A的DATASHEET中的数据、建模仿真结果以及测试结果I-V曲线中最大电压参数如表3所示。
表 3 TVS 二极管最大钳位电压参数对比(V)序号 TVS型号 数据手册的
钳位电压实测钳位电压 仿真钳位电压 1 SMDJ13A 21.5 17.0 19.5 2 SMDJ40A 64.5 50.3 52.0 用户在使用数据手册给出的最大钳位电压值时,为了避免出现器件损坏或者降级风险,要考虑一定裕度。本文中的实测和仿真中的限制电压值均小于最大钳位电压值,这样的偏差不影响对其被保护电路可承受的瞬态安全电压的判断,因此对于芯片选型和防护设计均不会出现风险性影响。
4. 基于分段线性模型的芯片协同防护设计方法
为了模拟芯片在TVS二极管防护下应对静电放电干扰的情况,本文提出了基于分段线性模型的芯片协同防护设计方法。本文所提出的芯片协同防护设计方法就是将第2节和第3节所提出的两种类型的模型进行联合,模拟芯片在特定TVS二极管防护下的防护特性,这一方法预期可以有效地降低设计的时间和成本,提高防护设计方案的有效性。
4.1 芯片CD4001BE的协同防护设计
应用上述的芯片协同防护设计方法,本节以芯片CD4001BE“输入到地”回路为例,构建了芯片CD4001BE“输入到地”回路在50 ns脉宽TLP作用下在TVS二极管防护下的协同防护设计模型,如图9所示。
芯片CD4001BE的协同防护设计模型包括芯片本身在50 ns脉宽TLP干扰下的模型和TVS二极管等效电路模型。
经过多轮不同参数TVS二极管的迭代仿真,以及初步分析,选取钳位电压为13 V、型号为SMDJ13A的TVS二极管对CD4001BE的“B-Vss”回路进行防护,如图10。
通过进一步验证,所选取的TVS二极管在瞬态电压为16.8 V时开启防护,此时对CD4001BE的B-Vss回路在一定干扰范围内起到了防护的作用,将瞬态电压限制在17 V左右。当瞬态电压为16.8 V、瞬态电流为1.78 A的开启点之前,TVS二极管处于反向漏电区,芯片处于正常状态。当瞬态电压为16.8 V、瞬态电流为1.78 A之后直至瞬态电压为17.1 V、瞬态电流为11 A,TVS二极管处于击穿后偏置区,吸收了大电流,使电压稳定,因受到TVS二极管的防护,此时芯片仍处于正常状态。
4.2 芯片SN74LS04D的协同防护设计
应用上述的芯片协同防护设计方法,本节以芯片SN74LS04D“输入到地”回路为例,构建了芯片SN74LS04D“输入到地”回路在100 ns脉宽TLP作用下的协同防护设计模型。
芯片SN74LS04D的协同防护设计模型包括芯片本身在100 ns脉宽TLP干扰下的模型和TVS二极管等效电路模型。
经过多轮不同参数TVS二极管的迭代仿真,以及初步分析,选取钳位电压为40 V、型号为SMDJ40A的TVS二极管对SN74LS04D的“A-GND”回路进行防护。
如图11所示,芯片SN74LS04D“输入到地”回路在SMDJ40A防护下的协同防护仿真与实测的I-V曲线结果中,在瞬态电压为20 V左右之前产生了一定的偏差,之后差异逐渐减小并趋于吻合。由于芯片模型和TVS模型中均有电流源,导致它们在级联之后相互影响,出现了一定的差异。而这一差异不影响对TVS防护效果的判断。
TVS二极管的数据手册提供的参数值虽然具有参考性,但是也存在一定的偏差,而TVS二极管的正确选型对于芯片的防护是一个非常关键的因素。因此,通过协同防护设计方法具有必要性,它可以实现先行应用仿真的方法进行摸底提出选型建议,再进行实际测试验证,从而节约了设计时间和成本,进一步提高了防护的有效性。
5. 结束语
本文通过I-V特性曲线数据,构建了芯片“B-Vss”回路在TLP应力下的I-V特性模型。本文还基于数据手册数据构建了TVS二极管等效电路模型。同时,本文基于上述两个模型,提出了芯片的协同防护仿真设计建模方法,从而能够预先了解TVS防护方案的有效性,对TVS二极管的正确选型提供有效的帮助,降低了设计时间和解决成本。
致谢 感谢ESDEMC公司在TLP测试过程中提供的帮助。
-
表 1 PE文件改写原子操作
改写模块 改写内容 PE头文件 PE标志位修改 PE文件校验和修改 节表 导入表添加冗余导入函数 节表模块重命名 节表冗余信息填充 节表新模块添加 PE文件 加壳、脱壳操作 表 2 实验数据统计信息
样本 训练集 测试集 良性样本 7059 784 恶意样本 6593 732 总数 13652 1516 表 3 恶意代码检测引擎检测结果
评测样本集 良性样本误报 恶意样本误报 误报样本综述 模型检测准确率(%) 原始样本集 7 10 17 98.88 初代对抗样本集 37 9 46 96.97 优化后的对抗样本集 228 11 239 84.23 表 4 厂商产品的检测成功率
恶意代码检测引擎 误报样本数 检测逃逸率(%) Cylance 111 46.45 Endgame 43 17.99 Sophos ML 50 20.92 Trapmine 35 14.64 -
LANDAGE J and WANKHADE M P. Malware and malware detection techniques: A survey[J]. International Journal of Engineering Research & Technology, 2013, 2(12): 61–68. SAXE J and BERLIN K. Deep neural network based malware detection using two dimensional binary program features[C]. The 10th International Conference on Malicious and Unwanted Software (MALWARE), Fajardo, USA, 2015: 11–20. doi: 10.1109/MALWARE.2015.7413680. ARP D, SPREITZENBARTH M, HUBNER M, et al. Drebin: Effective and explainable detection of android malware in your pocket[C]. Network and Distributed System Security Symposium, San Diego, USA, 2014: 23–26. doi: 10.14722/ndss.2014.23247. RAFF E, SYLVESTER J, and NICHOLAS C. Learning the PE header, malware detection with minimal domain knowledge[C]. The 10th ACM Workshop on Artificial Intelligence and Security, Dallas, USA, 2017: 121–132. doi: 10.1145/3128572.3140442. RAFF E, ZAK R, COX R, et al. An investigation of byte n-gram features for malware classification[J]. Journal of Computer Virology and Hacking Techniques, 2018, 14(1): 1–20. doi: 10.1007/s11416-016-0283-1 Cylance Inc. What’s new in CylancePROTECT and CylanceOPTICS[EB/OL]. https://s7d2.scene7.com/is/content/cylance/prod/cylance-web/en-us/resources/knowledge-center/resource-library/briefs/Whats-New-CylancePROTECT-and-CylanceOPTICS.pdf, 2020. Sophos Inc. Sophos central migration tool articles, documentation and resources[EB/OL]. https://community.sophos.com/kb/en-us/122264#Product%20Information, 2020. 梁光辉, 庞建民, 单征. 基于代码进化的恶意代码沙箱规避检测技术研究[J]. 电子与信息学报, 2019, 41(2): 341–347. doi: 10.11999/JEIT180257LIANG Guanghui, PANG Jianmin, and SHAN Zheng. Malware sandbox evasion detection based on code evolution[J]. Journal of Electronics &Information Technology, 2019, 41(2): 341–347. doi: 10.11999/JEIT180257 GROSSE K, PAPERNOT N, MANOHARAN P, et al. Adversarial perturbations against deep neural networks for malware classification[J]. arXiv, 2016, 1606.04435. XU Weilin, QI Yanjun, and EVANS D. Automatically evading classifiers[C]. The 23rd Annual Network and Distributed System Security Symposium, San Diego, USA, 2016: 21–24. doi: 10.14722/ndss.2016.23115. HU Weiwei and TAN Ying. Generating adversarial malware examples for black-box attacks based on GAN[J]. arXiv, 2017, 1702.05983. HU Weiwei and TAN Ying. Black-box attacks against RNN based malware detection algorithms[C]. The Workshops of the 32nd AAAI Conference on Artificial Intelligence, New Orleans, USA, 2018. RAFF E, BARKER J, SYLVESTER J, et al. Malware detection by eating a whole exe[C]. The Workshops of the 32nd AAAI Conference on Artificial Intelligence, New Orleans, USA, 2018: 268–276. TOTAL V. VirusTotal-free online virus, malware and url scanner[EB/OL]. https//www.virustotal.com/en, 2012. PASCANU R, STOKES J W, SANOSSIAN H, et al. Malware classification with recurrent networks[C]. IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Brisbane, Australia, 2015: 1916–1920. doi: 10.1109/ICASSP.2015.7178304. KOLOSNJAJI B, ZARRAS A, WEBSTER G, et al. Deep learning for classification of malware system call sequences[C]. The 29th Australasian Joint Conference on Artificial Intelligence, Hobart, Australia, 2016: 137–149. doi: 10.1007/978-3-319-50127-7_11. HUANG Wenyi and STOKES J W. MtNet: A multi-task neural network for dynamic malware classification[C]. The 13th International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment, San Sebastián, Spain, 2016: 399–418. doi: 10.1007/978-3-319-40667-1_20. MANNING C D, RAGHAVAN P, and SCHÜTZE H. Introduction to Information Retrieval[M]. Cambridge: Cambridge University Press, 2008. HAN K S, LIM J H, KANG B, et al. Malware analysis using visualized images and entropy graphs[J]. International Journal of Information Security, 2015, 14(1): 1–14. doi: 10.1007/s10207-014-0242-0 KANCHERLA K and MUKKAMALA S. Image visualization based malware detection[C]. 2013 IEEE Symposium on Computational Intelligence in Cyber Security (CICS), Singapore, 2013: 40–44. doi: 10.1109/CICYBS.2013.6597204. LIU Xinbo, LIN Yaping, LI He, et al. A novel method for malware detection on ML-based visualization technique[J]. Computers & Security, 2020, 89: 101682. doi: 10.1016/j.cose.2019.101682 Skylight. Cylance, I kill you![ EB/OL]. https://skylightcyber.com/2019/07/18/cylance-i-kill-you/, 2019. MOHURLE S and PATIL M. A brief study of wannacry threat: Ransomware attack 2017[J]. International Journal of Advanced Research in Computer Science, 2017, 8(5): 1938–1940. doi: 10.26483/ijarcs.v8i5.4021 DANG Hung, HUANG Yue, and CHANG E C. Evading classifiers by morphing in the dark[C]. 2017 ACM SIGSAC Conference on Computer and Communications Security, Dallas, USA, 2017: 119–133. doi: 10.1145/3133956.3133978. 戚利. Windows PE权威指南[M]. 北京: 机械工业出版社, 2011: 67–68.QI Li. Windows PE: The Definitive Guide[M]. Beijing: Machinery Industry Press, 2011: 67–68. KOZA J R. Genetic Programming II: Automatic Discovery of Reusable Subprograms[M]. Cambridge, MA, USA: MIT Press, 1994: 32. Cuckoo Sandbox. Cuckoo Sandbox–Automated malware analysis[EB/OL]. http://www.cuckoosandbox.org, 2017. BANON S. Elastic endpoint security[EB/OL]. https://www.elastic.co/cn/blog/introducing-elastic-endpoint-security, 2019. Trapmine Inc. TRAPMINE integrates machine learning engine into VirusTotal[EB/OL]. https://trapmine.com/blog/trapmine-machine-learning-virustotal/, 2018. -