Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Fuzzing исследование уязвимостей методом грубой силы.pdf
Скачиваний:
1127
Добавлен:
13.03.2016
Размер:
5.96 Mб
Скачать

Методы

249

сиях операционной системы Windows. Точнее говоря, уязвимость слу$ чилась из$за переполнения буфера в функции DsRolerUpgradeDown$ levelServer и могла быть использована удаленно.

Уровень 6: презентационная оболочка

Хороший пример технологии оболочки уровня 6, которую стоит под$ вергнуть фаззингу, – это XDR, eXternal Data Representation (внешнее представление данных), которое используется в Sun RPC. Среди свя$ занных с XDR уязвимостей, найденных в прошлом, особенно удачным примером будет переполнение целого значения xdr_array, обнаружен$ ное Нилом Мехта (Neel Mehta).1 Дело здесь заключалось в переполне$ нии целого значения. Если атакующий указывал большое количество элементов множества, резервировался буфер, записывался до конца и переполнялся. Это повреждение памяти может быть использовано атакующими для получения контроля над основной системой.

Уровень 7: оболочка приложений

Уровень 7, прикладной, оболочка приложений, – основной объект для фаззинга сетевого протокола среди всех оболочек OSI. Эта оболочка слу$ жит домом для таких известных протоколов, как FTP, SMTP, HTTP, DNS и многих других стандартных и специальных протоколов. Исто$ рически в этой оболочке было обнаружено больше уязвимостей, чем в любой другой. Именно ее чаще всего подвергают фаззингу, потому что различные протоколы имеют самые разные варианты реализации.

В этой главе мы сосредоточимся в основном на оболочке уровня 7, но важно помнить, что программы на любом уровне могут иметь пробле$ мы с применением, и об этом нельзя забывать при тщательной провер$ ке объекта.

Методы

Доступные здесь методы фаззинга большей частью идентичны мето$ дам, о которых говорилось в главе 11 «Фаззинг формата файла». Обоб$ щая, можем сказать, что и формат файла, и сетевой протокол могут быть подвергнуты фаззингу либо грубой силой, либо разумной методо$ логией. Однако в этих подходах применительно к сетевому фаззингу имеются некоторые различия.

Метод грубой силы, или мутационный фаззинг

В контексте фаззинга формата файла фаззинг грубой силы требует, чтобы тестер имел действующие образцы того формата файла, кото$ рый подвергается тестированию. Приложение$фаззер после этого раз$

1http://bvlive01.iss.net/issEn/delivery/xforce/alertdetail.jsp?oid=20823

250

Глава 14. Фаззинг сетевого протокола

личным образом изменяет эти файлы и отправляет каждый случай для тестирования в приложение$объект. В контексте же сетевого фаз$ зинга тестер обычно пользуется сниффером, чтобы завладеть коррект$ ным трафиком протокола, статическим или динамическим способом. Затем фаззер изменяет полученные данные и выстреливает ими в при$ ложение. Это, конечно, не всегда настолько просто, как кажется. Представьте, например, протокол, который использует базовую защи$ ту против атак повтора. В такой ситуации простой фаззинг грубой си$ лы будет эффективным только для кода инициализации сессии, на$ пример процесса авторизации.

Еще один пример случая, когда простой мутационный фаззер потер$ пит неудачу, – это попытка фаззинга протокола с внедренными кон$ трольными суммами. Если фаззер не будет динамически обновлять по$ ля контрольных сумм, приложение$объект может опустить передан$ ные данные, прежде чем начать сколько$нибудь глубокий их анализ. Поэтому случаи для тестирования здесь расходуются напрасно. Мута$ ционный фаззинг хорош при работе с форматом файла, но, в принци$ пе, для сетевого протокола лучше подходит метод, рассматриваемый в следующем разделе.

Разумная грубая сила, или порождающий фаззинг

Применяя разумную грубую силу, для начала нужно исследовать ха$ рактеристики протокола. И все равно разумный фаззер производит атаку методом грубой силы. Однако он опирается на пользовательские файлы конфигурации, отчего процесс становится разумнее. Эти фай$ лы обычно содержат метаданные, описываемые языком протокола.

При фаззинге простого сетевого протокола, например контрольного канала FTP, часто уместнее всего бывает применение именно разумно$ го фаззинга. Простая грамматика, описывающая каждый глагол про$ токола (USER, PASS, CWD и т. д.), и описания типов данных для каж$ дого аргумента глагола обеспечат довольно тщательное тестирование. Разработка порождающего фаззера может быть основана на сущест$ вующей структуре типа PEACH1 или проведена с чистого листа. В по$ следнем случае создается фаззер для конкретного протокола, который в большинстве случаев нельзя применить к иным протоколам. При та$ ком подходе дизайн можно полностью проигнорировать, упростив и его, и процесс использования.

Существует ряд общедоступных инструментов, предназначенных для конкретного протокола, однако многие из них хранятся в тайне, по$ скольку представляют собой, фактически, заряженное оружие. Дру$ гими словами, когда автор выпускает базовый фаззер, все равно, мута$ ционного он или порождающего типа, конечному пользователю необ$

1http://peachfuzz.sourceforge.net/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]