当前位置: 首页 > 科技观察

以Volodya恶意组织为例谈一谈如何通过查找恶意开发者的线索来寻找漏洞(上)

时间:2023-03-13 16:35:58 科技观察

以Volodya恶意软件组为例谈谈如何通过寻找恶意开发者的蛛丝马迹来发现漏洞(上)漏洞利用,尤其是漏洞利用开发者自己的研究。本文将构建最全面的Windows开发者分析,从一个事件响应示例开始,研究人员将其统称为“Volodya”或“BuggiCorp”。黑客Volodya(也称为BuggiCorp)确定了最多产的零日攻击供应商之一。卡巴斯基自2015年以来一直在跟踪Volodya,他是一位多产的零日漏洞开发者和销售者。Volodya是“volo”的缩写。这个昵称经常出现在他开发的一些恶意软件中。根据追踪分析,他很可能是乌克兰人。此外,Volodya似乎是CVE-2019-0859漏洞的开发者,网络犯罪集团利用该漏洞进行金融盗窃。另一个由Volodya开发的漏洞CVE-2016-7255被俄罗斯著名的APT组织FancyBear(也称为APT28、PawnStorm、Sednit、Sofacy或Strontium)利用。卡巴斯基研究人员表示,黑客还与购买和使用零日漏洞的中低端网络犯罪集团合作。除了零日漏洞利用之外,Volodya还在开发针对修复的漏洞利用。到目前为止,研究人员已经设法追踪到10多个(!)他们的Windows内核本地特权升级(LPE)漏洞,其中许多在开发时都是零日漏洞。事件响应示例这篇文章以一个事件响应示例开始,在分析针对我们的一位客户的复杂攻击时,我们注意到该恶意软件执行了一个小型64位可执行文件。该样本包含不寻常的调试字符串,表明试图利用受害者计算机上的漏洞。更重要的是,样本有一个剩余的PDB路径,明确声明和删除此二进制文件的目标:...\cve-2019-0859\x64\Release\CmdTest.pdb。由于缺乏任何关于CVE-2019-0859实施的在线资源,我的意思是我们没有看到公开可用的PoC,而是一个真正的利用工具,这促使我们进行更深入的研究。CVE-2019-0859是CreateWindowEx函数中的UAF(Use-After-Free)漏洞。成功利用此漏洞的攻击者可以在内核模式下运行任意代码。然后攻击者可以安装程序;查看、更改或删除数据;或创建具有完整用户权限的新帐户。要利用此漏洞,攻击者必须首先登录系统。然后,攻击者可以运行可以利用此漏洞并控制受影响系统的特制应用程序。逆向工程这个漏洞非常简单,二进制文件很小,可以找到调试消息。它利用CreateWindowEx中的UAF漏洞来获得对父进程的提升权限。研究人员很快做出了一个有趣的观察:该漏洞似乎与恶意软件本身并非由同一开发人员编写。代码质量、没有混淆、PDB和时间戳都指向这个结论。在Cutter中可以看到对CreateWindowEx的调用。恶意软件开发者的套路研究人员倾向于将某个特定恶意软件家族背后的开发者视为一个整体,因此可以想象每个组件都是由其中一个人创建的,由一个团队或小组编写的。事实上,更高级的恶意软件涉及具有不同技能的不同人员。由国家组织开发的黑客软件尤其可能涉及不同团体和分支机构的数百甚至数千名员工。组织中的每个人都有特定的角色,并且接受过特殊的技术培训和多年的专业知识。在这些组织中,编写通用组件的工作量被分配给专门的团队,不同的团队负责初始访问、敏感数据的收集、横向传播等。旨在将漏洞利用模块嵌入其恶意软件的操作不能仅依赖恶意软件开发人员找到漏洞并可靠地利用它们,最有可能由专门担任特定角色的特定团队或个人进行。因此,恶意软件开发人员不关心它在幕后如何工作,他们只想集成这个模块并完成它。为了实现这种分工,两个团队需要就某种API达成一致,以充当不同组件之间的桥梁。这种集成API并非国家开发的黑客软件所独有,而是自由市场中的常见功能。无论是涉及地下论坛、漏洞利用经纪人还是网络公司,它们都为客户提供有关如何将漏洞利用集成到他们的恶意软件中的说明。从本质上讲,这个整合点是研究人员在研究中要重点关注的一个关键方面。假设攻击开发人员独立工作并且只将他们的代码/二进制模块传播给恶意软件开发人员,研究人员决定对其进行更改。通过分析恶意软件样本中嵌入的漏洞,研究人员可以更多地了解利用者,希望通过研究他们的编码习惯和其他在开发过程中留下的东西作为线索来识别他们。识别开发人员的线索研究人员不想查看整个恶意软件并寻找恶意软件系列或攻击者的新示例,而是想提供另一个视角,并决定专注于开发人员编写的这些函数,从事件中获取这个小型64位二进制文??件从响应示例来看,这是一个好的开始。该二进制文件除了利用CVE-2019-0859之外什么都不做,并且不基于公开共享的源代码或POC。这是研究人员识别线索的一个很好的选择,因为可执行文件是从其他人而不是漏洞利用开发人员编写的代码中提炼出来的。此外,可执行文件与恶意软件的主要二进制文件是分开的,这是一种臭名昭著的犯罪软件形式,导致研究人员认为该漏洞并非由恶意软件作者自己开发。遵循这一线索,研究人员开始寻找来自同一开发人员的更多恶意软件。研究人员首先从现有的二进制文件中收集了简单的工件:字符串、内部文件名、时间戳和PDB路径。第一个结果立即出现-一个与64位示例完全匹配的32位可执行文件。具体来说,正如它们的时间戳和嵌入式PDB路径所表明的那样,它们是在同一时间从同一源一起编译的。既然研究人员有了这两个例子,他们就能够确定研究人员应该寻找哪些线索。为了识别这个漏洞的开发者,研究人员将寻找以下线索:1.二进制文件中的独特工件:硬编码值(加密常量,“垃圾”值,例如0x11223344);数据表(通常是特定于版本的配置);字符串(GDI对象名称:“MyWindow”、“MyClass_56”、“findme1”等);PDB路径;2.代码段(1)独特的功能实现:Syscallwrapper;内联汇编;专有加密功能/实现;(2)技术和习语:首选泄漏技术(HMValidateHandle、gSharedInfo等);首选提升技术(如何执行代币替换?);堆喷射技术(使用AcceleratorTables?Windows?位图?)(3)框架利用过程:选项#1:主要开发过程,分支很少;选项#2:针对不同版本的操作系统进行多次调整和调整;(4)代码结构及其内部功能:模块化:功能分离;结构化:分离删除阶段(初始化、配置、喷射、代币交换等);全局变量:全局变量中存储了哪些信息?(操作系统版本?操作系统版本枚举?只是特定的字段偏移量?)(5)版本特定的配置:字段偏移量:哪些字段特别重要?首选系统调用:首选系统调用集(6)提供给客户的API研究人员将寻找与漏洞利用相关的工件集,同时考虑到这些属性,研究人员审查了研究人员拥有的两个样本,并标记了研究人员认为的一些工件独特的。即使研究人员只有两个小型二进制文件(基本相同),研究人员仍然能够创建搜索规则以找到该开发人员编写的更多示例。令研究人员惊讶的是,研究人员能够找到比想象中更多的发育线索。按照这个逻辑,一个一个的,一共找到了几十个例子,每一个例子都完善了研究者的搜索规则和方法。通过对样本的仔细分析,研究人员能够了解哪些样本利用了哪些CVE,并据此创建了一个时间线,确定该漏洞是被编写为零日漏洞、一日漏洞还是基于扩散在暴露之前进行修复。和类似的技术。到目前为止,仅根据研究人员的线索识别技术,在没有进一步情报的情况下,可以将10多个CVE归因于同一漏洞利用开发者。后来,公开报道披露了研究人员针对的漏洞利用卖家的名字:Volodya(又名Volodimir),前身为BuggiCorp。似乎研究人员并不是唯一跟踪此漏洞的人,因为卡巴斯基已经多次报告了有关他们的一些相关信息。此外,ESET在其关于Buhtrap的VB2019演示中提到了一些关于Volodya的重要线索。根据卡巴斯基的说法,Volodya最初以其“BuggiCorp”绰??号为人所知,当时他们在臭名昭著的Exploit[.]incybercrime论坛上宣传Windows零日漏洞,起价为95,000美元。这些年来价格一直在上涨,他们的一些WindowsLPE零日攻击的售价高达200,000美元。正如卡巴斯基报告中公布的那样,后来被研究人员证实,Volodya将漏洞利用软件出售给了犯罪软件和APT组织。漏洞分类尽管研究人员的一些初始搜索规则需要进行一些微调,但即使是我们收到的直接结果也非常令人惊讶。经过进一步的搜索方法修正,研究人员设法找到了更多的样本,这些样本都是Windows中的本地权限提升(LPE)漏洞。在这些示例中,研究人员能够识别出以下被攻击者利用的CVE列表。此外,在对漏洞进行分类的过程中,研究人员选择了一种保守的方法来判断给定的漏洞是零日漏洞还是一日漏洞。如果其他安全供应商认为这只是一个在野利用,那么它就是一个零日漏洞。如果研究人员发现足够的证据表明研究人员的一个样本确实在野外传播,正如供应商在他们的报告中所描述的那样,那么研究人员也会将其标记出来,而其他一切都被标记为一日错误。在下一篇文章中,我们将详细谈谈具体的漏洞。