于我

反病毒软件静态查杀能力评估的3个要素

2023/06/20
引言

恶意软件一直是计算机系统和网络安全的严重威胁,为了保护计算机系统和网络免受安全威胁,安装反病毒软件是企业常见的安全防护手段。在反病毒软件中,主要是通过杀毒引擎来检测和清除恶意软件,它是反病毒软件中最基础也是最核心的组件。

在杀毒引擎的设计中,特征码、启发式查杀和人工智能查杀是最常见的检测技术。其中,特征码查杀属于静态查杀检测范畴,使用针对已知病毒特征定义的病毒库文件来进行查杀,当被查杀的文件的特征与病毒库文件中已有的病毒的特征匹配时,杀毒引擎就会判定该文件为病毒。特征码查杀的优势在于检测速度快,缺点是对于未知病毒类型的检测效果差。

为解决特征码查杀的缺陷,启发式查杀和人工智能查杀技术随之出现,开始代替特征码查杀并成为杀毒引擎中不可缺少的一部分。启发式查杀通过对文件的代码、结构、行为等进行分析,以及与已知病毒和恶意软件特征进行比较,来判断文件是否具有潜在威胁;人工智能查杀是通过对海量样本进行强化学习,以固定方法抽取特征,并对特征进行统计、分析,进而产生计算模型,依照模型预测新样本是否属于恶意样本。这些新技术的广泛应用,使静态查杀技术得到不断完善。

针对杀毒引擎技术的不断变化,需要持续进行静态查杀能力评估,以便更好地了解杀毒引擎的防护有效性,做到知己知彼,从而为安全运营工作提供有效的支撑依据。在评估维度的考量上,灰度安全认为应优先从“已知样本、变种样本、查杀能力”三个要素入手,与安全运营工作相契合,持续迭代并完善。

1.已知样本集选择

1.1文件类型

当杀毒引擎面对待扫描的样本时,会通过识别和分析样本的数据格式来进行处理。不同的文件类型将被分配到对应的模块中进一步分析,例如:对于可执行文件,杀毒引擎可能会进行脱壳操作以解密隐藏的恶意代码;对于文档文件,引擎可能会进行复合文档解码以检测隐藏在其中的恶意内容;而对于脚本文件,引擎则可能会进行语义语法分析以检测其中的恶意指令或行为。

因此,在选取样本时,要考虑纳入不同类型的文件,以验证此类文件的检测能力,包括:可执行文件(PE、ELF、Mach-O)、文档文件(word、excel、pdf)、脚本文件(vbs、powershell、sh)等,样本文件类型越丰富,对杀毒引擎检测能力的评估就会越全面。

1.2病毒类型

不同病毒类型的恶意软件都有其特定的攻击方式和危害性质,例如:后门病毒使黑客能够远程访问受感染的计算机,从而进行非法活动;宏病毒被激活后可以执行恶意操作,如传播病毒或损坏文件等。选择多种病毒类型的恶意样本有助于判定反病毒引擎能力的全面性和深度。

不同安全厂商对恶意程序主类型有不同的分类,可选择的分类包括:感染型病毒、勒索病毒、后门病毒、漏洞利用程序、间谍木马、宏病毒、蠕虫病毒、下载器木马、木马病毒、黑客工具、挖矿病毒等。

1.3样本来源

确定要评估的样本类型后,下一步是选择可信渠道来获取样本。为了确保样本具有代表性且能够涵盖流行的病毒家族,可以根据威胁情报数据获取每种主要类型下最流行的100+病毒家族,以构建合适的样本集。

获取样本的途径可以包括以下几种方式:

威胁情报平台:利用专业的威胁情报平台,如VirusTotal、微步等,可以获取关于病毒家族的相关信息和样本。

合作伙伴:通过和知名安全厂商合作,获取样本集。

开源社区:一些恶意软件存储库、论坛或黑客社区中可能存在可供下载的恶意样本,通过社区分享再结合自研分析,最终确定纳入样本范围。

2.变种样本集构建

2.1shellcode加密

将一段可查杀的shellcode进行加密,执行后进行解密,看加密后的shellcode生成的PE文件是否报毒,如果报毒,对比加密前后的报毒名。

具体操作如下:

使用cobaltstrike生成shellcode,将shellcode转成C形式数组。

将程序编译好后,shellcode位于数据段,并没有加密,cobaltstrike比较常见,市面上的安全软件基本都会检测,将检测名称进行记录。

将shellcode进行xor加密,运行时解密执行。

除了使用正确的密钥解密,也可以再使用错误的密钥进行解密。

将上述代码编译为x86/x64两个版本,分为验证32位样本和64位样本的报毒情况,不同的报毒情况可验证的点如下:

2.2环境构建

该项测试是属于shellcode加密的进阶版验证,只有环境校验通过才会到解密shellcode步骤,更加考验杀毒引擎的虚拟沙盒能力。

2.3加壳/混淆器

加壳是一种常见的技术手段,用于增加恶意软件样本的隐蔽性和抗逆向分析能力。通过对样本进行加壳,可以改变其文件结构和代码逻辑,使得杀毒引擎难以直接检测样本中的恶意行为。可以选择不同种类的壳对报毒样本进行加壳,并测试加壳后样本的报毒情况。

在加壳样本时,可以选择常见的压缩壳(如UPX、FSG、NSPack等)和加密壳(如Themida、VMProtect等),也可以考虑使用其他小众、开源或自制的壳。常见的压缩壳通常能够有效地减小样本的文件大小,同时还具备一定的保护性能,使得恶意代码更难被静态分析。这些壳已经被广泛使用,因此杀毒引擎可能已经对其进行了优化和检测。加密壳则通过加密和混淆样本的代码逻辑,增加了破解和分析的难度。这些壳通常具备较强的保护能力,但也可能会影响样本的执行效率。除了常见的壳类型,选择其他小众、开源或自制的壳可能会增加样本的独特性,从而提高对抗反病毒引擎的能力。然而,这些壳可能需要更多的测试和验证,以确保加壳后的样本仍然能够正常执行,并且能够达到预期的保护效果。

需要注意的是,无论选择何种壳类型,都要保证加壳样本的可执行性,否则使用损坏的样本来验证杀毒引擎是不合理的。

3.查杀能力

根据确定好的样本集对安全软件静态查杀能力进行评估。在测试过程中,可以检查安全软件在样本集中的查杀率、清除样本中恶意代码的能力等因素。

3.1删除查杀

可以通过将不同文件类型和病毒类型的恶意软件样本进行组合,来验证杀毒引擎在不同方面的检测能力强弱。例如:可以使用包含勒索病毒、后门病毒、挖矿病毒等不同主类型的恶意样本,结合文件格式、评估需求等场景,进行杀毒引擎的检测能力评估。在进行样本组合时,需要关注不同类型样本数量的分布,以保证不同类型恶意软件的检测能力能够充分体现。

3.2清除查杀

对于宏病毒和感染型病毒,反病毒软件一般是以清除恶意代码的方式进行查杀。

感染型病毒是将恶意代码附着到正常程序上,通过被感染的正常程序进行传播,对于该类恶意程序,需要评估杀软的查杀方式是否正确,是否是清除查杀,清除后的程序能否正常执行,清除后是否有恶意代码残留。

宏病毒可以分为两类,一是具有感染型特性的宏病毒,激活宏代码后会将恶意代码驻留在宏模板中,并感染用户打开的正常文档,这类宏病毒需要清除宏代码,不能进行删除操作,删除操作会删除用户文件,影响用户使用。二是近年来流行的钓鱼邮件宏病毒,这类恶意文档激活宏代码后,一般会隐藏执行powershell或cmd下载执行后续攻击载荷,这类宏病毒文档是需要看安全厂商的处理策略,既可以删除查杀,也可以清除查杀。

总结

在了解杀毒引擎技术的基础上,灰度安全针对构建评估能力提出了三个具体要素:已知样本集、变种样本集和查杀能力,以评估反病毒软件在静态查杀的能力。在实际评估测试中,还需要考虑测试时间、查杀时效性、查杀稳定性等其他因素。此外,在确保测试结果准确性的前提下,可持续常态化评估也至关重要。需保持测试环境的稳定性,并按标准化测试流程进行操作,保证测试的一致性和测试结果的连贯性,以便在不同阶段进行对比分析。

通过综合考虑以上因素,尽可能全面评估反病毒软件在静态查杀方面的能力,实现风险度量以提升主动防御能力。

上一篇:【漏洞分析】CVE-2022-41852 Apache Commons JXPath 远程命令执行漏洞

开始免费试用灰度产品

申请试用