Коллектив авторов - Защита от хакеров корпоративных сетей
- Название:Защита от хакеров корпоративных сетей
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Коллектив авторов - Защита от хакеров корпоративных сетей краткое содержание
В книге рассматривается современный взгляд на хакерство, реинжиниринг и защиту информации. Авторы предлагают читателям список законов, которые определяют работу систем компьютерной безопасности, рассказывают, как можно применять эти законы в хакерских технологиях. Описываются типы атак и возможный ущерб, который они могут нанести компьютерным системам. В книге широко представлены различные методы хакинга, такие, как поиск различий, методы распознавания шифров, основы их вскрытия и схемы кодирования. Освещаются проблемы безопасности, возникающие в результате непредсказуемого ввода данных пользователем, методы использования машинно-ориентированного языка, возможности применения мониторинга сетевых коммуникаций, механизмы туннелирования для перехвата сетевого трафика. В книге представлены основные сведения о хакерстве аппаратных средств, вирусах, троянских конях и червях. В этой книге читатель узнает о методах, которые в случае неправильного их применения приведут к нарушению законодательства и связанным с этим последствиям.
Лучшая защита – это нападение. Другими словами, единственный способ остановить хакера заключается в том, чтобы думать, как он. Эти фразы олицетворяют подход, который, по мнению авторов, позволит наилучшим образом обеспечить безопасность информационной системы.
Перевод: Александр Петренко
Защита от хакеров корпоративных сетей - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Загрузчики и программный код полезной нагрузки.В военном деле широко используются два связанных понятия: средства доставки и полезный груз. Аналогичные понятия применимы и для переполнения буфера. Говоря о переполнении буфера, подразумевают наличие средства доставки – загрузчика (injection vector) и полезного груза – программного кода полезной нагрузки. Загрузчик – выполнимый программный код, который позволяет управлять указателем на текущую команду удаленной машины. Это код целиком определяется компьютером, на котором он будет выполняться, и преследуемыми целями. Главная задача загрузчика заключается в том, что он должен заставить выполниться программный код полезной нагрузки. Программный код полезной нагрузки подобен вирусу: он должен работать везде, в любое время и независимо от того, как он попал на удаленную машину. Если программный код полезной нагрузки не удовлетворяет перечисленным требованиям, то он неработоспособен. Рассмотрим условия его создания.
Условия работоспособности программного кода полезной нагрузки.Проще всего загрузчик и программный код полезной нагрузки разместить в одном стеке, но так обычно не делается. При использовании стека для хранения загрузчика и программного кода полезной нагрузки следует позаботиться об их взаимодействии и учесть ограничения на допустимый размер программного кода полезной нагрузки. Если программный код полезной нагрузки загружается в память раньше загрузчика, то следует убедиться, что они не конфликтуют друг с другом. Если программы перекрываются, то в программном коде полезной нагрузки следует предусмотреть команду перехода, которая позволяет обойти код загрузчика и продолжить выполнение программного кода полезной нагрузки. Если вопросы их взаимодействия трудноразрешимы, то рекомендуется размещать программный код полезной нагрузки отдельно от загрузчика.
Все программы вводят данные пользователя и хранят их где-нибудь. Любой буфер в программе является кандидатом на хранение программного кода полезной нагрузки. Вопрос только в том, как заставить процессор выполнить его.
Чаще всего для размещения программного кода полезной нагрузки используются:
• файлы на диске, которые загружаются в память;
• доступные локальному пользователю переменные окружения;
• передаваемые через Web-запрос общие переменные окружения;
• доступные пользователю поля сетевого протокола.
После размещения программного кода полезной нагрузки в памяти компьютера остается правильно загрузить в регистр EIP-адрес кода. При размещении программного кода полезной нагрузки не в области стека появляется ряд преимуществ, и ранее невозможное становится возможным. Например, сразу исчезает ограничение на размер кода. До сих пор для установления контроля над компьютером используется ошибка занижения или завышения на единицу числа подсчитываемых объектов (off-by-one error).
Способы передачи управления программному коду полезной нагрузкиВ последующих секциях рассматриваются способы передачи управления программному коду полезной нагрузки. Особое внимание уделяется поиску не зависимых от платформы решений и способам подмены сохраненного в стеке содержимого регистра EIP, которые позволяют выполнить нужный код. Для этого мало знать адрес размещения программного кода полезной нагрузки в памяти.
Явный переход.Если программе переполнения буфера известен адрес программного кода полезной нагрузки, то можно передать ему управление при помощи явного перехода (direct jump). Программный код полезной нагрузки может быть загружен в область стека. Несмотря на то что адрес стека определить нетрудно, при явном переходе возможны ошибки. Во-первых, адрес стека может оказаться нулевым, поэтому может потребоваться размещение в памяти программного кода полезной нагрузки до загрузчика, сокращая доступную коду память. Во-вторых, адрес размещения в памяти программного кода полезной нагрузки может меняться, поэтому нужно учитывать возможные изменения адреса перехода. Способ явного перехода прост для использования. К тому же существуют хитроумные способы, позволяющие упростить определение адреса (см. секцию «Последовательность команд NOP»). В большинстве случаев в операционной системе UNIX адрес стека ненулевой, поэтому для нее описываемый способ подходит. И наконец, если программный код полезной нагрузки размещен вне стека, то способ явного перехода вне конкуренции.
Неявный переход.Регистр ESP указывает на текущее положение в стеке. Способ неявного перехода(blind return) основан натом, что любая команда ret, выполнив так называемое выталкивание данных из стека, загрузит в регистр EIP значение из области, на которую указывает регистр ESP. Существенно то, что команда ret загрузит в регистр EIP значение с вершины стека, которое будет проинтерпретировано как адрес программного кода. Если атакующий сможет подменить сохраненное в стеке содержимое регистра EIP на адрес своей программы, то по команде ret ей будет передано управление.
В ряде способов передачи управления программному коду полезной нагрузки используются регистры процессора для указания на область данных в стеке. Регистр EIP программно недоступен, поэтому нельзя подмененный указатель текущей команды непосредственно загрузить в регистр EIP и воспользоваться им для передачи управления в программе, как это показано на рис. 8.20. Для загрузки указателя текущей команды в регистр EIP указатель текущей команды должен указывать на реальную команду, как это показано на рис. 8.21.
Рис. 8.20. В регистр нельзя загрузить указатель на командуРис. 8.21. Указатель команды должен указывать на реальную команду
Скрытый переход.Если хранимое на вершине стека значение не является адресом атакуемого буфера, то для передачи управления программному коду полезной нагрузки можно воспользоваться способом скрытого перехода (pop return). Способ скрытого перехода позволяет загрузить в регистр EIP нужный адрес при помощи последовательности команд pop, завершающейся командой ret, как это показано на рис. 8.22. Последовательность команд pop выталкивает из стека несколько значений до тех пор, пока не придет очередь нужного адреса, который и загружается командой ret в регистр EIP. Способ целесообразно использовать, если искомый адрес находится недалеко от вершины стека. Насколько известно, способ скрытого перехода использован в общедоступной программе переполнения буфера информационного сервера Интернет IIS.
Рис. 8.22. Использование команд pop и ret для получения адреса перехода– pop EAX 58
– pop EBX 5B
– pop ECX 59
Читать дальшеИнтервал:
Закладка: