Aug 04

[Pemrograman] Fungsi pada PHP yang Biasa Digunakan untuk Obfuscation

Code Obfuscation adalah sebuah mekanisme untuk mengacak source code sebuah aplikasi sehingga lebih sulit dibaca/dipelajari alurnya. Mekanisme ini digunakan pada bahasa-bahasa pemrograman berjenis interpreted seperti PHP dan Javascript. Code obfuscation akan memiliki manfaat positif jika digunakan untuk keperluan merahasiakan kode program sehingga tidak mudah disalin orang lain tanpa seijin pembuat. Tetapi seringkali code obfuscation digunakan untuk menyembunyikan sebuah malware (backdoor) di dalam sebuah server. Hal ini umum terjadi pada web server yang menggunakan PHP sebagai interpreternya. Sangat sering digunakan untuk menyembunyikan sebuah webshell di dalam server.

Ada beberapa fungsi berbahaya di PHP yang sering digunakan untuk meng-obfuscate kode. Selain bertujuan untuk menyembunyikan file, teknik ini juga berguna untuk menghindari deteksi dari IDS ketika proses upload. Karena untuk malware seperti webshell tentunya ada proses upload dari komputer penyerang ke server.  Berikut ini adalah contoh sebuah dari sebuah kode PHP yang telah di-obfuscate :

Contoh Kode yang Di-Obfuscate

Contoh Kode yang Di-Obfuscate

Ada berbagai macam cara juga untuk meng-obfuscate kode, seperti contoh di atas, yang digunakan adalah menulis code dengan hex string. Cara lain yang umum digunakan adalah menggunakan fungsi-fungsi seperti di bawah ini :

  • eval(string $code) :
  • Fungsi eval akan mengevaluasi sebuah kode yang ada di dalam parameternya sebagai kode PHP. Sederhananya, apapun kode PHP yang ada di dalam parameter eval akan dijalankan web server seolah-olah itu adalah file PHP sendiri. Fungsi ini yang paling sering digunakan, tetapi jarang berjalan sendiri, biasanya ditemani oleh fungsi seperti base64_encode / gz_inflate
  • base64_decode(string $code) :
  • Fungsi base64_decode akan mendekode string yang ada di dalam parameternya kembali ke bentuk teks biasa. Sebelumnya string yang menjadi parameter tersebut menggunakan format base64, sehingga tidak tampak sebagai sebuah source code, tetapi hanya tulisan-tulisan tidak berguna.
  • gzinflate(string $code) :
  • Fungsi gzinflate ini sebetulnya digunakan untuk mendekompresi input parameter yang diberikan. Tetapi sama seperti base64_decode, fungsi ini digunakan untuk mengembalikan source code jahat yang telah dikompres, yang nantinya akan dieksekusi oleh eval()
  • str_rot13(string $code) :
  • Fungsi str_rot13 ini bisa dikatakan mirip dengan caesar cipher. Tugasnya adalah menggeser setiap huruf (huruf saja) sebanyak 13 karakter. Fungsi ini juga dapat digunakan untuk “mengenkripsi” source code.
  • strrev(string $code) :
  • Fungsi strrev sebetulnya hanya digunakan untuk membalik urutan karakter. Namun juga bisa digunakan untuk lebih mengacak source code jahat juga.
  • preg_replace( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) :
  • Fungsi preg_replace normalnya hanya digunakan untuk melakukan pencarian dan pengubahan dengan menggunakan regular expression. Tetapi ada modifier ‘/e’ yang membuatnya bisa berjalan seperti eval (menjalankan string hasil replacement sebagai kode php). Contohnya seperti kode di bawah ini :
Contoh penggunaan preg_replace

Contoh penggunaan preg_replace

Itu tadi adalah fungsi-fungsi yang umum digunakan dan biasanya dikombinasikan satu sama lain seperti contoh kode di bawah ini :

Contoh code yang di-obfuscate dengan fungsi PHP

Contoh code yang di-obfuscate dengan fungsi PHP

Be Sociable, Share!

0
comments

Reply

[+] kaskus emoticons nartzco