Fuzzing ဆိုတာဘာလဲ။

ဘာတွေ ရှုပ်နေတာလဲ

နိဒါန်း- Fuzzing ဆိုတာ ဘာလဲ?

2014 ခုနှစ်တွင် တရုတ်ဟက်ကာများ Community Health Systems ထဲသို့ ဖောက်ထွင်းဝင်ရောက်ခဲ့သည်။အကျိုးအမြတ်အတွက် US ဆေးရုံကွင်းဆက်တစ်ခုဖြစ်ပြီး လူနာ 4.5 သန်း၏ဒေတာကို ခိုးယူခဲ့သည်။ ဟက်ကာများသည် ဟက်ကာများ မဟက်မီ လအနည်းငယ်အလိုတွင် OpenSSL ကုဒ်ဝှက်စာရိုက်စာကြည့်တိုက်တွင် ရှာဖွေတွေ့ရှိခဲ့သော Heartbleed ဟူသော ချို့ယွင်းချက်ကို အသုံးချခဲ့သည်။

Heartbleed သည် ပဏာမစစ်ဆေးမှုများကို ကျော်ဖြတ်ရန် လုံလောက်သော ပုံစံမမှန်သော တောင်းဆိုချက်များကို ပေးပို့ခြင်းဖြင့် တိုက်ခိုက်သူများသည် ပစ်မှတ်သို့ ဝင်ရောက်နိုင်စေမည့် တိုက်ခိုက်မှု vector အမျိုးအစားတစ်ခု၏ ဥပမာတစ်ခုဖြစ်သည်။ အက်ပ်တစ်ခု၏ မတူညီသော အစိတ်အပိုင်းများတွင် အလုပ်လုပ်သော ကျွမ်းကျင်ပညာရှင်များသည် ၎င်း၏လုံခြုံရေးကို သေချာစေရန် အတတ်နိုင်ဆုံး လုပ်ဆောင်နေသော်လည်း အက်ပ်တစ်ခုအား ဖောက်ဖျက်နိုင်သည့် သို့မဟုတ် ဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်း အားနည်းချက်ဖြစ်စေနိုင်သည့် ထောင့်ပေါင်းစုံမှ ကိစ္စရပ်အားလုံးကို စဉ်းစားရန် မဖြစ်နိုင်ပေ။

ဤနေရာတွင် 'ဖျတ်ခနဲ' ဝင်လာသည်။

Fuzzing Attack ဆိုတာ ဘာလဲ။

Fuzzing၊ fuzz စမ်းသပ်ခြင်း သို့မဟုတ် fuzzing attack သည် ပရိုဂရမ်တစ်ခုထဲသို့ ကျပန်း၊ မမျှော်လင့်ထားသော သို့မဟုတ် မမှန်ကန်သောဒေတာများ (fuzz ဟုခေါ်သည်) ကျွေးမွေးရန်အတွက် အသုံးပြုသည့် အလိုအလျောက်ဆော့ဖ်ဝဲစမ်းသပ်ခြင်းနည်းပညာတစ်ခုဖြစ်သည်။ ပရိုဂရမ်ကို ပုံမှန်မဟုတ်သော သို့မဟုတ် မမျှော်လင့်ထားသော အပြုအမူများဖြစ်သည့် ကြားခံများလျှံကျခြင်း၊ ပျက်စီးမှုများ၊ မှတ်ဉာဏ်ယိုစိမ့်မှု၊ ကြိုးပြတ်တောက်မှုများနှင့် ဝင်ရောက်ဖတ်ရှုခြင်း/ရေးခြင်းဆိုင်ရာ ချိုးဖောက်မှုများကဲ့သို့သော ပုံမှန်မဟုတ်သော သို့မဟုတ် မမျှော်လင့်ထားသော အပြုအမူများအတွက် စောင့်ကြည့်စစ်ဆေးသည်။ ထို့နောက် ပုံမှန်မဟုတ်သော အမူအကျင့်များ၏ အကြောင်းရင်းကို ဖော်ထုတ်ရန် fuzzing tool သို့မဟုတ် fuzzer ကို အသုံးပြုသည်။

Fuzzing သည် စနစ်အားလုံးတွင် ရှာဖွေတွေ့ရှိရန် စောင့်ဆိုင်းနေသော bug များပါရှိသည်ဟူသော ယူဆချက်အပေါ် အခြေခံကာ ၎င်းကို လုပ်ဆောင်ရန် အချိန်နှင့် အရင်းအမြစ်များ လုံလောက်စွာ ပေးထားနိုင်သည်။ စနစ်အများစုတွင် အလွန်ကောင်းမွန်သော ခွဲခြမ်းစိတ်ဖြာချက်များ သို့မဟုတ် ထည့်သွင်းမှုအား သက်သေပြခြင်းတို့ကို တားဆီးနိုင်သည်။ cybercriminals ။ ပရိုဂရမ်တစ်ခုရှိ အယူအဆဆိုင်ရာ အမှားများကို အသုံးချခြင်းမှ သို့သော်လည်း အထက်တွင်ဖော်ပြခဲ့သည့်အတိုင်း ဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်း ထောင့်ပေါင်းစုံမှ ကိစ္စရပ်အားလုံးကို ခြုံငုံရန်မှာ ခက်ခဲပါသည်။

Fuzzers များကို ဖွဲ့စည်းတည်ဆောက်ထားသော ထည့်သွင်းမှု သို့မဟုတ် ယုံကြည်စိတ်ချရသော နယ်နိမိတ်အချို့ရှိသည့် ပရိုဂရမ်များတွင် အသုံးပြုသည်။ ဥပမာအားဖြင့်၊ PDF ဖိုင်များကိုလက်ခံသည့်ပရိုဂရမ်တစ်ခုတွင် ဖိုင်တွင် .pdf တိုးချဲ့မှုနှင့် PDF ဖိုင်ကိုလုပ်ဆောင်ရန် parser ပါရှိကြောင်းသေချာစေရန်အတွက် တရားဝင်မှုအချို့ရှိမည်ဖြစ်သည်။

ထိရောက်သော fuzzer သည် ဤနယ်နိမိတ်များကို ကျော်ဖြတ်ရန် လုံလောက်သော အကျုံးဝင်သော သွင်းအားစုများကို ဖန်တီးပေးနိုင်သော်လည်း ပရိုဂရမ်အောက်သို့ မမျှော်လင့်ထားသော အမူအကျင့်များကို ဖြစ်စေနိုင်လောက်အောင် မှန်ကန်မှုမရှိပါ။ အဘယ်ကြောင့်ဆိုသော် သက်သေအထောက်အထားများကို ကျော်ဖြတ်နိုင်ရုံမျှမက နောက်ထပ် ထိခိုက်မှုများ မဖြစ်ပေါ်စေပါက များစွာ အဓိပ္ပါယ်မရှိသောကြောင့်ဖြစ်သည်။

Fuzzers များသည် SQL ထိုးသွင်းခြင်း၏အကြိုက်များ၊ ဆိုက်ဖြတ်ထားသော scripting၊ buffer overflow နှင့် denial-of-service attacks တို့အပါအဝင်နှင့် အလွန်ဆင်တူသော တိုက်ခိုက်မှု vector များကို ရှာဖွေတွေ့ရှိပါသည်။ ဤတိုက်ခိုက်မှုများအားလုံးသည် မမျှော်လင့်ထားသော၊ မမှန်ကန်သော သို့မဟုတ် ကျပန်းဒေတာများကို စနစ်တစ်ခုထဲသို့ ဖြည့်သွင်းခြင်းကြောင့် ရလဒ်ဖြစ်သည်။ 

 

Fuzzers အမျိုးအစားများ

အချို့သောလက္ခဏာရပ်များပေါ်မူတည်၍ Fuzzers များကို အမျိုးအစားခွဲခြားနိုင်သည်။

  1. ပစ်မှတ်များကို တိုက်ခိုက်ပါ။
  2. Fuzz ဖန်တီးမှုနည်းလမ်း
  3. ထည့်သွင်းဖွဲ့စည်းပုံကို သတိပြုပါ။
  4. ပရိုဂရမ်ဖွဲ့စည်းပုံကို သတိပြုပါ။

1. ပစ်မှတ်များကို တိုက်ခိုက်ပါ။

ဤအမျိုးအစားခွဲခြားမှုသည် စမ်းသပ်ရန်အသုံးပြုနေသည့် fuzzer ပလပ်ဖောင်းအမျိုးအစားအပေါ်အခြေခံသည်။ Fuzzers များကို network protocol များနှင့် software applications များတွင် အများအားဖြင့် အသုံးပြုကြသည်။ ပလက်ဖောင်းတစ်ခုစီတွင် ၎င်းရရှိသည့် သီးခြားထည့်သွင်းမှုအမျိုးအစားတစ်ခုစီရှိသောကြောင့် မတူညီသော fuzzers အမျိုးအစားများ လိုအပ်ပါသည်။

ဥပမာအားဖြင့်၊ အပလီကေးရှင်းများနှင့် ဆက်ဆံရာတွင်၊ အသုံးပြုသူ အင်တာဖေ့စ်၊ ကွန်မန်းလိုင်းဂိတ်၊ ဖောင်များ/စာသားထည့်သွင်းမှုများနှင့် ဖိုင်အပ်လုဒ်များကဲ့သို့သော အပလီကေးရှင်း၏ အမျိုးမျိုးသောထည့်သွင်းမှုချန်နယ်များတွင် ရှုပ်ထွေးသောကြိုးစားမှုများအားလုံး ဖြစ်ပေါ်ပါသည်။ ထို့ကြောင့် fuzzer မှထုတ်ပေးသော input အားလုံးကို ဤချန်နယ်များနှင့် ကိုက်ညီရပါမည်။

ဆက်သွယ်ရေးပရိုတိုကောများနှင့် ပတ်သက်သည့် Fuzzers များသည် ပက်ကတ်များနှင့် ကိုင်တွယ်ဖြေရှင်းရန် လိုအပ်သည်။ ဤပလပ်ဖောင်းကို ပစ်မှတ်ထားသည့် Fuzzers များသည် အတုအပ packet များကို ဖန်တီးနိုင်သည်၊ သို့မဟုတ် ကြားဖြတ်ခံထားရသော packets များကို မွမ်းမံပြင်ဆင်ရန်နှင့် ၎င်းတို့ကို ပြန်လည်ပြသရန် proxy များအဖြစ်ပင် လုပ်ဆောင်နိုင်ပါသည်။

2. Fuzz ဖန်တီးမှုနည်းလမ်း

Fuzzers များကို ၎င်းတို့ ဖန်တီးပုံပေါ်တွင် အခြေခံ၍ Fuzzers များကို ခွဲခြားနိုင်သည်။ သမိုင်းကြောင်းအရ၊ fuzzers များသည် ကျပန်းဒေတာများကို အစမှနေ၍ ထုတ်ပေးခြင်းဖြင့် fuzz ကို ဖန်တီးခဲ့ကြသည်။ ဤနည်းပညာကို အစပြုသူ ပရော်ဖက်ဆာ Barton Miller က ၎င်းကို အစပိုင်းတွင် ပြုလုပ်ပုံဖြစ်သည်။ ဤ fuzzer အမျိုးအစားကို a ဟုခေါ်သည်။ မျိုးဆက်အခြေခံ fuzzer.

သို့သော်၊ တစ်ဦးသည် ယုံကြည်စိတ်ချရသောနယ်နိမိတ်ကို ကျော်ဖြတ်မည့် သီအိုရီအရ ဒေတာကို ဖန်တီးနိုင်သော်လည်း ထိုသို့ပြုလုပ်ရန် အချိန်နှင့် အရင်းအမြစ်များစွာ လိုအပ်မည်ဖြစ်သည်။ ထို့ကြောင့် ဤနည်းလမ်းကို ရိုးရှင်းသော ထည့်သွင်းတည်ဆောက်ပုံများဖြင့် စနစ်များအတွက် အသုံးပြုသည်။

ဤပြဿနာအတွက် အဖြေတစ်ခုသည် ယုံကြည်စိတ်ချရသောနယ်နိမိတ်ကို ကျော်ဖြတ်ရန် လုံလောက်သော ဒေတာထုတ်လုပ်ရန် မှန်ကန်သည်ဟု သိရှိထားသော ဒေတာကို ပြောင်းပစ်ရန်ဖြစ်ပြီး ပြဿနာများဖြစ်ပေါ်စေနိုင်လောက်အောင် မမှန်ကန်ပါ။ ဒါက ဥပမာကောင်းတစ်ခုပါ။ DNS fuzzer ၎င်းသည် သတ်မှတ်ထားသော ဒိုမိန်းပိုင်ရှင်ကို ပစ်မှတ်ထားသည့် ဒိုမိန်းပိုင်ရှင်ကို ပစ်မှတ်ထားနိုင်သည့် အန္တရာယ်ရှိသော ဒိုမိန်းများကို ရှာဖွေတွေ့ရှိရန် ဒိုမိန်းအမည်တစ်ခုကို ယူပြီးနောက် ကြီးမားသော ဒိုမိန်းအမည်များစာရင်းကို ထုတ်ပေးသည်။

ဤချဉ်းကပ်မှုသည် ယခင်ပုံစံထက် စမတ်ကျပြီး ဖြစ်နိုင်ချေရှိသော ပြောင်းလဲမှုများကို သိသိသာသာ ကျဉ်းမြောင်းစေသည်။ ဤနည်းကိုသုံးသော Fuzzers ဟုခေါ်သည်။ ဗီဇပြောင်းလဲခြင်းအခြေခံ fuzzers

အားနည်းချက်များကို အမြစ်ဖြတ်ရန် လိုအပ်သော အကောင်းဆုံး fuzz ဒေတာကို ပေါင်းစပ်ရန် မျိုးရိုးဗီဇဆိုင်ရာ အယ်လဂိုရီသမ်များကို အသုံးပြုသည့် တတိယမြောက် မကြာသေးမီက နည်းလမ်းတစ်ခု ရှိပါသည်။ ၎င်းသည် ပရိုဂရမ်တစ်ခုထဲသို့ ထည့်လိုက်သောအခါ စမ်းသပ်မှုဒေတာတစ်ခုစီ၏ စွမ်းဆောင်ရည်ကို ထည့်သွင်းစဉ်းစားကာ ၎င်း၏ fuzz ဒေတာကို စဉ်ဆက်မပြတ် ပြန်လည်သန့်စင်ခြင်းဖြင့် အလုပ်လုပ်ပါသည်။ 

စွမ်းဆောင်ရည်အဆိုးဆုံး ဒေတာအတွဲများကို ဒေတာအစုအဝေးမှ ဖယ်ရှားပြီး အကောင်းဆုံးကို အသွင်ပြောင်းကာ/သို့မဟုတ် ပေါင်းစပ်ထားသည်။ ထို့နောက် ဒေတာမျိုးဆက်သစ်ကို ထပ်မံစမ်းသပ်ရန် အသုံးပြုပါသည်။ အဆိုပါ fuzzers များအဖြစ်ရည်ညွှန်းသည်။ ဆင့်ကဲပြောင်းလဲမှုကိုအခြေခံသော fuzzers။

3. Input Structure ကို သိရှိနားလည်ခြင်း။

ဤအမျိုးအစားခွဲခြားမှုသည် ပရိုဂရမ်တစ်ခု၏ ပရိုဂရမ်တစ်ခု၏ ထည့်သွင်းဖွဲ့စည်းပုံကို သတိပြုမိပြီး fuzz ဒေတာကို ထုတ်ပေးရာတွင် တက်ကြွစွာအသုံးပြုခြင်းရှိမရှိအပေါ် အခြေခံသည်။ တစ် အသုံးမကျသော fuzzer (ပရိုဂရမ်တစ်ခု၏ထည့်သွင်းမှုတည်ဆောက်ပုံကိုသတိမထားမိသော fuzzer) သည် အများအားဖြင့် ကျပန်းပုံစံဖြင့် fuzz ကိုထုတ်ပေးသည်။ ၎င်းတွင် မျိုးဆက်နှင့် ဗီဇကိုအခြေခံသည့် fuzzers နှစ်မျိုးလုံး ပါဝင်နိုင်သည်။ 


ပရိုဂရမ်တစ်ခု၏ ထည့်သွင်းမှုပုံစံကို ပရိုဂရမ်တစ်ခုအား ပံ့ပိုးပေးပါက၊ ထို့နောက်တွင် ပရိုဂရမ်သည် ပံ့ပိုးပေးထားသည့် ထည့်သွင်းပုံစံနှင့် ကိုက်ညီသည့် ဒေတာကို ထုတ်လုပ်ရန် သို့မဟုတ် ပြောင်းလဲရန် ကြိုးစားနိုင်သည်။ ဤနည်းလမ်းသည် မမှန်ကန်သောဒေတာကို ဖန်တီးရာတွင် အသုံးပြုသည့် အရင်းအမြစ်ပမာဏကို ပိုမိုလျှော့ချပေးသည်။ ထိုသို့သော ပဟေဠိကို A ဟုခေါ်သည်။ စမတ် fuzzer.

4. Program Structure ကို သိရှိနားလည်ခြင်း။

Fuzzers များသည် ၎င်းတို့လုပ်ဆောင်နေသော ပရိုဂရမ်၏ အတွင်းပိုင်း လုပ်ဆောင်ချက်များကို သိရှိခြင်း ရှိ၊ မရှိ နှင့် fuzz data များ ဖန်တီးရာတွင် အထောက်အကူ ဖြစ်စေရန်အတွက် ထိုအသိဥာဏ်ကို အသုံးပြု၍ ခွဲခြားနိုင်သည်။ ပရိုဂရမ်တစ်ခု၏ အတွင်းပိုင်းဖွဲ့စည်းပုံကို နားမလည်ဘဲ စမ်းသပ်ရန် fuzzers ကိုအသုံးပြုသောအခါ၊ ၎င်းကို black-box testing ဟုခေါ်သည်။ 

black-box စမ်းသပ်စဉ်အတွင်း ထုတ်ပေးသော Fuzz ဒေတာသည် အများအားဖြင့် ကျပန်းကျပန်းဖြစ်ပြီး၊ ၎င်းသည် ဆင့်ကဲပြောင်းလဲမှုကို အခြေခံသည့် fuzzer တစ်ခုဖြစ်ပြီး ၎င်းသည် ၎င်း၏ fuzzing ၏အကျိုးသက်ရောက်မှုကို စောင့်ကြည့်ပြီး ၎င်းကိုအသုံးပြုခြင်းဖြင့် 'သင်ယူ' သတင်းအချက်အလက် ၎င်း၏ fuzz ဒေတာအစုံကို ပြန်လည်ပြင်ဆင်ရန်။

အခြားတစ်ဖက်တွင် White-box စမ်းသပ်ခြင်းသည် ပရိုဂရမ်၏အတွင်းပိုင်းတည်ဆောက်ပုံပုံစံကို အသုံးပြု၍ fuzz ဒေတာကိုထုတ်ပေးသည်။ ဤချဉ်းကပ်နည်းသည် ပရိုဂရမ်တစ်ခုရှိ အရေးကြီးသောနေရာများသို့ ပရိုဂရမ်တစ်ခုသို့ရောက်ရှိစေပြီး ၎င်းအား စမ်းသပ်စေသည်။ 

နာမည်ကြီး Fuzzing ကိရိယာများ

အလိမ်အညာတွေ အများကြီးရှိတယ်။ tools တွေ အဲဒီမှာ ဘောပင် စမ်းသပ်သူတွေ သုံးတယ်။ လူကြိုက်အများဆုံးအရာအချို့မှာ-

Fuzzing ၏ကန့်သတ်ချက်များ

Fuzzing သည် အမှန်တကယ်အသုံးဝင်သော pen-testing နည်းပညာတစ်ခုဖြစ်သော်လည်း ၎င်း၏ ချို့ယွင်းချက်မရှိပေ။ ၎င်းတို့ထဲမှ အချို့မှာ-

  • ပြေးဖို့ တော်တော်ကြာတယ်။
  • ပရိုဂရမ်တစ်ခု၏ black-box စမ်းသပ်စဉ်အတွင်း ပျက်စီးမှုများနှင့် အခြားမမျှော်လင့်ထားသော အပြုအမူများကို ခွဲခြမ်းစိတ်ဖြာရန် သို့မဟုတ် အမှားရှာရန် မဖြစ်နိုင်ပါက ခက်ခဲနိုင်သည်။
  • smart mutation-based fuzzers အတွက် mutation templates ဖန်တီးခြင်းသည် အချိန်ကုန်နိုင်ပါသည်။ တခါတရံတွင်၊ input model ကို မူပိုင် သို့မဟုတ် မသိခြင်းကြောင့်ပင် ဖြစ်နိုင်သည်။

 

မည်သို့ပင်ဆိုစေကာမူ၊ ၎င်းသည် လူဆိုးများရှေ့တွင် bug များကိုရှာဖွေလိုသူတိုင်းအတွက် အလွန်အသုံးဝင်ပြီး လိုအပ်သောကိရိယာတစ်ခုဖြစ်သည်။

ကောက်ချက်

Fuzzing သည် ဆော့ဖ်ဝဲလ်တွင် အားနည်းချက်များကို ဖော်ထုတ်ရန် အသုံးပြုနိုင်သည့် အစွမ်းထက်သော ကလောင်စမ်းသပ်ခြင်း နည်းပညာတစ်ခုဖြစ်သည်။ fuzzers အမျိုးအစားများစွာရှိပြီး၊ fuzzers အသစ်များကို အချိန်တိုင်းတီထွင်နေပါသည်။ fuzzing သည် မယုံနိုင်လောက်အောင် အသုံးဝင်သော tool တစ်ခုဖြစ်သော်လည်း၊ ၎င်းတွင် ကန့်သတ်ချက်များရှိသည်။ ဥပမာအားဖြင့်၊ fuzzers များသည် အားနည်းချက်များစွာကိုသာ ရှာဖွေနိုင်ပြီး ၎င်းတို့သည် အရင်းအမြစ်အများအားဖြင့် အလွန်အကျုံးဝင်နိုင်သည်။ သို့သျောလညျး၊ သင်သည်ဤအံ့သြဖွယ်နည်းပညာကိုသင်ကိုယ်တိုင်စမ်းသုံးလိုပါက၊ ကျွန်ုပ်တို့တွင်တစ်ခုရှိသည်။ ကျွန်ုပ်တို့၏ပလပ်ဖောင်းပေါ်တွင် သင်အသုံးပြုနိုင်သည့် အခမဲ့ DNS Fuzzer API။ 

ဒါကြောင့်အဘယျသို့သင်တို့အဘို့စောင့်ဆိုင်းနေလဲ? 

ယ​နေ့စတင်​ပြီး စိတ်​ညစ်​​နေပါ။

LockBit ခေါင်းဆောင် Identity ကို ထုတ်ဖော်ခဲ့သည် - တရားဝင် သို့မဟုတ် Troll ပါသလား။

LockBit ခေါင်းဆောင် Identity ကို ထုတ်ဖော်ခဲ့သည် – တရားဝင် သို့မဟုတ် Troll ပါသလား။

LockBit ခေါင်းဆောင် Identity ကို ထုတ်ဖော်ခဲ့သည် – တရားဝင် သို့မဟုတ် Troll ပါသလား။ ကမ္ဘာပေါ်တွင် အတိုးတက်ဆုံး ransomware အုပ်စုများထဲမှ တစ်ခုအဖြစ် ကျယ်ကျယ်ပြန့်ပြန့် အသိအမှတ်ပြုခံထားရသော Lockbit သည် ပထမဆုံး ပေါ်ထွက်လာခဲ့သည်

ဆက်ဖတ်ရန် "
TOR Censorship ကို ကျော်ဖြတ်ခြင်း။

TOR ဖြင့် အင်တာနက်ဆင်ဆာဖြတ်ခြင်းကို ကျော်ဖြတ်ခြင်း။

TOR နိဒါန်းဖြင့် အင်တာနက်ဆင်ဆာဖြတ်တောက်ခြင်းကို ကျော်ဖြတ်ခြင်း သတင်းရယူခွင့်ကို ပိုမိုထိန်းချုပ်သည့်ကမ္ဘာတွင် Tor ကွန်ရက်ကဲ့သို့သော ကိရိယာများသည် အရေးပါလာပါသည်။

ဆက်ဖတ်ရန် "