Хакинг искусство эксплойта 4 издание

Хакинг искусство эксплойта 4 издание

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

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

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

Мир без хакеров — это мир без любопытства и новаторских решений. (Джон Эриксон)

Меры противодействия

Есть такая лягушка — ужасный листолаз (Phyllobates terribilis). Ее кожные железы содержат сильнейший яд. Достаточно просто прикоснуться к ней, чтобы получить смертельное отравление. Столь мощное средство защиты объясняется тем, что этими лягушками питаются определенные виды змей, выработавшие у себя невосприимчивость к яду. Постепенно яд лягушек становился все сильнее и сильнее. В результате такой совместной эволюции у ужасных листолазов не осталось других естественных врагов. Нечто подобное происходит и с хакерами. Придуманные ими техники давно известны, так что появление мер противодействия вполне естественно. В ответ хакеры ищут способы обойти и разрушить защитные механизмы, что приводит к созданию новых оборонительных техник.

Этот цикл поиска мер и контрмер весьма полезен. Вирусы и черви становятся причиной многочисленных неприятностей и приносят бизнесу большие убытки, но в то же время они заставляют разработчиков принимать ответные меры для решения возникших проблем. Черви самовоспроизводятся, используя уязвимости некачественного программного обеспечения. Зачастую ошибки остаются незамеченными на протяжении лет, а относительно безвредные черви, такие как CodeRed или Sasser, заставляют разработчиков их исправить. Этот процесс можно сравнить с ветрянкой, которой лучше переболеть в детстве, а не во взрослом возрасте, когда она способна привести к катастрофическим последствиям. Если бы интернет-черви не привлекли всеобщее внимание к дырам в безопасности, эти дыры оставались бы открытыми для атаки с куда более злонамеренными целями, чем простое самовоспроизведение. Таким образом, черви и вирусы содействуют укреплению безопасности в долгосрочной перспективе. Но есть и более активные способы: техники, пытающиеся свести к нулю результаты атаки или сделать ее и вовсе неосуществимой. Понятие «меры противодействия» довольно расплывчатое, под этими словами могут подразумеваться технические средства обеспечения безопасности, набор правил, программа или просто внимательный системный администратор. Меры противодействия условно делятся на две группы: пытающиеся обнаружить атаку и пытающиеся защитить уязвимость.

0x610 Средства обнаружения атак

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

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

Читайте также:  Что такое петля полуавтомат в швейных машинах

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

Для атакующего обнаружение означает противодействие всему, что он делает. Разумеется, мгновенно заметить атаку удается далеко не всегда, поэтому существует ряд сценариев типа «схватил и убежал», в которых факт обнаружения не важен, но даже в этих случаях лучше не оставлять следов. Скрытность — одно из самых ценных качеств хакеров. Получение доступа к командной оболочке с правами администратора путем эксплуатации уязвимостей дает возможность делать в системе что угодно, а если удастся избежать обнаружения, никто не узнает о вашем присутствии. Именно сочетание вседозволенности с невидимостью делает хакеров опасными. Они могут спокойно перехватывать в сети пароли и данные, добавлять в программы закладки для последующего несанкционированного доступа и атаковать другие узлы сети. Чтобы оставаться в тени, хакеру следует понимать, какие методы распознавания используются в том или ином конкретном случае. Если знать, что именно они ищут, можно избежать определенных шаблонов эксплуатации уязвимости или замаскировать свои действия под допустимые. Движущим фактором для цикла совместной эволюции средств обнаружения и приемов, позволяющих оставаться незамеченным, служат идеи, которые пока не пришли в голову другой стороне.

0x620 Системные демоны

Впрочем, меры противодействия хакерам и их обходные маневры лучше обсуждать на практическом примере. Сейчас мы рассмотрим атаку на серверную программу, принимающую входящие соединения. В UNIX-подобных операционных системах под эти критерии подходят системные демоны. Демоном называется программа, работающая в фоновом режиме и определенным способом отделенная от управляющего терминала. Термин был придуман в 1960-е хакерами из Массачусетского технологического института. Прообразом стало мифическое существо, сортирующее молекулы, из мысленного эксперимента физика Джеймса Максвелла. Демон Максвелла обладал сверхъестественной способностью легко выполнять сложные задачи, нарушая при этом второй закон термодинамики. Аналогичным образом системные демоны в Linux без устали выполняют такие задачи, как предоставление доступа к SSH и ведение системных журналов. Имена демонов, как правило, заканчиваются на d, что подчеркивает их природу: например, sshd или syslogd.

Небольшое редактирование превратит программу tinyweb.c из раздела 0x427 в реалистичное подобие системного демона. Новая версия кода содержит функцию daemon(), порождающую новый фоновый процесс. Она используется многими процессами системных демонов в Linux. Вот посвященная ей страница из справочника:

DAEMON(3) Справочник программиста Linux DAEMON(3)

ИМЯ
daemon – запуск в фоновом режиме
СИНТАКСИС

Функция daemon() отключает программу от управляющего терминала и запускает
ее в фоновом режиме как системного демона.
При ненулевом аргументе nochdir функция daemon() меняет текущий рабочий каталог
на корневой ("/").
При ненулевом аргументе noclose функция daemon() перенаправляет потоки
стандартного ввода, стандартного вывода и ошибок в /dev/null.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Читайте также:  Правила пользования в контакте

(Эта функция порождает копию процесса, и при успешном выполнении функции fork()
родитель выполняет _exit(0), чтобы дальнейшие ошибки были видимы только
дочернему процессу.) В случае успеха возвращается ноль. При ошибке функция
daemon() возвращает -1 и присваивает глобальной переменной errno номер ошибки
из библиотеки функций fork(2) и setsid(2).

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

0x621 Обзор сигналов

Сигналы обеспечивают взаимодействие между процессами в UNIX. После получения сигнала процессом операционная система прерывает его выполнение, чтобы вызвать обработчик сигнала. Каждому сигналу соответствует свой номер и свой обработчик. Например, при нажатии комбинации клавиш Ctrl+C посылается сигнал прерывания, обработчик которого завершает открытую на управляющем терминале программу, даже если та вошла в бесконечный цикл.

Можно создавать собственные обработчики сигналов и регистрировать их с помощью функции signal(). Давайте рассмотрим код, в котором для некоторых сигналов регистрируется несколько обработчиков, а в основной части присутствует бесконечный цикл.

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

Команда kill позволяет посылать процессу целый набор сигналов. По умолчанию она посылает сигнал завершения (SIGTERM). Добавление к ней параметра -l выводит список всех возможных сигналов. Посмотрим, как программе signal_example, выполняемой на другом терминале, посылаются сигналы SIGUSR1 и SIGUSR2.

В конце командой kill -9 посылается сигнал SIGKILL. Обработчик этого сигнала поменять нельзя, поэтому команда kill -9 всегда используется для уничтожения процессов. Запущенная на другом терминале программа signal_example показывает, что сигналы были перехвачены, а процесс — уничтожен.

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

0x622 Демон tinyweb

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

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

Эта программа создает дубликат процесса, работающий в фоновом режиме, делает записи в файл журнала вместе с временными метками и корректно завершает работу после получения соответствующего сигнала. Дескриптор файла журнала и принимающий соединение сокет объявлены как глобальные переменные, чтобы функция handle_shutdown() могла корректно завершить их работу. Она задана как обработчик обратного вызова для сигналов завершения и прерывания, что обеспечивает аккуратное закрытие программы командой kill.

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

Читайте также:  Не получается зайти в инстаграм с телефона

Новая программа tinywebd обрабатывает HTTP-контент, как и исходная tinyweb, но ведет себя как системный демон, потому что у нее отсутствует управляющий терминал, а вывод происходит в файл журнала. Обе программы уязвимы к одному и тому же переполнению буфера — но с эксплуатации этой уязвимости все только начинается. Теперь, когда мы выбрали в качестве объекта атаки демона tinywebd, я покажу вам, как избежать обнаружения после того, как вы проникли на чужую машину.

Для Хаброжителей скидка 20% по купону — Hacking

Вы можете помочь и перевести немного средств на развитие сайта


Название: Хакинг. Искусство эксплойта, 2-е издание
Автор: Джон Эриксон
Издательство: Питер
Год: 2018
Страниц: 498
Формат: pdf
Размер: 20,5 Mb
Язык: русский

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

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

Скачать книгу "Хакинг. Искусство эксплойта, 2-е издание":

Скачать книгу

О книге "Хакинг: искусство эксплойта. 2-е издание"

Хакинг – это искусство творческого решения задач, подразумевающее нестандартный подход к сложным проблемам и использование уязвимостей программ. Часто бывает трудно разобраться в методах хакинга, потому что для этого нужны широкие и глубокие знания. Автор не учит применять известные эксплойты, а объясняет их работу и внутреннюю сущность. Вначале читатель знакомится с основами программирования на C, ассемблере и языке командной оболочки, учится исследовать регистры процессора. А усвоив материал, можно приступать к хагингу – перезаписывать память с помощью переполнения буфера, получать доступ к удаленному серверу, скрывая свое присутствие, и перехватывать соединения TCP. Изучив эти методы, можно взламывать зашифрованный трафик беспроводных сетей, успешно преодолевая системы защиты и обнаружения вторжений. Книга дает полное представление о программировании, машинной архитектуре, сетевых соединениях и хакерских приемах. С этими знаниями ваши возможности ограничены только воображением. Материалы для работы с этим изданием имеются в виде загрузочного диска Ubuntu Linux, который можно скачать и использовать, не затрагивая установленную на компьютере ОС.

Произведение относится к жанру Компьютеры: прочее. Книга входит в серию "High Tech". На нашем сайте можно скачать книгу "Хакинг: искусство эксплойта. 2-е издание" в формате fb2, rtf, epub, pdf, txt или читать онлайн. Рейтинг книги составляет 5 из 5. Здесь так же можно перед прочтением обратиться к отзывам читателей, уже знакомых с книгой, и узнать их мнение. В интернет-магазине нашего партнера вы можете купить и прочитать книгу в бумажном варианте.

Ссылка на основную публикацию
Adblock detector