Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Атака на переполнение буфера через неисполнимый стек в Windows NT/2000/XP


Станислав Гошко

Атаки на переполнение буфера за последние 10 лет получили громадное распространение. Практически во всех современных операционных системах предусматривается защита от данных атак (Black Cat, Sun...). Поэтому не за горами то время, когда данная защита появится и у Windows-систем. В данной статье будет рассматриваться атака на переполнение буфера через неисполнимый стек.

Рассмотрим, чем отличается обычное переполнение буфера от переполнения буфера через неисполнимый стек.

Большинство атак на переполнение буфера строятся по следующей схеме:

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

n  Подготавливается исполнимый код в качестве буфера.

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

n  Затем подготовленный буфер, содержащий мусорные байты, новый адрес возврата и исполнимый код передаются уязвимой программе.

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

Как вы могли заметить, исполнение shell-кода происходит прямо в стеке. Большинство защит ориентировано на то, чтобы воспрепятствовать выполнению кода в стеке, и данная защита очень хорошо работает против большинства эксплоитов.

Теперь для понимания функционирования эксплоитов, использующих атаку через неисполнимый стек, рассмотрим простую программу, которая вызывает через WinExec программу – «cmd.exe».

На языке С++ она бы выглядела так:

#include <windows.h>

 

void main ()

{

    WinExec("cmd",1);

}

В данной программе не видно вызова функции ExitProcess, так как компилятор C++ сам заботится о корректном завершении программы.

Рассмотрим аналогичную программу на языке ассемблера:

.386                           

.model flat, stdcall           

                              

extrn ExitProcess:proc         

extrn WinExec:proc

                              

.data                          

dd 0                          

                               

.code                         


ОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100