【Minecraft】マイクラのModを通じて感染する「fractureiser」について

少し前、CurseForgeやBukkitからダウンロードしたMod/Pluginを通じて感染するマルウェアがあることがIrisのTwitterやCurseForgeのTwitterなどから発表されました。

今回はそれに関して起きやすい勘違いと、どのような動作をするのかについて話したいと思います。
感染してるかどうかの確認などに関してはちょっとだけ話しますが、その辺に関しては他の記事も合わせて見てください。
基本的にhttps://github.com/fractureiser-investigation/fractureiser をさっくりとした形で翻訳した内容になります。

(CurseForgeはCF,MinecraftはMCと略します)

重要な事実: プラットフォームの脆弱性ではない

「CurseForgeとBukkitからダウンロードしたMod」の部分が結構強調されてるが故に誤解されるのが、
「CurseForgeやBukkitの脆弱性ではない」ということです。プラットフォーム自体が侵害されたわけではありません。

そのため、これらはModrinthなどの他のMod配布プラットフォームでも同様の影響があります。

また、これらの問題は、対象のModをダウンロードしていないユーザーや、そもそもModdedなMinecraftをプレイしていないユーザーには影響しません。
それでも、最近Modをダウンロードしたユーザーはスキャンを行うべきで、これからもModをダウンロードする際は細心の注意を払うべきです。

fractureiserはどのように動作し、どのように拡散されたのか

fractureiserは、Javaプログラム開発者のPCを通じて拡散するワームに近いものです。
主にWindowsとLinux用に作成されています。そのため、MacOSユーザーは影響を受けない可能性があります。

初期段階、fractureiserが埋め込まれたModをマルウェアの開発者自身がアップロードしました。(乗っ取られたアカウントを通じて?その辺はわかりませんが)

この感染したModを有名なModpackの開発者が試した結果、当然その開発者のPCは感染することになります。

マルウェアは感染するとPCのほとんどのjarファイル(MinecraftのModに限らず)に感染し、拡散用のプログラムを埋め込みます。
その結果、被害者が開発していたModのjarファイルにも感染し、それに気づかず被害者がアップロードした結果、このModpackをダウンロードした多くのユーザーに感染しました。そして、そのユーザーを通じて同じ手法で拡散します。

これに関して詳しく解説します。fractureiserに感染したPCは、主に3つのステージに分けられる動作を行います。

Stage 0 – 感染したMod本体

感染したMod本体。実行されると、攻撃者のサーバーからStage 1用のコードをダウンロードして、感染したModの種類に応じて特定の引数を渡して実行します。

Stage 1 – dl.jar

Stage 1は、Stage 2のファイルを攻撃者のサーバーからダウンロードし、スタートアップに登録するために使われます。

dl.jarが実行されると、システム設定にneko.runが設定されているかどうかを確認し、設定されていたら即座に終了します。(多重実行の防止)
設定されていなければ、空のstringを設定して続けます。

このステージでは、攻撃者のサーバーとCloudflare pagesに接続し、Pagesは攻撃者のサーバーIPを取得するために使用されます。(もちろんこれは発覚した後に停止されました)

その後、Stage 2のファイルを攻撃者のサーバーからダウンロードして、スタートアップに登録します。

Stage 2 – libWebGL64.jar

Stage 2は、Stage 3のファイルをダウンロードし、更新があった場合に更新されたStage 3のファイルをダウンロードするために使われます。

ポート9655を開き、元のJVMが死んだときに共倒れするようにシャットダウンをフックします。

その後5秒おきに攻撃者のサーバーにStage 3のファイルに更新があるかを確認します。
攻撃者のサーバーに接続し、更新可能かどうかを確認した後、被害者のPCにあるclient.jarとハッシュを照合し、
更新がある場合はStage 3のファイルを受信し、ファイル属性で非表示にします。

Stage 3 – client.jar

メインの攻撃ファイル。実行されるとコンピューター上の全てのjarファイルをスキャンし、Mainクラスのあるjarや、MCModの可能性があると判断されたjarにStage 0のプログラムを埋め込みます

これにより、Stage 3を通じてほとんどの単純なJavaプログラムや、MCModのjarが感染することになります。
被害者が感染したjarに気づかず、CurseForgeやModrinth、BukkitにModをアップロードすることによって、そのModをダウンロードした/更新したユーザーに拡散します。

また、client.jarは以下の情報を攻撃者に送信します。

  • ブラウザのCookie
    (サイトの認証情報などを含む、ほとんどの有名なブラウザーに対応している)
  • Discordアカウント
    (標準クライアントに限らずCanaryやPTB、Lightcordに対応している)
  • 資格情報マネージャーに保存されているMicrosoftアカウントの認証情報
  • Minecraftランチャーに保存されているMicrosoftアカウントの認証情報
    (ほとんどの有名なランチャーに対応している)
  • 仮想通貨ウォレット

それ以外にも、クリップボードに含まれる仮想通貨アドレスを攻撃者のものに置き換えます。
また、Windows Sandbox上で実行されている場合は、クリップボードにマルウェアへのショートカットを設置し、共有クリップボードを経由してSandbox外で間違って貼り付けられるように仕向けます。

これは難読化されていましたが、6/7 14:20(UTC)に誤って難読化されていないファイルが一時的にアップロードされています。
それらを調査した結果、実際に存在していたものは上記のみでした。

これがfractureiserの大まかな動作です。これらから分かる通り、プラットフォームの脆弱性を通して感染したModを埋め込んでいるのではなく、感染したPCのModファイルに埋め込み、被害者が感染に気づかずModがアップロードされ、それがダウンロードされることによって多くのユーザーや開発者に感染しています。

感染しているかどうかの判別方法

ここ2ヶ月間でModをダウンロードしたことのあるユーザーは、とりあえず感染しているかどうかをチェックしておくことをおすすめします。

Stage 2のファイルチェック

とりあえず最初にStage 2のファイルがあるかどうかを見ることをおすすめします。
%localappdata%\Microsoft Edge に移動(MicrosoftEdgeMicrosoft\Edge ではありません)して、
フォルダーがそもそも存在しており、libWebGL64.jar がある場合は、完全に感染しています。
これは隠しファイルを表示しない設定にしていたり、保護されたオペレーティングシステムファイルを表示しない(推奨)が有効な場合、表示されない場合があります。

見つけた場合はすぐにフォルダーごと削除してください。Javaが使用していて削除できない場合は、タスクマネージャーから開いているすべてのJavaプログラムを停止してから、削除してください。

その後、PCをシャットダウンしてから、別の端末からそのPCのブラウザやアプリでログインしていたMicrosoftアカウントやDiscordアカウントなどのパスワードをすぐに変更してください。
使用可能なサービスで二段階認証を有効にしていない場合は、有効にしてください。
そうしたら、必要なファイルを外部ストレージにバックアップして、可能であればWindowsを再インストールしてください。

Stage 0の検査

Stage 0の感染しているModファイルの検査用ツールが、CFの親会社であるOverWolfからリリースされています。
特定のフォルダーを指定すれば自動で検査してくれるので、これが一番おすすめです。

https://github.com/overwolf/jar-infection-scanner/releases

今後どうすべきか

怪しいModはダウンロードしない

9Minecraftなどの再配布サイトなどからModをダウンロードせず、正規の場所からダウンロードしましょう。
Stop Mod Reposts の拡張機能(Chrome / Firefox)などを活用して再配布サイトを見分け、公式の配布場所からダウンロードしてください。

常に最新の情報に耳を傾ける

様々な信頼できるコミュニティから最新の情報を常に入手しましょう。今回のようなマルウェア情報などには、いち早く気づくことが重要です。

重要なファイルはバックアップし、最新のソフトウェアやウイルス定義を取得する

重要なファイルは外部のストレージやクラウドにバックアップしたり、使っているソフトウェアやウイルス対策ソフトの定義を常に最新のバージョンにアップデートしておくことが日頃から重要です。

おわりに

ということで、fractureiserの大まかな動作、拡散サイドの話と、感染の確認方法についての話を少ししました。
ModdedなMinecraftを遊ぶ時は、常に最新の情報に耳を傾け、怪しいModなどはダウンロードしないようにしましょう。

詳しいユーザー向けの情報は https://github.com/fractureiser-investigation/fractureiser/blob/main/docs/users.md から確認できます。その他の記事からも情報を確認し、今自分が何をすべきかを確認してください。

参考