ハッカーが364個の環境変数にマルウェアを隠し、ディスクに触れずに実行

この手口は、北米を拠点とする多国籍ソフトウェア・SaaSプロバイダーを標的にした事例で最初に確認されました。同様の大企業も標的となるリスクがあることを示唆しています。

攻撃者は、購入注文書を装ったTARアーカイブの中に、第一段階となるWindows Script Host(JScript)ファイルを仕込んで配布します。

このファイルが開かれると、スクリプトは非表示のPowerShellプロセスを起動します。そして、最終的な実行ファイルをディスクに書き込むことなく、メモリ上で.NETペイロードを準備します。

この手法により、従来型のアンチウイルススキャンやディスクベースのフォレンジック調査は効果を発揮しにくくなります。

侵害に成功すると、認証情報の窃取、データの窃取、追加マルウェアの配布、ランサムウェア活動、業務妨害などにつながる恐れがあります。

最初のJScriptサンプルには、おとりコード、ランダム化された変数名、実行中に1文字ずつ再構築される文字列が含まれています。これらの手法により、本来の目的が隠蔽され、静的解析が困難になっています。

続いてスクリプトは、隠された命令を復号し、conhost.exe –headlessを経由してPowerShellを起動します。この命令は-NoProfile、-NonInteractive、-EncodedCommandといったPowerShellのオプションを使用し、目に見えるユーザー操作をほとんど伴わずにマルウェアを実行できるようにしています。

別途用意された暗号化配列には、PowerShellローダーが格納されています。これをデコードした後、JScriptはローダーをz6ti4ttoCGD1という名前の環境変数に格納します。また、スクリプトパスの値も、kYcT4A1u9jXwAという別の環境変数に格納します。

最も注目すべき回避策は、PowerShell内部で発生します。ローダーは、ペイロードを1つの巨大なコマンドやファイルに格納するのではなく、364個の個別のプロセス環境変数に分割します。そして実行時にこれらの断片を連結します。

このマルウェアはまた、Loadなど機密性の高い.NETメソッド名を複数の文字列に分割しています。これは、AMSIやエンドポイント検査、明白な悪意あるPowerShell用語を探すシグネチャベースの検知を回避することを狙ったものです。

最後に、このペイロードはBase64や16進数といった一般的な形式ではなく、CJK(中日韓統合漢字)文字を使ってエンコードされています。

ローダーは各文字から0x4E00を引くことでバイトに変換し直し、その後.NETリフレクションを使って再構築されたアセンブリをメモリ上に読み込み、そのエントリーポイントを呼び出します。

FIREは、このローダーのアーキテクチャこそが最大の懸念点であり、異なるマルウェアファミリーでも再利用できる可能性があると指摘しています。最終段階の.NETペイロードはAgent Teslaとの関連が指摘されています。ただし、研究者らはまだそのアセンブリ自体を回収し、直接分析するには至っていません。

研究者らによると、この活動を特定の高度persistent脅威(APT)グループに帰属させたり、このローダーがCrypter-as-a-Serviceの一部であるかどうかを判断したりするには、証拠が不十分だといいます。この階層構造は専用ツールの可能性を示唆していますが、それはあくまで仮説にとどまると、Fortraは述べています

この活動は、より広範なファイルレスマルウェアのトレンドを浮き彫りにしています。攻撃者は、ペイロードを揮発性のプロセスメモリやスクリプト、環境変数へと移行させつつあり、従来型のドロップファイル検知ではこれを阻止できる可能性が低くなっています。

PowerShellのスクリプトブロックログ、AMSIの可視性、コマンドライン監視、プロセスツリーのテレメトリ、そしてメモリに着目したエンドポイント検知の維持が、ますます重要になっています。

より強固なプロアクティブ防御で、重大インシデントと金銭的損失を未然に防ぎましょう。15,000のSOCから集約されたライブ脅威フィードを統合する

翻訳元: https://cyberpress.org/malware-hides-in-environment-variables/

ソース: cyberpress.org