Чтение онлайн

на главную - закладки

Жанры

Защита от хакеров корпоративных сетей

авторов Коллектив

Шрифт:

· В программу переполнения буфера входят загрузчик, адрес перехода и программный код полезной нагрузки.

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

· Адрес перехода – адрес, который подменяет сохраненное в стеке содержимое регистра EIP. Имеется много возможностей для подмены содержимого регистра EIP с целью непосредственной или косвенной передачи управления нужной программе. Ряд способов позволяет повысить надежность передачи управления, например к ним относятся способ последовательности операций NOP (NOP sleds) или способ

распыления динамически распределяемой памяти (heap spray).

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

Современные способы переполнения буфера

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

· Иногда вместо подмены сохраненного в стеке содержимого регистра EIP возможны только частичное переполнение буфера или подмена значений в отдельных областях стека. Этого оказывается достаточным для передачи управления нужной программе. Требуется лишь подпортить данные в нужном месте стека, чтобы в дальнейшем произошло переполнение буфера и была вызвана нужная программа. Или в стеке подменить указатель функции, чтобы при ее вызове опять же вызвать нужную программу.

· Кроме переполнения стека, к компрометации системы может привести переполнение динамически распределяемой памяти, если в результате переполнения будут искажены данные или перезаписан указатель функции, потому что это в конечном счете приводит к установлению контроля над процессором.

Новаторские принципы построения программного кода полезной нагрузки

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

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

· Вложенный программный код полезной нагрузки позволяет скомпрометировать систему. Основная идея вложенного программного кода полезной нагрузки заключается в использовании одним кодом полезной нагрузки с незначительными правами другой уязвимости для загрузки нового кода полезной нагрузки в память привилегированного процесса.

Часто задаваемые вопросы

Наиболее часто авторы книги отвечали на приведенные ниже вопросы. Вопросы интересны тем, что они позволяют читателю лучше усвоить изложенный в главе материал и реализовать его на практике для обеспечения безопасности вычислительных систем. Если у читателя возникли вопросы по главе, зайдите на сайт www.syngress.com/solutions и щелкните

мышкой на кнопке «Ask the Author».

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

Вопрос: Где можно глубже познакомиться с вопросами переполнения буфера? Ответ: Чтение списков рассылки типа Bugtraq (www.securityfocus.com) и сопутствующие статьи об атаках переполнения буфера в журналах типа «Phrack» помогут значительно углубить знания в этой области.

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

Вопрос: Переполняются только буферы? Ответ: Фактически любое неправильное использование стековых переменных может привести к переполнению буфера. Этот тип уязвимости присущ программам, написанным на языке программирования с недостаточным контролем типов используемых данных, например на языке С. В последнее время возросли последствия от переполнения буфера, о чем свидетельствуют, например, локальная компрометация Sendmail (www.securityfocus.com/bid/3163) и найденная удаленная уязвимость в SSH1 (www.securityfocus.com/bid/2347). Подобные уязвимости трудны для обнаружения автоматическим инструментарием и могут доставить серьезные проблемы в будущем.

Вопрос: Каким образом можно обнаружить переполнение буфера? Ответ: Существует ряд способов для локализации в программе ошибок переполнения буфера. При наличии исходного текста атакованного приложения можно воспользоваться рядом разнообразных инструментальных средств, предназначенных для определения проблемных участков кода. Например, ITS4 (www.cigital.com/services/its4) или FlawFinder (www.dwheeler.com/flawfinder). Но и без исходных текстов доступен ряд способов. Один из них – проверка входных данных. Многочисленные инструментальные средства пригодны для контроля полей ввода информации в программах общего применения. К ним относится компонента контроля общесетевых протоколов CHAM (common hacker attack methods – общие методы хакерских атак) программы eEye\'s Retina (www.eEye.com), написанная автором. Дэйв Айтел (Dave Aitel) из @Stake написал для API программу SPIKE (www.atstake.com/research/tools/spike-v1.8.tar.gz), которая проверяет входные данные Web-приложений. Один из недавно появившихся способов обнаружения уязвимости переполнения буфера основан на ревизии выполнимого кода. Ревизия выполнимого кода основана на пользовательских средствах поиска характерных комбинаций машинных команд. Пока подобных общедоступных средств мало, но в скором времени ожидается рост их числа. При желании можно изучить даже некоторые инструментальные средства атак.

Глава 9 Ошибки форматирующей строки

В этой главе обсуждаются следующие темы:

Уязвимость форматирующей строки

Пример уязвимой программы

Тестирование программ способом случайной форматирующей строки

Программа атаки с использованием форматирующей строки

· Резюме

· Конспект

· Часто задаваемые вопросы

Поделиться:
Популярные книги

По дороге на Оюту

Лунёва Мария
Фантастика:
космическая фантастика
8.67
рейтинг книги
По дороге на Оюту

Неправильный боец РККА Забабашкин 3

Арх Максим
3. Неправильный солдат Забабашкин
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Неправильный боец РККА Забабашкин 3

Темный Лекарь 3

Токсик Саша
3. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 3

На границе империй. Том 8

INDIGO
12. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8

Росток

Ланцов Михаил Алексеевич
2. Хозяин дубравы
Фантастика:
попаданцы
альтернативная история
фэнтези
7.00
рейтинг книги
Росток

Проданная невеста

Wolf Lita
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Проданная невеста

Кодекс Охотника. Книга VIII

Винокуров Юрий
8. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VIII

Его нежеланная истинная

Кушкина Милена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Его нежеланная истинная

Идеальный мир для Лекаря 26

Сапфир Олег
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 26

СД. Том 15

Клеванский Кирилл Сергеевич
15. Сердце дракона
Фантастика:
героическая фантастика
боевая фантастика
6.14
рейтинг книги
СД. Том 15

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

Мама из другого мира. Делу - время, забавам - час

Рыжая Ехидна
2. Королевский приют имени графа Тадеуса Оберона
Фантастика:
фэнтези
8.83
рейтинг книги
Мама из другого мира. Делу - время, забавам - час

Имя нам Легион. Том 8

Дорничев Дмитрий
8. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 8

И только смерть разлучит нас

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
И только смерть разлучит нас