Dalam keamanan komputer, shellcode dalam arti yang paling harfiah, berarti menulis code yang akan mengembalikan remote shell ketika dieksekusi. Kenapa disebut shellcode? Bila hacker dapat membuat program mengeksekusi code apapun yang dia mau, maka code apakah yang dipilihnya? Pilihan terbaik adalah code yang memberikan dia shell sehingga dia dapat memberi perintah lain yang dia mau dengan leluasa. Oleh karena itu code itu disebut shell-code.
Walaupun umumnya shellcode memberikan shell, shellcode tidak selalu memberikan shell. Attacker bebas menentukan code apa yang akan dieksekusi di komputer korban. Shellcode dimasukkan ke dalam kode eksploit dengan tujuan membypass fungsi suatu software, sehingga software tersebut tidak berjalan secara semestinya, melainkan menjalankan fungsi pada shellcode. Oleh karenanya arti dari shellcode pun telah berkembang, sekarang merupakan code byte yang digunakan dengan payload untuk mengeksploitasi komputer target sesuai yang diinginkan. Biasanya shellcode dibuat untuk dapat mengontrol komputer, ataupun mendapatkan hak akses komputer target, atau yang lainnya seperti mulai dari menghapus file, memformat hardisk, mengirimkan data, menginstall program baru dan sebagainya terserah keinginan attacker.
Code dalam shellcode adalah dalam bentuk bahasa mesin atau opcode. Opcode ini bersifat independen yang tidak memiliki instruksi yang terdiri dari byte NULL atau mengandung operan byte NULL, hal ini disebabkan situasi yang unik ketika pemanfaatan buffer overflow, attacker cenderung mengirimkan instruksi pointer dengan pointer ke shellcode sewenang-wenang. Dengan demikian, pengendalian eksekusi mengalir melalui shellcode/opcode independen tersebut. Biasanya opcode ini tidak dituliskan dalam nilai binary karena akan menjadi sangat panjang, melainkan memakai nilai hexa yang lebih kompak seperti contoh sebagai berikut :
char shellcode[] = "\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xeb\x0f\x59\xb3"
"\x01\xb2\x0d\xb0\x04\xcd\x80\xfe\xcb\xb0\x01\xcd"
"\x80\xe8\xec\xff\xff\xff\x48\x65\x6c\x6c\x6f\x2c"
"\x20\x77\x6f\x72\x6c\x64\x21";
Karakter-karakter di atas merupakan bentuk shellcode yang dapat langsung ditempakan pada memori komputer, dan dapat segera dieksekusi oleh prosesor. Apabila dieksekusi, shellcode di atas akan menginstruksikan prosesor untuk menampilkan tulisan "Hello, World!" pada monitor (STDOUT).
KONSEP SHELLCODE
8:57 AM
0 comments:
Post a Comment