LoadLibrary,用于将 Windows DLL 加载到 Linux 应用程序中的层

塔维斯·奥曼迪(塔维斯·奥曼迪),谷歌的安全研究员,正在开发该项目 调用LoadLibrary,旨在移植为 Windows 编译的 DLL 以在 Linux 应用程序中使用。 该项目提供了一个层库,您可以使用该层库加载PE/COFF格式的DLL文件并调用其中定义的函数。 PE/COFF 引导加载程序基于代码 恩迪斯包装器。 项目代码 分发者 根据 GPLv2 许可。

LoadLibrary 负责将库加载到内存中并导入现有符号,为 Linux 应用程序提供 dlopen 风格的 API。 插件代码可以使用gdb、ASAN和Valgrind进行调试。 可以通过连接钩子和应用补丁(运行时修补)来在执行期间调整可执行代码。 支持 C++ 的异常处理和展开。

该项目的目标是在基于 Linux 的环境中组织 DLL 库的可扩展且高效的分布式模糊测试。 在 Windows 上,模糊测试和覆盖测试效率不是很高,通常需要运行单独的 Windows 虚拟化实例,尤其是在尝试分析跨内核和用户空间的防病毒软件等复杂产品时。 谷歌研究人员使用 LoadLibrary 来搜索视频编解码器、病毒扫描程序、数据解压缩库、图像解码器等中的漏洞。

例如,在 LoadLibrary 的帮助下,我们能够将 Windows Defender 防病毒引擎移植到 Linux 上运行。 对构成 Windows Defender 基础的 mpengine.dll 的研究使得分析大量复杂的各种格式处理器、文件系统模拟器和语言解释器成为可能,这些处理器可能为 可能 攻击.

LoadLibrary也被用来识别 远程漏洞 在 Avast 防病毒软件包中。 在研究该防病毒软件的 DLL 时,我们发现关键的特权扫描过程包括一个成熟的 JavaScript 解释器,用于模拟第三方 JavaScript 代码的执行。 该进程不隔离在沙箱环境中,不重置权限,并分析来自文件系统的未经验证的外部数据并截获网络流量。 由于这个复杂且未受保护的过程中的任何漏洞都可能导致整个系统的远程危害,因此基于 LoadLibrary 开发了一个特殊的 shell AV脚本 分析基于 Linux 的环境中 Avast 防病毒扫描程序中的漏洞。

来源: opennet.ru

添加评论