"Самозащита" программы

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

  1. Kondratyuk

    Kondratyuk New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    6
    Вызов каких Native-API функций нужно контролировать для создания более-менее эффективной самозащиты процесса?
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    NtOpenProcess
    NtTerminateProcess
    NtQueryInformationProcess
    NtRemoveProcessDebug
    NtSetInformationProcess
    NtSuspendProcess
    NtWriteVirtualMemory
    и соответстующие функции с префиксами Zw*
     
  3. Kondratyuk

    Kondratyuk New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    6
    Огромное спасибо, что откликнулся, я кое-что из этого не учел. Читал API-HOOK от Ms-Rem, где он убивал Каспера через функции отладки DbgUiDebugActiveProcess, DbgUiConnectToDbg. Если ты что-нибудь слышал об этом, пожалуйста, просвети.
     
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Эти функции нужны для включения отладки. С их помощью можно процесс завершить, что многие "киллеры" и делают. Процесс нормально ставится под отладку, но при снимании отладки процесс уничтожается.
    О них я действительно забыл.
     
  5. Kondratyuk

    Kondratyuk New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    6
    Ну, теперь, похоже, все встает на свои места. Непонятно только одно, как фильтровать обращения к функциям так, чтобы система при выключении смогла завершить процесс или получить необходимую информацию. Определить, в контексте какого процесса происходит вызов легко, затем найти путь к файлу, имя и т.д. Но каким процессам стоит разрешить доступ к объекту процесса и как их надежно идентифицировать? Заранее
    спасибо за помощь.
     
  6. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    winlogon.exe
    csrss.exe
    smss.exe
    system
    с одной стороны они безопасны, но если будут уничтожать твой процесс из драйвера, то такой запрос тоже пройдёт, виной будет system. но ему можно и не разрешать доступ. Также могут приинжектиться, тогда любой процесс может быть виноватым.
    если не секрет, что за прогу пишешь?
     
  7. Kondratyuk

    Kondratyuk New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    6
    Если мой процесс будут уничтожать из режима ядра, боюсь, мне уже никакая самозащита не поможет. Здесь можно только защититься от процессов пользовательского режима и поставить хоть какие-нибудь ловушки против примитивных "киллеров" режима ядра. Самозащиту пишу для разных прог на будущее, хочу разработать более-менее эффективный модуль. Кроме того, меня напрягли участвовать в конференции по программированию с темой загрузки драйвера DOS на ходу, но, по-моему, это несолидно. Лажать как-то не хочется, поэтому взял такую тему, по-моему, нормально для 2 курса.
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    ну тогда приведённый мной список процессов действителен.
    хотя я не понимаю, зачем вообще такую проверку делать: когда система завершает работу, она принудительно глушит все процессы. Так что о системе забудь - она сама обо всём позаботится.
    А ты где учишься? (хотя бы город)
     
  9. Kondratyuk

    Kondratyuk New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    6
    Донецкий национальный технический университет. Что касается проверки, то я не уверен, что система действительно глушит все процессы принудительно. И если обламывать все процессы, может ли возникнуть ситуация, что система некорректно воспримет "мороз" моего процесса?
     
  10. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    при завершении она работает именно принудительно.

    почти рядом - я в ХНУРЭ
     
  11. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Sorry за оффтоп, а из Донецкого университета управления есть кто-нибудь? :)
     
  12. Slavic

    Slavic New Member

    Публикаций:
    0
    Регистрация:
    11 май 2007
    Сообщения:
    14
    К стати, почему ProcessExplorer не видит ни одного потока в процессе Касперского (Internet Security 6). Какие функции нужно контролировать, чтобы добиться такого эффекта?
     
  13. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    защита от прибивания?
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Еще обязательно перехватывай NtSystemDebugControl.
     
  15. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Касперский перехватывает обращение к соответствующим Nt* и Zw* функциям. (NtOpenProcess не возвращает действительного хендла службы каспера и его гуи-оболочки.)
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    скорее всего ZwQuerySystemInformation не возвращает список потоков для процесса каспера. хотя хз, может и даже открыть не дает :)
     
  17. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    именно!
     
  18. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    злодей :P
     
  19. pushick

    pushick New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2007
    Сообщения:
    95
    + NtDuplicateObject
    + NtWriteVirtualMemory

    А вообще проще его спрятать.
     
  20. Slavic

    Slavic New Member

    Публикаций:
    0
    Регистрация:
    11 май 2007
    Сообщения:
    14
    По-моему, прятать процесс гораздо надежнее, но не совсем корректно. Пользователь должен знать, что защищенная программа работает, и видеть ее. Иначе это уже троян какой-то.