Updater.classマルウェアの自己増殖について

この記事ではリバースエンジニアリングというより自己増殖の過程をお見せします。

ここでいう.logファイルは VirusTotal上のこちらのファイルの事を指します。

検証環境

  • Docker
  • mcr.microsoft.com/openjdk/jdk:17-ubuntu

はじめに

実際にサーバアプリケーションを使いプラグインを感染させた挙動は、 Any.Runでご確認いただけます。

実際に実行した際のログ はGistに張っておきます。 空のZipファイルを入れていた関係でエラーだらけですが、 書き換え対象のファイルは判別できるかと思います。

筆者はセキュリティ専門家ではありません。 見当違いなことを言っている箇所が多いと思います。

挙動

挙動はとてもシンプルです。 HDD内のすべてのjarファイルに対して、変更を試みます。 ファイルを直接writeでオープンするのではなく、 同じディレクトリ内に.tmpで終わるファイルを作ってからそれを上書きコピーして保存を行うため、Any.Run上では上書き扱いの警告が出ていません。

プラグイン別の実装

完全にコードを読んだわけではありませんが、 少なくとも下記をincludeしているものに対しては特殊な書き換えを行うようです。

  • net/labymod/api/LabyModAddon
    • onEnableに対し、書き換えを実施
  • net/md_5/bungee/api/plugin/Plugin,
    org/bukkit/plugin/java/JavaPlugin
    • onLoadもしくはonEnableにインジェクション

リバースエンジニアリングについて

やはり難読化されています。

今回記事で取り扱っているものは、 JADXで解析できたうち、mainメソッドから簡単に追えた範囲のみです。

被害を防ぐために

今回のマルウェアは MCAntiMalware で検知可能でした。 また、自己増殖をするため、ファイルのハッシュを厳格にチェックする機構や、 厳しいACLと監査ログがあれば、同じように被害を防げた可能性があります。

最終更新 Nov 15, 2023 16:13 PM JST
Built with Hugo
テーマ StackJimmy によって設計されています。