ഷെൽകോഡ്

ഹാക്കിംഗിൽ, ഒരു സോഫ്‌റ്റ്‌വെയർ വൾനറബിലിറ്റി ചൂഷണം ചെയ്യുന്ന പേലോഡായി ഉപയോഗിക്കുന്ന ഒരു ചെറിയ കോഡാണ് **ഷെൽകോഡ്**. ഷെൽകോഡ് എന്നത് മലിഷ്യസ് കോഡിനായി ഉപയോഗിക്കുന്ന ഒരു പദമാണ്, അത് പലപ്പോഴും ഒരു കമാൻഡ് ഷെൽ തുറക്കുന്നു, ആക്രമണകാരികൾക്ക് മോഷ്ടിക്കപ്പെട്ട കമ്പ്യൂട്ടറിനെ നിയന്ത്രിക്കാൻ അനുവദിക്കുന്നു. എന്നിരുന്നാലും, സമാനമായ ജോലികൾ ചെയ്യുന്ന ഏത് കോഡും ഇതിന് റഫർ ചെയ്യാനാകും,"ഷെൽകോഡ്" എന്ന പദം പരിമിതപ്പെടുത്താം, കാരണം അത് ഒരു കമാൻഡ് ഷെൽ തുറക്കുന്നതിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നു, എന്നാൽ അതിനപ്പുറമുള്ള വിവിധ വിനാശകരമായ ജോലികൾ ഇതിന് ചെയ്യാൻ കഴിയും.എന്നിരുന്നാലും, ഈ പദം മാറ്റിസ്ഥാപിക്കാനുള്ള ശ്രമങ്ങൾക്ക് വലിയ സ്വീകാര്യത ലഭിച്ചിട്ടില്ല. ഷെൽകോഡ് സാധാരണയായി മെഷീൻ കോഡിലാണ് എഴുതുന്നത്.

ഷെൽകോഡ് തയ്യാറാക്കുമ്പോൾ, അത് ചെറുതും പ്രവർത്തനക്ഷമവുമായി നിലനിർത്തേണ്ടത് പ്രധാനമാണ്, കാരണം ഇത് വ്യത്യസ്തമായ സാഹചര്യങ്ങളിൽ അതിനെ ഒന്നിലധികം കാര്യങ്ങൾക്ക് ഉപയോഗയോഗിക്കാനാവുന്നു. ചെറുതും കൂടുതൽ കാര്യക്ഷമവുമായ ഷെൽകോഡിനെ കണ്ടെത്താനുള്ള സാധ്യത കുറവാണ്, മാത്രമല്ല വൾനറബിൾ സിസ്റ്റങ്ങളിലേക്ക് കൂടുതൽ എളുപ്പത്തിൽ ഈ കോഡ് ഇഞ്ചക്ട് ചെയാൻ കഴിയും.നല്ല ഷെൽകോഡ് എഴുതുന്നത് ശാസ്ത്രീയമാണ് എന്നത് പോലെ തന്നെ ഒരു കലയുമാണ്.അസംബ്ലി കോഡിൽ, ഒരേ ഫംഗ്‌ഷൻ ഒന്നിലധികം വഴികളിൽ നിർവഹിക്കാൻ കഴിയും കൂടാതെ ഈ ആവശ്യത്തിനായി ഉപയോഗിക്കാവുന്ന ഒപ്‌കോഡുകളുടെ ദൈർഘ്യത്തിൽ ചില വ്യത്യാസങ്ങളുണ്ട്; നല്ല ഷെൽകോഡ് എഴുത്തുകാർക്ക് ഈ ചെറിയ ഒപ്കോഡുകൾ ഉപയോഗിച്ച് കൂടുതൽ ഒതുക്കമുള്ള ഷെൽകോഡ് സൃഷ്ടിക്കാൻ കഴിയും. പരിമിതമായ മെമ്മറി സ്‌പെയ്‌സുകളിൽ ഷെൽകോഡ് ഘടിപ്പിക്കുന്നതിനും ഷെൽകോഡിനെ കണ്ടെത്തുന്നത് ഒഴിവാക്കുന്നതിനും ഈ ഒപ്റ്റിമൈസേഷൻ അത്യാവശ്യമാണ്.വിദഗ്ധരായ ഷെൽകോഡ് ഡെവലപ്പർമാർ, കോഡ് വിശ്വസനീയവും ഫലപ്രദവുമാണെന്ന് ഉറപ്പാക്കിക്കൊണ്ട് സാധ്യമായ ഏറ്റവും ചെറിയ വലിപ്പം കൈവരിക്കാൻ ശ്രമിക്കുന്നു.
## വിവിധ തരത്തിലുള്ള ഷെൽകോഡുകൾ
ഷെൽകോഡ് അത് പ്രവർത്തിക്കുന്ന മെഷീനിൽ (ലോക്കൽ) അല്ലെങ്കിൽ മറ്റൊരു മെഷീനിൽ ഒരു നെറ്റ്‌വർക്ക് (റിമോട്ട്) വഴി ആക്രമണകാരിക്ക് നിയന്ത്രണം നൽകുന്നുണ്ടോ എന്നതിനെ ആശ്രയിച്ച് ലോക്കലോ റിമോട്ടോ ആകാം.
### ലോക്കൽ
ഒരു മെഷീനിലേക്ക് പരിമിതമായ പ്രവേശന സ്വാതന്ത്യം ഉള്ള ആക്രമണകാരിയാണ് ലോക്കൽ ഷെൽകോഡ് ഉപയോഗിക്കുന്നത്, എന്നാൽ ആ മെഷീനിലെ ഉയർന്ന പ്രിവിലേജഡ് പ്രക്രിയയിൽ ഒരു ബഫർ ഓവർഫ്ലോ പോലുള്ള ഒരു വൾനറബിലിറ്റി മുതലെടുക്കാൻ കഴിയും. ഇത് വിജയകരമായി നടപ്പിലാക്കുകയാണെങ്കിൽ, ഷെൽകോഡ്, ലക്ഷ്യമിടുന്ന പ്രക്രിയ്ക്ക് വേണ്ടി അതേ പ്രത്യേകാവകാശങ്ങളോടെ ആക്രമണകാരിക്ക് ആ മെഷീനിലേക്ക് പ്രവേശിക്കാൻ കഴിയും.
### റിമോട്ട്
ഒരു ലോക്കൽ നെറ്റ്‌വർക്കിലോ ഇൻട്രാനെറ്റിലോ റിമോട്ട് നെറ്റ്‌വർക്കിലോ ഉള്ള മറ്റൊരു മെഷീനിൽ പ്രവർത്തിക്കുന്ന ഒരു വൾനറബിൾ പ്രോസ്സസിനെ ആക്രമണകാരി ലക്ഷ്യമിടുമ്പോൾ റിമോട്ട് ഷെൽകോഡ് ഉപയോഗിക്കുന്നു. ഇത് വിജയകരമായി നടപ്പിലാക്കുകയാണെങ്കിൽ, ഷെൽകോഡ് ഉപയോഗിച്ച് ആക്രമണകാരിക്ക് നെറ്റ്‌വർക്കിലുടനീളം ടാർഗെറ്റ് മെഷീനിലേക്ക് പ്രവേശനം നേടാൻ കഴിയും. റിമോട്ട് ഷെൽകോഡുകൾ സാധാരണ ടിസിപി/ഐപി സോക്കറ്റ് കണക്ഷനുകൾ ഉപയോഗിച്ച് ആക്രമണകാരിയെ ടാർഗെറ്റ് മെഷീനിലെ ഷെല്ലിലേക്ക് പ്രവേശിക്കാൻ അനുവദിക്കും. ഈ കണക്ഷൻ എങ്ങനെ സജ്ജീകരിച്ചിരിക്കുന്നു എന്നതിനെ അടിസ്ഥാനമാക്കി അത്തരം ഷെൽകോഡുകളെ തരംതിരിക്കാം: ഷെൽകോഡ് കണക്ഷൻ സ്ഥാപിക്കുകയാണെങ്കിൽ, അതിനെ "റിവേഴ്സ് ഷെൽ" അല്ലെങ്കിൽ കണക്ട്-ബാക്ക് ഷെൽകോഡ് എന്ന് വിളിക്കുന്നു, കാരണം ഷെൽകോഡ് ആക്രമണകാരിയുടെ മെഷീനിലേക്ക് തിരികെ ബന്ധിപ്പിക്കുന്നു. നേരെമറിച്ച്, ആക്രമണകാരി കണക്ഷൻ സ്ഥാപിക്കുകയാണെങ്കിൽ, ആ ഷെൽകോഡിനെ  ബൈൻഡ്ഷെൽ എന്ന് വിളിക്കപ്പെടുന്നു, കാരണം ഷെൽകോഡ് ഇരയുടെ മെഷീനിലെ ഒരു പ്രത്യേക പോർട്ടുമായി ബന്ധിപ്പിക്കുന്നു. ബിൻഡ്‌ഷെൽ റാൻഡം പോർട്ട് എന്ന് പേരിട്ടിരിക്കുന്ന ഒരു പ്രത്യേക ഷെൽകോഡ് ഉണ്ട്, അത് ബൈൻഡിംഗ് ഭാഗം ഒഴിവാക്കുകയും ഓപ്പറേറ്റിംഗ് സിസ്റ്റം വഴി ലഭ്യമാക്കിയ ഒരു റാൻഡം പോർട്ടിൽ ബന്ധിപ്പിക്കുകയും ചെയ്യുന്നു. ഇക്കാരണത്താൽ, x86-64-നുള്ള ഇതുവരെ ലഭ്യമായതിൽ വച്ച് ഏറ്റവും ചെറുതും സ്ഥിരതയുള്ളതുമായ ബിൻഡ്‌ഷെൽ ഷെൽകോഡായി *[https://github.com/geyslan/SLAE/blob/master/improvements/tiny_shell_bind_tcp_random_port_x86_64.asm bindshell random port]* മാറി. മൂന്നാമത്തേത്, സോക്കറ്റ് റീയൂസ് ഷെൽകോഡ് വളരെ അപൂർവമായി മാത്രമേ ഉപയോഗിക്കാറുള്ളൂ, ഒരു വൾനറബിൾ പ്രോഗ്രാമിലേക്ക് ഒരു കണക്ഷൻ തുറക്കുമ്പോൾ, എന്നാൽ ഷെൽകോഡ് പ്രവർത്തിപ്പിക്കുന്നതിന് മുമ്പ് കണക്ഷൻ ക്ലോസ് ചെയ്യാതിരിക്കുമ്പോൾ അത് പ്രവർത്തിക്കുന്നു. ഇത്തരത്തിലുള്ള ഷെൽകോഡ് പുതിയൊരെണ്ണം സൃഷ്ടിക്കുന്നതിനുപകരം നിലവിലുള്ള കണക്ഷൻ പ്രയോജനപ്പെടുത്തുന്നു. ആക്രമണകാരിയുമായി ആശയവിനിമയം നടത്താൻ വേണ്ടി ഷെൽകോഡിന് ഈ കണക്ഷൻ വീണ്ടും ഉപയോഗിക്കാനാകും. സോക്കറ്റ് റീയൂസ് ഷെൽകോഡ് കൂടുതൽ സങ്കീർണ്ണമാണ്, കാരണം നിലവിലുള്ള ഏത് കണക്ഷൻ ഉപയോഗിക്കണമെന്ന് അത് നിർണ്ണയിക്കണം, കൂടാതെ ഒരു കമ്പ്യൂട്ടറിന് ഒരേ സമയം നിരവധി ഓപ്പൺ കണക്ഷനുകൾ ഉണ്ടായിരിക്കും. ശരിയായ കണക്ഷൻ ഫലപ്രദമായി വീണ്ടും ഉപയോഗിക്കുന്നതിന് ഇത്തരത്തിലുള്ള ഷെൽകോഡിന് ശ്രദ്ധാപൂർവം തിരഞ്ഞെടുക്കേണ്ടതുണ്ട്.

## അവലംബം