Pull to refresh

Comments 6

Dirbuster брутит директории в web application. К слову. Аналогия с фаззингом С++ applications имхо такая себе.

Да, этот пример «на грани». По сути мы ищем раскрытие информации при помощи проверенного списка путей. Конечно, это очень отличается от Greybox-фаззинга приложений, но Blackbox часто работает именно так.

Не первый раз читаю про фаззинг и возникает вопрос: все эти инструменты могут работать с уже имеющимся исполняемым файлом? Например я хочу пофаззить word.exe из MS Office ;-)

В случае бинарного фаззинга всё немного сложнее, взять инструмент, чтобы он сразу заработал, в большинстве случаев не получится. Под Windows можно использовать WinAFL, TinyAFL, Jackalope, есть и другие варианты. Но придется реверсить. Да и MS Office тяжелый таргет. Ну и в случае исполняемых файлов не получается сделать такие же хорошие оракулы багов. Например, слежение за кучей начинает использовать намного больше памяти, а детектировать неправильное чтение буфера на стеке очень сложно, ведь нет информации о границах переменных.

Как признак бага в оракуле можно было бы использовать необработанные исключения? Я, когда делал свой "фаззер" делал именно так, но ни о каком "умном" изменении входных данных и тем более о покрытии кода и речи там не шло. А хотелось бы чего-то более эффективного...

Да, необработанные исключения - это оракул багов, который есть в каждой программе. Проблема в том, что он очень слабый. Например, есть такая уязвимость off-by-one. Когда программа промахивается и записывает на один байт больше, чем надо. Например, неправильно посчитали, куда на ставить ноль в строке в C. Поскольку у кучи есть определенная гранулярность, то в большинстве случаев такая перезапись не затронет какие-либо метаданные. Только неиспользуемый кусок выделенного чанка. Оракулы багов нужны, чтобы сразу обнаруживать такие проблемы, потому что и они иногда приводят к эксплуатации. В Windows для этого включают специальную кучу.

Если хотите попробовать пофаззить какой-то исполняемый файл на Windows, попробуйте https://github.com/linhlhq/TinyAFL или https://github.com/googleprojectzero/Jackalope . Но лучше начать с чего-то попроще Word.

Sign up to leave a comment.