序章
マルウェアの作成者は、実行可能ファイルをディスクに書き込むことなくペイロードを実行することで、検出を回避しようとします。この「ファイルレス」実行の最も一般的な手法の 1 つは、コード インジェクションです。攻撃者は、マルウェアを直接実行するのではなく、既に実行されている別のプロセスのメモリにマルウェア コードを挿入します。
PowerShell は、Windows 7 以降のすべてのマシンに存在し、サポートされる機能の数が非常に多いため、しばらくの間、攻撃者のお気に入りのツールでした。 FireEye は、 PowerShell が最初のマルウェア配信中または悪用後の活動中に使用された複数のレポートを公開しています。攻撃者は PowerShell を悪用して、他の Windows コンポーネントと簡単にやり取りし、ステルスかつ迅速に活動を実行しています。
このブログ投稿では、2019 年 2 月に観測された最近のフィッシング キャンペーンについて説明します。このキャンペーンでは、攻撃者が複数の顧客を標的にし、実行可能なドロッパーやペイロードを作成することなくペイロードを実行することに成功しました。 ディスクに。このキャンペーンでは、VBScript、PowerShell、および .NET フレームワークを使用して、プロセス ハロウイング技術を使用してコード インジェクション攻撃を実行しました。攻撃者は、.NET アセンブリを PowerShell のメモリに直接ロードする機能を悪用して、ディスク上に PE ファイルを作成せずに悪意のあるコードを実行しました。
活動概要
ユーザーは、Google ドライブに保存されているドキュメントを開くように求められます。図 1 に示すファイルの名前は、攻撃者が特定の航空機モデルを使用する航空業界のメンバーを標的にしていたことを示唆しています。ファイアウォールの制限を回避してペイロードをホストするクラウドベースのファイル ストレージ サービスに依存する攻撃者の数が増加していることを確認しています。
図 2 に示すように、スクリプトを開こうとすると、Internet Explorer から、発行元を確認できなかったという警告が表示されます。私たちの経験では、多くのユーザーは警告を無視してドキュメントを開くことを選択します。
実行時に、複数レベルの難読化の後、リモート URL から .NET アセンブリをロードする PowerShell スクリプトが実行されます。このスクリプトの関数は、プロセス ハロウイングを使用して最終的なペイロード (NETWIRE トロイの木馬) を無害な Microsoft 実行可能ファイルに挿入するために使用されます。攻撃中に生成されたすべてのプロセスは正規の Microsoft 実行可能ファイルであるため、これによりアプリケーションのホワイトリストがバイパスされる可能性があります。
技術的な詳細
最初のドキュメントには VBScript コードが含まれています。ユーザーがファイルを開くと、iexplore によって Wscript が生成され、このファイルが実行されます。このスクリプトは、複数層の難読化を使用して静的スキャナーをバイパスし、最終的に PowerShell スクリプトを実行してバイナリ ペイロードを実行します。
スクリプト実行のさまざまなレベルで使用される難読化手法を図 3 と図 4 に示します。
次に、このスクリプトは別のエンコードされた .vbs スクリプトを paste.ee URL からダウンロードして実行します (図 5 参照)。Paste.ee は規制の緩い Pastebin の代替手段であり、このサービスを使用してペイロードをホストする複数の攻撃が確認されています。 Web サイトは TLS を使用しているため、ほとんどのファイアウォール ソリューションは、ネットワーク経由でダウンロードされる悪意のあるコンテンツを検出できません。
このスクリプトは、それ自体を Appdata/Roaming にコピーし、schtasks.exe を使用して、VBScript を 15 分ごとに実行するスケジュールされたタスクを作成することで永続性を実現します。
ダウンロードした第 2 段階の VBScript をさらに難読化解除した後、図 6 に示すように、シェル オブジェクトを介して実行される PowerShell スクリプトを取得します。
PowerShell スクリプトは、バイナリ実行可能ファイルを含む 2 つの Base64 でエンコードされたペイロードを paste.ee からダウンロードします。文字列は PowerShell スクリプト変数として保存され、ディスク上にファイルは作成されません。
Microsoft は、PowerShell で .NET フレームワークとやり取りする複数の方法を提供し、カスタム開発機能によって強化しています。これらの .NET と PowerShell の統合は、攻撃者にとって特に魅力的です。これは、従来のセキュリティ監視ツールでは .NET プロセスの実行時の動作に関する可視性が限られているためです。このため、CobaltStrike や Metasploit などのエクスプロイト フレームワークには、.NET アセンブリ コードでインプラントを生成するオプションがあります。
ここで、攻撃者はSystem.Reflection.Assembly .NET Framework クラスのLoadメソッドを使用しています。アセンブリがSystem.Reflection.Assemblyのインスタンスとして読み込まれると、C# と同様に、そのオブジェクトを介してメンバーにアクセスできます (図 7 参照)。
このコードは、インストールされている .NET のバージョンを識別し、後でそれを使用して .NET インストール フォルダーへのパスを動的に解決します。デコードされたドロッパー アセンブリは、引数としてLoadメソッドに渡されます。結果のクラス インスタンスは、変数として格納されます。
ドロッパーのオブジェクトはこの変数を介してアクセスされ、メソッドRが呼び出されます。 .NET ドロッパーのメソッドRは、最終的なペイロードの実行を担当します。
メソッドRのパラメーターは次のとおりです。
- InstallUtil.exe (またはその他の .NET Framework ツール) へのパス
- デコードされた NETWIRE トロイの木馬
攻撃中に生成されたプロセスのリスト (図 8) を観察したところ、ペイロードが別のプロセスとして生成されたことはわかりませんでした。
InstallUtil.exe プロセスがサスペンド モードで作成されていることを確認しました。実行が開始されると、そのメモリ アーティファクトを無害な InstallUtil.exe の実行と比較し、新しく生成された InstallUtil.exe プロセスのメモリに悪意のあるペイロードが注入されていると結論付けました。また、InstallUtil に引数が渡されないことも確認されました。InstallUtil は常に少なくとも 1 つの引数を想定しているため、通常の実行ではエラーが発生します。
検出回避の観点から、攻撃者は興味深いアプローチを選択しました。 PowerShell プロセスの作成が検出されても、InstallUtil.exe は元のパスから実行されます。さらに、InstallUtil.exe は無害なファイルであり、内部自動化でよく使用されます。疑いを持たないシステム管理者にとって、これは悪意があるとは思えないかもしれません。
コード インジェクションの実行方法を理解するために .NET コードを分解し、難読化を解除したところ、プロセス ハロウイングに関連する Windows win32 API 呼び出しを特定できました (図 9)。
メインからRを呼び出すように C# ドロッパーのコードを逆に変更した後、メソッドRが呼び出されると、InstallUtil.exe がサスペンド モードで生成されることを確認できました。中断されたプロセスのメモリ ブロックはマッピングが解除され、メソッドRに引数として渡されたペイロード プログラムのセクションで再書き込みされます。エントリ ポイントに変更が加えられた後、スレッドは続行できます。プロセスの空洞化が完了すると、親の PowerShell プロセスが終了します。
ペイロードの高レベル分析
最終的なペイロードは、FireEye Intelligence によって NETWIRE バックドアであると特定されました。バックドアは、コマンド アンド コントロール (C2) サーバーからコマンドを受信し、ユーザー データの収集を含む偵察を実行し、その情報を C2 サーバーに返します。
NETWIRE バックドアの機能には、キー ロギング、リバース シェル、およびパスワードの盗難が含まれます。バックドアはカスタム暗号化アルゴリズムを使用してデータを暗号化し、./LOGS ディレクトリに作成されたファイルに書き込みます。
このマルウェアには、カスタムの難読化アルゴリズムも含まれており、レジストリ キー、API、DLL 名、およびその他の文字列を静的分析から隠すことができます。図 10 は、これらの文字列で使用されるカスタム デコード アルゴリズムの逆コンパイル バージョンを示しています。
マルウェアの動作を反転して分析した結果、次の機能を特定できました。
- マウスとキーボードのイベントを記録する
- セッション ログオンの詳細を取得する
- システムの詳細をキャプチャ
- スクリーンショットを撮る
- CPU 使用率を監視する
- 偽の HTTP プロキシを作成する
デコードされた文字列のリストから、このサンプルの他の機能を特定できました。
「POP3」 「IMAP」 「SMTP」 「HTTP」 「SoftwareMicrosoftWindows NTCurrentVersionWindows Messaging SubsystemProfilesOutlook」 「ソフトウェアMicrosoftOffice15.0OutlookProfilesOutlook」 「ソフトウェアMicrosoftOffice16.0OutlookProfilesOutlook」 |
メール クライアントからデータを盗む |
「GoogleChromeユーザーデータデフォルトログインデータ」 「ChromiumUser DataDefaultLogin Data」 「ComodoDragonUser DataDefaultLogin Data」 「YandexYandexBrowserUser DataDefaultLogin Data」 「Opera SoftwareOpera StableLogin Data」 「ソフトウェアMicrosoftInternet ExplorerIntelliFormsStorage2」 「vaultcli.dll: VaultOpenVault、VaultCloseVault、VaultEnumerateItem、VaultGetItem、VaultFree」 「moz_login から * を選択」 |
ブラウザからログイン情報を盗む |
FireEye Intelligence ポータルに加入しているお客様は、NETWIRE バックドア ファミリに関する完全なレポートを入手できます。
侵害の痕跡
ホストベースのインジケーター:
dac4ed7c1c56de7d74eb238c566637aa |
初期攻撃ベクトル .vbs ファイル |
ネットワークベースの指標:
178.239.21.]62:1919 kingshakes[.]linkpc[.]net 105.112.35[.]72:3575 homi[.]myddns[.]ロックス |
NETWIRE トロイの木馬の C2 ドメイン |
ファイアアイ検出
攻撃のインジケーターの FireEye 検出名:
エンドポイント セキュリティ |
|
ネットワークセキュリティー |
|
メールセキュリティ |
|
結論
マルウェアの作成者は、さまざまな「ファイルレス」プロセス実行手法を引き続き使用して、エンドポイントのインジケーターの数を減らしています。 .NET プロセスの実行に対する可視性の欠如と、PowerShell の柔軟性の組み合わせにより、この手法はさらに効果的になります。
FireEye Endpoint Security と FireEye Network Security は、攻撃チェーンのいくつかの段階でこの攻撃を検出してブロックします。
了承
Frederick House、Arvind Gowda、Nart Villeneuve、Nick Carr の貴重なフィードバックに感謝します。
Comments