Сокрытие процесов в windows xp/vista.

Тема в разделе "WASM.NT.KERNEL", создана пользователем eas7, 28 июл 2008.

  1. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    k3internal
    если тебе так уж не нравится присутствие dll-ки, то можно в dllmain переписать себя куда-нибудь в сторонку и FALSE вернуть.
    И драйвер, имхо, есть совсем неадекватное решение против "среднестатистический юзвер аля продвинутая бухгалтер тётя Надя"
     
  2. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Перехватывать терминацию процесса не резон: остается еще куча способов его прибить.
    Рекомендую произвести три действия по порядку:

    1. Если у приложения есть окно, то создать поток, который будет следить за его существованием и в случае чего либо перезапускать программу, либо переинициализировать все данные и пересоздавать это самое окно.
    2. Перехватить ZwOpenProcess и ZwOpenThread (всего две функции!) и запретить доступ абсолютно для всех процессов.
    3. Пробежаться по таблице хэндлов csrss и закрыть все хэндлы потоков и процессов, связанные с "подзащитным".

    Этого достаточно, чтобы не нарушить стабильность системы и не дать простому смертному закрыть твой процесс. Если говорить о более продвинутых техниках, то нужно учесть еще и всевозможные способы инжекта и методы передачи управления. Но вот от такого инжекта, к примеру, тебе не защититься.

    Ну почему же? Зато тётю Надю не будут беспокоить назойливые аверские поделки с их проактивками...

    ЗЫ: Тему, думаю, стоит от сюда перенести...
     
  3. 6FED

    6FED New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    42
    Ты сам то понял что написал? Это ядерные обертки, юзермод их не вызывает.

    k3internal
    Да коммунисты не ищут легких путей, это видно из твоего поста.

    Проблема то очень простая. Есть недалекие пользователи с таксманагерами, процессэкспорерами и подобным гуано. Задача - не дать себя ими убить менее чем среднестатистическим юзером. И только не надо бить себя в грудь и рассказывать сказки, что сейчас таскманагер использует страшные инжекты и вызовет неведомую функцию из-под ядра и грохнет процесс через таблицу хэндлов через PspTerminateThreadByPointer. Вы ребята сильно переплюнули задачу. Хотите кодить - факми (это вариант типа кракми, только задача - убить процесс) - вперед и с песней, Алисе то это нафига? Пока вы будите ипать мозги с инжектами, встраиванием кода в процесс (ну не факт женя, что это не запалиться каким-нибудь фаирволом в параноидальном режиме кстати) я проще напишу маленький драйвер с одним единственным хуком, выполняющим задачу на отлично и не имеющим никаких проблем с портом на висту, 2008 сервер как ваши дллки, отсылающие данные из контекста процесса на какой-то сайт.

    И получить кучу неприятностей под вистой. Начиная от просто глюков и заканчивая большими глюками с интерфейсом.

    Легко, у программы шпиона просто не будет окна.
     
  4. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Я прекрасно понял, что написал. Хочешь сказать, сюда в ядро ни когда не перейдет управление:
    Код (Text):
    1. .text:00406044 ; NTSTATUS __stdcall ZwOpenProcess(PHANDLE ProcessHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, PCLIENT_ID ClientId)
    2. .text:00406044                 public ZwOpenProcess
    3. .text:00406044 ZwOpenProcess   proc near               ; CODE XREF: PAGE:004DB7CEp
    4. .text:00406044
    5. .text:00406044 ProcessHandle   = dword ptr  4
    6. .text:00406044 DesiredAccess   = dword ptr  8
    7. .text:00406044 ObjectAttributes= dword ptr  0Ch
    8. .text:00406044 ClientId        = dword ptr  10h
    9. .text:00406044
    10. .text:00406044                 mov     eax, 7Ah
    11. .text:00406049                 lea     edx, [esp+4]
    12. .text:0040604D                 pushf
    13. .text:0040604E                 push    8
    14. .text:00406050                 call    loc_407631
    15. .text:00406055                 retn    10h
    16. .text:00406055 ZwOpenProcess   endp
    ?

    Ни каких глюков под вистой - проверено на sp0 и sp1. Не стоит писать о том, о чем только лишь рассуждаешь теоритически. Или уточняй - "мне кажется, что под Вистой будут глюки"...

    Ну да, это только в этом случае.
     
  5. 6FED

    6FED New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    42
    Да, никогда. Это стаб, вызывающий _KiSystemService, которая вызывает NtOpenProcess.
    А отличатся ZwOpenProcess от NtOpenProcess помимо всего остального будет PreviousMode потока со всеми вытекающими отсюда изменениями проверок и условий.

    CSRSS под вистой был изменен очень серьезно. Не веришь - посмотри как работает рку, а ведь он делает именно то что ты написал.
     
  6. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Ага. Запарился с преффиксами (все меня тянет почему-то на Zw), сорри - хучить надо Nt, а из хука вызывать Zw, чтоб было все нормально с PreviousMode.

    Еще раз - ни каких глюков из-за закрытия хэндлов в csrss нет - по крайней мере я по ходу активной работы с ОСью после их закрытия ни каких глюков не замечал. RkU бсодит под вистой в основном из-за хука SwapContext. Не помню, закрывает ли он хэндлы в csrss, но то, что дополнительно хучит NtDuplicateObject - это да.
     
  7. 6FED

    6FED New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    42
    Очень не рекомендую следовать твоему совету и закрывать хэндлы под вистой ;) Ну просто очень, также как не читать мс-ремовские статьи про перехват.
     
  8. 6FED

    6FED New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    42
    И теряет поддержку тем.

    Как раз нет. Бсодит он при снятии хуков NtOpenProcess, NtOpenThread, потому что они ставяться без моста, наживую и без учета мультипроцессорности. А все остальные хуки, включая KiSwapContext (учимся называть вещи своими именами) с учетом. Ах, чувствуется влияние мс-рема на ранние версии в которых эти два хука и были сделаны. %)
     
  9. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Ну так ты объясни популярно, чем конкретно это чревато, а не "будет много глюков"... ;) А то ведь практика показывает, что все как раз-таки наоборот.

    Ну новичкам, имхо, в самый раз понять основы. А так да - много бреда написано.

    Уверен, автор с удовольствием вообще бы избавился от окна в целях безопасности, да только консоль пахнет прошлым веком... :)
     
  10. GMax

    GMax Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    218
    так вроде новая версия (RkU 3.8 LE) вышла?
     
  11. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Не надо придираться. Я прекрасно знаю про Ki. Но если уж пошло дело, то сорцы w2k говорят о том, что истинная процедура, переворачивающая контекст, называется именно SwapContext. Смотри ctxswap.asm.

    Последняя на паблике - 3.7.300.509
     
  12. GMax

    GMax Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    218
    Rootkit Unhooker LE v3.8.340.550 (28.07.2008)
    http://forum.sysinternals.com/forum_posts.asp?TID=11269&PN=11
     
  13. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Я отстал от жизни. Впрочем, всего на один день. :)
    Хотя это не самая последняя по цифрам версия, которую я видел. ;)
     
  14. 6FED

    6FED New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    42
    Смотрю и вижу

    Потом смотрю код ядра и вижу везде KiSwapContext.

    Закрытие хэндлов черевато тем, что откажут (или начнут глючить) работать некоторые гуи компоненты :)

    Да кому надо килять антируткит, только полным даунам.

    Слил. Проблема с бсодом решена радикально - он больше не хучит своп (млин какая полезная фича у него - показать свои хуки с зажатым левым шифтом).
     
  15. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Странно. Сорцы какой винды ты смотришь?
    У меня от win2k - в файле ctxswap.asm вот такая писанина:
    А упоминания о KiSwapContext нет и подавно. Файл с таким названием всего один. Что за ерунда?

    Опять вода, ну ё-моё. Какие компоненты, по-твоему, откажут из-за того, что я закрыл хэндл процесса в csrss? Кстати, KAV выше пятой версии делает это. Я понимаю, что KAV не показатель, но скажи, какие гуи-компоненты из-за этого отказали?

    Эти хуки прекрасно видит тот же GMER, только не всегда правильно их идентифицирует.
     
  16. 6FED

    6FED New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    42
    Twister
    Твои сорцы устарели как и сама 2к. Я смотрю хп сп0. Могу любую другую вплоть до висты.

    опен диалог.

    кав - гамно и без этого

    гмер - не видит толком ни фуя. путает имена функций и иногда вообще не видит, 1.14.
     
  17. z_x_spectrum

    z_x_spectrum New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2007
    Сообщения:
    145
    Залей куда-нибудь...
     
  18. 6FED

    6FED New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    42
    z_x_spectrum
    Нифига ты наглый %)
     
  19. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    ну подскажи хоть где раздобыл
     
  20. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Собственно, есть простой путь - пусть "бухгалтер тетя Надя" живёт под учёткой простого пользователя, как оно в принципе и должно быть (админам контор где это не так - большой привет!). Тогда в качестве мониторинга пишется собственный сервис, который при желании не будет иметь своего процесса, а будет жить как dll внутри svchost.exe без лишнего палева и геморроя с сокрытием etc. Прав остановки сервиса у обычного пользователя нет, равно как и прав на загрузку драйверов для всяких Filemon'ов, ProcessExplorer'ов etc. dll положить в system32 дабы не привлекать лишнего внимания. А мутить защиту от пользователя с административными правами - дело неблагодарное...