持久化(用户级)
研究发现,可在HKCU\Software\Microsoft\Windows NOT\CurrentVersion\Accessibility下创建名为configuration的REG_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后,将其名称添加到HKLM或HKCU的configuration值中,即可在下次启动/登录时运行。此外,也可以通过运行ATBroker.exe /start [AT名称](例如ATBroker.exe /start Crutch)直接启动自定义ATs。
注意:本文所述技术已在本博客发布时的最新版Windows 10和11上测试验证。该技术要求攻击者已获得目标系统的本地管理员访问权限。