找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1248

积分

0

好友

184

主题
发表于 4 天前 | 查看: 28| 回复: 0

图标喷射器攻击示意图

“图标喷射器”(Icon Dropper)是一种利用 Windows 系统“更改图标”对话框进行 DLL 注入的攻击技术,能够将恶意代码加载到资源管理器(explorer.exe)进程中。

除了常见的函数库功能,DLL 文件也常用于存储图标等资源。在系统中查看文件夹或文件的属性时,默认图标通常来自 shell32.dll

系统默认图标来源

实际上,在现代 Windows 版本中,这些图标资源更多存储在 shell32.dll.mui 这类资源文件中,但系统界面仍会将其显示为来自 shell32.dll。

为了让资源管理器进程能在“更改图标”对话框中完整显示某个 DLL文件 内存储的所有图标,它必须先将该 DLL 加载到自身进程的内存空间中进行解析。

关键点在于,Windows 系统中的 DLL 可以定义一个可选的 DllMain 函数。当使用 LoadLibraryFreeLibrary 函数加载或卸载 DLL 时,系统会自动调用此函数。这意味着攻击者可以将任意代码写入 DllMain,一旦资源管理器加载了此DLL,代码便在其进程上下文中执行。

以下是一个典型的 DllMain 函数框架:

BOOL WINAPI DllMain(
    HINSTANCE hinstDLL,  // handle to DLL module
    DWORD fdwReason,     // reason for calling function
    LPVOID lpvReserved ) // reserved
{
    // 根据调用原因执行相应操作
    switch( fdwReason )
    {
        case DLL_PROCESS_ATTACH:
            // 为新进程初始化
            // 返回 FALSE 会导致 DLL 加载失败
            break;
        case DLL_THREAD_ATTACH:
            // 执行线程特定的初始化
            break;
        case DLL_THREAD_DETACH:
            // 执行线程特定的清理
            break;
        case DLL_PROCESS_DETACH:
            if (lpvReserved != nullptr)
            {
                break; // 进程终止场景下不执行清理
            }
            // 执行必要的清理工作
            break;
    }
    return TRUE; // 成功完成 DLL_PROCESS_ATTACH
}

在此攻击演示中,攻击者正是利用了这一点。他们将一个能打开计算器程序(calc.exe)的 DLL 文件,通过 Resource Hacker 或 Visual Studio 等工具添加了一个图标资源,并将其文件扩展名伪装成了 .ico

伪装成ICO的DLL文件

在文件夹视图中,此类伪装文件的图标显示可能异常。测试发现,在部分 Windows 10 版本中,当 DLL 扩展名被改为 .ico 后,其内部存储的图标可能无法正常显示。

以编程方式实现自动注入

除了诱骗用户手动在属性对话框中加载恶意 DLL,攻击者还可以通过编程方式自动化完成整个进程注入过程:

  1. 弹出属性窗口:在临时目录创建一个文件夹,然后使用 SHObjectProperties API 自动打开该文件夹的“属性”对话框。为了跨语言获取此窗口句柄,可以使用 EnumWindows 函数配合回调函数,遍历所有窗口并识别出标题包含该文件夹名称的属性窗口。
  2. 导航至图标页:通过获取的属性窗口句柄,进一步触发并定位到“更改图标”子对话框,同样使用 EnumWindows 来获取其窗口句柄。
  3. 触发加载:将对话框中的图标路径设置为恶意 DLL 文件(伪装成 .ico),然后模拟点击“确定”按钮。这一操作会促使资源管理器立即加载并解析该 DLL,从而执行其中的 DllMain 代码。

编程注入流程示意

这是一种相对隐蔽的 DLL 注入方式,因为它没有直接调用 CreateRemoteThreadSetWindowsHookEx 等常见的注入 API。虽然过程中会短暂弹出两个窗口,但不太引人注意。攻击者可能利用此技术绕过某些安全软件的检测,通过合法的资源管理器进程执行恶意代码,甚至加载内核级 rootkit。

此外,将恶意 DLL 伪装成 .ico 图标文件进行传播,也为 安全研究 和攻击防御提供了新的思考维度。




上一篇:Nginx+LVS+Keepalived架构实战:百万级并发场景下的高可用负载均衡方案
下一篇:Docker Compose一键部署Arya:基于Vue2与Vditor的在线Markdown编辑器解决方案
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 15:14 , Processed in 0.104960 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表