什么是 DLL 劫持?

DLL 劫持 当网络攻击者向应用程序注入恶意代码,改变动态链接库(DLL)的加载方式时,就会发生 DLL 劫持。美国历史上最重大的黑客攻击事件之一涉及 DLL 劫持,该事件危及多个联邦机构,很可能与俄罗斯行为者有关。这种漏洞针对的是 Windows 平台,通过一个受感染的文件就能危及整个系统。预防措施包括安全编码实践以及检测和测试 DLL 劫持的能力。此外,强大的安全网络和信息灵通的员工对于保护系统免受网络威胁也至关重要。.

What is DLL Hijacking

什么是 DLL 劫持?

当攻击者在您的计算机上放置受感染的文件时,该文件会在易受 DLL 劫持影响的应用程序运行时被执行。DLL 劫持是一种 网络攻击 在应用程序的搜索参数中插入受感染文件的技术。当用户试图从该目录加载文件时,受感染的 DLL 文件会被加载。当应用程序运行时,这个受感染的文件就会激活。DLL 文件通常会预先加载到计算机中,许多带有 DLL 文件的应用程序会在启动时自动加载。这可能会危及整个计算机,只要加载包含恶意代码的文件,黑客就能访问。.

什么是 DLL 文件?

动态链接库文件只存在于微软操作系统中,它包含应用程序正常运行所需的资源。据微软称,Windows 操作系统的大部分功能都是由动态链接库提供的。DLL 文件通常在加载应用程序时打开,使程序能够高效运行并节省硬盘空间。通常情况下,动态链接库文件支持多个程序,这意味着涉及动态链接库劫持的单次网络攻击只需一个受感染文件就能危及多个应用程序。.

DLL 劫持是如何工作的?

Windows 应用程序需要使用 DLL 搜索协议才能正常运行。通过在目标应用程序的目录中放置恶意 DLL,攻击者可以诱使应用程序加载受感染的文件,而不是合法文件。由于微软应用程序的 DLL 搜索顺序是公开的,因此可以被利用。要使 DLL 劫持起作用,攻击者必须确保目标应用程序在合法 DLL 文件之前搜索受感染文件。实现这一点有几种方法:

  • 在合法库之前搜索的目录中植入木马 DLL 文件。.
  • 使用 DLL 预加载功能,将受感染的 DLL 与模棱两可的指定 DLL 置于同一名称,导致首先搜索该 DLL。.
  • 通过 DLL 重定向修改 DLL 搜索顺序,迫使程序加载恶意 DLL 而不是合法 DLL。.

受感染的 DLL 文件可通过供应链攻击引入、, 网络钓鱼社会工程. .文件的权限顺序越高,攻击者对系统的访问权限就越大。如果未指定相关 DLL 文件的完整路径,Windows 应用程序会默认使用特定的 DLL 搜索协议,并从加载应用程序的目录开始。DLL 劫持正是利用了这一点,将受感染的 DLL 文件放置在该位置,确保其在系统目录 DLL 之前加载。这就是所谓的 DLL 搜索顺序劫持。恶意 DLL 文件通常使用模仿目标应用程序的数字签名,使文件看起来真实可信,避免被检测到,这有利于受感染 DLL 文件通过供应链传播。.

如何识别 DLL 劫持攻击

进程资源管理器是一款 Windows 程序,它能实时显示正在加载的所有文件系统,从而识别 DLL 劫持企图。通过应用正确的过滤器,用户可以检测到不属于自己的 DLL 文件。请按照以下步骤操作:

  1. 安装和加载 进程资源管理器.
  2. 搜索疑似 DLL 劫持目标的应用程序。.
  3. 按 Ctrl + L 并应用过滤器,只显示路径以 .dll 结尾的活动文件。单击添加,然后应用。.
  4. 再次按下 Ctrl + L,并将条件设置为结果,对结果为 “NAME NOT FOUND(未找到名称)”的目录应用过滤器:名称未找到。单击 "添加",然后单击 "应用",以显示在系统目录之外加载的文件。.
  5. 再按一次 Ctrl + L,应用过滤器,通过设置条件为 "路径为 [路径地址]",只显示应用程序目录内的 DLL 文件。单击 "添加",然后单击 "应用"。.

已知 DLL 劫持威胁示例

多年来,DLL 劫持一直是 Windows 操作系统的一种持续性网络安全威胁。各种威胁行为者使用的程序的一些显著例子包括

  • APT41:利用搜索顺序劫持。.
  • FinFisher:变种采用 DLL 搜索顺序劫持。.
  • :利用搜索顺序劫持加载恶意 DLL 有效载荷。.
  • 阿斯塔罗斯:利用搜索顺序劫持功能启动自身。.
  • 写入增强功能:利用合法 DLL 文件的加载。.
  • 后门外交:使用搜索命令劫持。.
  • HinKit:使用搜索顺序劫持作为持久性机制。.
  • 拐杖:通过劫持搜索顺序保持持久性。.
  • 唐德尔夫:通过劫持 .exe 文件的搜索顺序来提升权限。.
  • InvisiMole:通过劫持搜索顺序,在启动过程中启动受感染的 DLL。.
  • HTTPBrowser:干扰 DLL 加载顺序。.
  • 拉姆齐:劫持过时的 Windows 应用程序。.
  • 菜单通行证:使用 DLL 搜索顺序劫持。.
  • 威胁小组-3390:利用 DLL 搜索顺序劫持分发有效载荷。.
  • 粉虱:通过劫持搜索顺序用恶意 DLL 感染系统。.
  • RTM:通过劫持搜索顺序干扰 TeamViewer。.
  • 砺石团队:通过干扰合法的微软可执行文件加载恶意 DLL。.
  • Melcoz:利用 DLL 劫持绕过安全控制。.

如何防止 DLL 劫持

防止 DLL 劫持的主要方法在于软件开发人员,他们必须遵守安全编码规范,并指定所有相关 DLL 文件的确切位置,以防止 Windows 依赖其默认 DLL 搜索路径协议。.

不过,由于安全编码实践无法提供绝对保证,企业应采取额外措施加强防御:

  • 及时更新杀毒软件: 虽然杀毒软件可能无法捕捉到所有复杂的供应链攻击手段,但它仍能有效地检测和阻止许多恶意 DLL 注入企图。定期更新可确保杀毒软件的检测方法始终有效。.
  • 利用 DLLSPY: 该软件可有效抵御 DLL 劫持,并能检测权限升级漏洞。它可在 GitHub 上随时下载。.
  • 对员工进行有关网络钓鱼和社会工程学的教育: 防止 DLL 劫持的关键在于减少将恶意 DLL 文件引入生态系统。对员工进行识别社交工程和网络钓鱼攻击警示信号的教育,同时实施最佳安全实践至关重要。最佳实践包括制定可访问的信息安全政策、执行多因素身份验证,以及将可疑电子邮件转发给指定人员,以便在接触前进行审查。.
  • 加强安全态势: 对攻击面的持续监控使企业能够及时发现其生态系统中的漏洞,降低 DLL 劫持攻击的风险。UpGuard 的 BreachSight 可识别所有风险并跟踪补救措施,从而促进这一过程。.
  • 实施供应商风险管理解决方案: 鉴于供应商网络安全措施不足导致供应链攻击事件频发,企业应采用创新的供应商风险管理技术。UpGuard 的 Vendor Risk 等解决方案可对整个供应商网络的安全状况进行持续监控。.

常见问题

什么是 DLL 劫持?

当网络攻击者在应用程序中注入恶意代码,改变动态链接库(DLL)的加载方式时,就会发生 DLL 劫持。这样,他们就可以通过一个受感染的文件入侵系统。.

DLL 文件如何导致 DLL 劫持?

DLL 文件是微软操作系统独有的文件,包含应用程序运行所需的资源。攻击者利用 DLL 搜索路径协议中的漏洞,诱使应用程序加载受感染的 DLL 文件,而不是合法文件,从而破坏系统的完整性。.

如何检测 DLL 劫持?

进程资源管理器等工具可以通过实时监控文件系统来识别 DLL 劫持企图。用户可以应用过滤器来识别不属于自己的可疑 DLL 文件,从而帮助检测和挫败此类攻击。.

有哪些 DLL 劫持威胁的已知示例?

著名的例子包括 APT41、FinFisher 和 menuPass,它们采用各种方法(如劫持搜索顺序)入侵系统并分发有效载荷。.

针对 DLL 劫持可以采取哪些预防措施?

软件开发人员应遵守安全编码规范并指定 DLL 文件位置。企业应不断更新杀毒软件,利用 DLLSPY 等工具,对员工进行网络钓鱼和社交工程方面的教育,加强安全防范,并实施供应商风险管理解决方案,以降低 DLL 劫持攻击的风险。.

结论

DLL 劫持仍然是 Windows 操作系统的一个重大网络安全威胁。通过了解 DLL 劫持的本质、使用进程资源管理器等工具检测潜在攻击并实施强有力的预防措施,企业可以有效地保护其系统。强调安全编码实践、教育员工、维护更新杀毒软件以及持续监控漏洞,都是防范这种普遍威胁的必要步骤。采用全面的安全方法,可以最大限度地降低与 DLL 劫持相关的风险,并确保系统的完整性。.

滚动至顶部