GachiLoader、難読化されたNode.jsマルウェアを用いてペイロードを展開

Check Point Researchは、YouTube Ghost Networkを悪用してGachiLoaderを配布する高度なマルウェア配布キャンペーンを発見しました。GachiLoaderは新種で、強力に難読化されたNode.jsベースのローダーであり、無防備な被害者にRhadamanthysインフォスティーラーを配信するよう設計されています。

2024年12月に開始されたこのキャンペーンは、マルウェア配信戦術の大きな進化を示しており、示しているのは、脅威アクターが非伝統的なプログラミング言語やプラットフォームを用いて武器庫を適応させ続けているという点です。

このキャンペーンは、侵害された39のYouTubeアカウントから配信された100本以上の悪意ある動画に及び、開始以来およそ22万回の視聴を集めています。

動画はゲームチートの広告やクラック済みソフトウェアの提供を装って作られており、視聴者を誘導して、マルウェアのペイロードを含むパスワード保護されたアーカイブをダウンロードさせます。

Image
侵害されたアカウントが悪意あるゲームチート広告の共有を開始。

Check Pointによる責任ある開示を受けて、ほとんどの動画はプラットフォームから削除されましたが、研究者は新たに侵害されたアカウントで新規アップロードが出現すると見ています。

技術アーキテクチャ

GachiLoaderはnexeパッカーを用いて、60〜90MBの自己完結型実行ファイルとしてバンドルされています。nexeはNode.jsアプリケーションを、統合されたランタイム環境を備えたスタンドアロンのバイナリへとコンパイルします。

GachiLoaderはまず、稼働しているホストに関する情報(ウイルス対策製品やOSバージョンなど)を取得し、C2(Command and Control)アドレスの/logエンドポイントへPOSTリクエストで送信します。

Image
リモートペイロードを読み込む最初のGachiLoader亜種。

この大きなファイルサイズは、被害者が正規のソフトウェアパッケージを想定するため、疑念を抱かれにくくします。JavaScriptのソースコードは強力に難読化されており、手動解析を困難にするとともに、マルウェアが検知システムを回避できるようにしています。

難読化されたNode.jsマルウェアがもたらす解析上の課題に対処するため、Check Point Researchは、マルウェアの挙動を動的に分析し、解析妨害メカニズムを回避し、手動での難読化解除作業を大幅に削減するオープンソースのNode.jsトレーサーツールを開発しました。このツールは現在、セキュリティ研究コミュニティで利用可能です。

GachiLoaderは、最小RAM(4GB)およびCPUコア数(2以上)のシステムリソースチェックに加え、サンドボックスで用いられるユーザー名、ホスト名、解析ツールとの比較など、包括的な解析妨害機能を実装しています。

.nodeファイルはNode.js向けのネイティブアドオンで、実質的にはDLLであり、dlopenを介してNode.jsコードから呼び出すことができます。そのため、Node-APIが十分な機能を公開していない場合に、開発者が利用できます。

Image
JavaScriptコードへ関数を公開する。

このマルウェアは、Windows Management Instrumentationを介したPowerShellベースのシステム列挙を実行し、ポートコネクタ、ディスクドライブの製造元、ビデオコントローラを照会して、仮想マシン環境を特定します。

サンドボックス検知が発生すると、マルウェアは無害なWebサイトに対してHTTP GETリクエストを送信し続ける無限ループに入り、実行を事実上停止させます。

防御回避のため、GachiLoaderはWindows Defender のSecHealthUIプロセスを終了し、システムディレクトリおよびファイル拡張子に対して広範な除外設定を追加します。具体的には、後続ペイロードの検知を防ぐためにC:\Users、C:\ProgramData、C:\Windowsのパスを標的にします。

二重のペイロード配信メカニズム

このキャンペーンは2つの運用亜種を用います。第1の亜種は、固有のX-Secretヘッダーを用いた認証付きHTTPリクエストにより、リモートのC2サーバーからペイロードを取得します。

このキャンペーンとは完全に無関係に、元のファイル名がHookPE.exeのファイルが見つかりました。これは、デバッグ出力付きの手法の64ビットPoC版であり、この手法を用いてcalc.exeをメモリ内にロードします。

Image
同じ手法を用いたHookPE PoCプロジェクト。

第2の亜種は、これまで文書化されていなかった「Vectored Overloading」と呼ばれるPEインジェクション手法を実装する追加ローダーKidkadiを展開します。

解析したすべてのサンプルは最終的に、悪意あるC2インフラへユーザー情報を流出させるよう設計された認証情報窃取マルウェアであるRhadamanthysインフォスティーラーを配信しました。

この手法は、Vectored Exception Handlersを悪用してWindowsローダーの挙動を操作し、NtOpenSectionやNtMapViewOfSectionといったカーネル関数に対するハードウェアブレークポイントを用いて、正規DLLのセクションを悪意あるペイロードに置き換えます。

GachiLoaderのサンプルには、運用上の耐障害性のために複数の冗長なC2アドレスが含まれています。最終ペイロードは、KeePass.exeやGoogleDrive.exeなどの正規ソフトウェアを模倣したランダム名の実行ファイルとしてダウンロードされ、VMProtectやThemidaを含む商用パッカーで保護されています。

サンプルは、ペイロードおよびC2のローテーション戦略が頻繁に行われる、迅速な展開サイクルを示しています。

このキャンペーンは、非公式な配布チャネルを通じて無許可ソフトウェアを求めるユーザーを狙う持続的な脅威状況を示しており、エンドポイントセキュリティソリューションの必要性と、クラックソフトをダウンロードする危険性に関するユーザーの認識向上の重要性を改めて強調しています。

翻訳元: https://gbhackers.com/node-js-malware/

ソース: gbhackers.com