મેં એક નોટબુકથી શરૂઆત કરી હતી. કોઈ ટેક્સ્ટ એડિટર કે માર્કડાઉન ફાઇલ નહીં, પણ એક સ્પાયરલ-બાઉન્ડ પેપર નોટબુક જે અજાણ્યા કમાન્ડ્સથી ભરેલી હતી. મેં ls, grep, find, chmod, અને nmap લખ્યા હતા. મેં એક પછી એક પેજ સિન્ટેક્સથી ભરી દીધા હતા, Linux અને સાયબર સિક્યુરિટીને શબ્દભંડોળના ટેસ્ટની જેમ લીધું હતું, જાણે કે બીજા કરતા વધુ ફ્લેગ્સ જાણવાથી હું નિપુણ બની જઈશ. હું સિન્ટેક્સ સરળતાથી કોપી કરી શકતો હતો. જોકે, જો તમે મને પૂછો કે કોઈ કમાન્ડથી ચોક્કસ પરિણામ કેમ આવ્યું, તો હું શાંત થઈ જતો. એ શાંતિ જ સમસ્યા હતી.

નોટબુકનો જાળ

તે નોટબુક પ્રગતિ જેવી લાગતી હતી. દરેક પેજમાં વધુ શાહી ઉમેરાતી જતી હતી: find / -name "*.conf", nmap -sV, પાઇપ્સ અને રેગ્યુલર એક્સપ્રેશન્સ સાથે grep. ટ્યુટોરિયલ્સમાં, આ અભિગમ કામ કરતો હોય તેવું લાગે છે. પ્રેઝન્ટર એક કમાન્ડ ટાઇપ કરે છે, સ્ક્રીન પર અપેક્ષિત આઉટપુટ દેખાય છે, અને તમે માથું હલાવીને સહમત થાઓ છો. તમને લાગે છે કે તમે સક્ષમ છો કારણ કે તમારું ટર્મિનલ બરાબર તેમના જેવું જ દેખાય છે. પરંતુ આ ક્ષમતા ઉછીની છે. તે તે વ્યક્તિની છે જેણે ટ્યુટોરિયલનો માર્ગ તૈયાર કર્યો છે.

વાસ્તવિક વાતાવરણ સ્ક્રિપ્ટ્સનું પાલન કરતું નથી. સર્વર તમારા SSH કનેક્શનને નકારશે ભલે પોર્ટ ખુલ્લો હોય. તમે chmod +x ચલાવ્યા પછી પણ સ્ક્રિપ્ટ "permission denied" સાથે નિષ્ફળ જશે. સ્કેન પોર્ટને 'ઓપન' ને બદલે 'ફિલ્ટર્ડ' તરીકે રિપોર્ટ કરે છે, અને હવે તમારે નક્કી કરવાનું છે કે તેનો અર્થ ફાયરવોલ રૂલ છે, હોસ્ટ-આધારિત કંટ્રોલ છે, કે ઇન્ટ્રુઝન પ્રિવેન્શન સિસ્ટમ તમારી તપાસને શાંતિથી ડ્રોપ કરી રહી છે. તે ક્ષણોમાં, સિન્ટેક્સ યાદ રાખવું નિષ્ફળ જાય છે કારણ કે સમસ્યા એ નથી કે તમે કયો કમાન્ડ ભૂલી ગયા છો. તે એક એવી સિસ્ટમ છે જેને તમે સમજતા નથી.

નકલ કરવી એ શીખવું નથી

ટ્યુટોરિયલને અનુસરવા અને સમસ્યાનો ઉકેલ લાવવા વચ્ચે તફાવત છે. જ્યારે તમે કોપી કરો છો, ત્યારે તમે બીજાના નકશા પર સ્ટેપ A થી સ્ટેપ B પર આગળ વધો છો. જ્યારે કંઈક અલગ થાય છે, ત્યારે તમે થીજી જાઓ છો કારણ કે તમારું માનસિક મોડેલ ખાલી હોય છે. તમે જાણો છો કે chmod 755 પરમિશન બદલે છે, પરંતુ તમે તે સમજાવી શકતા નથી કે જ્યારે ફાઇલ noexec ફ્લેગ ધરાવતા માઉન્ટ પર હોય ત્યારે સિસ્ટમ હજુ પણ એક્સેસ કેમ રોકે છે. તમે જાણો છો કે nmap પોર્ટ સ્કેન કરી શકે છે, પરંતુ તમે તે સમજાવી શકતા નથી કે સ્ટેટફુલ ઇન્સ્પેક્શન સામે હોય ત્યારે SYN સ્કેન, કનેક્ટ સ્કેન કરતા અલગ પરિણામો કેમ આપે છે.

તમે Linux અથવા નેટવર્કિંગ શીખી રહ્યા નહોતા. તમે નકલ કરતા શીખી રહ્યા હતા.

પ્રશ્ન બદલો

મેં એક વસ્તુ બદલી. મેં "આને કયો કમાન્ડ ઠીક કરશે?" પૂછવાનું બંધ કર્યું અને "સિસ્ટમ ખરેખર શું કરી રહી છે?" પૂછવાનું શરૂ કર્યું. આ ફેરફાર અસ્વસ્થતા પેદા કરતો હતો કારણ કે તેનાથી મારી ગતિ ધીમી પડી ગઈ હતી. પરંતુ તે કામ કરી ગયું.

ફાઇલ પરમિશન લો. chmod એ કોઈ જાદુઈ નંબરની પ્રાર્થના નથી. તે કર્નલ (kernel) ઇનોડ્સ (inodes) પર એક્સેસ કેવી રીતે મધ્યસ્થી કરે છે તેનું ઉપરનું સ્તર છે. જ્યારે તમે સમજો છો કે ઓપરેટિંગ સિસ્ટમ ફાઇલના માલિક, ગ્રુપ અને અન્ય સાથે તમારા અસરકારક યુઝર આઈડી (effective user ID) ની તપાસ કરે છે, ત્યારે તે નંબરો સમજાય છે. જ્યારે તમે શીખો છો કે ડિરેક્ટરી પરમિશન નક્કી કરે છે કે તમે પાથમાં જઈ શકો છો કે તેની સામગ્રીની યાદી બનાવી શકો છો, ત્યારે તમે વિચારવાનું બંધ કરી દો છો કે તમે ફાઇલ વાંચી શકો છો પણ ત્યાં પહોંચી કેમ શકતા નથી. તમે સમજો છો કે ડિરેક્ટરી પર એક્ઝિક્યુટ પરમિશન એ પ્રોગ્રામ ચલાવવા વિશે નથી; તે અંદરના ઇનોડ્સને એક્સેસ કરવાની મંજૂરી વિશે છે. અચાનક, chmod ને યાદ રાખવાની જરૂર નથી પડતી. તેને સંદર્ભ (context) ની જરૂર છે.

નેટવર્કિંગના પાયાના સિદ્ધાંતો nmap માટે પણ એ જ કામ કરે છે. પોર્ટ સ્કેન એ ખુલ્લા દરવાજાઓની યાદી નથી; તે પેકેટ્સ દ્વારા થતી વાતચીત છે. જ્યારે તમે TCP three-way handshake સમજી લો છો, ત્યારે તમે સમજી શકો છો કે SYN સ્કેન માટે raw socket વિશેષાધિકારો કેમ જરૂરી છે અને ફિલ્ટર્ડ પોર્ટ કંઈ જ ન આપે, જ્યારે ક્લોઝ્ડ પોર્ટ RST સાથે પ્રતિસાદ આપે છે. તમે ફ્લેગના સંયોજનો યાદ રાખવાનું બંધ કરો છો અને તમે કયા પેકેટ્સ મોકલી રહ્યા છો અને તે શાંતિ અથવા અવાજ (noise) નો અર્થ શું છે તેના વિશે વિચારવાનું શરૂ કરો છો.

Burp Suite જેવા એપ્લિકેશન-લેયર ટૂલ્સ પણ ત્યારે જ સમજાય છે જ્યારે તમે HTTP સમજી લો છો. તે ફક્ત તમારા અને વેબ સર્વર વચ્ચે બેઠેલું એક પ્રોક્સી છે. જો તમે HTTP મેથડ્સ, હેડર્સ, સ્ટેટસ કોડ્સ અને વિનંતીઓ (requests) સર્વર-સાઇડ લોજિક સાથે કેવી રીતે જોડાય છે તે ન સમજો, તો Burp Suite બટનોનું એક મૂંઝવણભર્યું ડેશબોર્ડ છે. એકવાર તમે જાણી લો કે વિનંતી કેવી રીતે મુસાફરી કરે છે અને સર્વર કેવી રીતે પ્રતિસાદ (response) બનાવે છે, ત્યારે તે ટૂલ સ્પષ્ટ બની જાય છે. તમે Burp Suite શીખી રહ્યા નથી. તમે Burp Suite સાથે HTTP નું નિરીક્ષણ કરી રહ્યા છો.

પાયો મજબૂત કરો

જો તમે શરૂઆત કરી રહ્યા હોવ, તો ચીટશીટ્સ (cheatsheets) ભેગી કરવાની ઈચ્છાને રોકો. ત્રણ એવા ક્ષેત્રો પર ધ્યાન કેન્દ્રિત કરો જે ક્યારેય જૂના નહીં થાય.

Linux basics માટે, કર્નલ કેવી રીતે પ્રોસેસ શેડ્યૂલ કરે છે, શેલ (shell) કમાન્ડ્સને કેવી રીતે પાર્સ કરે છે અને એન્વાયરમેન્ટ વેરિયેબલ્સ પ્રોગ્રામના વર્તનને કેવી રીતે અસર કરે છે તે શીખો. stdin, stdout, અને stderr ને માત્ર સામાન્ય જ્ઞાન તરીકે નહીં, પણ પાઇપ્સને કાર્યરત રાખતા પ્લમ્બિંગ તરીકે સમજો.

networking protocols માટે, ઉતાવળ કર્યા વગર TCP/IP સ્ટેકનો અભ્યાસ કરો.