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

Discussion in 'WASM.NT.KERNEL' started by WaterGhost, Sep 24, 2007.

  1. WaterGhost

    WaterGhost New Member

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

    Cr4sh New Member

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

    dead_body wasm.ru

    Blog Posts:
    0
    Joined:
    Sep 3, 2004
    Messages:
    603
    Location:
    Украина;г.Харьков;г.Н.Каховка
    Инжект Р0 или Р3?
     
  4. rain

    rain New Member

    Blog Posts:
    0
    Joined:
    Apr 22, 2006
    Messages:
    976
    а если приложение целиком и польностью полагается на explicit linking? т.е. на LoadLibrary/GetProcAddress
     
  5. k3internal

    k3internal New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    607
    WaterGhost
    Надёжно? никак. яж как то говорил, что на драйвер найдётся другой драйвер.
     
  6. Cr4sh

    Cr4sh New Member

    Blog Posts:
    0
    Joined:
    Apr 17, 2006
    Messages:
    668
    значит это кривое приложение
     
  7. Mental_Mirror

    Mental_Mirror New Member

    Blog Posts:
    0
    Joined:
    May 7, 2007
    Messages:
    431
    dead_body
    Ну конечно r3, в r0 от инжекта защититься действительно невозможно.
     
  8. rain

    rain New Member

    Blog Posts:
    0
    Joined:
    Apr 22, 2006
    Messages:
    976
    эээ.. в hiew к примеру всего статически импортируется 4 функции
     
  9. WaterGhost

    WaterGhost New Member

    Blog Posts:
    0
    Joined:
    Jun 15, 2007
    Messages:
    130
    Тут читал про детект инжекта OutPost'ом. Он разрешает записывать не более 15 байт я так понял ? Если больше 15 то ахтунг ? Я промониторил запуск процесса и вот что выяснил...
    Code (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

    Blog Posts:
    0
    Joined:
    Apr 22, 2006
    Messages:
    976
    Ms-Rem:
    кроме того :
    кажется инфа устарела
     
  11. WaterGhost

    WaterGhost New Member

    Blog Posts:
    0
    Joined:
    Jun 15, 2007
    Messages:
    130
    Мониторил и после запуска первой нити... намнооого больше чем 15 байт пишется. Нада найти универсальный метод =\
     
  12. dead_body

    dead_body wasm.ru

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

    WaterGhost New Member

    Blog Posts:
    0
    Joined:
    Jun 15, 2007
    Messages:
    130
    Ну обойти то ято как 2а пальца сами знаете что сделать ))) Я имею ввиду как можно доработать эту защиту чтобы было не все так просто ...
     
  14. RedGate

    RedGate New Member

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

    k3internal New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    607
    RedGate


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

    RedGate New Member

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

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