此仓库包含一个利用ETW泄露内核内存地址的PoC程序。它通过创建一个消费者(可以是几乎所有提供程序,因为几乎所有提供程序都会泄露内核地址)并请求堆栈跟踪来实现。收到堆栈跟踪后,解析该跟踪以提取内核内存地址。由于微软不认为管理员到内核的访问是一种安全边界,这种情况短期内不会改变。在某些利用场景中可能有用(例如,如果你知道某个ETW提供程序泄露的内核地址位于距内核基址或其他感兴趣地址的某个偏移处,想要泄露内核基址),或者仅作为一个小把戏。
请注意,需要管理员权限才能开始消费ETW提供程序的事件。如果已有程序在消费ETW事件,且普通用户有权访问该跟踪,那么普通用户也将能够泄露内核地址。它不会泄露实际的内核数据,仅泄露内核地址(除非在极端的边缘情况下)。

你可以在EtwLeakKernel中看到一个使用示例。你也可以使用任何其他ETW消费者并请求堆栈,此示例中使用的是Microsoft-Windows-Kernel-Network。
git clone https://github.com/Idov31/EtwLeakKernel --recursive