Fuzzing деген эмне?

Эмне кыжаалат

Intro: Fuzzing деген эмне?

2014-жылы кытайлык хакерлер Коомдук саламаттык сактоо тутумдарына хакердик чабуул жасалган, АКШнын коммерциялык ооруканалар чынжырчасы жана 4.5 миллион бейтаптын маалыматын уурдаган. Хакерлер OpenSSL криптографиялык китепканасында хакерликтен бир нече ай мурун табылган Heartbleed деп аталган катаны пайдаланышкан.

Heartbleed чабуул векторлорунун классынын мисалы болуп саналат, ал чабуулчуларга алдын ала текшерүүдөн өтүү үчүн жарактуу туура эмес формадагы суроо-талаптарды жөнөтүү аркылуу бутага жетүүгө мүмкүндүк берет. Колдонмонун ар кайсы бөлүктөрүндө иштеген адистер анын коопсуздугун камсыз кылуу үчүн колунан келгендин баарын жасашса да, иштеп чыгуу учурунда колдонмону бузуп же аны аялуу кылып коюшу мүмкүн болгон бардык бурчтук учурларды ойлонуу мүмкүн эмес.

Мына ушул жерде "булуңку" пайда болот.

Бир бүдөмүк чабуул деген эмне?

Толкундоо, бүдөмүк тестирлөө же бүдөмүк чабуул – бул программага туш келди, күтүлбөгөн же жараксыз маалыматтарды (fuzz деп аталган) берүү үчүн колдонулган автоматташтырылган программалык тестирлөө ыкмасы. Программа буфердин толуп кетиши, кыйроолор, эс тутумдун агып кетиши, жиптин илинип калышы жана окуу/жазуу мүмкүнчүлүгүн бузуу сыяктуу адаттан тыш же күтүлбөгөн жүрүм-турумдарга көз салат. Андан кийин адаттан тыш жүрүм-турумдун себебин ачуу үчүн fuzzing куралы же fuzzer колдонулат.

Fuzzing бардык системалар табыла турган мүчүлүштүктөрдү камтыйт деген божомолго негизделген жана аны жасоо үчүн жетиштүү убакыт жана ресурстар берилиши мүмкүн. Көпчүлүк системалардын алдын алуу үчүн абдан жакшы талдоочулары же киргизүү валидациясы бар киберкылмышкерлер программадагы гипотетикалык мүчүлүштүктөрдү пайдалануудан. Бирок, биз жогоруда айтылгандай, иштеп чыгуу учурунда бардык бурчтук иштерди камтуу кыйын.

Фузерлер структураланган киргизүүнү алган же кандайдыр бир ишеним чеги бар программаларда колдонулат. Мисалы, PDF файлдарын кабыл алган программада файлдын .pdf кеңейтүүсү жана PDF файлын иштетүү үчүн талдоочу бар экенине кепилдик берүү үчүн кээ бир текшерүүлөр болот.

Натыйжалуу фузер бул чектерден өтүү үчүн жарактуу, бирок программанын төмөн жагында күтүүсүз жүрүм-турумду пайда кылуу үчүн жетиштүү жараксыз киргизүүлөрдү жаратышы мүмкүн. Бул маанилүү, анткени валидациялардан өтүп кетүү, эгерде мындан ары зыян келтирилбесе, көп деле мааниге ээ эмес.

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

 

Фузерлердин түрлөрү

Фузерлерди кээ бир белгилери боюнча классификациялоого болот:

  1. Буталарга чабуул коюу
  2. Булуттарды түзүү ыкмасы
  3. Киргизүү структурасын билүү
  4. Программанын структурасын билүү

1. Буталарга чабуул коюу

Бул классификация fuzzer сыноо үчүн колдонулуп жаткан платформанын түрүнө негизделген. Fuzzers көбүнчө тармактык протоколдор жана программалык тиркемелер менен колдонулат. Ар бир платформа, ал кабыл алган киргизүүнүн белгилүү бир түрү бар, ошондуктан, fuzzers ар кандай түрлөрүн талап кылат.

Мисалы, тиркемелер менен иштөөдө, бардык бүдөмүк аракеттер колдонмонун колдонуучу интерфейси, буйрук сабы терминалы, формалар/текст киргизүүлөрү жана файлдарды жүктөө сыяктуу ар кандай киргизүү каналдарында болот. Ошентип, fuzzer тарабынан түзүлгөн бардык киргизүүлөр бул каналдарга дал келиши керек.

Байланыш протоколдору менен иштеген фузерлер пакеттер менен иштеши керек. Бул платформаны бутага алган fuzzers жасалма пакеттерди жаратышы мүмкүн, ал тургай, кармалган пакеттерди өзгөртүү жана аларды кайра ойнотуу үчүн прокси катары иштей алат.

2. Fuzz түзүү ыкмасы

Fuzzers ошондой эле алар менен fuzzy үчүн маалыматтарды түзүү боюнча классификациялоого болот. Тарыхый жактан алганда, fuzzers нөлдөн баштап кокус маалыматтарды жаратып, fuzz жараткан. Бул техниканын демилгечиси, профессор Бартон Миллер башында ушундай кылган. Фузердин бул түрү а деп аталат муунга негизделген fuzzer.

Бирок, теориялык жактан ишеним чегин кыйгап өтө турган маалыматтарды түзүүгө мүмкүн болсо да, бул үчүн бир топ убакыт жана ресурстар талап кылынат. Ошондуктан, бул ыкма, адатта, жөнөкөй киргизүү структуралары менен системалар үчүн колдонулат.

Бул маселенин чечими - ишенимдүү чек арадан өтүү үчүн жарактуу, бирок көйгөйлөрдү жарата тургандай жараксыз маалыматтарды түзүү үчүн жарактуу болгон маалыматтарды мутациялоо. Мунун жакшы мисалы болуп саналат DNS fuzzer домендик аталышты алып, андан кийин көрсөтүлгөн домендин ээсине багытталган потенциалдуу зыяндуу домендерди аныктоо үчүн домендик аталыштардын чоң тизмесин түзөт.

Бул ыкма мурункуга караганда акылдуураак жана мүмкүн болгон алмаштырууларды кыйла тарытат. Бул ыкманы колдонгон фузерлер деп аталат мутацияга негизделген фузерлер

Алсыздыктарды жок кылуу үчүн зарыл болгон оптималдуу бүдөмүк маалыматтарды бириктирүү үчүн генетикалык алгоритмдерди колдонгон үчүнчү акыркы ыкма бар. Ал программага киргизилгенде ар бир сыноо маалыматтарынын иштешин эске алуу менен өзүнүн бүдөмүк маалыматтарын такай тактоо менен иштейт. 

Эң начар иштеген маалыматтар топтому маалымат пулунан алынып салынат, ал эми эң жакшылары мутацияланган жана/же бириктирилген. Маалыматтын жаңы мууну андан кийин кайрадан fuzz test үчүн колдонулат. Бул fuzzers деп аталат эволюциялык мутацияга негизделген фузерлер.

3. Киргизүү структурасын билүү

Бул классификация fuzzer маалыматтарды генерациялоодо программанын киргизүү структурасын билет жана жигердүү колдоноруна негизделген. А дудук (программанын киргизүү структурасын билбеген fuzzer) көбүнчө кокустук режиминде бүдөмүктөрдү жаратат. Бул муундарды да, мутацияга негизделген фузерлерди да камтышы мүмкүн. 


Эгерде фузер программанын киргизүү модели менен камсыз кылынса, анда ал берилген киргизүү моделине дал келгидей маалыматтарды генерациялоого же мутациялоого аракет кыла алат. Бул ыкма жараксыз маалыматтарды жаратууга сарпталган ресурстардын көлөмүн дагы азайтат. Мындай фузер а деп аталат акылдуу фузер.

4. Программанын структурасын билүү

Fuzzers ошондой эле алар fuzzed жаткан программанын ички иштеши жөнүндө кабардар экенине жараша классификацияланышы мүмкүн жана бул маалымдуулукту бүдөмүк маалыматтарды түзүүгө жардам берүү үчүн колдонушат. Программаны анын ички түзүмүн түшүнбөстөн сынап көрүү үчүн fuzzers колдонулганда, ал кара кутуча тести деп аталат. 

Кара кутучаны тестирлөө учурунда түзүлгөн бүдөмүк маалыматтар, адатта, кокустук болуп саналат, эгерде фузер эволюциялык мутацияга негизделген фузер болуп саналбаса, анда ал анын fuzzing таасирин көзөмөлдөө жана аны колдонуу аркылуу "үйрөнөт". маалымат анын fuzz маалыматтар топтомун тактоо үчүн.

Ак кутуча тестирлөө, экинчи жагынан, бүдөмүк маалыматтарды түзүү үчүн программанын ички структурасынын моделин колдонот. Бул ыкма фузерге программанын маанилүү жерлерине жетип, аны сынап көрүүгө мүмкүндүк берет. 

Популярдуу Fuzzing куралдары

Кыйынчылыктар көп аспаптар ал жерде калем сыноочулар тарабынан колдонулат. Алардын эң популярдуусу:

Fuzzing чектөөлөрү

Fuzzing чындап эле пайдалуу калемди сыноо ыкмасы болсо да, анын кемчиликтери жок эмес. Алардын айрымдары төмөнкүлөр:

  • Бул иштетүү үчүн бир топ убакыт талап кылынат.
  • Программанын кара кутучасын текшерүү учурунда табылган кыйроолор жана башка күтүлбөгөн жүрүм-турумдарды талдоо же мүчүлүштүктөрдү оңдоо кыйынга турушу мүмкүн.
  • Акылдуу мутацияга негизделген фузерлер үчүн мутация үлгүлөрүн түзүү көп убакытты талап кылышы мүмкүн. Кээде киргизүү модели менчик же белгисиз болгондуктан, бул мүмкүн болбой калышы мүмкүн.

 

Ошентсе да, бул жаман балдардан мурун мүчүлүштүктөрдү табууну каалагандар үчүн абдан пайдалуу жана керектүү курал.

жыйынтыктоо

Fuzzing - бул программалык камсыздоодогу кемчиликтерди ачуу үчүн колдонула турган күчтүү калемди тестирлөө ыкмасы. Фузерлердин ар кандай түрлөрү бар жана ар дайым жаңы фузерлер иштелип чыгууда. Түшүнүү укмуштуудай пайдалуу курал болсо да, анын чектөөлөрү бар. Мисалы, fuzzers ушунчалык көп аялууларды таба алат жана алар ресурстарды талап кылат. Бирок, эгер сиз бул укмуштуудай ыкманы өзүңүзгө сынап көргүңүз келсе, бизде бар бекер DNS Fuzzer API, сиз биздин платформада колдоно аласыз. 

Ошентип, Сиз эмнени күтүп жатышат? 

Бүгүндөн баштаңыз!

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

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

Kobold Letters: HTML негизиндеги электрондук почта фишингдик чабуулдары 31-жылдын 2024-мартында Luta Security компаниясы жаңы татаал фишинг векторуна жарык чачкан макаланы чыгарды, Коболд каттары.

Уландысы "