DLL劫持与Windows辅助功能:深入解析"黑客无障碍"攻击技术

本文详细剖析了利用Windows Narrator等辅助功能实现DLL劫持的技术细节。通过篡改MSTTSLoc OneCoreEnUS.dll,攻击者能够在用户登录时获得代码执行权限,并实现用户级/系统级持久化、横向移动及自定义辅助程序执行。

持久化(用户级)

研究发现,可在HKCU\Software\Microsoft\Windows NOT\CurrentVersion\Accessibility下创建名为configurationREG_SZ注册表值,并将其值设置为希望自动启动的辅助功能程序(如Narrator)。通过植入恶意的msttsloc_onecoreenus.dll并设置此注册表项,即可在用户注销并重新登录时实现持久化。

持久化(系统级)

要实现SYSTEM级别的持久化,只需将上述相同的值设置在HKLM配置单元下(而非HKCU)。这样设置后,Narrator将在登录屏幕出现时启动,并以SYSTEM权限执行。

横向移动

该技术也可用于横向移动,但这需要拥有通过regedit远程更改RDP设置的权限。首先将恶意msttsloc_onecoreenus.dll传输到目标主机,然后导航至HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp,将SecurityLayer的值更改为0。触发执行时,只需RDP连接到目标主机,在看到登录页面时按下CTRL+WIN+ENTER组合键即可启动Narrator并执行代码。注意,当RDP会话关闭时代码执行也会停止,因此需要将代码迁移到其他进程以实现持续运行。

自带辅助功能

另一个有趣的发现是,攻击者可以创建自己的辅助功能程序(在注册表中称为ATs),并通过上述configuration设置进行配置。具体方法是:导出现有的CursorIndicator注册表项,在记事本中修改名称和描述后重新导入。然后,导航到新创建的ATs项,修改其二进制路径指向攻击者载荷(例如c:\temp\crutch.exe)。甚至可以将路径指定为UNC网络路径,从网络共享加载文件。创建自定义ATs后,将其名称添加到HKLMHKCUconfiguration值中,即可在下次启动/登录时运行。此外,也可以通过运行ATBroker.exe /start [AT名称](例如ATBroker.exe /start Crutch)直接启动自定义ATs。

注意:本文所述技术已在本博客发布时的最新版Windows 10和11上测试验证。该技术要求攻击者已获得目标系统的本地管理员访问权限。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计