Fuzzing ڇا آهي؟

ڇا ٻرندڙ آهي

تعارف: فزنگ ڇا آهي؟

2014 ۾، چيني هيڪرز ڪميونٽي هيلٿ سسٽم ۾ هيڪ، هڪ منافعي واري يو ايس اسپتال جي زنجير، ۽ چوري ڪئي 4.5 ملين مريضن جي ڊيٽا. هيڪرز Heartbleed نالي هڪ بگ جو استحصال ڪيو جيڪو هيڪ ٿيڻ کان ڪجهه مهينا اڳ OpenSSL ڪرپٽوگرافي لائبريري ۾ دريافت ڪيو ويو هو.

Heartbleed هڪ مثال آهي هڪ طبقي جي حملي جي ویکٹر جو جيڪو حملي ڪندڙن کي هڪ ٽارگيٽ تائين رسائي جي اجازت ڏئي ٿو خراب ٿيل درخواستن ۾ موڪلڻ لاءِ ڪافي صحيح آهي ابتدائي چيڪن کي پاس ڪرڻ لاءِ. جڏهن ته پروفيشنل جيڪي هڪ ايپ جي مختلف حصن تي ڪم ڪن ٿا انهن جي حفاظت کي يقيني بڻائڻ لاءِ پنهنجو بهترين ڪم ڪن ٿا، اهو ناممڪن آهي سڀني ڪنڊن جي ڪيسن بابت سوچڻ جيڪي ايپ کي ٽوڙي سگهن ٿا يا ان کي ڊولپمينٽ دوران ڪمزور بڻائي سگهن ٿا.

اهو آهي جتي 'فزنگ' اچي ٿو.

هڪ Fuzzing حملو ڇا آهي؟

Fuzzing, fuzz testing, or a fuzzing attack، هڪ خودڪار سافٽ ويئر ٽيسٽنگ ٽيڪنڪ آهي جيڪو بي ترتيب، غير متوقع، يا غلط ڊيٽا (جنهن کي fuzz سڏيو ويندو آهي) کي پروگرام ۾ فيڊ ڪرڻ لاءِ استعمال ڪيو ويندو آهي. پروگرام جي نگراني ڪئي ويندي آهي غير معمولي يا غير متوقع رويي جي لاءِ جيئن ته بفر اوور فلوز، حادثا، ميموري ليڪيجز، ٿريڊ هينگ، ۽ پڙهڻ/لکڻ جي رسائي جي ڀڃڪڙي. fuzzing اوزار يا fuzzer پوء استعمال ڪيو ويندو آهي غير معمولي رويي جي سبب کي ظاهر ڪرڻ لاء.

فزنگ ان مفروضي تي مبني آهي ته سڀني سسٽم ۾ بگ شامل آهن دريافت ٿيڻ جي انتظار ۾، ۽ ائين ڪرڻ لاءِ ڪافي وقت ۽ وسيلا ڏئي سگهجن ٿا. اڪثر سسٽم ۾ تمام سٺو پارسر يا ان پٽ جي تصديق کي روڪڻ آهي سائبريڪريشن هڪ پروگرام ۾ ڪنهن به فرضي بگ جي استحصال کان. بهرحال، جيئن اسان مٿي ذڪر ڪيو آهي، ترقي جي دوران سڀني ڪنڊ ڪيسن کي ڍڪڻ ڏکيو آهي.

Fuzzers انهن پروگرامن تي استعمال ڪيا ويندا آهن جيڪي منظم ان پٽ ۾ وٺن ٿا يا ڪنهن قسم جي اعتماد جي حد آهن. مثال طور، هڪ پروگرام جيڪو PDF فائلن کي قبول ڪري ٿو ان کي ڪجهه تصديق ڪرڻي پوندي انهي کي يقيني بڻائڻ لاءِ ته فائل وٽ .pdf ايڪسٽينشن ۽ پي ڊي ايف فائل کي پروسيس ڪرڻ لاءِ پارسر آهي.

هڪ مؤثر fuzzer انهن حدن کي ماضي حاصل ڪرڻ لاء ڪافي صحيح ان پٽ پيدا ڪري سگهي ٿو پر پروگرام کان پري غير متوقع رويي جو سبب بڻائڻ لاء ڪافي غلط آهي. اهو ضروري آهي ڇاڪاڻ ته صرف ماضي جي تصديق حاصل ڪرڻ جي قابل ٿيڻ جو مطلب اهو ناهي ته جيڪڏهن وڌيڪ نقصان نه ٿئي.

Fuzzers دريافت ڪرڻ وارا حملي وارا ویکٹر تمام گهڻا ملندڙ آهن ۽ شامل آهن پسندن جي SQL انجيڪشن، ڪراس سائيٽ اسڪرپٽنگ، بفر اوور فلو، ۽ سروس جي رد ڪرڻ جي حملن. اهي سڀئي حملا هڪ سسٽم ۾ غير متوقع، غلط، يا بي ترتيب واري ڊيٽا کي کارائڻ جو نتيجو آهن. 

 

فزرز جا قسم

فزرز کي ڪجهه خاصيتن جي بنياد تي درجه بندي ڪري سگهجي ٿو:

  1. حملي جا مقصد
  2. فز ٺاهڻ جو طريقو
  3. ان پٽ ساخت جي آگاهي
  4. پروگرام جي جوڙجڪ جي آگاهي

1. حملي جا هدف

هي درجه بندي پليٽ فارم جي قسم تي ٻڌل آهي فزر کي جانچ ڪرڻ لاءِ استعمال ڪيو پيو وڃي. Fuzzers عام طور تي نيٽ ورڪ پروٽوڪول ۽ سافٽ ويئر ايپليڪيشنن سان استعمال ٿيندا آهن. هر پليٽ فارم وٽ هڪ خاص قسم جو ان پٽ هوندو آهي جيڪو اهو وصول ڪري ٿو، ۽ اهڙيءَ طرح مختلف قسمن جي فزرز جي ضرورت آهي.

مثال طور، جڏهن ايپليڪيشنن سان ڊيل ڪندي، سڀ مبهم ڪوششون ايپليڪيشن جي مختلف ان پٽ چينلن تي ٿينديون آهن، جهڙوڪ يوزر انٽرفيس، ڪمانڊ لائن ٽرمينل، فارم/ٽيڪسٽ ان پٽ، ۽ فائل اپ لوڊ. تنهن ڪري fuzzer پاران ٺاهيل سڀئي ان پٽ انهن چينلن سان ملائڻ گهرجن.

ڪميونيڪيشن پروٽوڪول سان ڪم ڪندڙ Fuzzers کي پيڪن سان ڊيل ڪرڻو پوندو آهي. هن پليٽ فارم کي نشانو بڻائيندڙ Fuzzers جعلي پيڪيٽ ٺاهي سگھن ٿا، يا حتي پراڪسي طور ڪم ڪري سگھن ٿا مداخلت ٿيل پيڪٽ کي تبديل ڪرڻ ۽ انهن کي ٻيهر هلائڻ لاء.

2. فز ٺاهڻ جو طريقو

Fuzzers پڻ درجه بندي ڪري سگھجن ٿيون انهي جي بنياد تي ته اهي ڪيئن ٺاهيندا آهن ڊيٽا کي فز ڪرڻ لاءِ. تاريخي طور تي، fuzzers شروع کان بي ترتيب ڊيٽا پيدا ڪندي fuzz پيدا ڪيو. اهو ڪيئن هو پروفيسر بارٽن ملر، هن ٽيڪنڪ جي شروعات ڪندڙ، شروعات ۾ اهو ڪيو. هن قسم جي fuzzer سڏيو ويندو آهي a نسل جي بنياد تي fuzzer.

تنهن هوندي، جڏهن ته هڪ نظرياتي طور تي ڊيٽا ٺاهي سگهي ٿو جيڪو اعتماد جي حد کان پاسو ڪندو، اهو ڪرڻ لاء ڪافي وقت ۽ وسيلا وٺندو. تنهن ڪري هي طريقو عام طور تي استعمال ڪيو ويندو آهي سسٽم لاءِ سادي ان پٽ جوڙجڪ سان.

هن مسئلي جو حل اهو آهي ته ڊيٽا کي ميوٽيٽ ڪرڻ لاءِ سڃاتي وڃي ٿي صحيح ڊيٽا پيدا ڪرڻ جي لاءِ ڪافي صحيح هڪ اعتماد جي حد کي پاس ڪرڻ لاءِ، اڃان تائين ڪافي غلط آهي مسئلا پيدا ڪرڻ لاءِ. ان جو هڪ سٺو مثال آهي DNS فزر جيڪو ڊومين جو نالو وٺي ٿو ۽ پوءِ ڊومين نالن جي وڏي لسٽ ٺاهي ٿو ممڪن طور تي خراب ڊومينز کي ڳولڻ لاءِ جيڪو مخصوص ڊومين جي مالڪ کي نشانو بڻائي ٿو.

اهو طريقو اڳئين کان وڌيڪ هوشيار آهي ۽ ممڪن حد تائين محدود ڪري ٿو. فزرز جيڪي هن طريقي کي استعمال ڪن ٿا انهن کي سڏيو ويندو آهي ميوٽيشن تي ٻڌل fuzzers

اتي ھڪڙو ٽيون وڌيڪ تازو طريقو آھي جيڪو استعمال ڪري ٿو جينياتي الگورتھم کي استعمال ڪرڻ لاءِ بھترين فز ڊيٽا کي گڏ ڪرڻ لاءِ جيڪي ڪمزورين کي ختم ڪرڻ لاءِ گهربل آھن. اهو ڪم ڪري ٿو مسلسل پنهنجي فز ڊيٽا کي بهتر ڪندي، هر ٽيسٽ ڊيٽا جي ڪارڪردگي تي غور ڪندي جڏهن هڪ پروگرام ۾ فيڊ ڪيو ويندو آهي. 

ڊيٽا جي بدترين ڪارڪردگي واري سيٽ کي ڊيٽا پول مان هٽايو ويو آهي، جڏهن ته بهترين ميوٽيٽ ٿيل ۽ / يا گڏيل آهن. ڊيٽا جو نئون نسل وري استعمال ڪيو ويندو آهي فز ٽيسٽ کي ٻيهر. اهي fuzzers طور حوالو ڏنو ويو آهي ارتقائي ميوٽيشن تي ٻڌل fuzzers.

3. ان پٽ ڍانچي جي آگاهي

هي درجه بندي ان تي مبني آهي ته ڇا هڪ fuzzer واقف آهي ۽ فعال طور تي استعمال ڪري ٿو پروگرام جي ان پٽ ڍانچي کي فز ڊيٽا پيدا ڪرڻ ۾. اي گونگا fuzzer (هڪ fuzzer جيڪو پروگرام جي ان پٽ ڍانچي کان بي خبر آهي) اڪثر ڪري بي ترتيب انداز ۾ فز ٺاهي ٿو. ھن ۾ شامل ٿي سگھي ٿو ٻئي نسل ۽ ميوٽيشن تي ٻڌل فزرز. 


جيڪڏهن fuzzer کي پروگرام جي ان پٽ ماڊل سان مهيا ڪيو وڃي، fuzzer پوءِ ڪوشش ڪري سگهي ٿو ڊيٽا پيدا ڪرڻ يا ميوٽيٽ ڪرڻ جي جيئن اهو مهيا ڪيل ان پٽ ماڊل سان ملي. اهو طريقو غلط ڊيٽا پيدا ڪرڻ تي خرچ ڪيل وسيلن جي مقدار کي وڌيڪ گھٽائي ٿو. اهڙي fuzzer سڏيو ويندو آهي a سمارٽ fuzzer.

4. پروگرام جي جوڙجڪ جي آگاهي

Fuzzers کي به ان بنياد تي درجه بندي ڪري سگهجي ٿو ته ڇا اهي پروگرام جي اندروني ڪمن کان واقف آهن جيڪي اهي fuzzing آهن، ۽ انهي آگاهي کي فز ڊيٽا جي پيداوار ۾ مدد ڏيڻ لاء استعمال ڪن ٿا. جڏهن fuzzers ڪنهن پروگرام کي جانچڻ لاءِ استعمال ڪيو ويندو آهي ان جي اندروني ڍانچي کي سمجهڻ کان سواءِ، ان کي بليڪ باڪس ٽيسٽنگ چئبو آهي. 

بليڪ باڪس ٽيسٽنگ دوران تيار ڪيل فز ڊيٽا عام طور تي بي ترتيب ٿيندي آهي جيستائين fuzzer هڪ ارتقائي ميوٽيشن تي ٻڌل fuzzer نه هجي، جتي اهو 'سيکاري ٿو' ان جي فزنگ جي اثر جي نگراني ڪندي ۽ ان کي استعمال ڪندي. معلومات ان جي فز ڊيٽا سيٽ کي بهتر ڪرڻ لاءِ.

ٻئي طرف وائيٽ باڪس ٽيسٽنگ فز ڊيٽا پيدا ڪرڻ لاءِ پروگرام جي اندروني ڍانچي جو ماڊل استعمال ڪري ٿو. اهو طريقو هڪ فوزر کي پروگرام ۾ نازڪ هنڌن تي حاصل ڪرڻ ۽ ان کي جانچڻ جي اجازت ڏئي ٿو. 

مشهور فزنگ اوزار

اتي ڪيترائي fuzzing آهن اوزار اتي ٻاهر قلم ٽيسٽرن پاران استعمال ڪيو ويو. انهن مان ڪجهه مشهور آهن:

فزنگ جون حدون

جڏهن ته Fuzzing هڪ واقعي مفيد قلم جي جاچ ٽيڪنڪ آهي، اهو ان جي غلطي کان سواء ناهي. انهن مان ڪجهه هي آهن:

  • هلڻ ۾ ڪافي وقت لڳندو آهي.
  • حادثا ۽ ٻيا غير متوقع رويا جيڪي پروگرام جي بليڪ باڪس ٽيسٽنگ دوران مليا آهن، مشڪل ٿي سگهن ٿا، جيڪڏهن ناممڪن نه هجي ته تجزيو ڪرڻ يا ڊيبگ ڪرڻ.
  • سمارٽ ميوٽيشن تي ٻڌل fuzzers لاء ميوٽيشن ٽيمپليٽ ٺاهڻ وقت سازي ٿي سگهي ٿو. ڪڏهن ڪڏهن، ان پٽ ماڊل جي ملڪيت يا اڻڄاتل هجڻ جي ڪري اهو به ممڪن نه هجي.

 

تنهن هوندي به، اهو هر ڪنهن لاءِ هڪ تمام مفيد ۽ ضروري اوزار آهي جيڪو خراب ماڻهن جي اڳيان ڪيڙا ڳولڻ چاهي ٿو.

ٿڪل

Fuzzing هڪ طاقتور قلم جي جاچ واري ٽيڪنڪ آهي جيڪا سافٽ ويئر ۾ ڪمزورين کي ظاهر ڪرڻ لاءِ استعمال ٿي سگهي ٿي. اتي ڪيترائي مختلف قسم جا fuzzers آهن، ۽ نوان fuzzers هر وقت ترقي ڪري رهيا آهن. جڏهن ته fuzzing هڪ ناقابل اعتماد حد تائين مفيد اوزار آهي، ان ۾ ان جون حدون آهن. مثال طور، fuzzers صرف ڪيتريون ئي ڪمزوريون ڳولي سگهن ٿيون ۽ اهي ڪافي وسيلن جي گنجائش ٿي سگهن ٿيون. تنهن هوندي، جيڪڏهن توهان ڪوشش ڪرڻ چاهيو ٿا ته هن شاندار ٽيڪنڪ کي پنهنجي لاء، اسان وٽ آهي a مفت DNS Fuzzer API جيڪو توهان اسان جي پليٽ فارم تي استعمال ڪري سگهو ٿا. 

پوء توهان لاء ڇا انتظار ڪيو آهي؟ 

اڄ fuzzing شروع!