Поиск скрытых процессов, статья Ms-Rem

Тема в разделе "WASM.HEAP", создана пользователем soveren, 23 мар 2008.

Статус темы:
Закрыта.
  1. soveren

    soveren Дмитрий Петерсон

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    94
    Адрес:
    Россия
    Добрый день.
    Прочитал статью Ms-Rem "Поиск скрытых процессов". В ней довольно подробно расписаны методы получения списков процессов, однако у меня есть вопрос, возможно кто-нибудь здесь с этим сталкивался. Отсечем поиск процессов в UserLand и с использованием функций API. Двухсвязный список EPROCESS тоже не интересно. Поиск сканированием таблицы хэндлов и списков планировщика, перехвата sysenter, swapcontext выглядят достаточно надежными в плане обнаружения скрытых процессов но все они основаны на анализе значений ETHREAD указывающих на EPROCESS (как я понимаю ThreadsProcess и возможно KAPC_STATE->Process, в статье не указано может плохо читал? :) Вот и сам вопрос. Если я уберу процесс из всех возможных списков, включая планировщик (повесив поток на собственный обработчик, перехватив прерывание) то получается, что все этим методы не смогут ничего сделать. Если ли у кого-нибудь идеи как организовать поиск при подобной методике скрытия? Вот что я нашел в гугле :) Есть какие-то неизвестные способы чтения списка процессов из клиент-сервер процесса (не имеется в виду сканирование хэндлов типа Process, Thread), установка программ - нотификаторы на старт процесса, перехваты в таблице сервисов. Все это как-то не очень надежно мягко говоря.
    Если у кого есть идеи пожалуйста поделитесь, спасибо.
     
  2. sww_

    sww_ New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2007
    Сообщения:
    155
    Сканирование всей памяти и поиск нужной структуры.
     
  3. soveren

    soveren Дмитрий Петерсон

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    94
    Адрес:
    Россия
    Ах да, перебор, но вам не кажется, что это чересчур опасный и легкий в плане обхода метод? Возможно есть какие нибудь дополнительные поля в различных структурах из которых можно получить ETHREAD->EPROCESS?
     
  4. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    в этом мире нет ничего абсолютно надежного ...
     
  5. soveren

    soveren Дмитрий Петерсон

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    94
    Адрес:
    Россия
    Почему же? Процесс это довольно большой и громоздкий объект. Скрыть его полностью от самой системы просто невозможно :)
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Можно проще, просто перехватить какуюнибудь функцию, которая юзается из SwapContext например в hal.
     
  7. sww_

    sww_ New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2007
    Сообщения:
    155
    Дело в том, что сам объект процесс в большинстве случаев просто нафиг не нужен. По-моему просто ГЛУПО прятать процессы.

    Насчет опасного способа: в чем опасность? Обходится да, не скажу что сложно.
     
  8. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    Просто глупо СОЗДАВАТЬ процесс.
    Смысл его создавать, чтобы потом прятать?
     
  9. sww_

    sww_ New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2007
    Сообщения:
    155
    zoool
    Yeap, достаточно потоков ;)

    Offtop: что-то мне на подписанную тему в почту нифига не приходит :dntknw:
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    sww_ прав. Зачем процесс, если выполнить код можно в другом, или вообже не в процессе ?
     
  11. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    А где можно выполнить код не в процессе кроме как в системном потоке ядра?
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    А к примеру аппаратное прерывание в каком потоке выполняется ?
     
  13. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    в прерваном
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Оно не выполняется в контексте потока.
     
  15. soveren

    soveren Дмитрий Петерсон

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    94
    Адрес:
    Россия
    Вы невнимательно читали мое первое сообщение. Дело в том что, вы не сможете определить кому принадлежит свопящийся поток, так как в объекте ETHREAD есть только два поля однозначно указывающих на объект EPROCESS. И оба достаточно легко подменяются.
    Я понимаю, что это глупо и овчинка выделки не стоит. Но я ведь не писал, "как мне спрятать процесс". Мне всего лишь интересно существуют ли другие референсы на EPROCESS в ETHREAD, возможно через вложенные структуры (как например референс на ETHREAD в IRP) или референсы на EPROCESS в самой структуре EPROCESS, кроме ActiveProcessLinks.
    Если ваше приложение попытается сделать KeAttachProcess для неправильно определенного EPROCESS а такую возможность исключать нельзя то система вывалится в синий экран, тоже самое при попытке работы с некоторыми полями. Обходится это также довольно легко - чем сложнее будет критерий отбора, тем проще будет его скомпроментировать.
    Меня не интересуют вопросы зачем, с какой стати и почему.
     
  16. sww_

    sww_ New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2007
    Сообщения:
    155
    Как то я сомневаюсь, эти структуры уже вдоль и поперек перелопатили. Плясать все-таки надо от потоков.

    Да, согласен, при ложном определении самой структуры и аттаче к ней будет скорее всего БСОД. Насчет обходится могу сказать лишь одно: не бывает 100%-х-способов.
     
  17. soveren

    soveren Дмитрий Петерсон

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    94
    Адрес:
    Россия
    Я с вами полностью согласен. Возможно мы просто не видим очевидное :)
    Стопроцентный синий экран при атаче к неверно определенному EPROCESS, я полагаю вы знаете как реализован KeStackAttachProcess ;) Стопроцентных способов не бывает, но если есть способы хотя бы 98% это уже отлично.
     
  18. sww_

    sww_ New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2007
    Сообщения:
    155
    Даже если и увидим, то лучше молчать и способ не реализовывать ;) Сами понимаете почему.
     
  19. soveren

    soveren Дмитрий Петерсон

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    94
    Адрес:
    Россия
    Но может быть, если вы боитесь говорить об этом на публике, вы пошлете мне пм? Мне кажется, вы что-то скрываете :)
     
  20. sww_

    sww_ New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2007
    Сообщения:
    155
    Пожалуй что я не буду расшаривать информацию, как подозреваю конкурентам ;)
     
Статус темы:
Закрыта.