Защита процесса от инжекта.

Тема в разделе "WASM.NT.KERNEL", создана пользователем WaterGhost, 24 сен 2007.

  1. WaterGhost

    WaterGhost New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    130
    Не мог бы мне ктонить дать направление в какую сторону копать... Есть драйвер режима ядра. перехватывает NtOpenProcess, ZwWriteVirtualMemory. Как можно зная PID процесса защитить его от сторонних инжектов. Т.е. присоединений всяких родов ДЛЛ, но только тех что не стандартно грузятся.
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    при создании процесса парсить импорты исполняемого файла процесса и импорты всех библиотек кторые он грузит и составлять на основе этих данных некий список, это нужно для того, чтоб по факту выявить библиотеки которые при нормальных условиях не загрузились бы загрузчиком, далее ставить нофити на загрузку образа и чекать имя загружаемой библиотеки по вышеупомянутому списку
     
  3. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Инжект Р0 или Р3?
     
  4. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    а если приложение целиком и польностью полагается на explicit linking? т.е. на LoadLibrary/GetProcAddress
     
  5. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    WaterGhost
    Надёжно? никак. яж как то говорил, что на драйвер найдётся другой драйвер.
     
  6. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    значит это кривое приложение
     
  7. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    dead_body
    Ну конечно r3, в r0 от инжекта защититься действительно невозможно.
     
  8. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    эээ.. в hiew к примеру всего статически импортируется 4 функции
     
  9. WaterGhost

    WaterGhost New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    130
    Тут читал про детект инжекта OutPost'ом. Он разрешает записывать не более 15 байт я так понял ? Если больше 15 то ахтунг ? Я промониторил запуск процесса и вот что выяснил...
    Код (Text):
    1. процесс csrss.exe пишет при запуске проги 56 байт
    Брал значения байт

    NTSTATUS NtWriteVirtualMemory (
    IN HANDLE ProcessHandle,
    IN PVOID BaseAddress,
    IN PVOID Buffer,
    IN ULONG BufferLength, <------------------ <ТУТ>
    OUT PULONG ReturnLength OPTIONAL
    )

    и суммировал. Че получается... стоял бы у меня OutPost он бы csrss.exe за вирь принял бы ? =\

    Так и начал делать, пока не протестил запуск процесса на разных системах. Каждая система пишет разное кол-во байт и присоединяет немного другие библы. но в основном одно и то же. но все же различия есть. Как этого избежать ? =\ Просто их заблочить ? Пробовал... пишет ошибки и вылетает :dntknw:
     
  10. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    Ms-Rem:
    кроме того :
    кажется инфа устарела
     
  11. WaterGhost

    WaterGhost New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    130
    Мониторил и после запуска первой нити... намнооого больше чем 15 байт пишется. Нада найти универсальный метод =\
     
  12. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    WaterGhost
    аутпост обходиться в р3 как два пальца. Мс-Рем когда то писал на форуме куда надо копать, так что копайте. ;)
     
  13. WaterGhost

    WaterGhost New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    130
    Ну обойти то ято как 2а пальца сами знаете что сделать ))) Я имею ввиду как можно доработать эту защиту чтобы было не все так просто ...
     
  14. RedGate

    RedGate New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    42
    Видимо, случай записи из процесса-родителя и csrss нужно обрабатывать особо, а по окончанию процесса инициализации блокировать все способы inject'а даже из этих процессов, разрешая опасные действия только для защищаемого процесса (списки строить не надо). Хотя для полноценной защиты скорее всего поднадобится контроль целостности, а он не может корректно работать без вмешательства пользователя.
     
  15. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    RedGate


    Ага, ну создайте юзеру геморой.
     
  16. RedGate

    RedGate New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    42
    гм, ну, всегда есть выход, все делать в ring0, а для пущей важности запихнуть себя в BIOS/MBR, далее при загрузке запускать тот или иной гипервизор. но тогда уж проще вынести себя на болванку.

    хороший список antiinject-перехватов можно подсмотреть у некоторых AV/FW, пример - KIS.