NT-AUTHORITY-SYSTEM-CONTEXT-RTCORE
此利用程序重建并利用了CVE-2019-16098漏洞。该漏洞位于Micro-Star MSI Afterburner 4.6.2.15658(又名RTCore64.sys和RTCore32.sys)驱动中,允许任何已认证用户读写任意内存、I/O端口和MSR。我没有使用Ntoskrnl.exe的硬编码基址,而是动态计算,并为新版本Windows重新计算了所有偏移量。EPROCESS结构是一个不透明结构,用作进程的进程对象;PsInitialSystemProcess全局变量指向系统进程的进程对象。因此,要计算PsInitialSystemProcess的偏移/地址,我们需要Ntoskrnl.exe的基址——我动态计算了该基址,之后计算了EPROCESS结构中窃取系统令牌和提升权限所需的所有字段。这些已签名驱动还可用于绕过Microsoft驱动签名策略,以部署恶意代码。
https://github.com/user-attachments/assets/64295738-987a-4309-811a-c8805d788e05
代码流程
- 定义RTCORE64读写操作所需的结构。
- 计算Ntoskrnl.exe的基址。
- 计算PsInitialSystemProcess的偏移量和地址。
- 计算EPROCESS结构中所需字段(Token、UniqueProcessId、ActiveProcessLinks)的偏移量。
- 使用设备对象窃取并写入System进程的令牌。
- 以System上下文提升权限。
用法
- 使用Visual Studio 2019构建并编译程序
- 在执行编译后的二进制文件之前启动服务。
- 运行命令创建服务 (sc create RTCORE64 binPath="Path of Driver File" type=kernel)
- 启动服务 (sc start RTCORE64
- 运行编译后的二进制文件,获取NT-AUTHORITY\SYSTEM
注意
- 已在Windows 11 23H2上测试,releaseID 2009,内部版本号22631.3447,主版本号10。
- 新的发布版本和内部版本号可能具有不同的偏移量。
- 此代码利用PPLKiller技术获取Ntoskrnl.exe的基址。
免责声明
仅用于教育目的。
参考资料