Menemukan PID Suatu Proses di VPS dan Melakukan Auto-Kill Proses tsb

Jadi ceritanya begini, suatu saat server VPS salah seorang rekan mendapat warning tentang abuse dan serangan spam yang berasal dari VPSnya. Singkat kata nih, saya segera login root ke terminal VPS tersebut untuk melakukan semacam audit (sok pakar dikit lah, ntar dia kasih ongkos hahaha). Untuk menemukan apakah ada aplikasi ilegal yang running, seperti biasa saya luncurkan command sederhana yaitu:

ps ax

Hanya dengan melihat sekilas, pandangan saya langsung menangkap hal mencurigakan! Terdapatlah suatu proses yang berasal dari sebuah script dg nama acak yang berada di direktori /tmp (sebuah direktori incaran favorit para attacker).

Saya langsung yakin bahwa inilah biang keroknya. Benar saja ketika saya tengok direktori /tmp, di dalamnya terdapat beberapa file dengan nama acak  yang di awali dengan string php dan beberapa scriptnya berekstensi .c.

Menemukan sebab pasti kenapa script ilegal dapat terinjek ke direktori tersebut sebetulnya bisa dibilang sulit. Tapi hampir bisa dipastikan bahwa vulnerability yang dimanfaatkan ini umumnya berasal dari theme, plugin, script (kebetulan cms yang dipakai adalah WordPress), aplikasi-aplikasi yang terinstal misalnya panel, ftp, webserver, dll.

Nah sebelum script ilegal atau malware tersebut mengakibatkan kerusakan lebih berat yang dapat berakibat dimatikannya networking di VPS oleh pihak provider, maka saya harus segera menghentikannya dan mematikannya jika di waktu depan proses tersebut running lagi. Jika dilihat dari output perintah ps ax, tiap proses termasuk proses malware ini akan mempunyai PID, yaitu suatu angka unik yang merujuk pada proses yang sedang dijalankan oleh filenya. Bermodal nomor PID, saya bisa mematikan prosesnya dengan command: kill -9 12345 (12345 ini adalah contoh PID dari suatu proses, bisa dilihat dari ps ax kolom paling kiri).

Matilah dia… Hmm tapi karena sumber exploitnya belum ketemu maka script jahat yang baru bisa masuk lagi dan proses tersebut akan aktif lagi (tentu PID-nya sudah berbeda). Oleh karena itu saya mengutak atik sebuah bash script untuk otomatis menemukan PID dari script tersebut dan mengirimkan signal kill jika ditemukan. Kurang lebih begini:


Tengok dengan seksama baris kedua, di situ saya gunakan string tmp/php untuk menemukan prosesnya via command grep, supaya lebih paham kenapa saya pake string tmp/php coba cek lampiran screenshot di bagian atas postingan ini. Rangkaian mantra ini saya simpan ke dalam sebuah berkas di /usr/bin/killtmp lalu saya berikan chmod +x kemudian supaya autorun saya oprek file /etc/crontab dan memasukkan entri supaya bash script tersebut running tiap 5 detik.

Alhasil, aman! Tidak pernah lagi proses malware tersebut beraksi di VPS. Karena tentu jika dia sempat nongol maka 5 detik kemudian dia akan otomatis kena kill. Untuk lebih mengoptimalkan pengamanan simpel ini, saya juga membuat script sederhana berisi command untuk menemukan file dengan nama phpxxxxxxxxx dan phpxxxxxxxxxx.c di /tmp dan men-deletenya otomatis.

Note: cron per 5 detik dan script autodel file dalam direktori /tmp tidak perlu saya bahas di sini.

Bagi yang server VPSnya dirasa terkena malware, silakan request removal di sini.

Leave a Reply