• Posted by : NisaStar7 Sunday 8 December 2019


    Hasil gambar untuk Buffer Overflow attack

    Pengertian Buffer

    Buffer adalah area memori yg menyimpan data ketika mereka sedang dipindahkan antara dua device atau antara device dan aplikasi.

    Buffer dilakukan untuk 3 hal :
    1. Untuk meng-cope dgn kesalahan yg terjadi karena perbedaan kecepatan antara produsen dgn konsumen dari sebuah stream data.
    2. Untuk menyesuaikan device-device yg mempunyai perbedaan dalam ukuran transfer data, dimana Buffer dipakai untuk fragmentasi dan pengaturan kembali pesan di terima.
    3. Untuk mendukung copy semantics untuk aplikasi I/O


    Pengertian Overflow

    Over adalah beban yg berlebihan data yg melebihi kapasitas tempat yg akan dijadikan tempat data tersebut, sedangkan Flow adalah aliran.

    Jadi kesimpulannya Buffer Overflow adalah area memori pemindahan data antara device yg berbeda dan data yg dialirkan melebihi kapasitas memori pemindahannya.




    Konsep Buffer Overflow

    jika kita mengakses suatu situs web, kemudian saat kita memberikan input yg tidak semestinya pada field browser ataupun pada field UserID dan Password, maka Buffer Overflow mungkin akan terjadi pada web yg vulnerability (mudah diserang).

    Contohnya :

    char rumah[20];// rumah yg berisi 20 orang saja
    char rumah[10];// rumah yg berisi 20 orang saja 

    Jika semua yg ada di rumah (20 orang) masuk kedalam kamar (yg hanya dapat berisi 10 orang saja), kamar itu tidak akan dapat menampung 10 orang lainnya.

    Hal inilah yg dapat kita katakan Buffer Overflow, Dimana kamar itu diibaratkan sebagai buffer, dan karna kapasitas kamar lebih kecil dari kapasitas yg akan masuk, maka dapat dikatakan overflow. Dengan kata lain, pemahaman buffer overflow sendiri adalah keadaan dimana buffer (variabel yg digunakan suatu aplikasi untuk menyimpan datanya di memori) terisi dgn data yg ukurannya melebihi kapasitasnya sendiri. Akibatnya, kelebihan data itu akan mengisi alamat memori lain yg bukan milik variabel tersebut atau dalam hal ini disebut dgn overwrite.

    Beberapa serangan yg biasa dilakukan dgn teknik buffer overflow antara lain:

    1. Buffer overruns pada kebanyakan web server
    Web server apache dan IIS memiliki celah keamanan. Worm seperti code Red (Untuk IIS) dan linux. Slapper (untuk apache) menjadikan celah keamanan yg lebar.

    2. DNS Overflow
    Beberapa server DNS (BIND) sebelumnya tergolong rentan terhadap overflo. suatu serangan yg akan memberikan nama DNS sangat panjang. Nama DNS dibatasi hingga 64-bit per subkomponen dan 256 byte secara keseluruhan.

    3. Serangan DNS
    Server DNS bisanya dijalankan pada mode "Trust" oleh server dan user, Maksudnya bahwa server DNS dapat di kompromikan agar melancarkan serangan lebih jauh pada user dan service lainnya. Hal ini menjadi server DNS merupakan target utama serangan hacker.

    4. Mengelabuhi cache DNS
    Sederhananya, bekerja dgn mengirim suatu pertanyaan untuk meminta domain yg sesungguhnya dan akan diberi jawaban yg tentu saja salah.




    Contoh Buffer Overflow

    Contohnya, program memiliki 2 item data yg berdekatan dalam memori :  sebuah string buffer 8-byte-panjang,A,dan integer big-endian byte dua,B.

    BO3_1

    Awalnya A tidak berisi apa-apa kecuali nol byte, dan B berisi nomor 1979.

    BO3_2

    Sekarang program mencoba untuk menyimpan string diakhiri nul-"excessive" dgn encoding ASCII dalam buffer A.


    "excessive" memiliki panjang 9 karakter dan meng encode sampai 10 byte termasuk terminator, Tapi A dapat mengambil hanya 8 byte.

    Dengan mengagalkan pemeriksaan panjang string,ia juga mnimpa nilai didalam B :

    BO3_3
    BO3_4

    Nilai B kini diganti oleh sejumlah "form number" yg terbentuk dari bagian karakter string. dalam contoh ini "e" diikuti dgn byte nol akan menjadi 25.856. Menulis data melewati ujung memori yg dialokasikan kadang-kadang dapat dideteksi oleh sistem operasi untuk menghasilkan kesalahan-kesalahan segmentasi yg mengakhiri proses.




    Tindakan Untuk mencegah Buffer Overflow

    Metode yg dijelaskan dibawah yg tidak benar-benar bisa mencegah kemungkinan serangan. Tetapi metode ini, dapat meminimalisir dari kegiatan Buffer Overflow yg mengakibatkan kerusakan Stack.


    • Menulis code yg aman
    Buffer Overflow adalah hasil dari input yg berlebihan kedalam buffer. C library seperti strcpy(), strcat(), sprintf(), dan vsprintf() Beroperasi pada null terminated strings dan tidak mengecek batas input. gets() juga berfungsi lainnya yg memasukan input ke dalam buffer dari stdin. Pada scanf() juga bisa mengakibatkan buffer overflow.

    • Stack execute invalidation
    Karena koding jahat (contoh, instruksi assembly untuk mengambil ahli root shell) merupakan input argument kedalam program, ini tersimpan kedalam stack dan bukan dalam code segment. Oleh karena itu,solusi mudahnya tidak memperbolehkan stack mengeksekusi instruksi apapun. Kode apapun yg dieksekusi dgn kode lainnya didalam stack dapat mengakibatkan segmentation violation.
    • Compiler Tools
    Beberapa tahun terakhir, compiler mempunyai kemampuan lebih. Beberapa compiler dilengkapi peringatan dalam penggunaan konstruk yg tidak aman seperti gets(), strcpy(), dan sejenisnya,
    sebagai contoh :


    EXSPLOIT

    Exploit "hacking" dalam arti yg lebih spesifik adalah sebagai pemanfaatan kelemahan dari sebuah sistem untuk tujuan-tujuan yg diluar dari penggunaan normal. Kelemahan-kelemahan ini dapat berupa kesalahan programman,sesuatu yg tidak direncanakan oleh pemrogram asli dan lain-lain.

    Umumnya adalah exsploit yg akan memberikan kita akses tidak terbatas keseluruh aspek dari sebuah sistem. Dalam Linux,sering kita dengar istilah mengexsploit program tertentu untuk mendapat privilese root. Tentu saja mendapatkan 'root' bukanlah satu-satunya tujuan pengeksploit sistem. Seperti yg mungkin sering di alami, kadang sebuah cacat dalam program seperti maild atau ftpd dapat dimanfaatkan untuk tujuan seperti header forging,ip spoofing,denial of service attack,dan mail bombing.


    SHELLCODE

    Dalam keamanan komputer, shellcode berarti menulis kode yg akan mengembalikan remote shell ketika dieksekusi. Bila Hacker dapat membuat program mengeksekusi kode apapun yg dia mau,maka kode pilihan adalah kode yg memberikan dia mau dengan leluasa. Oleh karena itu kode itu disebut shell code.

    Walaupun umumnya shellcode memberikan shell tapi shellcode tidak selalu memberikan shell. Attacker bebas menentukan code yg akan dieksekusi di komputer korban. Shellcode dimasukan ke dalam kode exsploit dgn tujuan mem-bypass fungsi suatu software, sehingga software tidak berjalan secara semestinya, melainkan menjalankan fungsi pada shellcode. Oleh karenannya arti dari shellcode pun telah berkembang, sekarang merupakan code byte yg digunakan dgn payload untuk mengeksploit komputer target sesuai yg diinginkan.

    Biasanya shellcode dibuat untuk dapat mengontrol komputer ataupun mendapatkan hak akses komputer target, atau yg lainnya seperti mulai dari menghapus file, memformat hardisk, mengirim data, menginstall program baru dan sebagainya terserah keinginnan attacker.

    Kode dalam shellcode adalah dalam bentuk bahasa mesin atau opcode. Opkode ini bersifat independen yg tidak memiliki instruksi yg terdiri dari byte NULL atau mengandung operan byte NULL, hal ini disebabkan situasi yg 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 ditulisakan dalam nilai binary karena akan menjadi sangat panjang, melainkan memakai nilai hexa yg lebih kompak.


    Hubungan Eksploit, Buffer Overflow dengan ShellCode

    Semua berawal dari keteledoran sang programmer sehingga programnya mengandung vulnerability yg dapat di eksploit untuk membuat program tersebut menjalankan kode apapun yg diinginkan hacker,kode ini disebut shellcode.

    Shellcode adalah kunci keberhasilan eksploitasi buffer overflow (hole/lubang keamanan yg paling rentan) dan lubang keamanan lainnya yg berorientasi memori.

    Shelcode merupakan program yg akan mengambil alih suatu sistem sesaat setelah exsploit memanfaatkan buffer overflow lalu membuat sistem tersebut 'crash'. Shellcode dapat diibaratkan seperti telur yg dibungkus oleh eksploit, saat eksploit berhasil meng-buffer-overflow-kan suatu sistem maka telur yg ada didalamnya akan segera mengambil alih sistem tersebut.

    Penerapan dalam prinsip dasar cara kerja komputer, prosesor hanya akan melakukan satu buah instruksi dalam satu waktu. Yg memberi instruksi itu adalah program (contoh : program winamp,notepad,dan sebagainya). Saat program akan dieksekusi (misal kita meng-klik icon winamp), maka program winamp yg semula ada di hardisk akan diload kesuatu lokasi di memori komputer, dan kemudian prosesor akan mengeksekusi kode-kode program winamp tersebut. ini artinya saat eksploit berhasil merusak program winamp tersebut, eksploit akan menempatkan shellcode dilokasi memori tempat shellcode telah ditanam dan kemudian akan mengeksekusi yaitu mengacaukan program winamp sesuai yg diinginkan.

    Kesimpulannya, mekanisme ini berhubungan langsung dgn prosesor dan memori, itu sebabnya shellcode dibuat agar dapat langsung ditanam pada memori sehingga bentuknya cukup aneh.

    Sebuah Buffer overflow terjadi ketika data ditulis ke buffer, lalu merusak nilai-nilai data dalam alamat memori (memory address)  yg berdekatan dgn buffer tujuannya. Hal ini dapat terjadi saat menyalin data dari satu buffer yg lain tanpa memeriksa terlebih dahulu bahwa data tersebut cocok kedalam buffer tujuannya.

    Leave a Reply

    Note: only a member of this blog may post a comment.

    Subscribe to Posts | Subscribe to Comments

  • - Copyright © Beauty Cyber Squad - Powered by Blogger - Designed by Johanes Djogan -