Hack-cessibility: 当DLL劫持遇到Windows辅助功能
在准备MCTTP会议演讲时,Jason Lang (@curi0usJack)和我基于VX-underground中的TTPs进行研究。其中引起我注意的一项持久化技术涉及Narrator.exe执行时加载MSTTSLocEnUS.dll的行为。
技术验证
通过Procmon监控Narrator.exe执行过程,发现它现在查找的DLL路径已变为:
%windir%\system32\speech_onecore\engines\tts\msttsloc_onecoreenus.dll
测试证实,在此位置放置任意DLL即可实现代码执行。关键突破是:通过挂起主线程可阻止语音提示,同时保持DLL代码执行。
用户级持久化
在注册表路径 HKCU\Software\Microsoft\Windows NOT\CurrentVersion\Accessibility 下创建名为"configuration"的REG_SZ值,将其设置为"Narrator"即可实现用户登录时自动启动。
系统级持久化
同样的配置在HKLM hive中设置,可使Narrator在登录屏幕出现时以SYSTEM权限执行。
横向移动
通过远程修改RDP设置:
- 将恶意DLL传输到目标系统
- 修改
HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp下的SecurityLayer值为0 - 通过RDP连接后按CTRL+WIN+ENTER触发Narrator执行代码
自定义辅助功能
可以创建自定义辅助工具:
- 导出现有ATs注册表项并修改
- 更改二进制路径指向payload
- 支持本地路径和UNC路径
- 使用ATBroker.exe /start [名称] 手动启动
这些技术在当前最新版本的Windows 10和11中仍然有效,展示了Windows辅助功能生态系统中存在的安全风险。