大数据文摘出品
来历:medium
编译:邢畅、张睿毅、钱天培
你有没有想过当黑客呢?
破解手机暗码,黑入公司体系,乃至…操控全球电脑。
打住打住!违法犯罪的主意显着不能有。再退一步讲,咱也不一定有这本事。
尤其是在今日,AI安防早已习以为常,想要当黑客的难度也越来越高了。
风趣的是,网络安全渠道Endgame,MRG-Effitas和VM-Ray在近来联手发起了一场“黑客搜集”大赛。召唤机器学习工程师们一同来进犯他们的安防体系。
竞赛的方针是,让50个歹意Windows可移植可履行文件(PE)逃避三个机器学习歹意软件分类器的检测。这些文件不只需求逃避检测,并且还能完成它们本来的功用和行为。
在这场竞赛中,一位名叫William Fleshman的小哥拔得头筹——他成功让一切50个文件都逃过了AI模型的过滤。
他是怎样做到的呢?让咱们一同来听听他的共享。
知己知彼
这是一场白盒竞赛,这意味着我可以拜访一切模型的参数和源代码。因而,要做的榜首件事便是看看模型后台发生了什么。
MalConv
榜首个模型是依据Windows可履行文件的原始字节练习的神经网络。
表明文件字节的整数序列(0-255)被传递给MalConv。MalConv中的嵌入层将每个字节映射到一个数字向量。然后通过别的的神经网络层处理向量序列。该模型输出两个数字,别离表明输入是良性和歹意的概率。
关于MalConv的研讨早已层出不穷。最简略的进犯便是在可履行文件的结尾增加一些字节。这是一个特别好的技巧,由于增加的数据(即Overlay)不会在歹意软件履行时加载到内存中。因而,咱们可以在不改动文件功用的状况下在Overlay中放入任何咱们想加的内容。
MalConv一同查找良性和歹意字节的不同形式,以便做出决议方案。Overlay进犯的意图是用与良性文件相关的形式包装它。
非负MalConv
第二个模型实践上与榜首个模型相同,但分配给各层的权重不同。
望文生义,非负MalConv在练习进程中被约束为具有非负权重矩阵。这样做是为了防止针对MalConv创立的进犯。假如处理妥当,非负权重使二元分类器单调;这意味着增加新内容只会增加歹意得分。这将使逃避模型变得十分困难,由于大多数逃避进犯的确需求向文件增加内容。
“走运”的是,非负MalConv的完成有一个细小但要害的缺点。
非负防护只适用于二分类器,其输出分数表明样本的歹意程度。可是,这个版别将输出分红两个分数,别离表明歹意和良性。之后,一个softmax函数将每个类的分数转换为概率。这种结构使得非负权重的练习变得毫无意义。附加内容依然可以将良性评分推到恣意高。当良性评分越高,即便存在相同数量的歹意内容,softmax函数也会将把歹意评分推得越低。因而一切针对MalConv的进犯在这里也会起作用。
论文:
http://ci.louisville.edu/zurada/publications/chor-zur-tnnls.pdf
Ember
Ember其实是Endgame保护的一个数据集。和数据集一同发布的还有一个练习好的基准模型,也称为Ember。Ember是一个lightgbm模型(增强决议方案树的调集),它依据Windows PE文件解析的几个特征练习得到。
Ember特征解析的源代码在GitHub上可以找到。
代码链接:
https://github.com/endgameinc/ember/blob/master/ember/features.py
了解怎么解析特征对制造进犯十分有用。提取的特征包括:
字节直方图
字节熵
Section信息(称号、巨细、熵、特点)
导入表库及进口信息
导出函数
一般文件信息(各种文件的巨细和数量)
文件头信息(机器码、结构、链接器、版别号)
字符串信息(文件中字符串的各种核算信息)
数据目录
数值特征可以直接运用,其他特征(如section的称号)可用哈希转换为数值向量。乍一看,Ember好像难以捉弄,它解析的许多特征都与文件结构,或许与咱们无法更改的特征相关。咱们有必要在坚持原功用的一同还要防止被检测到!
Ember的缝隙是进犯者可以恣意操控某些特征。lightgbm模型在集成树的多个方位运用这些特征。咱们可以运用模型的复杂性,通过操作特征来推进导致逃避的决议方案。
前期预备
竞赛代码附带了一个脚本,用于在一个文件中运转三个模型。我修正了脚本以评价整个歹意软件目录,并运用altair增加了一个风趣的可视化记分板:
原始歹意软件文件的初始扫描。
表情符号骷髅代表模型检测到歹意软件,而笑脸则代表一次逃避。风趣的是,49号文件自身就躲过了MalConv,所以咱们免费得到1分。
方案
扎手的部分是,找到一同影响三个模型的有用操作,或许至少影响一个模型,而不应战其他模型。我决议专心于有望一同影响三个模型的进犯。
附加数据(Overlay)
如上所述,PE文件可以附加恣意内容。这些额定的字节被称为Overlay,当Windows履行文件时,它们不会被加载到内存中。因而,在这里增加字节不会改动歹意软件的功用。
冗余空间(Slack Space)
除了Overlay之外,每个section的结尾还有空间来增加额定的字节。PE section需求与2的幂次方的内存空间对齐。当实践内容没有填满整个空间时,该section将被Slack Space填充。这部分内存不会被可履行文件拜访,所以咱们也可以自在地改动它。
新的section
咱们不只可以向现有section增加字节,也可以创立新的section。新的section不会损坏文件的功用,由于现有代码没有引证它们。这给了咱们满足的空间来增加任何咱们想要的任何内容。
要点重视的特征
由于MalConv模型将一切内容都视为字节(不考虑上下文),所以,咱们只需求专心于它们归因良性文件的形式,以压倒它们的决议。可是,Ember特征的结构要求咱们细心考虑或许会阻止它的细节。
咱们可以操作的最显着的特征是字节直方图和字节熵。字节直方图只核算文件中每个字节值的归一化频率。由于咱们可以增加包括任何内容的section,所以可以很简略将字节散布强制改为按任何方针的散布。
咱们也可以很好地操控Section Info特征。咱们可以运用slack space来改动section的熵。咱们还可以更改section的称号,使得咱们在Ember的决议方案树中可以删去不同的分支。
最终,处理字符串特征也十分简略。相同也是由于咱们可以增加包括任何内容的新section,所以咱们可以自在更改字符串的核算数据。
开端进犯!
我的方案是从简略开端并依据需求增加复杂性。增加新的section好像是最有期望的进犯途径,由于它使咱们可以对Ember的功用以及文件的原始字节进行更大的更改。
我在每个部分增加之后重建了PE,以便lief为我处理一切的寻址,也可以手动分配地址。
作为一个试验,我在每个文件中增加了一个带有100000个常量字节的新部分,并在迭代常量(0-255)时监督逃逸率。几个不同的值已成功,但值169(0xA9)导致最大的逃避:
通过向每个文件增加一个填充100,0000xA9的部分来成功逃避。
这种简略的进犯损坏了两种神经网络检测模型。假如咱们没有弄清楚非负模型中的bug,那么这个成果应该会让咱们十分惊奇。照理说,单调分类器不应受这种简略增加的影响。多亏了这个bug…
Ember很好地防护这种朴素的进犯。我有必要想出一个更聪明的办法来改动它的分数。
加料
接下来,我去了微软的下载页面并抓取了一份随机的良性的可履行文件。我用模型检测了文件,以承认它的评分十分低。我的方案是仿照这个文件的功用,期望可以防止对Ember的逃避。
我在文件上运转了命令行实用程序字符串。该实用程序从二进制文件中解分出一切可打印的字符串。我发现了很多的字符串好像包括微软的最终用户答应协议(EULA)。我捉住这部分并将其保存到文本文件中。
显着,一些最常见的Windows PE文件碰巧是由微软制造的。因而,在练习歹意软件分类器时,练习集或许有一堆标记为良性的Microsoft文件。我的主意是通过将我下载的文件中的内容增加到咱们的歹意软件中来运用这种或许性。Microsoft EULA之类的东西或许出现在许多良性文件中。这应该使字符串核算成果,字节散布和信息熵更像是良性文件。
我运用此进犯为每个文件增加了75个新部分(竞赛有一个文件巨细约束,我有必要坚持数量不高)。成果显现十分好:
Evasion是由“字符串进犯”和“惯例进犯”组合而成的。
最终一击
还剩几个文件没有逃过检测。
通过进一步剖析,我发现其间一些文件被打包,可是我的操作搞乱了他们的拆包程序,因而损坏了一些功用。
更糟糕的是,至少有一个文件好像还有特定的代码来检测自己是否被操作过:
这个文件有代码检测自己是否被动过
我的榜首个主意是在调试器中翻开文件并修补程序集指令查看修正。不幸的是,该文件还具有反调试代码,根本的“反反调试程序”无法绕过。
这个文件也有反除虫机制
感觉我就像掉进了风险的深坑,所以我决议退一步从头考虑。
天无绝人之路,我发现防篡改机制仅仅查看加载到内存中的PE部分。所以尽管我无法增加新的部分,但我依然可以操作叠加层!
我现已发现我的字符串进犯不行强壮,无法诈骗这些文件。我需求一种不同的办法来确认应该将哪些内容增加到叠加层以逃过检测。简略便是王道,所以我编写了以下代码来体系地测验每个字节值的行,并将它们增加到文件中,假如它们降低了Ember的分数,那么就持续,直到文件成功逃避或变得太大。
我将Ember替换为其他两个模型,并运用相同的办法增加所需的字节以避开这些模型。相同,由于我在叠加层中增加了字节,然后打包,这样,功用或防篡改查看都没有受到影响!我回去对一切文件进行了这次进犯,发现它可以很好地逃避检测。
满分!悉数拿下!
定论
把这些歹意软件都假装起来并不简略。但“走运”的是,一切模型都存在缝隙,并且可以被运用。假如非负MalConv模型真的施行成功,我或许就无法取得满分。
找到一组可以区别良性和歹意文件的功用,一同在对抗性要挟模型下也相对安全,这或许十分具有应战性。一个众所周知的事实是,小细节真的很重要。
最终,期望这些安防软件也可以从我的进犯中吸取教训,再接再厉,下次别再骗!
相关报导:
https://towardsdatascience.com/evading-machine-learning-malware-classifiers-ce52dabdb713
一个去乌镇的时机!
第六届国际互联网大会 乌镇峰会
数字经济人才专场研讨会
首届“30位新生代数字人才”评选
报名发动!
-18日晚-
数字经济人才对接VIP晚宴
第一批“30位新生代数字经济人才”颁奖仪式
-19日上午-
大咖主题讲演
《数字经济人才城市指数陈述》发布