Exploit Dan Shellcode (Bahasa Mesin)

Dalam dunia computer security, kata 'exploit' merupakan salah satu kata
yang paling sering digunakan dan dijumpai. Exploit seakan-akan seperti
senjata super yang dapat digunakan untuk membobol suatu sistem,
benarkah?!

Exploit memang dapat di ibaratkan sebagai suatu senjata yang dapat digunakan untuk menyerang dan menjebol suatu sistem sehingga kita bisa mendapatkan akses pada sistem tersebut. Prinsip dasar mengenai
exploit  menggambarkan bagaimana proses pembuatan suatu exploit berdasarkan informasi hole pada suatu sistem.

Saat ini, ada cukup banyak jenis exploit yang dapat digunakan. Ada
exploit yang menyerang suatu sistem secara langsung dengan memanfaatkan security hole (Lubang) pada sistem tersebut (system based), dan ada juga exploit yang digunakan untuk menyerang security hole pada suatu aplikasi web (web based e[x]ploit). Ada sangat banyak cara menemukan hole security, dan ada banyak juga jenis hole yang dapat di manfaatkan.

Diantara jenis hole tersebut, ada 1 jenis hole yang dapat dikatakan
sebagai jenis hole tertua dimana jenis hole tersebut digunakan sebagai
dasar pembuatan exploit bahkan hingga saat ini. Jenis hole tersebut
adalah 'Buffer Overflow', yang hingga saat ini masih menjadi salah
satu jenis hole tertua namun banyak di gunakan sebagai dasar menemukan
kelemahan suatu sistem maupun aplikasi yang sifat nya system based.
Saya tidak akan menjelaskan secara rinci bagaimana cara kerja Buffer
Overflow.

Dalam exploit yang memanfaatkan jenis hole buffer overflow, kita
pasti akan menemukan apa yang di sebut dengan "Shellcode". Umumnya
banyak yang tidak memahami apa itu shellcode, bagaimana cara membuatnya, bagaimana prinsip dasar cara kerja nya, dsb. Tapi yang pasti, shellcode berbentuk karakter-karakter aneh yang dimasukan dalam source code suatu exploit, dan saya yakin banyak sekali teman-teman yang penasaran dengan karakter-karakter aneh tersebut dan bertanya-tanya apa itu sebenarnya.

Sebelumnya saya harap anda telah memahami prinsip dasar bagaimana komputer bekerja, khususnya bagaimana suatu program berjalan
pada sebuah komputer, dengan kata lain anda memiliki pengetahuan dasar
mengenai pemrograman tingkat rendah untuk memahami prinsip kerja Shellcode, bagi anda yang belum memahami ada baik nya membaca-baca terlebih dahulu dasar-dasar pemrograman assembly baik pada linux maupun windows (secara
prinsip sama aja kok ^_^).

Shellcode  :

Shellcode merupakan program yang akan mengambil alih suatu sistem sesaat setelah exploit membuat sistem tersebut 'crash'. Shellcode dapat  di ibaratkan seperti telur yang di bungkus oleh exploit, saat exploit
berhasil merusak suatu sistem maka telur yang ada didalamnya akan segera mengambil alih sistem tersebut. Dalam prinsip dasar cara kerja komputer, prosesor hanya akan melakukan 1 buah instruksi dalam satu waktu. Yang memberikan instruksi tersebut adalah program (contoh program : winamp,
notepad, dsb).

Saat program akan di eksekusi (misal: kita klik icon winamp), maka program winamp yang semula ada di hardisk akan diload ke suatu lokasi di memori komputer, dan kemudian prosesor akan mengeksekusi kode-kode program winamp tersebut. Dalam hal ini kita membicarakan  program tingkat rendah (bahasa mesin), program akan memberikan instruksi
kepada prosesor untuk mendapatkan suatu hasil tertentu, sebagai contoh
menuliskan karakter tertentu pada monitor.

Lalu apa yang sebenar nya dilakukan exploit?! exploit akan membuat suatu
aplikasi/sistem yang memiliki kelemahan tertentu 'crash' dan memboikot aplikasi tersebut sehingga  prosesor yang seharus nya menjalankan kode-kode program aplikasi tadi akan diarahkan untuk menjalankan kode-kode lain yang telah di persiapkan oleh exploit. Kode-kode yang telah di persiapkan tersebut adalah shellcode.

Saat exploit merusak suatu aplikasi/sistem, exploit akan menempatkan
shellcode di suatu lokasi memori pada mesin target, selanjut nya exploit
akan membuat prosesor menuju lokasi memori tempat shellcode telah ditanam dan kemudian akan mengeksekusi nya. Mekanisme ini berhubungan langsung  dengan prosesor dan memory, itu sebab nya shellcode dibuat agar dapat
langsung di tanam pada memori sehingga bentuk nya cukup aneh.

Berikut contoh shellcode:

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";

Bagi mereka yang sering kutak-katik exploit terutama dengan mempelajari
source codenya (bukan cuma menggunakan saja) pasti sering melihat bentuk diatas, dan saya yakin banyak yang bertanya-tanya apa itu sebenarnya :).

Karakter-karakter diatas merupakan bentuk yang dapat langsung ditempakan pada memory komputer, dan dapat segera di eksekusi oleh prosesor. Apabila di eksekusi, shellcode diatas akan menginstruksikan prosesor untuk
menampilkan tulisan "Hello, World!" pada monitor (STDOUT).

Cukup Sekian Pembahasan Tentang Exploit Dan Shellcode Semoga Artikel Ini Dapat Bermanfaat Bagi Anda. ^_^


Related :