میں نے ایک نوٹ بک سے آغاز کیا۔ کوئی ٹیکسٹ ایڈیٹر یا مارک ڈاؤن فائل نہیں، بلکہ ایک اسپرل بائنڈ کاغذ کی نوٹ بک جو ان کمانڈز سے بھری ہوئی تھی جنہیں میں سمجھتا نہیں تھا۔ میں نے ls, grep, find, chmod, اور nmap لکھے۔ میں نے صفحہ در صفحہ سنٹیکس (syntax) سے بھر دی، لینکس اور سائبر سیکیورٹی کو الفاظ کے ٹیسٹ کی طرح سمجھا، جیسے کہ دوسرے شخص سے زیادہ فلیگز (flags) جاننا مجھے ماہر بنا دے گا۔ میں روانی سے سنٹیکس کاپی کر سکتا تھا۔ لیکن اگر مجھ سے پوچھا جاتا کہ کسی کمانڈ نے ایک خاص نتیجہ کیوں دیا، تو میں خاموش ہو جاتا۔ وہی خاموشی اصل مسئلہ تھی۔
نوٹ بک کا جال
وہ نوٹ بک ترقی کی علامت لگتی تھی۔ ہر صفحہ مزید سیاہی سے بھر جاتا: find / -name "*.conf", nmap -sV, پائپس اور ریگولر ایکسپریشنز کے ساتھ grep۔ ٹیوٹوریلز میں، یہ طریقہ کار کام کرتا ہوا محسوس ہوتا ہے۔ ایک پریزنٹر ایک کمانڈ ٹائپ کرتا ہے، اسکرین پر متوقع نتیجہ نظر آتا ہے، اور آپ سر ہلاتے ہیں۔ آپ خود کو قابل محسوس کرتے ہیں کیونکہ آپ کا ٹرمینل بالکل ان کے جیسا ہوتا ہے۔ لیکن یہ قابلیت ادھار لی گئی ہوتی ہے۔ یہ اس شخص کی ہوتی ہے جس نے ٹیوٹوریل کا راستہ ڈیزائن کیا ہے۔
حقیقی ماحول اسکرپٹس پر نہیں چلتے۔ ایک سرور آپ کے SSH کنکشن کو مسترد کر دیتا ہے حالانکہ پورٹ کھلی ہوتی ہے۔ ایک اسکرپٹ "permission denied" کے ساتھ فیل ہو جاتا ہے حالانکہ آپ پہلے ہی chmod +x چلا چکے ہوتے ہیں۔ ایک اسکین پورٹ کو 'اوپن' کے بجائے 'فلٹرڈ' (filtered) ظاہر کرتا ہے، اور اب آپ کو یہ فیصلہ کرنا ہوتا ہے کہ اس کا مطلب فائر وال رول ہے، ہوسٹ بیسڈ کنٹرول ہے، یا کوئی انٹروژن پریوینشن سسٹم خاموشی سے آپ کی تحقیقات کو روک رہا ہے۔ ان لمحات میں، سنٹیکس کی یادداشت ناکام ہو جاتی ہے کیونکہ مسئلہ وہ کمانڈ نہیں ہے جسے آپ بھول گئے، بلکہ مسئلہ وہ سسٹم ہے جسے آپ سمجھتے نہیں ہیں۔
نقل کرنا سیکھنا نہیں ہے
کسی ٹیوٹوریل پر عمل کرنے اور کسی مسئلے کو حل کرنے میں فرق ہے۔ جب آپ نقل کرتے ہیں، تو آپ کسی دوسرے کے نقشے پر سٹیپ A سے سٹیپ B کی طرف بڑھتے ہیں۔ جب کچھ الگ ہوتا ہے، تو آپ جم جاتے ہیں کیونکہ آپ کا ذہنی ماڈل خالی ہوتا ہے۔ آپ جانتے ہیں کہ chmod 755 پرمیشنز کو تبدیل کرتا ہے، لیکن آپ یہ نہیں بتا سکتے کہ جب فائل noexec فلیگ والے ماؤنٹ پر ہو تو سسٹم پھر بھی رسائی کیوں روک دیتا ہے۔ آپ جانتے ہیں کہ nmap پورٹس اسکین کر سکتا ہے، لیکن آپ یہ نہیں سمجھا سکتے کہ جب stateful inspection شامل ہو تو SYN اسکین، کنیکٹ اسکین کے مقابلے میں مختلف نتائج کیوں دیتا ہے۔
آپ لینکس یا نیٹ ورکنگ نہیں سیکھ رہے تھے۔ آپ صرف نقل کرنا سیکھ رہے تھے۔
سوال کو بدل دیں
میں نے ایک چیز بدلی۔ میں نے یہ پوچھنا چھوڑ دیا کہ "کون سی کمانڈ اسے ٹھیک کرے گی؟" اور یہ پوچھنا شروع کیا کہ "سسٹم اصل میں کیا کر رہا ہے؟" یہ تبدیلی تکلیف دہ تھی کیونکہ اس نے میری رفتار کم کر دی۔ لیکن یہ میرے ذہن میں بیٹھ گئی۔
فائل پرمیشنز کی مثال لیں۔ chmod کوئی جادوئی نمبروں کی دعا نہیں ہے۔ یہ اس بات کی سطح ہے کہ کرنل (kernel) inodes تک رسائی کو کیسے منظم کرتا ہے۔ جب آپ یہ سمجھ جاتے ہیں کہ آپ کا آپریٹنگ سسٹم فائل کے مالک، گروپ اور دوسروں کے مقابلے میں آپ کی مؤثر صارف آئی ڈی (effective user ID) کو چیک کرتا ہے، تو وہ نمبر سمجھ میں آنے لگتے ہیں۔ جب آپ سیکھتے ہیں کہ ڈائریکٹری کی پرمیشنز یہ کنٹرول کرتی ہیں کہ آیا آپ کسی پاتھ میں داخل ہو سکتے ہیں یا اس کے مواد کی فہرست دیکھ سکتے ہیں، تو آپ یہ سوچنا بند کر دیتے ہیں کہ آپ فائل پڑھ تو سکتے ہیں لیکن اس تک پہنچ کیوں نہیں سکتے۔ آپ کو احساس ہوتا ہے کہ ڈائریکٹری پر 'ایگزیکیوٹ' (execute) پرمیشن کا مطلب پروگرام چلانا نہیں ہے؛ بلکہ اس کے اندر موجود inodes تک رسائی حاصل کرنے کی اجازت ہے۔ اچانک، chmod کو یاد کرنے کی ضرورت نہیں رہتی۔ اسے سیاق و سباق (context) کی ضرورت ہوتی ہے۔
نیٹ ورکنگ کے بنیادی اصول nmap کے لیے بھی یہی کام کرتے ہیں۔ پورٹ اسکین کھلے دروازوں کی فہرست نہیں ہے؛ یہ پیکٹس (packets) پر مشتمل ایک گفتگو ہے۔ جب آپ TCP three-way handshake کو سمجھ لیتے ہیں، تو آپ سمجھ جاتے ہیں کہ SYN اسکین کے لیے raw socket مراعات کیوں درکار ہوتی ہیں اور ایک بند پورٹ RST کے ساتھ جواب کیوں دیتی ہے جبکہ ایک فلٹرڈ پورٹ شاید آپ کو کچھ بھی نہ بتائے۔ آپ فلیگز کے مجموعوں کو یاد کرنا چھوڑ دیتے ہیں اور اس بارے میں سوچنا شروع کر دیتے ہیں کہ آپ کون سے پیکٹس بھیج رہے ہیں اور خاموشی یا شور کا کیا مطلب ہے۔
ایپلی کیشن لیئر کے ٹولز جیسے Burp Suite بھی تب ہی سمجھ میں آتے ہیں جب آپ HTTP کو سمجھ لیتے ہیں۔ یہ آپ کے اور ویب سرور کے درمیان بیٹھا ہوا محض ایک پراکسی ہے۔ اگر آپ HTTP میتھڈز، ہیڈرز، اسٹیٹس کوڈز، اور یہ نہیں سمجھتے کہ درخواستیں (requests) سرور سائیڈ لاجک کے ساتھ کیسے جڑتی ہیں، تو Burp Suite بٹنوں کا ایک الجھا ہوا ڈیش بورڈ ہے۔ ایک بار جب آپ جان لیتے ہیں کہ ایک درخواست کیسے سفر کرتی ہے اور ایک سرور جواب کیسے تیار کرتا ہے، تو یہ ٹول بالکل واضح ہو جاتا ہے۔ آپ Burp Suite نہیں سیکھ رہے ہوتے۔ آپ Burp Suite کے ذریعے HTTP کا معائنہ کر رہے ہوتے ہیں۔
بنیاد بنائیں
اگر آپ شروعات کر رہے ہیں، تو چیٹ شیٹس (cheatsheets) جمع کرنے کی خواہش سے بچیں۔ تین ایسے شعبوں پر توجہ دیں جو کبھی پرانے نہیں ہوں گے۔
Linux basics کے لیے، یہ سیکھیں کہ کرنل پروسیسز کو کیسے شیڈول کرتا ہے، شیل کمانڈز کو کیسے پرس (parse) کرتا ہے، اور انوائرمنٹ ویری ایبلز پروگرام کے رویے پر کیسے اثر انداز ہوتے ہیں۔ stdin, stdout, اور stderr کو محض معلومات کے طور پر نہیں بلکہ اس بنیادی نظام کے طور پر سمجھیں جو پائپس (pipes) کو کام کرنے کے قابل بناتا ہے۔
Networking protocols کے لیے، جلد بازی کیے بغیر TCP/IP اسٹیک کا مطالعہ کریں۔
