Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2015_лекции / Переполнение буфера

.pdf
Скачиваний:
89
Добавлен:
22.03.2016
Размер:
2.71 Mб
Скачать

Использование переполнения буфера

1.для определения нахождения кучи в адресном пространстве Apache;

2.для вставки shell-кода и буфера;

Причины

1.буфер с shell-код, должен иметь абсолютный адрес, что практически недостижимо, если его располагать в динамически выделяемой памяти

2.при переполнении буфера затирается также информация об используемом шифре при соединении, и сессия будет быстро завершена

Получение адреса кучи (1ое использование

переполнения буфера)

1.Червь посылает 56 байт для переполнения key_arg[], в результате перезаписывается память,

выделенная под session_id[] и session_id_length

2.Червь высылает сообщение «client finished».

3.Сервер отвечает «server finished» и высылает в том числе session_id[].

Вставка shell-кода(2ое переполнение буфера)

3 этапа вставки shell-кода

1.Повреждение структуры с управляющей информацией о куче

2.Изменение библиотеки free(), чтобы прописать адрес GOT

3.Вызов повтор free() для передачи управления shell-коду

Вставка shell-кода(2ое переполнение буфера)

1. Slapper → специальный буфер:

данные,

Числовые поля «А»

перезаписывающие

Указатели NULL

структуру

Кроме cipher, взятый из предыдщей сессии

SSL_SESSION

 

 

 

24 байт специально

Перезаписывают служебную информацию об управлении

подобранного кода

кучей:

 

Размер выделяемого блока := минимально возможный

 

Указатель на следующий блок := адрес функции free() в

 

таблице GOT – 12

 

Указатель на предыдущий блок := адрес shell-кода + 16

 

адрес shell-кода = адрес поля шифрования из 1-ой фазы

 

атаки

 

16 байт - размер содержимого фальшивого блока +

 

служебная информация

 

 

124 байт shell-кода

 

 

 

Вставка shell-кода(2ое переполнение буфера)

1.Slapper → “client finished”

2.сервер → SSL_SESSION_free() → free() из glibc, в

качестве аргумента передаётся указатель на структуру SSL_SESSION.

Результат: в таблице GOT на месте записи функции free() адрес shell-кода

Функциональная нагрузка shell-кода

поиск TCP соединения с атакующей машиной (сравнение getpeername() со значением прошитым в shell-коде;

загрузки «тела» червя с определённого сервера в закодированной форме;

расшифровка кода червя;

компиляция;

запуск.

Операции выполняются в папке /tmp под именами

*uubugtraq

*bugtraq.c

*bugtraq

Функциональность червя:

подключение к UDP-порту для организации P2P сети;

рассылает широковещательно адрес нового зараженного червя;

поиск уязвимых машин, случайно меняя адреса класс В-сетей;

используемый протокол, построенный на основе UDP для обеспечения надежности использует:

контрольные суммы (1)

номера последовательностей (2)

пакеты подтверждениями (3).

Трудности, возникающие при создании шелл-кода:

строковые переполняющиеся буфера не позволяют внедрять символ нуля в середину буфера и препятствуют вводу некоторых символов, которые программа интерпретирует особым образом;

размер переполняющихся буферов обычно очень мал для вмещения в них даже простейшего загрузчика или затирания сколь ни будь значимых структур данных;

абсолютный адрес переполняющегося буфера атакующему чаще всего неизвестен, поэтому приходится оперировать относительными адресами, что очень непросто с технической точки зрения;

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

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

Переполнение буфера: чтение секретных переменных

CVE-2014-0160

пакет OpenSSL 1.0.1 (до OpenSSL 1.0.1g )

реализация протоколов TLS /DTLS

расширение Heartbeat

Результат атаки

доступ к

•секретным ключам,

•именам и паролям пользователей и

•сертификатам X.509

• всему контенту, который должен передаваться в зашифрованном виде (e-mails, мгновенные сообщения)

http://habrahabr.ru/post/219151/

Соседние файлы в папке 2015_лекции