北からのジョブオファー: ソフトウェア開発者を狙うContagious Interview

はじめに

LinkedInなどのソーシャル・ネットワーキング・サービスや人材マッチングプラットフォームでソフトウェア開発者に好条件の求人を提示し、インタビューの中でマルウェア "BeaverTail""InvisibleFerret"に感染させて暗号資産やソースコードなどの開発関連ファイルを窃取する攻撃キャンペーンが観測されています。その攻撃キャンペーンは"Contagious Interview"と呼ばれ、昨年分析記事が公開されました [1]

Contagious Interviewは北朝鮮(DPRK)が関与していると考えられており、CrowdStrike社は攻撃グループを"Famous Chollima"と呼称し [2] 、その活動を追跡しています。Contaigious Interviewにより多大な被害が発生した事案(US $72,000相当の暗号通貨を窃取。日本円で約1,000万円) [3]も発生しています。暗号資産の窃取が目的の一つであるため、ブロックチェーン、Decentralized Finance (DeFi)などのWeb3関連のソフトウェア開発者が特に狙われる傾向がみられます。

Contagious Interviewは現在でも続いており、BeaverTailInvisibleFerretを改良し日本を含め世界各国の開発者が狙われているのを観測しています。実際に日本国内でも感染事案を確認しています。

本記事ではContagious Interviewの最近の手口とBeaverTailInvisileFerretの変更点について解説します。

最近の攻撃手口

攻撃者は企業のリクルーターを装い、ソフトウェア開発者にLinkedInで求人のメッセージを送ります。実際に攻撃者から送られてきたメッセージも公開されています [4]。

そして技術インタビューに誘い、コードレビューのためにBitBucketからNode Package Manager (NPM) パッケージをダウンロードするよう依頼します。

このNPMパッケージを実行すると、パッケージの中に含まれているBeaverTailが実行されて、端末の情報がアップロードされます。その後、攻撃のステージが進むにつれて、より多くのリモート操作・情報窃取が可能となる第2ステージのInvisibleFerret、第3ステージのAnyDesk(正規のリモートアクセスツール)が実行されます。

1.attackf-low.png

図1. 攻撃の流れ

最近のBeaverTailは、NPMパッケージだけでなく、Qtで開発された偽のビデオ会議アプリのインストーラー[5]Electronで開発されたアプリケーションの中に埋め込まれているものも観測しています。WindowsLinuxmacOSで動作するクロスプラットフォームアプリケーションを容易に開発することができるため、NPMパッケージに加えてQtElectronもBeaverTailの開発に使われたと考えています。

2.Electron-app.png

図2. BeaverTailが埋め込まれていたElectronアプリケーション

BeaverTail

BeaverTailの目的は、感染機器の情報収集とInvisibleFerretを感染機器に設置することです。NPMパッケージの形態では、BeaverTailは、パッケージに含まれるjavascriptファイルの一つに難読化されたコードで埋め込まれています。

"chesshub" パッケージでは、routesディレクトリ配下にあるapi.jsBeaverTailが埋め込まれていました。

3.api_js.png

図3. BeaverTailが埋め込まれているapi.js

ファイルを開いた時に見つからないよう1行目のコメントの後ろに215個のスペースを入れた後に難読化されたスクリプトが記述されています。

4.api_js_2.png

図4. api.jsに埋め込まれているBeaverTail

Electronで開発されたアプリケーションでは、Atom Shell Archive Format (ASAR) アーカイブのapp.asarファイルに含まれているmain.jsBeaverTailが埋め込まれていました。

5.Electron.png

図5. Electronアプリに埋め込まれているBeaverTail

BeaverTailはホスト名などの感染機器の基本情報、OS、ブラウザで保有している認証情報やブラウザ拡張機能としてインストールされている暗号資産ウォレット関連ファイルも窃取し、C2サーバへアップロードします。

6.BeaverTail.png

図6. BeaverTail 認証情報窃取処理

7.BeaverTailWalletSteal.png

図7. BeaverTail 暗号資産ウォレット関連ファイル窃取処理

最近観測されたBeaverTailでは、窃取対象であるブラウザ拡張機能の暗号資産ウォレットの種類が9から21に増え、攻撃者が暗号資産の窃取に強い関心があることを示しています。

 

No

ブラウザ拡張機能ID

拡張機能名

ブラウザ

1

nkbihfbeogaeaoehlefnkodbefgpgknn

MetaMask Wallet

Chrome

2

ejbalbakoplchlghecdalmeeeajnimhm

MetaMask Wallet

Microsoft Edge

3

fhbohimaelbohpjbbldcngcnapndodjp

BNB Chain Wallet

Chrome

4

ibnejdfjmmkpcnlpebklmnkoeoihofec

TronLink Wallet

Chrome

5

bfnaelmomeimhlpmgjnjophhpkkoljpa

Phantom Wallet

Chrome

6

aeachknmefphepccionboohckonoeemg

Coin98 Wallet

Chrome

7

hifafgmccdpekplomjjkcfgodnhcellj

Crypto.com Wallet

Chrome

8

jblndlipeogpafnldhgmapagcccfchpi

Kaikas Wallet

Chrome

9

acmacodkjbdgmoleebolmdjonilkdbch

Rabby Wallet

Chrome

10

dlcobpjiigpikoobohmabehhmhfoodbb

Argent X - Starknet wallet

Chrome

11

mcohilncbfahbmgdjkbpemcciiolgcge

OKX Wallet

Chrome

12

agoakfejjabomempkjlepdflaleeobhb

Core | Crypto Wallet

Chrome

13

omaabbefbmiijedngplfjmnooppbclkk

Tonkeeper - wallet for TON

Chrome

14

aholpfdialjgjfhomihkjbmgjidlcdno

Exodus Web3 Wallet

Chrome

15

nphplpgoakhhjchkkhmiggakijnkhfnd

TON Wallet

Chrome

16

penjlddjkjgpnkllboccdgccekpkcbin

OpenMask -TON wallet

Chrome

17

lgmpcpglpngdoalbgeoldeajfclnhafa

SafePal Extension Wallet

Chrome

18

fldfpgipfncgndfolcbkdeeknbbbnhcc

MyTonWallet

Chrome

19

bhhhlbepdkbapadjdnnojkbgioiodbic

Solflare Wallet

Chrome

20

gjnckgkfmgmibbkoficdidcljeaaaheg

Atomic Wallet

Chrome

21

afbcbjpbpfadlkmhmclhkeeodmamcflc

Math Wallet

Chrome

 

感染機器の情報とウォレットの情報をアップロードした後にPythonで開発された2次ペイロードのInvisibleFerretのダウンローダをダウンロードします。InvisibleFerretPythonスクリプトであるため、感染機器のOSWindowsである場合は、Pythonがインストールされていないケースを想定してInvisibleFerretが実行できるようPython実行ファイルとライブラリをダウンロードします。

ダウンロードURL) http[:]//<C2 IP>:1224/pdown

ダウンロードしたPython関連のファイルは、感染機器のユーザホームディレクトリに".pyp"ディレクトリを作成し、その中に保存します。

8.BeaverTail_download.png

図8. BeaverTail ダウンロード処理

今年の10月に観測したBeaverTailは、ダウンロードしたInvisibleFerretのダウンローダを感染機器のユーザホームディレクトリに".sysinfo"という名称で保存・実行します。

注意すべき点としてはBeaverTailが実行された時点でmacOSのキーチェーンデータベースファイル、ブラウザに保存されてた認証情報(ID、パスワード)、ブラウザ拡張機能ウォレットの秘密鍵が攻撃者のサーバにアップロードされます。そのため、次のInivisbleFerretがエンドポイントセキュリティ製品によってブロックされたとしても認証情報とウォレットの秘密鍵が盗まれた前提での対応が必要です。

InvisibleFerret

InvisibleFerretは、Pythonで開発されているマルウェアで、複数のPythonスクリプトで構成されています。

  1. ダウンローダ
  2. バックドア
  3. ブラウザ情報を窃取するスティーラー
  4. キーロガー
  5. AnyDesk 

ダウンローダとバックドア、キーロガーのコードは難読化されています。

昨年観測されたInvisibleFerretは、XOR -> base64で難読化されていましたが、今年10月に観測したものは、zlib -> base64 -> 文字列の順序を逆順に並べ替える これを50回繰り返す難読化に変更されていました。

9.sysinfo_obfuscated.png

図9. 難読化されたコード

10.sysinfo_deobfuscated.png

図10. 難読化を解除したコード

難読化を解除するスクリプトはGitHub上で公開しています。こちらでご確認下さい。 

1. ダウンローダ (.sysinfo)

ダウンローダは、感染機器のOSに応じてファイルをダウンロード・実行します。

最初に、バックドアをダウンロードし、感染機器のユーザホームディレクトリ内に作成された".n2"ディレクトリの中に"pay"という名前で保存・実行します。

感染機器がWindowsである場合、.n2ディレクトリ内にブラウザの情報窃取を行うスティーラーとキーロガーをダウンロードし、それぞれ"bow""mlip"という名前で保存・実行します。

11.invisible_files.png

図11. ダウンロードされたInvisibleFerret関連ファイル

12.pstree.png

図12. InvisibleFerret関連プロセスツリー

2. バックドア (pay)

キーロギングとクリップボードデータの取得をし、8つの遠隔操作コマンドをサポートしています。

1

ssh_cmd

全てのpython.exeプロセスを終了

2

ssh_obj

コマンド実行

3

ssh_clip

キーロギングとクリップボードデータをC2サーバーへ送信

4

ssh_run

ブラウザ情報を窃取するスティラーをダウンロード・実行

5

ssh_upload

C2サーバへファイルをアップロード

6

ssh_env

C, D, E, F, Gドライブでnode_modulesなど

特定のディレクトリを除いた.envファイル一覧をC2サーバへアップロード

7

ssh_kill

ChromeBraveブラウザのプロセスを終了

8

ssh_any

AnyDesk をダウンロード・実行

C2サーバのIPアドレスとポート番号は、スクリプトの中に定義されています。

13.C2.png

図13. バックドア C2とポート番号

C2サーバとの通信は、TCPプロトコル上でJSON形式のデータでやりとりをします。

14.json.png

図14. C2通信データ

3. ブラウザ クレデンシャルスティーラー (bow)

ChromeBraveOperaYandexMicrosoft Edgeブラウザからログイン情報などを窃取し、C2サーバへアップロードします。

15.bow.png

図15. bow

4. ブラウザ キーロガー (mlip)

mlipは、昨年観測されたInvisibleFerretから新しく追加されたファイルです。感染機器上の全てのキー入力を保存するのではなく、ChromeBraveブラウザに入力したキー情報とペーストしたクリップボードデータをC2サーバにアップロードします。

16.mlip.png

図16. mlip

5. AnyDesk (adc)

正規リモート操作ツールであるAnyDeskの設定ファイルを取得、攻撃者がリモートアクセスできるように設定を書き換えてAnyDeskの再起動を行います。Windows環境では、Anydeskが存在していない場合は、C2サーバからダウンロードします。

17.anydesk.png

図17. AnyDesk

終わりに

本攻撃キャンペーンは、ソフトウェア開発者を標的としているため、企業の従業員が通常使用するWindows以外のmacOSLinuxで実行可能なNPMQtElectronなどのクロスプラットフォームアプリケーション開発フレームワークでマルウェアを開発していることが特徴的です。これによりマルウェアが動作可能な攻撃対象領域を拡大させています。

NPMパッケージはサンドボックス製品で実行できない、NPMパッケージやElectronアプリケーションは、スクリプトの難読化手法の変更が容易であるなどの理由で、VirusToal上では検知率が高くない検体も見受けられるためアンチウイルス製品などで検知されない可能性があることも考慮する必要があります。

BeaverTailInvisibleFerretは、パーシステンス(機器再起動後に自動起動する設定)の作成はしないため、感染させた後に迅速にできるかぎりの情報を窃取する手口であると考えています。 

感染防止、暗号資産保護、被害拡大防止の3点の対策について考察します。

感染防止

・会社から貸与されている機器を私用利用しない。

・身元が明らかでない人物からのソフトウェアをダウンロード・実行しない、実機ではなく仮想マシン上での実行を検討する。

・ビデオ会議ツールは、普段自身が使用しているものを使うようにする。

暗号資産保護

・暗号資産ウォレットの鍵を端末ではなくハードウェアウォレット(HWW)に保管することを検討する。

・秘密鍵を複数の鍵に分割し、分散保管するMulti-Party Computation(MPC)ウォレットを提供するサービスを利用することを検討する。

被害拡大防止

感染を防ぐために検討しなければ課題が複数あります。

・SNSを介したメッセージのやり取り、ファイルの転送はメールとは異なり機器に到達する前の検知・ブロックが難しく機器に到達する可能性が高い。

・正規サービスであるGitHubBitBucketからコードをダウンロードするため、通信での検出も難しい。

・NPMパッケージのインストールする振る舞いを不審であると判断しづらい。

そのため、万が一InvisibleFerretが実行されたとしても迅速な検出・ブロックを実現するEDRのようなエンドポイントセキュリティ対策も重要になります。

また、国内では観測されていませんが、メールセキュリティ製品を回避するためにSkype, WeChatなどのインスタントメッセージング アプリケーション系由でマルウェアが配布されるのを中国語圏で多く観測されています。海外拠点を持つ日本企業の方々もメール以外でのマルウェア配送に注視頂ければと考えています。

Indicators of Compromise (侵入痕跡)

GitHub上に公開しています。こちらでご確認ください。

参考情報

[1] Hacking Employers and Seeking Employment: Two Job-Related Campaigns Bear Hallmarks of North Korean Threat Actors

[2] Famous Chollima

[3] https://x.com/DaKingLawson/status/1843508343903801425

[4] https://x.com/DaKingLawson/status/1843508373951778977

[5] Contagious Interview: DPRK Threat Actors Lure Tech Industry Job Seekers to Install New Variants of BeaverTail and InvisibleFerret Malware

前へ

Through the Lens of Six Months: Unveiling the Citrix Bleed Patching and Exploitation Patterns