война с Dep

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by spider-intruder, 15 Jul 2008.

  1. spider-intruder

    spider-intruder Elder - Старейшина

    Joined:
    9 Dec 2005
    Messages:
    700
    Likes Received:
    339
    Reputations:
    37
    Может кому то будет интересно:

    Писал сплайсинг апи. Написал. На работе работает дома хер. Отправил друзьям - у всех работает. После долгих разбирательст оказалось что мой процесор дома в ноуте поддерживает DEP (аппаратно)

    Ошибка заключалась в том, что память, выделяемая для создания "моста", создавалась с параметром RW и никак не хотела становиться X - даже при явном задании параметров при помощи VirtualProtect.
    ((Параметр X, однако, удается назначить в Oly для этой паги и код успешно выполняется даже при DEP))
    В итоге свою проблему я решил простым методом - я создал свою собственную кучу которой назначил нужные права и все заработало - DEP контролирует только то что создано стандартным методом :)

    В итоге:

    unsigned char* _MyFunc =(unsigned char*) malloc(25);

    превраилось в:


    _heap = HeapCreate(0x00040000, 25, 25);
    _memo = HeapAlloc(_heap, 0, 25);
    unsigned char* _MyFunc =(unsigned char*) _memo;

    ЗЫ:
    прочитал еще одну интересную вешь:
    Всем известна плохая совместимость Висты с программным обеспечением, написанным до нее — однако, для популярных защитных пакетов
    (ASPack, Start Force) в NTDLL.DLL была оставлена специальная «нычка», распознающая запро-
    текченные файлы и молчаливо отключающая защитные механизмы Висты, препятствующие их функционированию. Опознание происходит по именам секций PE файла, и, если это '.sforce', '.pcle'
    или '.aspack', файл автоматически получает «иммунитет». Сброс поля COFF-заголовка «characteristics» в 010Eh (210E для динамичес-
    ких библиотек) также отключает множество защит (даже тех, что еще не появились на свет), причем
    SFC (система автоматической проверки целостности системных файлов) не контролирует поле
    «characteristics» и потому отключение защиты можно осуществлять даже для системных файлов:
    exe, dll, ocx. Естественно, удаленно
    этого не сделать и для реализации
    атаки необходимо найти дыру в
    каком-нибудь приложении, но актуальности угрозы это не снижает.
    (с) _xakep.ru кто то там
     
    1 person likes this.
  2. spider-intruder

    spider-intruder Elder - Старейшина

    Joined:
    9 Dec 2005
    Messages:
    700
    Likes Received:
    339
    Reputations:
    37
    Ну раз я уже начал про DEP, давайте рассмотрим все варианты :)

    Пожалуй понятие DEP подробнее чем ТУТ я врядли опишу.

    Для отключения DEP (программно) можно изменить ключ в boot.ini на


    /NOEXECUTE=OPTIN - контролировать только системные файлы. Ваше ПО будет игнорироваться DEP-ом

    или

    /NOEXECUTE=ALWAYSOFF - Отключение DEP

    Правда изменения вступят в силу после перезагрузки.


    Если в в boot.ini стоит:
    /NOEXECUTE=OPTOUT - использовать контроль DEP для всех программ, то можно добавить ваше ПО в исключение тут: "Система->Дополнительно->Быстродействие->Параметры->Предотвращение выполнения данных"

    либо программно тут:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

    необходимо создать строковый параметр: полный путь + имя вашего exe файла и присвоить ему значение
    DisableNXShowUI
     
  3. spider-intruder

    spider-intruder Elder - Старейшина

    Joined:
    9 Dec 2005
    Messages:
    700
    Likes Received:
    339
    Reputations:
    37
    классическая атака на DEP:
    _http://www.mastropaolo.com/2005/06/04/buffer-overflow-attacks-bypassing-dep-nxxd-bits-part-1/
     
    #3 spider-intruder, 15 Jul 2008
    Last edited: 15 Jul 2008