假设我有进程资源管理器向我显示有一个名为正在EvilAppsRUs.exe
运行的应用程序。
我将其关闭,但它又重新启动了。我已检查以确保它没有服务(在 Process Explorer 中右键单击它->属性)。
因此,我相当确信有另一个进程(可能被称为类似的良性进程DisplayDriver.exe
)正在启动(并重新启动)EvilAppsRUs.exe
。
我如何才能找出重新启动恶意进程的进程的名称?
答案1
答案2
总结:不要相信通常显示进程树的工具所提供的信息。
如果没有这样的工具提及 进程监控或有点相关的系统监控 你无法知道。和从理论上讲,只要相应的工具捕获了进程创建事件并使用那捕获的信息来(重新)构建流程树。
然而,父进程和子进程之间的关系并不是相关的在 Windows 上和在 Unix 上一样。在 Unix 上,父进程必须收集子进程的退出状态,以免子进程最终变成僵尸进程。这是一个重要的信息,因为它还解释了为什么Windows 并不像 Unix 一般那样重视父子进程关系。Windows 中的父进程不需要收集其子进程的退出状态。
更糟糕的是:在创建进程期间,你可以通过使用PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
,这通常应该让你了解进程树的可信度探索者是(提示:不是)。此信息可以还可以在正在运行的进程上进行伪造,只要进行该操作的进程对被操作的进程具有适当的访问级别。
进程监视器的优势在于——理论上——它可以看到正在创建的进程,而不必依赖于你可以提取的信息事后来自每个相应的进程(并且可以伪造)。但是,我不知道该信息是否用于填充其进程树。看起来不是。鉴于可以在捕获之前显示进程树任何Process Monitor 中的事件,按理说它与 Process Explorer 类似,这意味着这些信息也不可信。
尽管PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
是在 Windows 7 左右引入的,但即使在早期的 Windows 版本中,父子进程关系也从未有太大关系。
进一步阅读:
PS:常规工具要么使用文档tlhelp32
(CreateToolhelp32Snapshot
等。PROCESSENTRY32W::th32ParentProcessID
) 功能或 NT 本机 APINtQuerySystemInformation
和某事喜欢 SystemProcessInformation
(Nebbett 称之为SystemProcessesAndThreadsInformation
)。这意味着他们将返回可能伪造的父 PID。