Malware Plugin Minecraft Solar (s0lar.net): Cara Kerja, Deteksi, dan Pembersihan

Analisis malware yang menyusup lewat file plugin Paper/Spigot dan menjadikan server bot. Cara kerjanya, cara memeriksa server, dan cara membersihkannya.

SenSen
6 menit baca·13 dilihat
Malware Plugin Minecraft Solar (s0lar.net): Cara Kerja, Deteksi, dan Pembersihan

Pada Oktober 2026, salah satu server kami, Realms, ternyata membawa malware di dalam file plugin-nya. Penjelasan untuk pemain ada di pemberitahuan insiden Realms. Tulisan ini untuk sesama owner dan developer server Minecraft: cara kerja malware ini, cara memeriksa server kamu, dan cara membersihkannya.

Malware ini sudah dilaporkan juga oleh server lain, antara lain di MCAntiMalware issue #778, tulisan Plattio (lima jaringan terdampak di Jerman), dan analisis crashdemons. Kontribusi kami adalah analisis dinamis: kami menjalankannya di mesin terisolasi dan merekam apa yang benar-benar dikirim ke server pelaku.


Ringkasnya

  • Sebuah loader kecil disisipkan ke satu class di file plugin yang tetap berfungsi normal. Tanggal file tidak berubah.
  • Saat plugin dimuat, loader mengunduh plugin kedua yang terenkripsi dari s0lar.net, mendekripsinya, lalu memuatnya lewat PluginManager.loadPlugin(). Plugin ini tidak terlihat di folder plugins/.
  • Plugin kedua (bernama "DataFixerUpper") mendaftarkan server sebagai bot, mengunggah semua file plugin dan file server ke pelaku untuk ditulari, mencuri token bot DiscordSRV, mengunggah latest.log, lalu menunggu perintah.
  • Salinan payload disimpan di folder logs/ dengan nama yang mirip log biasa, ditambah karakter tak terlihat U+200B.

Cara kerja malware ini


Dua Versi Loader

Di server kami ada dua versi sekaligus. Pembersihan pertama kami hanya menangkap versi pertama, jadi periksa keduanya.

Versi hex Versi Base64
String tersembunyi Teks hex di-XOR (564A4A4E4D041111 = https://) Base64 di constant pool (czBsYXIubmV0 = s0lar.net)
Kode sisipan Method tambahan (mis. setupServerIntegration) Method tersembunyi int getSemanticsId() atau getTelemetryId() (flag bridge + synthetic) dan field int
Pemanggilan Di dalam method yang sudah ada Prolog 9 byte di awal satu method: aload_0; invokevirtual getSemanticsId; aload_0; swap; putfield
File server Tidak ditemukan patchLibs() di io/papermc/paperclip/Main.class, dipanggil pertama di main()
Di server kami 55 file plugin 52 file plugin (termasuk salinan .bak) dan server.jar

Versi Base64 ternyata sudah ada di server kami setidaknya sejak 30 Mei 2026.


Apa yang Dikirim ke Server Pelaku

Kami menjalankan plugin terinfeksi di VPS sewaan sekali pakai, dengan firewall yang hanya mengizinkan koneksi ke s0lar.net lewat proxy perekam, dan file umpan (token Discord palsu, kata sandi database palsu). Semua lalu lintas, kecuali unggahan file jar, berupa Base64 dari IV 16 byte + ciphertext AES-256-CBC, dan balasannya disamarkan sebagai halaman nginx "404 Not Found" dengan data di komentar HTML <!-- B: ... -->.

Request Isi (setelah didekripsi)
GET /routes/0/d.php Unduh plugin kedua
POST /routes/0/a.php Pendaftaran: port, OS, nama plugin inang, MOTD
POST /routes/0/b.php Info server: hostname, port, world, daftar plugin, pemain online
POST /routes/0/e.php Unggah file jar (plugin dan paper.jar) untuk ditulari, lalu ambil hasilnya
POST /routes/0/v.php Token bot DiscordSRV dan nama user OS
POST /routes/0/s.php File latest.log
POST /a Menunggu perintah (long poll, sekitar 100 detik)

Sebelum menghubungi server pelaku, plugin kedua mengecek koneksi internet ke cloudflare.com, google.com, bstats.org, dan github.com. Kalau gagal, ia diam.

Menurut analisis crashdemons, plugin kedua juga punya perintah tersembunyi lewat chat dan buku yang bisa menjalankan perintah console, untuk akun yang diizinkan server pelaku. Pengaturan bot yang dikirim server pelaku ke kami berisi satu UUID akun Minecraft: d7b77c65-23fe-4159-b73c-50fc3d2c293d. Malware juga mencari UUID e19212b9-53d8-44cd-8eac-41c85f8b0e28. Keduanya bisa saja akun curian, jadi pertimbangkan untuk memblokir kedua UUID ini.

Satu peringatan dari laporan lain: tanpa header a: yang benar, server pelaku mengirim payload lain yang merusak (menghapus server). Jangan mencoba mengunduh payload dari server produksi.


Cara Memeriksa Server Kamu

Cara memeriksa server kamu

Jalankan di folder server (Linux):

# 1. Salinan payload: file yang namanya diakhiri karakter tak terlihat U+200B
find . -name "*$(printf '\342\200\213')" -ls

# 2. Jar terinfeksi (kedua versi), termasuk server.jar dan salinan .bak / .disabled / -jar
P='564A4A4E4D041111|czBsYXIubmV0|aHR0cHM6Ly9zMGxhci5uZXQ|bmV0LnMwbGFyLlNvbGFyTG9hZGVy'
find . \( -name '*.jar*' -o -name '*-jar' \) -type f -print0 | while IFS= read -r -d '' j; do
  unzip -p "$j" 2>/dev/null | grep -a -q -E "$P" && echo "INFECTED: $j"
done

Perintah kedua menemukan semua 107 file terinfeksi yang kami uji dari server kami dan 0 dari 1.073 file bersih di server kami yang lain. Jalankan tanpa pola file seperti contoh di atas: sebagian versi unzip tidak mencocokkan '*.class' di dalam folder, sehingga melewatkan hampir semua file terinfeksi. Jangan menambahkan nama method getSemanticsId ke pencarian cepat ini, karena plugin yang sah (misalnya DriveBackupV2 dan Geyser) juga memakai nama itu.

Di server yang sedang berjalan, plugin bernama DataFixerUpper di /plugins juga tanda kuat.


Cara Membersihkan

  1. Matikan server. Bot bisa menulari ulang file selama server berjalan.
  2. Blokir koneksi keluar ke s0lar.net dan 198.167.197.169 kalau host kamu mengizinkan.
  3. Ganti setiap jar, termasuk server.jar dan isi libraries/, cache/, versions/, dengan salinan resmi. Pindahkan juga salinan .bak dan .disabled keluar dari folder server. Jangan pakai jar dari server terinfeksi atau backup-nya tanpa diperiksa dengan perintah di atas.
  4. Hapus file logs/*.log.gz + U+200B setelah menyimpan salinannya sebagai bukti.
  5. Ganti semua rahasia yang bisa dibaca server: token bot Discord, kata sandi database, kata sandi RCON, token BungeeGuard / forwarding secret, API key panel, dan token git.
  6. Periksa operator dan permission (ops.json, LuckPerms) untuk akun yang tidak kamu kenal.
  7. Periksa server lain yang berbagi file atau staf dengan server terinfeksi, dan cek komputer developer: kami menemukan salinan jar terinfeksi di folder proyek lokal, termasuk di repo git. Plugin kedua juga membawa kode untuk membuka data terenkripsi Windows (DPAPI), yang biasa dipakai untuk mencuri kata sandi dan cookie browser, jadi jangan jalankan jar mencurigakan di komputer Windows.

Untuk plugin berbayar yang tidak punya salinan bersih, sisipan versi Base64 bisa dihapus dengan tepat: hapus method tersembunyi, field-nya, dan prolog 9 byte tadi. Pada 28 jar yang punya salinan resmi, hasil pembersihan ini identik dengan jar resmi (method dan instruksi yang sama).


Indikator (IoC)

Jenis Nilai
Domain s0lar.net (didaftarkan 27 Juni 2025)
IP 198.167.197.169
Path /routes/0/{a,b,d,e,s,v}.php, /a
File logs/<tanggal>-<n>.log.gz + U+200B, /tmp/<angka>.jar berumur pendek
Plugin tersembunyi DataFixerUpper, main com.mojang.datafixers.util.impl.EntityBrainFixer
Penanda jar 564A4A4E4D041111, czBsYXIubmV0, aHR0cHM6Ly9zMGxhci5uZXQ, bmV0LnMwbGFyLlNvbGFyTG9hZGVy, cC5Bc3luY1RpbWluZ3M
SHA-256 plugin kedua 3bd14a1dece3fd17c867b49c135282d304703ff1f19558abe7cba97c22023058
UUID Minecraft d7b77c65-23fe-4159-b73c-50fc3d2c293d, e19212b9-53d8-44cd-8eac-41c85f8b0e28

Kami sudah melaporkan domain, server, dan DNS pelaku ke penyedia masing-masing pada 17 Oktober 2026.


Penutup

Kalau server kamu ternyata terinfeksi, kamu tidak sendirian, dan ini bukan berarti kamu ceroboh: malware ini dirancang agar plugin tetap berfungsi dan tanggal file tidak berubah. Laporan teknis lengkap kami (dalam bahasa Inggris) bisa diminta lewat [email protected]. Kalau kamu menemukan versi lain, kabari kami atau komunitas di laporan publik di atas.


Ringkasan

Aspek Detail
Apa Loader di file plugin yang memuat plugin bot tersembunyi dari s0lar.net
Terdampak Server Paper, Spigot, Purpur, Folia
Mencuri Token bot DiscordSRV, latest.log, semua file jar (untuk ditulari)
Ciri utama File logs/*.log.gz + U+200B, plugin DataFixerUpper, penanda Base64/hex di jar
Pembersihan Matikan server, ganti semua jar termasuk server.jar, hapus salinan payload, ganti semua rahasia

Tentang Penulis

Sen

Sen

Founder, Owner, and Developer

Kontributor Kaizen Network

Komunitas

Bergabung dengan Kaizen Network

Gabung komunitas Discord kami untuk update dan diskusi!

Gabung Discord