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と監査ログがあれば、同じように被害を防げた可能性があります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です