2024年11月29日、「Dev.to 」という名前の開発者コミュニティで下記のように採用告知メールに偽装してマルウェアを配布する事例が公開された。[1] この事例で、攻撃者はプロジェクトが含まれた BitBucket リンクを伝達したが、被害者はプロジェクト内部にマルウェアが含まれていることを確認し、コミュニティに公開した。プロジェクトの内部には「tailwind.config.js」という名前で存在する BeaverTail マルウェアとともに「car.dll」という名前の Downloader マルウェアが含まれていた。

Figure 1. 開発者コミュニティで公開された攻撃事例
現在、リンクからのダウンロードはできないが、VirusTotal では「car.dll」Downloader と BeaverTail を含む圧縮ファイルが存在し、これらのファイルを基に分析した結果、「car.dll」の実行ログと BeaverTail の実行状況が韓国国内でも確認された。BeaverTail は、海外で北朝鮮を拠点とする攻撃者が使用しているものと知られているマルウェアであり、情報窃取およびさらなるペイロードをダウンロードする機能を担う。
「car.dll」Downloader は、バックドアをダウンロードするのに Windows コマンドを内部に実装したことが特徴である。このような方式は、過去の ESET レポートで公開した Lazarus グループの LightlessCan マルウェアと類似している。
1. 攻撃状況
VirusTotal で確保したプロジェクトファイルの内部には、下記のように Downloader マルウェアである「car.dll」と BeaverTail マルウェアで、Downloader を実行する機能を担う「tailwind.confg.js」ファイルが存在する。因みに、別の圧縮ファイルには類似した BeaverTail とともに同じ Downloader が確認されたが、「img_layer_generate.dll」という名前で配布された。

Figure 2. プロジェクトファイルの内部
BeaverTail は主に海外で LinkedIn のような採用に偽装したフィッシング攻撃の事例で配布されるものと知られているが、韓国国内でも関連した事例が確認された。この事例もまた海外の事例だが、韓国国内でも関連ログが確認されるのが特徴である。インストールパスも、この記事で言及したものと同じように「autopart」キーワードが含まれた「%SystemDrive%\0_***workfile\_work\autosquare\autopart\car.dll」であることから、同じ事例と推定される。

Figure 3. Downloader マルウェアの実行ログ
このほかにも、Downloader がインストールされたシステムで以下のように数分後、BeaverTail と思われるログが確認されることもあった。Curl を利用してダウンロードするという点と、ダウンロードされるファイル名である「p.zi」と「p2.zip」は BeaverTail の知られている振る舞いである。[2] そして、ダウンロードアドレスも2024年11月に Zscaler で公開した BeaverTail 関連レポートで言及されたアドレスと同じである。
2. BeaverTail
「tailwind.config.js」という名前の JavaScript マルウェアは、難読化されたルーチンと同じパスに位置する「car.dll」を実行するルーチンがともに含まれている。

Figure 4. 難読化ルーチンおよび car.dll 実行ルーチン
難読化されたルーチンは、インフォスティーラーおよびダウンローダー機能を実行する BeaverTail マルウェアであり、Web ブラウザを対象に資格情報を窃取および仮想通貨のウォレットデータを窃取し、InvisibleFerret のようなさらなるマルウェアをダウンロードすることで知られている。

Figure 5. 窃取した情報をアップロードし、さらなるペイロードをダウンロード
3. Tropidoor
ダウンローダーを通じてメモリ上で動作するマルウェアは、バックドアである。バックドアが実行されると4つの C&C サーバーアドレスを復号化して接続を試み、成功した後はシステムの基本情報を収集する。その後、ランダムな 0x20 バイトサイズのキーを生成したあと RSA 公開キーで暗号化して送信する。RSA 公開キーは Base64 で暗号化されて存在し、ランダムに生成された 0x20 バイトサイズのキーは C&C 通信時のパケット暗号化に使用される。

Figure 6. 復号化された RSA 公開キーと暗号化ルーチン
C&C サーバーとの最初の通信では上記で取得したシステム情報と RSA 公開キーで暗号化されたランダムなキーを Base64 でエンコードして、それぞれ「tropi2p」、「gumi」パラメーターを通じて送信する。そして、5 バイトサイズのランダムな文字列を生成するが、この文字列は他の通信プロセスでも「s_width」パラメーターと共に使用されることから、Session ID であると推定される。
| URL フォーマット | 機能 |
|---|---|
| tropi2p=[Info]&gumi=[Key]&s_width=[SessionID] | 情報送信 |
| letter=400BadRequest&s_width=[SessionID] | コマンド受信 |
| letter=[Result]&s_width=[SessionID] | コマンド実行結果の送信 |
Table 1. C&C サーバー通信時の URL フォーマット
その後、「letter」パラメーターに「400BadRequest」を入れて C&C サーバーに送信するが、これによって C&C サーバーからコマンドを受信することができる。受け取ったコマンドを実行した後は同様に、その結果をエンコードして「letter」パラメーターを通じて送信する。
C&C サーバーから受け取って実行できるコマンドは以下の通りである。ほとんどは一般的なバックドアタイプと類似しているが、34番コマンドが特徴である。
| コマンド番号 | 機能 |
|---|---|
| 3 | “nestat -ano” コマンド |
| 4 | “ipconfig /all” コマンド |
| 5 | “systeminfo” コマンド |
| 6 | “dir” コマンド |
| 7 | ファイル削除(NULL データで上書き) |
| 8 | ファイル時間の変更 |
| 9 | スクリーンショット |
| 10 | ファイルスキャン |
| 12 | プロセス実行 |
| 13 | プロセス実行(ユーザートークン) |
| 14 | プロセス終了 |
| 15 | 特定アドレススキャン |
| 16 | ダウンロードしたペイロードを他のプロセスインジェクションまたはメモリ上にロード |
| 17 | ファイル削除(ランダムな値で上書き) |
| 19 | ファイルを zip 形式で圧縮および送信 |
| 23 | ドライブ情報の収集 |
| 24 | ファイル情報の収集 |
| 25 | 待機時間設定 |
| 26 | 設定データファイルに保存 (“C:\ProgramData\Microsoft\DeviceSync\WinRT_DeviceSync.etl”) |
| 28 | 設定データの送信 |
| 29 | 設定データの変更 |
| 30 | “tZeqxYw” 文字列の送信 |
| 32 | パイプ通信で読み込んだデータの送信 |
| 34 | Windows コマンド実行 |
Table 2. C&C コマンド番号
34 番のコマンドは「schtasks」、「ping」、「reg」など、Windows の基本コマンドを直接実装したコマンドである。このような方式は過去の ESET のレポートで LightlessCan というマルウェアが使用したものと知られている。[3]

Figure 7. 内部に実装された Windows コマンド
4. 結論
最近、北朝鮮を拠点とする攻撃者の行動とみられる攻撃事例が持続的に確認されている。今回、確認された事例では主に海外を対象とする攻撃で使用されるものと知られている BeaverTail マルウェアの攻撃の状況が確認された。また、共に使用されたマルウェアの場合にも過去の攻撃事例との関連性が確認されることもあった。
ユーザーは、メールの添付ファイルだけでなく、出どころが不明な実行ファイルに特に注意を払う必要がある。また、V3 を最新バージョンにアップデートしてマルウェア感染を事前に遮断できるように注意を払う必要がある。
Categories: マルウェア