Выполнил: Дмитриев Антон Игоревич, 11 класс, каф. ИУ-8; Научный руководитель: Медведев Николай Викторович;

Презентация:



Advertisements
Похожие презентации
Проблемы обеспечения безопасности приложений Тема 20.
Advertisements

Проблемы обеспечения безопасности приложений Тема 20.
Лекция 3 ПЕРВЫЕ ПРОГРАММЫ, ВВОД/ВЫВОД В ЯЗЫКЕ С++
Клиент банка под атакой © 2009, Digital Security.
Занятие 2. Конструкции принятия решений. Конструкции принятия решений позволяют приложениям проверять условия и выбирать направление действий. Другим.
Проблемы обеспечения безопасности приложений Тема 20.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
ЕГЭ информатика Алгоритмизация и программирование Консультация 3.
ЕГЭ 2011 Информатика и ИКТ Консультация 3 18 марта.
ОСНОВНЫЕ ВИДЫ И ПРИЕМЫ ХАКЕРСКИХ АТАК Свидетель 3.
ЕГЭ 2012 Информатика и ИКТ Консультация 3. Пример.
C++ Лекция 1. Литература Шилдт Г. С++: базовый курс.-М.:Вильямс, с. Шилдт Г. Самоучитель С++. - СПб.: БХВ-Петербург, – 687 с. Б. Пахомов.
ПРАКТИКУМ по предмету: Информатика Алгоритмический язык Турбо-Паскаль.
Сложностные характеристики статистических скрытых каналов Автор: Свинцицкий Антон Игоревич Факультет вычислительной математики и кибернетики Московского.
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Лекция 7. Структура языка С/С++. Операторы ветвления: условный оператор if. Полное ветвление. Неполное ветвление. Оператор множественного выбора switch.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Организация компьютерной безопасности и защита информации автор: Чекашов а Ирин а 10А учитель: Антонова Е.П год.
Транксрипт:

Выполнил: Дмитриев Антон Игоревич, 11 класс, каф. ИУ-8; Научный руководитель: Медведев Николай Викторович;

Введение Целью проекта является выявление и устранение уязвимостей протокола аутентификации «Kerberos». Для достижения данной цели в работе были поставлены и решены следующие научные задачи: 1)Рассмотреть теоретические аспекты аутентификации «Kerberos»; 2)Описать алгоритм устранения уязвимостей и степень опасности угроз; 3)Привести сравнительный анализ угроз в виде табличных данных. Предметом проекта являются принципы протокола «Kerberos».. Объектом исследования является уязвимости протокола.

Протокол Kerberos это - сетевой протокол аутентификации, позволяющий безопасно передавать данные через незащищённые сети для безопасной идентификации. Его организация направлена в первую очередь на клиент-серверную модель и обеспечивает взаимную аутентификацию - оба пользователя через сервер подтверждают личности друг друга. Сообщения, отправляемые через протокол Kerberos, защищены от прослушивания.

Принцип работы

Подпротоколы 1)AS Exchange 2)TGS Exchange 3)CS Exchange

Строение билета

Флаги билета

Уязвимости В протоколе «Kerberos» существует ряд уязвимостей, существование которых может привести к неправильной работе протокола. Некоторые из них представлены ниже.

1. CVE KDC неправильно ограничивает использование TGT -учетных данных для бронирования TGS - запросов, которые могут разрешить удаленным авторизованным пользователям олицетворять клиента, переписав внутренний запрос. 2.1/ CVE Kerberos 5 неправильно определяет приемлемость контрольных сумм, что может позволить отдаленному атакующему изменить текст, который видит пользователь или подделать сообщение KRB-SAFE через контрольные суммы, которые либо незашифрованы, либо зашифрованы RC4- ключами 2.6/ CVE Использование однокомпонентного имени домен позволяет атакующему вызвать отказ в обслуживании через запрос TGS-REQ, что вызывает пересечение областей(?). 3.5/ CVE Уязвимость модуля базы данных KDC позволяет удаленному атакующему вызвать отказ в обслуживании через формирование запроса. 4.0/ CVE Функция check_1_6_dummy в lib/kadm5/srv/svr_principal.c позволяет вызвать отказ в обслуживании через создания запроса, что пользователь не ввел пароль 4.0/10.0

Практическая часть В своей работе я выбрал 2 уязвимости протокола и устранил их. Первой уязвимостью является переполнение буфера. Второй – вход протокола в бесконечный цикл.

Переполнение буфера Переполнение буфера (buffer overflow) - наверное одна из самых интересных и широко распространённых уязвимостей программного обеспечения. Вроде бы небольшая ошибка программиста может (при особых обстоятельствах) позволить злобно настроенному хакеру сделать практически что угодно на компьютере невинного пользователя программы. Ошибка заключается в том, что в каком-либо месте программы происходит копирование данных из одного участка памяти в другой без проверки того, достаточно ли для них места там, куда их копируют. Область памяти, куда копируются данные, принято называть буфером. Таким образом, если данных слишком много, то часть их попадает за границы буфера - происходит "переполнение буфера". Умелое использование того, куда попадают "лишние данные" может позволить злоумышленнику выполнить любой код на компьютере, где произошло переполнение.

Что же такое переполнение стека и что с ним можно сделать. Рассмотрим следующую программу: #include "stdafx.h" #include void show_array(int arrlen, char array[]) { char buffer[32]; int i; for (i = 0; i < arrlen; i++) buffer[i] = array[i]; printf(buffer); } int main() { char mystr[] = "The possibility..."; show_array(30, mystr); getch(); return 0; }

Функция Тело программы

изменить функцию main следующим образом: #include #include "stdafx.h" void show_array(int arrlen, char array[]){ char buffer[32]; int i; for (i = 0; i < arrlen; i++) buffer[i] = array[i]; printf(buffer);} int main(){ char mystr[] = «Что-тооооооооченьдлииииииннооооееее"; show_array(51, mystr); return 0;}

int main(){ // часть строки, заполняющая буфер char mystr[] = " " "\xb3\x94\xf7\xbf" // адрес возврата // код "\xff\x15\xe8\xf0\x40\x00"; // CALL [KERNEL32.ExitProcess] show_array(47, mystr); return 0;}

Вход в бесконечный цикл Одним из наиболее интересных аспектов использования цикла for является создание бесконечного цикла. Поскольку не требуется ни одна из частей, можно создать бесконечный цикл путем удаления части проверки условия. Например: for ( ; ; ) printf(" this loop will run forever. \n"); Хотя можно использовать части инициализации и увеличения, наиболее типично использование for( ; ; ) без выражений для создания бесконечного цикла.

На самом деле конструкция for( ; ; ) не обязательно создает бесконечный цикл, поскольку в теле цикла может присутствовать оператор break, при достижении которого цикл оканчивает работу. Нижеприведенная программа контролирует нажатие клавиш и, в случае достижения необходимого условия, бесконечный цикл прерывается: for ( ; ; ) { ch = getchar(); /* ввод символа */ if (ch == 'A') break; /* выход из цикла */ } printf("you typed an A"); Цикл будет работать до тех пор, пока на клавиатуре не будет набрана А.

#include "stdafx.h" #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) {char ch; for ( ; ; ) { ch = getchar(); /* ввод символа */ if (ch == 'A') break; /* выход из цикла */ } printf("you typed an A"); system("pause"); return 0; }

Есть много других способов устранения этой уязвимости, однако этот – самый простой из них.

Итог Итогом моей работы стало создание некоторых алгоритмов устранения уязвимостей протокола, использование которых в программе дает существенное повышение безопасности «Kerberos» +=

Список использованных источников 1) 2) 42/product_id-61/MIT-Kerberos.html

Спасибо за внимание!!!