The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project

Shatter attack

Tartuga

Местный
Регистрация
19.12.2019
Сообщения
101
Реакции
22
Shatter attacks - это атаки на основе программного обеспечения, которые используют базовую архитектурную ошибку в операционной системе. Такие атаки используют недостатки в базовом интерфейсе Windows API Win32 для создания переполнения буфера или получения повышенных привилегий. Атаки в основном основываются на локальном доступе и предыдущем размещении вредоносного кода в системе. Программа атаки должна быть установлена и запущена в целевой системе до начала атаки.

(Данная уязвимость была распространена в виндусовых системах начала 0-х (xp, 2000). Но кто знает не всплывет данная уязвимость еще где-то из-за ошибки программиста?! Где-то я видел информацию о том, что данная уязвимость присутствовала и в 7-ке)

Приложения в Windows полностью контролировались с помощью сообщений. Когда клавиша нажата, в текущее активное окно отправляется сообщение, в котором указывается, что нажата клавиша. Когда Windows решает, что приложение необходимо перерисовать свою клиентскую область, оно отправляет сообщение в приложение. Эти сообщения помещаются в очередь и обрабатываются в порядке приложения. Тогда в win32 отсутствовал механизм аутентификации источника сообщения; сообщение, отправленное из вредоносного приложения, не отличалось от сообщения, отправленного ядром Windows. И данная "особенность" успешно эксплуатировалась злоумышленниками.

Для произведения атаки необходимо найти некий элемент редактирования нашей атакуемой программы. Сообщение EM_GETLINE сообщало элементу управления редактирования, чтобы скопировать его содержимое в указанный в нашем сообщении адрес. Тогда приложение ожидало ввода 16 байт данных из поля редактирования. Но тк в буфере было зарезервивровано только 16 байт, то можно было ввести более выделенного количества, что давало переполнение буфера. После чего, когда отправляли WM_TIMER - параметр, который указывался как идентификатор таймера, то он попадал в стек вместе с остальными нашими прелестями. (все, атака прошла:)
 
Верх