Методы поиска уязвимостей в программном обеспечении на основе технологии фаззинга
|
Введение 4
1. Обзор 6
1.1. Определение фаззинга 6
1.2. Фазы фаззинга 6
1.3. Ограничения и исключения при фаззинге 7
1.4. Методы и типы фаззинга 9
2. Структура фаззеров 12
2.1. Фаззеры коммуникационных протоколов 12
2.2. Фаззер Sulley 13
2.2.1. Использование Sulley 14
2.2.2. Протокол Sulley 14
2.2.3. Строки 14
2.2.4. Разделители 15
2.2.5. Постоянные и случайные 16
2.2.6. Фаззинговая библиотека 18
2.2.7. Бинарные данные 18
2.2.8. Целые числа 18
2.2.9. Блоки и группы 20
2.2.10. Кодировщики 23
2.2.11. Зависимости 24
2.2.12. Блоки помощники 25
2.2.13. Измеритель 25
2.2.14. Расчет контрольной суммы 26
2.2.15. Повторитель 27
2.2.16. Методы фаззинга Sulley 29
2.2.17. Скелет HTTP протокола 30
2.2.18. Процесс Sulley 32
2.2.19. Мониторинг фаззиногово трафика 33
2.3. Сравнение фаззеров Sulley и SPIKE 37
2.4. Сравние фаззеров Sulley и Scapy 37
2.5. Фаззинг ActiveX/COM 38
2.5.1. ActiveX 38
2.5.2. Использование COMRaider 40
3. Разработка программного обеспечения для проведения фаззинга OPC серверов 46
3.1. Краткие теоретические сведения по технологии OPC 46
3.1.1. Объектная модель OPC DA. Интерфейсы 48
3.1.2. Принципы функционирования OPC DA 50
3.1.3. Механизмы чтения и записи данных процесса 53
3.1.4. Адресное пространство OPC DA сервера 53
3.1.5. Способы чтения данных из OPC DA сервер 54
3.2. Фаззинг OPC серверов с помощью методов фаззинга COM объектов...56
3.2.1. Описание действий. Практическое обоснование неприменимости
методов фаззинга COM объектов к фаззингу OPC серверов 57
3.2.2. Теоретическое обоснование неприменимости методов фаззинга COM
объектов к фаззингу OPC серверов 59
3.3. Разработка инструмента фаззинга работающий через функции opcproxy.dll 63
3.3.1. Результаты 63
3.3.2. Недостатки 63
Заключение 65
Список литературы 66
Приложение
1. Обзор 6
1.1. Определение фаззинга 6
1.2. Фазы фаззинга 6
1.3. Ограничения и исключения при фаззинге 7
1.4. Методы и типы фаззинга 9
2. Структура фаззеров 12
2.1. Фаззеры коммуникационных протоколов 12
2.2. Фаззер Sulley 13
2.2.1. Использование Sulley 14
2.2.2. Протокол Sulley 14
2.2.3. Строки 14
2.2.4. Разделители 15
2.2.5. Постоянные и случайные 16
2.2.6. Фаззинговая библиотека 18
2.2.7. Бинарные данные 18
2.2.8. Целые числа 18
2.2.9. Блоки и группы 20
2.2.10. Кодировщики 23
2.2.11. Зависимости 24
2.2.12. Блоки помощники 25
2.2.13. Измеритель 25
2.2.14. Расчет контрольной суммы 26
2.2.15. Повторитель 27
2.2.16. Методы фаззинга Sulley 29
2.2.17. Скелет HTTP протокола 30
2.2.18. Процесс Sulley 32
2.2.19. Мониторинг фаззиногово трафика 33
2.3. Сравнение фаззеров Sulley и SPIKE 37
2.4. Сравние фаззеров Sulley и Scapy 37
2.5. Фаззинг ActiveX/COM 38
2.5.1. ActiveX 38
2.5.2. Использование COMRaider 40
3. Разработка программного обеспечения для проведения фаззинга OPC серверов 46
3.1. Краткие теоретические сведения по технологии OPC 46
3.1.1. Объектная модель OPC DA. Интерфейсы 48
3.1.2. Принципы функционирования OPC DA 50
3.1.3. Механизмы чтения и записи данных процесса 53
3.1.4. Адресное пространство OPC DA сервера 53
3.1.5. Способы чтения данных из OPC DA сервер 54
3.2. Фаззинг OPC серверов с помощью методов фаззинга COM объектов...56
3.2.1. Описание действий. Практическое обоснование неприменимости
методов фаззинга COM объектов к фаззингу OPC серверов 57
3.2.2. Теоретическое обоснование неприменимости методов фаззинга COM
объектов к фаззингу OPC серверов 59
3.3. Разработка инструмента фаззинга работающий через функции opcproxy.dll 63
3.3.1. Результаты 63
3.3.2. Недостатки 63
Заключение 65
Список литературы 66
Приложение
В современном мире компьютерные и программные технологии не просто стремительно входят в нашу жизнь, но уже используются практически во всех ее сферах. К сожалению, это не только облегчает рутинные процессы, автоматизирует промышленность и предоставляет людям большие возможности, но и как любой инструмент несет опасность вероятных сбоев в своей работе.
Программные технологии еще далеки до совершенства, и можно с уверенностью сказать, что по мнению многих специалистов в коде более чем 90% программного обеспечения содержаться ошибки (а в некоторых программных продуктах даже специально заложены недокументированные возможности, так называемые бэкдоры). Эти ошибки и бэкдоры приводят к различным уязвимостям и некорректной работе, в результате соответствующие программы уже не могут считаться безопасными для использования. Для повышения безопасности и корректной работы программного обеспечения были созданы специальные методы и технологии. Одной из таких технологий является фаззинг.
Фаззинг - это процесс отсылки намеренно некорректных данных в исследуемый объект с целью искусственного создания ситуации сбоя или ошибки. Устоявшихся правил проведения фаззинга нет. Это такая технология, при которой успех его проведения измеряется исключительно результатами теста.
Для любого отдельно взятого тестируемого программного продукта количество вводимых данных может быть бесконечным. Фаззинг - это процесс предсказания, задачей которого является определить: какие типы скрытых программных ошибок могут оказаться в продукте и какие именно значения вводимых данных могут вызвать эти ошибки. Фаззинг - это в большей степени искусство, чем наука или технология.
Актуальность фаззинга сейчас велика, как никогда. Если раньше его использовали лишь специалисты по информационной безопасности и хакеры, то сейчас большое количество известных IT-компаний, таких как Intel, Google и Microsoft, помимо других средств используют и фаззинг для тестирования своих приложений.
Еще на слуху действия нашумевшего вируса Stuxnet. По одной из версий вирус представляет собой специализированную разработку спецслужб Израиля и США, направленную против ядерного проекта Ирана. Вирус фактически атаковал систему автоматизированного управления технологическими процессами. Безопасность и корректность таких систем является важной задачей потому, что на основе таких систем работают химические заводы, промышленные фабрики, гидроэлектростанции и атомные станции. Любое несанкционированное действие со стороны подобных программ может не только разрушить многомиллионное оборудование, но и унести тысячи и даже миллионы человеческих жизней.
ОРС (OLE for Process Control) является наиболее распространенным протоколом, используемым в системах автоматизированного управления технологическими процессами (АСУ ТП). На момент написания данной работы не удалось найти результатов по фаззингу ОРС протокола или программ использующих данный протокол.
Целью данной работы является проведение фаззинга программного обеспечения, функционирующего на основе ОРС протокола.
Для достижения поставленной цели необходимо выполнить следующие задачи:
• Обзор и систематизация современных методов фаззинга.
• Обзор и изучение серверов с OPC протоколом.
• Разработка программного инструмента для фаззинга серверов, использующих ОРС протокол.
• Тестирование и выявление случаев некорректной работы серверов, использующих ОРС протокол, с помощью разработанного инструмента.
Программные технологии еще далеки до совершенства, и можно с уверенностью сказать, что по мнению многих специалистов в коде более чем 90% программного обеспечения содержаться ошибки (а в некоторых программных продуктах даже специально заложены недокументированные возможности, так называемые бэкдоры). Эти ошибки и бэкдоры приводят к различным уязвимостям и некорректной работе, в результате соответствующие программы уже не могут считаться безопасными для использования. Для повышения безопасности и корректной работы программного обеспечения были созданы специальные методы и технологии. Одной из таких технологий является фаззинг.
Фаззинг - это процесс отсылки намеренно некорректных данных в исследуемый объект с целью искусственного создания ситуации сбоя или ошибки. Устоявшихся правил проведения фаззинга нет. Это такая технология, при которой успех его проведения измеряется исключительно результатами теста.
Для любого отдельно взятого тестируемого программного продукта количество вводимых данных может быть бесконечным. Фаззинг - это процесс предсказания, задачей которого является определить: какие типы скрытых программных ошибок могут оказаться в продукте и какие именно значения вводимых данных могут вызвать эти ошибки. Фаззинг - это в большей степени искусство, чем наука или технология.
Актуальность фаззинга сейчас велика, как никогда. Если раньше его использовали лишь специалисты по информационной безопасности и хакеры, то сейчас большое количество известных IT-компаний, таких как Intel, Google и Microsoft, помимо других средств используют и фаззинг для тестирования своих приложений.
Еще на слуху действия нашумевшего вируса Stuxnet. По одной из версий вирус представляет собой специализированную разработку спецслужб Израиля и США, направленную против ядерного проекта Ирана. Вирус фактически атаковал систему автоматизированного управления технологическими процессами. Безопасность и корректность таких систем является важной задачей потому, что на основе таких систем работают химические заводы, промышленные фабрики, гидроэлектростанции и атомные станции. Любое несанкционированное действие со стороны подобных программ может не только разрушить многомиллионное оборудование, но и унести тысячи и даже миллионы человеческих жизней.
ОРС (OLE for Process Control) является наиболее распространенным протоколом, используемым в системах автоматизированного управления технологическими процессами (АСУ ТП). На момент написания данной работы не удалось найти результатов по фаззингу ОРС протокола или программ использующих данный протокол.
Целью данной работы является проведение фаззинга программного обеспечения, функционирующего на основе ОРС протокола.
Для достижения поставленной цели необходимо выполнить следующие задачи:
• Обзор и систематизация современных методов фаззинга.
• Обзор и изучение серверов с OPC протоколом.
• Разработка программного инструмента для фаззинга серверов, использующих ОРС протокол.
• Тестирование и выявление случаев некорректной работы серверов, использующих ОРС протокол, с помощью разработанного инструмента.
В рамках выполнения данной работы был проведен обзор современных методов фаззинга, изучены и описаны основные идеи, способы генерации данных.
Изучены и использованы на практике современные средства фаззинга (фаззеры) разных типов. Составлен подробный обзор фаззеров с описанием функций и инструментов некоторых из них.
Приведены примеры успешной работы фаззинговых приложений. Обзор современных средств фаззинга показал, что фаззинг является хорошим средством для поиска уязвимостей и случаев некорректной работы программного обеспечения, с помощью которого можно сильно сократить временные затраты на проверку приложений.
Была исследована применимость современных средств фаззинга к приложениям, работающих по протоколу ОРС DA. В результате этих исследований были сделан вывод о том, что современные средства фаззинга не подходят для поиска уязвимостей в реализациях программного обеспечения, использующего стандарт ОРС, из-за применения в них библиотеки opcproxy.dll.
Был разработан программный инструмент, в котором реализована возможность отсылки некорректных данных с помощью методов библиотеки opcproxy.dll. С помощью этого инструмента была выявлена некорректная работа OPC сервера ModbusOPCServer. Данный сервер перестает работать при обработке данных в случаях наличия хотя бы одного параметра, имеющего тип double, для передачи которого задействуются строка, превышающая 21 символ. На основании этого можно сделать вывод о том, что в любом приложении, работающем по протоколу ОРС (несмотря на корректную реализацию протокола) могут содержаться ошибки, которые могут проявится при обработке данных.
Таким образом, поставленные задачи выполнены, цель достигнута.
Изучены и использованы на практике современные средства фаззинга (фаззеры) разных типов. Составлен подробный обзор фаззеров с описанием функций и инструментов некоторых из них.
Приведены примеры успешной работы фаззинговых приложений. Обзор современных средств фаззинга показал, что фаззинг является хорошим средством для поиска уязвимостей и случаев некорректной работы программного обеспечения, с помощью которого можно сильно сократить временные затраты на проверку приложений.
Была исследована применимость современных средств фаззинга к приложениям, работающих по протоколу ОРС DA. В результате этих исследований были сделан вывод о том, что современные средства фаззинга не подходят для поиска уязвимостей в реализациях программного обеспечения, использующего стандарт ОРС, из-за применения в них библиотеки opcproxy.dll.
Был разработан программный инструмент, в котором реализована возможность отсылки некорректных данных с помощью методов библиотеки opcproxy.dll. С помощью этого инструмента была выявлена некорректная работа OPC сервера ModbusOPCServer. Данный сервер перестает работать при обработке данных в случаях наличия хотя бы одного параметра, имеющего тип double, для передачи которого задействуются строка, превышающая 21 символ. На основании этого можно сделать вывод о том, что в любом приложении, работающем по протоколу ОРС (несмотря на корректную реализацию протокола) могут содержаться ошибки, которые могут проявится при обработке данных.
Таким образом, поставленные задачи выполнены, цель достигнута.



