Fuzzing nədir?

Buzlama nədir

Giriş: Fuzzing nədir?

2014-cü ildə Çinli hakerlər İcma Sağlamlığı Sistemlərinə sındırılıb, kommersiya məqsədli ABŞ xəstəxanalar şəbəkəsi və 4.5 milyon xəstənin məlumatlarını oğurladı. Hakerlər hackdən bir neçə ay əvvəl OpenSSL kriptoqrafiya kitabxanasında aşkar edilmiş Heartbleed adlı səhvdən istifadə ediblər.

Heartbleed, təcavüzkarlara ilkin yoxlamalardan keçmək üçün kifayət qədər etibarlı formalaşdırılmış sorğular göndərməklə hədəfə daxil olmağa imkan verən hücum vektorları sinfinə bir nümunədir. Tətbiqin müxtəlif hissələrində işləyən mütəxəssislər onun təhlükəsizliyini təmin etmək üçün əllərindən gələni etsələr də, proqramın işlənməsi zamanı onu sındıra və ya həssas edə biləcək bütün künc hallarını düşünmək mümkün deyil.

Burada 'füzyon' gəlir.

Fuzzing Attack nədir?

Fuzzing, fuzz testing və ya fuzzing hücumu təsadüfi, gözlənilməz və ya etibarsız məlumatları (fuzz adlanır) proqrama daxil etmək üçün istifadə edilən avtomatlaşdırılmış proqram test üsuludur. Proqram buferin daşması, qəzalar, yaddaş sızması, mövzunun asılması və oxu/yazma girişi pozuntuları kimi qeyri-adi və ya gözlənilməz davranışlara görə izlənilir. Daha sonra qeyri-adi davranışın səbəbini aşkar etmək üçün tünd alət və ya fuzzer istifadə olunur.

Fuzzing, bütün sistemlərin aşkarlanmağı gözləyən səhvləri ehtiva etdiyi fərziyyəsinə əsaslanır və bunun üçün kifayət qədər vaxt və resurslar verilə bilər. Əksər sistemlərdə çox yaxşı təhliledicilər və ya girişin doğrulanması qarşısını alır kiber cinayətkarlar proqramdakı hər hansı hipotetik səhvlərdən istifadə etməkdən. Ancaq yuxarıda qeyd etdiyimiz kimi, inkişaf zamanı bütün künc hallarını əhatə etmək çətindir.

Fuzzerlər strukturlaşdırılmış girişi qəbul edən və ya bir növ etibar sərhədi olan proqramlarda istifadə olunur. Məsələn, PDF fayllarını qəbul edən proqram, faylın .pdf uzantısına və PDF faylını emal etmək üçün təhlilçiyə malik olmasını təmin etmək üçün müəyyən yoxlamalara malik olacaq.

Effektiv fuzzer bu sərhədləri keçmək üçün kifayət qədər etibarlı, lakin proqramdan daha aşağı gözlənilməz davranışa səbəb olacaq qədər etibarsız girişlər yarada bilər. Bu vacibdir, çünki yalnız təsdiqləmələrdən keçə bilmək başqa zərərə səbəb olmadıqda çox şey demək deyil.

Fuzzers, SQL inyeksiyası, saytlar arası skript, bufer daşması və xidmətdən imtina hücumlarına çox oxşar hücum vektorlarını aşkar edir. Bütün bu hücumlar gözlənilməz, etibarsız və ya təsadüfi məlumatların sistemə daxil edilməsinin nəticəsidir. 

 

Füzerlərin növləri

Fuzzerlər bəzi xüsusiyyətlərə görə təsnif edilə bilər:

  1. Hücum hədəfləri
  2. Füz yaratma üsulu
  3. Giriş strukturu haqqında məlumatlılıq
  4. Proqram strukturu haqqında məlumatlılıq

1. Hədəflərə hücum

Bu təsnifat fuzzerin sınaqdan keçirildiyi platformanın növünə əsaslanır. Fuzzerlər adətən şəbəkə protokolları və proqram təminatı ilə istifadə olunur. Hər bir platformanın qəbul etdiyi xüsusi giriş növü var və beləliklə, müxtəlif növ fuzzerlər tələb olunur.

Məsələn, proqramlarla işləyərkən, istifadəçi interfeysi, komanda xətti terminalı, formalar/mətn daxiletmələri və fayl yükləmələri kimi tətbiqin müxtəlif giriş kanallarında bütün qeyri-səlis cəhdləri baş verir. Beləliklə, fuzzer tərəfindən yaradılan bütün girişlər bu kanallara uyğun olmalıdır.

Rabitə protokolları ilə məşğul olan fuzzers paketlərlə məşğul olmalıdır. Bu platformanı hədəf alan fuzzers saxta paketlər yarada və ya hətta tutulan paketləri dəyişdirmək və onları təkrar oynamaq üçün proksi kimi çıxış edə bilər.

2. Füz yaratma metodu

Fuzzerlər, həmçinin, məlumatı necə yaratdıqlarına görə təsnif edilə bilər. Tarixən, fuzzerlər sıfırdan təsadüfi məlumat yaradaraq fuzz yaratdılar. Bu texnikanın təşəbbüskarı olan professor Barton Miller əvvəlcə bunu belə etdi. Bu tip fuzzer a adlanır nəsil əsaslı fuzzer.

Bununla belə, nəzəri olaraq etimad sərhədindən yan keçəcək məlumat yarada bilsə də, bunun üçün xeyli vaxt və resurslar lazım olacaq. Buna görə də bu üsul adətən sadə giriş strukturları olan sistemlər üçün istifadə olunur.

Bu problemin həlli etibar sərhədini keçmək üçün kifayət qədər etibarlı, lakin problemlər yarada biləcək qədər etibarsız olan məlumatları yaratmaq üçün etibarlı olduğu bilinən məlumatları mutasiya etməkdir. Bunun yaxşı nümunəsi a DNS fuzzer bir domen adı alır və sonra göstərilən domenin sahibini hədəf alan potensial zərərli domenləri aşkar etmək üçün domen adlarının böyük siyahısını yaradır.

Bu yanaşma əvvəlkindən daha ağıllıdır və mümkün permutasiyaları əhəmiyyətli dərəcədə daraldır. Bu üsuldan istifadə edən fuzzers deyilir mutasiya əsaslı fuzzerlər

Zəiflikləri aradan qaldırmaq üçün lazım olan optimal qeyri-səlis məlumatlara birləşmək üçün genetik alqoritmlərdən istifadə edən üçüncü daha yeni üsul var. O, proqrama daxil edildikdə hər bir test məlumatının performansını nəzərə alaraq qeyri-səlis məlumatlarını daim təkmilləşdirməklə işləyir. 

Ən pis performans göstərən məlumat dəstləri məlumat hovuzundan silinir, ən yaxşıları isə mutasiyaya uğrayır və/yaxud birləşdirilir. Yeni nəsil məlumat daha sonra yenidən fuzz testi üçün istifadə olunur. Bu fuzerlər adlanır təkamül mutasiyasına əsaslanan fuzzerlər.

3. Daxiletmə strukturu haqqında məlumatlılıq

Bu təsnifat fuzzerin qeyri-səlis məlumatların yaradılmasında proqramın giriş strukturundan xəbərdar olub-olmamasına və fəal şəkildə istifadə etməsinə əsaslanır. A axmaq fuzer (proqramın giriş strukturundan xəbərsiz olan fuzzer) əsasən təsadüfi şəkildə fuzz yaradır. Buraya həm nəsil, həm də mutasiya əsaslı fuzzerlər daxil ola bilər. 


Əgər fuzzer proqramın giriş modeli ilə təmin olunarsa, fuzzer təqdim edilmiş giriş modelinə uyğun gələn məlumatları yaratmağa və ya mutasiya etməyə cəhd edə bilər. Bu yanaşma etibarsız məlumatların yaradılmasına sərf olunan resursların miqdarını daha da azaldır. Belə fuzzer a adlanır ağıllı fuzer.

4. Proqram Strukturunun Məlumatlılığı

Fuzzerlər, həmçinin, tündləşdikləri proqramın daxili işlərindən xəbərdar olub-olmadıqlarına görə təsnif edilə bilər və bu məlumatlılıqdan qeyri-səlis məlumatların yaradılmasına kömək etmək üçün istifadə edirlər. Proqramın daxili strukturunu başa düşmədən test etmək üçün fuzzerlərdən istifadə edildikdə, buna qara qutu testi deyilir. 

Qara qutu sınağı zamanı yaranan qeyri-səlis məlumatlar adətən təsadüfi olur, əgər fuzzer təkamül mutasiyaya əsaslanan fuzzer deyilsə, burada o, fuzzing effektini izləməklə və ondan istifadə etməklə “öyrənir”. məlumat onun qeyri-səlis məlumat dəstini təkmilləşdirmək üçün.

Digər tərəfdən ağ qutu testi qeyri-səlis məlumat yaratmaq üçün proqramın daxili strukturunun modelindən istifadə edir. Bu yanaşma fuzzerin proqramda kritik yerlərə çatmasına və onu sınaqdan keçirməsinə imkan verir. 

Populyar Fuzzing Alətləri

Çoxlu çaşqınlıqlar var alətləri orada qələm testçiləri tərəfindən istifadə olunur. Ən populyarlarından bəziləri bunlardır:

Fuzzing məhdudiyyətləri

Fuzzing həqiqətən faydalı qələm test üsulu olsa da, qüsurları da yoxdur. Bunlardan bəziləri:

  • Qaçış üçün kifayət qədər uzun vaxt lazımdır.
  • Proqramın qara qutu sınağı zamanı aşkar edilən qəzalar və digər gözlənilməz davranışları təhlil etmək və ya sazlamaq mümkün olmasa da, çətin ola bilər.
  • Ağıllı mutasiyaya əsaslanan fuzzerlər üçün mutasiya şablonlarının yaradılması çox vaxt apara bilər. Bəzən, hətta giriş modelinin mülkiyyətçi və ya naməlum olması səbəbindən mümkün olmaya bilər.

 

Buna baxmayaraq, bu, pis adamlardan əvvəl səhvləri tapmaq istəyən hər kəs üçün olduqca faydalı və lazımlı bir vasitədir.

Nəticə

Fuzzing, proqram təminatındakı boşluqları aşkar etmək üçün istifadə edilə bilən güclü qələm test üsuludur. Çox sayda müxtəlif fuzerlər var və hər zaman yeni fuzerlər hazırlanır. Füzing inanılmaz dərəcədə faydalı bir vasitə olsa da, onun məhdudiyyətləri var. Məsələn, fuzzerlər yalnız bu qədər zəiflik tapa bilər və onlar kifayət qədər resurs tələb edə bilər. Ancaq bu heyrətamiz texnikanı özünüz üçün sınamaq istəyirsinizsə, bizdə var platformamızda istifadə edə biləcəyiniz pulsuz DNS Fuzzer API. 

Nə gözləyirsiniz? 

Bu gün qıcıqlamağa başlayın!