Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ImpulsiveDLLHijack — 基于C#的工具,用于自动化发现和利用目标二进制文件中的DLL劫持。所发现的劫持路径可在红队行动中武器化,以绕过EDR。 | Kitploit
工具/GitHubGitHub/knight0x07/impulsivedllhijack
权限提升持久化机制漏洞利用红队二进制利用
GitHubknight0x07/impulsivedllhijack

ImpulsiveDLLHijack

基于C#的工具,用于自动化发现和利用目标二进制文件中的DLL劫持。所发现的劫持路径可在红队行动中武器化,以绕过EDR。

查看仓库
5541014年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ImpulsiveDLLHijack

基于C#的工具,可自动发现和利用目标二进制文件中的DLL劫持漏洞。劫持路径可在红队行动中用于绕过EDR。

1. 方法论:

该工具主要实现DLL劫持中以下阶段的自动化:

  • 发现 - 查找潜在可利用的DLL劫持路径
  • 利用 - 确认目标是否从劫持路径加载了验证DLL,从而确认100%可利用的DLL劫持!

发现方法论:

  • 向 ImpulsiveDLLHijack.exe 提供目标二进制路径
  • 自动执行 ProcMon 并同时运行目标二进制,查找潜在可利用的DLL劫持路径

利用方法论:

  • 从 ProcMon 自动生成的 CSV 文件中解析潜在可利用的DLL劫持路径

  • 将验证DLL(根据PE架构选择)逐个复制到劫持路径,并同时运行目标二进制一段时间

  • 在DLL劫持过程中,可通过劫持场景获得以下输出:

    • 若目标二进制加载了位于潜在劫持路径上的验证DLL,控制台输出DLL劫持成功 —— DLL劫持成功 -> DLL名称: <DLL名称> | <目标二进制名称>
    • 若目标二进制未加载位于潜在劫持路径上的验证DLL,控制台输出DLL劫持失败 —— DLL劫持失败 -> <DLL路径>

    入口点未找到的情况:

    • 若目标二进制未加载位于潜在劫持路径上的验证DLL,原因是该DLL的入口点与默认入口点“DllMain”不同,抛出错误“入口点未找到”,控制台输出该DLL劫持在入口点正确的情况下是可利用的 -> DLL劫持成功 -> [入口点未找到 - 需要手动分析!]: <劫持路径>
    • 若目标二进制加载了位于潜在劫持路径上的验证DLL,即使该DLL的入口点与默认入口点“DllMain”不同,抛出错误“入口点未找到”,控制台输出DLL劫持成功(尽管入口点不正确) -> DLL劫持成功 -> [入口点未找到]: <劫持路径>

注意:代码已程序化处理“入口点未找到”错误,无需手动关闭MsgBox :) 否则会导致代码崩溃****

  • 当所有潜在可利用的DLL劫持路径的劫持过程完成后,控制台以及文本文件(C:\DLLLogs\output_logs.txt)中会输出最终结果,格式如下:

    • <DLL劫持路径> --> DLL劫持成功(如果劫持成功)
    • <DLL劫持路径> --> DLL劫持失败(如果劫持失败)
    • <DLL劫持路径> --> DLL劫持成功 [入口点未找到 - 需要手动分析](如果入口点未找到但手动分析后可能成功)
    • <DLL劫持路径> --> DLL劫持成功 [入口点未找到](如果入口点未找到但劫持仍然成功)
    • <DLL劫持路径> --> 复制:路径访问被拒绝(访问被拒绝)

这些已确认的DLL劫持路径可在红队行动中用于通过合法可执行文件(如OneDrive、Firefox、MSEdge、“自带LOLBIN”等)加载恶意DLL植入,从而绕过最先进的EDR,因为大多数EDR无法检测DLL劫持(如George Karantzas和Constantinos Patsakis在其研究论文中所述):https://arxiv.org/abs/2108.10422

2. 前提条件:

  • Procmon.exe -> https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
  • 自定义验证DLL:
    • 这些DLL文件用于帮助工具确认DLL是否成功从识别的劫持路径加载
    • 从上方提供的 MalDLL 项目编译而来(或使用预编译的二进制文件,如果你信任我的话!)
    • 32位DLL名称应为:maldll32.dll
    • 64位DLL名称应为:maldll64.dll
    • 安装NuGet包:** PeNet** -> https://www.nuget.org/packages/PeNet/ (编译ImpulsiveDLLHijack项目时的先决条件)

注意:i 和 ii 先决条件应放在 ImpulsiveDLLHijacks.exe 本身的目录中。

  • 构建和设置信息:

    • ImpulsiveDLLHijack

      • 在Visual Studio中克隆仓库
      • 项目加载到Visual Studio后,转到“项目” --> “管理NuGet包” --> 搜索并安装“PeNet” -> https://www.nuget.org/packages/PeNet/
      • 构建项目!
      • ImpulsiveDLLHijack.exe 将位于 bin 目录中。
    • 对于验证DLL:

      • 在Visual Studio中克隆仓库
      • 以x86和x64构建项目
      • 将x86发布版本重命名为 maldll32.dll,将x64发布版本重命名为 maldll64.dll
    • 设置: 将验证DLL(maldll32 和 maldll64)复制到 ImpulsiveDLLHijack.exe 目录中,然后执行 ImpulsiveDLLHijack.exe :))

3. 用法:

usage

4. 示例:

  • 目标可执行文件:OneDrive.exe

  • 阶段:发现

first

  • 阶段:利用

    • 成功的DLL劫持:

    success_one

    • 失败的DLL劫持:

    unsuccessful

    • 由于入口点不同,DLL未加载!手动分析可能使其成功劫持 :)

    entrypoint_not_found

    • 即使入口点不同,DLL劫持仍然成功!

    entry_pointnot found - but dll is executed

  • 阶段:最终结果和日志

    • C:\DLLLogs\output_logs.txt:

    output_logs

谢谢,非常欢迎反馈! - knight!

下载工具