


概要
北朝鮮のハッキンググループLazarusによるContagious Interviewキャンペーンを、Enkiは継続的に追跡してきました。このキャンペーンは23年から継続的に活動しており、求職者を対象とした合法的な採用面接を装ってマルウェアを配布し、最終的に暗号資産を奪取することを目的としています。
しかし、最近の追跡結果によると、24年12月からContagious Interviewキャンペーンの亜種を通じて、追加のマルウェアが配布されている状況を特定しました。本稿では、該当するフィッシングサイトを通じてマルウェアが配布され実行される、攻撃プロセス全体を分析します。
Contagious Interview 変種
従来のContagious Interviewキャンペーンは、求職者を対象に採用面接を行い、コーディング能力テストなどを理由にマルウェアが含まれたパッケージを実行するよう誘導することで初期侵入を行っていた。一方、変種キャンペーンでは、求職者を対象に採用面接を行うという点は同じだが、ビデオ面接サイトで「カメラにアクセスできません」という通知とともに、マルウェアをダウンロードするスクリプトを実行するよう誘導する方式に変更された。
さらに、初期侵入プロセスだけでなく、攻撃に使用されたマルウェアにも多くの変化が見られた。従来のJavaScriptで作成されたダウンローダーは、暗号資産ウォレット情報を窃取する機能が削除され、shファイルまたはvbsファイルに置き換えられた。Pythonで作成され、複数のファイルに機能が分割されていたバックドアマルウェアも、Go言語で作成されたバックドアに置き換えられ、ソースコードを直接コンパイルして実行する形態に変更されたことが確認された。
攻撃プロセス

caption - Contagious Interview キャンペーンの変種による全体攻撃プロセス
攻撃者がフィッシングURLを送信し、被害者のOSに応じて追加の攻撃プロセスを進行
Windows
2-1. nvidiaupdate.zip ファイルをダウンロードして解凍した後、nvidiaupdate 内の update.vbs ファイルを実行
2-2. nvidiaupdate 内の nvidia.js ファイルを実行
2-3. nvidiadrivers.zip ファイルをダウンロードして解凍した後、nvidiadrivers 内の update.vbs ファイルを実行
2-4. nvidiadrivers 内の gobatch.bat ファイルを実行
2-5. nvidiadrivers 内の Go言語バックドアソースコードを go run コマンドを通じて実行
macOS
3-1. ffmpeg.sh ファイルをダウンロードした後に実行
3-2. VCam.zip ファイルをダウンロードして解凍した後、vcamservice.sh を実行、ChromeUpdateAlert.app を実行
3-3. go run コマンドを通じて Go バックドアを実行
3-4. ChromUpdateAlert.app がマイクへのアクセス権限を要求するふりをして、ユーザーのパスワードを奪取
最終的に Go で作成されたバックドアのソースコードがコンパイルされて実行される
詳細分析 1. フィッシングURL送信
攻撃者は暗号資産(仮想通貨)関連企業の採用担当者を装い、ウェブサイトを通じて面接を行うという名目で、フィッシングサイトのURLを攻撃対象に送信する。フィッシングサイトの特徴として、該当URLにアクセスすると、実際のビデオ面接を支援するサービスである「Willo」を模した「Video Interviewing」サイトが表示される。

caption - Willoサービスを装ったウェブサイトの画面
面接プロセス
面接(質問)が進む中、3番目の質問でビデオ撮影が要求される。

caption - 面接プロセスの途中でビデオ撮影を要求
カメラの使用がブロックされているというメッセージが表示される。
問題を解決するために、ユーザーが「How to fix」をクリックするように誘導される。

caption - エラー解決のテキストで、攻撃者はユーザーのクリックを誘導
ポップアップウィンドウの内容を読むと、cmdウィンドウ(コマンドプロンプト)を開き、提示されたcurlコマンドを入力するよう指示している。コマンドは、様々な環境の被害者を感染させる目的で、Windows用とmacOS用の2種類が存在する。この時、curl経由でダウンロードしなければ、ダミーファイルがダウンロードされる。
詳細分析 2. Windows
Windows用のコマンドは、nvidiaupdate.zipファイルをダウンロードして解凍し、update.vbsファイルを実行する。
nvidiaupdate.zipファイルには、update.vbs、nvidia.js、およびJavaScriptファイルを実行するためのnode.exeなどのファイルが圧縮されている。
2.1. download nvidiaupdate and execute update.vbs
update.vbsファイルは、現在のディレクトリを基準にnvidia.jsファイルをNode.jsで実行する。
2.2. execute nvidia.js
nvidia.jsファイルは、hxxps://api[.]camera-drive[.]org/nvidiawin[.]updateからファイルをダウンロードし、nvidiadrivers.zipとして保存する。その後、nvidiadrivers.zipファイルを解凍し、update.vbsファイルを実行する。ダウンロードと実行が完了すると、持続性を確保するために以下のようにレジストリキーを設定する。
2.3. download nvidiadrivers and execute update.vbs
nvidiadrivers.zipファイルには、update.vbs、gobatch.batファイル、Go言語で記述されたバックドアのソースコード、Go言語をコンパイルおよび実行するためのgo.exeなどのファイルが圧縮されている。
2.4. execute gobatch.bat
update.vbsファイルは、gobatch.batファイルを実行してGOバックドアをコンパイルし実行する。
2.5. execute go backdoor
go runコマンドを通じてGoソースコードをコンパイルして実行する。さらに、検出を回避するためのランダムな遅延時間コードが挿入されている。
詳細分析 3. MacOS
3-1. download and execute ffmpeg.sh
ffmpeg.shファイルは、実行されたデバイスのCPUアーキテクチャに応じて異なるURLを使用し、次の段階のマルウェアをダウンロードする。
ダウンロードされたファイルは/var/tmp/VCam.zipとして保存される。ダウンロードが完了したファイルは、解凍された後に vcamservice.sh ファイルを実行する。その後、持続性を確保するために ~/Library/LaunchAgents/com.vcam.plist パスに以下のようなファイルを生成し、スタートアッププログラムとして登録する。
最後に ChromeUpdateAlert.app を実行し、/var/tmp/VCam.zip ファイルを削除する。
3.2. download VCam and execute vcamservice.sh, ChromeUpdateAlert.app
VCam.zipファイルには、vcamservice.sh、ChromeUpdateAlert.appとGo言語で作成されたバックドアのソースコード、Go言語をコンパイルおよび実行するためのgoなどのファイルが圧縮されている。
3.3. execute go backdoor
vcamservice.shファイルは、go runコマンドを通じてGoソースコードをコンパイルして実行する。
3.4. upload password
バージョン12以上のmacOSでのみ実行されるマルウェアで、Chromeを自称してパスワードを窃取する。
実行時、以下のようにGoogle Chromeがマイクの権限を要求しているというメッセージが表示される。

caption - マイクの権限要求画面
その後、認証が必要であるとしてパスワードを要求する。

caption - パスワード要求画面
入力されたパスワードは、dropbox apiを介してクラウドサービスにpassword.txtファイルとしてアップロードされる。

caption - 入力されたパスワードの窃取コード
アップロードに使用されるdropboxトークンはハードコーディングされている。

caption - dropboxトークン情報
詳細分析 4. コマンド&コントロール
gobatch.bat ファイルまたは vcamservice.sh ファイルを介してコンパイルおよび実行されるバックドアで、コンパイル済みのバイナリではなく、ソースコードがダウンロードされる特徴がある。バックドアのC&Cサーバーのアドレスは平文でハードコードされており、コメントとして hxxps://api[.]jz-aws[.]info/public/images/ のようなURLが追加で記述されている。

caption - 順にハードコードされたC&CサーバーURL(コメント)、C&CサーバーアドレスIP、テストIP(コメント)
http postリクエストを送信してC&Cサーバーに接続し、通信におけるすべてのメッセージはRC4で暗号化され、以下のような構造を持つ。
[MD5sum][RC4EncryptedMsg][128ByteRC4Key]
最初にC&Cサーバーに接続する際には、ユーザー名、ホスト、OSなどの情報を一緒に送信する。
C&Cサーバーから送信されたhttpレスポンスをRC4で復号し、空白を基準に分割して、メッセージタイプに応じてコマンドを実行する。メッセージタイプは、復号されたメッセージの最先頭にbase64でエンコードされている。

caption - base64デコード関数
メッセージタイプに応じた動作は以下の通りである。
caption - メッセージタイプに応じた動作
おわりに
本稿では、LazarusグループのContagious Interviewキャンペーンと推定されるフィッシング手法と、それを通じて実行されるバックドアの動作原理、主要なコマンド、およびC&C通信構造を詳細に分析した。
攻撃者は、さまざまなオペレーティングシステム環境を狙った巧妙な攻撃手法を活用しており、ファイルのダウンロード、持続性の確保、リモートコマンドの実行など、体系的な方法でターゲットシステムを掌握しようとする意図を示した。
このような攻撃はますます進化し、より巧妙かつ隠密な方法へと発展する可能性が高い。これに伴い、セキュリティ組織や企業は、継続的な監視と分析を通じて迅速に対応できるセキュリティ体制を整える必要があるだろう。
本稿が、絶えず変化するサイバー脅威に対抗するための防御戦略を樹立する上で、有用な参考資料となることを願う。
IOC
10e4c74df854f63951facfd589717be18b746befd9099e1d9083f0cb6cf310c3
bfac94bfb53b4c0ac346706b06296353462a26fa3bb09fbfc99e3ca090ec127e
98373befd5fd24ebac29604848e15b3abe8966b2d5e83323a08247f07b5c3d6f
13e7589c778b4b36420ce77145a98b75ba54150ab80ea06a73ad0924e7da7d20
35f27685fbd1b0507106862870bafa5f3a7fc5d9f27dc59fffea18182d67cf35
b951066189461d2acd27b635f3f858be4c94734b81df7e63cc3af0476b90c6dd
b3da2af06b5828d6809614c4c86a5dfa25bad29a605869f94c5d4ecbc4362c3f
a01ebbcc2aa25527ea4a0367c00c780ff563f37f5776629adf928ced6f22ce00
bab567e14eedf6690fbee8ac4ac448a5b663deff14ff5f1fec97bb16eedf027d
b2a4a981ba7cc2add74737957efdfcbd123922653e3bb109aa7e88d70796a340
c56a1897e97a5e52bf1d879eba55541c85f7d8684becc88feb7875d860d91ad9
cee03de4bd70cbd7b6bca498d3cf9c6d07bd0d9d7667c1ba84d7da6e1a4f54d9
hxxp://216[.]74[.]123[.]191:8080
hxxps://api[.]camera-drive[.]org/VCam2[.]update
hxxps://api[.]camera-drive[.]org/VCam1[.]update
hxxps://api[.]camera-drive[.]org/nvidia-ka[.]update
hxxps://api[.]camera-drive[.]org/ffmpeg-ka[.]sh
digitpotalent[.]com
digitptalent[.]com

人気の記事





