- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Защита от хакеров корпоративных сетей - Коллектив авторов
Шрифт:
Интервал:
Закладка:
Используя четыре спецификации преобразования %n и четыре адреса памяти, младшие биты записываемых целых чисел побайтно формируют нужные слова.
На некоторых платформах, например платформах с архитектурой RISK (архитектура RISK (Reduced Instruction Set Computer) – архитектура с сокращенным набором команд. Тип архитектуры микропроцессора, ориентированный на быстрое и эффективное выполнение относительно небольшого набора встроенных команд), запрещено при записи использовать адрес, не выровненный на границу двух байт. Во многих случаях это ограничение удается снять, используя запись коротких целых чисел при помощи спецификации преобразования %hn.
Рис. 9.1. Получение адреса с помощью четырех операций записиВозможность построения произвольных значений целых чисел путем последовательности операций записи – наиболее серьезный способ использования уязвимости форматирующей строки. Он позволяет злоумышленнику полностью контролировать программу, подменяя правильные указатели на указатели злоумышленника. Если злоумышленник воспользуется уязвимостью этим способом, то он сможет, используя программную ошибку атакованной программы, заставить атакованный процесс выполнить нужный ему управляющий программный код.
Что перезаписывать?
Имея возможность использовать любые значения почти в любом месте памяти, перед злоумышленником встает вопрос: «Что перезаписывать?» Обладая возможностью использовать практически любой адрес памяти, у злоумышленника большой выбор. Он может изменить адрес точки возврата функции аналогично тому, как это делается при переполнении буфера. С помощью перезаписи адресов возврата может быть выполнен управляющий программный код злоумышленника. Но в отличие от переполнения буфера злоумышленник не ограничивает себя только подменой адресов возврата.
Перезапись адресов возвратаБольшинство атак переполнения буфера сводятся к перезаписи адреса возврата какой-либо функции на адрес управляющего кода злоумышленника. Модифицированная подобным образом функция в конце своей работы передает управление не в точку возврата, а по подмененному злоумышленником адресу. При переполнении буфера перезаписывается адрес возврата из-за того, что фактически больше нечего перезаписывать. При атаках переполнения буфера злоумышленник не указывает точного адреса перезаписываемой области памяти. Запись ведется в области памяти, находящейся рядом с атакуемым буфером. В отличие от атак переполнения буфера при использовании уязвимости форматирующей строки данные злоумышленника записываются в указанную им область. Адрес области задается переменной, соответствующей спецификации преобразования %n. При завершении функции управление будет передано по адресу, записанному злоумышленником в результате многократной записи с использованием нескольких спецификаций преобразования %n.
При перезаписи адресов возврата злоумышленник может столкнуться с двумя проблемами. Одна из них состоит в том, что функция, у которой делается попытка подменить адрес возврата, в конце своей работы не возвращает управление вызвавшей ее функции. При использовании уязвимости форматирующей строки это обычное явление, потому что в большинстве случаев атакуемая функция выдает диагностическое сообщение и после выдачи диагностики инициирует аварийное завершение программы. Другими словами, выводится сообщение об ошибке, возможно, с использованием передаваемых программе данных, которые используются как параметры форматирующей строки, а затем вызывается функция завершения программы exit(). В этом случае перезапись адреса возврата для любой функции, кроме printf(), ничего не даст. Второй проблемой является то, что перезапись адресов возврата может пресекаться специальными средствами, например StarckGard.
Перезапись указателей таблицы глобальных смещений и указателей на функцииТаблица глобальных смещений (GOT – Global Оffset Table) – это секция в скомпонованной в формате ELF (executable and linkable format – формат исполняемых и компонуемых модулей) программе, в которой хранятся указатели на используемые программой библиотечные функции. Если заменить содержащийся в таблице GOT указатель так, чтобы вместо библиотечной функции он указывал на программный код злоумышленника, то при обращении к библиотечной функции с подмененным указателем будет вызван код злоумышленника.
Не все уязвимые выполнимые файлы, которые злоумышленник может использовать в своих целях, представлены в формате ELF. Прежде всего это касается широко распространенных указателей на функции, которые используются для вызова функций. Указатели функций – определенные в программе переменные, которые слабо защищены от атак злоумышленника. Для того чтобы злоумышленник смог выполнить свою программу, ему необходимо найти в программе вызов функции по ссылке с использованием указателя функции.Пример уязвимой программы
На примере уязвимой программы рассмотрим, каким образом злоумышленник может использовать уязвимости форматирующей строки для достижения своих целей. Наибольший интерес представляют способы удаленного использования уязвимостей форматирующей строки. О степени серьезности уязвимости форматирующей строки можно судить по тому, с какой легкостью злоумышленник может внедриться в сетевой компьютер через Интернет без каких-либо мандатов – учетных записей с параметрами доступа пользователя, сформированными после его успешной аутентификации. Для примера лучше всего рассмотреть уязвимость форматирующей строки в программе широко известного или уважаемого автора, для того чтобы показать, что уязвимости форматирующей строки могут существовать, и существуют, в программах, которые считаются хорошо написанными. Кроме того, пример уязвимой программы должен позволить изучить различные вопросы использования уязвимости форматирующей строки, как, например, вывод отформатированной строки.
В примере рассматривается программа, получившая название rwhoisd. Программа rwhoisd, или демон RWHOIS, является одной из реализаций сервиса RWHOIS. Научно-исследовательское отделение компании Network Solutions, Inc., в настоящее время поддерживает программу rwhoisd сервера RWHOIS, исходные тексты которой доступны по лицензии GNU PublicLicense.
...Приоткрывая завесу
Примеры важных уязвимостей форматирующей строки
Кроме упомянутой уязвимости форматирующей строки FTP-демона Вашингтонского университета при передаче параметра команде SITE EXEC, следует пару слов сказать о некоторых других уязвимостях. Часть из них была использована саморазмножающимися вирусами (червями) и утилитами, нашедшими широкое применение среди злоумышленников, в результате применения которых были скомпрометированы тысячи хостов.
IRIX telnetdclient. Включенные в форматирующую строку данные клиента, которая передавалась как параметр функции syslog(), позволяли удаленному злоумышленнику выполнить произвольный код безо всякой аутентификации. Эта уязвимость была обнаружена Last Stage of Delirium. Дополнительные сведения можно найти по адресу www.securityfocus.com/bid/1572.
Linux rpc.statd. Эта уязвимость форматирующей строки также обязана своим происхождением неправильному использованию функции syslog(). Она позволяет удаленному злоумышленнику получить права суперпользователя. Уязвимость была обнаружена Дэниелом Джакобоуитцом (Daniel Jacobowitz) и опубликована 16 июля 2000 года в извещении Bugtraq. Материалы по данному вопросу опубликованы по адресу www.securityfocus.com/bid/1480.
Cfingerd. Очередная уязвимость форматирующей строки функции syslog() была обнаружена Мигелем Ласзло (Megyer Laszlo). Если злоумышленник успешно воспользуется ей, то он получит возможность удаленно управлять основным хостом. Описание уязвимости может быть найдено по адресу www.securityfocus.com/bid/2576. Multiple Vendor LibC Locale Implementation. Юко Пуннонен (Jouko Pynn^en) и Core SDI независимо друг от друга обнаружили уязвимость форматирующей строки в реализации библиотеки языка C, поставляемой с некоторыми UNIX-системами. Выявленная уязвимость позволяла злоумышленнику повысить свои права на локальной машине. Подробный отчет о проделанной работе можно найти по адресу www.securityfocus.com/bid/1634.
Multiple CDE Vendor rpc.ttdbserverdISS X-Force обнаружила уязвимость, связанную с неправильным использованием функции syslog() в версиях демона серверной базы данных ToolTalk, поставляемой в нескольких операционных системах с CDE. Благодаря этой уязвимости удаленный злоумышленник, не прошедший аутентификацию, может выполнить произвольный код на атакованном хосте. Подробные сведения по этому вопросу можно найти по адресу www.securityfocus.com/bid/3382.
Классическую удаленную уязвимость форматирующей строки можно найти в версиях программы rwhoisd 1.5.7.1 и более ранних. Она позволяла удаленному злоумышленнику после подключения к серверу выполнить произвольный код. Впервые об уязвимости стало известно благодаря сообщению списка рассылки Bugtraq. Заархивированное сообщение может быть найдено по адресу www.securityfocus.com/archive/1/222756.