Size: a a a

DCG#7812 DEFCON-RUSSIA

2019 January 31

WS

Wire Snark in DCG#7812 DEFCON-RUSSIA
D1g1
что конкретно  ? этого нет в материалах статьи чуть выше ?
Прочитал. Отличный обзор... Зоопарк тулзов. Но у меня вопрос конкретный, как раз как в ссылке от @Beefat  Вот есть у меня к примеру приложение, принимающее структурированные данные - с чексамами и длинами, например. Для libFuzz я могу кастомный мутатор добавить, который это будет учитывать. А для afl как быть? Причем, я не могу даже написать какую-нибудь программу-фильтр, чтобы, условно, написать: afl -- myfilter | target_program options - т.к. afl можно указать только имя target_program... Возникает пока такая идея: запускать фильтр в бакграунде и преобразовывать то, что выплёвывает afl на уровне файлов.. разумный подход вообще?
источник

WS

Wire Snark in DCG#7812 DEFCON-RUSSIA
Или я хочу к примеру фаззить cgi-скрипт. Там инпут нужно в env variables класть... с этим как быть?
источник

e

e13fter in DCG#7812 DEFCON-RUSSIA
Можно обернуть приложение,  и в обертке считать чексуммы и записывать в нужное место уже прошедшего мутацию буфера
источник

WS

Wire Snark in DCG#7812 DEFCON-RUSSIA
Да, тоже думал об этом. Но как-то не очень красивое решение.. хочется внешним образом как-то это делать.
источник

WS

Wire Snark in DCG#7812 DEFCON-RUSSIA
Но наверно побыстрее будет, чем с файлами возиться...
источник

WS

Wire Snark in DCG#7812 DEFCON-RUSSIA
А почему у afl такие ограничения вообще? Есть принципиальная сложность, почему нельзя разделить "launch script" и "target binary"? Или просто особенность проекта? (закрытая разработка, в апстрим не принимается почти ничего)?
источник

D

D1g1 in DCG#7812 DEFCON-RUSSIA
Wire Snark
А почему у afl такие ограничения вообще? Есть принципиальная сложность, почему нельзя разделить "launch script" и "target binary"? Или просто особенность проекта? (закрытая разработка, в апстрим не принимается почти ничего)?
1) Да, AFL из коробки не способен преодолевать моменты связанные с проверками контрольных сумм и т.д.
2) LibFuzz и AFL сранивать некорректно так как LibFuzz фазит одну конкретную точку входа и все входные данные сразу для нее описываются (поэтому и можно написать свой мутатор с правилами). AFL просто берет семпл данных и старается покрыть как можно быольше ветвей программы и все. Поэтому он и Coverage-guided fuzzer или Feedback-based fuzzer.
3) Чтобы обходить проверки контрольных сумм и так далее есть подход просто нопать/вырезать данный код на момент фазинга, а после уже на крешах проверять. Очень хорошо такая идея описаны вот в этой работе "T-Fuzz: fuzzing by program transformation" https://nebelwelt.net/publications/files/18Oakland.pdf
4) AFL в первую очередь нацелен на file fuzzing и что касается более сложных случаев типа переменных кружения или сетевой активности люди пишут различные обертки.
5) "А почему у afl такие ограничения вообще?" <- для своей работы AFL инструментирует целевое ПО и на базе этой инстурментации и построена его логика мутации и т.д.
источник

NK

ID:114478757 in DCG#7812 DEFCON-RUSSIA
Hello, friends
источник

NK

ID:114478757 in DCG#7812 DEFCON-RUSSIA
I was wondering if IIS servers running asp applications have any configuration or form of handling files like the Apache with htaccess
источник

NK

ID:114478757 in DCG#7812 DEFCON-RUSSIA
I meant .net applications in a general form
источник

I

Inquisitor in DCG#7812 DEFCON-RUSSIA
web.config?
источник

NK

ID:114478757 in DCG#7812 DEFCON-RUSSIA
Inquisitor
web.config?
idk, i'm not used to mess around with .net applications neither windows :(
источник

NK

ID:114478757 in DCG#7812 DEFCON-RUSSIA
now i have the demand of learning windows stuff + powershell
источник

NK

ID:114478757 in DCG#7812 DEFCON-RUSSIA
Inquisitor
web.config?
That was exactly what i was looking for
источник

I

Inquisitor in DCG#7812 DEFCON-RUSSIA
ID:114478757
That was exactly what i was looking for
👍
источник

NK

ID:114478757 in DCG#7812 DEFCON-RUSSIA
Thank you
источник

I

Inquisitor in DCG#7812 DEFCON-RUSSIA
u r welcome
источник

NK

ID:114478757 in DCG#7812 DEFCON-RUSSIA
Inquisitor
u r welcome
Besides this, any tip on pentesting windows and .net applications?
источник

WS

Wire Snark in DCG#7812 DEFCON-RUSSIA
D1g1
1) Да, AFL из коробки не способен преодолевать моменты связанные с проверками контрольных сумм и т.д.
2) LibFuzz и AFL сранивать некорректно так как LibFuzz фазит одну конкретную точку входа и все входные данные сразу для нее описываются (поэтому и можно написать свой мутатор с правилами). AFL просто берет семпл данных и старается покрыть как можно быольше ветвей программы и все. Поэтому он и Coverage-guided fuzzer или Feedback-based fuzzer.
3) Чтобы обходить проверки контрольных сумм и так далее есть подход просто нопать/вырезать данный код на момент фазинга, а после уже на крешах проверять. Очень хорошо такая идея описаны вот в этой работе "T-Fuzz: fuzzing by program transformation" https://nebelwelt.net/publications/files/18Oakland.pdf
4) AFL в первую очередь нацелен на file fuzzing и что касается более сложных случаев типа переменных кружения или сетевой активности люди пишут различные обертки.
5) "А почему у afl такие ограничения вообще?" <- для своей работы AFL инструментирует целевое ПО и на базе этой инстурментации и построена его логика мутации и т.д.
Спасибо за ответ!
2) Ну, разница же вроде не настолько большая? И тот и другой coverage-guided, разница в том, что libFuzz это библиотека. Точка входа - ну, у afl она фиксирована, да (файл или stdin), а у libFuzz - сам выбираешь на уровне функции.. По факту без оберток тестировать сложно и тем и тем...
3) Крутая идея, спасибо за ссылку. Но это уже не afl... хм, интересно, как они false positives после отключения проверок вычисляют (надо почитать)
4) Что имеется в виду под обертками - обертки над тестируемым кодом? Или над afl?
5) Это-то понятно. И, видимо, afl хочет exec'ать инструментированный бинарник. Т.е. просто launch script нельзя, теперь понимаю. Но тогда можно так: дополнительная опция: запустить скрипт и сливать ему stdout. А его stdout отправлять в целевое ПО. Как раз таки чистый фильтр... Но видимо это уже "слишком кастомно" для afl...
источник

D

D1g1 in DCG#7812 DEFCON-RUSSIA
Wire Snark
Спасибо за ответ!
2) Ну, разница же вроде не настолько большая? И тот и другой coverage-guided, разница в том, что libFuzz это библиотека. Точка входа - ну, у afl она фиксирована, да (файл или stdin), а у libFuzz - сам выбираешь на уровне функции.. По факту без оберток тестировать сложно и тем и тем...
3) Крутая идея, спасибо за ссылку. Но это уже не afl... хм, интересно, как они false positives после отключения проверок вычисляют (надо почитать)
4) Что имеется в виду под обертками - обертки над тестируемым кодом? Или над afl?
5) Это-то понятно. И, видимо, afl хочет exec'ать инструментированный бинарник. Т.е. просто launch script нельзя, теперь понимаю. Но тогда можно так: дополнительная опция: запустить скрипт и сливать ему stdout. А его stdout отправлять в целевое ПО. Как раз таки чистый фильтр... Но видимо это уже "слишком кастомно" для afl...
Не за что)
2) Ну кому как) Так для старта работы AFL можно ему просто кинуть какой-нибудь экземпляр входных данных (без особого понимания что и как там устроено), для libFuzz нужно описать как работать с этой API и т.д.
3) Не за что. Там по ссылке они рассказывают все.
4) Можно глянуть одну из упомянутых ссылок https://habr.com/ru/post/259671/ тут про libcurl
5) Да можно и так - тут уже кто на что горазд)
источник