Пусть будет отдельный топик про фазинг, маловато на форуме материалов по этой теме. (более смешных мемасиков не нашлось) --- Сообщение объединено, 6 фев 2022 --- Небольшой ликбез для тех кто не в курсе и лень гуглить: Фазинг это идеологическое расширение модного когда-то брутфорса, подача на вход программы случайного (более или менее) набора данных с целью отследить неожиданное поведение и тем самым обнаружить различные ошибки обработки ввода. Применяется как альтернатива ручному тестированию и аудиту кода. Умный (smart) фазинг включает создание набора тесткейсов и оценки результативности, в основном по покрытию кода, но есть и другие метрики (вызовы апи, время выполнения, выходные результаты). Тесткейсы (testcases) это наборы данных которые мутационный алгоритм генерирует из примеров (валидных) входных данных, которые всячески изменяет. Использование валидных начальных примеров нужно для того чтобы пройти первичное отсеивание тупыми проверками валидности ввода. Покрытие кода (code coverage) применяется для оценки эффективности фазинга в целом и используется мутационным алгоритмом для выбора наиболее перспективных тесткейсов для дальнейшего изменения. Для сбора покрытия кода применяется динамическая и статическая инструментация кода (code/binary instrumentation), то есть встраивание в значимые участки кода (как правило, ветвления) дополнительного кода, собирающего информацию об исполнии. --- Сообщение объединено, 6 фев 2022 --- ------------------------------------------------------------------------------ Собственно есть вопрос по зашитым в коде строковым константам, strcmp и иже с ними. Пример для наглядности: Код (Text): if (strcmp (input, "Hello sailor!") goto kick_them_out else goto admin_access Тупым брутом строку длиннее нескольких символов за вменяемое время не подобрать. Выковыривать из кода каждый раз все строки тоже видится не очень перспективным. Есть смутная идея это дело инструментировать и модифицировать тесткейсы встраивая динамически выдернутые из аргументов strcmp строки, но не вполне понятно как это реализовать. Какие предложения?
ormoulu, Давай, хеловорлд через брут параметров. Невозможно - конечно нет. Тут есть люди которые матан знают очень хорошо и могут доказать что решение в таком виде" невозможно.
Что именно невозможно? Инструментировать (подменить по сути) strcmp и вытащить параметры? Вставить строку в новые тесткейсы? Аргументируйте плиз.
Без мотивации ничего невозможно. По сабжу: фаззинг - странный предмет. Одно время все кипятком писали и считали его святым граалем поиска уязвимостей в софте. Сейчас что-то уже давно ничего нового по этому поводу не слышно, мода прошла чтоли.
ormoulu, Есть техники очень простые по бруту, их пытаются использовать там где это невозможно. Элементарный msgbox- попытка перебора строк будет ронять апп. Ты рандом прямо в ядро прокинешь ссылки невалид и апп будет падать. О чём вообще речь ??
А так? Код (Text): wsprintf (buf, "remote input: %s", remote_input); MessageBoxA (hWnd, buf, "Msg title", MB_OK | MB_ICONQUESTION);
ormoulu, Там строка идёт в ядро, ошибка - апп падает. И сколько миллионов лет ты будешь строку подбирать ??
Rel, Наоборот, брут подбор параметров назван фаззингом. Нет там ничего что можно изучать ни метода ничего. Это тупо брутфорс.
Вроде у брута и фаззинга цели то разные. Брут - поиск значения, а фаззинг - сужение мест поиска для ресерча. В одном случае на выходе байтовая строка, а в другом, перспективный для анализа узел в cfg или dfg. Фаззинг же не равно автопробиву.
q2e74, Какие графы, есть процедура в драйвере она вызывается с рандом, прочитать её нельзя. Это называется фаззингом. Сейчас обычный кладовщик называется по латыни красиво, суть это не меняет.
Точно описал задачу фаззинга в вулн ресерче. Что вы там подбирать собрались? Не с солверами случайно перепутали?
MaKaKa, Тело кодовое ядерное не доступно - хард изоляции памяти, его нельзя прочитать. Поэтому о чём тут говорить я не знаю. Есть обьект на который посылаются рандом данные, это например входная драйверная процедура туда кидается IOCTL-буфер забитый мусором с целью что когда то это всё забсодит. Есть античит battleye, я смотрел его драйвер. Там целиком вирта и что с ней делать если даже она прочитана открыта имеется. Инструментов для девирта нет и солверы ничем не помогут, это задача по свёртке она не решена и не ясно даже как это решать. Походу тс думал что фаззинг какая то техника, увы нет это брут параметров, ничего более.
Все верно. Есть 100500 способов снять покрытие, от виртуальной машины до загрузки отдельного драйвера (а то и всего ядра) в юзермоде. Вам как специалисту стыдно должно быть не знать этого. Да даже без покрытия и обратной связи мутация валидного входа может дать неплохие результаты.
ormoulu, Покрытие ?? Кодовое покрытие ты этот термин не можешь использовать, тк не знаешь что это(OP-атаки), это иная тема впрочем не важно. > мутация валидного входа может дать неплохие результаты. Какая мутация ты что накурился чем то ? Результаты плохие я выше сказал что брут займёт миллионы лет. По норм добывается кодовое тело и реверсится. Я думал ты умный и в теме, оказалось я ошибался минус один человек. Это грустно всё.)
Печаль-беда. Приходит такой в тему, которую не понимает, рассказывает, что все кругом дураки, еще и расстраивается из-за этого. И как в такой ситуации депрессию тебе не иметь?
А по делу? Например что в вашем понимании OP-атаки? Из результатов поиска по форуму можно предположить что ваше нечто личное связаное с DEP/ROP. Гугл, понятное дело, не в курсе. Или что насчет тех самых ioctl, вызывающих бсод? Мне например точно известно что такие есть. А вы наверное будете утверждать, что нет, не бывает, и найти невозможно, доказано матаном?