मी एका नोटबुकपासून सुरुवात केली. कोणताही टेक्स्ट एडिटर किंवा मार्कडाउन फाईल नाही, तर एक स्पायरल-बाउंड कागदी नोटबुक, ज्यामध्ये अशा कमांड्स भरल्या होत्या ज्या मला समजत नव्हत्या. मी ls, grep, find, chmod, आणि nmap लिहून काढले. मी पानांमागून पाने सिंटॅक्सने (syntax) भरली, जणू काही Linux आणि सायबर सुरक्षा हे शब्दसंग्रह चाचण्यांसारखे (vocabulary tests) आहेत; जणू काही पुढच्या व्यक्तीपेक्षा जास्त फ्लॅग्स (flags) माहित असणे म्हणजे मी सक्षम आहे. मी सिंटॅक्स सहजपणे कॉपी करू शकत होतो. पण, एखादी कमांड विशिष्ट निकाल का देते हे मला समजावून सांगायला सांगितले, तर मी शांत होतो. ती शांतता हीच समस्या होती.

नोटबुकचा सापळा (The Notebook Trap)

ते नोटबुक प्रगतीसारखे दिसत होते. प्रत्येक पानावर अधिक शाई उतरत होती: find / -name "*.conf", nmap -sV, पाईप्स (pipes) आणि रेग्युलर एक्सप्रेशन्ससह (regular expressions) grep. ट्युटोरियल्समध्ये, हा दृष्टिकोन काम करत असल्यासारखा वाटतो. प्रेझेंटर एक कमांड टाईप करतो, स्क्रीनवर अपेक्षित आउटपुट दिसते आणि तुम्ही मान डोलावता. तुमचे टर्मिनल त्यांच्यासारखेच दिसत असल्यामुळे तुम्हाला सक्षम वाटते. पण ही क्षमता 'उधार घेतलेली' असते. ती त्या व्यक्तीची असते ज्याने ट्युटोरियलचा मार्ग तयार केला आहे.

खरे वातावरण (Real environments) स्क्रिप्ट्सचे पालन करत नाही. पोर्ट उघडे असूनही तुमचा SSH कनेक्शन नाकारला जातो. chmod +x चालवल्यानंतरही एखादी स्क्रिप्ट "permission denied" एरर देऊन फेल होते. एखादा स्कॅन पोर्ट 'open' ऐवजी 'filtered' दाखवतो, आणि आता तुम्हाला ठरवावे लागते की याचा अर्थ फायरवॉल नियम (firewall rule) आहे, होस्ट-आधारित नियंत्रण (host-based control) आहे की एखादी घुसखोरी प्रतिबंध प्रणाली (intrusion prevention system) तुमच्या प्रोब्सना (probes) शांतपणे ड्रॉप करत आहे. अशा क्षणी, सिंटॅक्स पाठ करणे अपयशी ठरते कारण समस्या तुम्ही विसरलेली कमांड नाही, तर तुम्ही न समजलेले सिस्टिम आहे.

कॉपी करणे म्हणजे शिकणे नव्हे (Copying Is Not Learning)

ट्युटोरियल फॉलो करणे आणि समस्या सोडवणे यात फरक आहे. जेव्हा तुम्ही कॉपी करता, तेव्हा तुम्ही दुसऱ्याच्या नकाशावर स्टेप A पासून स्टेप B कडे जाता. जेव्हा काहीतरी वेगळे घडते, तेव्हा तुम्ही थबकता कारण तुमचे मानसिक मॉडेल (mental model) रिकामे असते. तुम्हाला माहित आहे की chmod 755 परमिशन्स बदलतो, पण फाईल noexec फ्लॅग असलेल्या माउंटवर (mount) असताना सिस्टिम तरीही प्रवेश का रोखते, हे तुम्ही स्पष्ट करू शकत नाही. तुम्हाला माहित आहे की nmap पोर्ट स्कॅन करू शकते, पण स्टेटफुल इन्स्पेक्शन (stateful inspection) गुंतलेले असताना SYN स्कॅन, कनेक्ट स्कॅनपेक्षा वेगळे निकाल का देते, हे तुम्ही समजावून सांगू शकत नाही.

तुम्ही Linux किंवा नेटवर्किंग शिकत नव्हता. तुम्ही फक्त अनुकरण (imitate) करायला शिकत होता.

प्रश्न बदलून पहा (Flip the Question)

मी एक गोष्ट बदलली. मी "ही समस्या कोणती कमांड सोडवेल?" असे विचारणे थांबवले आणि "सिस्टिम प्रत्यक्षात काय करत आहे?" असे विचारण्यास सुरुवात केली. हा बदल अस्वस्थ करणारा होता कारण त्यामुळे माझी गती मंदावली. पण तो कायमचा ठरला.

फाईल परमिशन्सचे (file permissions) उदाहरण घ्या. chmod हा कोणताही जादूचा मंत्र नाही. तो कर्नेल (kernel) inodes कडे प्रवेश कसा नियंत्रित करतो, याचे केवळ वरचे थर आहे. जेव्हा तुम्हाला समजते की ऑपरेटिंग सिस्टिम तुमच्या इफेक्टिव्ह युजर आयडीची (effective user ID) फाईलचा मालक (owner), ग्रुप (group) आणि इतरांशी (others) तुलना करते, तेव्हा ते नंबर्स अर्थपूर्ण वाटू लागतात. जेव्हा तुम्हाला समजते की डिरेक्टरी परमिशन्स हे तुम्ही एखाद्या पाथमध्ये (path) जाऊ शकता की नाही किंवा त्यातील मजकूर पाहू शकता की नाही हे नियंत्रित करतात, तेव्हा तुम्ही फाईल वाचू शकता पण ती शोधू का शकत नाही, असा प्रश्न विचारणे थांबवता. तुम्हाला जाणीव होते की डिरेक्टरीवरील 'execute' परवानगी ही प्रोग्राम्स चालवण्याबद्दल नाही; तर ती त्यातील inodes ला ॲक्सेस करण्याची परवानगी मिळण्याबद्दल आहे. अचानक, chmod लक्षात ठेवण्याची गरज उरत नाही. त्याला संदर्भाची (context) गरज असते.

नेटवर्किंगचे मूलभूत नियम (Networking fundamentals) nmap साठी देखील तेच काम करतात. पोर्ट स्कॅन म्हणजे उघड्या दरवाजांची यादी नाही; ते पॅकेट्सनी (packets) बनलेले एक संभाषण आहे. जेव्हा तुम्ही TCP थ्री-वे हँडशेक (three-way handshake) समजून घेता, तेव्हा तुम्हाला समजते की SYN स्कॅनसाठी 'raw socket privileges' का आवश्यक आहेत आणि क्लोज्ड पोर्ट 'RST' ने प्रतिसाद का देतो, तर फिल्टर केलेला पोर्ट कदाचित काहीच प्रतिसाद देणार नाही. तुम्ही फ्लॅग कॉम्बिनेशन्स पाठ करणे थांबवता आणि तुम्ही कोणते पॅकेट्स पाठवत आहात आणि त्यातील शांतता किंवा गोंधळ (noise) कशाचा अर्थ आहे, यावर तर्क करू लागता.

एकदा तुम्हाला HTTP समजले की Burp Suite सारखी ॲप्लिकेशन-लेयर टूल्स देखील सहज समजतात. ते तुमच्या आणि वेब सर्व्हरच्या मध्ये बसलेला फक्त एक प्रॉक्सी (proxy) आहे. जर तुम्हाला HTTP मेथड्स, हेडर्स, स्टेटस कोड्स आणि विनंत्या (requests) सर्व्हर-साइड लॉजिकशी कशा प्रकारे जोडल्या जातात हे समजले नाही, तर Burp Suite हे बटणांचे एक गोंधळात टाकणारे डॅशबोर्ड आहे. एकदा तुम्हाला विनंती कशी प्रवास करते आणि सर्व्हर प्रतिसाद कसा तयार करतो हे समजले की, ते टूल स्पष्ट होते. तुम्ही Burp Suite शिकत नाही आहात. तुम्ही Burp Suite वापरून HTTP ची तपासणी करत आहात.

पाया भक्कम करा (Build the Foundation)

जर तुम्ही सुरुवात करत असाल, तर चीटशीट्स (cheatsheets) जमा करण्याची इच्छा रोखून धरा. अशा तीन क्षेत्रांवर लक्ष केंद्रित करा जे कधीही कालबाह्य होणार नाहीत.

Linux basics साठी, कर्नेल (kernel) प्रोसेस कशा शेड्यूल करते, शेल (shell) कमांड्सचे विश्लेषण (parse) कसे करते आणि एन्व्हायरमेंट व्हेरिएबल्स (environment variables) प्रोग्रामच्या वर्तनावर कसा परिणाम करतात हे शिका. stdin, stdout, आणि stderr ला केवळ माहिती म्हणून नाही, तर पाईप्स (pipes) कार्यान्वित करणारे प्लंबिंग (plumbing) म्हणून समजून घ्या.

networking protocols साठी, घाई न करता TCP/IP स्टॅकचा अभ्यास करा.