Исследование атак переполнения буфера

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

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 18.09.2016
Размер файла 14,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ПОВОЛЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра информационной безопасности

Лабораторная работа

«Исследование атак переполнения буфера»

Проверил:

Тарасова Л.В.

Йошкар-Ола 2015 г

Цель работы:

Изучить алгоритм вызова программ в ОС, а также принципы действия атак переполнения буфера ("buffer-overflow"), реализации на практике модели "buffer-overflow" атаки.

Краткие теоретические сведения:

В результате некорректного обращения к памяти может возникнуть проблема с менеджером памяти или зависание. Как правило, это связано с тем, что программа попыталась получить доступ к не принадлежащей ей области памяти. Это довольно часто случается, если программист забыл, например, проверить размеры строки, заносимой в буфер, и остаток строки попал в какие-то другие данные или даже в код. Это происходит из-за отсутствия контроля над размерами строк и буферов. Логичным следствием является наличие так называемых "bufferoverflow"-программ, которые в защищенных операционных системах используются для нарушения защиты системы и получения привилегий суперпользователя системы (в данной лабораторной работе в качестве модели используется ОС MS-DOS).

Выполнение работы:

На языке С++ были написаны четыре программы:

- программа, подверженная "buffer - overflow" атакам;

- программа, защищенная от атак данного типа;

- программа, реализующая "buffer-overflow" атаку;

- программа типа EXPLOIT;

Алгоритм, функциональная схема и функциональный состав программ:

1. программа, подверженная "buffer - overflow" атакам

Код:

void main(int argc, char *argv[])

{

setlocale( LC_ALL,"Russian" );

char buf[5];

if (argc >= 2)

{

strcpy_s(buf, argv[1]);

}

}

В качестве аргумента командной строки выступает строка произвольной длины для записи в buf. Данная программа подвержена "buffer - overflow" атакам, так как нет проверки на длину строки, копируемой в буфер. операционный буфер компьютерный программный

2. программа, защищенная от атак данного типа

Код:

void main(int argc, char *argv[])

{

setlocale( LC_ALL,"Russian" );

char buf[5];

strncpy(buf, argv[1], sizeof(buf)-1);

buf[sizeof(buf)-1] = '\0';

cout << buf;

getch();

}

В качестве аргумента командной строки выступает строка произвольной длины для записи в buf. Данная программа защищена от атак "buffer - overflow", так как функция strncpy является безопасной (записывает в буфер лишь указанное количество символов).

3. программа, реализующая "buffer-overflow" атаку

Код:

int main(int argc, char* argv[])

{

char str[256] = "";

char path1[100] = "C:\\Users\\Ольга\\Documents\\Visual Studio 2012\\Projects\\6.1\\Debug\\6.1.exe";

char path2[100] = "C:\\Users\\Ольга\\Documents\\Visual Studio 2012\\Projects\\6.1\\Debug\\6.2.exe";

strcpy_s(str, argv[1]);

if (argc == 2)

{

strcat_s(path1, " ");

strcat_s(path1, str);

WinExec(path1, SW_SHOW);

/*strcat_s(path2, " ");

strcat_s(path2, str);

WinExec(path2, SW_SHOW);*/

}

return 0;

}

Данная программа реализует "buffer - overflow" атаку, так как она запускает любую из программ №1 или №2, передавая в качестве аргумента строку произвольной длины. Таким образом, при запуске первой программы, в зависимости от длины строки, может возникнуть переполнение буфера, реализуется атака "buffer - overflow". При запуске второй программы, ничего не произойдет, так как она защищена от данных атак.

4. программа типа EXPLOIT

Целью данной программы является осуществление атаки для формальной проверки исследуемой программы на устойчивость. EXPLOIT-программа запускает программу-цель со строкой переменной длины до тех пор, пока программа-цель не зависнет или не сообщит об ошибке. Если программа зависла, это означает, что в ней отсутствует проверка на длину входной строки. Следовательно, данная программа не защищена от "buffer-overflow" атаки.

Код:

void main(int argc, char* argv[])

{

char path[100] = "C:\\Users\\Ольга\\Documents\\Visual Studio 2012\\Projects\\6.1\\Debug\\6.1.exe";

strcat_s(path, " ");

if (argc == 2)

{

for (int j = 0; j < 8; j++)

{

strcat_s(path, argv[1]);

cout << j << " ";

WinExec(path, SW_SHOW);

getch();

}

}

system("pause");

}

Данная программа циклично запускает первую (т.е. программу-цель), причем с каждым последующим прохождением цикла, передаваемая в качестве аргумента строка становится на 1 символ длиннее. Если программа зависла или сообщила об ошибке, это означает, что в ней отсутствует проверка на длину входной строки.

В данном случае, ошибка возникнет при 6-м прохождении цикла, так как буфер в программе №1 рассчитан лишь на 5 символов.

Вывод

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

Размещено на Allbest.ru

...

Подобные документы

  • Исследование наиболее распространенных видов сетевых атак. Сетевая разведка. Характеристика способов защиты от сетевых атак с использованием специальных программ. Изучение преимуществ и недостатков сетевых экранов. Переполнение буфера. Вирусные программы.

    реферат [329,2 K], добавлен 23.12.2014

  • Внешнее исследование программного продукта, анализ кода, блок-схемы алгоритма модуля. Оценка качества защиты программы средствами статического и динамического исследования. Осуществление "мягкого" и "жесткого" взлома. Пути оптимизации механизмов защиты.

    курсовая работа [1,3 M], добавлен 22.05.2016

  • Назначение буфера обмена, управление его данными в среде Windows. Взаимодействие между владельцем и клиентом буфера. Данные и тип дескриптора, для каждого типа предопределенных форматов. Воспроизведение данных буфера обмена с задержкой, окна просмотра.

    реферат [58,9 K], добавлен 04.10.2010

  • Обзор пакетов программ, предназначенных для визуализации и анализа данных. Обоснование выбора среды программирования. Организация аварийного буфера. Передача данных от нижнего уровня к верхнему и сохранение данных. Отображение данных в графической форме.

    дипломная работа [512,4 K], добавлен 28.08.2012

  • Характеристика буфера обмена как области памяти, резервируемой системой Windows для организации обмена данными между приложениями. Копирование и перемещение файлов как функции буфера обмена. Изучение абсолютной и относительной адресации ячеек MS Excel.

    контрольная работа [13,9 K], добавлен 11.09.2011

  • DDoS атаки. Спасение от DDoS атак. Предотвращение DDoS атак. Аппаратная защита программного обеспечения, компьютера и информации, сети. Хакинг, как сфера исследования. Типы хакеров. Методы хакинга. Защита от программ Microsoft. CMOS SETUP.

    курсовая работа [39,5 K], добавлен 06.02.2007

  • Определение буфера обмена, его расположение, правила работы, форматы хранимых данных. WIN API функции, используемые в данном проекте. Модульная структура программы, краткое описание подпрограмм и их назначение, причины использования многопоточности.

    курсовая работа [872,5 K], добавлен 24.06.2011

  • Угрозы безопасности программного обеспечения и классификация средств атаки на средства защиты ПО. Методы и средства защиты программ от компьютерных вирусов и средств исследования программ. Анализ стандартов в области информационной безопасности.

    дипломная работа [1,4 M], добавлен 29.06.2012

  • Классификации атак на отказ, их характеристики: тип, направление, схема и способ. Отраженные распределенные атаки на отказ. Назначение и проведение непрямой компьютерной атаки, функции IRC-ботнетов. Виды прямых атак (HTTP Flood, SYN Flood и прочие).

    реферат [122,2 K], добавлен 22.01.2014

  • Анализ компьютерной креступности к России, причины и тенденции ее расппостранения. Internet как среда и орудие ее совершения. Методы взлома защиты операционной системы, сетевого программного обеспечения (СПО) и системы управления базами данных (СУБД).

    курсовая работа [33,9 K], добавлен 09.12.2010

  • Классификация и основное назначение служебных программных средств (утилитов). Краткая характеристика дополнительных служебных компьютерных программ. Процедура использования буфера обмена в Windows. Использование автоформата в программе MS Excel.

    контрольная работа [16,1 K], добавлен 08.12.2010

  • Linux – одна из наиболее популярных распространяемых бесплатно операционных систем. Работа с базовым ограниченным набором программ по умолчанию. Характеристика основных программ, которые расширяют возможности операционной системы Linux для пользователя.

    презентация [486,5 K], добавлен 09.10.2013

  • Особенности алгоритмов, критерии качества. Создание и применение программного продукта на языке Delphi. Тип операционной системы. Внутренняя структура программного продукта. Руководство пользователя и программиста, расчет себестоимости и цены программы.

    дипломная работа [1,5 M], добавлен 12.06.2009

  • Анализ средств построения динамически масштабируемых ВС. Разработка алгоритма, обеспечивающего устойчивость функционирования информационно-вычислительных сетей в условиях воздействий компьютерных атак, использующих фрагментированные пакеты сообщений.

    дипломная работа [3,8 M], добавлен 21.12.2012

  • Рассмотрение основ разработки технического задания. Проектирования структуры программ; описание соответственного алгоритма. Собственно программирование. Тестирование и отладка компьютерных программ. Ознакомление с основными правилами защиты проекта.

    реферат [157,4 K], добавлен 15.11.2014

  • Теоретические основы изучения компьютерных программ, используемых для написания научных работ по биологии. Особенности программного обеспечения анализа в медицине и биологии BioVision, его возможности, экспериментальная работа по применению в биологии.

    курсовая работа [1,4 M], добавлен 22.02.2010

  • Особенности функционирования антивирусных программ при работе в сети, классификация и разнообразие способов защиты пользователя и компьютера от различных вирусных атак. Использование структурированных кабельных систем и информационная безопасность.

    курсовая работа [875,6 K], добавлен 09.03.2015

  • Компьютерные атаки и технологии их обнаружения. Сетевые системы нахождения атак и межсетевые экраны. Программные средства анализа защищенности и отражения угроз. Внедрение программных средств выявления атак для информационной системы предприятия.

    курсовая работа [53,6 K], добавлен 16.03.2015

  • Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.

    дипломная работа [1008,9 K], добавлен 13.10.2013

  • Анализ требований к программному продукту. Требования к информационной и программной совместимости. Проектирование архитектуры программного продукта. Виды программ и программных документов. Общие сведения о С++. Технология разработки программного модуля.

    дипломная работа [1,2 M], добавлен 05.08.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.