本文作者:安全内参社区研究员 安未然

摘 要

攻击性安全工具(Offensive Security Tools,OST)是否可以不受限制的发布已成为信息安全领域最具争议的话题之一。支持者认为,OST是培养新研究者和探索建立新防御实践的基石,有助于防御者应对新型攻击,并进一步增强企业的信息系统。反对者认为,OST将直接被黑客用来开发新的恶意软件,提高了黑客的攻击能力

本文分析了OST开源项目与黑客攻击能力的关系,发现集成障碍较少、说明文档详细、发布时间稍早的开源OST项目,往往使用门槛比较低,更受黑客组织的青睐。

本文建议OST开发者要提高代码或工具的使用门槛,使得任何使用者都需要对技术有更深入的理解才能使用。这有助于增加恶意软件集成的投入成本,同时保持OST项目的教育价值;并且,在OST代码或工具中添加特殊值,帮助防御者构建基于签名的检测,进而及时的发现或防止OST滥用。

01 前言

攻击性安全工具(Offensive Security Tools,OST)是指在不利用软件自身缺陷或漏洞的情况下,以合法身份实施入侵或规避安全防御机制的软件代码库。根据具体问题和应用场景的不同,OST的功能往往也各不相同。OST通常由信息安全专业人士开发,目的是促进网络安全相关技术的发展。然而不幸的是,这些OST代码往往因具有攻击能力,常常被黑客组织利用进行非法的网络攻击或数据窃取。OST项目能否被不受限制地发布,已成为信息安全领域最具争议的话题之一。

当前,许多的OST项目是开源发布的,任何能够上网的人都能够自由的访问。高级黑客正在利用这些唾手可得的开源OST项目提高网络攻击和数据窃取能力。甚至,许多OST工具都是作为独立的可执行文件提供的,黑客组织只需稍加修改即可使用。因而,OST也常常被误解为提升黑客攻击能力的工具。

随着越来越多的黑客开始采用开源OST技术进行非法活动,一些人开始质疑不受限制地发布这些开源项目是否利大于弊。这些人认为,信息安全专业人士向公众开源发布的OST项目,直接被黑客组织用来开发新的恶意软件,将会大大提高黑客组织的网络攻击能力,并错失向黑客组织索取攻击成本的机会。并且建议,这些OST工具应当只发布在由信息安全专业人士组成的封闭论坛上,这个封闭论坛只允许信任的成员进入和访问,尽可能地避免被黑客组织利用的可能。

然而,开源项目的灵魂支持者对这种观点嗤之以鼻。这些人认为,网络安全需要大家的共同努力,不受限制地发布OST项目具有重要的教育意义。开源OST项目不仅有助于培养新的研究者,而且有助于信息安全人员了解网络攻击的特点和方式,并基于这些攻击特点和方式探索新的防御实践和应对新型攻击,从而进一步增强企业的信息系统,改善整体安全态势。他们还认为,反对者提出的排他性方案将不可能维持下去,因为排他性方案会给网络安全入门者的知识获取造成额外的经济负担,特别是会给贫穷国家的网络安全入门者造成经济负担。

究其如何,本文将在第二节中分析开源OST工具的影响力及其被黑客利用的情况,在第三节中介绍相关建议措施。

02 开源OST项目的影响力

为了分析开源OST项目的影响力,本文收集了供应商过去几年报告的数千个黑客攻击工具,以及最近的29个基于脚本的黑客攻击工具,采用基于YARA规则的检测算法(具体细节见附录部分)对黑客攻击工具重用开源OST项目的状况进行识别,发现了80个开源OST项目被黑客攻击工具重用了代码。

图1:按类别分组的OST工具

为了能够了解不同类别的OST项目对黑客的吸引力,本文将这些工具按类别划分为横向移动代码库、内存注入代码库、远程控制木马(RAT)、凭证访问代码库、UAC绕过代码库、权限提升、常用程序和其他。其中,内存注入代码库和RAT工具是被黑客利用最多的OST项目。

  • 对于横向移动代码库来说,Mimikatz占据主导地位。需要说明的是,本文只将定制Mimikatz代码的形式纳入到关系图中,使得该类别的关联关系大为减少;

  • 对于RAT工具来说,其中最流行的工具是Empire、Powersploit和Quasar等项目;

  • 对于内存注入代码库来说,其中最流行的工具是ReflectiveDllInjection库,其次是MemoryModule库;

  • 对于UAC绕过代码库来说,UACME库占据主导地位。特别地,一小群来自亚洲的黑客组织在使用一个不太知名的Win7Elevate库;

  • 对于凭据访问代码库来说,没有占据主导地位的恶意代码库。尽管许多恶意软件中都植入了凭证窃取的功能,但是这种库相对没有其他类别的代码或工具受到黑客欢迎。究其原因在于黑客论坛中充斥着各种软件类型的凭证窃取工具,而且往往比开源的凭据访问代码库窃取能力更强。

图2:开源OST项目与黑客能力的关系图

为了能够了解开源OST项目与黑客能力的关系,本文绘制了图2所示的关系图。其中,蓝色节点代表开源项目,黄色节点代表次要黑客(例如,多个低调的勒索软件团体)、橙色节点代表高级和知名的威胁(例如Carbanak),红色节点代表政府资助的组织。详见:https://www.intezer.com/ost-map/。总的来说,开源OST项目与黑客能力的关系如下:

首先,复杂的开源OST项目往往不会被黑客滥用。许多被广泛宣传的具有明确攻击性能力的代码或工具,在GitHub获得了数百个星,但这些代码或工具却很少被黑客组织使用。对于带有“复杂”特性的OST 代码或工具来说尤其如此,这些代码或工具往往需要更深入的理解才能使用。例如,TokenVator(权限提升),NetRipper(后利用)、SharpSuite(内存注入)和HookPasswordChange(凭证访问)。

其次,具有较高教育价值的开源OST项目通常会被大多数的高级黑客采用。许多开源OST项目展现出了较高的教育价值,文件记录良好,常见于众多的学术届或工业届会议。大多数的高级黑客往往会吸收这些项目中的网络攻击能力。例如,NetRipper,作为一个网络流量拦截工具,被俄罗斯政府资助的APT项目记录和使用。

第三,新的开源OST项目通常不太会被黑客采用。开源OST项目是否在黑客组织中流行的另一个重要参考是项目的发布日期,黑客往往需要逐渐吸收新开源OST项目的攻击能力。与旧的开源OST项目相比,新的项目往往得到黑客的关注更少,尤其对于处于饱和状态的内存注入等领域,新恶意软件很少引入OST新的代码或工具。以Pinjetra代码库为例,在撰写本文时,它有大约400颗星。自2019年年中以来,该库一直托管在GitHub中,但我们并未在收集的恶意软件中检测到任何使用该代码库的样本,也没有任何供应商报告此类使用情况。

总之,我们认为集成障碍较少、说明文档详细、发布时间稍早的开源OST项目,往往使用门槛比较低,更受黑客组织青睐

03 建议措施:降低开源OST项目负面影响

本文分析了开源OST项目的影响力。一方面,开源OST项目是培养新研究者和探索建立新防御实践的基石,有助于防御者应对新型攻击,并进一步增强企业的信息系统。另一方面,开源OST项目将直接被黑客用来开发新的恶意软件,提高了黑客的攻击能力。

本文以为,攻击工具的影响需要从设计目的角度进行界定。若攻击工具的设计目的是防御,则认为是良性的;若攻击工具的设计目的是滥用,则认为是恶性的。因此,根据攻击工具的设计目的的不同,可将攻击性工具分为良性攻击工具和恶性攻击工具。例如,SysInternals的工具(PSExec或procDump)经常被黑客组织滥用,但这些工具不应被列为恶性攻击工具,因为它们的目的是提高信息系统安全性,而不是提升黑客攻击能力。

对于开源OST项目,尽管会被黑客滥用,但其设计目的是良性的。因此,我们要积极发挥OST项目的正面影响,降低或避免开源OST项目的负面影响。主要建议措施如下:

1)OST开发者要提高相关代码或工具的使用门槛,使得任何使用者都需要对技术有更深入的理解才能使用。这将会大大增加恶意软件集成这些代码或工具的投入成本,同时保持OST代码和工具的教育价值。

2)OST开发者要在代码或工具中添加特殊值,帮助防御者构建基于签名的检测,进而及时的发现或防止OST滥用。例如,Mimikatz的作者采用了这种方法,生成的凭据生命周期默认为10年,这是一个非常不规则的数字。

附录:开源OST与黑客能力关系图的构建方法

通过熟悉黑客所使用的OST代码库,有助于理解黑客部分攻击代码的外观。从OST中复制的代码通常不会偏离源代码太多,我们希望在理解OST与黑客能力关系之后能够识别关系的模式和演化。例如,从OST项目MemoryModule内存注入代码库中抽取的恶意代码,在验证要注入的内存映像的PE头之后,它是唯一一个调用SetLastError API的内存注入代码库。

首先,本文将用到的OST开源项目和黑客攻击工具皆被下载或者拉取到本地。黑客攻击工具包括供应商过去几年报告的数千个黑客攻击工具,以及现有的供应商报告的29个基于脚本的黑客攻击工具。

其次,本文采用逆向工程的方法将开源OST项目代码转换成二进制代码形式。具体来说,本文将业界领先的Mimikatz和UACME两个开源项目编译成所有可能的二进制代码形式。

然后,本文在恶意软件样本的数据库里识别这些二进制代码的重用,并绘制了恶意软件家族重用开源OST的关系图,包括使用代码注入、权限提升和横向移动等技术实现的OST开源项目。为了更快地发现重用,本文构建了基于YARA规则的检测方法,通过自动化的技术发现攻击性代码库和家族相互之间的关系。具体来说,本文将从OST项目中编译出的样本进行聚类,从中收集了可重复的二进制模式,并基于二进制模式自动生成YARA规则,用于对恶意软件滥用开源OST项目的情况进行检测和识别。

该方法遇到的主要挑战是,不同版本的Visual Studio编译器会为同一代码库生成不同的代码。因此,我们构建了一个Power Shell包装器,将多个版本Visual Studio编译器编译代码统一起来。Visual Studio编译版本目前支持VS2010到VS2019;为了确保每个代码库的所有代码都被覆盖,我们拉取了Git的项目成熟版本和所有历史版本,以覆盖所有因项目成熟而被删除的代码;对于尚未发布的进攻性项目,我们通过参照安全供应商的报告来富化关联关系。

我们在VirusTotal中部署了这些YARA规则,并能够找到许多未被发现的OST滥用样本。例如,我们能够通过跟踪改进的ImprovedReflectiveDLLInjection 库的使用情况,找到几乎未被检测到的Lazarus样本,并且能够识别出该团队采用该库的第一个实例。

参考链接:

https://vblocalhost.com/uploads/VB2020-Litvak.pdf

声明:本文来自互联网安全内参,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。