Защита информации в компьютерных сетях. Кулябов Д.С. - 55 стр.

UptoLike

Составители: 

ЗАЩИТА ИНФОРМАЦИИ В КОМПЬЮТЕРНЫХ СЕТЯХ 55
статочно для выполнения некоторых функций вредоносного кода.
Обычная цель взломщика получить полный контроль над маши-
ной.
Решением может служить следующее: передача некоторому привиле-
гированному процессу данных, которые интерпретировались бы им как
код. При этом отсутствие доступа на компьютер решается передачей уда-
ленных данных через демоны. Для выбора локальных привилегирован-
ных процессов (то есть при наличии доступа) также хорошо подходят
демоны, если они запущены от имени суперпользователя или SUID root-
программы.
Таким образом, необходима привилегированная программа, которая по-
лучает какие-то входные данные от непривилегированных пользователей
и необходимо заставить программу исполнить эти данные как код. Такой
прием получил название buffer overflow (переполнение буфера в стеке).
Технология переполнения локального буфера весьма универсальна и
будет работать практически в любой ОС.
После передачи управления надо выполнить следующие шаги:
Найти подходящую программу, которая выполняется с большими
привилегиями. Если взломщику доступны исходные тексты, то осо-
бое внимание надо обратить на программы, содержащие функции
strcat(), strcpy(), sprintf(), vsprintf(), gets(), scanf() и т. п. Если ис-
ходных текстов нет, то остается ручной поиск уязвимых программ,
то есть подача на вход длинных строк и оценка результатов.
Определить для найденной программы, какой размер буфера надо
использовать, где в буфере должен располагаться адрес возврата и
т.п.
Написать код, на который осуществится переход.
Каким-то образом внедрить свой код в систему. При этом злоумыш-
леннику надо проверить, чтобы вызываемая функция при обработке
этой строки не испортила данный код.
Также важно отметить, что технология переполнения буфера, являясь
самой распространенной и эффективной для удаленного исполнения ко-
да, то есть для реализации опасных угроз раскрытия и целостности,
но требующая значительных усилий по формированию соответствующей
строки, может применяться очень эффективно и для атак «отказ в об-
служивании». Здесь нет необходимости специально подбирать буфер с
правильным адресом возврата, а подойдет любой, и возврат совершится
на некий случайный адрес, вызвав тем самым аварийную остановку про-
граммы или всей ОС в целом.
Таким образом, явно или неявно предполагалось, что:
параметры функций передаются через стек;
адрес возврата также помещается в стек;
локальные переменные располагаются в стеке;
стек растет вниз;
данные в стеке могут интерпретироваться как команды;
должны существовать процессы или программы, имеющие уязвимый
код, подобный функции process_data();
некоторые процессы или функции должны иметь высокие привиле-
гии.