手机nes游戏模拟器 fcnes游戏模拟器最新版本( 二 )


手机nes游戏模拟器 fcnes游戏模拟器最新版本


DOS不在这个范围内,要做得更好,可以进入DLL代理 。
DLL 代理DLL 代理实现 DLL 劫持的成功率更高 。
手机nes游戏模拟器 fcnes游戏模拟器最新版本


你可能能够从 DLL 劫持中获得 shellcode 执行,但程序仍然需要解析它想要从原始 DLL 进行的函数调用 。而且你的 MSFVenom 生成的 DLL 不知道如何处理这些请求的函数,所以calc.exe运行,程序崩溃 。
手机nes游戏模拟器 fcnes游戏模拟器最新版本


在 DLL 代理中,你可以创建一个新的 DLL,其中包含指向原始 DLL 的导入函数的指针 。有效载荷隐藏到这个DLL的一个部分中,并使用剩余的空间将可执行文件指向它想要加载的原始DLL 。
该程序以其原始预期功能执行,得到有效载荷执行 。
使用 Procmon,过滤以下内容:
手机nes游戏模拟器 fcnes游戏模拟器最新版本


【手机nes游戏模拟器 fcnes游戏模拟器最新版本】打开一个可执行文件或 10 并确定一个尝试加载到 DLL 中但没有成功的程序 。在本文的示例中,我专注于 OpenGL32.dll:
手机nes游戏模拟器 fcnes游戏模拟器最新版本


重新配置过滤器,以查看该DLL是否在程序执行的任何时刻被成功加载 。因此,只需过滤即可扩大你的搜索条件:
手机nes游戏模拟器 fcnes游戏模拟器最新版本


如果你已经找到一个好的DLL代理候选,你可能会看到如下内容:
手机nes游戏模拟器 fcnes游戏模拟器最新版本


可以看到,将成功加载的 DLL 从主机复制到攻击者的设备上,并将其命名为 [dllName]_original.dll 。幸运的是,这个DLL可能在所有Windows系统上都是本地的,因此你甚至可能不需要从目标主机复制它,只需从你自己的 Windows 主机复制它即可 。
在攻击者的设备上,使用这个简单的Python脚本从原始DLL中取出导出的函数并将它们写入一个模块定义文件 (.def):
手机nes游戏模拟器 fcnes游戏模拟器最新版本


请注意引用原始DLL的两个位置,并确保相应地更改这些值 。
手机nes游戏模拟器 fcnes游戏模拟器最新版本


在编译程序时,模块定义文件向编译器提供有关链接导出的信息 。在本文示例中,我们将告诉编译器创建代理DLL,并将它链接到原始DLL,以指向它导出的所有函数 。
手机nes游戏模拟器 fcnes游戏模拟器最新版本


所以,每当可执行文件问“嘿,DLL,函数在哪里?”代理DLL便回复到:“哦,是的,去检查[dllName]_original.dll,它应该在那里 。”
现在,我们制作我们的代理 DLL 。这是一个用 C 编写得非常简单的程序,它导出一个 DLLMain 函数作为 DLL 的入口点 。在 DLLMain 方法中,我们偷偷调用了 Payload 函数 。该函数执行,然后所有其他请求的函数调用都传递给 [dllName]_original.dll:
创建此 C 文件并将其命名为 [dllName].c:
手机nes游戏模拟器 fcnes游戏模拟器最新版本


到目前为止,一切顺利 。
最后,我们需要创建这个代理 DLL 并将它与我们的模块定义文件链接起来 。这可以通过 mingw-w64 来完成,它拥有编译DLL所需的必要工具链 。注意这里的架构:我代理了32位SNES模拟器,所以我需要为32位架构编译它 。
如果你的攻击设备上没有 mingw-w64,只需输入:
手机nes游戏模拟器 fcnes游戏模拟器最新版本

推荐阅读