Adversarial ML Threat Matrix——对抗性机器学习威胁矩阵<案例研究三、四、五>
前言
接续前三篇:
Adversarial ML Threat Matrix——对抗性机器学习威胁矩阵<简介>
ATLAS——对抗性机器学习威胁矩阵<案例研究一>
ATLAS——对抗性机器学习威胁矩阵<案例研究二>
案例三:VirusTotal Poisoning
VirusTotal样本库投毒
案例摘要
在VirusTotal调查不正常的勒索软件家族的报告有所增加时,我们发现该特定勒索软件家族的许多样本是在短时间内通过流行的病毒共享平台提交的。进一步调查显示,根据字符串相似度,样本都是等效的,根据代码相似度,它们的相似度在 98% 到 74% 之间。有趣的是,所有示例的编译时间都是相同的。经过更多挖掘深入分析,发现有人使用“metame”一种变质代码操纵工具将原始文件操纵为突变变体。这些变体并不总是可执行的,但仍被归类为同一勒索软件系列。
矩阵映射
侦察(Reconnaissance)
tactic: AML.TA0003
technique: AML.T0016.000
能力获取:对抗机器学习攻击工具:获取一个简单用于可执行文件的代码变异工具,如metame。
简单看了一下源码以及原理,主要是正则匹配目标并且预制替换的size,用于get_nops(),然后if-else逻辑匹配指令集进行随机选择填充的方式。整体逻辑不完全保证程序的可执行性,并不一一替换指令内容。
机器学习攻击阶段(ML Attack Staging)
tactic:AML.TA0001
technique: AML.T0043
制作对抗数据:该攻击者使用来自流行勒索软件家族的恶意软件样本作为创建“突变”变体的起点。
初始访问(Initial Access)
tactic:AML.T0004
technique:AML.T0010.002
机器学习供应链数据破坏:攻击者将生成样本上传到平台。
持久化(Persistence)
tactic:AML.TA0006
technique:AML.T0020
训练数据毒化:一些供应商开始将这些文件归类为勒索软件家族,尽管其中大多数文件都无法运行。“突变”样本毒害了机器学习模型用于识别和分类该勒索软件家族的数据集。
一点防御思考:如果平台使用静态分析或文本相似度匹配的方法来检测,使用类似方法做到毒化样本库非常轻松。而对于使用这部分样本进行训练 的模型来说,最终影响与模型的细分任务以及特征工程有关。
如对恶意家族的分类任务来说,如果采用简单的变异工具(如metame)是基于同一恶意样本(必然是同一家族)作为种子,生成更多的毒化样本被病毒库平台采纳,可能一定程度上反而能对模型达到样本增强的效果。
对于识别恶意软件的二分类任务来说,确实存在很大的难度,如果用同一款变异软件冲击病毒库进行毒化,最后模型学到的很可能是变异软件的逻辑作为识别的特征(而实际上不是)。如果不使用神经网络,用人工筛选特征的方式,能够比较好避免。对于验证是否恶意软件可执行的点,还是需要依托真正执行的动态分析方法,如利用沙箱。
从病毒样本库平台和识别/分类模型的关系上看,若安全体系要整体打通,则样本库的采集条件与方式是需要根据模型的任务以及算法特点进行配合调整的,对前期入库的校验增加相应的方法。若为分别独立部署,像采用VirusTotal或第三方的样本库训练,则前期的数据清洗过程要增加原样本库缺乏的过滤方法,是对模型自身安全性的数据质量把控,至于孰重孰轻需要在实际的落地方案中进行取舍。
案例四:Bypassing Cylance’s AI Malware Detection
绕过cylance的恶意软件AI检测
案例摘要
Skylight 的研究人员能够创建一个通用绕过字符串,该字符串附加到恶意文件后可以逃避 Cylance 的 AI 恶意软件检测器的检测。
矩阵映射
侦察(Reconnaissance)
tactic: AML.TA0002
technique: AML.T0000
受害者公开信息材料收集:研究人员阅读cylance的AI恶意软件检测器的公开信息,如公开演讲及专利。
访问机器学习模型(ML Model Access)
tactic: AML.TA0000
technique:AML.T0047
使用机器学习产品或服务:研究人员使用 Cylance 的 AI 恶意软件检测器并启用详细日志记录来了解 ML 模型的内部工作原理,特别关注在模型输出评分(置信度)和模型集成方面的表现。
能力放大(Resource Development)
tactic: AML.T0003
technique: AML.T0000
开发对抗机器学习攻击的能力:研究人员使用模型输出评分(置信度)信息来逆向工程哪些属性特征提供了何种程度的正面或负面分数贡献。在此过程中,他们发现了这个模型集成机制中一个替代第一个模型的辅助模型,第二个模型的积极评估机制推翻了机器学习核心模型的决策,成为攻击突破点。
机器学习攻击阶段(ML Attack Staging)
tactic: AML.TA0001
technique: AML.T0043.003
劫持对抗数据:手动篡改:基于以上发现,研究人员构造假特征将已知良好文件的属性与恶意软件融合,以手动创建对抗性恶意软件。
防御绕过(Defense Evasion)
tactic: AML.TA0007
technique: AML.T0015
绕过机器学习模型:由于该模型集成问题,第二个次要模型将覆盖第一个核心模型的决策,研究人员借此可以有效绕过。
博客通读与细节
绕过特征字典:special_sauce.txt,内含5567条,只需将这些附加到任何恶意可执行文件中,让 Cylance 相信它是良性的。截至2019年9月7日,该绕过仍然可以在家庭版(Cylance SmartAV)上利用,供应商表示企业版 (CylancePROTECT) 已修复该漏洞(但无法验证)。
人工智能在安全领域的应用是明确的并且可能有应用价值,但是基于人工智能的产品也因为这项技术的引入而提供了一个新的、独特的攻击面。通过仔细分析 Cylance 基于 AI 的防病毒产品的引擎和模型,我们发现了模型对特定游戏“Rocket League”的特殊偏见。结合对特征提取过程的分析、模型对字符串的严重依赖以及对这个特定游戏的强烈偏见,我们能够设计一个简单且相当有趣的绕过方式。即通过将选定的字符串列表附加到恶意文件,我们能够显着改变AI判别输出的分数,从而避免检测。事实证明,该方法对 2019 年 5 月排名前 10 的恶意软件的成功率为 100%,对 384 个恶意软件的更大样本的成功率接近 90%。
作者也声明了,即使不是人工智能专家、甚至高级用户,但是尝试从概念上理解AI是怎么工作的,也可以找到绕过的方法。就如同今日对大语言模型gpt4的绕过一样,无需非常专业的安全及AI知识,更像是一个强化测试的工程师。
日志分析
作者通过分析软件的日志内容,路径为./Cylance/Desktop/log
。
打开日志文件后,搜索检测的恶意软件样本文件名,找到带模型输出分数的记录。引擎的评分机制输出修改后的 Mimikatz 得分为-852。通过对各种良性文件和恶意文件的实验后,确定最恶意文件的分数范围为 -1000,最良性文件的分数范围为 +1000。
AnalyzeFile hashed C:\Users\Administrator\Desktop\mimikatz_with_slight_modification.exe 143020851E35E3234DBCC879759322E8AD4D6D3E89EAE1F662BF8EA9B9898D05
LocalAnalyzeItem LocalInfinity.ComputeScore begin
LocalAnalyzeItem, C:\Users\Administrator\Desktop\mimikatz_with_slight_modification.exe score -852 detector execution_control
Detected as 'Unsafe'! path:'C:\Users\Administrator\Desktop\mimikatz_with_slight_modification.exe' hash:143020851E35E3234DBCC879759322E8AD4D6D3E89EAE1F662BF8EA9B9898D05
公开信息收集阶段
首先这个大佬,把cylance逆向了整到了源码。有了源码后,才开始收集专利和产品内部工作原理。其中一个资源将引擎描述为“Ensemble”(一组模型),找到了一个名为“EnsembleReader”的类。它用于从嵌入在 DLL 文件之一中的资源加载整体。提取的模型是加密的,但是算法和原始密钥相当清晰:
public class EnsembleReader : ILogAccess, IEnsembleHeader, IDisposable
{
protected const int RandomHeaderSize = 3072;
protected const string KeyAndIv = "I am decrypting Cylance's intellectual property.";
protected Stream _stream;
protected byte[] _activeKey;
protected byte[] _activeIV;
protected bool _loadSectionData;
通过筛查模型相关的信息,关注到一个 ‘SampleScore2PE’ 的对可执行文件样本评分的公开接口:
public ISampleScore Create(string inputModelsPath)
{
return (ISampleScore) new SampleScoring2PE(inputModelsPath);
}
若没能找到发现这个接口,则还是得走密钥解密的方式分析模型。而通过这个接口可以构建自己的小型 .NET 可执行文件并链接到这些程序集,就像Cylance.Engine.Core所做的那样。然后使用之前提取的模型文件的路径(仍然是加密的)调用Create()函数,并且得到了一个公开ComputeScore()函数对象。
SampleScoreFactory2PE factory = new SampleScoreFactory2PE();
SampleScoring2PE scorer = factory.Create("test_model.bin") as SampleScoring2PE;
Stream test_file = File.Open("mimikatz_with_slight_modification.exe", FileMode.Open);
Dictionary<string, object> extraData;
double score = scorer.ComputeScore(test_file, out extraData);
通过这个接口执行相同的样本文件,得到了输出分数:-0.852764的分数,作为修改后的 Mimikatz 文件的输出,它看起来与之前在日志文件中注意到的-852非常相似。由此,找到了一个分析模型动态调试评分过程的起点。
逆向模型特征提取
有数千行代码处理此转换,但总体逻辑是相同的:引擎获取输入属性并将其与已知值或值列表进行比较。比较将 PE 文件文件头中的 TimeDateStamp 字段与 3523 个不同时间戳范围的列表进行比较。根据时间戳所属的范围,引擎执行特定的操作。该操作实际上只是一系列用于递增或递减特征向量值的指令。每个操作都可以影响一个或多个值,并且指令列表存储在模型的数据中。
找两行出来分析一下:
if (!this.method_28(this.imagePEFile_0.ImageNTHeader.FileHeader.TimeDateStamp, 2, 3523))
this.method_14(2866581, 0);
在此代码片段中,首先调用method_28 ,它将尝试在 3523 个不同的时间日期范围中搜索提取的TimeDateStamp属性。每个范围都有一个相应的附加操作。如果在任何时间-日期范围内均未找到该属性,则将调用method_14 ,这将触发一个操作,该操作指定用于在任何“已知”范围内未发现该属性的情况。
在这个很长的过程结束时,在执行了无数的操作之后(特征选择等机器学习的详细细节,攻击者甚至无需掌握),最终得到了一个包含 7000 个特征值的向量,它单独决定文件的评分和分类。
开发模型时,涨点引入的“漏洞”
文件评分输出结果,范围在-1到1之间,表明该文件的恶意程度。使用所描述的方法完成评分后,另一种机制(上文提到的模型二)具有对早期模型的覆盖能力。
为什么要引入这种机制?
作者推测 Cylance 的团队在主模型中遇到了一些误报和漏报。他们可能可以调整或改进他们的模型,但也许他们有时间压力,因此研发团队必须快速想出一些办法来解决问题。无论如何,他们引入了一种额外的机制,该机制旨在针对特定的可执行文件家族,并有权覆盖先前模型所做的决定。该机制称为“Centroids”(译作质心,理解为先验知识的补充,类心),相当于聚类的作用。它在 Cylance 中的使用类似于特殊对象列表:当模型对文件进行分类时,使用类心来检查它是列入白名单还是黑名单。
为了实现这一点,引擎使用不同的特征向量,该特征向量使用一组修改后的特征值。它通过将每个特征值以零为中心(值范围在 -3 到 +3 之间)来标准化这些特征的值,然后计算结果向量与一些已知的预先计算的向量之间的欧几里得距离。实际上,它尝试查找可执行文件是否与添加到模型白/黑名单中的可执行文件非常相似。如果可执行文件完全相同,则特征向量相等,距离为 0。但如果某些特征不同,距离可能会增长,如果增长超过给定阈值,则不会将其视为与白色在同一簇中或列入黑名单的类别。
思路探索:
如果找出可以被判定为白名单的类心强相关的特征,将恶意文件特征的尽量往这个距离靠近。但是实际上,特征数量非常多,并且恶意软件开发过程中功能的混淆也很有难度,许多内容难以修改。
重新分析源码,发现以下内容:
for (int index = 0; index < this.imagePEFile_0.Strings.Length; ++index)
{
if (!this.method_26(this.imagePEFile_0.Strings[index].S, 95088, 854069, 0))
this.method_14(this.list_0[0], 15166118410741992125UL, 2847678, 0);
}
这些行遍历文件中找到的整个字符串列表,计算它们的哈希值(使用Murmur64),然后在包含字符串哈希值(模型数据的所有部分)的大型数据库中搜索它们。对于找到的每个字符串,都会触发一个操作,从而影响特征向量。也就说,此处的静态检测,本质还是比对字符串的内容以及占整体的比例。
实现绕过
作者将上一节相关的字符串列表解析提取,并计算了这个游戏里所有字符串的哈希。把特殊字符串大小降低到60k。通过重新核查类心的机制,我们可以猜测 Cylance 团队列入白名单的可执行文件列表,该模型可能会更偏向于从这些类型的可执行文件中获取的字符串。
观察仅包含几十个类心的列表。每个类心定义都带有一个用于识别的名称,其中一个很突出,因为它是一款在线游戏的名称。它的受欢迎程度很可能引发Cylance的特殊逻辑。
作者购买了该游戏,并使用简单的“strings”命令提取了主可执行文件中包含的所有字符串,产生了大约 5 MB 的字符串。然后,我们尝试准确地找出字符串是如何解析的,以便更好地理解如何让解析器提取它们。并尝试直接偷懒,将字符串放在文件的末尾。执行以下命令:
copy /b mimikatz.exe+strings.txt modified_mimikatz.exe
将这个新的modified_mimikatz.exe接入样本评分的公开接口,恶意样本Mimikatz得到了很高的分数,被判定为良性。
多案例认证
互联网安全中心发布的截至 2019 年 5 月的十大恶意软件列表。得分结果如下:
恶意软件 | SHA256 | 之前得分 | 之后得分 |
---|---|---|---|
CoinMiner | 1915126c27ba8566c624491bd2613215021cc2b28e5e6f3af69e9e994327f3ac | -826 | 884 |
Dridex | c94fe7b646b681ac85756b4ce7f85f4745a7b505f1a2215ba8b58375238bad10 | -999 | 996 |
Emotet | b3be486490acd78ed37b0823d7b9b6361d76f64d26a089ed8fbd42d838f87440 | -923 | 625 |
Gh0stRAT | eebff21def49af4e85c26523af2ad659125a07a09db50ac06bd3746483c89f9d | -975 | 998 |
Kovter | 40050153dceec2c8fbb1912f8eeabe449d1e265f0c8198008be8b34e5403e731 | -999 | 856 |
Nanobot | 267912da0d6a7ad9c04c892020f1e5757edf9c4762d3de22866eb8a550bff81a | 971 | 999 |
Pushdo | 14c358cc64a929a1761e7ffeb76795e43ff5c8f6b9e21057bb98958b7fa11280 | -999 | 999 |
Qakbot | 869985182924ca7548289156cb500612a9f171c7e098b04550dbf62ab8f4ebd9 | -998 | 991 |
Trickbot | 954961fd69cbb2bb73157e0a4e5729d8fe967fdf18e4b691e1f76aeadbc40553 | -973 | 774 |
Zeus | 74031ad4c9b8a8757a712e14d120f710281027620f024a564cbea43ecc095696 | -997 | 997 |
可以清楚地看到,几乎所有这些样本都已经最恶意的文件变成了良性文件。同样,对这些文件进行的唯一处理是添加“特殊字符串”作为简单的串联绕过。进一步扩大我们的测试组,作者从在线存储库下载了 384 个恶意文件的列表并运行测试,收到以下结果:
并且如果多次添加字符串,我们可以进一步提高分数。通过这种技术,平均分数可以达到750,并且高达88.54%的恶意文件现在被标记为良性。
喜欢一点作者开头的嘲讽:
“ 每隔几年,网络安全世界就会迎来一颗“银色子弹”的诞生。它从小处开始,一些热心的母公司将新生的王子视为我们的救世主,讲述其无敌力量的故事。几年后,投入了数百万美元的营销资金,它不断发展壮大,成为一家绝对的巨头。仅仅耳语它的名字就可以增加对您产品的信任,让您出现在最有影响力的会议上,并帮助完成急需的融资。随着时间的推移,银色似乎只是一层涂层,很快就会开始磨损,一些勇敢的人开始看到它的本质——在网络安全这个永无休止的过程中,另一种工具,希望是一个有效的工具。这就是我们多年来看到的许多“银弹”的故事,人工智能和机器学习也不可避免地会出现这样的故事。人工智能被吹捧为以强大的营销力量终结所有这些问题的灵丹妙药——毕竟,如果我们能够教会机器像人类分析师一样思考,只需要添加大数据和几乎无限的处理能力,那么我们当然可以就能打造无敌机制。”
人工智能比起其他泡沫,的确有真正新方向趋势,抛开更泛的话题不谈,对于网安行业新增长点及小企业方向的爆发,客户看到新产品,包装“新概念”和提出“新思考”的区别得辨明。AI+安全的路还有很长,AI本身的安全之路也才起步。
作者结尾也再次提出挑战:
“供应商经常使用一击解决方案来解决安全问题。黑客不是木头人,他们会反击,你必须做好反击的准备,不断创新并增加攻击成本。持续多年不更新的静态模型的概念在理论上可能成立,但在实践中却失败了。诚然,在人工智能模型中发现偏差比绕过简单的反病毒签名更难,但修复损坏模型的成本同样昂贵。
当你告诉人们他们花费数百万美元购买和集成的新安全玩具可以被绕过时,我们总是很高兴地看到人们脸上的震惊。新的银弹也是如此,比如基于人工智能的安全。我们对结果并不感到惊讶,并且我们相信相同类型的流程可以应用于其他纯人工智能供应商以实现类似的结果。“
我想这也是我三年前选择慢慢跟进这个方向的原因,在那个gpt还没有今天能力的时刻,即使当年的我还无法想象大模型带来的巨大的劳动结构、社会组织形式变革。引戴锦华老师的一句话:“这是一场完全未经抵抗与讨论,就被世界所广泛接受的新一轮技术革命。我们赢得便利的同时,必然要付出代价。”但是这个代价,尚未被辨明,我们到底失去了什么?我们能不能/是经过充分思考过后,经由人自己去决定的选择乐意换取。批判性思维、原创思维是人今天可以对抗人工智能的杀手锏,我想这场讨论的意义,大家逆向一个小模型的参与过程,势必与人类一同思考,辨明未来。
此外作者逆向的思路也非常值得学习,逆向一个模型得到攻击切入点究竟需要获得多少信息,才能达到希望的影响效果?例如源码逆向后,是否需要花费精力将判断特征提取的物理意义一一整理。逆向的总体过程,让模型开发者反思,究竟哪些结构需要引入来修复问题,新结构引入的安全风险比起所谓性能开销等资源问题,更需平衡考量。
案例五:Camera Hijack Attack on Facial Recognition System
对人脸识别系统的相机劫持攻击
案例摘要
此类攻击可以突破传统的活体检测模型,导致人脸识别的误用,攻击目标为上海市税务局的人脸识别服务。
能力放大(Resource Development)
tactic: AML.T0003
technique: AML.T0008.001
基础设备获取:消费者硬件:攻击者购买了低端手机。
technique: AML.T0016.001
能力获取:软件工具:攻击者购买了安卓ROMs、特定的虚拟相机应用程序。
technique: AML.T0016.000
能力获取:对抗机器学习攻击实现:攻击者使用软件将静态照片变成视频,添加眨眼等逼真效果。
technique: AML.T0021
建立账号:攻击者从暗网收集用户身份信息和高清人脸照片,并利用受害者的信息注册账户。
访问机器学习模型(ML Model Access)
tactic: AML.TA0000
technique:AML.T0047
使用机器学习产品或服务:攻击者使用虚拟相机应用程序将生成的视频呈现给基于机器学习的面部识别服务,用于用户验证。
初始访问(Initial Access)
tactic:AML.T0004
technique:AML.T0015
绕过机器学习模型:在验证阶段,人脸识别系统调用了相机API,但由于系统被hook或root,给予人脸识别系统的视频流实际上是由虚拟相机应用程序提供的。攻击者成功规避了人脸识别系统并冒充受害者,使得攻击者可以冒充受害者并在税务系统中验证他们的身份。
影响(impact)
tactic:AML.T000
technique:AML.T0048
系统滥用造成的外部影响:攻击者利用其进入税务系统的特权向所谓的客户发送发票,并进一步实施他们的欺诈计划。
由于矩阵官方引证材料,案例五仅有华尔街日报的报道(付费订阅),加上此案例的目标系统为国家机构,相信披露的细节也有限,所以此处就不深入分析了。额外的材料和信息就请大家感兴趣自行调研,也欢迎交流。
上述材料仅供学习,请不要攻击实际生产的AI系统!
练习请自行搭建AI靶场。
最后给大家安利一个租卡平台:
autoDL:https://www.autodl.com
一个非常好上手的平台,易用性高,帮助文档也非常详细,小白也可以快速搭建起环境,然后开始快乐炼丹。客服也非常有耐心解答相关问题。
各位老板也可以填一下我的邀请码:https://www.autodl.com/register?code=4bacd9d2-d4bf-4baf-82c9-7b935986a34d,可以获得十元代金卷试用。(也可以让我薅薅AutoDL羊毛,btw:诚心非广,本菜狗还不配)