买手作产品,送精品安全学习资源,有需要联系教父微信,购买后拉群
目前手作资源群已更新到1T资源,包含资料和课程
资料区
课程区
汽车部件安全测试
比特币密码破解研究
最新CISSP题库
国外经典攻防案例场景方案
安全审计资料
AI结合网络安全进行流量监测
APT免杀
应急响应资料
欧盟数据安全认证
下面列举一篇手作资源群里的免杀资料,完整版在手作资源群内
安排!
HELLO DECEMBER
防病毒软件,也称为防病毒软件或安全解决方案,在保护计算机系统和网络免受各种网络威胁方面发挥着关键作用。网络安全领域的最前沿是防病毒引擎,它是复杂的软件组件,在识别和消除恶意软件方面发挥着至关重要的作用。本章深入探讨了防病毒引擎及其用于对抗各种威胁的复杂策略。为了应对日益复杂的恶意软件,防病毒引擎已经发生了重大变化,采用了许多检测方法和技术,每种方法都有自己的优点和局限性。这些方法包括使用签名、行为、启发式分析、沙盒分析、机器学习、基于云的分析和信誉统计进行检测。此外,计划扫描和定期更新可确保防病毒软件的长期有效性。本章介绍了防病毒解决方案的一般结构,并讨论了签名数据库和基本技术(例如签名匹配方法)。
8.1 简介
防病毒引擎,也称为防病毒软件或安全解决方案,在保护计算机系统和网络免受各种网络威胁方面发挥着关键作用。在这个网络安全领域,最前沿的是防病毒引擎,它是复杂的软件组件,在识别和消除恶意软件(通常称为恶意软件)方面发挥着至关重要的作用。本章探讨了防病毒引擎,重点介绍了它们的基本检测方法和结构组件。初步概述建立了对这些复杂系统的基础理解。阐述逐步描述防病毒软件采用的检测策略,首先是基于签名的检测,它依赖于预先知道的数据模式来识别威胁。行为检测遵循一种方法,其重点在于潜在恶意软件执行的操作,而不是其代码签名。后续章节讨论了启发式分析,一种将算法概率和规则应用于可疑恶意软件的技术,以及沙盒分析,它将代码隔离在安全环境中以监视其行为。本章还介绍了机器学习在威胁检测中的出现,说明了它在适应新的、以前未发现的威胁方面的作用。接下来,基于云和基于信誉的检测代表了安全架构中的附加层,它们分别使用庞大的数据网络和文件信誉共识来尝试提高威胁识别的准确性和速度。接下来,防病毒解决方案的架构受到关注,其结构细分为主动监控、文件验证、决策过程和缓解策略。计划扫描和定期更新是任何防病毒模型的支柱,可帮助系统避开已知和新出现的威胁。此外,本章集中讨论了签名匹配和威胁检测这一关键方面背后的方法,希望下一章与这些安全解决方案中使用的主要算法相关的内容能引起人们的兴趣。
8.2 检测方法
防病毒引擎采用各种方法来检测和识别潜在威胁。防病毒引擎中使用的一些最重要的方法是:(a)基于签名的检测,(b)基于行为的检测,(c)启发式分析,(d)沙盒分析,(e)机器学习,(f)基于云的分析,以及(g)基于信誉的检测。基于签名的检测方法涉及将文件签名或模式与已知恶意软件签名的数据库进行比较(图 1)。
如果找到匹配项,则将该文件标记为恶意文件。接下来,基于行为的检测技术专注于监视文件或进程的行为。它寻找可疑活动,例如未经授权的系统修改、异常网络流量或修改关键文件的尝试。启发式分析使用不同的算法来分析文件的结构和行为。他们寻找恶意软件常用的可疑模式、代码序列或混淆技术。这种方法有助于检测未知或以前未见过的威胁。防病毒引擎还可以在称为沙箱的受控环境中执行可疑文件。引擎只需在隔离环境中观察文件行为,就可以确定它是否表现出恶意行为,例如试图修改系统文件或访问敏感数据。此外,许多防病毒引擎利用机器学习算法来检测恶意软件。机器学习算法可以学习识别区分恶意软件和合法程序的模式和特征。当然,这可以通过对已知恶意软件和良性文件的大量数据集进行预先训练来实现。防病毒引擎可以使用基于云的资源来卸载一些检测任务。可疑文件或数据可以发送到云服务进行分析,在那里可以利用更广泛的资源和更新的威胁情报来识别潜在威胁。前面提到的最后一种方法是基于声誉的检测。基于声誉的检测涉及根据文件、网站或应用程序的数字证书、下载源、用户评级或以前的行为等因素评估其声誉或可信度。声誉不佳的文件或实体可能会被标记为潜在有害。请注意,最后一种检测方法对我们的文明造成了最大的损害,因为它允许不良做法(它可以确定哪些应用程序或哪些提供商可以存在于互联网上,无论真假)[1]。值得注意的是,防病毒引擎经常使用这些启发式方法的组合来提供针对恶意软件和其他威胁的全面保护。通常,加权结果的总和是平衡检测背后的原理,它允许最少的误报和漏报。
8.2.1 基于签名的检测
基于签名的检测是防病毒引擎用于识别和检测已知恶意软件的基本方法之一。它通过将文件的签名或模式与已知恶意软件签名的数据库进行比较来运行。防病毒引擎可以使用快速匹配算法、压缩技术、缓存、并行处理和硬件加速来实现高速数据库访问并提供针对已知威胁的实时保护。
8.2.1.1 签名数据库
防病毒引擎维护一个包含已知恶意软件签名集合的数据库。每个签名本质上都是一个唯一的标识符或指纹,代表特定的恶意软件变体或家族。签名数据库是防病毒引擎的重要组成部分,用于存储已知恶意软件的签名或模式。这些签名用于识别和检测特定的恶意软件变种。
8.2.1.2 数据库:收集和生成
防病毒供应商不断收集和分析已知恶意软件的样本以生成签名。这些样本来自各种来源,包括用户提交、蜜罐、安全研究人员和自动化系统。对收集到的样本进行分析以提取将其区分为恶意软件的独特特征和模式。对恶意软件样本的分析导致签名的生成。签名可以基于各种属性,例如文件哈希、特定字节序列、代码片段或行为模式。这些签名代表识别特定恶意软件株存在的独特特征。签名数据库的结构允许高效和快速查找。它可以使用索引技术(例如哈希表、树或 trie 结构)来组织签名以便快速检索。这样的数据库经过优化,可以处理大量签名并提供快速访问以匹配正在扫描的文件或进程。
8.2.1.3 发动机转速优化
为了实现高速检测,防病毒引擎实施快速匹配算法,将数据库中的签名与正在扫描的文件进行比较。采用诸如字符串匹配算法(例如,Aho-Corasick、Boyer-Moore)或按位运算(例如,Bloom 过滤器)之类的技术来加速匹配过程。这些算法可以快速确定文件是否包含任何表明存在已知恶意软件的签名。防病毒引擎定期更新签名数据库以纳入新的恶意软件签名。这些更新包括新发现的恶意软件毒株或变种。为了优化速度,通常会实施增量更新,其中只将新的或修改后的签名添加到数据库中。这减少了更新所需的时间,因为每次都不需要下载或处理整个数据库。签名数据库可以使用压缩技术来减小其大小并提高查找速度。可以采用各种压缩算法,例如LZ77、霍夫曼编码或基于字典的压缩,以最小化存储要求,同时保持高效的搜索能力。为了进一步提高速度,防病毒引擎可以实施缓存机制。经常访问的签名或最近扫描的文件可以缓存在内存中,以避免重复查找数据库。缓存通过提供对常用签名的更快访问来减少签名匹配所需的时间。并行处理和硬件加速也用于提高速度,特别是对于专业服务器环境,文件扫描速度必须很高,以避免服务器拥塞。
8.2.1.4 文件扫描:冗长
当遇到文件时,防病毒引擎会通过从文件中提取特定特征或属性(例如文件大小、文件类型和代码段)来扫描文件。文件扫描是防病毒引擎的重要组成部分,它涉及分析系统上的文件以识别潜在的恶意软件或恶意行为。防病毒引擎的速度通常取决于如何访问签名数据库以及如何在文件和数据库之间进行签名比较。但是,在实际扫描过程开始之前,引擎可能会采用其他策略来加快该过程,例如多线程扫描、智能文件跳过、文件信誉检查或文件类型特定分析。因此,为了提高速度和效率,防病毒引擎实施了许多瓶颈策略来测试文件扫描的冗长性。其中一种策略是多线程扫描。该技术允许使用多个线程或并行处理同时扫描多个文件或进程。此外,所有防病毒引擎都采用智能文件跳过机制,以避免不必要地扫描已知的安全文件。这些机制使用文件元数据(例如文件大小、文件类型和受信任的数字签名)来跳过不太可能包含威胁的文件。跳过安全文件(例如 .txt、.bmp 等)可减少扫描时间并最大限度地减少系统资源利用率。例如,对文本文件进行宝贵的扫描有什么意义?即使文本文件可能包含签名,但在更改扩展名之前无法执行该文件。一旦将扩展名更改为可执行文件,引擎就会对其进行扫描。然而,有一种中间方法可以跳过文件。例如,正如读者将在本文后面看到的那样,实际上会在文件扩展名和该扩展名所需的适当格式之间进行最小检查。一旦扩展名与内容格式匹配,则可以跳过文件或以其他方式扫描。此外,在扫描过程中,防病毒引擎可能会对文件执行信誉检查。这涉及查询信誉数据库或利用在线信誉服务来确定文件的可信度。在扫描过程中,可以跳过信誉良好的文件或降低其优先级,从而进一步提高速度和效率。信誉方法对速度有两个考虑:(a)如果验证请求是在线发出的,则该方法可以更有效地利用本地硬件资源。(b)如果在信誉数据库文件上本地进行验证,则信誉数据库非常简单,并且比签名数据库消耗的硬件更少。因此,基于文件类型考虑的不同分析方法也可以优化引擎的速度。不同的文件类型需要特定的分析技术。因此,防病毒引擎针对不同的文件格式(如文档、档案、可执行文件、脚本或多媒体文件)实施专门的分析例程。文件类型特定分析允许有针对性地扫描和检测特定于每种文件类型的威胁。例如,对于不可执行文件(如“.pdf”文件或“.jpg”文件(以及其他文件),问题是这些文件是否包含漏洞,而不是特定的恶意软件应用程序。因此,为了优化和提高速度,在这种情况下的方法是仅使用漏洞签名,而不是整个签名数据库。这里的底线是,在防病毒核心接管之前,文件扫描程序可以在优化速度方面发挥很大作用。节省资源的另一种方法是引入行为。即防病毒软件何时以及如何扫描不同的文件。大多数情况下,防病毒引擎提供实时扫描功能,以便在访问或执行文件时主动检测和阻止威胁。实时扫描持续监控文件活动并实时扫描文件,提供即时的恶意软件防护。但是,决定扫描什么和何时扫描是另一项关键优化,可让防病毒解决方案在不同操作系统环境中达到最佳效果。
8.2.2 基于行为的检测
基于行为的检测,也称为动态分析,是防病毒引擎用来根据其行为或动作识别潜在威胁的一种方法。基于行为的检测不依赖于预定义的签名,而是专注于实时监控文件或进程的活动。这种检测方法需要什么?它涉及监控活动,通常基于行为签名或检测异常的基线。防病毒引擎持续监控文件、进程或系统组件的行为,以检测任何可疑或恶意活动。这包括观察它们与操作系统、网络、文件、注册表和其他系统资源的交互。防病毒引擎通过分析合法文件和进程的典型活动来建立正常行为的基线。偏离此基线被视为恶意行为的潜在指标。异常检测技术(例如统计分析或机器学习算法)通常用于识别异常行为模式。基于行为的检测方法分析文件或进程执行的操作,以确定它们是否表现出潜在的有害行为。这可能包括修改系统文件、尝试访问敏感数据、创建或修改注册表项、建立未经授权的网络连接或向其他进程注入代码等活动。基于行为的检测可能涉及动态分析文件或进程的代码执行。这可能包括监视文件或进程执行的应用程序编程接口 (API) 调用、代码注入或内存操作。在某些情况下,可疑文件或进程在称为沙盒的受控环境中执行。沙盒提供了一个隔离且受控的系统,可以在其中观察文件或进程的行为,而不会对实际操作系统构成风险。防病毒引擎只需观察沙盒内的操作和交互即可识别恶意行为。此外,这种类型的检测还可以生成行为签名(即顺序事件:事件 [1]、事件 [2]、事件 [3] … 事件 [ n]) 为基础的恶意行为。这些签名来自与已知恶意软件相关的行为模式。防病毒引擎可以使用这些签名来识别新的或未知的文件或进程中的类似行为。行为检测可有效检测没有预先存在的签名的新的或未知的恶意软件变种。也就是说,它可以识别常规的基于签名的检测可能会遗漏的恶意行为。但是,如果合法软件或进程表现出与恶意行为类似的行为,基于行为的检测可能会产生误报。请注意,由于需要持续监控和分析系统活动,该方法也可能对性能产生一定影响。
8.2.3 启发式检测
启发式分析是防病毒引擎用来通过分析文件的结构和行为来检测潜在威胁的一种方法。它涉及采用各种算法和技术来识别恶意软件常用的可疑模式、代码序列或混淆技术。这涉及代码结构分析、代码混淆检测、可疑 API 调用检测、字符串分析、行为模式识别、代码模拟和解码,尤其是(至少对于现代安全系统而言)机器学习技术。机械启发式分析涉及检查文件的结构以识别潜在的恶意特征。这包括分析指令的排列、控制流或通常与恶意软件相关的特定代码模式的存在。恶意软件作者经常使用混淆技术来隐藏他们的真实意图并逃避检测。启发式分析方法旨在通过查找看似复杂、使用过度加密或压缩或表现出通常用于混淆恶意行为的特征的代码来识别此类混淆技术。此外,启发式分析还涉及监视文件或进程发出的 API 调用。某些 API 调用与潜在的恶意活动有关,例如访问敏感系统资源、修改关键文件或建立未经授权的网络连接。识别和标记此类可疑 API 调用会对检测潜在威胁产生直接影响。另一种启发式方法是检查文件中存在的字符串以识别与恶意软件相关的模式。这包括分析嵌入的 URL、电子邮件地址、加密密钥或恶意代码中常用的特定关键字。因此,检测可疑字符串可能会指出潜在的有害文件。另一种启发式方法涉及识别恶意软件表现出的行为模式。这包括监视诸如试图禁用安全软件、修改系统设置、通过网络共享传播或表现出多态行为(更改其自身代码以避免检测)等操作。因此,识别这些行为模式有助于识别和分类潜在威胁。其他启发式技术可能涉及模拟或解码部分代码以了解其真实目的。这可以通过在受控环境中执行代码、动态分析其行为或应用专门的算法来解码混淆的部分来实现。这个过程也能揭露隐藏或加密的恶意功能。高级启发式方法的核心是机器学习 (ML) 算法,这些算法可用于启发式分析以提高威胁检测的准确性。这些算法可以通过对已知恶意软件和良性文件的大型数据集进行训练来学习识别区分恶意软件和合法程序的模式和特征。因此,ML 算法可以补充传统的启发式技术并提高威胁检测的有效性。前面提到的启发式方法只是一些一般性的考虑,读者将在本书的第二部分中了解到,如果正确理解一些一般的哲学细微差别(例如基线、参考框架、二进制、模型等),启发式方法是“无限的”,可以“当场”发明。因此,启发式分析包含一组有价值的技术,能够检测新的或以前未知的恶意软件变体。
8.2.4 沙盒检测
沙盒分析是防病毒引擎用来在受控和隔离的环境中检测和分析潜在恶意文件或进程的一种技术。沙盒提供与主机系统分离的受控和隔离环境。沙盒环境通常复制底层操作系统,包括文件系统、注册表、网络堆栈和其他基本组件。这确保可以观察到文件或进程的行为而不会影响实际系统的完整性。当文件或进程在沙盒中执行时,防病毒引擎会密切监视其活动。这包括跟踪系统调用、文件操作、网络连接和内存访问。然后,引擎可以通过监视这些活动来检测文件或进程表现出的任何可疑或潜在恶意行为。因此,沙盒分析侧重于了解文件或进程在执行过程中表现出的行为。这涉及观察操作,例如尝试修改系统文件、创建或修改注册表项、与可疑或恶意域通信、将代码注入其他进程或参与表明恶意软件行为的其他活动。更高级的沙盒通常包括网络监视功能,以分析正在分析的文件或进程生成的网络流量。这使得防病毒引擎能够检测到任何可疑的网络连接、与已知恶意域的通信或敏感数据的传输。但是沙盒分析需要什么呢?一个明显的操作是检查在沙盒中执行的代码。这可以包括反编译或反汇编文件以分析底层代码结构、识别潜在漏洞或搜索恶意代码模式。尽管在沙盒中执行,但防病毒引擎也可能评估可执行文件对系统的影响。这包括监控资源消耗、检测任何试图使系统资源超载的企图,或识别可能导致系统不稳定或崩溃的活动。此分析还可以检测可执行进程在运行时动态生成或修改的行为。这包括识别自修改代码、运行时代码注入或由特定系统条件触发的行为。动态行为检测允许防病毒引擎发现隐藏或多态的恶意软件。但是分析的目标是什么?那么,根据观察到的行为和特征,防病毒引擎将文件或进程归类为良性、潜在有害或恶意。此分类决定了要采取的适当操作,例如隔离、删除或允许文件继续运行。沙盒在识别和了解潜在恶意文件或进程的行为方面起着至关重要的作用。沙盒可能是现代防病毒解决方案的重要组成部分,有助于提高检测率并提供针对新兴威胁的主动保护。然而,沙盒是特定于操作系统的,这些检测机制的主要目的是设计一种独立于操作系统的启发式方法。也就是说,机器学习技术清楚地展示了这种能力。换句话说,在未知系统(例如“外星”计算机)的情况下,沙盒将毫无用处,而机器学习方法无论如何都会在这些情况下发挥作用。主要是因为这就是为什么机器学习在生物信息学中可以完美地用于研究生物信息(“外星”机器)以识别不同分子的新生物功能。
8.2.5 机器学习检测
反病毒引擎中的 ML 检测方法利用高级算法来学习已知和未知恶意软件的模式和特征。这些方法经常使用大型数据集来训练可以自动分类和检测恶意软件的模型。ML 涉及几个步骤,例如选择最佳训练数据和执行特征提取、训练模型和进一步优化特征选择。接下来,对模型进行实时检测评估。对于 AV 引擎,随着恶意软件的不断发展,这种改进是通过更新不断进行的。ML 的另一种方法是集成方法,即使用不同的相关 ML 方法来更好地区分模型并避免误报或漏报检测。因此,更详细地重申,ML 检测方法需要大量的训练数据,其中包括良性和恶意文件的标记样本。这些文件由安全专家精心策划和注释。数据集包括从文件中提取的特征,例如字节级序列、代码片段、元数据或结构属性。机器学习算法依靠相关特征来区分良性和恶意文件。特征提取技术应用于训练数据,将原始数据转换为有意义的表示,以捕获文件的重要特征。这些特征可以包括n -gram、频率分布、统计属性或语义表示。训练数据和提取的特征用于训练机器学习模型。为此目的,采用了各种算法,例如决策树、随机森林、支持向量机 (SVM) 或深度神经网络。模型学习识别数据中的模式和关系,以区分良性和恶意文件。机器学习模型可能对不相关或嘈杂的特征很敏感。为什么?这有一个更深层次的哲学解释,在我的上一本书中进行了广泛的讨论,它将噪音解释为来自我们参考框架(人类条件)之外的系统的信息位[71]。无论如何,特征选择技术用于识别对检测过程贡献最大的信息量和判别性特征。这可能会提高模型的效率和准确性。一旦模型训练完成,就需要对其进行评估以衡量其性能。使用单独的测试数据集计算准确率、精确率、召回率和F1 分数等评估指标。交叉验证技术,例如k 折交叉验证,也可用于确保稳健评估。在实时检测阶段,训练后的机器学习模型部署在防病毒引擎中,以分析和分类文件或进程。从文件或其行为中提取特征,并将这些特征输入模型进行预测。模型分配概率或置信度分数以确定文件是恶意文件的可能性。如前所述,ML 模型需要定期更新以适应不断变化的威胁形势。随着新的恶意软件变种的出现,新的样本被添加到训练数据集中,模型被重新训练以纳入最新的模式和特征。定期更新可确保模型保持有效并能够检测新的和未知的威胁。此外,即使在扫描时间和准确性之间做出权衡,也可以执行更复杂的分析。这些复杂的方法称为集成方法,用于提高整体检测准确性。这些集成方法能够结合多种机器学习模型,并且可以使用集成学习技术,例如 boosting 或 bagging。理论上,集成方法可以通过利用多种模型的优势提供更稳健、更可靠的检测结果。但是,简单模型更可靠,因为它们的复杂性不会超出安全研究人员的参考系统。显然,由于本书中经常提到的原因,ML 检测方法具有能够在已知或未知平台(即硬件和操作系统)上检测已知和未知恶意软件的优势。因此,ML 可以识别复杂模式并适应新威胁,而无需依赖预定义的签名。但请注意,经典签名(哈希或十六进制)对于市场上的所有防病毒解决方案来说仍然是神圣的。
8.2.6 基于云的检测
反病毒引擎中的基于云的分析检测方法利用云计算的强大功能来分析文件并检测潜在威胁。这些方法涉及将可疑文件上传到基于云的基础设施,在那里应用各种分析技术来确定其恶意性。当遇到可疑文件时,它会被上传到基于云的基础设施进行分析。这可以由用户手动完成,也可以由反病毒引擎在检测到可疑行为时自动完成。上传的文件在云中的受控沙盒环境中执行。沙盒复制必要的操作系统和软件组件,以安全和隔离的方式模拟文件的行为。这允许观察和分析文件行为而不会损害本地系统的安全性。在沙盒执行期间,文件的行为受到密切监视。这包括跟踪系统调用、网络连接、文件操作和文件执行的其他活动。此外,可以使用动态分析技术等方法来观察文件运行时的可疑行为。这涉及监视代码执行、内存访问、API 调用和其他运行时活动,以检测任何恶意行为的迹象。代码模拟、行为分析和异常检测等先进技术可用于识别潜在威胁。还可以检查文件在沙盒执行期间生成的网络流量。这包括分析与远程服务器的通信、检测与已知恶意域的连接以及检查网络数据包的内容。网络流量分析可以识别与命令和控制 (C&C) 活动、数据泄露或僵尸网络参与相关的潜在威胁。基于云的分析使用不同的威胁情报来源和信誉服务来评估文件及其相关行为的信誉。这涉及将文件哈希、URL、IP 地址和其他指标与已知的恶意实体数据库进行比较。因此,信誉和威胁情报数据可以识别具有已知恶意特征的文件。此外,由于一切都专用于服务器端,因此分析可以利用机器学习和人工智能技术来提高检测准确性。这些方法涉及在已知恶意软件和良性文件的大型数据集上训练模型,以学习区分恶意软件和合法软件的模式和特征。ML 算法可以根据学习到的模式对文件进行分类,从而增强检测能力。这种方法显然有优势,主要是因为系统可以完全专用并仅针对安全目的进行优化,而不像客户端计算机(手机、平板电脑或 PC)那样,防病毒解决方案会占用太多资源。因此,该方法提供了可扩展性和性能通过使用云基础设施的计算资源,可以实现更快、更高效的检测。基于云的环境可以处理大量文件上传,从而实现实时分析和对新出现的威胁的快速响应。分析完成后,将生成一份包含分析结果的报告。该报告可能包括有关文件行为、检测到的威胁和行动建议的详细信息。防病毒引擎可以根据分析结果采取适当的行动,例如隔离、删除或向用户发出潜在威胁警报。简而言之,在客户端计算机上发现的可疑文件的哈希值将发送到服务器(云)。如果哈希存在于服务器上的已知文件数据库中,则基于云的分析将停止,因为该文件已从另一个客户端上传,在这种情况下,与哈希值相关联的缓存结果将立即发送到客户端而无需进行任何分析。如果哈希不存在,则将来自客户端的可疑文件上传到云中进行进一步调查。服务器上完成各种步骤,例如沙盒(执行和行为监控、动态分析、网络流量分析)以及声誉和威胁情报。
8.2.7 基于信誉的检测
反病毒引擎中基于信誉的检测方法依赖于评估文件、网站、IP 地址和其他实体的信誉和可信度来识别潜在威胁(图 2)。这些方法利用信誉数据库、威胁情报来源和社区反馈来确定文件或实体是恶意的可能性。反病毒供应商维护信誉数据库,其中存储有关文件、网站、IP 地址和其他实体信誉的信息。这些数据库包含从各种来源收集的数据,包括安全供应商、研究组织和用户报告。信誉信息是根据与实体相关的已知特征、行为和历史数据分配的。信誉方法可以使用威胁情报来源来收集有关最新威胁和恶意活动的信息。这些来源包括安全源、威胁源、安全博客、论坛和安全专家共享有关新兴威胁信息的其他平台。对于文件,基于信誉的检测会评估其数字签名、文件哈希和其他文件属性的信誉。具有已知恶意签名或哈希的文件被标记为潜在危险。信誉数据库维护已知恶意文件及其相应信誉的列表。
此外,基于信誉的方法还会分析网站和 URL 的信誉。这涉及检查网站是否与恶意软件分发、网络钓鱼或其他恶意活动有关。进行此类检测的另一个原因是评估 IP 地址的信誉以识别潜在威胁。这包括检查 IP 地址是否与恶意活动有关,例如托管恶意内容、成为僵尸网络的一部分或发送垃圾邮件。
8.2.7.1 用户报告
基于信誉的检测方法依靠用户反馈和社区报告来收集有关潜在恶意实体的信息。用户可以向防病毒供应商报告可疑文件、网站或其他实体,然后对其进行信誉分析。用户报告在识别新出现的威胁和以前未知的恶意实体方面发挥着至关重要的作用。实时分析涉及查询信誉数据库和分析最新的威胁情报源以确定文件或实体的当前状态。因此,它确保使用最新信息来做出有关潜在威胁的决策。
8.2.7.2 将分数存入文件
基于信誉的检测根据文件、网站或 IP 地址的信誉为其分配分数或评级。分数越高表示恶意的可能性越高,分数越低表示风险越低。这些信誉分数允许防病毒引擎确定优先级并对潜在危险实体采取适当的措施。但这是如何计算的?下面显示了一个公式,它解释了文件或无 IP 地址的最终分数:
其中f ( x ) 表示函数f为文件x计算出的分数。文件x的最终分数是投票结果乘以“用户”可信度(即权重值)的总和。权重值由大量测试确定,并根据任何给定时间的用户群 ( m ) 收敛为一个常数。投票值可以是 1 或更高,但显然不能为零。为什么要将权重乘以投票?好吧,正如读者可以直观理解的那样,为防病毒供应商工作的安全研究人员的投票将比安全产品用户的投票更有分量。这种检测的主要问题,也是它对我们的社会极其危险的主要原因,是可能被操纵。为了强调这一点,可以以问题的形式给出一个例子:如果安全研究人员从未对文件x投票,那么文件或 IP 地址会发生什么?那么,用户投票就完全有权决定文件或 IP 地址是否是恶意的。现在,我们可以想象一家拥有众多竞争对手的正版软件公司,投资开发一款被用户标记为恶意软件的工程软件。简而言之,这种方法允许不公平和不公正的做法,这是任何文明的敌人。
8.3 防病毒解决方案:结构
全面了解防病毒解决方案的运作是了解所有安全解决方案“大局”的关键阶段。现代防病毒解决方案是复杂而精密的系统,旨在保护计算机系统免受各种威胁,包括恶意软件、病毒和恶意软件。本全面概述将考虑防病毒解决方案的复杂工作原理(全部基于Scut Antivirus),阐明其多方面的组件以及它为保护用户免受潜在网络威胁而采用的细致流程。但请注意,无论内部结构如何,防病毒解决方案都必须避免不必要地消耗安装它的计算机的硬件资源。也许这是任何安全解决方案的主要要求之一,仅次于实际保护能力。在过去,市场萎缩,安全解决方案的多样性下降就是因为这个特定原因(即不必要地使用硬件资源),而不仅仅是因为误报检测。
8.3.1 主动监控
主动监控模块可能包括进程监控、用户活动监控以及计划扫描和更新。防病毒解决方案的核心是主动监控模块(图 3A)。这个关键组件充当系统的眼睛和耳朵,持续监控计算环境的各个方面,以在潜在威胁造成危害之前发现它们。该模块在多个方面运作。其主要功能之一是监视正在运行的进程。它仔细检查程序和应用程序的活动,寻找可能表明恶意软件感染的任何异常或可疑行为。同时,该模块还密切关注用户活动。它分析用户行为模式,识别可能表示恶意意图的行为,例如试图执行未经验证的文件或访问可疑网站。主动监控模块还包含调度功能,使其能够按照预定义的时间间隔启动安全扫描和更新。这种主动方法可确保系统能够抵御不断演变的威胁。
8.3.2 文件验证与扫描
当主动监控模块标记文件以进行验证时,操作流程将转到防病毒引擎进行验证(图 3B)。在这里,文件经过严格的检查过程,以确定其完整性和潜在威胁级别。首先检查可疑文件以确定它们是否为存档,例如 ZIP 或 RAR 文件。如果被识别为存档,则将这些文件提取到称为“tmp”文件夹的安全位置。提取的文件或非存档文件将进入防病毒引擎(图 3D)进行彻底扫描和分析。防病毒引擎是防病毒解决方案的核心,包含各种关键组件,例如扩展名过滤器、十六进制签名验证、哈希签名验证和启发式分析模块。扩展名过滤器组件根据文件的扩展名筛选文件,根据预定义的标准允许或阻止它们。接下来,十六进制签名子模块通过将文件与以十六进制格式表示的已知恶意软件签名进行比较来验证文件。显然,匹配可能表明存在恶意软件。
与十六进制验证类似,哈希签名组件使用哈希值来验证文件完整性并检测潜在威胁。防病毒引擎的最后一个重要部分是使用高级启发式方法。启发式模块会寻找表明存在恶意软件的模式和行为,即使在没有已知签名的文件中也是如此。但请注意,在文件提交给防病毒引擎之前,它们会经过布隆过滤器模块(图 2C)。这个基本元素有双重用途,即高效的签名验证和立即识别干净文件。布隆过滤器充当守门人,一丝不苟地检查文件的签名是否存在于防病毒引擎的广泛签名数据库中。其高效的机制可防止冗余扫描并提高整体扫描速度。当布隆过滤器指示数据库中不存在文件签名时,它会自信地将该文件归类为干净文件,并立即将系统置于空闲模式。
8.3.3 决策与缓解
在防病毒引擎进行全面分析后,操作流程分为两个部分。如果判定文件是干净的,系统将转换到空闲模式,表示处于安全状态。相反,如果防病毒引擎检测到潜在威胁,操作将进入(图 3F)缓解模块。在检测到恶意软件或安全威胁后,缓解模块将占据中心位置(图 3F)。该模块负责停止文件进程并执行特定操作以消除威胁,包括消毒或删除。在可行的情况下,模块会尝试对受感染的文件进行消毒,删除恶意代码,同时保留文件的功能。如果消毒不可行或有风险,模块将选择安全删除受感染的文件以防止进一步的伤害。缓解后,系统将转换到空闲模式(图 3G),表示安全状态。因此,它等待进一步的指令,恢复常规监控和保护活动。
8.3.4 计划扫描和更新
主动监控模块可触发更新模块(图 3H),负责维护防病毒解决方案的有效性。此模块有助于下载签名文件和其他基本设置,确保系统始终掌握最新的威胁情报。还可以使用扫描程序(图 3I )启动由主动监控模块协调的计划扫描。此面向用户的图形界面以交互和静默两种模式运行。静默扫描可最大限度地减少用户中断,同时确保系统安全。扫描程序使用防病毒引擎(图 3D),并可能启用其他内部验证模块(如注册表扫描或内存检查)来全面扫描恶意软件。尽管如此,现代防病毒解决方案是复杂且自适应的系统,旨在提供针对各种威胁的强大保护。这个全面的概述强调了这些关键网络安全工具的复杂性和有效性。还请注意,此处描述的图表是防病毒解决方案的总体情况,因为所有供应商的配置可能或多或少地偏离此配置(图 3)。
8.4 签名数据库
然后将文件中提取的属性与数据库中存储的签名进行比较。防病毒引擎执行模式匹配过程,以确定数据库中的任何签名是否与文件提取的属性匹配。防病毒引擎中的签名匹配过程通过将文件内容与预定义的签名或模式进行比较,在识别和检测已知恶意软件方面起着至关重要的作用。防病毒供应商维护包含已知恶意软件签名或模式的签名数据库。签名是根据对恶意软件的分析生成的样本并表示特定于每种恶意软件毒株的独特特征或字节序列。扫描文件时,防病毒引擎会在签名数据库中执行查找,以检查与文件内容匹配的内容。此查找通常使用高效的数据结构(例如哈希表、树或 trie 结构)来完成,以优化搜索过程并确保快速检索签名。为了实现高速签名匹配,防病毒引擎采用快速匹配算法。这些算法有效地将文件内容与数据库中的签名进行比较,从而减少了匹配所需的时间。此类算法的示例包括字符串匹配算法,例如Aho-Corasick或Boyer-Moore,它们使用各种技术快速识别匹配项。附带说明一下,随着新的恶意软件毒株被发现,防病毒引擎会定期使用新签名更新签名数据库。为了确保速度和可靠性,这些更新通常是逐步实施的,这意味着只有新的或修改过的签名才会添加到数据库中。这种方法减少了更新所需的时间(它还减少了对安全公司来说可能代价高昂的互联网资源)。签名数据库可以使用压缩技术来减小其大小并提高查找速度。压缩算法(例如 LZ77、Huffman编码或基于字典的压缩)可用于最小化存储要求,同时保持高效的搜索功能(因为签名通常保留在 RAM 中以便进行快速实时查找)。如果正确实施,压缩签名可以在扫描过程中实现更快的检索和匹配。也就是说,因为搜索是直接针对签名的压缩版本进行的。为了确保可靠性,安全研究人员努力将签名匹配中的误报和漏报降至最低。请注意,当将良性文件错误地识别为恶意软件时会发生误报,而当恶意软件未被检测到时会发生漏报。严格的测试可以直接进行区分。
8.5 防病毒文件
到目前为止,我们已经介绍了通用防病毒解决方案的映射(图 3)。但是,从技术角度来看,如何将此映射转换为可执行文件?当然,此映射中的模块无法插入并编译成单个可执行文件,因为这意味着防病毒软件的任何模块中的致命错误都会影响整个解决方案,因为操作系统会强制从 RAM 中终止。就像一些经济事件或其他高风险情况一样,并非所有鸡蛋都放在一个篮子里,防病毒软件也不能包含在单个可执行文件中(出于多种原因)。因此,防病毒解决方案的模块被分成单独的文件(不一定每个可执行文件一个模块)。但是,这些防病毒模块一旦单独执行并具有独立的进程,就必须以某种方式进行通信。考虑到上述情况,防病毒解决方案必须具有几个定义特征:(a)非侵入性和(b)从硬件资源的角度不可观察。
8.5.1 组织
攻击型恶意软件总是会利用任何漏洞来触发防病毒解决方案中的致命错误。与模块数量相比,可执行文件的数量越少,发生致命错误的风险就越大。但为什么呢?人们会认为可执行文件的数量越多,熵就越高。然而,事实上,在这种情况下,软件熵会降低,主要是因为防病毒解决方案的总进程数不是一次性执行的,而是安全地执行的,并且只在需要时执行。防病毒程序的文件结构一般由可执行应用程序(主动模块)、用于存储病毒定义和启发式算法的多个数据库、配置文件、用于在主动扫描期间存储数据的临时文件、安全存储潜在威胁的隔离文件、记录软件活动的日志文件以及通常用于用户界面的单独模块组成。这些组件组织在程序目录中,并由防病毒软件管理以确保高效运行。可执行文件运行核心防病毒引擎,用于扫描、检测和管理威胁,而数据库则经常更新,以使软件随时了解新病毒和恶意软件签名。配置文件允许自定义和保留用户设置,隔离区隔离威胁以防止它们损害系统。此外,日志提供扫描、检测和更新的详细历史记录,用于故障排除和审计。此外,附录中显示了特定于供应商 (SAV) 的组织。
8.6 防病毒持久性
许多类型的恶意软件首先尝试停止防病毒解决方案。因此,大量可执行文件(以及许多其他方法)可以帮助防病毒解决方案在 RAM 中持久存在,即使防病毒进程被故意停止。有两种主要的持久性方法,都是恶意软件作者在过去发明的,显然是为了他们的恶意软件的持久性。这些方法既用于进程持久性,也用于文件完整性(如签名文件等)。
8.6.1 侵入式操作系统依赖方法
一方面,防病毒软件通过将自身安装为服务来保持持久性,该服务设置为在系统启动期间自动启动,确保从计算机打开的那一刻起就运行。此外,它可以使自己成为操作系统的一部分。它深度集成到操作系统中,以监视文件系统操作、系统调用和网络活动等活动,实时扫描威胁。这种方法实际上具有侵入性,与 rootkit 和 bootkit 所做的非常相似(例如,在操作系统的核心 DLL 文件中写入对象)。但是,安装服务是最经典的方法。但是如何在 Windows 上将看门狗可执行文件(或任何其他可执行文件)安装为服务?可执行文件可以使用服务控制管理器(SCM) 通过sc命令等工具或通过 Windows API 函数(如CreateService或OpenSCManager )以编程方式将自身安装为 Windows 上的服务。这些方法允许可执行文件定义其参数,例如启动类型、错误控制、二进制路径等,有效地将其注册为服务,可以在系统启动时自动管理和启动,也可以由用户或其他服务手动管理和启动。这是需要在后台持续运行的应用程序(显然是防病毒软件或系统监视器)常用的技术。我们假设看门狗由“example.exe”文件表示。要在 Windows 上将“example.exe”安装为服务,读者通常会使用“sc”命令行工具。在命令行中(以管理员身份)可以执行以下命令:
可以将“NewServiceName”替换为此服务的任何名称,而“C:pathtoexample.exe”将代表 watchdog 可执行文件的完整文件路径。这会将“example.exe”注册为新服务,然后可以使用服务控制管理器或“net start NewServiceName”等命令启动该服务(请注意,该服务也可以是其他防病毒可执行文件)。要执行sc create命令并使用example.exe创建诸如“NewServiceName”之类的服务,需要具有管理员权限。如果没有这些管理员权限,系统将提示读者输入管理员密码或通过Windows 中的用户帐户控制(UAC) 进行确认。尽管如此,一旦“example.exe”注册为服务并且设置为自动启动,它将在每次操作系统启动时加载并运行(至少在理论上)。这由“sc create”命令中的“Start”参数控制。默认情况下,使用“sc create”创建的服务设置为自动启动。但是,这足以保护 AV 吗?实际上,如果恶意软件具有足够的权限和能力来操纵或终止正在运行的服务,它可能会强行卸载或破坏诸如“example.exe”之类的服务。但是,设计良好的应用程序和服务(尤其是关键应用程序和服务)通常具有抵御此类未经授权的关闭或篡改的机制(例如,自我监控,其中辅助服务进程监视主服务并在主服务停止时重新启动它,权限设置限制谁可以修改服务,并使用数字签名和校验和来验证完整性以防止篡改)。“example.exe”对此类攻击的实际脆弱性取决于特定的安全措施和系统配置。请注意,关于服务方法,最重要的是让 AV(希望)在恶意软件之前启动,从而获得重要优势。恶意软件可以将自身安装为服务以确保持久性并自动随系统启动,就像合法应用程序一样。这是恶意软件用来在受感染的系统中保持存在的常见技术。为了确保防病毒服务在任何恶意软件之前启动,可以将该服务设置为更高的优先级,或将其配置为在启动过程的早期启动,通常作为启动或系统启动服务。这在服务的属性中进行管理,通常需要防病毒提供商的高级配置或专有技术来确保它是最先加载的服务之一。从技术上讲,可以通过在其服务属性中将防病毒服务配置为“启动”或“系统”启动服务,将其设置为在启动过程的早期启动。这是使用Windows 服务控制管理器完成的(SCM)将服务的“启动”类型设置为一个值,该值表示它应该在启动时或系统初始化时启动。如上所述,防病毒服务还可能使用专有方法与操作系统紧密集成,以确保尽早加载(前面提到的侵入式 rootkit 和 bootkit 恶意软件方法)。这可确保防病毒软件是第一个运行的应用程序之一,理想情况下是在任何恶意软件有机会激活之前。但是,通常,要通过命令行将服务设置为在启动过程中尽早启动,可以使用带有 start = 选项的“sc config”命令。对于启动启动:
此命令需要管理员权限。另请注意,“ServiceName”是之前选择的“NewServiceName”。因此,有几个因素可以阻止恶意软件删除“example.exe”等服务,包括权限,因为恶意软件需要管理员权限才能修改或删除服务,以及可能检测和阻止此类恶意行为的安全软件。此外,服务本身可能具有保护机制或依赖关系,这使得在不引起明显系统问题的情况下删除服务变得更加困难。
8.6.2 非侵入式操作系统独立方法
另一方面,可以包含一组看门狗进程来监视防病毒软件的运行状况,重新启动它(通常)或在它停止工作或被禁用时提醒用户。对于看门狗进程,逻辑独立于操作系统且非侵入式(不涉及任何服务)。因此,为了保持看门狗进程的持久性,逻辑通常涉及两个或多个相互监视的进程。如果一个进程失败或终止,另一个进程会检测到这一点并重新启动它,确保持续运行。如果将多态性添加到看门狗进程,系统几乎可以万无一失。这种相互监视创建了一个弹性结构,即使在出现错误或故意关闭尝试的情况下,系统也能保持其功能。换句话说,动态是行业的秘密,即看门狗进程在每次启动时可以具有不同的名称、文件大小和二进制内容(多态性),以避免被高级恶意软件识别。
8.6.3 文件完整性
到目前为止,主题围绕着 RAM 中防病毒进程的持久性。但是,磁盘(即 HDD 或 SSD)上的防病毒文件也必须受到保护,因为删除或篡改这些文件可能会引发致命错误,并导致 AV 解决方案完全冻结或关闭。所有防病毒文件都应防篡改,尤其是签名文件和二进制文件。无论是签名文件还是其他不太重要的文件,防范恶意软件的方法基本相同,即 (a) 只读访问(例如,将文件设置为未经授权用户的只读)、(b) 访问控制(例如,将文件访问限制为仅授权进程和用户)、(c) 定期备份(即,将更新的副本保存在安全位置)、(d) 哈希验证(即,定期使用哈希检查完整性)、(e) 加密(即,加密文件以防止未经授权的读取或修改;出于多种原因,这是必须的)、(f) 篡改检测(使用看门狗对关键文件所做的更改发出警报)、g) 隐藏(例如,文件可以隐藏或嵌入其他文件中。例如,签名文件可以隐藏并加密在可执行文件中)。这些组合策略可确保检测到并及时阻止任何删除或修改签名文件的尝试,以维护AV系统的安全完整性。让我们以签名文件为例。签名文件可以通过各种方法进行保护,包括隐藏、加密和前面提到的所有其他方法。但是,有一种方法是最安全的方法之一(用于Scut Antivirus)。也就是说,一旦签名文件(或任何其他文件)被进程打开并以独占方式锁定,其他进程通常就无法修改或删除它,直到它被释放。但是,这取决于操作系统和打开文件的应用程序设置的文件共享和访问权限。例如,在 Windows 中,打开文件时使用的特定文件访问标志决定了共享或独占的级别。当使用CreateFile函数打开文件时,访问标志(如FILE_SHARE_READ、FILE_SHARE_WRITE或FILE_SHARE_DELETE)用于确定文件的共享模式。例如,如果打开文件时没有共享标志(0),则意味着授予独占访问权限,并且在句柄关闭之前,任何其他进程都无法打开文件进行读取、写入或删除。这是在安全敏感应用程序中控制对敏感文件(如签名)的访问的常用方法。让我们以三种不同的计算机语言为例,以便直观地了解,即 C++、VB6 (Visual Basic 6.0) 和 Python。因此,在 Windows 环境中使用 C++ 专门打开的文件:
前面提到的 C++ 源代码是一个完整的示例,展示了如何锁定文件并从中读取文件,并具有所有必要的错误处理。但是,CloseHandle ( hFile ) ;它不应该在操作系统关闭防病毒软件之前执行。换句话说,打开的文件永远不会被释放。让我们通过专注于锁定来简化示例。在 Python 中,可以使用os.open () 函数以独占方式打开文件:
上述代码打开“signature.sig”进行独占访问,以进行读写。如果文件已经存在,O_EXCL将确保调用失败,从而确保文件是新创建的并且以独占方式打开。O_RDWR是一个标志,表示文件应该以读写方式打开,而O_CREAT是一个标志,表示如果文件不存在,则应该创建它。这些常量通常与打开文件的系统调用或函数结合使用,以指定所需的访问权限和行为。在 VB6 中,可以使用Open语句以独占方式打开任何文件,并将访问模式设置为Binary、Random或Sequential,并确保没有其他进程打开该文件:
在此代码中,“signature.sig”以二进制模式专门打开以供读取,并且同时应用了读写锁,以防止其他进程在打开时访问它。请注意,通常使用关键字FreeFile来安全地获取尚未被其他打开文件使用的文件编号(而不是“#1”)。打开文件时使用FreeFile是一种很好的做法,可以避免意外覆盖或干扰同一程序或其他程序打开的另一个文件。因此,虽然独占访问可以防止并发修改,但它并不能绝对保证防止具有正确权限的复杂恶意软件进行所有形式的访问或篡改。但是,这种“锁定”方法是最好的解决方案之一。
8.6.4 防病毒自我保护模型
正如预期的那样,防病毒自我保护机制有不同类型的配置。一方面,防病毒解决方案可以将所有安装文件托管在其自己的二进制可执行文件中,因此,一旦可执行文件运行,文件锁定就是隐式的。另一方面,其他解决方案实际上可以将每个文件放在桌面上,就像任何普通软件一样,但是,在这种情况下,文件和目录将需要不同的保护机制。图 4所示的防病毒架构示意图展示了一个自我保护系统,其中Watch Dogs在保护防病毒进程及其相关文件方面发挥着至关重要的作用。防病毒引擎与签名文件(如果这些文件在 HDD/SSD 上是独立的文件)协同运行,采用独占锁定来防止未经授权的访问或篡改,确保定义保持完整和可信。同样,Watch Dogs负责保护构成防病毒程序一部分的不可执行文件,监控其完整性并防止修改。
这些看门狗还能保持防病毒进程的连续性,提供弹性结构,使防病毒软件能够持续运行并保护系统,即使在发生中断或故障的情况下也是如此(图 4)。这种多层自我保护方法可确保防病毒系统的进程和关键文件都能得到强有力的保护,免受外部威胁,从而有助于主机系统的整体安全态势。
8.6.5 文件加密解密
正如在介绍章节中多次提到的那样,没有加密和解密的恶意软件的持久性是没有意义的,因为它允许检查、分析和对抗。前面提到的说法也适用于防病毒解决方案。因此,来自附加算法 16的代码提供了一种使用加密库加密和解密文件的函数式方法,该加密库建立在健壮且安全的加密原语之上。该代码使用Fernet类,它是对称(也称为“密钥”)加密的一种实现,可确保用密钥加密的数据只能用相同的密钥解密。代码中的加密和解密过程在两个单独的函数中定义,即encrypt_file和decrypt_file。这两个函数都需要文件路径和加密密钥作为参数。密钥是一个 URL 安全的 base64 编码的 32 字节字符串,符合Fernet规范。当需要加密文件时,encrypt_file函数会将文件内容读取为字节,然后使用Fernet对象的 encrypt 方法加密数据。加密数据将替换文件的原始内容。对于解密,decrypt_file会读取加密文件,decrypt 方法会反转加密。再次,解密数据将写回到原始文件位置,覆盖加密内容。
附加算法16。
文件加密和解密
上述代码使用 Python 库中的加密 Fernet 类实现文件加密和解密,该类使用 CBC 模式的 AES-128 进行加密,并使用 HMAC 进行完整性验证。只要密钥保密,Fernet 方案就能确保安全加密和解密。代码包括处理文件操作、密钥生成和加密/解密过程的函数。在正常情况下,必须安全保存生成的密钥,因为丢失密钥意味着无法恢复加密数据。脚本会用加密或解密的内容覆盖原始文件。请注意,此代码示例可用于自动加密或解密签名文件。
Fernet密钥在此过程中至关重要,它充当锁定或解锁加密内容的秘密组件。代码还具有generate_key函数,该函数使用Fernet.generate_key () 方法生成新的Fernet密钥。Fernet 使用的加密方法是CBC (密码块链接)模式下的AES(高级加密标准),具有 128 位密钥。此操作模式需要将输入填充为块大小的倍数;Fernet在内部处理此问题。AES 算法因其强度和效率而得到广泛认可和使用,使其适用于各种加密应用,包括用于防病毒解决方案的文件加密。AES 是一种分组密码,这意味着它以固定大小的块加密数据。CBC 模式是一种高级加密技术,其中每个明文块在加密之前都会与前一个密文块进行异或运算。这种有趣的方法提供了强大的安全性,因为它确保相同的明文块不会导致相同的密文块,从而隐藏了明文中的模式(可以在介绍章节中讨论的 Vigenère 密码中检测到的模式)。Fernet规范还包括使用 HMAC(基于哈希的消息认证码)和时间戳验证来确保加密数据未被篡改,并提供验证数据加密时间的选项。这通过为加密文件提供机密性和完整性来增加额外的安全性。请注意,使用base64编码密钥可以在需要时安全地传输或存储加密密钥。
8.7 进程间通信(IPC)
对于复杂的项目,程序员首先要学习的是进程间通信,这可以通过多种方式实现。因此,必须再次指出,对于复杂的项目(例如防病毒解决方案),将所有模块集成到单个可执行文件中会导致不可避免的灾难。然后,为了降低软件解决方案的熵,可以将项目划分为模块,每个模块都可以用作单独的可执行文件,并且进程能够与属于同一复杂项目的内存中的其他进程进行通信。因此,所有这些模块的集成是最重要的一步。
8.7.1 IPC 方法
进程可以使用各种方法相互通信,例如共享内存、文件交换、消息传递(包括管道和消息队列)、套接字和远程过程调用 (RPC)。在共享内存的情况下,两个进程使用一个指定的 RAM 区域,这两个区域都可以访问(例如,生产者进程将数据写入共享内存中的缓冲区,而消费者进程从该缓冲区读取数据)。最明显且最易于使用的方法之一是文件交换。使用这种方法,进程以协调的方式写入和读取文件(例如,日志记录进程写入日志文件,而监控进程从文件读取以实时显示日志)。因此,文件是通信的共同点。当 HDD 是唯一的存储介质时,这是一个坏主意。但是,使用 SSD,进程之间的这种信息交换环境可以更加优化。在消息传递(管道)方法中,一个进程将消息发送到管道,另一个进程从管道读取数据(例如,shell 进程创建管道以连接标准输出进程间通信 (IPC) 也使用套接字完成。例如,同一台机器上的进程或跨网络的进程使用套接字端点交换数据(例如,Web 服务器在套接字上侦听 HTTP 请求并响应这些请求,这就是进程通信,只是通常在远程机器上运行的进程上进行)。在 RPC 的情况下,进程执行子例程调用,该调用导致过程在另一个地址空间(通常在另一台计算机上)执行。例如,应用程序向数据库服务器发出 RPC 以检索数据。RPC 广泛用于 Windows 操作系统。Windows OS 为 RPC 机制提供广泛支持,允许应用程序在本地和网络上相互通信。在 Windows 中,RPC 通过 Windows 操作系统提供的 API 调用来实现。这些 API 允许应用程序相互通信,无论它们是在同一台机器上还是通过网络,如前所述。在 Windows 上,RPC 通常涉及从 DLL 文件中调用函数。这些 DLL 包含促进 RPC 所需的代码,无论是通过网络还是在同一台机器上的进程之间进行通信。使用 DLL 允许进行模块化设计,其中不同的功能可以封装在单独的文件中。前面提到的每种 IPC 方法都是针对特定用例量身定制的,在开发复杂性、性能和资源利用率方面都有自己的权衡。但问题仍然存在:哪种 IPC 适合防病毒解决方案的模块?
8.7.2 发送消息
就我个人而言,在Scut Antivirus项目推出近 15 年后,我清楚地记得测试过大多数 IPC。当时,我的主要兴趣是进程间通信的救命方法。其中包括SendMessage方法。尽管 RPC 继承是最广泛使用的,但它存在许多致命的错误隐患(对于任何程序员来说,这都是非常不受欢迎和令人尴尬的事情)。此外,套接字方法是在本地计算机上运行的进程之间进行通信的第二好方法,但它仍然占用端口,至少对我来说,这是一种缺乏优雅的做法。文件交换方法是考虑的第三种方法(对于Scut Antivirus来说,它确实被使用过,但只是通过更改皮肤和存储选项。当时为协调Scut模块而选择的主要方法是SendMessage方法。Windows 中使用SendMessage和WM_COPYDATA的 IPC 系统允许一个应用程序将数据发送到另一个应用程序。发送应用程序为数据分配一个缓冲区,并使用有关数据的信息填充COPYDATASTRUCT结构。然后,它调用SendMessage,以接收应用程序的窗口句柄为目标并传递COPYDATASTRUCT。接收应用程序收到WM_COPYDATA消息,从中提取数据并使用它。此方法允许在应用程序之间传递任意数据,而无需共享内存或直接文件访问,而是依靠 Windows 消息传递基础结构来安全地处理传输。带有WM_COPYDATA的SendMessage函数是 Windows API 的一个功能,因此它可以用于任何可以与 Windows API 交互的计算机语言。这包括 C、C++、Visual Basic 6.0 和许多其他语言。每种语言都有自己的与 API 交互的方式,但底层机制和原理在各种语言中保持不变。需要注意的是,通过 IPC 发送的任何消息都必须加密,否则防病毒解决方案很容易受到欺骗。因此,如果消息未加密,恶意软件编写者可以设计一个模块来向防病毒模块发送非法消息,合法关闭其进程或与它们交互以停用它们。换句话说,如果恶意软件知道如何与防病毒引擎通信(并且它具有正确的授权),它可以对防病毒引擎进行 DoS 攻击。因此,进程之间的通信必须加密。Althru 并不是真正提及它的地方,但对于 fairwalls 也是如此。作为互联网和机器上所有应用程序之间的中介来控制数据包(即检查漏洞字符串)非常耗费硬件,而且实际上并不是一个解决方案,尤其是对于服务器而言。因此,这些解决方案的主要漏洞是DoS。无论是本地还是远程,恶意软件都可能尝试DoS来停用安全进程。
8.8 客户端、服务器和实验室
防病毒系统是防病毒解决方案的外部部分。如果读者喜欢这种关联,它是商用飞机的控制塔。因此,图 5中的流程图说明了防病毒 (AV) 系统如何在不同平台上运行并与中央实验室交互以进行更新和分析的过程。从技术角度来看,这个一般流程包含三个区域,即:防病毒解决方案、Web 服务器和实验室总部。从客户端的防病毒 (AV) 解决方案开始,AV 软件扫描系统中的可疑文件(使用可疑行为和启发式方法)。这些文件一旦被检测到,就会被发送到 Web 服务器,实验室可以在那里进一步获取它们并进行彻底分析(图 5A)。这种信息交换还包括有助于实时监控防病毒系统检测到的健康和威胁的统计数据。客户端上的防病毒软件还会收到更新,这对于使病毒定义和启发式方法与最新威胁保持同步至关重要。
转到 Web 服务器,GUI(简称防病毒网站)是用户与之交互的内容(图 5B)。这可以是用于管理防病毒软件或访问系统健康和安全威胁报告的在线仪表板。Web 服务器还包含AV 解决方案套件(新用户的安装套件),其中可能包括防病毒系统在新客户端计算机上有效运行所需的工具和组件。如上所述,此服务器从客户端接收可疑文件和统计信息,然后将其传递给实验室总部进行深入分析。在实验室中,防病毒解决方案的设计得到进一步开发和完善,这与涉及此人工免疫系统的其他任务同时完成(图 5C)。此过程涉及恶意软件分析,其中研究新威胁以了解其行为和特征。主实验室包含一个恶意软件库,它是已知恶意软件样本的存储库。自动签名提取器可以获取这些恶意软件样本并提取其签名 - 唯一标识符,可用于检测和阻止客户端计算机上的恶意软件。但是,请注意,在恶意软件库的情况下,只有库的子集可以参与签名文件,即因为较旧的恶意软件可能无法感染新系统或某些恶意软件是操作系统特定的。因此,这一切都取决于客户端计算机的配置和安装在其上的操作系统。签名文件的创建必须考虑所有这些细节,以避免庞大的签名库减慢整个机器(使用RAM)及其对恶意软件的响应(使用大量CPU时间进行扫描)。简而言之,强大而成熟的实验室应该为不同的客户端提供不同的签名文件。实验室通常会使用从此分析中得出的信息更新多个数据库,包括files.*(表示多种类型的文件相关数据的通配符)、Hex.db(病毒十六进制签名的数据库)、MD5.db(唯一标识文件的MD5哈希值的数据库)和Heuristic.db(启发式分析方法的数据库,该方法基于行为而不是签名来检测病毒)。请注意,更新文件的扩展名(例如“.db”)并不重要,因为扩展名通常是特定于供应商的。然后,这些更新将发送回 Web 服务器,随后分发到用户计算机上的 AV 客户端,从而完成持续改进和保护的循环。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...