
Утечка адресов ядра из ETW-потребителей. Требует прав администратора.
Этот репозиторий содержит PoC для программы, которая использует ETW для утечки адресов памяти ядра. Это достигается за счёт создания потребителя (почти любого провайдера, так как почти все они утекают адресами ядра) и запроса у него стек-трейса. После получения стек-трейса он анализируется для извлечения адресов памяти ядра. Поскольку Microsoft не считает права администратора относительно ядра границей безопасности, эта ситуация в ближайшее время не изменится. Может быть полезно в некоторых сценариях эксплуатации (например, если нужно получить базовый адрес ядра, когда известно, что определённый ETW-провайдер утекает адрес ядра, находящийся на некотором смещении от базового адреса ядра или любого другого интересующего адреса) или просто как трюк для вечеринок.
Имейте в виду, что для начала потребления событий от ETW-провайдеров требуются права администратора. Если уже существует программа, потребляющая события ETW, к трассировке которой обычный пользователь имеет доступ, то обычный пользователь также сможет утекать адреса ядра. Это не предоставляет утечки реальных данных ядра, только адреса ядра (кроме, возможно, экстремальных пограничных случаев).

Пример использования можно посмотреть в EtwLeakKernel. Вы также можете использовать любой другой ETW-потребитель и запросить стек, в этом примере используется Microsoft-Windows-Kernel-Network.
git clone https://github.com/Idov31/EtwLeakKernel --recursive