నేను ఒక నోట్బుక్తో మొదలుపెట్టాను. అది టెక్స్ట్ ఎడిటర్ లేదా మార్క్డౌన్ ఫైల్ కాదు, నాకు అర్థం కాని కమాండ్లతో నిండిన ఒక స్పైరల్-బౌండ్ పేపర్ నోట్బుక్. నేను ls, grep, find, chmod, మరియు nmap వంటి వాటిని రాసుకున్నాను. సింటాక్స్తో పేజీ పేజీలుగా నింపేశాను, Linux మరియు సైబర్ సెక్యూరిటీని కేవలం పదజాల పరీక్షలలాగా చూశాను, అంటే తదుపరి వ్యక్తి కంటే ఎక్కువ ఫ్లాగ్లు (flags) తెలిస్తే నేను సమర్థుడినని భావించాను. నేను సింటాక్స్ను అనర్గళంగా కాపీ చేయగలిగేవాడిని. కానీ, ఒక కమాండ్ ఒక నిర్దిష్ట ఫలితాన్ని ఎందుకు ఇచ్చిందో వివరించమని నన్ను అడిగితే, నేను మౌనంగా ఉండిపోయేవాడిని. ఆ మౌనమే సమస్య.
నోట్బుక్ ఉచ్చు
ఆ నోట్బుక్ చూస్తుంటే పురోగతిలా అనిపించింది. ప్రతి పేజీలో మరిన్ని కమాండ్లు చేరుతున్నాయి: find / -name "*.conf", nmap -sV, పైపులు (pipes) మరియు రెగ్యులర్ ఎక్స్ప్రెషన్లతో grep. ట్యుటోరియల్స్లో ఈ విధానం పనిచేస్తున్నట్లు అనిపిస్తుంది. ఒక ప్రెజెంటర్ ఒక కమాండ్ను టైప్ చేస్తారు, స్క్రీన్పై ఆశించిన అవుట్పుట్ కనిపిస్తుంది, మరియు మీరు తల ఊపుతూ అనుసరిస్తారు. మీ టెర్మినల్ వారి టెర్మినల్తో సరిగ్గా సరిపోలడం వల్ల మీరు సమర్థులని మీరు భావిస్తారు. కానీ ఈ సామర్థ్యం అప్పు తెచ్చుకున్నది. అది ఆ ట్యుటోరియల్ మార్గాన్ని రూపొందించిన వ్యక్తికి చెందినది.
నిజమైన వాతావరణాలు (environments) స్క్రిప్ట్లను అనుసరించవు. పోర్ట్ ఓపెన్గా ఉన్నప్పటికీ, ఒక సర్వర్ మీ SSH కనెక్షన్ను తిరస్కరిస్తుంది. మీరు ఇప్పటికే chmod +x రన్ చేసిన తర్వాత కూడా, ఒక స్క్రిప్ట్ "permission denied" అని ఎర్రర్తో విఫలమవుతుంది. ఒక స్కాన్ పోర్ట్ను 'open' అని కాకుండా 'filtered' అని రిపోర్ట్ చేస్తుంది, ఇప్పుడు అది ఫైర్వాల్ రూల్ వల్లనా, హోస్ట్-బేస్డ్ కంట్రోల్ వల్లనా లేదా ఇంట్రూజన్ ప్రివెన్షన్ సిస్టమ్ (IPS) నిశ్శబ్దంగా మీ ప్రోబ్స్ను డ్రాప్ చేస్తోందా అని మీరు నిర్ణయించుకోవాల్సి ఉంటుంది. ఆ క్షణాల్లో, సింటాక్స్ గుర్తుంచుకోవడం వల్ల ఉపయోగం ఉండదు, ఎందుకంటే సమస్య మీరు మర్చిపోయిన కమాండ్ కాదు. అది మీకు అర్థం కాని ఒక సిస్టమ్.
కాపీ చేయడం అంటే నేర్చుకోవడం కాదు
ఒక ట్యుటోరియల్ను అనుసరించడానికి మరియు ఒక సమస్యను పరిష్కరించడానికి మధ్య తేడా ఉంది. మీరు కాపీ చేస్తున్నప్పుడు, వేరొకరి మ్యాప్లో స్టెప్ A నుండి స్టెప్ B కి వెళ్తున్నారు. ఏదైనా మారినప్పుడు, మీ మానసిక నమూనా (mental model) ఖాళీగా ఉండటం వల్ల మీరు నిశ్చేష్టులవుతారు. chmod 755 పర్మిషన్లను మారుస్తుందని మీకు తెలుసు, కానీ ఫైల్ noexec ఫ్లాగ్తో ఉన్న మౌంట్ పాయింట్పై ఉన్నప్పుడు సిస్టమ్ ఎందుకు యాక్సెస్ను నిరోధిస్తుందో మీరు వివరించలేరు. nmap పోర్ట్లను స్కాన్ చేయగలదని మీకు తెలుసు, కానీ స్టేట్ఫుల్ ఇన్స్పెక్షన్ (stateful inspection) ఉన్నప్పుడు SYN స్కాన్, కనెక్ట్ స్కాన్ కంటే భిన్నమైన ఫలితాలను ఎందుకు ఇస్తుందో మీరు విశ్లేషించలేరు.
మీరు Linux లేదా నెట్వర్కింగ్ను నేర్చుకోవడం లేదు. మీరు అనుకరించడం (imitate) నేర్చుకుంటున్నారు.
ప్రశ్నను మార్చండి
నేను ఒక మార్పు చేశాను. "దీన్ని ఏ కమాండ్ సరిచేస్తుంది?" అని అడగడం ఆపి, "సిస్టమ్ నిజంగా ఏమి చేస్తోంది?" అని అడగడం మొదలుపెట్టాను. ఈ మార్పు నన్ను నెమ్మదింపజేయడం వల్ల కొంచెం ఇబ్బందిగా అనిపించింది. కానీ అది నాలో స్థిరపడిపోయింది.
ఫైల్ పర్మిషన్లను తీసుకోండి. chmod అనేది ఒక మంత్రం కాదు. అది కెర్నల్ (kernel) ఇనోడ్స్ (inodes) కు యాక్సెస్ను ఎలా మధ్యవర్తిత్వం చేస్తుందో తెలిపే ఉపరితల పొర మాత్రమే. ఆపరేటింగ్ సిస్టమ్ మీ ఎఫెక్టివ్ యూజర్ ఐడిని (effective user ID) ఫైల్ యొక్క ఓనర్, గ్రూప్ మరియు ఇతరులతో సరిపోల్చి చూస్తుందని మీరు అర్థం చేసుకున్నప్పుడు, ఆ నంబర్లు అర్థవంతంగా ఉంటాయి. డైరెక్టరీ పర్మిషన్లు మీరు ఒక పాత్లోకి వెళ్లగలరా లేదా దాని కంటెంట్ను జాబితా చేయగలరా అనేదాన్ని నియంత్రిస్తాయని మీరు నేర్చుకున్నప్పుడు, మీరు ఒక ఫైల్ను చదవగలరు కానీ దానిని చేరుకోలేకపో waarom అని ఆశ్చర్యపోవడం మానేస్తారు. డైరెక్టరీపై ఎగ్జిక్యూట్ పర్మిషన్ అనేది ప్రోగ్రామ్లను రన్ చేయడం గురించి కాదు; అది లోపల ఉన్న ఇనోడ్స్ను యాక్సెస్ చేయడానికి అనుమతి గురించి అని మీరు గ్రహిస్తారు. అకస్మాత్తుగా, chmod ను గుర్తుంచుకోవాల్సిన అవసరం ఉండదు. దానికి సందర్భం (context) అవసరం.
నెట్వర్కింగ్ ప్రాథమిక సూత్రాలు కూడా nmap విషయంలో అలాగే పనిచేస్తాయి. పోర్ట్ స్కాన్ అనేది తెరిచిన తలుపుల జాబితా కాదు; అది ప్యాకెట్లతో కూడిన ఒక సంభాషణ. మీరు TCP three-way handshakeని అర్థం చేసుకున్నప్పుడు, SYN స్కాన్కు ఎందుకు రా (raw) సాకెట్ ప్రివిలేజెస్ అవసరమో మరియు క్లోజ్డ్ పోర్ట్ ఎందుకు RSTతో స్పందిస్తుందో, అలాగే ఫిల్టర్డ్ పోర్ట్ ఎందుకు ఏమీ స్పందించదో మీరు అర్థం చేసుకుంటారు. మీరు ఫ్లాగ్ కాంబినేషన్లను గుర్తుంచుకోవడం మానేసి, మీరు ఏ ప్యాకెట్లను పంపుతున్నారు మరియు ఆ నిశ్శబ్దం లేదా శబ్దం (noise) అంటే ఏమిటి అనే దాని గురించి ఆలోచించడం ప్రారంభిస్తారు.
HTTP గురించి అర్థం చేసుకున్న తర్వాత Burp Suite వంటి అప్లికేషన్-లేయర్ టూల్స్ కూడా సులభంగా అర్థమవుతాయి. ఇది మీ మధ్య మరియు వెబ్ సర్వర్ మధ్య ఉండే ఒక ప్రాక్సీ మాత్రమే. మీకు HTTP మెథడ్స్, హెడర్స్, స్టేటస్ కోడ్లు మరియు రిక్వెస్ట్లు సర్వర్-సైడ్ లాజిక్కు ఎలా అనుసంధానించబడతాయో తెలియకపోతే, Burp Suite అనేది బటన్లతో కూడిన ఒక గందరగోళ డ్యాష్బోర్డ్లా అనిపిస్తుంది. ఒక రిక్వెస్ట్ ఎలా ప్రయాణిస్తుంది మరియు సర్వర్ స్పందనను (response) ఎలా నిర్మిస్తుందో మీకు తెలిసినప్పుడు, ఆ టూల్ చాలా స్పష్టంగా కనిపిస్తుంది. మీరు Burp Suiteని నేర్చుకోవడం లేదు. మీరు Burp Suiteతో HTTPని పరిశీలిస్తున్నారు.
పునాదిని నిర్మించుకోండి
మీరు ఇప్పుడే మొదలుపెడుతుంటే, చీట్షీట్లను (cheatsheets) సేకరించాలనే కోరికను అదుపులో ఉంచుకోండి. కాలక్రమేణా వృథా కాని మూడు అంశాలపై దృష్టి పెట్టండి.
Linux basics కోసం, కెర్నల్ ప్రాసెస్లను ఎలా షెడ్యూల్ చేస్తుంది, షెల్ కమాండ్లను ఎలా పార్స్ చేస్తుంది మరియు ఎన్విరాన్మెంట్ వేరియబుల్స్ ప్రోగ్రామ్ ప్రవర్తనను ఎలా ప్రభావితం చేస్తాయో నేర్చుకోండి. stdin, stdout, మరియు stderrలను కేవలం చిన్న విషయాలుగా కాకుండా, పైపులు పనిచేయడానికి అవసరమైన ప్లంబింగ్ (plumbing) లాగా అర్థం చేసుకోండి.
networking protocols కోసం, తొందరపడకుండా TCP/IP స్టాక్ను అధ్యయనం చేయండి
