Fuzzing дегеніміз не?

Бұл не деген

Кіріспе: Fuzzing дегеніміз не?

2014 жылы қытайлық хакерлер Қоғамдық денсаулық сақтау жүйелеріне шабуыл жасалды, коммерциялық емес АҚШ ауруханалар желісі және 4.5 миллион пациенттің деректерін ұрлады. Хакерлер OpenSSL криптографиялық кітапханасында бұзудан бірнеше ай бұрын табылған Heartbleed деп аталатын қатені пайдаланды.

Heartbleed шабуыл векторлары класының мысалы болып табылады, ол шабуылдаушыларға алдын ала тексерулерден өту үшін жарамды дұрыс емес сұрауларды жіберу арқылы нысанаға қол жеткізуге мүмкіндік береді. Қолданбаның әртүрлі бөліктерінде жұмыс істейтін мамандар оның қауіпсіздігін қамтамасыз ету үшін бар күш-жігерін салғанымен, қолданбаны бұзатын немесе әзірлеу кезінде оны осал ететін барлық бұрыштық жағдайларды ойлау мүмкін емес.

Бұл жерде «бұлдырлау» пайда болады.

Айнымалы шабуыл дегеніміз не?

Бұлыңғыр, күңгірттік тестілеу немесе күңгірттену шабуылы – бағдарламаға кездейсоқ, күтпеген немесе жарамсыз деректерді (fuzz деп аталады) беру үшін қолданылатын бағдарламалық құралды тексерудің автоматтандырылған әдісі. Бағдарлама буфердің толып кетуі, бұзылулар, жадтың ағуы, ағынның тоқтауы және оқу/жазу рұқсатының бұзылуы сияқты әдеттен тыс немесе күтпеген әрекеттерге бақыланады. Одан кейін әдеттен тыс әрекеттің себебін ашу үшін тұндыру құралы немесе фузер қолданылады.

Fuzzing барлық жүйелерде табылуды күтіп тұрған қателер бар деген болжамға негізделген және бұл үшін жеткілікті уақыт пен ресурстар берілуі мүмкін. Көптеген жүйелерде өте жақсы талдаушылар немесе енгізуді тексеруді болдырмайды киберқылмыскерлер бағдарламадағы кез келген гипотетикалық қателерді пайдаланудан. Дегенмен, жоғарыда айтқанымыздай, әзірлеу кезінде барлық бұрыштық жағдайларды қамту қиын.

Фузерлер құрылымдық енгізуді қабылдайтын немесе қандай да бір сенім шекарасы бар бағдарламаларда қолданылады. Мысалы, PDF файлдарын қабылдайтын бағдарламада файлда .pdf кеңейтімі және PDF файлын өңдеу үшін талдаушы бар екеніне көз жеткізу үшін кейбір тексерулер болады.

Тиімді fuzzer осы шекаралардан өту үшін жеткілікті жарамды кірістерді жасай алады, бірақ бағдарламада күтпеген әрекетті тудыратындай жарамсыз. Бұл өте маңызды, өйткені тексеруден өту, егер одан әрі зиян келтірілмесе, көп нәрсені білдірмейді.

Fuzzers SQL инъекциясына, сайтаралық сценарийге, буфердің толып кетуіне және қызмет көрсетуден бас тарту шабуылдарына ұқсас шабуыл векторларын табады. Бұл шабуылдардың барлығы жүйеге күтпеген, жарамсыз немесе кездейсоқ деректерді берудің нәтижесі болып табылады. 

 

Фузерлердің түрлері

Фузерлерді кейбір белгілер бойынша жіктеуге болады:

  1. Мақсаттарға шабуыл
  2. Бұлдыр құру әдісі
  3. Енгізу құрылымын білу
  4. Бағдарлама құрылымын білу

1. Шабуыл нысандары

Бұл классификация фьюзер сынау үшін пайдаланылатын платформа түріне негізделген. Фузерлер әдетте желілік протоколдармен және бағдарламалық қосымшалармен қолданылады. Әрбір платформада ол қабылдайтын кірістің белгілі бір түрі бар, сондықтан әр түрлі фузер түрлерін қажет етеді.

Мысалы, қолданбалармен жұмыс істегенде, пайдаланушы интерфейсі, пәрмен жолы терминалы, пішіндер/мәтіндік енгізулер және файлдарды жүктеп салулар сияқты қолданбаның әртүрлі енгізу арналарында барлық анық емес әрекеттер орын алады. Сондықтан фузер арқылы жасалған барлық кірістер осы арналарға сәйкес келуі керек.

Байланыс хаттамаларымен айналысатын фузерлер пакеттермен жұмыс істеуі керек. Осы платформаға бағытталған фузерлер жалған пакеттерді жасай алады немесе тіпті ұсталған пакеттерді өзгерту және оларды қайта ойнату үшін прокси ретінде әрекет ете алады.

2. Fuzz жасау әдісі

Сондай-ақ, фузерлерді анықтау үшін деректерді жасау жолына қарай жіктеуге болады. Тарихи түрде, fuzzers нөлден кездейсоқ деректерді генерациялау арқылы fuzz жасады. Бұл әдістеменің бастамашысы, профессор Бартон Миллер алғашында осылай жасады. Фьюзердің бұл түрі а деп аталады ұрпаққа негізделген фузер.

Дегенмен, сенім шекарасын айналып өтетін деректерді теориялық түрде жасауға болатынымен, мұны істеу үшін көп уақыт пен ресурстар қажет болады. Сондықтан бұл әдіс әдетте қарапайым кіріс құрылымдары бар жүйелер үшін қолданылады.

Бұл мәселенің шешімі сенім шекарасынан өтуге жеткілікті жарамды, бірақ ақаулық тудыратындай жарамсыз деректерді жасау үшін жарамды деп белгілі деректерді мутациялау болып табылады. Бұған жақсы мысал ретінде а DNS өшіргіші ол домен атауын алады, содан кейін көрсетілген домен иесіне бағытталған ықтимал зиянды домендерді анықтау үшін домен атауларының үлкен тізімін жасайды.

Бұл тәсіл алдыңғыға қарағанда ақылды және ықтимал ауыстыруларды айтарлықтай тарылтады. Бұл әдісті қолданатын фузерлер деп аталады мутацияға негізделген фузерлер

Үшінші жаңа әдіс бар, ол осалдықтарды жою үшін қажетті оңтайлы анық емес деректерге біріктіру үшін генетикалық алгоритмдерді пайдаланады. Ол бағдарламаға берілген кезде әрбір сынақ деректерінің өнімділігін ескере отырып, өзінің анық емес деректерін үнемі нақтылау арқылы жұмыс істейді. 

Ең нашар орындалатын деректер жиындары деректер пулынан жойылады, ал ең жақсылары мутацияланған және/немесе біріктірілген. Деректердің жаңа буыны содан кейін қайтадан тестілеу үшін пайдаланылады. Бұл фузерлер деп аталады эволюциялық мутацияға негізделген фузерлер.

3. Кіріс құрылымы туралы хабардар болу

Бұл жіктеу fuzzer деректерін генерациялау кезінде бағдарламаның енгізу құрылымын білуіне және белсенді түрде пайдалануына негізделген. А мылқау (бағдарламаның енгізу құрылымын білмейтін фузер) көбіне кездейсоқ тәртіпте бұлыңғырлықты жасайды. Бұл ұрпақты да, мутацияға негізделген фузерлерді де қамтуы мүмкін. 


Егер фузер бағдарламаның кіріс үлгісімен қамтамасыз етілсе, ол берілген кіріс үлгісіне сәйкес келетіндей деректерді жасауға немесе мутациялауға әрекет жасай алады. Бұл тәсіл жарамсыз деректерді жасауға жұмсалған ресурстардың көлемін одан әрі азайтады. Мұндай фузер а деп аталады ақылды фузер.

4. Бағдарлама құрылымы туралы хабардар болу

Фузерлерді олар анықтап жатқан бағдарламаның ішкі жұмысы туралы хабардар ма, жоқ па, соған байланысты жіктеуге болады және бұл хабардарлықты анық емес деректерді құруға көмектесу үшін пайдаланады. Бағдарламаны оның ішкі құрылымын түсінбестен сынау үшін фьюзерлер пайдаланылса, ол қара жәшік сынағы деп аталады. 

Қара жәшікті сынау кезінде жасалған fuzz деректері әдетте кездейсоқ болады, егер фузер эволюциялық мутацияға негізделген фузер болмаса, онда ол оның әсер ету әсерін бақылау және оны пайдалану арқылы «үйренеді». ақпарат оның fuzz деректер жиынын нақтылау үшін.

Екінші жағынан, White-box тестілеу бұлыңғыр деректерді құру үшін бағдарламаның ішкі құрылымының моделін пайдаланады. Бұл тәсіл фузерге бағдарламаның маңызды орындарына жетуге және оны тексеруге мүмкіндік береді. 

Танымал Fuzzing құралдары

Бұлыңғырлар көп құралдары Онда қалам сынаушылар пайдаланады. Ең танымалдарының кейбірі:

Толтырудың шектеулері

Fuzzing шын мәнінде пайдалы қаламмен тестілеу әдісі болғанымен, оның кемшіліктері де жоқ емес. Олардың кейбіреулері:

  • Жүгіруге көп уақыт кетеді.
  • Бағдарламаның қара жәшік сынағы кезінде табылған бұзылулар және басқа да күтпеген әрекеттерді талдау немесе жөндеу мүмкін болмаса, қиын болуы мүмкін.
  • Смарт мутацияға негізделген фузерлер үшін мутация үлгілерін жасау көп уақытты қажет етуі мүмкін. Кейде, тіпті енгізу үлгісі меншікті немесе белгісіз болғандықтан мүмкін болмауы мүмкін.

 

Соған қарамастан, бұл жаман жігіттерден бұрын қателерді тапқысы келетін кез келген адам үшін өте пайдалы және қажетті құрал.

қорытынды

Fuzzing - бұл бағдарламалық жасақтамадағы осалдықтарды ашу үшін қолдануға болатын қуатты қаламмен тестілеу әдісі. Фузерлердің көптеген түрлері бар және жаңа фузерлер үнемі әзірленуде. Қиындық өте пайдалы құрал болғанымен, оның шектеулері бар. Мысалы, fuzzers тек көптеген осалдықтарды таба алады және олар өте көп ресурстарды қажет етеді. Дегенмен, осы таңғажайып техниканы өзіңіз қолданып көргіңіз келсе, бізде бар біздің платформада пайдалануға болатын тегін DNS Fuzzer API. 

Сіз не күтіп отырсыз? 

Дәл бүгіннен бастаңыз!

Коболд хаттары: HTML негізіндегі электрондық пошта фишингтік шабуылдары

Коболд хаттары: HTML негізіндегі электрондық пошта фишингтік шабуылдары

Коболд хаттары: HTML негізіндегі электрондық пошта фишингтік шабуылдары 31 жылдың 2024 наурызында Luta Security жаңа күрделі фишинг векторы Коболд хаттарына жарық түсіретін мақаланы шығарды.

Ары қарай оқу »
Google және инкогнито мифі

Google және инкогнито мифі

Google және инкогнито мифі 1 жылдың 2024 сәуірінде Google инкогнито режимінен жиналған миллиардтаған деректер жазбаларын жою арқылы сот ісін шешуге келісті.

Ары қарай оқу »
MAC мекенжайын қалай бұрмалауға болады

MAC мекенжайлары және MAC жалғандығы: жан-жақты нұсқаулық

MAC мекенжайы және MAC жалғандығы: кешенді нұсқаулық Кіріспе Байланысты жеңілдетуден қауіпсіз қосылымдарды қосуға дейін MAC мекенжайлары құрылғыларды анықтауда негізгі рөл атқарады.

Ары қарай оқу »