срыв стека SP2

Тема в разделе "WASM.RESEARCH", создана пользователем zag2art, 13 ноя 2005.

  1. zag2art

    zag2art New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2005
    Сообщения:
    40
    так, что там с защитой стека в SP2+, и какие существуют методы обхода этой защиты...

    актуальна ли сейчас вобще эта проблема, а то я что-то слышал, что защита работает только на AMD 64...

    Кучу инфы накачал, но хотелось бы в двух словах для линейки x86...
     
  2. YoungBastard

    YoungBastard New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2005
    Сообщения:
    231
    Адрес:
    Russia
    =)))

    защита работает!
     
  3. zag2art

    zag2art New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2005
    Сообщения:
    40
    Как реализуется проверка целостности стека?

    Из этой ли темы: "проверка маркера (cookie)" и DEP?
     
  4. zag2art

    zag2art New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2005
    Сообщения:
    40
    тут нашел замечательную доку, правдо на английском

    Defeating the Stack Based Buffer Overflow Prevention Mechanism of Microsoft Windows 2003 Server

    сразу возникло несколько вопросов...

    1 я так понимаю защита стека при помощи маркеров - это прирогатива компилятора, то-есть ранее написаные программы так и остаются незащищенными... И это как я понимаю должно означать, что обычное переполнение буфера написаное для XP SP1 должно работать и на SP2?

    2 дока по Винде 2003, а так ли обстоят дела и в XP SP2?

    3 я как-то натыкался на какую-то русскую доку в сети по по использованию seh для обхода защиты от срыва стека... может кто ссылочку даст, а то уже второй день ищу не как найти не могу...???
     
  5. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    Я думаю что ситуации когда возможен срыв стека - это сутуации непохожи на наводнения и ураганы. Срыв стека возможен только при наличии ошибок в программе, например отсутствие проверки размера буфера, выделяемого под локальные переменные.

    Предлагаю свои варианты ответов.

    1) всякие маркеры и seh естественно добавляет компилятор, в высокоуровневых языках, но никто не запрещает тебя все это делать вручную.



    что обычное переполнение буфера написаное для XP SP1 должно работать и на SP2?

    непонимаю это про что?



    2) самая надежная защита для всех виндов - это прямые у руки программеров



    3) seh используют не для обхода защиты, а используют для собственно реализации этого переполнения. Подбираются данные так чтобы перезаписались данные SEH которые находятся в стеке. При затирании seh на место где находится адрес обработчика исключения должен попасть нужный тебе адрес.
     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    zag2art

    Ищи "DEP" по форуму - было несколько тем
     
  7. zag2art

    zag2art New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2005
    Сообщения:
    40
    bober

    >>что обычное переполнение буфера написаное для XP SP1 >>должно работать и на SP2?

    >непонимаю это про что?

    А вот про что: я написал небольшой эксплоит переполнения буфера для обычной программки (Tales Chat), которая компилилась до SP2, следовательно никаких маркеров стека там нет, но эксплоит не работает на SP2...

    Отсюда и главный ворос: почему это так...?

    Щас ставлю SP2 на виртуальную машину, буду тестить там, но для начала хотелось бы поднабраться теоретических знаний...

    Возник еще один вопрос:

    XP SP2 сегмент стека только для записи чтения (неисполняемый)?
     
  8. zag2art

    zag2art New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2005
    Сообщения:
    40
    leo

    в очередной раз спасибо все вопросы отпадают
     
  9. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    zag2art



    которая компилилась до SP2, следовательно никаких маркеров стека там нет,

    А как компилятору указывать под какой сервиспак компилировать? Попробуй откомпилировать в виртуальной машине может все заработает.
     
  10. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    я всегда считал что установка маркеров зависит только от клмпилятора и его опций. Т.е. если использовался последний компилятор то и маркеры там будут вне зависимости от наличия/отсутствия SP2 на машине разработчика
     
  11. zag2art

    zag2art New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2005
    Сообщения:
    40
    bober, infern0

    прошу прощения за выражение: "которая компилилась до SP2", естественно все зависит от компилятора, а не как не от версии SP или винды :)

    Я, как говориться, блуждал в темноте.

    Маркеры которые я имел ввиду - это



    "An Overview of Windows 2003 Stack Protection Windows 2003 Server was designed to be secure out of the box. As part of the security in depth model adopted by Microsoft for their latest Windows version a new stack protection mechanism was incorporated into their compiler that was intended to help mitigate the risk posed by stack based buffer overflow vulnerabilities by attempting to prevent their exploitation. Technically similar to Crispin Cowan's StackGuard, the Microsoft mechanism places a security cookie (or canary) on the stack in front of the saved return address when a function is called. If a buffer local to that function is overflowed then, on the way to overwriting the saved return address, the cookie is also overwritten. Before the function returns the cookie is checked against an authoritative version of the cookie stored in the .data section of the module where the function resides. If the cookies do not match then it is assumed that the buffer has been overflowed and the process is stopped. This security mechanism is provided by Visual Studio .NET - specifically the GS flag which is turned on by default."



    видите заголовок "Описание механизма переполнения стека в 2003"

    Именно это меня и запутало, и именно поэтому я спрашивал как так-ли обстоят дела в XP SP2. Мне стало очевидно, что в этой статье описываются способы, если взять по максимуму, обхода "вообще любого" механизма с маркерами, по средствам использования seh. И именно специфичного использования seh в 2003 винде...

    Больше вопросов пока не будет, пока поизучаю все что накочал и то, что посоветовал leo...