Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #45, АВГУСТ 2004 г.

Платформа. Overflow. Власть!

Головин Виталий aka Vint

Спецвыпуск Xakep, номер #045, стр. 045-060-1


(Vint@glstar.ru)

Переполнение буфера в системах Windows и *nix

В чем состоит механизм атак на переполнение буфера? Как, используя банальную ошибку, получают удаленные шеллы рута и админа для, казалось бы, защищенных систем Windows и *nix? Ответы найдешь ниже.

Само переполнение буфера в программе не так страшно. Эта ошибка – лишь досадная оплошность, порой никак не влияющая на работу приложения. Максимальный вред от такой оплошности – остановка процесса программы, дамп памяти на винчестере и все. “И все-таки, почему ошибке переполнения буфера присваивают высокий, а часто даже критический статус?”– спросишь ты. Ответ прост: ошибка безобидна только для случаев, когда переполнение не используется умышленно, заранее подготовленным и отлаженным методом. Намеренное переполнение буфера системного процесса несет головную боль админам и пользователям ;-).

Цель для взлома

Далеко не каждое переполнение интересует кракеров и вирмейкеров. Например, их практически не волнуют ошибки программистов в малоиспользуемых программах. Такими ошибками будут заниматься хакеры – для них это удовольствие, а не работа или способ прославиться. Также не представляют особого интереса переполнения в программах, которые не имеют повышенных привилегий. Здесь достаточно вспомнить теорию переполнения буфера: у программы с ошибкой должны быть повышенные привилегии, которые она и передаст атакующему, выполнив определенный код. Вывод: наиболее желанны для взломщиков переполнения в привилегированных и распространенных приложениях. Что касается распространенности, то ОС Windows пока лидирует на рынке пользовательского ПО, а *nix-системы преобладают на серверах. Исходя из того, где найдена уязвимость, взломщик уже может представить область распространения его кода. А вот с высокими привилегиями и правами уже возникают некоторые сложности. Для того чтобы понять, какие именно программы имеют необходимые возможности, давай рассмотрим модель безопасности каждой из ОС.

ОС Windows

Это самая распространенная на сегодня система. О ее глючности и слабой модели пользовательских привилегий говорить не будем. Покажем только распределение привилегий в системе. На низшей ступени иерархии ОС стоит учетная запись "Гость" ("Guest"). Она есть в системе всегда, ее можно только заблокировать, но не удалить. Чаще всего эта учетка отключена и не имеет пароля. Она предполагает минимально возможные привилегии во всей системе. Приложения, запущенные от "Гость", не интересуют взломщиков. Они никогда не станут целью, на которую будет направлен эксплоит.

Следующая ступень иерархии – «Пользователи» ("Users"). Эта группа уже может входить в систему с терминалов, но права в ней все еще очень ограниченны: нет права на запись в системные файлы и папки. Группа "Пользователи" объединяет всех юзеров системы, не имеющих администраторских привилегий. Запущенные ими программы всегда имеют только те права на доступ, которые даны самому пользователю. Очень редкие эксплоиты и вирусы используют переполнения буфера в "пользовательских" программах. Учетных записей из группы "Пользователи" может даже не существовать. Последним доступным для использования является уровень группы "Администраторы" ("Administrators"). Получение прав администратора – одна из самых желанных целей взломщика. Эта учетная запись может выполнять практически все функции в системе. Получить привилегии уровня можно через уязвимость в программах, запущенных администратором. Это чаще всего приложения пользовательского плана (IE, почтовая программа, проигрыватели музыки-видео ;-). Именно поэтому настоятельно не рекомендуется работать под учетной записью с правами админа. Но, оказывается, доступ админа – не самый высокий в системе! Максимальными привилегиями обладает «Система» ("System") – самая желанная цель взломщика. Основное отличие ее от группы «Администраторы» – у «System» вообще нет ограничений на проводимые в ОС действия, так, например, такая процедура, как смена пароля админа на этих учетных записях будет существенно отличаться. Если у взломщика только права админа, ему нужно будет сначала ввести старый пароль на учетку и только потом установить новый; для учетной записи «System» вводить старый пароль не нужно. «System» – аналогия root'a в *nix-системах. Получить права системы намного сложнее, но все же реально. Главная возможность – использовать переполнения буфера в программе из нулевого кольца защиты. О кольцах защиты хочется рассказать несколько подробней: в них скрыта вся архитектура Виндов.

Содержание  Вперед на стр. 045-060-2