среда, 7 декабря 2016 г.

Fuzzing, Исследование уязвимостей методом грубой силы. Саттон, Грин и Амини


Ссылка на OZON

Крутая техническая книга. Авторы написали ее в 2007 году, будучи первопроходцами в направлении фаззинга. И не просто сделали книгу, а еще и сайт по фаззингу запилили — http://www.fuzzing.org/. На сайте выложены фаззеры:
  • Созданные авторами в рамках написания книги (бери да юзай).
  • Остальные фаззеры.
Это как Testbase, только ссылки не на полезные статьи по тестированию, а на фаззеры. Все собрано в одном месте, есть исходный код, очень удобно!

Содержание выглядит так:
  • Фаззинг формата файла
  • Фаззинг формата файла: автоматизация под UNIX
  • Фаззинг формата файла: автоматизация под Windows
То есть сначала рассказывается принцип фаззинга, а потом идут главы с описанием процесса автоматизации под разные платформы. С конкретными примерами — возьмем этот фаззер, ссылку смотри на http://www.fuzzing.org/, вот в нем есть такой участок кода, он нам важен потому что... Вот есть другой участок кода, он важен потому, что... Вот тут вы можете сами что-то допилить и расширить возможности. И так далее. Это круто! Практическое руководство к действию ))


Книга сложная, сами авторы это признают:

Перед тем как браться за книгу, читатели должны получить как минимум основные сведения о программировании и компьютерных сетях. Фаззинг — это автоматизация тестирования безопасности, поэтому естественно, что многие фрагменты книги посвящены построению инструментов. 
Хотя, казалось бы... Ведь фаззинг — это процесс отсылки намеренно некорректных данных в объект с целью вызвать ситуацию сбоя или ошибку. Так пишут авторы во введении. Кажется, ничего сложного. Мы постоянно вводим всякую фигню в приложение в попытках вызвать сбой. Но фаззинг — это сложнее. Это про автоматизацию и глубокие познания в программировании. По крайней мере, для меня глубокие — я с трудом дочитала книгу до конца Не будь она по моей профессии, бросила бы на половине. Потому что вначале все понимала, а потом пошло обсуждение кода, которое "прочитал и забыл" или сразу "не понял" =))) Но зато технарям-технарям эта книга точно придется по душе!

Примеры написаны на разных языках программирования, чтобы показать возможность выбора. Рассматриваются полезные инструменты и библиотеки, которые можно использовать в собственно фаззере. Рассматриваются эвристики фаззинга. При этом мне нравится опрделние авторов:

Эвристика — это не что иное, как красиво звучащий вариант выражения «профессиональное угадывание»
По-моему, это прекрасно Smile :)

Из полезных хитростей, которые можно применять даже при тестировании вручную:

Символы форматирующей строки — %d, %x, %s — приводят к считыванию памяти из стека
Символ %n является уникальным, поскольку приводит к записи в память ←107 стр книги
Модификаторы обхода каталога ../.. и ..\..
Некоторые общие фаззинговые строки и их описания (стр 204):

==============================================================

"A" x100000  → Длинная строка. Может привести к переполнению буфера.

"%n%n" x5000  → Длинная строка со знаками процента. Может привести к переполнению буфера или стать причиной уязвимости из-за форматирующей строки.

HTTP:// + "A" x10000  → Корректный формат URL, Может стать причиной переполнения буфера в ходе анализа URL,

"A" x5000 + "@" + "A" x5000  → Корректный формат емейл. Может стать причиной переполнения буфера в ходе анализа адреса электронной почты.

0x20000000, 0x40000000, 0x80000000, 0xffffffff  → Одни из немногих целочисленных строк, которые могут запустить переполнение целочисленными значениями.

"../.." x5000 + "AAAAA"  → Может запустить переполнение в пути или в коде анализа адреса URL,

==============================================================

В конце книги авторы рассматривают существующий среды фаззинга, плюсы и минусы. И, разумеется, они подготовили свою — Sulley: интегрированная среда фаззинга. Доступна на сайте авторов, в книге ей посвящено аж 30 страниц! Как не погордиться собственным детищем Smile :) Это круто, что авторы создали свою среду, выложили в открытый доступ и так подробно описали!

А в самом конце авторы упоминают о важности локализации. Что толку от фаззера, который сказал "из 50000 тест-кейсов какой-то один сломался?". Информации ноль. Поэтому надо писать логи и вообще отслеживать сам процесс фаззинга.

В общем, вывод такой — если вы интересуетесь автоматизацией и тестированием безопасности, книгу однозначно читать! И сразу пробовать применять. Скачать все их фаззеры и опробовать в действии Smile :)

PS: добавила книгу в общий список прочитанных мною книг.

Комментариев нет:

Отправить комментарий