Pendahuluan

Tutorial ini akan membahas cara men-deobfuscate script PHP yang di-obfuscate menggunakan Unknowndevice64. Dan pada bagian akhir tutorial ini, akan diberikan script untuk men-deobfuscate secara otomatis.

Analisis

Tutorial ini akan menggunakan contoh script yang terdapat pada situs pastebin. Script yang di-obfuscate menggunakan Unknowndevice64 dapat dengan mudah dikenali, yaitu adanya header berikut ini pada script tersebut:

$i1i='========================================================================
    Obfuscation provided by Unknowndevice64 - Free Online PHP Obfuscator
                http://www.ud64.com/
==============================================================================';

Selanjutnya, terdapat bagian ini (sebagian sengaja disingkat agar mudah dilihat):

$uD64_c0m="\163\164\x72\x5f\162\x6f\164"."13";
$uD64_Com="\147\x7a\151\x6e\x66\x6c\141\164\x65";
$uD64_C0m="\142\x61\x73\14564\x5f\x64\x65\143o\144\145";
$x0zRy=$uD64_Com($uD64_C0m($uD64_c0m("SIoWpdZ6 ... 3gLFUag+viixCpe/Oj==")));
@eval($uD64_c0m('$k0xEm="MIKoogf ... ($k0xEm)));'));

Bagian di atas, jika di-deobfuscate maka hasilnya sebagai berikut:

$uD64_c0m="str_rot13";
$uD64_Com="gzinflate";
$uD64_C0m="base64_decode";
$x0zRy=gzinflate(base64_decode(str_rot13("SIoWpdZ6 ... 3gLFUag+viixCpe/Oj==")));
@eval(str_rot13('$k0xEm="MIKoogf ... ($k0xEm)));'));

Kita akan fokus ke bagian eval pada script tersebut. Bagian tersebut akan kita kerjakan terlebih dahulu dengan memasukkan isinya ke dalam fungsi str_rot13. Hasilnya kemudian kita deobfuscate dan ubah fungsi @eval menjadi echo seperti ini:

$x0kRz="ZVXbbts4EP2VouhDi7xQju0kKAqsLZGpLqRFcoaODL8Uzq5sUqnTlVtdvn7Hdi8P+2AY5PAMz5kzHL0bWLTpP70FG75qsWCG8a4Y09cymfqVSG/TwWCROLOOIyigu0nHvVODnDq/o7i+zdjSrfASTyR0rRyXFH9euPpVFcJptGwsrzgkXHAxG3LRvhJOK/68lPZ+yK/xp0t86AUKfpID3pcHOTOw85nQJ+NEFQd2Mgd2XySyQ9gR390pc0tTWMn0YWalq9vMNpXiCrW/4FpHuAKrWRl3oxLVWc+6wAsvr6DLAaa+vOpcF/asg01WFx37qw6qD7r6pEd+uddd7q0oL90L8uFaJ32tE6THdfeqcvvMMTGfrZU/5CEwZdXCJe6zcfLk6N7ygE3ujcvccZIxbApuNmsITQ58bhq+l2GjpO0aabFTDb6S7rnioVFO7lPLAm0zw3GQsOtXkEbShjtDdVawawrf+tTtRhX6DeEfMqhuDci5wfBD2Y2CJI1KtyPdXVhDOncivCh8zpRfcqRzGRJfMG6dOFfg7sEJ7qWXe+X5pHSLSE+WTjKzI33cEV8VIi2DjizpLmN8sEPnc8A2A7eRDUZ26NFZbBXH76tQ9cbrF4Bj5CD6ooKeSXDCCIxId1/G+nTGl7DoMzBPpJupwPq8wX5NfJWdMjfwUR00+dAISX2iIHyToGrns0fE9t4IzmQwSsKMG1ePJo6qFeJ+fZi+GKhzsN2kEJqpJMypPpHyjnTXd9nIjwrIN9CM6jBQ3c/cuB2zRxD1QFoj0i1kwr2yMnKNQDmaDSxI9wFf8xGDw3bMmKlKwNnan57Iw7lk6BXXUQ4nQX53pHVYeYPrREYrIP9tmKwGt1S2izLHBwXNWfe9stgoxIccpox8j/QgCsJldsTbAkKHI+4VVA+YUGUxzHDkU4n6VY36xUK4MbbXhTeiGN3jEwbyG4MUYZaRn4WvZsWZA9B9zbJaMfIJ5MTa7oZcTeVI/BMdEFmnAv9XCRkVXj0C8HsDLBTxRil631Ko5RrOfdK2SoSoPJjn3LdNRjgXel16o6jOL9TXzAXeyoZ8SnpHc2aiWPheBoxIxwTdYnSCNaR7Igd2SziOo3Glpf4ivqXYLGVCbwZoPoHRRUz8YL+2UEXUr0dFrYaUN7fVQxaztvRq6Ub5ld7JWXeTgm4VYFeG3Skf0wmi7qi2X2Vi1AoWkyfBjpp132RcRc7XE+T17/mkbE0dsvgzr6jE+SHt13HX5K5mOiw5zam99NOmuuDM+VyWDsfBcOpNFtUr2M00tAfN9U068IF0Mx3fD9XPNekmv0xKc2NxmRuQfks9za0YX9de/8QJWwZVW3vJ+93FQpRYNRAfDz/n3heFWf1k6/M6Lw9nfseJ/M1vJuwfXdnqF46FofQZv+QVbV4tjp/efnzn2bAJn95uo+nttp//s41m821/N6f1jP4n22g+3fYz2p+f1/Sj9SU2v6Wzd7/WlOnwOxOhphGdPmecbefz7a8c0+ll53/Yv/7+8aV58/7Nlc37a6r37y5frA8fPnz8Dw==";
echo gzinflate(base64_decode($x0kRz));

Potongan kode di atas adalah hasil dari langkah ke-2 (menggunakan fungsi str_rot13) dan fungsi @eval pada hasilnya diubah menjadi echo. Lanjutkan dengan eksekusi script di atas menggunakan interpreter php. Hasilnya adalah sebagai berikut (dimana fungsi yang terdapat pada variabelnya telah di-deobfuscate dan fungsi @eval diubah menjadi echo):

$y01Zx="TSknQFA0R0EwLzIpPD4jOFI3IyRULDVRWC1TLTw+IzhVNyM4VjcjOFQ3J0BVOUVRWC1DMTwsMzBVNydAVgpNLFVQUS0zPTw+IzhUNyMkVC0yKFspJ0BQNEdBMS8yKTw+IzhXNyMkVyxFUFEtMyU8PiM5RTcjJFQtRVFYCk0tRi08LDMwUTcnQFctJVBRLSM0Qi5SMVgsJSlYNENUQjcjJFQsVVFYLUY5PCwzNFY3IyRWLUVQUS0jNTwKTT4jPFI3IyRWLSVRWC02OTwsMzhVNydAVy01UVgtQzE8LDMwVTcnQFYsVVBRLTM9PD4jOFQ3IyRULTIoWwpNKSdEUDRHSSMvMik0NSNAVDVHRVMtVS0jPiUlKjRVJVo2J0UlLERZWTklKTE6RlEhMkZNMSwlMSUwNlUpCk06NEklNVMhIS0kSUw0REUyMTcxOTI1MSk7RS0zNTclLjsjIVczNkxZMSU9JTY3RTM6RUkvNSZNTDI1PVcKTTwkWTI6VFkmNUdJNjBEUTM6JUk0NTRVWDVVLUc9VFEjMjMhNjE2PVA1Q2BVM0RcUDREVTE6Nk1QMkQ1SwpNPCU9SywjKTUsJTVZMlU1SyxUVSUsNEUuOkYxRjQmTTo1VT1aNkQ5MTVFRFU1RlExPCQtSywjPTAxJTRXCk00Nk0xKlUxWTwkNS40VyEzNiQwVTlFMFEtNTkqMTNgVjJGUUs8RFE0MkRNMT5ERVgzRC1YOUUhWi4mRTgKTSw2LFQ0NDk6MSU1NjVEUTg7JzEoNTdEUTQ0UTMyNlU5MTVESzJGTFgyVTE1M0RFMDEjNSM1VlFUMzRZTApNPiUpKzUkVUszJ0RYPTU5WjtXMSw6M0UjNEQ1KTtFJVowRFUyOjRUWDM1OTo2JSk2OyVBNSw1JVEyNTlXCk08NSUlNUU9KT40NVM1QyFLOjRJSzU3LTkwUzUhNTY9UDNEUUk5UzE4MUQpNzQmSTk+RSxQLjRFLzVGXUkKTTUkMFk5JFEjLjY5LjRUWTEyNlBYO0U1STM2SSw+REVIMzU5WDQkUU0wNkErNFM1LjNGTTE8RT0kLCZNNgpNMFNBWTVVLUssNFk1PiRdKjslJU0wVkxQPjRNNDkmKTE0VkEsMlNgVDxVQFA2N0kuPkU1UzU2UVAzVF0lCk02My03PjREUzRVPSE6NFEjPFZBMDUlKTA0RTRQLCU5WThWSTY1JUkoNVZMUDxVKSY9JC0sPjNBVzMnSUwKTTUlITQsNTUwPkctKzI2UUQwNUUnMDRNOTA2XF0oQ0wqMCY1Vjg2UEgpJ0BQNEdBNSgjVEApJ0BQNEdBMQpNKiIxWCwlKVg0QkBEPiMhMj4lYEgpJ0RQNEdJIyoyREkqM01gOTc5QTsiQEQ+IyEyPkU0QC8yYEQ+IyEyCk0+RSRIKSdAUDRHSTIqIjFYLCUpWjQiQEQ+IyFSPkNgSSoyREkuVCFFPUYlTCoiMVgsJSlaNUJgXSgiMVgKPiwlKVo2MkBEPiMhMj5FSEgpJ0BQNEdJOCoiMVgsJ0kyPjJESSoyRFsKYAo=";
echo convert_uudecode(base64_decode($y01Zx));

Kembali jalankan potongan script di atas menggunakan interpreter php, maka hasilnya adalah sebagai berikut:

$x0RxP="\x62\141\x73\x65\66\64\x5f\x64\145\x63\157\x64\145";
$x0RxQ="\x67\172\151\x6e\146\x6c\141\x74\145";
$x0RxR="\143\x6f\156\166\145\x72\164\x5f\165\x75\x64\145\x63\157\x64\145";
$y0RzC="TT84Vys7SCxQJSQzXyE2NydRQjlAJkQ0TEAmIiJEW0A4JlRIREtYITInSSUqNl0wMk9DWEYySjZOTklIWwpNRkNFVzVBLShZTUMxWSgwLCI0VEgpV05NO0RMQikpJEkpWk02U0UyKUk3ME1INjdfPkZWWzZFQVY5VlQpCk07PDU7QkQ+TypENSpSXD5fT15VJE06JlkrLTJKQzIxNCxfPz8iX1c4QFZDUVVLXltHUy1QLSImYEY+Jk8KTUNIPD5CWltMNlxRKTMkLy8uVzotLi9CREInQzBMRiM8MVZXRVlXU1QqIVwqQEVWIyEsV0kiJkUsYC5AUgpNLig4XFBWPjYzS09IOVoiTD9dLC9fNSNQIl8nUiMjLzIhMVxPLmAhKS5NNkQrWD0kVC8yWSk1NUxOJlQmCk0yKTdbQShLK04sX0YzNzUsUlpOOEY3WyI3SWAiLCshPTRPRU00VycjVTZHWk0sRFtCLy8wLzlTPT1UPzsKIldAYGAKYAo=";
@eval($x0RxU = $x0RxQ($x0RxR($x0RxP($y0RzC))));
@eval($x0RzU = $x0RzQ($x0RzR($x0RzP($x0rz0))));
@eval($x0RzV = $x0RzY($x0RzZ($x0RzX($x0zRy))));

Hasil dari langkah ke-4 di atas jika di-deobfuscate, maka akan seperti ini:

$x0RxP="base64_decode";
$x0RxQ="gzinflate";
$x0RxR="convert_uudecode";
$y0RzC="TT84Vys7SCxQJSQzXyE2NydRQjlAJkQ0TEAmIiJEW0A4JlRIREtYITInSSUqNl0wMk9DWEYySjZOTklIWwpNRkNFVzVBLShZTUMxWSgwLCI0VEgpV05NO0RMQikpJEkpWk02U0UyKUk3ME1INjdfPkZWWzZFQVY5VlQpCk07PDU7QkQ+TypENSpSXD5fT15VJE06JlkrLTJKQzIxNCxfPz8iX1c4QFZDUVVLXltHUy1QLSImYEY+Jk8KTUNIPD5CWltMNlxRKTMkLy8uVzotLi9CREInQzBMRiM8MVZXRVlXU1QqIVwqQEVWIyEsV0kiJkUsYC5AUgpNLig4XFBWPjYzS09IOVoiTD9dLC9fNSNQIl8nUiMjLzIhMVxPLmAhKS5NNkQrWD0kVC8yWSk1NUxOJlQmCk0yKTdbQShLK04sX0YzNzUsUlpOOEY3WyI3SWAiLCshPTRPRU00VycjVTZHWk0sRFtCLy8wLzlTPT1UPzsKIldAYGAKYAo=";
@eval($x0RxU = gzinflate(convert_uudecode(base64_decode($y0RzC))));
@eval($x0RzU = $x0RzQ($x0RzR($x0RzP($x0rz0))));
@eval($x0RzV = $x0RzY($x0RzZ($x0RzX($x0zRy))));

Bisa terlihat bahwa, 2 baris terakhir belum bisa di-deobfuscate. Itu karena variabel maupun fungsinya masih belum diketahui. Oleh sebab itu, kita terlebih dahulu harus men-deobfuscate bagian @eval yang pertama. Hasilnya adalah sebagai berikut:

$x0RzP="\x62\141\x73\x65\66\64\x5f\x64\145\x63\157\x64\145";
$x0RzQ="\x67\172\151\x6e\146\x6c\141\x74\145";
$x0RzR="\143\x6f\156\166\145\x72\164\x5f\165\x75\x64\145\x63\157\x64\145";
$x0rz0="TT04VFsjSGBQIyQvTzRPNGBBLjhTKCJbISEiQEtHIidCXStBNSpbJFA2JEhML1NPJ00jV1tGSVFYQUxDIwpNQkg+KkpbSlJBXVFQJjEqWFE0RUxfJkcpRTNUOiJdP2AiV0JdXCJNTltHVz9dLUcyTzQ+MFBEU00pQDRdCihdS2A+NU89Xj1FXGAKYAo=";

Hasil di atas kemudian dapat kita gunakan untuk @eval kedua, dan kita cukup mengubah @eval menjadi echo sehingga menjadi seperti ini:

$x0RzP="\x62\141\x73\x65\66\64\x5f\x64\145\x63\157\x64\145";
$x0RzQ="\x67\172\151\x6e\146\x6c\141\x74\145";
$x0RzR="\143\x6f\156\166\145\x72\164\x5f\165\x75\x64\145\x63\157\x64\145";
$x0rz0="TT04VFsjSGBQIyQvTzRPNGBBLjhTKCJbISEiQEtHIidCXStBNSpbJFA2JEhML1NPJ00jV1tGSVFYQUxDIwpNQkg+KkpbSlJBXVFQJjEqWFE0RUxfJkcpRTNUOiJdP2AiV0JdXCJNTltHVz9dLUcyTzQ+MFBEU00pQDRdCihdS2A+NU89Xj1FXGAKYAo=";
echo($x0RzU = $x0RzQ($x0RzR($x0RzP($x0rz0))));

Setelah dijalankan, maka hasil yang diperoleh adalah sebagai berikut:

$x0RzX="\142\141\x73\x65\66\64\x5f\144\145\x63\157\144\145";
$x0RzY="\147\172\151\x6e\146\154\141\x74\145";
$x0RzZ="\143\157\156\166\145\162\164\x5f\165\x75\x64\145\x63\157\144\145";

Ketiga variabel di atas adalah bagian yang dibutuhkan oleh @eval ke-3 dari langkah ke-5. Berikut ini adalah script untuk @eval ke-3 tersebut (dimana fungsi @eval kita ubah menjadi echo):

echo($x0RzV = gzinflate(convert_uudecode(base64_decode($x0zRy))));

Variabel $x0zRy pada potongan kode di atas adalah variabel pada bagian awal script yang lengkap. Dari sini, kita dapat menerjemahkan secara lengkap bagaimana proses deobfuscate yang dilakukan oleh script tersebut menjadi seperti ini:

gzinflate(convert_uudecode(base64_decode(gzinflate(base64_decode(str_rot13($x0zRy)));

Dengan mengetahui metode deobfuscate yang dilakukan oleh script tersebut, kita dapat membuat deobfuscator menggunakan bahasa scripting PHP.

Script Deobfuscator

Untuk mempermudah proses deobfuscate, maka kita dapat menggunakan script berikut ini:

<?php
if (empty($argv[1])) die("Usage: $argv[0] <file>\n");
$co = array("ssl"=>array("verify_peer"=>false,"verify_peer_name"=>false));
preg_match('/c0m\("([^"]+)/', file_get_contents($argv[1], false, stream_context_create($co)), $ud64);
echo "<?php\n".gzinflate(convert_uudecode(base64_decode(gzinflate(base64_decode(str_rot13($ud64[1]))))))."?>\n";
?>

Simpan script di atas dengan nama und64.php, lalu jalankan dengan memberikan nama script yang akan di-deobfuscate. Contohnya seperti ini:

$ php und64.php "BA38iCTz.php"

atau dapat pula digunakan dengan memberikan URL script yang akan di-deobfuscate seperti ini:

$ php und64.php "https://pastebin.com/raw/BA38iCTz"

Penutup

Sekian tutorial singkat kali ini, semoga bermanfaat. Terima kasih kepada Tuhan Yang Maha Esa, dan Anda yang telah membaca tutorial ini.

Pertanyaan

Ini bisa jalan di termux bos ? atau khusu ubuntu/debian ? soalnya w coba buka script ente di termux gak bisa meng deobfusction malah yang keluar cuma panah ">"

Termux

saya di termux bisa gan

itu scriptnya khusus buat Fedora.

Baru liat postingan lama

lupa hapus koment nya -_-

Request

Pak bos request DEOBFUSCATOR EddieKidiw dong.

Dasar pemalas!

Siap

Oke siap pak, Install fedora dulu