计算机中运行的所有程序是否都显示在任务管理器的进程选项卡中?

itz*_*cky 35 windows virus anti-theft

我问这个的原因是因为我很好奇计算机中是否可能存在病毒而我永远无法知道它的存在。更具体地说,是一种不发出任何迹象的病毒。

Mok*_*bai 49

有一类恶意软件可以将自己完全隐藏在操作系统中,称为rootkit

Rootkit 用于隐藏其他恶意软件在工作中的证据,并且非常深入地嵌入到操作系统中。由于它们的深度嵌入,它们能够即时操作进程列表、文件系统表和其他重要结构。

通过操纵内存中的文件系统结构,他们可以返回错误或误导性的目录结果,特别是不显示与主要恶意软件本身相关的文件。文件就在那里,启动到未受感染的操作系统(例如 Linux LiveCD)时会显示这些文件,因为它们必须存储在某个地方。

类似地,rootkit 可以简单地将某些进程从报告给任务管理器等程序中删除。操作系统核心知道它们,因为它需要为了调度它们,它刚刚被阻止让外界知道它们。

  • @zyboxenterprises 也许,也许不是;) [Flame](https://en.wikipedia.org/wiki/Flame_(malware)) 通过伪造证书为自己的目的利用 Windows 更新,但该漏洞已经被修补。没有公开的 WU 漏洞利用,但这并不意味着不存在。Flame 使用的那个以前也不为人所知。(见[0天攻击](https://en.wikipedia.org/wiki/Zero-day_attack) (5认同)
  • 好吧,也许有人应该发明一种在 BIOS 上运行的防病毒软件,哈哈 (3认同)
  • @Raestloz:他们通过获得 root 访问权限然后重写 Windows 以删除不允许它的位来实现这一壮举。我_听说_他们中的一些人通过“引导”到作为操作系统的 rootkit,更改 Windows,然后运行 ​​Windows 来做到这一点,因此用户和 Windows 都不知道有什么异常。 (2认同)

Áng*_*gel 16

所有正常的程序都会出现在那里,但是...

  • 如果没有管理员帐户,您将只能看到自己的进程(管理员帐户可以选择查看每个人的进程)
  • rootkits 会试图通过从列表中隐藏其进程来隐藏它的存在,破坏任务管理器(因此它不会显示他),隐藏在另一个进程地址空间中......
  • 服务将作为svchost进程下的线程运行(在大多数情况下),因此在给定的 svchost 实例下运行服务并不容易。

有一些程序设计用于检测rootkit。他们通过检查例如为执行而编程的线程列表和系统中的进程列表(不属于任何进程的线程是隐藏进程的标志)或在高级别的文件列表中检查,并将其与从磁盘分区手动读取的文件进行比较。

尽管如此,一旦您被感染,病毒就有可能隐藏它的存在,以至于几乎不可能被发现。这些通常被称为APT(高级持续威胁)。

  • 其中一些要点被 Sysinternals [Process Explorer](http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) 无效 - 受限用户可以看到另一个用户运行的进程的文件名,并且svchosts 的工具提示列出了它们托管的内容。 (2认同)

Cri*_*urf 5

背景

操作系统有一个称为内核的组件。内核的(许多)职责之一是管理系统内存(物理和虚拟)。

作为执行此操作的一部分,内核将可用内存拆分为两个不同的区域,称为用户模式和内核模式。内核和驱动程序共享内核模式内存,用户程序和不太重要的系统组件驻留在用户模式内存区域。

用户模式下的进程通常不能与内核模式下的进程进行通信,除非通过专门指定和控制的通道。

为了完整起见,应该提到在用户模式下运行的进程也相互隔离,但如果程序被设计为这样做,则可以使用操作系统提供的设施更自由地相互通信。

流程

内核提供在用户模式下启动进程的能力。当一个进程被创建时,它被添加到当前存在的进程的内部列表中。当任务管理器等程序要求提供进程列表时,它会收到此列表中的信息子集,并按用户权限进行过滤。

恶意软件(例如 rootkit)隐藏其存在的一种方法是直接将其从该表中删除。完成此操作后,它仍然可以执行,但将不再出现在通过正常方式获得的进程列表中。

由于这些进程仍然实际存在并执行,因此可以通过检查其他内核数据结构(例如句柄表,其中包含有关进程已打开的资源(例如文件)的信息)或检查内存分配来找到它们在不妨碍软件功能的情况下很难隐藏。

内核模式驱动程序

内核模式驱动程序用于许多事情,包括与物理硬件设备交互。它们在必要时在内核的控制下执行,但由于它们不是用户模式进程,因此它们不会出现在进程表中。因此不会出现在任务管理器或其他专门与进程相关的工具中。

能够在内核模式下运行代码是能够有效隐藏执行代码的存在的重要一步。通常情况下,Windows 要求内核模式下的代码经过签名才能运行,因此恶意软件可能需要利用操作系统、其他软件甚至社会工程中的漏洞才能到达这里,但是一旦代码在内核模式下执行,隐藏变得更容易。

概括

总之,隐藏进程存在的证据是可能的,很可能总会有一些迹象表明该进程存在,因为它通常总是需要使用某种形式的资源来完成它设计的任何事情,这有多困难该检测取决于特定的恶意软件。