可疑的 Windows DLL:劫持、分析和防御

可疑的 Windows DLL:劫持、分析和防御

DLL Windows 它们是 DLL 劫持、侧加载和注入等攻击的主要目标,攻击者利用了共享库的搜索顺序和重用性。

借助 PEiD、Dependency Walker、PEview 和 Process Monitor 等工具对 DLL 进行静态和动态分析,可以识别敏感函数和可能的劫持。

La 人工智能 应用于安全解决方案和 SIEM 平台,与高级技术相比,它能提高对恶意 DLL 的检测能力,减少误报,提高准确率。

有效的防御策略结合了良好的开发实践、最新的防病毒和 EDR、供应商风险管理以及针对网络钓鱼和社会工程的员工培训。

近年来, 可疑的Windows DLL文件已成为攻击者最常用的攻击途径之一。我们不仅仅是谈论 恶意软件 不仅是传统的EXE格式程序,还有那些看似合法的库,它们会渗透到受信任的进程中,伪装在系统文件中,并逃避许多系统的检测。 安全解决方案.

这波繁荣并非偶然: 诸如 DLL 劫持、侧加载或等技术 DLL注入 他们正是利用了Windows搜索、加载和重用这些共享库的机制。再加上能够检测和隐藏这类威胁的人工智能引擎的出现,我们就看到防御者和攻击者并存,并采用日益复杂的策略。

什么是 DLL 文件?为什么它对攻击者如此有利可图?

在 Windows 上,一个 DLL(动态链接库)是一个包含可执行代码、函数和可重用资源的文件。 可由多个程序同时执行。它的作用类似于系统中的 .so 库。 Unix的允许多个应用程序共享相同的功能,而无需重复编写代码,从而节省内存和磁盘空间。

DLL 文件通常以 .dll 扩展名结尾。 虽然它们也可以以 .drv 或其他可执行格式呈现,但它们通常是 .dll 文件。实际上,有些可执行文件甚至可以作为类似功能的容器。最终用户不会直接打开它们:系统本身或应用程序会在需要时加载它们,通常是在启动时或运行时。

直接的后果是 一个 DLL 文件可以被多个程序同时使用。如果攻击者设法篡改或用恶意代码感染了其中一个库,其影响将会成倍增加:多个受信任的进程可能会运行同一个被入侵的库,而不会引起任何明显的怀疑。

Windows 系统中有 数十个对系统运行至关重要的DLL文件其中许多都是恶意软件分析和代码注入或混淆技术的常见目标。一些最相关的包括:

内核32.dll管理内存、文件、进程创建和访问 硬件.

Advapi32.dll包括与服务注册和管理相关的高级功能。

User32.dll:处理图形界面、按钮、滚动条和用户事件。

Gdi32.dll:负责在屏幕上显示和操作图形元素。

dll文件:充当与 Windows 内核的接口;它通常通过 KERNEL32.dll 间接导入。

WSock32.dll 和 Ws2_32.dll它们提供基本的网络功能(套接字、通信)。

Wininet.dll:实现高级网络功能(HTTP、FTP、NTP)。

当可执行文件直接导入时 Ntdll.dll 执行未公开或底层操作通常,这表明有人正在寻求特殊能力,例如隐藏进程、规避安全控制或比平时更积极地操纵系统。

DLL劫持:冒充合法用户的伎俩

电话 DLL劫持是指诱骗应用程序加载恶意库而不是合法库。这种方法利用了 Windows 解析路径的方式以及这些库的搜索顺序。它是一种历史悠久的方法(早在 Windows 2000 时代就已出现),但至今仍然非常有效。

本质上,攻击者会放置一个与程序预期使用的 DLL 文件同名的文件。 在搜索序列中,该位置会在实际目录之前进行评估。由于 Windows 默认情况下并不总是要求绝对路径或验证 DLL 的真实性,因此应用程序最终会加载伪造的副本,并以被入侵进程的权限激活恶意代码。

在微软系统中,标准的 DLL 搜索顺序可能会因 DLL 是否启用而有所不同。 安全 DLL 搜索模式但简单来说,它通常遵循类似这样的层级结构:

应用程序启动所在的目录。

系统目录(例如,C:\\Windows\\System32)。

16 位系统目录。

Windows目录。

当前工作目录。

系统 PATH 环境变量目录。

用户 PATH 环境变量目录。

当安全搜索模式关闭时, 用户的当前目录可以在此列表中向上移动位置。增加了放置在工作文件夹中的 DLL 比原始系统 DLL 更早加载的风险。

这些是 10 款最佳 PC 砍杀游戏这次攻击的关键在于…… 许多应用程序并未指定所需 DLL 的完整路径。它们只需请求“加载 X.dll”,其余操作都交给系统处理。如果网络犯罪分子设法将恶意 X.dll 文件放置在应用程序目录或其他位于 System32 目录之前的位置,系统就很难区分真假文件。

因此,一个简单的DLL文件就能够 引发了美国政府遭受的最严重的网络攻击之一其中,由合法提供商(SolarWinds)签名的 DLL 包含恶意有效载荷,使得整个网络在数月内都无法被检测到。

DLL劫持变种及相关技巧

在DLL绑架事件的范畴内,有 利用不同Windows内部机制的多种变体虽然目标始终相同(将恶意 DLL 引入合法进程),但实现方式略有不同。

对已知DLL的操作

Windows 维护着一个列表 已知DLL,即被认为是已知且可信的系统库。当一个进程请求这些 DLL 之一时,加载器会在一个特殊目录中查找它,并将其直接分配给该进程的地址空间。

此列表由注册密钥控制。 如果攻击者设法修改了与 KnownDLLs 相关的配置您可以将恶意 DLL 排除在此机制之外,或者操纵某些库的解析方式,从而导致意外的替换或加载。为了识别已加载的库和过时的引用,检查诸如此类的实用程序通常很有帮助。 列表DLL.

WinSxS 中的侧载攻击

该文件夹 WinSxS(Windows 并排显示)Windows 目录(通常位于 C:\Windows\WinSxS)存储着组件和 DLL 的多个版本。它对于管理更新、备份以及与不同库版本的兼容性至关重要。

许多应用程序使用 WinSxS 避免DLL版本冲突这依赖于清单文件,这些清单文件指定了运行时应加载的每个库的哪个版本。问题在于,这些清单文件基于元数据,而元数据有时可能被恶意篡改或利用。

最近的研究表明,这是有可能的。 将伪造的 DLL 文件插入 WinSxS 并强制某些合法的二进制文件加载它们,正是利用了该文件夹中依赖项解析方式的漏洞。这极大地扩展了可用于执行恶意代码的二进制文件范围,而无需向系统上传新的可执行文件。

这种方法尤其危险,因为 它利用了 WinSxS 文件夹中已存在的合法二进制文件。它通常避免了经典的权限提升,并且产生的行为噪音较少,从而增加了不被许多安全解决方案检测到的机会。

幽灵 DLL 劫持

电话 幽灵 DLL 劫持 它依赖于一些历史遗留的或使用频率很低的DLL文件,某些应用程序仍然会在启动时尝试加载这些文件,即使它们并非绝对必要。这是一种历史遗留问题,许多程序从未在其初始化例程中“清理”过它们。

如果攻击者识别出这些被遗忘的 DLL 文件之一, 你只需要创建一个同名文件,并将其放置在优先搜索路径中即可。由于程序找不到原始文件,最终会使用恶意版本,该版本加载时几乎没有任何额外的控制。

对可疑 DLL 进行静态分析:无需执行即可查找哪些内容

当您怀疑某个 DLL 文件可能存在恶意行为时,主要有两种分析方法: 静态和动态静态分析是指在不运行文件的情况下从中提取信息,而动态分析则侧重于观察文件在受控环境中加载时的实际行为。

在可疑的DLL文件的背景下, 静态分析是初步风险评估的基础。它允许您查看依赖项、公开函数、元数据、内部结构以及可能的捆绑或混淆迹象,而无需运行可能存在危险的代码。

经典工具,例如 PEiD, 依赖沃克 或 PEview 它们对于此类审查仍然非常有用。例如,使用 PEiD,您可以检查 PE 文件头,识别使用的打包程序或压缩程序,并列出文件的各个部分。

其中一项首要检查内容包括: 查看进出口表在那里,您可以看到可疑库依赖哪些 DLL(例如,KERNEL32.dll、USER32.dll、MSVCRT.dll)以及它调用的具体函数:写入文件(WriteFile)、管理进程、操作内存、打开套接字等。

使用 Dependency Walker,您将能够 浏览依赖关系树查看当前加载的 DLL 和正在解析的函数。如果检测到对敏感函数的调用(代码注入、关键区域的注册表修改、意外通信),请提高警报级别。

PEview 则能够对文件的内部结构进行详细检查: 编译时间戳、修改部分、导入地址表等等。检查时间戳可以帮助您将 DLL 与特定攻击活动关联起来,检查它是否与同一攻击者的其他痕迹相符,或者确定它是否是一个非常新的二进制文件,几乎没有任何公开引用。

如何使用性能分析器(WPA)检测 Windows 中的瓶颈手动加载、执行和检测 DLL 劫持

要在 Windows 环境中运行或注册 DLL,可以使用诸如以下工具: Regsvr32.exe 和 Rundll32.exe第一个用于在系统中注册 DLL(例如,作为 COM 组件),而第二个允许从命令行调用特定的导出函数。 comandos.

攻击者可以 通过脚本自动使用这些工具 (例如,在 VBScript 中或 PowerShell的),并将它们整合到过度使用设备的活动中 USB在办公文档中设置计划任务或宏,无需太多用户交互即可启动恶意 DLL。

如果您怀疑特定计算机上可能存在 DLL 劫持,一种实用的调查方法是使用 过程监视器(Procmon) 来自 Sysinternals 套件该工具允许您实时查看文件系统和注册表上的所有输入/输出操作。

通常的程序 要使用进程监视器检测 DLL 劫持,请按照以下步骤操作:

按可能受影响的应用程序进行筛选这样您就只能看到与该进程相关的操作。

添加筛选器,仅显示 路径以 .dll 结尾的文件重点关注已加载的库。

应用筛选条件,结果为: “未找到名称”这表明加载尝试失败,或者尝试在系统目录之外的其他路径中查找相同的 DLL 文件。

生成的事件列表 您是从外部路由显示的 对系统而言,这通常是一个明显的症状,表明它正在管理较差的目录中寻找替代方案。如果再按应用程序自身的路径进行筛选,就可以找出那些与可执行文件位于同一目录下的 DLL 文件,这是搜索顺序劫持攻击的典型手段。

为什么区分误报和危险的DLL如此困难?

在真实的商业环境中,以下情况很常见: 安全解决方案会对看似合法的进程和 DLL 发出警报。一个典型的例子是看到关键进程(如 winlogon.exe 和 csrss.exe)之间的线程或交互,这可能会引起怀疑,但通常是正常系统操作的一部分。

为了提高判断力,避免每次警报触发时都惊慌失措, 我们需要查看完整的背景信息。文件来源、信誉度 数字签名可疑的名称更改、二进制文件大小和结构、网络行为、磁盘操作等。

对于诸如 winlogon.exe 和 crss.exe 之间的线程冲突警报之类的情况,合理的做法是: 查看活动进程、DNS 查询、磁盘写入和安全事件如果一切迹象都表明这是一个典型的模式,没有奇怪的联系或不寻常的改变,那么将其归类为假阳性是合理的,尽管最好还是记录分析结果。

主要困难在于…… 合法 DLL 与伪装得非常好的恶意 DLL 之间的界限正变得越来越模糊。尤其是当使用混淆、捆绑或劫持系统库等高级技术时。

利用人工智能检测可疑的DLL文件

鉴于这种情况,安防设备制造商已开始大量投资。 专门用于 DLL 分析的机器学习模型 以及劫持技术。这些模型不仅限于搜索经典的静态模式,还能关联多种间接信号。

例如,可以在以下情况下找到: 由卡巴斯基人工智能技术研究中心开发的模型 为了检测 DLL 劫持,该模型不仅关注库的内容,还关注上下文信息:DLL 及其加载文件的路径、名称更改、内部结构、大小、数字签名完整性、先前的文件信誉等。

为了训练这类模型,需要使用大量数据。 从内部分析系统和匿名遥测中收集的 DLL 加载事件由参与云安全网络(例如卡巴斯基安全网络)的用户提供。标签信息依赖于…… 数据库 拥有良好的声誉。

这些模型的最初版本通常还不够精确,但之后 多次迭代训练、特征调优和标签调试成功率非常高,减少了误报,提高了识别与 DLL 劫持相关的细微模式的能力。

以卡巴斯基安全信息和事件管理平台(Kaspersky SIEM Platform)为例,该模型可以通过两种可能的方式集成: 在事件关联引擎和收集子系统中第一种方法仅分析已触发关联规则的事件,从而在不增加基础设施负担的情况下提供第二层快速验证。第二种方法则更广泛地审查所有符合特定条件的 DLL 加载事件,非常适合进行更全面的回顾性搜索。

其他供应商,例如 Check Point,已经开发了特定的引擎,例如 DeepDLL 已集成到其 ThreatCloud AI 生态系统中该引擎会检查 DLL 文件的元数据、攻击字符串和编译结构,并将这些信息与到达上下文(电子邮件、网络下载、MSI 安装程序、压缩文件等)进行交叉引用。

如何在 Windows 10 上下载 Alexa?根据该公司自身的数据,DeepDLL 它的检测率接近 99,7%,误报率极低。它甚至能够识别那些没有 .dll 扩展名但内部结构相同的样本。一个典型的例子是,它可以在下载时就检测到嵌入在 MSI 安装程序中的恶意 DLL,从而阻止其执行。

这些方法有趣的地方在于…… IA 是 改善 El Temppo他们收集的关于威胁和良性行为的数据越多,他们就越能完善模型,也就越能更好地适应尚未记录在案的新规避技术或变种。

如何降低 Windows 环境中 DLL 劫持的风险

阻止 DLL 劫持的责任首先在于软件开发人员自身。 最佳实践之一是始终为敏感 DLL 指定绝对路径。与其依赖系统的默认搜索顺序,不如显著降低恶意库溜进加载链的几率。

然而,在实践中, 并非所有项目都遵循安全编码规范。因此,各组织必须在第一层防御之外,构建包括以下在内的纵深防御体系:

更新了防病毒软件和EDR能够分析磁盘上、内存中和传输中的 DLL,包括行为和人工智能技术。

专门的工具,例如 DLL间谍旨在发现与使用 DLL 相关的劫持和权限提升漏洞。

持续监控攻击面在端点和服务器上,识别可在侧加载或劫持技术中利用的路由和二进制文件。

关键点是 员工接受有关网络钓鱼和社会工程的培训归根结底,恶意 DLL 要造成危害,必须有人将其引入生态系统:打开欺诈性附件、运行篡改的安装程序、连接包含可疑内容的 USB 驱动器等等。

建议加强明确的政策,例如制定…… 一份沟通良好的信息安全政策要求使用多因素身份验证,并建立渠道,在与可疑电子邮件或文件互动之前,向参考团队报告可疑的电子邮件或文件。

在第三方和供应商环境下,风险会增加: 并非所有合作伙伴都能保持相同的水平 网络安全供应商风险管理工具使您能够监控供应链的安全状况,发起符合监管框架的调查问卷,并通过动态风险评分跟踪纠正措施的进展情况。

清洁工具和预防性防护的作用

如果发生感染,有一些专门设计的设施可以应对。 移除系统中已存在的恶意软件例如微软恶意软件删除工具 (MSRT)。需要注意的是,这些工具不能替代完整的杀毒软件。

例如,MSRT 它专注于检测和消除一系列广泛存在的威胁。 扫描时正在运行的恶意软件(病毒、蠕虫、木马)将被清除。但本软件并不旨在覆盖所有类型的恶意软件,也不会清除未激活的恶意软件,更不会处理间谍软件或其他更专业的威胁。

建议很明确: 感染后,请使用这些清洁工具作为辅助工具。但是,务必始终安装并更新防病毒软件或 EDR 产品,以从一开始就阻止恶意软件的执行。此外,请注意,如果系统在部署防病毒软件之前已被感染,则清除工具在尝试清除恶意软件时可能只能检测到部分恶意软件。有关清除工具和初步分析的实用指南,请参阅[主题缺失]相关资源。 清洁和分析工具.

整个防御生态系统,从传统的杀毒软件到基于人工智能的引擎,包括安全信息和事件管理 (SIEM) 系统和清理工具, 必须以协调的方式工作 最大限度地减少攻击者利用可疑 DLL 的机会窗口。

鉴于近年来公布的漏洞数量以及 DLL 劫持技术向更隐蔽的技术(例如 WinSxS 滥用或供应链攻击)的演变, 必须将可疑的 Windows DLL 文件视为优先攻击目标。了解它们的工作原理,知道如何对它们进行静态和动态分析,依靠人工智能来检测细微的模式,并加强围绕它们的培训和安全策略,这才是区分简单警报和本可避免的高影响事件的关键所在。

相关文章:如何在 Windows 11 中检测和删除可疑 DLL

艾萨克对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。

相关推荐

Mk.18相关
365bet足球盘口

Mk.18相关

🎯 01-14 💯 469