Windows Driver Fuzzing. Part 2.
Обновил термопасту и решил выжать максимум из этой фаззинг машинки. Недельку пофаззив, я пришел к выводу, что упора в CPU и ОЗУ нету. Проц не работает на полную мощность и мне это не нравилось, куча ядер и потоков простаивает. Выяснилось, что все упирается в Input/Output систему, а именно в ССД диск. Дело в том, что при фаззинге происходит постоянное чтение и запись следующих данных:
1. snapshot/ — самый большой кусок - 4.1G. Это fast VM snapshot: fast_snapshot.mem_dump, fast_snapshot.qemu_state, state.yaml, overlay/cache для диска. Благодаря этому QEMU быстро откатывается между exec’ами.
2. corpus/ - входные данные, которые дали интересные последствия
3. metadata/, bitmaps/ — метаданные и coverage/bitmap по найденным payload’ам.
4. stats, stats.csv, worker_stats_* — живые stats фаззера и каждого worker’а
5. shared buffers для 16 воркеров
6. redqueen_workdir_* — рабочие каталоги Redqueen для input-to-state/compare solving.
Я нашел решение - запихать все в tmpfs (в ОЗУ). То есть, использовать ОЗУ как хранилище необходимых фаззеру данных. 32 Гб хватает. С таким подходом удалось разогнаться в текущей сессии до 22k exec/s, при этом CPU package ~81°C. Правда есть большой минус - при ребуте или каком-то сбое, данные из озу потеряются, поэтому их надо оттуда иногда бэкапить. Теперь я наконец-то смог полностью загрузить 10 ядер, 16 потоков и фаззер работает на полную мощность.
Post #2933
1.14K
Order of Six Angles Blackbox Фаззинг драйверов Windows Решил заняться этим делом, для этого мне подсказали проект msFuzz (https://github.com/0dayResearchLab/msFuzz) (практически единственный в своем роде). Развернуть его было не так-то просто. Для начала пришлось найти совместимый…
