Главная » 2014 » Март » 9 » Взлом программного обеспечения: анализ и использование кода
09:16
Взлом программного обеспечения: анализ и использование кода
Взлом программного обеспечения: анализ и использование кода - Эта книга рассказывает о том, как взламывать программный код. Самым подробным образом, чем это было сделано когда-либо ранее, высококвалифицированные авторы расскажут о технологии проведения атак и взлома программного кода. Книга насыщена примерами кода из реальных программ атаки и исправлений, вносимых хакерами в популярные приложения. Читателям наглядно демонстрируется, как выявлять неизвестные уязвимые места в программном обеспечении и как можно их использовать для взлома компьютеров. Книга предназначена для профессионалов в области программного обеспечения и может использоваться как пособие для создания более безопасного кода.
Название: Взлом программного обеспечения: анализ и использование кода Автор: Хогланд Грег, Мак-Гроу Гари Издательство: Вильямс Год: 2005 Страниц: 389 Формат: PDF Размер: 35,6 МБ ISBN: 5-8459-0785-3 Качество: Отличное Язык: Русский
Содержание:
Предисловие Введение О чем эта книга Как пользоваться этой книгой Не слишком ли опасна эта информация? Благодарности Благодарности Грега Благодарности Гари Глава 1. Программное обеспечение - источник всех проблем Краткая история программного обеспечения Ошибки в программах есть всегда Три основные проблемы Что такое безопасность программного обеспечения? Резюме Глава 2. Шаблоны атак Классификация терминов Оценка открытости системы Ознакомление с технологией взлома Схемы атак, или планы злоумышленника Пример атаки: взломанный компилятор C++ от компании Microsoft Обозначения шаблонов атак Резюме Глава 3. Восстановление исходного кода и структуры программы Внутри программы Средства для восстановления исходного кода Методы для восстановления исходного кода Методы исследования Создание дополнительных модулей для IDA Декомпиляция и дизассемблирование программного обеспечения Декомпиляция на практике: восстановление исходного кода helpctr. exe Автоматизированный глобальный аудит для выявления уязвимых мест Создание собственных средств взлома Создание базового средства для охвата кода Резюме Глава 4. Взлом серверных приложений Доверие к входным данным Расширение привилегий Доверие на уровне привилегий процесса Кому нужны права администратора? Привилегированные процессы, которые выполняют чтение данных из непроверенных источников Процессы, использующие привилегированные компоненты Поиск точек входа Поиск файлов для входных данных Трассировка входных данных Использование GDB и IDA-Pro по отношению к двоичному файлу SOLARIS/Sparc-программы Подключение к запущенному процессу Использование программы Truss для моделирования исследуемого процесса на платформе Solaris Использование доверительных отношений, созданных при настройке среды исполнения Поиск непосредственно исполняемых файлов Сведения о текущем рабочем каталоге Что делать, если Web-сервер не выполняет CGI-программы? А как насчет неисполняемых файлов? Использование правил политики Конкретные методы атак на серверные приложения Внедрение команд для командного интерпретатора Использование хакером каналов, портов и прав доступа Использование свойств файловой системы Использование переменных среды Использование внешних переменных Использование недостатков при аутентификации сеанса Подбор идентификаторов сеанса Альтернативные варианты аутентификации Вызов ошибки для проверки надежности кода обработки ошибки Резюме Глава 5. Взлом клиентских программ Клиентские программы в качестве цели атаки Сервер управляет клиентом Ловушка для хакера Служебные сигналы Старая (но актуальная) история Основные способы использования служебных символов Управление принтерами Управляющий код для систем Linux Проблема возврата Использование переносимых сценариев Использование атаки с возвратом для доверенных сайтов Клиентские сценарии и вредоносный код Поиск уязвимых локальных вызовов Web-браузеры и технология ActiveX Внесение данных в сообщения электронной почты Атаки с помощью вредоносного содержимого Контратака: переполнение буфера на стороне клиента Резюме Глава 6. Подготовка вредоносных данных Дилемма защитника Фильтры Взаимодействующие системы Обнаружение вторжений Различные типы систем обнаружения взлома Внесение обновлений для систем обнаружения вторжений Эффект альтернативного кодирования для систем IDS Исследование по частям Вернемся к Windows-программе APISPY Поиск ключевых мест в коде Трассировка Обратная трассировка из уязвимого места Тупиковые пути Трассировка во время выполнения программы Быстрые остановы Отслеживание данных в буфере «Ход конем» Точки останова для страниц памяти Поиск по шаблону Восстановление кода анализатора Преобразование символов Байтовые операции Операции для работы с указателями Символы завершения строки NULL Восстановление исходного кода сервера I-Planet Ошибки при классификации Создание эквивалентных запросов Исследование на уровне функций API Посторонние символы Эквивалентные метасимволы Управляющие метасимволы Преобразование символов Скомбинированные атаки Искажение данных в файлах журналов Резюме Глава 7. Переполнение буфера Переполнение буфера Переполнение буфера в стеке для забавы и с пользой Искажение данных в памяти Вектор вторжения Где заканчивается вектор вторжения и начинается полезная нагрузка? Выбор нужного адреса «Верхние» и «нижние» адреса памяти Прямой и обратный порядок байтов Использование регистров Использование существующего кода или блоков данных в памяти Переполнение буфера и встроенные системы Встроенные системы, используемые в военной и коммерческой сферах Переполнения буфера в системах управления базами данных Хранимые процедуры Программы с интерфейсом командной строки Клиентские программы базы данных Переполнение буфера и Java Совместное использование Java и C/C++ Хранимые процедуры и библиотеки DLL Переполнения буфера в результате обработки содержимого файлов Атаки на переполнение буфера с помощью механизмов фильтрации и аудита транзакций Переполнение буфера с помощью переменных среды Проблема множественных операций Поиск возможностей для осуществления переполнения буфера Сокрытие ошибки при обработке исключений Использование дизассемблера Переполнение буфера в стеке Буферы фиксированного размера Функции, для которых не требуется наличие завершающего символа NULL Проблема завершающего символа NULL Перезапись фреймов обработчика исключений Арифметические ошибки при управлении памятью Отрицательные числа как большие положительные числа Несоответствие между знаковыми и беззнаковыми значениями Значения со знаком и управление памятью Уязвимые места, связанные со строкой форматирования Вывод данных из любой области памяти Спецификатор формата %n Спецификатор формата %00u Выявление проблемы в коде Переполнение буфера в куче Функция malloc и куча Переполнения буфера и программы на C++ Таблицы vtable Вредоносные данные Сведения о размещении в памяти Размер полезной нагрузки Использование жестко закодированных вызовов функций Использование динамических таблиц переходов Определение раздела данных Защита с помощью XOR Использование контрольных сумм Полезная нагрузка для архитектуры RISC Отложенная передача управления Полезная нагрузка для архитектуры MIPS MIPS-команды Определение положения в памяти Как избежать нулевых байтов в машинном коде MIPS Системные вызовы на платформе MIPS Структура полезной нагрузки для платформы SPARC Окно регистров для платформы SPARC Использование стека на платформе SPARC Поиск вызовов функций на платформе SPARC Структура полезной нагрузки на платформе PA-RISC Использование стека на компьютерах PA-RISC Переполнение буфера на платформе HP/UX PA-RISC Операции ветвления на платформе PA-RISC «Трамплины» между областями памяти Информация о положении в памяти Саморасшифровывающаяся полезная нагрузка для платформы HP/UX Структура полезной нагрузки для платформы AIX/PowerPC Определение положения в памяти Защита для кода командного интерпретатора PowerPC Удаление символов NULL Полезная нагрузка для нескольких платформ Кроссплатформенные команды пор Код пролога и эпилога для защиты функций Устранение защиты с помощью сигнальных значений Успешная атака на неисполняемые стеки Резюме Глава 8. Наборы средств для взлома Вредоносные программы Что такое набор средств для взлома Что такое набор средств для взлома на уровне ядра Набор средств для взлома на уровне ядра и область надежного кода Простой набор средств для взлома на уровне ядра Windows XP Создание набора средств для взлома Контролируемая среда разработки Исходные файлы набора средств для взлома Инструменты разработки Драйверы с доступом на уровне ядра Основная структура драйвера Когда программы используют драйвер Возможность выгрузки драйвера Регистрация драйвера Использование функции SystemLoadAndCalllmage Перехват вызовов Сокрытие процесса Перехват системного вызова Схема перехвата вызова Удаление записи о процессе Альтернативное внедрение процесса Перенаправление данных с помощью «троянских» программ Перенаправление и недостатки Tripwire Драйвер для перенаправления Сокрытие файлов и каталогов Исправление двоичного кода «Замочная скважина» в программе Установка заплат в ядро Windows NT для блокировки всей системы защиты Аппаратный вирус Операции чтения и записи для энергонезависимой памяти Операции чтения и записи для памяти, встроенной в важнейшие устройства Вирус CIH Память EEPROM и синхронизация Память EEPROM на сетевых адаптерах Ethernet Последовательная или параллельная память EEPROM Как сгорают аппаратные средства Производители Обнаружение устройств с помощью спецификации CFI Определение устройств с помощью режима ID или JEDEC ID Низкоуровневый доступ к диску Операции чтения/записи для главной загрузочной записи (MBR) Искажение данных в образах компакт-дисков Добавление к драйверу возможности доступа по сети Использование библиотеки NDIS Перевод интерфейса в неразборчивый режим Обнаружение нужного сетевого адаптера Использовние тегов boron для обеспечения безопасности хакера Добавление интерактивного командного интерпретататора Прерывания Архитектура запросов на прерывание Перехват прерываний Загадка программируемого контроллера прерываний Регистрация нажатий клавиш Программа регистрации нажатий клавиш в Linux-системе Программа регистрации нажатий клавиш для Windows NT/2000/XP Контроллер клавиатуры Усовершенствованные возможности наборов средств для взлома Использование набора средств для взлома в качестве отладчика Отключение защиты системных файлов Windows Непосредственная запись данных в физическую память Переполнение буфера в ядре «Заражение» образа ядра Перенаправление исполнения Обнаружение наборов средств для взлома Резюме Предметный указатель