Usenix security 2023
EURECOM
现在将一个文件分类为良性还是恶意,取决于一个联合决定,比如确定性指标(反病毒规则),机器学习分类器,当然更重要的是人类专家的判断。
作者通过实验研究比较了人类和机器智能在恶意软件分类上的差别;作者创建了一个110名全球玩家,包括72名新手和38名专家,通过沙箱报告来完成对未知样本的分类;结论是专家和新手都趋向于使用相同的funtion来分类,即使专业知识相差太多;此外,作者实现了两种机器学习的SOTA分类器,并在同一组样本上进行了评估,对比结果揭示机器学习模型偏向于使用同一组特征。
此项工作反应了人类和机器在决策过程中的差异,以及提取信息的差异。该发现有多种益处,从训练更好的malware分析器到提升特征编码质量;
- introduction
- related work
- methodology
- game rules
- game ui
- features
- game samples
- participants
- analysis human
- VT impact
- self evaluation
- samples difficulty
- feature ranking
- malware vs goodware
- machine learning players
- benchmark dataset
- choice of ml-based
- validation
- Humans vs machines
- feature ranking
- game replay with the ml players
- key takeaways
- limitation and conclusion
恶意软件分类任务是具有挑战性的,因为需要对未知样本的意图和目的进行推理,所以该工作一直由恶意软件分析专家来做。
一家典型的防病毒公司每天收集和分析35w多个可疑程序 [9],这些不仅仅是已知家族的微小变化: 例如,在野外2019年观察到的41% 个家族是以前从未观察到 [8]。显然,安全专家的数量无法扩展以应对这些数字。
机器学习提供了一个简单部署且具有扩展性的解决方案,大量的研究提供了有希望的结果。然而并不像语音和文本识别,随着时间的变化,发音和特征形状保持恒定,恶意软件一直在持续变化以逃避检测。
因此尚不清楚先前研究的健壮性如何,更重要的是,哪些特征影响分类器的准确性也无从得知。换句话说,迄今为止尚且没有研究来检查人类专家与ml解决方案判断的依据是否一致。甚至并不知道不同背景和专业知识的人是否会依赖相同的特征。
为了收集数据,,作者设计一个在线游戏,要求参与者基于沙箱报告分类20个可疑程序。玩家需要购买不同组的特征来添加到报告中,这允许作者捕获参与者认为更有价值的信息以及需要多少特征才可做出决定的信息。
即使作者观察到所有的人类玩家都偏向于使用普遍一致的特征,但专家和新手还是存在不同的特质,如速度和准确率。
最后收集了21944份沙箱报告来训练最近提出的两个ML分类模型。两位ML顽疾的表现像是平均水平的人类专家,但它们具备访问所有特征的优势。
作者使用人类所分类的一些样本的相同特征来重玩ML模型,在这种情况下,ML玩家的准确率低于随机猜测。
主要发现:ML算法并不是使用与人类所选择相同的特征进行分类。
恰恰相反,它们依赖于静态特征,而人类专家更倾向于动态行为特征。ML将可执行文件的resource节的入口作为最重要的关联特征,而人类经常将其排在最后一位,从未使用。
恶意代码的自动分析一直是系统安全的首要研究领域之一。由于需要分析大量的样本,以前的研究主要集中在完全自动化的技术或需要与分析员最小限度互动的方法。
游戏名称:Detect Me If You Can(DMIYC)
游戏者必须正确的分类大量的样本,分为恶意和良性的,并且使用的特征越少越好。
游戏初始时玩家得到的report为空,而后玩家被指示通过在预定义目录中添加新的功能知道她有信心做出binary分类。
该游戏一共20轮,每轮有20个潜在点。每购买一组新特征,潜在点都会减1。
样本正确分类,则玩家会得到剩下的潜在点作为分数,而错误分类后,则不会得到任何分数。
每轮只有15组特征可选,因此选手得分在5-20之间。
最终分数是20轮后积分和与分类正确的数量乘积,以此来增加正确样本分类的重要性。分数上限是7600分,即192020,因为每一轮至少购买一个特征作为分类的依据。作者删除了提交答案但没有购买特征的选手,因为这些初学者可能并不打算完成任务。
为了模仿正常压力,增加时间限制,20个样本总计60分钟,即每个样本平均需要3分钟的时间。依据:Ugarte-Pedrero et al. [83]的报告说专业的恶意软件分析师基于动静特征做出分类不会超过30s
游戏界面的UI:
特征包括静态特征和动态特征,该研究集中在PE上
机翻:我们的游戏使用通常从文件中提取的所有特征(静态特征)或由软件分析沙盒收集的运行时行为(动态特征)。静态捕获文件的不同方面,通过解析便携式可执行文件(PE)格式文件提取。PE是微软Windows操作系统用来存储可执行文件、目标代码和DLLs的格式。我们的研究集中在PE上,因为它是桌面/服务器生态系统中最常见的恶意软件的文件格式[8]。Authenticode是微软的一种代码签名技术,旨在保证可执行文件的来源和完整性。一旦可执行文件被签名,其代码就不能在不破坏信封完整性的情况下发生变化。一旦一个可执行文件被签署,其代码就不能在不破坏信封完整性的情况下发生变化。通过这种方式,用户可以保证他们所执行的唯一代码是由签署它的软件发布者创建的。因此,签名功能包含了签名者的证书以及该证书是否有效。
头部元数据功能收集了PE头信息和元数据,如目标架构(32或64位)、编译时间戳、发布版本、版权字符串、部分数量以及文件的总熵。例如,通常情况下,存放程序代码的.text部分被映射为执行/只读,而存放全局变量的.data部分被映射为不执行/读写。Windows导出了它的大部分功能,称为应用编程接口(API),在动态链接库(DLL)文件中需要进行这些交互,可执行文件通常从提供不同功能的各种DLL中导入和调用这些功能。一个可执行文件从其他文件(主要是DLL)中导入的函数被称为导入函数,简称为import。
可执行文件所需的资源,如图标、菜单、对话框等,被存储在可执行文件的资源部分。通常,攻击者会在资源部分存储额外的二进制文件、诱饵文件和配置数据,因此检查资源可以揭示关于二进制文件的有价值的信息。资源功能包含资源部分的条目信息,以及每个资源的熵。字符串是嵌入文件中的ASCII和Unicode可打印字符序列。提取字符串可以提供关于程序功能的线索和与可疑二进制文件相关的指标。字符串功能确实包含了从二进制文件中提取的字符串,它们可以包含对文件名、URL、域名、IP地址、Shell命令、注册表键等的引用。
最后,我们的静态特征还包括来自VirusTotal引擎的结果,即VT Labels。VirusTotal聚合了许多反病毒产品和在线扫描引擎。因此,它的报告包含了有多少个引擎分析了样本,以及有多少个引擎将样本归类为带有相应标签的恶意行为。反病毒引擎的检测标签可以看作是引擎分配给样本的标签的序列化,例如,家族、恶意软件的类别(例如,勒索软件、间谍软件、广告软件)、文件属性(例如,加壳、themida、捆绑)和行为(例如,垃圾邮件、DDOS、信息窃取)。此外,我们还包括VT提交历史,其中包括第一次提交的时间,以及提交名称,即包含每次提交的样本文件名的列表。
动态特征是从目标样本在受控环境中的执行中提取的,该环境记录了样本和操作系统之间的所有互动。在这种情况下,特征的名称是不言自明的:UDP、TCP和HTTP中总结的网络流量;创建、终止的进程或调用的shell命令;启动、停止或创建的服务;对Windows注册表键的任何修改;创建或打开的Mutexes;文件系统操作(文件的读、写和删除);以及RuntimeDLLs列表,即在运行时加载的动态库。总之,DMIYC玩家可用的功能列表,分为静态和动态。静态属性:病毒总标签、病毒总提交历史、签名、标题元数据、部分、进口、资源、字符串。动态行为: 网络、进程、服务、注册表、Mutexes、文件系统、运行时DLLs。
20轮不同游戏中所给出的样本:
动态行为报告依赖于VirusTotal Jujubox;11个malware,9个goodware;
样本的具体示例,机翻:
- 17号样本(WinDirStat,一个磁盘使用统计查看器)报告包含许多文件操作,这可能会使它与勒索软件相混淆,尽管所有操作都是读取的,而且该样本没有写入任何文件。
- 3号样本有签名,但签名是无效的。为了模拟分析人员需要根据其特征(而不仅仅是AV标签)对以前未知的样本进行分类的情况,我们删除了除四份报告外的所有防病毒特征。
- 在剩下的四份报告中,有两份被反病毒软件正确分类(一份是良性的,一份是恶意的),一份是良性文件被错误地分类为恶意的。
- 最后一个是一个用PEtite文件压缩器重新加壳的Zbot(样本编号15)。在这种情况下,我们手动重置了所有反病毒引擎的结果,以创造一个零检测的恶意文件的案例。通过这种方式,我们试图重现一个典型的场景,即恶意软件作者以加壳的形式发布其软件的新版本以绕过静态签名。
- 我们的游戏还包括zbot家族的另一个版本(样本编号10),这次是无壳的。
- 样本编号12是由我们定制开发的。它是一个使用AutoHotKey(AHK)[2]的良性程序,这是一种流行的Windows脚本语言,提供简单的键盘快捷方式和软件自动化。AHK被用于良性软件,但正如趋势科技研究人员所报告的那样[5, 11],也被野外检测到的恶意软件使用。
参与者信息,新手全部为学生(硕士+初级ctf选手),专家为具有工作经验
对游戏结果的一些统计分析:
作者故意在游戏中包括四个带有改变的VirusTotal引擎报告的样本,以研究我们的参与者对正确和错误的反病毒引擎结果的反应。在处理正确的反病毒检测时,专家和新手都获得了良好的结果。
然而,当反病毒报告有误导性时,新手的准确率明显下降,特别是对有五个检测的良性文件。专家们受此影响较小,可能是因为他们更清楚假阳性和假阴性在VirusTotal中相当频繁。
事实上,在93%的情况下,专家分析员正确地将样本4标记为良性样本。然而,行为分析报告了许多文件读数,我们手动插入了一些误导性的AV标签,暗示它是普通的勒索软件。然而,假阳性(样本17)是WinDirStat,一个开源的图形化磁盘使用分析器;事实上,它的文件系统功能并没有像真正的勒索软件(如nanolocker,样本8)那样显示任何文件上的文字。
令人惊讶的是,所有专家都对假阴性(样本15)进行了正确的分类,这表明这种类型的错误并不影响他们的决策,而假阳性的情况就不一样了。
作者要求参与者在游戏结束时报告不确定的样本数量,通过对比无法确定的数量与错误数量完成自评估。
平均而言,错误的数量低于参与者认为难以分类的样本数量,其中必然存在一些案例是运气成分,同时大约有一半的参与者高估了他们的表现,错误答案的数量大于他们不确定的数量。一个极端例子,一位专家犯了7个错误,但只报告3个选择没有把握。
样本的设置存在有意为之的复杂度,可以分为以下3类:
- 10个样本被90%以上的专家正确分类,
- 7个样本被70%-90%的专家正确分类,
- 3个样本对我们大多数参与者造成了严重问题。一个是恶意的,两个是良性的(表1中的编号1、11、12),被我们的专家误判了60%以上。
橙色线对应的是专家比新手回答得更正确的情况,蓝色线则相反
本研究的主要发现之一:不管他们的专业水平如何,所有的玩家都依赖同一套特征。完整的特征列表及其在专家和新手中的流行程度见图3;带(†)的特征是动态。
重温图2,良性软件(X轴上的绿色数字为特征)更偏向于图表的右侧,从而表明我们的参与者在对它们进行分类时比恶意软件更困难。因此,对于每个类别(专家/新手),我们计算了他们对每组(恶意软件/良好软件)的错误分类次数。专家们平均错误地分类了1.7个恶意样本和2.3个良性样本。而新手则是2.8和3.9。
无论样本的性质如何,专家花了大约80秒,新手花了120秒。
而对于观看的特征数量,平均而言,专家在分析恶意软件时使用了14.8个特征,而对于良好软件则使用了17.4。对于新手来说,差异不太明显,分别为11.2和12.6。
作者进行Welch t校验,得到以下结论:
- I)新手在对好的软件进行分类时犯了更多的错误(t统计量为-2.8,p值< 1e-3)
- II)对于这两个类别,分析良好的软件不比恶意软件花费更多时间(p值>1e-3)
- III)专家在分析良好软件时使用了更多的特征(t统计量-0.6,p值<1e-3)
ML的输入特征只有13个,人类有15个。这是因为VT的标签和历史提交被排除,作者使用这两个特征来选择和标记恶意样本/良性样本。
- 21,944个具有完整沙箱报告的样本
- 2018-2020年期间的
- 21个以上AV标记为malware
- 使用avclass确保没有家族被过度代替
- 10,972个malware,家族125个
- Chocolatey社区上收集的良性样本
- 10,972个良性样本,在这组样本中约有95%(10374/10,972)的样本在VT上是零检测
作者选择两个流行的ml模型:
- 随机森林 使用贪婪的树枝分割策略来划分特征空间和定位分类边界。
- CNN 将分类属性压缩成低维的数字嵌入向量,即word2vec嵌入,embedding被视为基于CNN的分类器的输入。
两个ML模型都取得了很高的准确性,但他们的结果并不总是一致的。一个人可能对另一个人正确分类的样本进行错误分类,反之亦然。
五折交叉验证结果如下:
然后将训练好的模型测试20个游戏样本。
机翻:与CV测试中的观察一致,两个ML玩家在游戏中产生了相似的准确性。两人都对游戏样本3(恶意)和17(良性)进行了错误分类。此外,基于RF的播放器错误地分类了良性游戏样本12。相比之下,基于CNN的选手对恶意游戏样本4和15进行了错误分类。RF选手取得了比人类专家平均水平略高的准确性(17/20),而基于CNN的选手则像普通专家一样(16/20)。
机翻:揭开真相的差异与人类根据情况改变决策策略的能力有关。事实上,根据认知心理学的研究[67],人类的决策通常是基于一系列的逻辑规则和概念,如许可、义务、禁止和启发式方法。一方面,人类可以根据现有的信息,在个案的基础上调整决策政策。另一方面,经过训练的ML模型被限制在使用学习范式所采用的同一套特征上。他们不能像人类在游戏中那样,灵活地扩展特征空间以丰富可疑文件的描述。因此,不同的ML模型会在相同的训练样本中产生相似的分类边界。此外,如果没有足够的特征支持信息,ML模型很可能会失败,而人类主体可以寻找额外的证据来扩展他们的知识库。
使用SHAP作为模型可解释性证明。第一个发现是,两个ML选手在分类任务中共享相似的重要特征。PE资源对ML算法来说是最关键的,而对人类专家和新手玩家来说是最不重要的。
作者试图通过深入研究报告来了解为什么ML模型更喜欢这些特征,手动检查样本后发现,恶意软件倾向于:
- 在资源中嵌入可执行文件/DLLs或大的原始数据;
- 一些PE头元数据包含随机字符串或非ASCII字符;
- 不签署或使用无效的签名,并使用具有非标准名称的部分。
我们的一些样本也有这三个特殊性;例如,按照上面讨论的相同顺序,样本编号为6、20、3和15。分别有96%、89%、61%和91%的人类专家对这些样本进行了正确的分类,他们没有观察资源、标题元数据、签名和section。
事实证明,人类和机器都认为签名是一个关键的特征,而对于其余的静态特征,人类不需要它们来进行正确的分类。
作者猜测人类与机器使用特征相差较大的原因:
- 动态属性并不总是出现在所有的报告中,83%的样本至少有一个动态特征包含缺失值,这种现象是正常的,例如勒索软件只需要与文件系统与网络互动,显然不需要创建服务;而静态特征基本不会缺失。
- ML模型的特征空间不能通过逐步收集安全事件的额外证据而得到即时的充实。样本3见证了这一限制,它被两个基于ML的玩家错误地分类了。样本3存在恶意网络域名的通信,但ML模型并不知道该网络通信活动的属性。另一个例子是样本16,它解决了域名phone2347.ddns.net:人类主体可以很容易地注意到它是一个动态的DNS解析器,而ML却无法获得这种知识。总结:ML难以捕捉额外的语义信息。
上述实验可能存在不公平的因素:即ML可以获得样本的所有特征,而人类只能选择子集。
作者重新设计实验,即将ml模型使用人类所使用的相同特征,查看模型的表现情况。依据人类专家的特征频率选择了5个最常用的特征,并扩展为7个特征, 分别查看结果。
- 两个ML选手的游戏表现比随机猜测要差。相比之下,人类专家做得很完美,所有的样本都被正确分类。
- 使用前7个特征的准确率比使用前5个特征的准确率还要差(例如,4/8,而RF模型为5/13)。