Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
00xx11 ..ккллаассссииффииккаацциияя 
ммееттооддоовв
ККллаассссииффииккаацциияя ммееттооддоовв 
• Белый ящик 
• Черный/серый ящик 
• Динамические 
• Статические 
• Ручные 
• П...
ККллаассссииффииккаацциияя ммееттооддоовв 
• Встраивание бэкдора
00xx22 ..ббееллыыйй яящщиикк
ЭЭккссппееррттнныыйй ааннааллиизз ииссххооддннооггоо 
ккооддаа 
char str[10]; 
scanf(“%s”, str);
РРееввееррсс--ииннжжииннииррииннгг 
Анализ дизассемблированого 
кода
ААввттооммааттииччеессккиийй ааннааллиизз 
•Предупреждения компилятора 
•lint 
•Cppcheck 
•CodeSecure 
•…
00xx33 ..ччееррнныыйй яящщиикк
ППррииммеенниимм кк 
• ПО с закрытым исходным кодом 
• Сетевым приложениям 
• Драйверам 
• Интерфейсам (RPC, ActiveX) 
• …
ССттррааттееггиияя 
•Давать всякие штуки на вход 
•Смотреть, что получается на выходе 
•Смотреть, что происходит с приложе...
ААннааллиизз ххоорроошшоо ииззввеессттнныыхх 
ссллааббыыхх ммеесстт 
• SQL Injection: sqlmap, HackBar, … 
• XSS: XSS Me, …...
00xx44 ..ффааззззииннгг
ФФааззззииннгг 
«Взлохмачивание» входных данных 
Подача на вход испорченных, случайных или 
мутированных по определенным п...
ФФааззззииннгг
ЭЭттааппыы ффааззззииннггаа 
• Анализ приложения, разработка или выбор 
фаззера 
• Генерация данных 
•Обработка результато...
ХХоорроошшиийй ффааззззииннгг 
•Обеспечивает покрытие кода приложения 
• Регистрирует все аномалии в поведении 
программы ...
ППооккррыыттииее ккооддаа 
•Покрытие операторов 
•Покрытие условий 
•Покрытие путей
РРееггииссттрраацциияя ппооввееддеенниияя 
• Выходные данные 
•Падения 
•Исключения 
• Содержание памяти
ГГееннеерраацциияя ддаанннныыхх 
•По шаблонам 
•На основе имеющихся данных
РРееггииссттрраацциияя ппооввееддеенниияя 
ппррооггррааммммыы 
• Выходные данные 
•Отладчик 
•Инструментирование кода
00xx55 ..ггееннеерраацциияя ппоо 
ооббррааззццуу
ГГееннеерраацциияя ппоо ооббррааззццуу 
•Один или несколько примеров входных данных 
•Мутатор, который делает новые файлы ...
ММееттооддыы 
• Переворачивание битов 
• Переворачивание байтов 
• Арифметические операции 
• Подстановка волшебных числа,...
Сплайсинг
ЭЭффффееккттииввннооссттьь 
Фаззер: afl, цель: jpeg 
• Переворачивание битов: 70-80 путей 
• Переворачивание байтов: 30 пу...
rraaddaammssaa 
$ echo "1 + (2 + (3 + 4))" | radamsa --seed 12 -n 4 
1 + (2 + (2 + (3 + 4?) 
1 + (2 + (3 +?4)) 
1844674407...
00xx66 ..ггееннеерраацциияя ппоо 
шшааббллооннаамм
ГГееннеерраацциияя ппоо шшааббллооннаамм 
•Ограниченное описание грамматики и семантики 
входных данных 
• Генерация входн...
PPeeaacchh 
•XML-описание данных и связей между ними 
• Генерация входных данных на основе описания
PPeeaacchh 
<DataModel name="HttpRequest"> 
<Block name="RequestLine"> 
<String name="Method"/> 
<String value=" " type="c...
00xx77 ..ааннааллиизз ппооввееддеенниияя
ВВыыххоодднныыее ддаанннныыее 
• 500 Internal server error 
• Данные таблицы USERS 
• …
ООттллааддччиикк 
• windbg 
• Исключения 
• Crash dump 
• !exploitable 
• …
ИИннссттррууммееннттииррооввааннииее ммаашшииннннооггоо 
ккооддаа 
• Встраивание своих инструкций в программу 
• Анализ пу...
00xx88 ..ииннссттррууммееннттииррооввааннииее
УУттииллииттыы 
• PIN 
• SAGE 
• american fuzzy lop 
• Valgrind
ААннааллиизз ппууттии ввыыппооллннеенниияя 
•Позволяет оценить эффективность фаззинга
ССооххррааннееннииее ооббррааззоовв ппааммяяттии 
•Позволяет обнаружить перезапись стека 
•Позволяет обнаружить перезапись...
IInn--mmeemmoorryy ffuuzzzziinngg 
•Юнит-тесты по живому 
•Позволяет сильно удешевить фаззинг
00xx99 ..ппррооббллееммыы
РРааззррааббооттччииккии 
•Используют юнит-тесты 
•Используют фаззеры
ККооннккууррееннттыы 
• Everybody fuzz
00xx99 ..рреешшеенниияя
ФФааззззииттьь ссттааррыыйй ккоодд 
•OLE 
• COM 
• Части ядра 
• Старые форматы 
• Старые библиотеки
ФФааззззииттьь ррееддккиийй ккоодд 
• Редкие объекты word 
• Редкие функции 
• Редкие программы
ФФааззззииттьь ппоо--ууммннооммуу 
• Анализ путей выполнения 
• Анализ связи входных данных и параметров 
функций 
• Анали...
AAvvaallaanncchhee 
•И. К. Исаев, Д. В. Сидоров, ИСП РАН 
• Анализ и определение граничных значений во 
входных файлах
00xxAA ..ччттоо ддааллььшшее
ЛЛееккццииии 
•Инструментарий для фаззинга 
•Инструментарий программиста вообще 
•Другие темы практической ИБ 
•Приглашенн...
ППррааккттииккаа 
• Фаззинг тренировочных файлов с помощью radamsa 
• Эксплуатация тренировочных файлов 
• Повторение изве...
Методы поиска уязвимостей
Upcoming SlideShare
Loading in …5
×

Методы поиска уязвимостей

765 views

Published on

О том, как ищут уязвимости в программах и проверяют их на возможность эксплуатации. А еще об инструментарии для фаззинга, анализе поведения программ, проверке исходного кода на опасные ошибки.

Published in: Technology
  • Be the first to comment

Методы поиска уязвимостей

  1. 1. 00xx11 ..ккллаассссииффииккаацциияя ммееттооддоовв
  2. 2. ККллаассссииффииккаацциияя ммееттооддоовв • Белый ящик • Черный/серый ящик • Динамические • Статические • Ручные • Полуавтоматические
  3. 3. ККллаассссииффииккаацциияя ммееттооддоовв • Встраивание бэкдора
  4. 4. 00xx22 ..ббееллыыйй яящщиикк
  5. 5. ЭЭккссппееррттнныыйй ааннааллиизз ииссххооддннооггоо ккооддаа char str[10]; scanf(“%s”, str);
  6. 6. РРееввееррсс--ииннжжииннииррииннгг Анализ дизассемблированого кода
  7. 7. ААввттооммааттииччеессккиийй ааннааллиизз •Предупреждения компилятора •lint •Cppcheck •CodeSecure •…
  8. 8. 00xx33 ..ччееррнныыйй яящщиикк
  9. 9. ППррииммеенниимм кк • ПО с закрытым исходным кодом • Сетевым приложениям • Драйверам • Интерфейсам (RPC, ActiveX) • …
  10. 10. ССттррааттееггиияя •Давать всякие штуки на вход •Смотреть, что получается на выходе •Смотреть, что происходит с приложением в процессе •Похоже на тестирование
  11. 11. ААннааллиизз ххоорроошшоо ииззввеессттнныыхх ссллааббыыхх ммеесстт • SQL Injection: sqlmap, HackBar, … • XSS: XSS Me, … • …
  12. 12. 00xx44 ..ффааззззииннгг
  13. 13. ФФааззззииннгг «Взлохмачивание» входных данных Подача на вход испорченных, случайных или мутированных по определенным правилам данных
  14. 14. ФФааззззииннгг
  15. 15. ЭЭттааппыы ффааззззииннггаа • Анализ приложения, разработка или выбор фаззера • Генерация данных •Обработка результатов
  16. 16. ХХоорроошшиийй ффааззззииннгг •Обеспечивает покрытие кода приложения • Регистрирует все аномалии в поведении программы •Дешевый
  17. 17. ППооккррыыттииее ккооддаа •Покрытие операторов •Покрытие условий •Покрытие путей
  18. 18. РРееггииссттрраацциияя ппооввееддеенниияя • Выходные данные •Падения •Исключения • Содержание памяти
  19. 19. ГГееннеерраацциияя ддаанннныыхх •По шаблонам •На основе имеющихся данных
  20. 20. РРееггииссттрраацциияя ппооввееддеенниияя ппррооггррааммммыы • Выходные данные •Отладчик •Инструментирование кода
  21. 21. 00xx55 ..ггееннеерраацциияя ппоо ооббррааззццуу
  22. 22. ГГееннеерраацциияя ппоо ооббррааззццуу •Один или несколько примеров входных данных •Мутатор, который делает новые файлы на базе примеров с помощью рандомизации, смешивания и т.п.
  23. 23. ММееттооддыы • Переворачивание битов • Переворачивание байтов • Арифметические операции • Подстановка волшебных числа, например, 0,1,- 1,MAXINT, MININT • Перемешивание, дублирование, вырезание, … • Сплайсинг двух и более файлов
  24. 24. Сплайсинг
  25. 25. ЭЭффффееккттииввннооссттьь Фаззер: afl, цель: jpeg • Переворачивание битов: 70-80 путей • Переворачивание байтов: 30 путей • Арифметические операции: 5 путей • Подстановка волшебных чисел: 10 путей • Перемешивание, …: 100 путей • Сплайсинг двух и более файлов: 40 путей
  26. 26. rraaddaammssaa $ 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))
  27. 27. 00xx66 ..ггееннеерраацциияя ппоо шшааббллооннаамм
  28. 28. ГГееннеерраацциияя ппоо шшааббллооннаамм •Ограниченное описание грамматики и семантики входных данных • Генерация входных данных на основе описания • Сложно, но более эффективно •Необходима для форматов с контрольными суммами
  29. 29. PPeeaacchh •XML-описание данных и связей между ними • Генерация входных данных на основе описания
  30. 30. PPeeaacchh <DataModel name="HttpRequest"> <Block name="RequestLine"> <String name="Method"/> <String value=" " type="char"/> <String name="RequestUri"/> <String value=" "/> <String name="HttpVersion"/> <String value="rn"/> </Block> ... </DataModel>
  31. 31. 00xx77 ..ааннааллиизз ппооввееддеенниияя
  32. 32. ВВыыххоодднныыее ддаанннныыее • 500 Internal server error • Данные таблицы USERS • …
  33. 33. ООттллааддччиикк • windbg • Исключения • Crash dump • !exploitable • …
  34. 34. ИИннссттррууммееннттииррооввааннииее ммаашшииннннооггоо ккооддаа • Встраивание своих инструкций в программу • Анализ пути выполнения • Образы памяти (стека) • In-memory fuzzing • …
  35. 35. 00xx88 ..ииннссттррууммееннттииррооввааннииее
  36. 36. УУттииллииттыы • PIN • SAGE • american fuzzy lop • Valgrind
  37. 37. ААннааллиизз ппууттии ввыыппооллннеенниияя •Позволяет оценить эффективность фаззинга
  38. 38. ССооххррааннееннииее ооббррааззоовв ппааммяяттии •Позволяет обнаружить перезапись стека •Позволяет обнаружить перезапись исполнимых кусков памяти
  39. 39. IInn--mmeemmoorryy ffuuzzzziinngg •Юнит-тесты по живому •Позволяет сильно удешевить фаззинг
  40. 40. 00xx99 ..ппррооббллееммыы
  41. 41. РРааззррааббооттччииккии •Используют юнит-тесты •Используют фаззеры
  42. 42. ККооннккууррееннттыы • Everybody fuzz
  43. 43. 00xx99 ..рреешшеенниияя
  44. 44. ФФааззззииттьь ссттааррыыйй ккоодд •OLE • COM • Части ядра • Старые форматы • Старые библиотеки
  45. 45. ФФааззззииттьь ррееддккиийй ккоодд • Редкие объекты word • Редкие функции • Редкие программы
  46. 46. ФФааззззииттьь ппоо--ууммннооммуу • Анализ путей выполнения • Анализ связи входных данных и параметров функций • Анализ предикатов пути
  47. 47. AAvvaallaanncchhee •И. К. Исаев, Д. В. Сидоров, ИСП РАН • Анализ и определение граничных значений во входных файлах
  48. 48. 00xxAA ..ччттоо ддааллььшшее
  49. 49. ЛЛееккццииии •Инструментарий для фаззинга •Инструментарий программиста вообще •Другие темы практической ИБ •Приглашенные гости
  50. 50. ППррааккттииккаа • Фаззинг тренировочных файлов с помощью radamsa • Эксплуатация тренировочных файлов • Повторение известной уязвимости с помощью Peach • Анализ ранее неизвестной ошибки на возможность эксплуатации (у нас одна есть!) • Фаззинг серьезных приложений (Word, Reader) с помощью Peach • Анализ найденных ошибок

×