Проблемы обеспечения безопасности приложений Тема 20
Уязвимости приложений Переполнение буфера «Гонки» Использование привилегий серверных компонент Манипуляции с данными на клиентской стороне
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень риска Запуск кода на атакуемом узле Механизм реализации Переполнение буфера - наиболее распространённая атака уровня приложений Высока я
Переполнение стека адрес возврата local[2] local[1] local[0] Стек Буфер f_vulner() { char local[3] ……}
int f_vulner (char arg) { char local[100] char local[100] //обработка //обработка return 0 return 0} void main() { char arg[200] char arg[200] gets (arg) gets (arg).. f_vulner (arg) f_vulner (arg) printf(arg) printf(arg) return 0 return 0} адрес возврата [100] local Стек Обычный ход выполнения программы «Переполнение стека» Переменная arg [100] strcpy(local, arg)
int f_vulner (char arg) { char local[100] char local[100] //обработка //обработка return 0 return 0} void main() { char arg[200] char arg[200] gets (arg) gets (arg).. f_vulner (arg) f_vulner (arg) printf(arg) printf(arg) return 0 return 0} адрес возврата [100] local Данные [200] Переполнение стека «Переполнение стека» Стек strcpy(local, arg) Ошибка ! Вместо возврата запуск кода
Данные [200] «Переполнение стека» Вызов функций ядра (программное прерывание INT 0x80) Вызов функций из модулей DLL Использование функции «WinExec» Использование переполнения стека
Причины переполнения буфера Отсутствие необходимых проверок на корректность аргументов Отсутствие средств вычисления длины буфера при работе с указателями strcpy(local, arg) Abcd……….?
Последствия переполнения буфера Чтение ячеек памяти, не принадлежащих массиву Модификация ячеек памяти Системные данные (адрес возврата и т. д.) Системные данные (адрес возврата и т. д.) Другие переменные Другие переменные Исполняемый код Исполняемый код Несуществующая (свободная область) Несуществующая (свободная область)
Предотвращение ошибок переполнения Использование механизма структурных исключений Использование «Heap» для указателей Использование языков программирования, делающих невозможным переполнение буфера Несуществующая область Буфер Отказ от индикатора завершения
Методы защиты Установка пакетов исправления Исправление исходного кода с перекомпиляцией Тестирование программ специальными утилитами
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибка реализации Internet Explorer Степень риска Запуск кода на объекте атаки (во время посещения Web-сайтов злоумышленников) Механизм реализации Высокая Использование уязвимости обработки MIME-сообщения
HACKER Внутренняя сеть HTTP Использование уязвимости обработки MIME-сообщения … MIME-сообщение Команды ОС …
Сетевой сканер Nessus Тема 21
Сетевой сканер Nessus Nessus-сервер (UNIX) Nessus-клиент (Windows, UNIX) Сканируемая сеть
ПРИЛОЖЕНИЯ СУБД ОС СЕТЕВЫЕ СЛУЖБЫ ПОЛЬЗОВАТЕЛИ Сетевой сканер Nessus около 1000 проверок
Сетевой сканер Nessus Характеристики Модульная архитектура Язык описания атак NASL Система генерации отчётов Идентификация служб
Параллельное подключение и сканирование Nessus-сервер (UNIX) Nessus-клиент Сканируемая сеть Nessus-клиент
Практическая работа 20 Изучение возможностей сканера Nessus
Обеспечение безопасности сетей - - итог Для защиты сети необходимо использовать комплекс средств защиты, включающий в себя: Средства защиты узлов и ЛВС, обеспечивающие аутентификацию, разграничение доступа, шифрование и т.д. Средства анализа защищённости и устранения уязвимостей Средства обнаружения атак
Средства защиты периметра Внутренние серверы Рабочие места DMZ-1 DMZ-2 Филиал Мобильные сотрудники РесурсыInternet Пользователи Internet МЭ ID
Средства анализа защищённости DMZ-1 DMZ-2 Филиал Мобильные сотрудники РесурсыInternet Пользователи Internet МЭ Сканербезопасности
Средства обнаружения атак DMZ-1 DMZ-2 Филиал Мобильные сотрудники РесурсыInternet Пользователи Internet МЭ