Apa itu Fuzzing?

Apa yang kabur

Pengenalan: Apakah itu Fuzzing?

Pada tahun 2014, penggodam Cina digodam ke dalam Sistem Kesihatan Komuniti, rantaian hospital AS yang mengaut keuntungan, dan mencuri 4.5 juta data pesakit. Penggodam mengeksploitasi pepijat yang dipanggil Heartbleed yang ditemui dalam perpustakaan kriptografi OpenSSL beberapa bulan sebelum penggodaman.

Heartbleed ialah contoh kelas vektor serangan yang membenarkan penyerang mengakses sasaran dengan menghantar permintaan yang salah bentuk yang cukup sah untuk lulus semakan awal. Walaupun profesional yang bekerja pada bahagian yang berlainan apl melakukan yang terbaik untuk memastikan keselamatannya, adalah mustahil untuk memikirkan semua kes sudut yang boleh memecahkan apl atau menjadikannya terdedah semasa pembangunan.

Di sinilah 'fuzzing' masuk.

Apakah itu Serangan Fuzzing?

Fuzzing, fuzz testing, atau fuzzing attack, ialah teknik ujian perisian automatik yang digunakan untuk memasukkan data rawak, tidak dijangka atau tidak sah (dipanggil fuzz) ke dalam atur cara. Program ini dipantau untuk kelakuan luar biasa atau tidak dijangka seperti limpahan penimbal, ranap sistem, kebocoran memori, benang hang dan pelanggaran akses baca/tulis. Alat fuzzing atau fuzzer kemudiannya digunakan untuk mendedahkan punca kelakuan luar biasa itu.

Fuzzing adalah berdasarkan andaian bahawa semua sistem mengandungi pepijat yang menunggu untuk ditemui, dan boleh diberi masa dan sumber yang mencukupi untuk berbuat demikian. Kebanyakan sistem mempunyai penghurai yang sangat baik atau menghalang pengesahan input penjenayah siber daripada mengeksploitasi sebarang pepijat hipotesis dalam program. Walau bagaimanapun, seperti yang kami nyatakan di atas, meliputi semua kes sudut semasa pembangunan adalah sukar.

Fuzzer digunakan pada program yang mengambil input berstruktur atau mempunyai beberapa jenis sempadan kepercayaan. Contohnya, program yang menerima fail PDF akan mempunyai beberapa pengesahan untuk memastikan fail tersebut mempunyai sambungan .pdf dan penghurai untuk memproses fail PDF.

Fuzzer yang berkesan boleh menjana input yang cukup sah untuk melepasi sempadan ini namun cukup tidak sah untuk menyebabkan tingkah laku yang tidak dijangka lebih jauh ke bawah program. Ini penting kerana hanya dapat melepasi pengesahan tidak bermakna jika tiada lagi bahaya yang ditimbulkan.

Fuzzers menemui vektor serangan yang hampir serupa dengan dan termasuk seperti suntikan SQL, skrip merentas tapak, limpahan penimbal dan serangan penafian perkhidmatan. Semua serangan ini adalah hasil daripada memasukkan data yang tidak dijangka, tidak sah atau rawak ke dalam sistem. 

 

Jenis-jenis Fuzzer

Fuzzer boleh dikelaskan berdasarkan beberapa ciri:

  1. Sasaran serangan
  2. Kaedah penciptaan fuzz
  3. Kesedaran struktur input
  4. Kesedaran tentang struktur program

1. Sasaran Serangan

Pengelasan ini adalah berdasarkan jenis platform yang digunakan oleh fuzzer untuk menguji. Fuzzer biasanya digunakan dengan protokol rangkaian dan aplikasi perisian. Setiap platform mempunyai jenis input tertentu yang diterimanya, dan oleh itu memerlukan jenis fuzzer yang berbeza.

Contohnya, apabila berurusan dengan aplikasi, semua percubaan kabur berlaku pada pelbagai saluran input aplikasi, seperti antara muka pengguna, terminal baris arahan, input borang/teks dan muat naik fail. Jadi semua input yang dihasilkan oleh fuzzer perlu sepadan dengan saluran ini.

Fuzzer yang berurusan dengan protokol komunikasi perlu berurusan dengan paket. Fuzzer yang menyasarkan platform ini boleh menjana paket palsu, atau bertindak sebagai proksi untuk mengubah suai paket yang dipintas dan memainkannya semula.

2. Kaedah Penciptaan Fuzz

Fuzzer juga boleh dikelaskan berdasarkan cara mereka mencipta data untuk dikaburkan. Dari segi sejarah, fuzzer mencipta fuzz dengan menjana data rawak dari awal. Ini adalah bagaimana Profesor Barton Miller, pemula teknik ini, melakukannya pada mulanya. Fuzzer jenis ini dipanggil a fuzzer berasaskan generasi.

Walau bagaimanapun, walaupun seseorang secara teorinya boleh menjana data yang akan memintas sempadan amanah, ia akan mengambil masa dan sumber yang banyak untuk melakukannya. Oleh itu kaedah ini biasanya digunakan untuk sistem dengan struktur input mudah.

Penyelesaian kepada masalah ini adalah dengan mengubah data yang diketahui sah untuk menghasilkan data yang cukup sah untuk melepasi sempadan amanah, namun cukup tidak sah untuk menyebabkan masalah. Contoh yang baik tentang ini ialah a DNS fuzzer yang mengambil nama domain dan kemudian menjana senarai besar nama domain untuk mengesan domain yang berpotensi berniat jahat yang menyasarkan pemilik domain yang ditentukan.

Pendekatan ini lebih bijak daripada yang sebelumnya dan dengan ketara mengecilkan pilih atur yang mungkin. Fuzzer yang menggunakan kaedah ini dipanggil fuzzer berasaskan mutasi

Terdapat kaedah ketiga yang lebih terkini yang menggunakan algoritma genetik untuk menumpu pada data fuzz optimum yang diperlukan untuk menghapuskan kelemahan. Ia berfungsi dengan terus memperhalusi data fuzznya, dengan mengambil kira prestasi setiap data ujian apabila dimasukkan ke dalam program. 

Set data berprestasi paling teruk dialih keluar daripada kumpulan data, manakala yang terbaik dimutasi dan/atau digabungkan. Data generasi baharu kemudiannya digunakan untuk ujian kabur semula. Fuzzers ini dirujuk sebagai fuzzer berasaskan mutasi evolusi.

3. Kesedaran Terhadap Struktur Input

Pengelasan ini adalah berdasarkan sama ada fuzzer sedar dan aktif menggunakan struktur input program dalam menjana data fuzz. A fuzzer bodoh (fuzzer yang tidak mengetahui struktur input program) menghasilkan fuzz dalam cara yang kebanyakannya rawak. Ini boleh termasuk penjanaan dan pengkabur berasaskan mutasi. 


Sekiranya fuzzer disediakan dengan model input program, fuzzer kemudiannya boleh cuba menjana atau memutasi data supaya ia sepadan dengan model input yang disediakan. Pendekatan ini mengurangkan lagi jumlah sumber yang dibelanjakan untuk menjana data tidak sah. Fuzzer sedemikian dipanggil a fuzzer pintar.

4. Kesedaran Terhadap Struktur Program

Fuzzer juga boleh dikelaskan berdasarkan sama ada mereka sedar tentang kerja dalaman program yang mereka kaburkan dan menggunakan kesedaran itu untuk membantu penjanaan data fuzz. Apabila fuzzer digunakan untuk menguji atur cara tanpa memahami struktur dalamannya, ia dipanggil ujian kotak hitam. 

Data fuzz yang dijana semasa ujian kotak hitam biasanya rawak melainkan fuzzer ialah fuzzer berasaskan mutasi evolusi, di mana ia 'belajar' dengan memantau kesan kaburnya dan menggunakan itu maklumat untuk memperhalusi set data fuzznya.

Ujian kotak putih sebaliknya menggunakan model struktur dalaman program untuk menjana data fuzz. Pendekatan ini membolehkan pengkabur pergi ke lokasi kritikal dalam program dan mengujinya. 

Alat Fuzzing Popular

Terdapat banyak kabur alat di luar sana digunakan oleh penguji pen. Antara yang paling popular ialah:

Had Pengaburan

Walaupun Fuzzing adalah teknik ujian pen yang sangat berguna, ia bukan tanpa kesalahannya. Antaranya ialah:

  • Ia mengambil masa yang agak lama untuk dijalankan.
  • Ranap sistem dan gelagat luar jangka lain yang ditemui semasa ujian kotak hitam program boleh menjadi sukar, jika tidak mustahil untuk dianalisis atau nyahpepijat.
  • Mencipta templat mutasi untuk fuzzer berasaskan mutasi pintar boleh memakan masa. Kadangkala, ia mungkin tidak dapat dilakukan kerana model input adalah proprietari atau tidak diketahui.

 

Walau bagaimanapun, ia adalah alat yang sangat berguna dan perlu untuk sesiapa sahaja yang ingin menemui pepijat sebelum orang jahat.

Kesimpulan

Fuzzing ialah teknik ujian pen yang berkuasa yang boleh digunakan untuk mendedahkan kelemahan dalam perisian. Terdapat pelbagai jenis fuzzer, dan fuzzer baharu sedang dibangunkan sepanjang masa. Walaupun fuzzing adalah alat yang sangat berguna, ia mempunyai batasannya. Sebagai contoh, fuzzer hanya boleh menemui begitu banyak kelemahan dan ia boleh menjadi agak intensif sumber. Namun, jika anda ingin mencuba sendiri teknik yang menakjubkan ini, kami ada API DNS Fuzzer percuma yang boleh anda gunakan pada platform kami. 

Jadi apa yang anda tunggu? 

Mula kabur hari ini!