Конспект
Конспект
Стек
· Область стека предназначена для хранения локальных переменных функции. Обычно она настраивается для работы в прологе функции – части программного кода, расположенного в начале функции, и очищается в эпилоге – части программного кода, расположенного в ее конце.
· Нередко отдельные части области стека используются как буферы данных функции. Из-за особенностей принципов работы стека размер буфера данных не изменяется на протяжении всей жизни функции.
· Некоторые компиляторы при генерации выполнимого кода могут использовать ряд хитроумных способов работы со стеком для оптимизации размера функции и времени ее выполнения. Имеются также разнообразные способы вызова функции и передачи ей параметров, которые влияют на использование стека в пределах функции.
Стековый фрейм функции
· Стековый фрейм функции – область памяти, выделяемая всякий раз, когда вызывается функция. Она предназначается для временного хранения параметров, локальных переменных функции, оставшегося от предыдущего вызова функции содержимого регистра EBP и содержимого регистра EIP, указывающего на точку возврата.
· Содержимое регистра ESP указывает на вершину стека, содержимое регистра EBP – на дно. Значение регистра ESP меняется по мере выталкивания и проталкивания данных в стек. Регистр EBP обычно является базовым регистром для ссылки на локальные стековые переменные.
· Команды процессора Intel call и ret позволяют вызывать и завершать функцию. По команде call в стеке сохраняется содержимое регистра EIP, которое указывает на точку возврата. По команде ret из стека восстанавливается значение регистра EIP и управление передается в точку возврата из функции.
Основы переполнения буфера
· Копирование чрезмерно большого количества данных в буфер ведет к повреждению части стека.
· Поскольку по команде ret в регистр EIP будут загружены данные из стека, то при перезаписи области хранения в стеке содержимого регистра EIP данными пользователя команда ret загрузит в регистр адрес перехода, указанный пользователем.
Пример программы, уязвимой к переполнению буфера
· В программу переполнения буфера входят загрузчик, адрес перехода и программный код полезной нагрузки.
· Загрузчик записывает программный код полезной нагрузки в указанный буфер. В зависимости от ситуации загрузка может осуществляться сетевыми средствами, с помощью формы ввода или чтения из файла.
· Адрес перехода – адрес, который подменяет сохраненное в стеке содержимое регистра EIP. Имеется много возможностей для подмены содержимого регистра EIP с целью непосредственной или косвенной передачи управления нужной программе. Ряд способов позволяет повысить надежность передачи управления, например к ним относятся способ последовательности операций NOP (NOP sleds) или способ распыления динамически распределяемой памяти (heap spray).
· Программный код полезной нагрузки – это код, который стремится выполнить нападающий и который может делать все, что угодно. Анализируя результаты дизассемблирования прототипа программного кода полезной нагрузки на языке С, получают его окончательный вариант в виде последовательности машинных команд. Обычно код полезной нагрузки состоит из самых необходимых команд процессора, чтобы максимально сжать программный код, сэкономить место и время его доставки.
Современные способы переполнения буфера
· Для защиты от переполнения буфера проверяется безопасность записываемых в буфер данных. В результате риск переполнения буфера может уменьшиться, но не исчезнет совсем, потому что широко известны способы маскировки небезопасных данных. Например, если в буфер записываются только алфавитно-цифровые символы, то при записи программного кода из алфавитно-цифровых символов проверка данных ничего не выявит, а при проверке длины записываемых данных следует написать более компактный код.
· Иногда вместо подмены сохраненного в стеке содержимого регистра EIP возможны только частичное переполнение буфера или подмена значений в отдельных областях стека. Этого оказывается достаточным для передачи управления нужной программе. Требуется лишь подпортить данные в нужном месте стека, чтобы в дальнейшем произошло переполнение буфера и была вызвана нужная программа. Или в стеке подменить указатель функции, чтобы при ее вызове опять же вызвать нужную программу.
· Кроме переполнения стека, к компрометации системы может привести переполнение динамически распределяемой памяти, если в результате переполнения будут искажены данные или перезаписан указатель функции, потому что это в конечном счете приводит к установлению контроля над процессором.
Новаторские принципы построения программного кода полезной нагрузки
· В программном коде полезной нагрузки может использоваться уже загруженный обычным способом программный код. Это позволит уменьшить размер программного кода полезной нагрузки и предоставит возможность воспользоваться готовыми заготовками программ в своих целях. Не следует забывать, что зачастую в память загружено больше программного кода, чем это нужно. Поэтому исследование памяти процесса поможет найти полезный, предварительно загруженный код.
· Если для программы переполнения буфера чего-то не хватает, не бойтесь самостоятельно догрузить необходимое. Загружая динамические библиотеки, можно загрузить любой код, уже существующий на машине. Это даст практически неограниченные возможности для написания программного кода полезной нагрузки.
· Вложенный программный код полезной нагрузки позволяет скомпрометировать систему. Основная идея вложенного программного кода полезной нагрузки заключается в использовании одним кодом полезной нагрузки с незначительными правами другой уязвимости для загрузки нового кода полезной нагрузки в память привилегированного процесса.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Конспект
Конспект Обзор законов безопасности· Рассмотрены законы.· Законы нужно знать для того, чтобы сделать систему более безопасной.· Помните, что законы изменяются.Закон 1. Невозможно обеспечить безопасность клиентской части· Безопасность клиентской части целиком
Конспект
Конспект Обзор классов атак· По своему результату атаки разбиты на семь классов: отказ в обслуживании, утечка информации, нарушение прав доступа к файлу, дезинформация, получение доступа к специальным файлам / базам данных, удаленное выполнение программ и расширение
Конспект
Конспект Суть методологии исследования уязвимости· Анализ и экспертиза исходного текста программы – идеальная методология поиска ее уязвимостей.· Исследование исходного текста программ предполагает поиск подверженных ошибкам директив, построчную экспертизу
Конспект
Конспект Суть поиска различий· Поиск различий – процесс сравнения исследуемых объектов до и после свершения событий.· Поиск различий может использоваться для обнаружения изменения файла программным путем или выяснения сути исправления уязвимости.· Команда diff может
Конспект
Конспект Концепции криптографии· Незашифрованные данные называются открытым (незашифрованным) текстом ( plaintext), а зашифрованные – зашифрованным текстом (ciphertext). · Криптографические системы могут быть симметричными и асимметричными. В симметричных криптосистемах
Конспект
Конспект Опасность непредвиденных входных данных· Почти все приложения взаимодействуют с пользователем, получая от него данные.· В приложении должен быть предусмотрен контроль действий пользователя.· Особое внимание в приложении должно быть обращено на
Конспект
Конспект Стек· Область стека предназначена для хранения локальных переменных функции. Обычно она настраивается для работы в прологе функции – части программного кода, расположенного в начале функции, и очищается в эпилоге – части программного кода, расположенного в ее
Конспект
Конспект Уязвимость форматирующей строки· Уязвимость форматирующей строки обязана своим происхождением программистам, позволяющим присваивать входные данные программы параметрам функции printf() без необходимой в таких случаях проверки.· Уязвимость форматирующей
Конспект
Конспект Что такое прослушивание сетевого трафика?· Sniffing – прослушивание сетевого трафика (пассивное).· В классических операциях анализатор сетевого трафика присоединяется на стороне сетевой шины.· В новых операциях анализаторы устанавливаются на машине или шлюзе для
Конспект
Конспект Основные сведения о перехвате сеанса· Перехват сеанса основан на злоупотреблении доверием участвующих в соединении сторон.· Перехват сеанса описывается сценарием гонки: сможет ли злоумышленник получить пакет с ответом раньше легитимного сервера или клиента?
Конспект
Конспект Определение спуфинга· Мерике Кеао (Merike Keao) утверждает, что атаки спуфинга «обеспечивают ложную информацию об идентификационных данных для получения неавторизованного доступа к системе».· Атаки спуфинга – это нападения, которые фальсифицируют
Конспект
Конспект Основные требования к системам туннелирования· В общем случае наиболее эффективными оказываются подходы инкапсуляции, которые предусматривают перехват трафика, не требуя взамен знания его содержимого.· Сквозная безопасность ограничивает угрозы со стороны
Конспект
Конспект Основные сведения о хакинге аппаратных средств· Как правило, хакинг аппаратных средств преследует цель извлечь выгоду из получения доступа к секретным данным или заставить устройство выполнить нечто, для чего первоначально оно не предназначалось.· Атаки на
Конспект
Конспект Различия между вирусами, Троянскими программами и червями· Вирусы остаются на локальном компьютере, черви могут распространяться через Интернет, а Троянские программы обычно вообще не распространяются.· Макровирусы используют для активизации язык,
Конспект
Конспект Принципы работы, основанной на анализе сигнатур системы обнаружения вторжений· Возможности сетевых систем обнаружения вторжения определяются их базами сигнатур. Именно из этого следует необходимость повторных обновлений баз данных сигнатур сетевых систем
Конспект
Конспект Краткие сведения об автоматизированных средствах оценки безопасности· Ни одно из автоматизированных средств сканирования не предлагает законченного решения.· Опираясь на рекламную информацию, предоставляемую производителями о своих сканерах, примите