The Mac Hacker's Handbook - Part 3 (последняя)Another translations: into Belarusian. | Participants
|
- Statistics
- Participants
- Translate into Russian
- Translation result
- 23% translated in draft.
If you do not want to register an account, you can sign in with OpenID.
The Mac Hacker's Handbook - Part 3 (последняя) | ||
Глава 7 Использование стековых переполнений | ||
The stack buffer overflow is the "classic" buffer-overflow vulnerability. This vulnerability class has been known publicly since at least November 1988, when the Robert Morris Internet worm exploited a stack buffer overflow in the BSD finger daemon on VAX machines. | Переполнение буфера является "классической" уязвимостью. Этот класс уязвимости был широко известен по меньшей мере с ноября 1988 года, когда "червь Морриса" (Robert Morris Internet worm) использовал переполнение буфера в демоне BSD finger на VAX машинах. | |
A connection was established to the remote finger service daemon and then a specially constructed string of 536 bytes was passed to the daemon, overflowing its input buffer and overwriting parts of the stack. | Удаленно устанавливалась связь с демоном, а затем демону передавалась специально построенная строка длиной 536 байт, которая переполняла его входной буфер и перезаписывала часть стека. | |
—Eugene H. Spafford, "The Internet Worm Program: An Analysis" | —Eugene H. Spafford, "Программа интернет червь: Анализ" | |
Stack buffer overflow attacks and defenses have evolved significantly since then, but the core principles have remained the same: overwrite the function return address, and redirect execution into dynamically injected code, com¬monly referred to as the shellcode or the exploit payload. | Атаки на переполнение буфера и защита против них существенно эволюционировали с тех пор, но основные принципы остаются неизменными: перезаписать адрес возврата функции и перенаправить выполнение в динамически внедренный код, который обычно называют шеллкод или "полезной нагрузкой эксплоита". | |
In Leopard, Apple has implemented several defenses against the exploitation of stack buffer overflows, including randomizing portions of the process memory address space, making thread stack segments non-executable on the x86 architec¬ture, and leveraging the GNU C compiler's stack protector in some executables. | В Leopard Apple внедрила несколько видов защиты против использования переполнения буфера, в том числе случайный выбор адресов для частей процесса в памяти, в результате чего сегменты стека потока располагаются в памяти не последовательно, присвоение флага "non executable" на архитектуре x86, использовали протектора стека компилятора GNU C в некоторых выполняемых файлах. | |
This chapter starts with background on how the stack works in Mac OS X, what happens when the stack is "smashed," and how to exploit a simple stack buffer overflow vulnerability. Subsequent sections will detail the stack buffer overflow exploit protections in Leopard and how to overcome them in real-world exploits. | Эта глава начинается с рассмотрения, того, как работает стек в Leopard, что происходит, когда стек "разрушили" и с того, как использовать простую уязвимость основанную на переполнения стека. В следующих разделах будет подробно изложено, как работает защита стека в Leopard и как преодолеть эту защиту в реальных эксплоитах. | |
We will start demonstrating these vulnerabilities with simple attack strings to trigger the vulnerabilities. The attack string is the crafted input in an exploit that triggers or exploits a vulnerability. It does not typically include various protocol or syntax elements that may be needed to reach the vulnerability, but it will typically include the injection vector (the elements or aspects of the attack string that are used to obtain control of the target), and the payload (the position-independent machine code that is injected and executed by the target). A com¬plete exploit will include the necessary functionality to trigger the vulnerability, the injection vector to take full control, the payload to be executed by the target, and local payload handlers to implement attacker-side functionality. In most of this chapter and the next we will demonstrate various injection vectors using simplified payloads that avoid adding unnecessary complications at this early stage. In later chapters we will discuss how to build full shell code and other more-complicated exploit payloads, as well as topics like payload encoders and application-specific attacks. | Мы продемонстрируем работу этих уязвимостей с помощью простых строк атаки(на стек), которые должны будут вызвать его переполнение. "Строка атаки" - специально созданный входной параметр в эксплоите, работающий как спусковой крючок для уязвимости. Как правило, не включает различные протоколы или синтаксис элементов, которые могут быть необходимы для выполнения уязвимости, но, как правило, включает в себя вектор инъекции(адрес перехода на шелкод - прим. переводчика) (элементы или аспекты строки атаки, которые используются для получения контроля над исполнением) и "полезную нагрузку" (базово-независимый машинный код, который инжектируется и выполняется на жертве). Полноценный эксплоит состоит из: уязвимости, вектора инъекции (для получения полного контроля), полезной нагрузки (payload) выполняемой на компьютере жертвы и "локальный" payload( для обработки удаленных команд от атакующего). В этой и следующих главах мы будем демонстрировать различные векторы инъекций используя упрощенные варианты payloads, чтобы избежать слишком сложных примеров на начальном этапе. В последующих главах мы будем обсуждать, как построить полноценный шелкод и другие, более сложные варианты использования payloads. Кроме того, мы рассмотрим payloads-компиляторы (компиляторы полезной нагрузки) и варианты атак основанные на специфике конкретных приложений. |
© Copyright 2009 by Wiley Publishing, Inc., Indianapolis, Indiana.

— Много ошибок — r00t