Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Практика эксплуатации уязвимостей в прикладных...
-
Upload
solertia -
Category
Technology
-
view
159 -
download
3
Transcript of Практика эксплуатации уязвимостей в прикладных...
![Page 1: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/1.jpg)
![Page 2: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/2.jpg)
КТО МЫ?
• ФГАНУ НИИ «Спецвузавтоматика»
Научно-исследовательский институт, работающий в сфере информационной безопасности
• «Солерция» — наш студенческий проект, в котором мы передаем свои знания и опыт, пытаясь заинтересовать будущих специалистов близкими к нам тематиками
• Наша цель: помощь студентам в профориентации в интересных IT-специальностях
2
![Page 3: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/3.jpg)
ОРГ. ВОПРОСЫЦель – популяризация практической информационной
безопасности
Что планируется:• Лекции и доклады приглашенных специалистов ИБ и
участников• Семинарские практические занятия и домашняя
работа• Поощрения для участников• Разработка и оформление индивидуальных проектов
3
![Page 4: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/4.jpg)
ИНДИВИДУАЛЬНЫЕ ПРОЕКТЫ
•Будем кодить фаззер
•Поищем 0day экплойты
•Съездим на PHDays или другую хорошую конференцию
•Опубликуем результаты
•Результаты можно будет использовать для дипломных проектов
•Особо отличившихся возьмем к себе в команду
4
![Page 5: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/5.jpg)
x00.ВВЕДЕНИЕ5
![Page 6: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/6.jpg)
УК РФ
•Статья 272. Неправомерный доступ к компьютерной информации
Наказывается лишением свободы на срок до пяти лет
•Статья 273. Создание, использование и распространение вредоносных программ
Наказывается лишением свободы на срок от трех до семи лет
6
![Page 7: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/7.jpg)
HATS•White Hats – специалисты в информационной
безопасности, осуществляющие санкционированные тестирования на проникновение защищенных систем•Black Hats – хакеры, использующие уязвимости
программ в незаконных целях•Gra(e)y Hats – независимые специалисты, ищущие
дыры в информационной безопасности и публикующие информацию о найденных уязвимостях
7
![Page 8: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/8.jpg)
ТЕРМИНОЛОГИЯ• Зараженный файл – файл обычного формата, внутри
которого лежит сплойт• Эксплойт – вредоносный код, активирующий уязвимость в
программе• Уязвимость – ошибка в программе, приводящая к
некорректной обработке входных данных• SHELL – оболочка для загрузки основной функциональности
• Мы будем рассматривать только локальные, файловые эксплойты, используемые злоумышленниками для атак на персональные компьютеры
8
![Page 9: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/9.jpg)
x01. ПРИЧИНЫ ВОЗНИКНОВЕНИЯ
УЯЗВИМОСТЕЙ9
![Page 10: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/10.jpg)
ОШИБКИ В ПРОГРАММНОМ КОДЕ
•Уязвимости «Переполнение буфера»
•Возникают при неосторожном использовании функций работы с памятью: strcpy, memcpy, strncat….
•Пример
char dst[10];
char src[1000];
strcpy_s (dst, 1000, src);
10
![Page 11: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/11.jpg)
ОШИБКИ В ПРОГРАММНОМ КОДЕ
•Уязвимости «форматной строки»
•Использование функций: fprintf, fscanf,printf с неверными параметрами
•Без должной обработки приводят к возникновению переполнения буфера
•Ошибки целочисленных вычислений возникают при отсутствии проверки на попадание в диапазон значений
11
![Page 12: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/12.jpg)
К ЧЕМУ ПРИВОДЯТ ОШИБКИ• #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 1\n");
• printf("\nx is 0\n\n");
• }12
![Page 13: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/13.jpg)
К ЧЕМУ ПРИВОДЯТ ОШИБКИ
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 “ABCD\x49\x84\x04\x08”
![Page 14: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/14.jpg)
14
![Page 15: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/15.jpg)
К ЧЕМУ ПРИВОДЯТ ОШИБКИ
• Записываем в память шелл-код и другую «полезную нагрузку»
•Переписываем адрес возврата функции и вызываем ошибку в обработке данных
•После нештатного завершения работы функции управление передается на шелл-код, который, используя «полезную нагрузку», выполняет зловредные действия
15
![Page 16: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/16.jpg)
x02. ПРАКТИКА СОВРЕМЕННЫХ
УЯЗВИМОСТЕЙ16
![Page 17: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/17.jpg)
ПРОТИВОСТОЯНИЕ
•Создаются средства контроля памяти
•Обновляются библиотеки стандартных функций
•Для защиты от атак переполнения буфера в Windows реализованы технологии DEP и ASLR
17
![Page 18: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/18.jpg)
DEP
•DEP (Data Execution Prevention) – страницы памяти помечаются как «исполнимые» и «неисполнимые»
•Эксплойт может писать только в неисполнимую часть, следовательно шелл-код, лежащий в области данных, не запустится
18
![Page 19: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/19.jpg)
ROP
• ROP (Return-oriented programming) – техника использования частей уже имеющихся в памяти функций для реализации вредоносного кода
• Устанавливаем адреса нужных функций библиотек, которые уже находятся в памяти при открытии зараженного файла
• Нет необходимости использовать функции целиком, достаточно использовать их части
• Нужные нам куски функций называются “gadget”• Например:
VirtualAlloc 0x7c809ae1 [ kernel32.dll]SetProcessDEPPolic 0x7C8622A4 [ kernel32.dll]
…
19
![Page 20: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/20.jpg)
ROP-chain
20
![Page 21: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/21.jpg)
ROP-chain
• Перейдя на адрес гаджета, мы можем выполнить нужную нам функцию с заданными параметрами• В конце работы гаджет должен передать управление
на адрес следующего гаджета• И так по цепочке (ROP-chain) из гаджетов, взятых в
сторонних библиотеках, реализуется функциональность, необходимая для запуска шелл-кода
• Существуют средства автоматической генерации ROP-chain, например, в пакете Metasploit
21
![Page 22: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/22.jpg)
ASLR
•ASLR (Address Space Layout Randomization) –обеспечивает случайное расположение библиотек и их функций в памяти
• Заранее невозможно зашить адрес нужных гаджетов в памяти
22
![Page 23: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/23.jpg)
ASLR-bypass
• Встречаются приложения, собираемые без поддержки технологии ASLR, их функции можно использовать для обхода DEP. Например, msvcr71.dll в версии 1.6 JRE и другие «частные случаи»
• «Brute force» возможных адресов размещения библиотек
• С помощью переполнения буфера записываются сигнатуры, затем ищется необходимая страница в памяти и вычисляется относительный адрес библиотеки в памяти
• В общем случае задача обхода ASLR не решается!
23
![Page 24: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/24.jpg)
x03. КАК ВЫГЛЯДЯТ ЭКПЛОЙТЫ?24
![Page 25: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/25.jpg)
HTML• Размещаются на сайтах и эксплуатируют уязвимости веб-
браузеров
Реальная атака с использованием CVE-2010-0806
25
![Page 26: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/26.jpg)
HTML
•Декодированные данные
26
![Page 27: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/27.jpg)
•Пересылается по почте для «целевых атак»
•Обычно содержит в себе вредоносный JavaScript или встроенный объект, некорректно обрабатываемый Acrobat Reader
•Основная причина обилия уязвимостей –реализация Adobe собственного менеджера памяти
27
![Page 28: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/28.jpg)
• JavaScript часто используется для записи шелл-кода в память, а не для экплойта
28
![Page 29: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/29.jpg)
SWF
• Используются для атак на веб-браузеры и программы, поддерживающие встраивание SWF-объектов
• Чаще всего базируется на функциях ActionScript, вызывающихобработку сторонних объектов (картинки, видео)
29
![Page 30: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/30.jpg)
SWF
30
![Page 31: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/31.jpg)
x04. КАК СТАТЬ
НАСТОЯЩИМ ХАКЕРОМ? 31
![Page 32: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/32.jpg)
ВРЕДОНОС СВОИМИ РУКАМИ
•Ставим Metasploit
•Создаем зараженный файл, например, adobe_cool_type (CVE-2010-2883)
•Добавляем стандартную боевую нагрузку (payload), например, удаленный доступ к машине
•Пересылаем другу под видом признания в любви
• Ты – настоящий хакер!
32
![Page 33: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/33.jpg)
НЕ ПОЛУЧИЛОСЬ?
• Есть три основные причины:
1. Ваши друзья не верят в настоящую любовь
2. Антивирусы обнаруживают эксплойты в зараженных файлах
3. Софт обновляется, уязвимости устраняются
33
![Page 34: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/34.jpg)
ЧТО ДЕЛАТЬ?
1. Ваши друзья не верят в настоящую любовь
•Пробовать альтернативные методы «социальной инженерии»•Использовать самозапускающиеся эксплойты•Использовать «тихие» эксплойты, после
запуска которых программа продолжает работать
34
![Page 35: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/35.jpg)
ЧТО ДЕЛАТЬ?
2. Антивирусы обнаруживают эксплойты в зараженных файлах
•Обфускация кода•Встроенные интерпретаторы
•Усложнения потока управления•Динамический анализатор памяти
•…
35
![Page 36: Практика эксплуатации уязвимостей в прикладных программах](https://reader030.fdocument.pub/reader030/viewer/2022020116/55abf7dc1a28ab9c528b46d2/html5/thumbnails/36.jpg)
ЧТО ДЕЛАТЬ?
3. Уязвимости устраняются
•Использовать «связки» эксплойтов для разных версий софта
•Искать собственные 0day!
Чем мы и займемся на следующих занятиях
36