nullmap
Очень простой ручной маппер драйверов, основанный на моём более старом voidmap и POC для CVE-2023-21768 от chompie и b33f. Поскольку базовый пост-эксплуатационный примитив чтения/записи памяти в IoRing не очень хорошо справляется с большим количеством последовательных чтений и записей, я решил перезаписать CR4, чтобы отключить SMEP/SMAP и выполнить драйвер, отображённый в usermode. Протестировано на Windows 11 22H2 (22621.525).
Использование:
nullmap.exe <path_to_driver>
Возможные проблемы:
- Драйвер, загруженный вручную (manual mapped), будет располагаться в пуле, выделенном через ExAllocatePool. Если вы хотите использовать это для чего-то более серьёзного, стоит рассмотреть более хороший способ выделения памяти, чтобы её нельзя было так легко сдампить.
- Нет простого способа прочитать оригинальное значение CR4, поэтому мне пришлось захардкодить значение, которое было в моей системе. Оно должно быть одинаковым для большинства современных процессоров, но вам всё равно стоит перепроверить его корректность.
- Я захардкодил смещение до NtGdiGetEmbUFI, поскольку нет простого способа найти его сигнатурным сканированием (sigscan), так что вам придётся обновить это смещение для вашей конкретной сборки Windows.
- Это было написано за один день, так что кодовая база может быть не самой чистой.
Видео:
