PowerShell難読化解除

難読化されたPowerShellコマンドやスクリプトを貼り付けてください。ブラウザ内で層ごとにデコードされます——アップロードなし、実行なし——結果は不活性テキストとして表示され、疑わしいパターンは確認すべき手がかりとして一覧表示されます。

PowerShellの難読化は、スクリプトの動作を層の背後に隠します。Base64の-EncodedCommand、gzip圧縮、文字コード、文字列連結、-f書式演算子、バックティックエスケープ——各層を順に剥がし、読めるテキストが残るか、静的な解除が止まる地点まで進みます。このツールは層を1つずつ剥がして各ステップを表示するので、実行せずにスクリプトの内容を見ることができます。スクリプトがWindowsイベントログ由来なら、EVTXビューアーが.evtxファイルを読み、4104イベントにフラグを立てます。その他のテキストログにはログパーサーが重要な行を見つけます。関連記事PowerShellスクリプトの難読化を解く方法では、各層と安全な作業手順を文章で解説しています。

最終更新:

最大200 KB(.txtまたは.ps1)。ファイルはブラウザ内で読み取られ、デバイスを離れることはありません。何も実行されません。

🔒 スクリプトはブラウザ内で解かれ、デバイスを離れることはありません。アカウント不要、アップロードなし、サーバー呼び出しなし——そしてここにあるものは何も実行されません。

貼り付けたスクリプトの扱い

ブラウザを離れるものは何もありません。スクリプトはこのページのJavaScriptでローカルに解かれます。アップロードなし、サーバー呼び出しなし、保存なし、アカウントなし。これは重要です。疑わしいスクリプトをチャットに貼ってはいけません——チャットはそれを実行したり、引用したり、保存したりするかもしれません——そして、何をするか見るために実行してもいけません。ページを閉じれば破棄されます。

クリーンな結果が証明しないこと

クリーンな結果は安全の証明ではありません。既知の層が適用されず、指標にも一致しなかったというだけのことです。動的に構築される文字列、暗号化されたペイロード、実行時にしか存在しない値は静的には解けず、指標のないスクリプトでも悪意がある場合があります。

指標への一致は悪意の証明ではありません。ダウンロードクレードル、IEX、エンコードされたコマンドは、管理やデプロイでも正当に使われます。一致はそれぞれ文脈で確認すべき手がかりであり、判定ではありません。

未知のスクリプトを、何をするか知るために実行してはいけません。不活性にデコードし、結果をEDRやサンドボックスに渡し、デコード後のテキストもエンコードされた形式と同じ疑いをもって扱ってください——それは証拠であり、安全証明書ではありません。

解除の仕組み

ツールは8つの層を順に、1ステップずつ試し、層が適用されなくなるか10層剥がすまで繰り返します。-EncodedCommandの抽出(Base64からUTF-16LEへ、失敗時はUTF-8)、裸のBase64 blob、gzipまたはdeflateの展開(入力は先にBase64で包まれていても可)、[char]および[char[]]のコード列、混合引用符や複数行にまたがる文字列連結、-f書式演算子、バックティックエスケープの除去、そして${...}と$変数プレースホルダーの一覧——プレースホルダーは決して解決されません。値は実行時にしか存在しないからです。各ステップでは変換前後のテキストと文字数が表示されます。

ツールがしないこと:何も実行しません——結果は不活性テキストであり、ページが誤って実行することもありません。動的に構築される文字列、暗号化されたペイロード、実行時にしか存在しない値を解くことはできず、スクリプトが安全かどうかも判断しません。指標はパターンの一致にすぎず、すべての層をすり抜けたスクリプトは「これ以上解けませんでした」と報告され、クリーンとは決して言われません。

スクリプトブロックログ(イベント4104)は、PowerShellが実際に実行したスクリプトのテキストを記録しますが、長いスクリプトは約4 KBの断片に分割され、それぞれにScriptBlockId、MessageNumber、MessageTotalが付きます。再構成タブは断片をScriptBlockIdでグループ化し、MessageNumberで並べ替え、結合し、欠けている部分にフラグを立てます——3つのうち2つでパート2が欠けているグループは不完全であり、欠けたテキストを推測することはできません。再構成したテキストは同じ難読化解除ツールに送られます。

よくある質問

結果が実行可能なスクリプトではなく不活性テキストで表示されるのはなぜですか?

難読化解除の目的は疑わしいスクリプトを読むことであって、実行することではないからです。デコード後のテキストは今もペイロードをダウンロードして実行する可能性があります——コピーボタン付きの不活性テキストとして表示することで、検査したり、EDRやサンドボックスと共有したりでき、ダブルクリックのリスクを冒すことはありません。

ツールが「これ以上解けませんでした」で止まりました。どうすればいいですか?

残りのテキストは、このツールが知らない層を使っているか、実行時に文字列を構築しているか、暗号化されています——静的な解除は限界に達しました。確かめるために実行しないでください。エンコードされた形式と部分的なデコードをEDRやサンドボックスに渡し、未知の層はクリーンな結果ではなく疑う理由として扱ってください。

指標はどう扱えばいいですか?

それぞれを答えではなく問いとして扱ってください。ダウンロードクレードルはURLがどこを指し、そのホストが想定内かどうかを問い、AMSI回避パターンはなぜスクリプトがスキャナーを盲目にしようとするのかを問い、エンコードされたコマンドはエンコードが何を隠していたのかを問います。何かを決める前に、EDR、ログ、スクリプトが来たマシンで文脈に沿って1つずつ確認してください。