0x00 前言
我从ABUSING WINDOWS TELEMETRY FOR PERSISTENCE学到了一种利用TelemetryController实现的自启动后门方法,在Win10下测试没有问题,但在Win7和Server2012R2下测试遇到了不同的结果。
本文将要记录我的学习心得,分析利用方法,给出防御建议。
参考资料:
https://www.trustedsec.com/blog/abusing-windows-telemetry-for-persistence/
0x01 简介
本文将要介绍以下内容:
◼基础知识
◼常规利用方法
◼在Win7和Server2012R2下遇到的问题
◼解决方法
◼利用方法
◼防御建议
0x02 基础知识
1.TelemetryController
对应的进程为CompatTelRunner.exe
CompatTelRunner.exe被称为Windows兼容性遥测监控程序。它会定期向微软发送使用和性能数据,以便改进用户体验和修复潜在的错误。
通常是为了升级win10做兼容性检查用的程序。
通过计划任务Microsoft Compatibility Appraiser启动。
计划任务Microsoft Compatibility Appraiser默认启用,每隔一天自动运行一次,任意用户登录时也会运行。
2.计划任务Microsoft Compatibility Appraiser
(1)通过面板查看计划任务
启动taskschd.msc
依次选择Task Scheduler (Local) -> Task Scheduler Library -> Microsoft -> Windows -> Application Experience,选择Microsoft Compatibility Appraiser
如下图
这里能看到计划任务Microsoft Compatibility Appraiser的详细信息。
(2)通过命令行查看计划任务
命令如下:
如果是在中文操作系统,有可能会产生以下错误:
如下图
查看cmd 编码,执行命令:chcp
返回结果:
表示使用936中文GBK编码
如下图
解决方法:
换成437美国编码,命令如下:chcp 437
再次执行: schtasks /query
结果正常
如下图
直接筛选出Microsoft Compatibility Appraiser:
显示详细信息:
修改计划任务状态,将禁用状态改为启用:
0x03 常规利用方法
1.修改注册表
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController
新建任意名称的Key,键值信息如下:
以上操作可通过命令行实现,命令如下:
注:
这里创建了名为fun的Key
2.开启计划任务Microsoft Compatibility Appraiser
可以选择等待计划任务启动
也可以强制开启,命令如下:
后门触发,在Win10系统下会立即以System权限启动进程CompatTelRunner.exe和notepad.exe
注:
CompatTelRunner.exe为notepad.exe的父进程,如果进程notepad.exe正在运行,那么进程CompatTelRunner.exe一直处于阻塞状态。
0x04 在Win7和Server2012R2下遇到的问题
操作方法同上,在启动后门后,会以System权限启动两个进程CompatTelRunner.exe。
如下图
其中一个CompatTelRunner.exe的命令行参数为:
该进程对应注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController\Appraiser
经过实际测试得出以下结论:
1、经过一段时间后,如果仍未完成检查,进程CompatTelRunner.exe会持续运行,无法以System权限启动进程notepad.exe
2、经过一段时间后,如果完成检查,进程CompatTelRunner.exe会自动退出,接下来以System权限启动进程CompatTelRunner.exe和notepad.exe
3、如果选择强制结束进程CompatTelRunner.exe,同样接下来会以System权限启动进程CompatTelRunner.exe和notepad.exe
如下图
这里我们可以避免这个问题,实现稳定触发,以System权限启动进程CompatTelRunner.exe和notepad.exe,方法如下:
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController\Appraiser的Command项
默认值为%windir%\system32\CompatTelRunner.exe -m:appraiser.dll -f:DoScheduledTelemetryRun
这里可以选择跳过检查过程,例如将Command项的值置空,就不会在计划任务启动时执行检查
为了提高隐蔽性,可以将Command项设置为%windir%\system32\CompatTelRunner.exe -m:appraiser.dll
为了验证修改键值是否影响系统的正常功能,可以对%windir%\system32\CompatTelRunner.exe进行反编译
启动进程的伪代码细节如下图
0x05 利用方法
1.前置条件
需要查看是否开启默认的计划任务Microsoft Compatibility Appraiser,查询命令如下:
2.放置后门
我在Win7、Server2012R2、Win10测试的结果表明,稳定利用方法如下:
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController\Appraiser的Command项。
值设置为C:\WINDOWS\system32\cmd.exe /c notepad.exe。
命令行实现的命令如下:
补充:还原配置的命令
3.后门触发
等待计划任务Microsoft Compatibility Appraiser运行
为了便于测试,可以强制开启,命令如下:
4.特点
能够绕过Autoruns的检测,以System权限执行命令。
断网状态下同样能够触发。
0x06 防御建议
1.查看注册表的默认值是否被修改
(1)查看注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController\Appraiser的Command项。
命令如下:
默认值如下:
(2)查看注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController下的Key。
命令如下:
默认值如下:
2.禁用计划任务Microsoft Compatibility Appraiser
命令如下:
3.查看进程CompatTelRunner.exe信息
分析进程CompatTelRunner.exe下是否有可疑子进程。
0x07 小结
本文记录了我对TelemetryController后门机制的学习心得,总结出了更为通用的利用方法,给出针对性的防御建议。
如若转载,请注明原文地址