Choronzon - An Evolutionary Knowledge-Based Fuzzer

Sebuah evolusi berbasis pengetahuan fuzzer
 
Introduction   


This document aims to explain in brief the theory behind Choronzon . Moreover, it provides details about its internals and how one can extend Choronzon to meet new requirements. An overview of the architecture of Choronzon was initially presented at the ZeroNights 2015 Conference  A  recording  presentasi dan  slide deck juga tersedia.
Choronzon adalah fuzzer evolusi. Mencoba untuk meniru proses evolusi agar tetap menghasilkan hasil yang lebih baik. Untuk mencapai hal ini, ia memiliki sistem evaluasi untuk mengklasifikasikan mana dari file fuzzed menarik dan yang harus dijatuhkan.
Bahkan,  Choronzon adalah fuzzer berbasis pengetahuan. Menggunakan informasi yang ditetapkan pengguna untuk membaca dan menulis file dari format file yang ditargetkan. Untuk menjadi akrab dengan  Choronzon's terminologi, Anda harus mempertimbangkan bahwa setiap file diwakili oleh a chromosome.Pengguna harus menggambarkan struktur dasar dari format file yang sedang dipertimbangkan. Sebuah gambaran tingkat tinggi dari format file lebih disukai bukannya menggambarkan setiap detail dan aspek itu. Masing-masing dari mereka yang ditetapkan pengguna struktur dasar dianggap sebagai
gen Setiap kromosom mengandung pohon gen dan mampu membangun file yang berkaitan dari itu.
 Choronzon
dibagi menjadi tiga subsistem, yang
Tracer modul, modul Kromosom dan fuzzer.Secara singkat, komponen Kromosom digunakan untuk menggambarkan format file target. Pengguna dapat menulis modul sendiri untuk mendukung format baru atau kustom. Sebagai tes-kasus, modul PNG disediakan dengan Choronzon.Di sisi lain, komponen Tracer bertanggung jawab untuk memantau penerapan target dan mengumpulkan berbagai informasi tentang pelaksanaannya. Versi Choronzon menggunakan Pin alat biner instrumentasi Intel untuk login blok dasar yang dikunjungi selama eksekusi. Namun, Choronzon mampu mendukung backends tracing lain juga. Juga perlu diingat bahwa dalam versi berikutnya dari Choronzon, Pin akan diganti karena dampak kinerja mengejutkan nya.Terakhir, komponen fuzzer digunakan untuk mengubah isi dari file yang akan diuji. Modul ini berisi korpus mutator dan Recombinators. Mutator, sederhana, mengubah file seperti fuzzers umum dilakukan. Misalnya, mereka melakukan byte flipping, byte swapping, random byte mutasi dan sebagainya. Tapi Choronzon memiliki fitur lain yang tidak umum di fuzzers. Recombinators menggunakan informasi tentang struktur dari format file, yang disediakan oleh modul Kromosom, dalam rangka untuk melakukan fuzzing cerdas.
 
Chromosome   


Dalam kromosom direktori / parser Anda dapat menemukan file PNG.py. Modul Python ini menjelaskan format file PNG ke fuzzer. Anda dapat menambahkan modul kustom Anda untuk format file lain dalam direktori ini.
Ide dasar di balik subsistem Kromosom adalah untuk mengkonversi file benih awal menggunakan Deserializer menjadi pohon Gen. Di beberapa titik, (fuzzed) Gen-gen akan ditulis ke dalam sebuah file, menggunakan Serializer a.
Pertimbangkan bahwa di Choronzon tujuan modul parser adalah untuk memberikan struktur dasar dari format file, bukan setiap detail kecil. Ini akan membantu fuzzer untuk membangun berkas yang sering waras, menghindari awal keluar dari aplikasi target. Selain itu, pendekatan ini menghemat waktu, karena menggambarkan setiap aspek dari format file memakan waktu dan memperkenalkan overhead yang perkembangan yang signifikan.
 
How to write a custom parser   


Sebuah modul parser baru harus mengimpor:

    
chromosome.gene.AbstractGene
    
chromosome.serializer.BaseSerializer
    
chromosome.deserializer.BaseDeserializer
dan itu harus menerapkan

    
kelas Gene berasal dari chromosome.gene.AbstractGene,
    
kelas Serializer berasal dari chromosome.serializer.BaseSerializer,
    
dan kelas Deserializer berasal dari chromosome.deserializer.BaseDeserializer.
Pada contoh dikirimkan dengan Choronzon, setiap PNGGene sesuai dengan sepotong PNG. Umumnya, Anda mungkin berpikir dari Gene sebagai struktur data dasar dari format target. Setiap kromosom terdiri dari pohon Gen, dan merupakan file yang unik. Setiap Gene harus mampu menghasilkan string byte yang berisi data dikombinasikan dengan data dari Gen rendah di pohon.The PNGSerializer harus mampu menghasilkan (a sebagian besar waras) file dari ketika daftar Gen diberikan untuk itu. Di sisi lain, PNGDeserializer harus mampu mengurai file yang valid dari format target dan deserialize ke sebuah pohon Genes.Memeriksa 
chromosome/parsers/PNG.py   untuk contoh komentar untuk format PNG.
 
Tracer   


Modul Tracer digunakan untuk membongkar aplikasi target (dan / atau satu atau lebih dari perpustakaan nya). Dalam versi ini Choronzon ini dicapai dengan IDA. Kami menggunakan pendekatan ini karena kita dapat menghubungkan informasi apapun yang menarik dari kampanye fuzzing dengan IDBs kami. Namun, kami mungkin drop ketergantungan pada IDA dalam waktu dekat untuk membuat Choronzon lebih portabel dan mudah diakses.
Sebuah file diuji terhadap sebuah aplikasi dengan bantuan utilitas Pin. Dalam analisa direktori / cakupan ada kode sumber dari alat Pin ini, yang menyuntikkan kait di awal setiap blok dasar di aplikasi target. Ketika eksekusi selesai, kita mengkorelasikan blok dasar yang terkena, dengan blok dasar dari biner. Dengan demikian, kami dapat menghitung metrik yang berharga bagi kami (cakupan dll).
 
Fuzzer   


Komponen Fuzzer menggunakan representasi kromosom untuk fuzz file. Seperti disebutkan sebelumnya, ada dua metode fuzzing di Choronzon.
Untuk metode pertama, Choronzon mendapatkan konten dari satu atau lebih gen dan berlaku salah satu mutator. Mutator menerapkan metode fuzzing umum namun efektif seperti mutasi acak byte, bit set tinggi, byte swapping dan banyak lagi. Anda juga dapat menulis mutator kustom Anda sendiri dan menambahkan mereka dalam fuzzers / mutators.py.
Metode fuzzing kedua disebut rekombinasi. Recombinators digunakan untuk mengubah struktur file. Berikut adalah contoh dengan format PNG.
PNG terdiri oleh potongan berturut-turut yang berisi empat bidang,

     panjangnya,
     Jenis potongan ini,
     Data potongan ini,
     dan CRC.

Mari kita asumsikan kita memiliki file PNG yang hanya memiliki IHDR, Idat dan IEND potongan. Strukturnya akan terlihat seperti berikut:
 
[ PNG signature ] [ IHDR ] [ IDAT ] [ IEND ]
 
 Sejak Choronzon menyadari struktur dasar (yaitu potongan PNG), ia mampu mengubah urutan mereka. Setelah rekombinasi sukses fuzzed file output PNG dapat terlihat seperti ini:
 
[ PNG signature ] [ IDAT ] [ IHDR ] [ IEND ]
 
Choronzon mengandung banyak strategi rekombinasi lagi yang membuatnya mampu mengatasi bahkan dengan format file yang rumit.
 
     Installation      
 Choronzon telah diuji dengan Python 2.7, Pin 3, IDA Pro 6,6-6,9, pada Ubuntu 16.04 LTS (Linux kernel 4.4) dan Windows 10.
Dalam rangka untuk menjalankannya Anda harus menginstal paket sortedcontainers Python. Anda mungkin menemukannya di sini atau menginstal melalui pip.
Selain itu, Choronzon perlu IDA Pro (sebenarnya, versi terminal). Jalur IDA Pro harus ditentukan dalam file konfigurasi Anda seperti ini:
 
DisassemblerPath = 'C:\\Program Files (x86)\\IDA 6.6'
 
Telah diuji dengan sukses dengan IDA Pro 6.6, 6.7, 6.8 dan 6.9.
cakupan alat Pin Choronzon ini terletak di analyzer / cakupan dan harus dikompilasi. Anda mungkin ingin memeriksa dokumentasi Pin untuk rincian, atau Anda dapat melakukan langkah-langkah berikut:

     Salin coverage.cpp dan makefile.rules file ke / path / ke / pin / sumber / alat / MyPinTool
     Jalankan make. Jika Anda berada di Windows Anda harus menjalankan Visual Studio baris perintah, dan menggunakan make utilitas dan dependensinya dari Cygwin
     Copy kembali ke / path / ke / Choronzon / analisis / cakupan direktori obj-Intel64 baru dibuat (atau obj-ia32 untuk sistem 32 bit)
 
     Configuration      
 
Untuk fuzz dengan Choronzon, Anda harus menyediakan file konfigurasi. Dalam direktori pengaturan ada contoh dari konfigurasi Choronzon.
  
Untuk download silahkan di sini http://adf.ly/1f5cAa   
  
Terima Kasih 

http://www.kitploit.com/
https://github.com/ 

0 Response to " Choronzon - An Evolutionary Knowledge-Based Fuzzer "

Post a Comment