Методы поиска уязвимостей
-
Upload
solertia -
Category
Technology
-
view
150 -
download
6
description
Transcript of Методы поиска уязвимостей
![Page 1: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/1.jpg)
![Page 2: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/2.jpg)
0x0x11 .классификация .классификация методовметодов
![Page 3: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/3.jpg)
Классификация методовКлассификация методов
• Белый ящик• Черный/серый ящик
• Динамические• Статические
• Ручные• Полуавтоматические
![Page 4: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/4.jpg)
Классификация методовКлассификация методов
•Встраивание бэкдора
![Page 5: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/5.jpg)
0x0x22 .белый ящик.белый ящик
![Page 6: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/6.jpg)
Экспертный анализ исходного Экспертный анализ исходного кодакода
char str[10];scanf(“%s”, str);
![Page 7: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/7.jpg)
Реверс-инжинирингРеверс-инжиниринг
Анализ дизассемблированого кода
![Page 8: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/8.jpg)
Автоматический анализАвтоматический анализ
•Предупреждения компилятора•lint•Cppcheck•CodeSecure•…
![Page 9: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/9.jpg)
0x0x33 .черный ящик.черный ящик
![Page 10: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/10.jpg)
Применим кПрименим к
• ПО с закрытым исходным кодом• Сетевым приложениям• Драйверам• Интерфейсам (RPC, ActiveX)• …
![Page 11: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/11.jpg)
СтратегияСтратегия
•Давать всякие штуки на вход•Смотреть, что получается на выходе•Смотреть, что происходит с приложением в
процессе•Похоже на тестирование
![Page 12: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/12.jpg)
Анализ хорошо известных Анализ хорошо известных слабых местслабых мест
• SQL Injection: sqlmap, HackBar, …•XSS: XSS Me, …• …
![Page 13: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/13.jpg)
0x0x44 .фаззинг.фаззинг
![Page 14: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/14.jpg)
ФаззингФаззинг
«Взлохмачивание» входных данныхПодача на вход испорченных, случайных или
мутированных по определенным правилам данных
![Page 15: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/15.jpg)
ФаззингФаззинг
![Page 16: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/16.jpg)
Этапы фаззингаЭтапы фаззинга
•Анализ приложения, разработка или выбор фаззера• Генерация данных•Обработка результатов
![Page 17: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/17.jpg)
Хороший фаззингХороший фаззинг
•Обеспечивает покрытие кода приложения•Регистрирует все аномалии в поведении
программы•Дешевый
![Page 18: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/18.jpg)
Покрытие кодаПокрытие кода
•Покрытие операторов•Покрытие условий•Покрытие путей
![Page 19: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/19.jpg)
Регистрация поведенияРегистрация поведения
•Выходные данные•Падения•Исключения•Содержание памяти
![Page 20: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/20.jpg)
Генерация данныхГенерация данных
•По шаблонам•На основе имеющихся данных
![Page 21: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/21.jpg)
Регистрация поведения Регистрация поведения программыпрограммы
•Выходные данные•Отладчик•Инструментирование кода
![Page 22: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/22.jpg)
0x0x55 .генерация по .генерация по образцуобразцу
![Page 23: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/23.jpg)
Генерация по образцуГенерация по образцу
•Один или несколько примеров входных данных•Мутатор, который делает новые файлы на базе
примеров с помощью рандомизации, смешивания и т.п.
![Page 24: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/24.jpg)
МетодыМетоды
• Переворачивание битов • Переворачивание байтов• Арифметические операции• Подстановка волшебных числа, например, 0,1,-
1,MAXINT, MININT• Перемешивание, дублирование, вырезание, …• Сплайсинг двух и более файлов
![Page 25: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/25.jpg)
Сплайсинг
![Page 26: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/26.jpg)
ЭффективностьЭффективность
Фаззер: afl, цель: jpeg• Переворачивание битов: 70-80 путей• Переворачивание байтов: 30 путей• Арифметические операции: 5 путей• Подстановка волшебных чисел: 10 путей• Перемешивание, …: 100 путей• Сплайсинг двух и более файлов: 40 путей
![Page 27: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/27.jpg)
radamsaradamsa
$ echo "1 + (2 + (3 + 4))" | radamsa --seed 12 -n 4
1 + (2 + (2 + (3 + 4?)
1 + (2 + (3 +?4))
18446744073709551615 + 4)))
1 + (2 + (3 + 170141183460469231731687303715884105727))
![Page 28: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/28.jpg)
0x0x66 .генерация по .генерация по шаблонамшаблонам
![Page 29: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/29.jpg)
Генерация по шаблонамГенерация по шаблонам
•Ограниченное описание грамматики и семантики входных данных• Генерация входных данных на основе описания•Сложно, но более эффективно•Необходима для форматов с контрольными
суммами
![Page 30: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/30.jpg)
PeachPeach
•XML-описание данных и связей между ними• Генерация входных данных на основе описания
![Page 31: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/31.jpg)
PeachPeach
<DataModel name="HttpRequest">
<Block name="RequestLine">
<String name="Method"/>
<String value=" " type="char"/>
<String name="RequestUri"/>
<String value=" "/>
<String name="HttpVersion"/>
<String value="\r\n"/>
</Block>
...
</DataModel>
![Page 32: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/32.jpg)
0x0x77 .анализ поведения.анализ поведения
![Page 33: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/33.jpg)
Выходные данныеВыходные данные
• 500 Internal server error• Данные таблицы USERS• …
![Page 34: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/34.jpg)
ОтладчикОтладчик
• windbg• Исключения• Crash dump• !exploitable• …
![Page 35: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/35.jpg)
Инструментирование машинного Инструментирование машинного кодакода
• Встраивание своих инструкций в программу• Анализ пути выполнения• Образы памяти (стека)• In-memory fuzzing• …
![Page 36: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/36.jpg)
0x0x8 .инструментирование8 .инструментирование
![Page 37: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/37.jpg)
УтилитыУтилиты
• PIN• SAGE• american fuzzy lop• Valgrind
![Page 38: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/38.jpg)
Анализ пути выполненияАнализ пути выполнения
•Позволяет оценить эффективность фаззинга
![Page 39: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/39.jpg)
Сохранение образов памятиСохранение образов памяти
•Позволяет обнаружить перезапись стека•Позволяет обнаружить перезапись исполнимых
кусков памяти
![Page 40: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/40.jpg)
In-memory fuzzingIn-memory fuzzing
•Юнит-тесты по живому•Позволяет сильно удешевить фаззинг
![Page 41: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/41.jpg)
00x9 x9 .проблемы.проблемы
![Page 42: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/42.jpg)
РазработчикиРазработчики
•Используют юнит-тесты•Используют фаззеры
![Page 43: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/43.jpg)
КонкурентыКонкуренты
• Everybody fuzz
![Page 44: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/44.jpg)
00x9 x9 .решения.решения
![Page 45: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/45.jpg)
Фаззить старый кодФаззить старый код
•OLE•COM•Части ядра•Старые форматы•Старые библиотеки
![Page 46: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/46.jpg)
Фаззить редкий кодФаззить редкий код
• Редкие объекты word• Редкие функции• Редкие программы
![Page 47: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/47.jpg)
Фаззить по-умномуФаззить по-умному
•Анализ путей выполнения•Анализ связи входных данных и параметров
функций•Анализ предикатов пути
![Page 48: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/48.jpg)
AvalancheAvalanche
•И. К. Исаев, Д. В. Сидоров, ИСП РАН•Анализ и определение граничных значений во
входных файлах
![Page 49: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/49.jpg)
00xA xA .что дальше.что дальше
![Page 50: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/50.jpg)
ЛекцииЛекции
•Инструментарий для фаззинга•Инструментарий программиста вообще•Другие темы практической ИБ•Приглашенные гости
![Page 51: Методы поиска уязвимостей](https://reader038.fdocument.pub/reader038/viewer/2022102600/557faedcd8b42a331b8b50b6/html5/thumbnails/51.jpg)
ПрактикаПрактика
• Фаззинг тренировочных файлов с помощью radamsa• Эксплуатация тренировочных файлов• Повторение известной уязвимости с помощью Peach• Анализ ранее неизвестной ошибки на возможность
эксплуатации (у нас одна есть!)• Фаззинг серьезных приложений (Word, Reader) с помощью
Peach• Анализ найденных ошибок