Fuzzing

Тема в разделе "WASM.RESEARCH", создана пользователем ormoulu, 6 фев 2022.

  1. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.082
    Пусть будет отдельный топик про фазинг, маловато на форуме материалов по этой теме.

    [​IMG]

    (более смешных мемасиков не нашлось)
    --- Сообщение объединено, 6 фев 2022 ---
    Небольшой ликбез для тех кто не в курсе и лень гуглить:

    Фазинг это идеологическое расширение модного когда-то брутфорса, подача на вход программы случайного (более или менее) набора данных с целью отследить неожиданное поведение и тем самым обнаружить различные ошибки обработки ввода.
    Применяется как альтернатива ручному тестированию и аудиту кода.

    Умный (smart) фазинг включает создание набора тесткейсов и оценки результативности, в основном по покрытию кода, но есть и другие метрики (вызовы апи, время выполнения, выходные результаты).

    Тесткейсы (testcases) это наборы данных которые мутационный алгоритм генерирует из примеров (валидных) входных данных, которые всячески изменяет. Использование валидных начальных примеров нужно для того чтобы пройти первичное отсеивание тупыми проверками валидности ввода.

    Покрытие кода (code coverage) применяется для оценки эффективности фазинга в целом и используется мутационным алгоритмом для выбора наиболее перспективных тесткейсов для дальнейшего изменения.

    Для сбора покрытия кода применяется динамическая и статическая инструментация кода (code/binary instrumentation), то есть встраивание в значимые участки кода (как правило, ветвления) дополнительного кода, собирающего информацию об исполнии.
    --- Сообщение объединено, 6 фев 2022 ---
    ------------------------------------------------------------------------------
    Собственно есть вопрос по зашитым в коде строковым константам, strcmp и иже с ними.
    Пример для наглядности:

    Код (Text):
    1. if (strcmp (input, "Hello sailor!")
    2.     goto kick_them_out
    3. else
    4.     goto admin_access
    Тупым брутом строку длиннее нескольких символов за вменяемое время не подобрать.
    Выковыривать из кода каждый раз все строки тоже видится не очень перспективным.
    Есть смутная идея это дело инструментировать и модифицировать тесткейсы встраивая динамически выдернутые из аргументов strcmp строки, но не вполне понятно как это реализовать.
    Какие предложения?
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.782
    ormoulu,

    Давай, хеловорлд через брут параметров. Невозможно - конечно нет.

    Тут есть люди которые матан знают очень хорошо и могут доказать что решение в таком виде" невозможно.
     
  3. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.082
    Что именно невозможно? Инструментировать (подменить по сути) strcmp и вытащить параметры? Вставить строку в новые тесткейсы?
    Аргументируйте плиз.
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    4.866
    Без мотивации ничего невозможно. По сабжу: фаззинг - странный предмет. Одно время все кипятком писали и считали его святым граалем поиска уязвимостей в софте. Сейчас что-то уже давно ничего нового по этому поводу не слышно, мода прошла чтоли.
     
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.782
    ormoulu,

    Есть техники очень простые по бруту, их пытаются использовать там где это невозможно. Элементарный msgbox- попытка перебора строк будет ронять апп. Ты рандом прямо в ядро прокинешь ссылки невалид и апп будет падать. О чём вообще речь ??
     
  6. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.082
    А так?

    Код (Text):
    1. wsprintf (buf, "remote input: %s", remote_input);
    2. MessageBoxA (hWnd, buf, "Msg title", MB_OK | MB_ICONQUESTION);
     
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.782
    ormoulu,

    Там строка идёт в ядро, ошибка - апп падает. И сколько миллионов лет ты будешь строку подбирать ??
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    4.866
    Мне просто кажется, что Индий не особо вдупляет, что это и зачем, и на этом стоит спор закончить.
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.782
    Rel,

    Наоборот, брут подбор параметров назван фаззингом. Нет там ничего что можно изучать ни метода ничего. Это тупо брутфорс.
     
  10. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    842
    Вроде у брута и фаззинга цели то разные. Брут - поиск значения, а фаззинг - сужение мест поиска для ресерча. В одном случае на выходе байтовая строка, а в другом, перспективный для анализа узел в cfg или dfg. Фаззинг же не равно автопробиву.
     
  11. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.782
    q2e74,

    Какие графы, есть процедура в драйвере она вызывается с рандом, прочитать её нельзя. Это называется фаззингом. Сейчас обычный кладовщик называется по латыни красиво, суть это не меняет.
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    4.866
     
  13. MaKaKa

    MaKaKa Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2020
    Сообщения:
    47
    Точно описал задачу фаззинга в вулн ресерче. Что вы там подбирать собрались? Не с солверами случайно перепутали?
     
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.782
    MaKaKa,

    Тело кодовое ядерное не доступно - хард изоляции памяти, его нельзя прочитать. Поэтому о чём тут говорить я не знаю. Есть обьект на который посылаются рандом данные, это например входная драйверная процедура туда кидается IOCTL-буфер забитый мусором с целью что когда то это всё забсодит.

    Есть античит battleye, я смотрел его драйвер. Там целиком вирта и что с ней делать если даже она прочитана открыта имеется. Инструментов для девирта нет и солверы ничем не помогут, это задача по свёртке она не решена и не ясно даже как это решать.

    Походу тс думал что фаззинг какая то техника, увы нет это брут параметров, ничего более.
     
  15. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.082
    Все верно.

    Есть 100500 способов снять покрытие, от виртуальной машины до загрузки отдельного драйвера (а то и всего ядра) в юзермоде. Вам как специалисту стыдно должно быть не знать этого.

    Да даже без покрытия и обратной связи мутация валидного входа может дать неплохие результаты.
     
  16. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.782
    ormoulu,

    Покрытие ??

    Кодовое покрытие ты этот термин не можешь использовать, тк не знаешь что это(OP-атаки), это иная тема впрочем не важно.

    > мутация валидного входа может дать неплохие результаты.

    Какая мутация ты что накурился чем то ?

    Результаты плохие я выше сказал что брут займёт миллионы лет. По норм добывается кодовое тело и реверсится.

    Я думал ты умный и в теме, оказалось я ошибался минус один человек. Это грустно всё.)
     
  17. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.082
    Ой расскажите, может что новое узнаю.
     
  18. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    4.866
    Печаль-беда. Приходит такой в тему, которую не понимает, рассказывает, что все кругом дураки, еще и расстраивается из-за этого. И как в такой ситуации депрессию тебе не иметь?
     
  19. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.782
    Рекомендую побанить этих двух, один дурак второй троль.
     
    ormoulu нравится это.
  20. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.082
    А по делу?
    Например что в вашем понимании OP-атаки? Из результатов поиска по форуму можно предположить что ваше нечто личное связаное с DEP/ROP. Гугл, понятное дело, не в курсе.
    Или что насчет тех самых ioctl, вызывающих бсод? Мне например точно известно что такие есть. А вы наверное будете утверждать, что нет, не бывает, и найти невозможно, доказано матаном?