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.
КТО МЫ? 
• ФГАНУ НИИ «Спецвузавтоматика» 
Научно-исследовательский институт, работающий в сфере 
информационной безопаснос...
ОРГ. ВОПРОСЫ 
Цель – популяризация практической информационной 
безопасности 
Что планируется: 
• Лекции и доклады приглаш...
ИНДИВИДУАЛЬНЫЕ ПРОЕКТЫ 
• Будем кодить фаззер 
• Поищем 0day экплойты 
• Съездим на PHDays или другую хорошую 
конференцию...
x00.ВВЕДЕНИЕ 
5
УК РФ 
• Статья 272. Неправомерный доступ к 
компьютерной информации 
Наказывается лишением свободы на срок до пяти 
лет 
...
HATS 
• White Hats – специалисты в информационной 
безопасности, осуществляющие 
санкционированные тестирования на 
проник...
ТЕРМИНОЛОГИЯ 
• Зараженный файл – файл обычного формата, внутри 
которого лежит сплойт 
• Эксплойт – вредоносный код, акти...
x01. ПРИЧИНЫ ВОЗНИКНОВЕНИЯ 
УЯЗВИМОСТЕЙ 
9
ОШИБКИ В ПРОГРАММНОМ КОДЕ 
• Уязвимости «Переполнение буфера» 
• Возникают при неосторожном использовании 
функций работы ...
ОШИБКИ В ПРОГРАММНОМ КОДЕ 
• Уязвимости «форматной строки» 
• Использование функций: fprintf, fscanf, 
printf с неверными ...
К ЧЕМУ ПРИВОДЯТ ОШИБКИ 
• #include<stdio.h> 
• #include<string.h> 
• void func(char *str) 
• { 
• char buffer[4]; 
• int *...
К ЧЕМУ ПРИВОДЯТ ОШИБКИ 
13 
• .... 
• 0x08048431 <main+35>: call 0x80483f4 <func> // obvious call to func 
• 0x08048436 <m...
14
К ЧЕМУ ПРИВОДЯТ ОШИБКИ 
• Записываем в память шелл-код и другую 
«полезную нагрузку» 
• Переписываем адрес возврата функци...
x02. ПРАКТИКА СОВРЕМЕННЫХ 
УЯЗВИМОСТЕЙ 
16
ПРОТИВОСТОЯНИЕ 
• Создаются средства контроля памяти 
• Обновляются библиотеки стандартных функций 
• Для защиты от атак п...
DEP 
• DEP (Data Execution Prevention) – страницы памяти 
помечаются как «исполнимые» и «неисполнимые» 
• Эксплойт может п...
ROP 
• ROP (Return-oriented programming) – техника использования 
частей уже имеющихся в памяти функций для реализации 
вр...
ROP-chain 
20
ROP-chain 
• Перейдя на адрес гаджета, мы можем выполнить 
нужную нам функцию с заданными параметрами 
• В конце работы га...
ASLR 
• ASLR (Address Space Layout Randomization) – 
обеспечивает случайное расположение библиотек 
и их функций в памяти ...
ASLR-bypass 
• Встречаются приложения, собираемые без поддержки 
технологии ASLR, их функции можно использовать для 
обход...
x03. КАК ВЫГЛЯДЯТ ЭКПЛОЙТЫ? 
24
HTML 
• Размещаются на сайтах и эксплуатируют уязвимости веб- 
браузеров 
Реальная атака с использованием CVE-2010-0806 
2...
HTML 
• Декодированные данные 
26
PDF 
• Пересылается по почте для «целевых атак» 
• Обычно содержит в себе вредоносный JavaScript 
или встроенный объект, н...
PDF 
• JavaScript часто используется для записи шелл-кода 
в память, а не для экплойта 
28
SWF 
• Используются для атак на веб-браузеры и программы, 
поддерживающие встраивание SWF-объектов 
• Чаще всего базируетс...
SWF 
30
x04. КАК СТАТЬ 
НАСТОЯЩИМ ХАКЕРОМ? 31
ВРЕДОНОС СВОИМИ РУКАМИ 
• Ставим Metasploit 
• Создаем зараженный файл, например, 
adobe_cool_type (CVE-2010-2883) 
• Доба...
НЕ ПОЛУЧИЛОСЬ? 
• Есть три основные причины: 
1. Ваши друзья не верят в настоящую любовь 
2. Антивирусы обнаруживают экспл...
ЧТО ДЕЛАТЬ? 
1. Ваши друзья не верят в настоящую любовь 
• Пробовать альтернативные методы 
«социальной инженерии» 
• Испо...
ЧТО ДЕЛАТЬ? 
2. Антивирусы обнаруживают эксплойты в 
зараженных файлах 
• Обфускация кода 
• Встроенные интерпретаторы 
• ...
ЧТО ДЕЛАТЬ? 
3. Уязвимости устраняются 
• Использовать «связки» эксплойтов для разных 
версий софта 
• Искать собственные ...
Практика эксплуатации уязвимостей в прикладных программах
Upcoming SlideShare
Loading in …5
×

Практика эксплуатации уязвимостей в прикладных программах

767 views

Published on

Вводная лекция. О том, что такое эксплойты, как уязвимости в программах используются для распространения вирусов, о черных, белых и серых «шляпах» и о других хакерских темах.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Практика эксплуатации уязвимостей в прикладных программах

  1. 1. КТО МЫ? • ФГАНУ НИИ «Спецвузавтоматика» Научно-исследовательский институт, работающий в сфере информационной безопасности • «Солерция» — наш студенческий проект, в котором мы передаем свои знания и опыт, пытаясь заинтересовать будущих специалистов близкими к нам тематиками • Наша цель: помощь студентам в профориентации в интересных IT- специальностях 2
  2. 2. ОРГ. ВОПРОСЫ Цель – популяризация практической информационной безопасности Что планируется: • Лекции и доклады приглашенных специалистов ИБ и участников • Семинарские практические занятия и домашняя работа • Поощрения для участников • Разработка и оформление индивидуальных проектов 3
  3. 3. ИНДИВИДУАЛЬНЫЕ ПРОЕКТЫ • Будем кодить фаззер • Поищем 0day экплойты • Съездим на PHDays или другую хорошую конференцию • Опубликуем результаты • Результаты можно будет использовать для дипломных проектов • Особо отличившихся возьмем к себе в команду 4
  4. 4. x00.ВВЕДЕНИЕ 5
  5. 5. УК РФ • Статья 272. Неправомерный доступ к компьютерной информации Наказывается лишением свободы на срок до пяти лет • Статья 273. Создание, использование и распространение вредоносных программ Наказывается лишением свободы на срок от трех до семи лет 6
  6. 6. HATS • White Hats – специалисты в информационной безопасности, осуществляющие санкционированные тестирования на проникновение защищенных систем • Black Hats – хакеры, использующие уязвимости программ в незаконных целях • Gra(e)y Hats – независимые специалисты, ищущие дыры в информационной безопасности и публикующие информацию о найденных уязвимостях 7
  7. 7. ТЕРМИНОЛОГИЯ • Зараженный файл – файл обычного формата, внутри которого лежит сплойт • Эксплойт – вредоносный код, активирующий уязвимость в программе • Уязвимость – ошибка в программе, приводящая к некорректной обработке входных данных • SHELL – оболочка для загрузки основной функциональности • Мы будем рассматривать только локальные, файловые эксплойты, используемые злоумышленниками для атак на персональные компьютеры 8
  8. 8. x01. ПРИЧИНЫ ВОЗНИКНОВЕНИЯ УЯЗВИМОСТЕЙ 9
  9. 9. ОШИБКИ В ПРОГРАММНОМ КОДЕ • Уязвимости «Переполнение буфера» • Возникают при неосторожном использовании функций работы с памятью: strcpy, memcpy, strncat…. • Пример char dst[10]; char src[1000]; strcpy_s (dst, 1000, src); 10
  10. 10. ОШИБКИ В ПРОГРАММНОМ КОДЕ • Уязвимости «форматной строки» • Использование функций: fprintf, fscanf, printf с неверными параметрами • Без должной обработки приводят к возникновению переполнения буфера • Ошибки целочисленных вычислений возникают при отсутствии проверки на попадание в диапазон значений 11
  11. 11. К ЧЕМУ ПРИВОДЯТ ОШИБКИ • #include<stdio.h> • #include<string.h> • void func(char *str) • { • char buffer[4]; • int *ret; • strcpy(buffer,str); • } • int main(int argc,char **argv) • { • int x; • x=0; • func(argv[1]); • x=1; • printf("nx is 1n"); • printf("nx is 0nn"); • } 12
  12. 12. К ЧЕМУ ПРИВОДЯТ ОШИБКИ 13 • .... • 0x08048431 <main+35>: call 0x80483f4 <func> // obvious call to func • 0x08048436 <main+40>: movl $0x1,-0x8(%ebp) // x = 1; • 0x0804843d <main+47>: movl $0x8048520,(%esp) // pushing "x is 1" to the stack • 0x08048444 <main+54>: call 0x804832c <puts@plt> // 1st printf call • 0x08048449 <main+59>: movl $0x8048528,(%esp) // pushing "x is 0" to the stack • 0x08048450 <main+66>: call 0x804832c <puts@plt> // 2nd printf call • 0x08048455 <main+71>: add $0x24,%esp • 0x08048458 <main+74>: pop %ecx • 0x08048459 <main+75>: pop %ebp • 0x0804845a <main+76>: lea -0x4(%ecx),%esp • 0x0804845d <main+79>: ret • .... > prog.exe “ABCDx49x84x04x08”
  13. 13. 14
  14. 14. К ЧЕМУ ПРИВОДЯТ ОШИБКИ • Записываем в память шелл-код и другую «полезную нагрузку» • Переписываем адрес возврата функции и вызываем ошибку в обработке данных • После нештатного завершения работы функции управление передается на шелл-код, который, используя «полезную нагрузку», выполняет зловредные действия 15
  15. 15. x02. ПРАКТИКА СОВРЕМЕННЫХ УЯЗВИМОСТЕЙ 16
  16. 16. ПРОТИВОСТОЯНИЕ • Создаются средства контроля памяти • Обновляются библиотеки стандартных функций • Для защиты от атак переполнения буфера в Windows реализованы технологии DEP и ASLR 17
  17. 17. DEP • DEP (Data Execution Prevention) – страницы памяти помечаются как «исполнимые» и «неисполнимые» • Эксплойт может писать только в неисполнимую часть, следовательно шелл-код, лежащий в области данных, не запустится 18
  18. 18. ROP • ROP (Return-oriented programming) – техника использования частей уже имеющихся в памяти функций для реализации вредоносного кода • Устанавливаем адреса нужных функций библиотек, которые уже находятся в памяти при открытии зараженного файла • Нет необходимости использовать функции целиком, достаточно использовать их части • Нужные нам куски функций называются “gadget” • Например: VirtualAlloc 0x7c809ae1 [ kernel32.dll] SetProcessDEPPolic 0x7C8622A4 [ kernel32.dll] … 19
  19. 19. ROP-chain 20
  20. 20. ROP-chain • Перейдя на адрес гаджета, мы можем выполнить нужную нам функцию с заданными параметрами • В конце работы гаджет должен передать управление на адрес следующего гаджета • И так по цепочке (ROP-chain) из гаджетов, взятых в сторонних библиотеках, реализуется функциональность, необходимая для запуска шелл- кода • Существуют средства автоматической генерации ROP-chain, например, в пакете Metasploit 21
  21. 21. ASLR • ASLR (Address Space Layout Randomization) – обеспечивает случайное расположение библиотек и их функций в памяти • Заранее невозможно зашить адрес нужных гаджетов в памяти 22
  22. 22. ASLR-bypass • Встречаются приложения, собираемые без поддержки технологии ASLR, их функции можно использовать для обхода DEP. Например, msvcr71.dll в версии 1.6 JRE и другие «частные случаи» • «Brute force» возможных адресов размещения библиотек • С помощью переполнения буфера записываются сигнатуры, затем ищется необходимая страница в памяти и вычисляется относительный адрес библиотеки в памяти • В общем случае задача обхода ASLR не решается! 23
  23. 23. x03. КАК ВЫГЛЯДЯТ ЭКПЛОЙТЫ? 24
  24. 24. HTML • Размещаются на сайтах и эксплуатируют уязвимости веб- браузеров Реальная атака с использованием CVE-2010-0806 25
  25. 25. HTML • Декодированные данные 26
  26. 26. PDF • Пересылается по почте для «целевых атак» • Обычно содержит в себе вредоносный JavaScript или встроенный объект, некорректно обрабатываемый Acrobat Reader • Основная причина обилия уязвимостей – реализация Adobe собственного менеджера памяти 27
  27. 27. PDF • JavaScript часто используется для записи шелл-кода в память, а не для экплойта 28
  28. 28. SWF • Используются для атак на веб-браузеры и программы, поддерживающие встраивание SWF-объектов • Чаще всего базируется на функциях ActionScript, вызывающих обработку сторонних объектов (картинки, видео) 29
  29. 29. SWF 30
  30. 30. x04. КАК СТАТЬ НАСТОЯЩИМ ХАКЕРОМ? 31
  31. 31. ВРЕДОНОС СВОИМИ РУКАМИ • Ставим Metasploit • Создаем зараженный файл, например, adobe_cool_type (CVE-2010-2883) • Добавляем стандартную боевую нагрузку (payload), например, удаленный доступ к машине • Пересылаем другу под видом признания в любви • Ты – настоящий хакер! 32
  32. 32. НЕ ПОЛУЧИЛОСЬ? • Есть три основные причины: 1. Ваши друзья не верят в настоящую любовь 2. Антивирусы обнаруживают эксплойты в зараженных файлах 3. Софт обновляется, уязвимости устраняются 33
  33. 33. ЧТО ДЕЛАТЬ? 1. Ваши друзья не верят в настоящую любовь • Пробовать альтернативные методы «социальной инженерии» • Использовать самозапускающиеся эксплойты • Использовать «тихие» эксплойты, после запуска которых программа продолжает работать 34
  34. 34. ЧТО ДЕЛАТЬ? 2. Антивирусы обнаруживают эксплойты в зараженных файлах • Обфускация кода • Встроенные интерпретаторы • Усложнения потока управления • Динамический анализатор памяти • … 35
  35. 35. ЧТО ДЕЛАТЬ? 3. Уязвимости устраняются • Использовать «связки» эксплойтов для разных версий софта • Искать собственные 0day! Чем мы и займемся на следующих занятиях 36

×