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

Тут можно читать онлайн Коллектив авторов - Защита от хакеров корпоративных сетей - бесплатно ознакомительный отрывок. Жанр: Прочая околокомпьтерная литература. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Коллектив авторов - Защита от хакеров корпоративных сетей краткое содержание

Защита от хакеров корпоративных сетей - описание и краткое содержание, автор Коллектив авторов, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

Лучшая защита – это нападение. Другими словами, единственный способ остановить хакера заключается в том, чтобы думать, как он. Эти фразы олицетворяют подход, который, по мнению авторов, позволит наилучшим образом обеспечить безопасность информационной системы.

Перевод: Александр Петренко

Защита от хакеров корпоративных сетей - читать онлайн бесплатно ознакомительный отрывок

Защита от хакеров корпоративных сетей - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Коллектив авторов
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Основные сведения

Стековый фрейм функции (stack frame) – область памяти, выделяемая всякий раз, когда вызывается функция. Она предназначается для временного хранения параметров, содержимого регистра EIP и, возможно, любых других регистров, а также локальных переменных функции. Ранее внимание читателя было заострено на использовании стека при хранении локальных переменных, а теперь будет рассказано о других возможностях его использования.

Для того чтобы понять, как работает стек, следует немного знать о командах процессора Intel call и ret. Команда call – основная команда для существования функции. Команда позволяет выполнить другую часть кода, запомнив при этом адрес точки возврата в стеке. Для этого команда call работает следующим образом:

1) проталкивает в стек адрес следующей команды, который является адресом точки возврата – точки, куда процессор передаст управление (возвратится) после выполнения функции;

2) передает управление по указанному в команде call адресу для выполнения команд функции.

А команда ret делает противоположное. Ее задача состоит в том, чтобы возвратиться из вызываемой функции к команде, следующей за командой call. Для этого команда ret выполняет следующие действия:

1) извлекает из стека сохраненный адрес точки возврата;

2) передает управление по только что извлеченному из стека адресу точки возврата.

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

Передача параметров в функцию. Простой пример

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

На рисунке 8.4 приведена программа, которая поясняет структуру фреймового стека функции и его использование в командах call и ret.

Рис. 8.4. Пример программы, демонстрирующей использование стека в командах вызова и возврата

Дизассемблирование

Приведенная на рис. 8.4 программа была скомпилирована как консольное приложение Windows в режиме построения окончательной версии Release. Результаты дизассемблирования функций callex() и main() приведены на рис. 8.5 и демонстрируют машинный код функций callex() и main() после компиляции. Обратите внимание на передачу по ссылке буфера памяти buffer из функции main() функции callex(). Другими словами, функция callex() получает указатель на буфер buffer, а не копию содержащихся в нем данных. Это означает, что все изменения в буфере buffer, выполненные в функции callex(), тут же отражаются на содержимом буфера buffer в main(), поскольку на самом деле это одна и та же переменная.

Рис. 8.5. Дизассемблированный вид функции callex()

Дампы стека

На рисунках 8.6–8.9 представлен стек в различные моменты выполнения программы. Воспользуемся приведенными на рисунках 8.6–8.9 дампами, исходным текстом программы на языке C и ее дизассемблерным видом, для того чтобы лучше понять происходящие в стеке изменения и их причины. Это поможет понять принципы работы фреймового стека функции и его роль и место в программе.

На рисунке 8.6 показан дамп стека сразу после инициализации переменных, но до операций вызова функции и записи в стек ее входных параметров. Это пример «чистого» стека функции.

Рис. 8.6. Дамп стека после инициализации переменных в функции main()

Далее, перед вызовом функции callex() в стек были помещены ее три параметра (см. рис. 8.7).

Рис. 8.7. Дамп стека до вызова функции callex()из функции main()

Обратите внимание на произошедшие изменения в дампе стека по сравнению с рис. 8.6. После размещения переменных в области стека функции main() в стек были записаны параметры вызываемой функции callex(), но сама функция пока еще не была вызвана. На рисунке 8.8 приведен дамп стека функции callex() после ее вызова.

Рис. 8.8. Дамп стека после вызова функции callex()и выполнения команд пролога, но перед выполнением оператора printfв функции callex()

Показанный на рис. 8.8 стек проинициализирован функцией callex(). Единственное, что осталось выяснить, – это вид стека перед обращением к функции printf(), список параметров которой состоит из четырех элементов.

Наконец, перед обращением в функции callex() к функции вывода значений переменных printf() в стек помещаются четыре параметра. Это видно из дампа стека, представленного на рис. 8.9.

Рис. 8.9. Дамп стека перед обращением к функции printf() вфункции callex()

Приведенные дампы стека позволят читателю хорошо понять принципы заполнения стека. Приобретенные знания пригодятся при обсуждении способов переполнения буфера.

Стековый фрейм и соглашения о вызове функций

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

Наиболее часто используется так называемое соглашение о вызове функций языка C (C declaration syntax). Параметры функции, объявленной в стиле языка С, записываются в стек в обратном порядке (справа налево, то есть первый параметр записывается в стек последним). Для вызванной функции это удобно, потому что в подобном случае первый параметр выталкивается из стека в первую очередь. По завершении функции вызывающая программа очищает стек, зная число и тип ранее размещенных в стеке параметров. Описанное соглашение о вызове функций позволяет передать ей переменное число параметров. Этот вариант по умолчанию используется для генерации кода MS Visual C/C++ и широко распространен на многих платформах. Иногда его называют синтаксисом вызова cdecl (cdecl calling syntax). Функция printf() является примером функции, которая использует синтаксис cdecl для обработки переменного числа параметров. По завершении функции printf() вызвавшая ее программа очищает стек.

Другое широко используемое соглашение о вызове функций получило название синтаксиса стандартного вызова (standard call syntax). Аналогично синтаксису cdecl переданные функции параметры записываются в стек в обратном порядке. Разница состоит в том, что вызванная функция изменяет указатель стека до своего завершения. Иногда это удобно, поскольку в вызывающей программе не надо думать, как правильно изменить указатель стека. Кроме того, это позволяет локализовать программный код изменения стека в вызванной функции. Большинство функций WIN32 API написано с использованием синтаксиса стандартного вызова, иногда известного как stdcall.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Коллектив авторов читать все книги автора по порядку

Коллектив авторов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Защита от хакеров корпоративных сетей, автор: Коллектив авторов. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x