TGViewer
Order of Six Angles Order of Six Angles @orderofsixangles · 5.39K subscribers
Post #2921 1.92K
Blackbox Фаззинг драйверов Windows

Решил заняться этим делом, для этого мне подсказали проект msFuzz (https://github.com/0dayResearchLab/msFuzz) (практически единственный в своем роде). Развернуть его было не так-то просто. Для начала пришлось найти совместимый Intel процессор, который должен поддерживать технологию Intel PT (хардварная фича для получения трейса CPU). Также пришлось докупить ОЗУ. Следующая сложность была в том, что для msFuzz надо на bare metal ставить специальное ядро ОС (6.0.0-nyx+). У меня на этом ПК крутился Proxmox с виртуалками, пришлось все забэкапить и снести и поставить Ubuntu server 24 и потом поставить кастомное ядро под фаззер. Алгоритм работы фаззера следующий:

1. На Ubuntu-хосте стоит kAFL/msFuzz + QEMU-Nyx + специальное ядро 6.0.0-nyx+.

2. Внутри QEMU поднимается Windows VM с драйвером, который мы хотим фаззить.

3. В VM запускается harness: маленькая программа, которая открывает device path драйвера

4. Harness сообщает kAFL диапазон адресов целевого драйвера, чтобы coverage считался именно по нашему конкретному драйверу.

5. Fuzzer берет seed: структура вида IOIO + IOCTL + in_len + out_len + input_buffer (это под мой кейс).

6. kAFL мутирует эти байты и через shared memory передает payload в VM.

7. Harness делает DeviceIoControl() в драйвер.

8. QEMU-Nyx через KVM/Intel PT смотрит, какие новые basic blocks были достигнуты.

9. Если появился новый coverage path, payload сохраняется в corpus.

10. Если VM/ядро падает, зависает или ловит bugcheck, kAFL кладет вход в crash/timeout/kasan findings.

11. После каждой итерации VM откатывается к snapshot, поэтому тесты быстрые и изолированные.

За счет технологии Intel PT обеспечивается covereged guided fuzzing, в отличии от подхода, когда мы фаззим драйвер через userspace программу и не видим что происходит в ядре. Классический способ фаззинга, когда мы крашим ОС с драйвером и потом читаем дамп - очень медленна. Способ msFuzz кратно быстрее. Происходит это так: загружается винда один раз, kAFL/Nyx делает snapshot, мы делаем fuzz итерацию, а потом очень быстро откатываем VM к snapshot после каждого payload. В моей текущей сессии возврат к снэпшоту происходит 2154 раза в секунду или 129 240 в минуту.

Мое железо:

CPU: Intel Core i7-13620H 10 cores / 16 threads
RAM: DDR5 32 GB 4800
More from @orderofsixangles
  1. Sep 29, 2026Натравил локальный qwen 3.8 27b на flareon ctf task. Так он взял полез в интернет искать ф…
  2. Sep 27, 2026Watching Offensive AI Agents Work https://x.com/i/broadcasts/1XGygwYaEQVxM
  3. Sep 26, 2026Post #3203
  4. Sep 25, 2026Официальный IDA MCP https://hex-rays.com/blog/hex-rays-ida-mcp-server
  5. Sep 23, 2026Короче поставил себе GrokBot. Будем изучать, что за зверь такой
  6. Sep 22, 2026Windows Exploitation Techniques: Dangling COM Object Registrations https://projectzero.goo…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →