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

Сокрушительная атака

Андрей Семенюченко

Спецвыпуск: Хакер, номер #058, стр. 058-010-1


(viruslist@gmail.com)

Buffer overflow на службе взломщиков

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

Как известно, эксплойт - это программа, которая использует уязвимость некоторой другой программы, чтобы предоставить несанкционированный доступ злоумышленника. Уязвимостью чаще всего оказывается возможность переполнения буфера, о которой и пойдет речь. Скачать эксплойты предложат море бесплатных ресурсов, например те же новостные сайты, специализирующиеся на информационной безопасности. Например, security.nnov.ru, bugtraq.ru, securitylab.ru - это русскоязычные ресурсы, на которых можно найти практически любое описание опубликованных уязвимостей, информацию о существующих исправлениях данных ошибок и возможности обновления на сайте разработчика.

Использование IDS (Intrusion Detection Software) позволяет определить и блокировать попытки использовать переполнение буфера.

Локальные и удаленные уязвимости

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

Этот драйвер обеспечивает доступ к виртуальным терминалам. В функции CONS_SCRSHOT ioctl(2) обнаружена ошибка разбора входных данных, в результате которой (задав отрицательное или очень большое значение текущих координат) можно привести систему в нестабильное состояние. В результате получают доступ к важной системной информации ядра (в том числе, в некоторых случаях, прочесть введенные пароли), а также к повышению локальных полномочий. Использовать уязвимость может только пользователь, получивший физический доступ к локальной консоли (к файлам /dev/tty*).

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

Понятия локальных и удаленных уязвимостей тесно пересекаются с определением шелл-кода. Шелл-код тоже бывает локальным и удаленным. Локальный шелл-код – это машинный код, после исполнения которого происходит доступ к оболочке системы (к cmd в Windows и к шелл-оболочке в *nix-системах). Отличие удаленного шелл-кода в том, что он, помимо всего прочего, открывает на удаленной машине порт, после подключения на который предоставляется командная строка с правами доступа взломанного сервера.

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