I Accidentally Logged as Admin Into a Threat Actor Website

I Accidentally Logged as Admin Into a Threat Actor Website

Pendahuluan

Kebanyakan investigasi keamanan siber dimulai dari sebuah alert.

Yang satu ini dimulai dari rasa penasaran.

Saat sedang scroll X (dulunya Twitter), saya menemukan sebuah postingan yang membahas website mencurigakan yang terlihat seperti web download software crack tapi isinya malware. Awalnya saya mengira ini hanya portal download biasa. Tapi setelah beberapa jam melakukan investigasi, saya malah berakhir melakukan sesuatu yang sama sekali tidak saya duga:

Saya tidak sengaja login ke dashboard ini yang dimiliki threat actor.

Artikel ini menulis secara singkat terhadap proses investigasi, analisis infrastruktur dan pelajaran yang saya dapat dari interaksi dengan website milik threat actor yang masih aktif.

Berawal dari X

Image

Saat scroll X, saya menemukan sebuah postingan cyber intelligence yang muncul di timeline. Karena saya mengikuti banyak akun yang fokus di bidang cybersecurity dan threat intelligence, timeline saya sering merekomendasikan konten seputar ancaman siber, analisis malware dan indicator of compromise (IOC).

Sebagai bagian dari rutinitas, saya biasanya mereview postingan seperti itu dan menganalisis IOC yang dibagikan. Jika menemukan indikator yang relevan, saya memasukkannya ke environment saya untuk investigasi dan kebutuhan deteksi lebih lanjut.

Dalam kasus ini, postingannya menarik perhatian karena visualnya cukup menarik dan penyampaian threat intelligence yang jelas. Tanpa melakukan validasi lebih dalam, saya mengambil IOC tersebut dan mulai menyelidiki domain yang terkait. Dari analisis yang dilakukan, saya menemukan bahwa domain tersebut masih aktif dan kemungkinan besar dibuat secara vibecoding.

Rasa Penasaran Mulai Mengambil Alih

Alih alih berhenti di upload IOC, saya mulai melakukan enumerasi terhadap web application tersebut menggunakan ffuf.

Directory brute forcing dengan cepat menemukan beberapa path menarik:

/admin/login.php
/config/database.php
/install/install.php

Hasil enumerasi menggunakan ffuf menunjukkan beberapa path menarik, tetapi /install/install.php langsung mencuri perhatian. Walaupun aplikasinya sudah berjalan dan aktif melayani traffic, halaman instalasinya masih bisa diakses.

Image

Hal ini memunculkan pertanyaan yang cukup jelas: apakah installer ada validasinya setelah deployment dilakuakn?

Untuk menjawabnya, saya memutuskan mencoba keberuntungan dan melakukan reinstall. Sebelum lanjut, saya perlu memahami proses setup aplikasinya dan mengumpulkan informasi yang dibutuhkan agar tidak merusak deployment yang sudah ada.

Menyiapkan MySQL dan Mengambil Alih Database

Image

Berdasarkan direktori yang ditemukan melalui ffuf, saya melihat lebih dekat halaman instalasinya. Form tersebut meminta koneksi database MySQL, persis seperti proses onboarding saat aplikasi pertama kali dipasang.

Karena penasaran dengan apa yang akan terjadi, saya menjalankan instance MySQL Docker dan mengeksposnya ke Internet melalui ngrok agar aplikasi target bisa mengaksesnya. Setelah mengisi semua field yang diperlukan, saya menjalankan proses instalasi.

Yang mengejutkan, proses tersebut berhasil.

Image

Walaupun aplikasi sudah berjalan, tidak ada mekanisme yang mencegah installer dijalankan ulang. Tidak ada pengecekan apakah aplikasi sudah pernah diinisialisasi sebelumnya.

Sebagai bagian dari proses setup, terdapat form untuk melakukan setup password account administrator. Setelah instalasi selesai, saya memeriksa instance MySQL saya dan melihat aplikasi mulai membuat tabel serta mengisi skema database.

Image
Image

Pada titik ini, aplikasi sudah terhubung ke infrastruktur yang saya kontrol dan saya memiliki kredensial administrator yang dibuat langsung melalui alur instalasi.

Lalu sesuatu yang aneh terjadi.

Saya bisa login menggunakan akun administrator yang baru dibuat, tetapi dashboard langsung muncul error 500 Internal Server Error.

Asumsi awal saya adalah ada masalah sinkronisasi database dan file aplikasi di server. Instalasinya berhasil, tetapi ada sesuatu yang tidak sesuai di sisi backend.

Karena tidak bisa mengakses dashboard secara leluasa, saya akhirnya mematikan tunnel ngrok dan instance MySQL. Tidak lama setelah itu, domain tersebut mulai mengembalikan error 500 juga. Kemungkinan besar aplikasi masih mencoba terhubung ke database yang saya berikan saat proses reinstall.

Image

Dashboard Tiba Tiba Muncul

Setelah kembali dari beristirahat sejenak, saya kembali mengakses domain tersebut dan melihat bahwa website sudah online kembali.

Threat actor tersebut jelas sudah memperbaiki masalah databasenya dan memulihkan aplikasi.

Saya kembali membuka tab terakhir yang sebelumnya menampilkan error 500 lalu melakukan refresh. dan tiba-tiba dashboard kali ini berhasil muncul tanpa error 500.

Lalu saya teringat satu hal penting: ini adalah aplikasi PHP.

Image

Session login saya sebelumnya ternyata masih valid.

Aplikasi tersebut tampaknya menyimpan session di server, bukan di database. Jadi walaupun backend sudah dikonfigurasi ulang, cookie session saya masih dikenali.

Saya mengirim token session valid yang saya gunakan saat Database saya kontrol dan aplikasi langsung merespons seolah tidak pernah terjadi apa apa.

Tidak ada login ulang.

Tidak ada invalidasi session.

Hanya session yang masih valid dan dashboard admin yang berfungsi penuh.

Evidences

Berikut tampilan dashboard yang saya akses. Bahasa aslinya menggunakan bahasa Rusia. Untuk mempermudah analisis, beberapa screenshot diterjemahkan menggunakan fitur terjemahan bawaan Firefox.

What the Infrastructure Revealed

Analisis lebih lanjut menunjukkan arsitektur yang cukup sederhana tetapi memiliki banyak kelemahan keamanan.

Platform ini terdiri dari aplikasi PHP yang menggunakan MySQL sebagai backend, dengan penyimpanan file untuk menampung payload malware yang menangani proses download.

Salah satu hal menarik adalah alur traffic yang digunakan.

Alih alih mengarahkan korban langsung ke domain yang menyimpan malware, threat actor menggunakan redirector sebagai perantara.

Dalam beberapa kasus, halaman Google Colab digunakan sebagai bagian dari rantai redirect sebelum pengguna diarahkan ke website download utama.

Image
Image
Image
Image

Halaman download dibuat secara dinamis berdasarkan parameter URL, sementara aplikasi dan file yang digunakan sebenarnya tetap sama.

Bergantung pada URL yang diakses, pengguna akan melihat konten download yang berbeda, tetapi semuanya mengarah ke tujuan yang sama.

Tujuannya sederhana:

Mengarahkan pengunjung ke halaman download yang menampilkan download file yang berisi payload malware.

Key Takeaways

Berawal hanya sekadar meninjau IOC dari sebuah postingan di X berubah menjadi investigasi terhadap platform distribusi malware yang masih aktif.

Beberapa hal yang bisa dipetik dari rasa penasaran ini:

  • Infrastruktur malware sering kali jauh lebih mudah diretas daripada yang terlihat.
  • Halaman instalasi yang terbuka dapat menjadi initial access ke dalam dashboard.
  • Kesalahan deployment sederhana bisa menimbulkan dampak keamanan yang besar.
  • Banyak infrastruktur milik threat actor dibangun menggunakan aplikasi PHP hasil vibecoding.
  • Kadang rasa penasaran saja sudah cukup untuk mengubah threat hunting pasif menjadi analisis langsung terhadap operasi yang masih berjalan.

Indicator of Compromised

Berikut beberapa indikator yang ditemukan selama proses investigasi. Daftar ini mencakup domain yang digunakan dalam campaign serta sample hash payload yang berhasil diperoleh dari server terkait.

Domain

micronsoftwares[.]com
wetransfer[.]icu

SHA256

7b03fb383a5ce784a3cb9b0f8a76a84e984d14e553de5d98faff3d07d9793085  payload.exe

Penutup

Saat artikel ini ditulis, domain tersebut masih aktif dan masih mendistribusikan malware.

Walaupun sempat mendapatkan akses ke dalam halaman dashboard administrator, saya pada akhirnya tidak berhasil melakukan take down infrastrukturnya.

Berdasarkan akses sebelumnya, kemungkinan masih ada jalur serangan lain yang bisa memberikan akses lebih dalam seperti RCE. Namun session saya keburu kedaluwarsa sebelum sempat melakukan investigasi lebih lanjut.

Tidak lama kemudian, threat actor tampaknya menyadari bagaimana akses tersebut diperoleh dan memperbaiki celah pada proses inisialisasi yang memungkinkan reinstall dilakukan.

Setelah celah itu ditutup, akses saya pun ikut hilang.

Image

Pada akhirnya infrastrukturnya tetap aktif, tetapi investigasi ini memberikan kesempatan langka untuk melihat bagaimana sebuah platform distribusi malware dibangun, dioperasikan dan dipelihara di dunia nyata.

Sampai jumpa.