Все ли программы, запущенные на компьютере, отображаются на вкладке процессов в диспетчере задач?

9818
itzjustricky

Причина, по которой я спрашиваю об этом, заключается в том, что мне любопытно, может ли на компьютере существовать вирус, и я бы никогда не узнал, существует ли он. Чтобы быть более конкретным, вирус, который не выделяет никаких признаков.

35

6 ответов на вопрос

49
Mokubai

There is a class of malware that can hide itself completely from the operating system known as a rootkit.

Rootkits are used to hide the evidence of other malware at work and are embedded very deeply in the operating system. Because of their deep embedding they are able to manipulate process lists, filesystem tables and other important structures on-the-fly.

By manipulating filesystem structures in memory they can return false or misleading results for directories, specifically not showing files related to the main malware itself. The files are there, and booting into an uninfected operating system such as a Linux LiveCD will show the files though, as they have to be stored somewhere.

Similarly, rootkits can simply drop certain processes from being reported to programs such as the Task Manager. The operating system core knows about them, as it needs to in order to schedule them, it has just been blocked from letting the outside world know about them.

Очень хорошо написанный ответ. Спасибо. trejder 10 лет назад 1
Мне интересно, как они достигают этого подвига? Похоже, что-то, что Windows не должна допустить в первую очередь. Я имею в виду, что даже «процесс показа от всех пользователей» меньше «скрывает» и больше «классифицирует» Raestloz 10 лет назад 1
@Raestloz: они достигают подвига, получая root-доступ, а затем переписывают Windows, чтобы удалить биты, которые его запрещают. Я слышал, что некоторые из них делают это, «загружая» руткит как ОС, изменяя Windows, а затем запускают Windows, так что ни пользователь, ни Windows не подозревают, что что-то необычное. Mooing Duck 10 лет назад 2
ну черт, может кто-то должен изобрести антивирус, работающий на BIOS LOL Raestloz 10 лет назад 3
@Raestloz [flippant] * NIX примерно настолько близок, насколько это возможно. [/ Flippant] Agi Hammerthief 10 лет назад 0
@MooingDuck Итак, теоретически безвредным (?) Центром обновления Windows «Windows необходимо перезагрузить компьютер для установки обновлений» может быть руткит, желающий установить себя после перезагрузки компьютера? cybermonkey 10 лет назад 0
@zyboxenterprises Реальные обновления Windows подписаны и не могут быть подделаны, но вы можете подделать только диалог запроса перезапуска, или заставить пользователя перезапустить любым другим способом, или принудительно перезапустить (`shutdown -r -t 0`, привилегии не требуются) или просто подождите, пока пользователь перезагрузится. gronostaj 10 лет назад 1
@Raestloz Это не работа для BIOS, а для независимого от ОС антивируса: http://www.livecdlist.com/purpose/windows-antivirus gronostaj 10 лет назад 0
@gronostaj Значит, часть моего ответа «Центр обновления Windows» недействительна? Должен ли я удалить эту часть? cybermonkey 10 лет назад 0
@zyboxenterprises Может быть, а может и нет;) [Flame] (https://en.wikipedia.org/wiki/Flame_ (вредоносное ПО)) воспользовался Центром обновления Windows для своих собственных целей, подделав сертификат, но эта уязвимость уже исправлена. Публично известных подвигов WU нет, но это не значит, что их не существует. Тот, что использовал Flame, тоже не был известен. (см. [0-дневная атака] (https://en.wikipedia.org/wiki/Zero-day_attack) gronostaj 10 лет назад 4
@gronostaj В каждой программе всегда есть уязвимости, и они всегда будут. Это просто вопрос времени, пока кто-то еще не найдет другой эксплойт WU. cybermonkey 10 лет назад 0
16
Ángel

Там появятся все нормальные программы, но ...

  • без учетной записи администратора вы сможете видеть только свой собственный процесс (учетные записи администратора могут выбрать просмотр всех процессов)
  • руткиты будут пытаться скрыть свое существование, скрывая свой процесс из списка, скомпрометируя диспетчер задач (чтобы он его не отображал), прячась в адресном пространстве другого процесса ...
  • сервисы будут работать как потоки в svchostпроцессе (в большинстве случаев), поэтому нет простого момента, когда сервис запускается в данном экземпляре svchost.

Есть несколько программ, предназначенных для обнаружения руткитов. Они делают это, проверяя, например, список потоков, запрограммированных для выполнения, и список процессов в системе (поток, не принадлежащий какому-либо процессу, является признаком скрытого процесса), или список файлов, видимых на высоком уровне, и сравнивая его с файлами, которые он читает вручную с раздела диска.

Тем не менее, после заражения вирус может скрыть свое присутствие настолько хорошо, что его почти невозможно обнаружить. Обычно их называют APT (постоянная постоянная угроза).

Некоторые из этих пунктов несколько аннулированы Sysinternals [Process Explorer] (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) - ограниченные пользователи могут видеть имена файлов процессов, запущенных другим пользователем, и всплывающие подсказки svchosts показывают, что они размещают. kirb 10 лет назад 2
Вы хотели написать «угроза» или «нить»? Это на самом деле работает там;) Konerak 10 лет назад 0
Как детектор руткитов перечисляет потоки или процессы? Если это типичный способ / WinAPI, не может ли руткит манипулировать перечислением, и детектор руткитов не заметит этого? Ray Koopa 10 лет назад 0
@DebugErr, они смотрят на высокоуровневый и низкоуровневый, а затем сообщают о различиях (иногда выдают ложные срабатывания, например, когда файл был изменен между ними). Проверяя список потоков, запрограммированных на выполнение, я ссылался на двойной связанный список, используемый планировщиком ОС, т.е. полностью низкоуровневый: если его там нет, он не получает временной интервал (хотя есть еще места для проверки, например, ISR). Ángel 10 лет назад 1
5
Crippledsmurf

Фон

Операционная система имеет компонент, известный как ядро. Одна из (многих) обязанностей ядра - управлять системной памятью (как физической, так и виртуальной).

Как часть этого, ядро ​​разделяет доступную память на две отдельные области, известные как режим пользователя и режим ядра. Ядро и драйверы совместно используют память режима ядра, а пользовательские программы и менее важные системные компоненты находятся в области памяти режима пользователя.

Процессы в пользовательском режиме обычно не могут обмениваться данными с процессами в режиме ядра, кроме как по специально назначенным и контролируемым каналам.

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

Процессы

Ядро предоставляет возможность запуска процессов в пользовательском режиме. Когда процесс создан, он добавляется во внутренний список процессов, которые существуют в настоящее время. Когда такая программа, как диспетчер задач, запрашивает список процессов, она получает подмножество информации в этом списке, отфильтрованное по разрешениям пользователя.

Один из способов, позволяющий вредоносным программам, таким как руткит, скрыть свое существование, - это непосредственно удалить себя из этой таблицы. Сделав это, он все еще может выполняться, но больше не будет отображаться в списке процессов, получаемых обычными средствами.

Поскольку эти процессы на самом деле все еще существуют и выполняются, их можно найти путем проверки других структур данных ядра, таких как таблицы дескрипторов, которые содержат информацию о ресурсах, открытых у процесса (например, файлы), или путем изучения распределения памяти, из которого он более трудно спрятать, не мешая программному обеспечению функционировать.

Драйверы режима ядра

Драйверы режима ядра используются для многих целей, включая взаимодействие с физическими аппаратными устройствами. Они выполняются под контролем ядра по мере необходимости, но, поскольку они не являются процессом пользовательского режима, они не отображаются в таблице процессов. и, следовательно, не будет отображаться в диспетчере задач или других инструментах, связанных исключительно с процессами.

Возможность запуска кода в режиме ядра является важным шагом к возможности эффективно скрывать существование исполняемого кода. При нормальных обстоятельствах Windows требует, чтобы код в режиме ядра был подписан для запуска, поэтому вредоносным программам, возможно, придется использовать эксплойты в операционной системе, другом программном обеспечении или даже социальной инженерии, чтобы попасть сюда, но как только код выполняется в режиме ядра, скрывается становится легче.

Резюме

Таким образом, можно скрыть свидетельство существования процесса, вероятно, всегда будет какой-то признак того, что процесс существует, потому что обычно ему всегда нужно будет использовать какую-то форму ресурса, чтобы делать то, для чего он предназначен, насколько сложно это обнаружение зависит от конкретной вредоносной программы.

3
Rsya Studios

Viruses are pretty sophisticated nowadays. There can be a virus on your computer but not showing up in Task Manager. It is possible for Task Manager (and other parts of the operating system) to themselves be compromised, thus hiding the virus. For example, a rootkit.

If you're planning on relying on Task Manager to check for viruses, then you should stop now. Install an antivirus, and even an antivirus will sometimes fail to detect a virus on your PC.

0
Pavel

Есть еще один простой способ «спрятать вирус» от других, уже хорошо объясненных в других ответах:

Скомпрометированная DLL (динамически связанная библиотека)

Большинству программ - почти всем нетривиальным - для запуска требуется одна или несколько библиотек DLL. Некоторые принадлежат самой ОС (например, hal.dll, которая абстрагирует аппаратный доступ для Windows), некоторые используются только одной программой, которая разбита на более мелкие части (один .exe-файл и несколько .dll-файлов с основными функциями, плагины и т. д.) Ваш вирус не запускается постоянно, как обычный процесс или служба, но его действительно будет очень сложно найти, поскольку он будет выглядеть как совершенно невинная программа или программный компонент.

Дальнейшее чтение: http://msitpros.com/?p=2012


И есть одна вещь, очень привлекательная для такого рода вирусов: существует множество веб-сайтов, предлагающих бесплатную (не требующую оплаты) загрузку DLL-файлов, которые по той или иной причине могут пропасть на вашем компьютере. Поскольку возможность сравнения контрольных сумм исходного и нового .dll-файлов очень ограничена и почти никого не волнует, dll-вирусы могут входить и оставаться в системе в течение длительного времени незамеченными (если, конечно, антивирусная программа не обнаружит их и пользователь соглашается с удалением - вы уже видите шаблон).

Из вопроса, который я понимаю, мы говорим о Windows здесь, но этот метод вполне может быть применим и к другим ОС.

0
cybermonkey

TL; DR: диспетчер задач Windows довольно ограничен в том, что он может делать, и он * не будет показывать каждый процесс, запущенный в вашей системе. Хотите доказательства? Подсчитайте (примерно) объем оперативной памяти, который используют процессы, показанные в диспетчере задач, и сравните его с использованием оперативной памяти системы; у вас должно быть не менее 100 МБ ОЗУ, а иногда оно увеличивается до 1 ГБ, в зависимости от того, для чего вы используете систему. Видеокарты также могут забирать некоторую память из ОЗУ вместе с собственной ОЗУ GDDR. *

Чтобы расширить ответ Павла Петмана, я мог бы добавить, что многие изощренные чит-движки для игр полагаются на внедрение кода в игровые DLL, которые включают их читы.

Этот тип компромисса довольно трудно обнаружить, и в этом вопросе может быть применена та же методика. Например, если вирус хочет остаться незамеченным, он может представлять собой обновление Windows того типа, который извлекается из системных каталогов, вирус может перезаписать критический системный файл. Большинство антивирусных программ не обнаруживают этот тип вируса, то есть вирус может впрыскивать код вируса в критически важные библиотеки Windows DLL (а также .exes).

Когда мой клиент рассказывает о необычном поведении, я всегда запускаю Process Explorer (скачать от Microsoft), чтобы обнаружить любой запущенный вирус. Process Explorer может точно сказать, какие процессы запущены (даже те, которые отсутствуют в диспетчере задач), а также какие модули DLL они используют.