Fuzzing کیا ہے؟

کیا مبہم ہے

Intro: Fuzzing کیا ہے؟

2014 میں چینی ہیکرز کمیونٹی ہیلتھ سسٹمز میں ہیک کیا گیا۔ایک منافع بخش امریکی ہسپتال چین، اور 4.5 ملین مریضوں کا ڈیٹا چرا لیا۔ ہیکرز نے ہارٹ بلیڈ نامی ایک بگ کا استحصال کیا جو ہیک سے کچھ مہینے پہلے اوپن ایس ایس ایل کرپٹوگرافی لائبریری میں دریافت ہوا تھا۔

ہارٹ بلیڈ اٹیک ویکٹرز کی کلاس کی ایک مثال ہے جو حملہ آوروں کو ابتدائی چیک پاس کرنے کے لیے کافی درست غلط درخواستیں بھیج کر ہدف تک رسائی حاصل کرنے کی اجازت دیتی ہے۔ اگرچہ ایک ایپ کے مختلف حصوں پر کام کرنے والے پیشہ ور افراد اس کی حفاظت کو یقینی بنانے کے لیے اپنی پوری کوشش کرتے ہیں، لیکن ان تمام کونے کے معاملات کے بارے میں سوچنا ناممکن ہے جو کسی ایپ کو توڑ سکتے ہیں یا اسے ترقی کے دوران کمزور بنا سکتے ہیں۔

یہ وہ جگہ ہے جہاں 'فزنگ' آتی ہے۔

فزنگ اٹیک کیا ہے؟

فزنگ، فز ٹیسٹنگ، یا فزنگ اٹیک، ایک خودکار سافٹ ویئر ٹیسٹنگ تکنیک ہے جو کسی پروگرام میں بے ترتیب، غیر متوقع، یا غلط ڈیٹا (جسے فز کہتے ہیں) فیڈ کرنے کے لیے استعمال کی جاتی ہے۔ پروگرام کی نگرانی غیر معمولی یا غیر متوقع طرز عمل جیسے کہ بفر اوور فلو، کریش، میموری لیکیج، تھریڈ ہینگ، اور پڑھنے/لکھنے تک رسائی کی خلاف ورزیوں کے لیے کی جاتی ہے۔ اس کے بعد fuzzing ٹول یا fuzzer کا استعمال غیر معمولی رویے کی وجہ کو ننگا کرنے کے لیے کیا جاتا ہے۔

فزنگ اس مفروضے پر مبنی ہے کہ تمام سسٹمز میں کیڑے موجود ہیں جو دریافت ہونے کے منتظر ہیں، اور ایسا کرنے کے لیے کافی وقت اور وسائل دیے جا سکتے ہیں۔ زیادہ تر سسٹمز میں بہت اچھے تجزیہ کار یا ان پٹ کی توثیق کی روک تھام ہوتی ہے۔ cybercriminals پروگرام میں کسی بھی فرضی کیڑے کا استحصال کرنے سے۔ تاہم، جیسا کہ ہم نے اوپر ذکر کیا ہے، ترقی کے دوران تمام کونے کے معاملات کا احاطہ کرنا مشکل ہے۔

فزرز کا استعمال ایسے پروگراموں پر کیا جاتا ہے جو سٹرکچرڈ ان پٹ لیتے ہیں یا کسی قسم کی ٹرسٹ باؤنڈری رکھتے ہیں۔ مثال کے طور پر، ایک پروگرام جو پی ڈی ایف فائلوں کو قبول کرتا ہے اس کی کچھ توثیق ہوتی ہے تاکہ یہ یقینی بنایا جا سکے کہ فائل میں پی ڈی ایف ایکسٹینشن اور پی ڈی ایف فائل پر کارروائی کرنے کے لیے پارسر موجود ہے۔

ایک مؤثر fuzzer ان حدود سے گزرنے کے لیے کافی درست ان پٹ پیدا کر سکتا ہے لیکن پروگرام کے نیچے غیر متوقع رویے کا سبب بننے کے لیے کافی حد تک غلط ہے۔ یہ ضروری ہے کیونکہ صرف تصدیقات سے گزرنے کے قابل ہونے کا زیادہ مطلب نہیں ہے اگر مزید کوئی نقصان نہ ہو۔

Fuzzers اٹیک ویکٹرز کو دریافت کرتے ہیں جس میں SQL انجیکشن، کراس سائٹ اسکرپٹنگ، بفر اوور فلو، اور ڈینیئل آف سروس حملوں کی پسند شامل ہیں۔ یہ تمام حملے سسٹم میں غیر متوقع، غلط، یا بے ترتیب ڈیٹا فراہم کرنے کا نتیجہ ہیں۔ 

 

فزرز کی اقسام

فزرز کو کچھ خصوصیات کی بنیاد پر درجہ بندی کیا جا سکتا ہے:

  1. اہداف پر حملہ کریں۔
  2. فز تخلیق کا طریقہ
  3. ان پٹ ڈھانچے کے بارے میں آگاہی
  4. پروگرام کی ساخت کے بارے میں آگاہی

1. حملے کے اہداف

یہ درجہ بندی اس قسم کے پلیٹ فارم پر مبنی ہے جس کی جانچ کے لیے فزر کا استعمال کیا جا رہا ہے۔ Fuzzers عام طور پر نیٹ ورک پروٹوکول اور سافٹ ویئر ایپلی کیشنز کے ساتھ استعمال کیا جاتا ہے. ہر پلیٹ فارم میں ایک خاص قسم کا ان پٹ ہوتا ہے جو اسے موصول ہوتا ہے، اور اس طرح اسے مختلف قسم کے fuzzers کی ضرورت ہوتی ہے۔

مثال کے طور پر، ایپلی کیشنز سے نمٹنے کے دوران، تمام مبہم کوششیں ایپلی کیشن کے مختلف ان پٹ چینلز پر ہوتی ہیں، جیسے یوزر انٹرفیس، کمانڈ لائن ٹرمینل، فارمز/ٹیکسٹ ان پٹس، اور فائل اپ لوڈ۔ لہذا فزر کے ذریعہ تیار کردہ تمام ان پٹس کو ان چینلز سے ملنا ہوگا۔

کمیونیکیشن پروٹوکول سے نمٹنے والے Fuzzers کو پیکٹوں سے نمٹنا پڑتا ہے۔ اس پلیٹ فارم کو نشانہ بنانے والے Fuzzers جعلی پیکٹ تیار کر سکتے ہیں، یا روکے ہوئے پیکٹوں میں ترمیم کرنے اور انہیں دوبارہ چلانے کے لیے پراکسی کے طور پر بھی کام کر سکتے ہیں۔

2. فز تخلیق کا طریقہ

Fuzzers کو اس بنیاد پر بھی درجہ بندی کیا جا سکتا ہے کہ وہ کس طرح سے fuzz کرنے کے لیے ڈیٹا بناتے ہیں۔ تاریخی طور پر، فزرز نے شروع سے بے ترتیب ڈیٹا بنا کر fuzz پیدا کیا۔ اس تکنیک کے آغاز کرنے والے پروفیسر بارٹن ملر نے ابتدا میں اس طرح کیا۔ اس قسم کے فزر کو a کہا جاتا ہے۔ نسل پر مبنی fuzzer.

تاہم، جب کہ کوئی نظریاتی طور پر ڈیٹا تیار کر سکتا ہے جو اعتماد کی حد کو نظرانداز کرے گا، ایسا کرنے میں کافی وقت اور وسائل درکار ہوں گے۔ لہذا یہ طریقہ عام طور پر سادہ ان پٹ ڈھانچے والے سسٹمز کے لیے استعمال ہوتا ہے۔

اس مسئلے کا حل یہ ہے کہ اعداد و شمار کو تبدیل کیا جائے جسے درست کہا جاتا ہے تاکہ ڈیٹا بنانے کے لیے کافی درست ہو تاکہ اعتماد کی حد کو عبور کیا جا سکے، لیکن مسائل پیدا کرنے کے لیے کافی حد تک غلط ہے۔ اس کی ایک اچھی مثال ایک ہے۔ ڈی این ایس فزر جو ایک ڈومین نام لیتا ہے اور پھر مخصوص ڈومین کے مالک کو نشانہ بنانے والے ممکنہ طور پر نقصان دہ ڈومینز کا پتہ لگانے کے لیے ڈومین ناموں کی ایک بڑی فہرست تیار کرتا ہے۔

یہ نقطہ نظر پچھلے سے زیادہ ہوشیار ہے اور ممکنہ طور پر تبدیلیوں کو کم کرتا ہے۔ اس طریقہ کو استعمال کرنے والے فزرز کہلاتے ہیں۔ اتپریورتن پر مبنی fuzzers

ایک تیسرا اور حالیہ طریقہ ہے جو کمزوریوں کو جڑ سے اکھاڑ پھینکنے کے لیے درکار بہترین فز ڈیٹا پر اکٹھا ہونے کے لیے جینیاتی الگورتھم کا استعمال کرتا ہے۔ یہ اپنے فز ڈیٹا کو مستقل طور پر بہتر بنا کر کام کرتا ہے، جب کسی پروگرام میں کھلایا جاتا ہے تو ہر ٹیسٹ ڈیٹا کی کارکردگی کو مدنظر رکھتے ہوئے ہوتا ہے۔ 

ڈیٹا کے سب سے خراب کارکردگی والے سیٹوں کو ڈیٹا پول سے ہٹا دیا جاتا ہے، جبکہ بہترین کو تبدیل کیا جاتا ہے اور/یا جوڑ دیا جاتا ہے۔ اس کے بعد ڈیٹا کی نئی نسل کو دوبارہ جانچنے کے لیے استعمال کیا جاتا ہے۔ ان fuzzers کے طور پر کہا جاتا ہے ارتقائی اتپریورتن پر مبنی فزرز۔

3. ان پٹ سٹرکچر کے بارے میں آگاہی

یہ درجہ بندی اس بات پر مبنی ہے کہ آیا کوئی فزر فز ڈیٹا بنانے میں کسی پروگرام کے ان پٹ ڈھانچے سے واقف ہے اور فعال طور پر استعمال کرتا ہے۔ اے گونگا fuzzer (ایک fuzzer جو کسی پروگرام کے ان پٹ ڈھانچے سے بے خبر ہے) زیادہ تر بے ترتیب انداز میں fuzz پیدا کرتا ہے۔ اس میں جنریشن اور میوٹیشن پر مبنی فزرز دونوں شامل ہو سکتے ہیں۔ 


اگر کسی پروگرام کے ان پٹ ماڈل کے ساتھ فزر فراہم کیا جائے تو، فزر پھر ڈیٹا بنانے یا تبدیل کرنے کی کوشش کر سکتا ہے تاکہ یہ فراہم کردہ ان پٹ ماڈل سے میل کھاتا ہو۔ یہ نقطہ نظر غلط ڈیٹا بنانے میں خرچ کیے جانے والے وسائل کی مقدار کو مزید کم کرتا ہے۔ ایسے fuzzer کہا جاتا ہے a سمارٹ fuzzer.

4. پروگرام کی ساخت کے بارے میں آگاہی

Fuzzers کی اس بنیاد پر بھی درجہ بندی کی جا سکتی ہے کہ آیا وہ اس پروگرام کے اندرونی کاموں سے واقف ہیں جس سے وہ مبہم ہو رہے ہیں، اور اس آگاہی کو فز ڈیٹا بنانے میں مدد کے لیے استعمال کرتے ہیں۔ جب کسی پروگرام کی اندرونی ساخت کو سمجھے بغیر اس کی جانچ کرنے کے لیے فزرز کا استعمال کیا جاتا ہے، تو اسے بلیک باکس ٹیسٹنگ کہا جاتا ہے۔ 

بلیک باکس ٹیسٹنگ کے دوران پیدا ہونے والا فز ڈیٹا عام طور پر بے ترتیب ہوتا ہے جب تک کہ فزر ایک ارتقائی تغیر پر مبنی فزر نہ ہو، جہاں یہ اس کی دھندلاپن کے اثر کی نگرانی کرکے اور اسے استعمال کرکے 'سیکھتا' ہے۔ معلومات اس کے فز ڈیٹا سیٹ کو بہتر بنانے کے لیے۔

دوسری طرف وائٹ باکس ٹیسٹنگ فز ڈیٹا تیار کرنے کے لیے پروگرام کے اندرونی ڈھانچے کے ماڈل کا استعمال کرتی ہے۔ یہ نقطہ نظر ایک fuzzer کو ایک پروگرام میں اہم مقامات پر جانے اور اس کی جانچ کرنے دیتا ہے۔ 

مشہور فزنگ ٹولز

بہت سے مبہم ہیں۔ اوزار وہاں قلم ٹیسٹرز کے ذریعہ استعمال کیا جاتا ہے۔ سب سے زیادہ مقبول میں سے کچھ یہ ہیں:

فزنگ کی حدود

اگرچہ Fuzzing قلم کی جانچ کرنے کی ایک واقعی مفید تکنیک ہے، لیکن یہ اس کی غلطیوں کے بغیر نہیں ہے۔ ان میں سے کچھ یہ ہیں:

  • اسے چلانے میں کافی وقت لگتا ہے۔
  • کسی پروگرام کی بلیک باکس ٹیسٹنگ کے دوران پائے جانے والے کریشز اور دیگر غیر متوقع رویوں کا تجزیہ یا ڈیبگ کرنا اگر ناممکن نہیں تو مشکل ہوسکتا ہے۔
  • سمارٹ میوٹیشن پر مبنی فزرز کے لیے اتپریورتن ٹیمپلیٹس بنانا وقت طلب ہوسکتا ہے۔ بعض اوقات، ان پٹ ماڈل کے ملکیتی یا نامعلوم ہونے کی وجہ سے یہ ممکن بھی نہیں ہوتا ہے۔

 

بہر حال، یہ ہر اس شخص کے لیے ایک بہت مفید اور ضروری ٹول ہے جو برے لوگوں سے پہلے کیڑے دریافت کرنا چاہتا ہے۔

نتیجہ

Fuzzing قلم کی جانچ کی ایک طاقتور تکنیک ہے جسے سافٹ ویئر میں کمزوریوں کو ننگا کرنے کے لیے استعمال کیا جا سکتا ہے۔ fuzzers کی بہت سی مختلف قسمیں ہیں، اور ہر وقت نئے fuzzers تیار ہوتے رہتے ہیں۔ اگرچہ fuzzing ایک ناقابل یقین حد تک مفید ٹول ہے، لیکن اس کی اپنی حدود ہیں۔ مثال کے طور پر، fuzzers صرف اتنی ہی کمزوریاں تلاش کر سکتے ہیں اور وہ کافی وسائل کے حامل ہو سکتے ہیں۔ تاہم، اگر آپ اپنے لیے اس حیرت انگیز تکنیک کو آزمانا چاہتے ہیں، تو ہمارے پاس ایک ہے۔ مفت DNS Fuzzer API جسے آپ ہمارے پلیٹ فارم پر استعمال کر سکتے ہیں۔ 

تو تم کیا انتظار کر رہے ہو؟ 

آج ہی مبہم کرنا شروع کریں!

گوگل اور دی انکوگنیٹو متک

گوگل اور دی انکوگنیٹو متک

Google اور The Incognito Myth 1 اپریل 2024 کو، Google نے Incognito وضع سے جمع کیے گئے اربوں ڈیٹا ریکارڈز کو تباہ کر کے ایک مقدمہ طے کرنے پر اتفاق کیا۔

مزید پڑھ "