这是一种 Windows 资源管理器 DLL 注入技术,使用 Windows 上的更改图标对话框。
首先,在temp目录中创建一个文件夹,并使用SHObjectProperties打开该文件夹的属性。为了独立于系统语言检索窗口句柄,EnumWindows 与回调函数一起使用,该回调函数检查每个打开的窗口中的不同文件夹名称。
通过属性页,调用更改图标对话框,其句柄也可以使用 EnumWindows 检索。最后,图标路径更改为 DLL(在本例中具有 .ico 扩展名),这会导致资源管理器在按下“确定”按钮后加载 DLL。
“图标”实际上是一个简单的 DLL 文件,扩展名为 .ico,可打开计算器应用程序,其中包含使用 Resource Hacker 添加的图标资源。
文件夹视图中的图标外观存在一些异常。我已经在两个不同的 Windows 10 版本(最新版本和旧版本)和 Windows 11 上对此进行了测试。
在两个 Widnows 10 版本上,当扩展名更改为 .ico 时,存储在 DLL 内的图标不会显示
然而,在最新的 Windows 10 版本上,它确实有效,直到我尝试打开照片应用程序内的“图标”。从那时起,我就无法重新创建它。
在 Windows 11 上,该图标的显示方式与资源管理器视图中的普通图标一样。但是,当在照片应用程序中打开它时,会显示错误。
这种行为当然很有趣,因为只想更改文件夹图标的用户可能会将恶意 DLL 注入到他们的资源管理器中。这可能看起来像这样:
这是一种将 DLL 注入到 Explorer 进程的非常隐蔽的方法,因为它不使用通常的 DLL 注入 API。它确实会产生两个简短的弹出窗口,但这并不太令人不安。因此,威胁行为者可以将其用作 AV 规避技术,通过合法的浏览器进程执行代码或加载 UMD rootkit。
此外,传播伪装成 .ico 文件的 DLL 可能是一个有趣的攻击媒介。
为了获得正确的窗口句柄,我使用了 Spy++,这是一个随 Visual Studio 一起安装的工具。
非常感谢 Microsoft 的 Bill G. 提供的漂亮的文件夹图标!
谢谢互联网上的随机人提供的漂亮的注射图标!