مهران کیاء
متخصص تست نفوذ و امنیت

شل کد (Shellcode) چیست؟

تو این مقاله قصد داریم تا در رابطه با یکی از روش ها یا در واقع تکنیک هایی که در دنیای هک و امنیت زیاد هم ازش استفاده میشه بنام شل کد ها (Shellcode) صحبت کنیم. خب اول بریم و ببینیم که شل کد (Shellcode) یا در معنی لغوی کد پوسته چیه؟ :)

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

Shellcode چیست؟

در دنیای هک ، کد پوسته یا (Shellcode) , یک قطعه کوچیک از کد مخرب هست که به عنوان یک بسته یا اصطلاحا محموله درون آسیب پذیری نرم افزار ها و سیستم ها مورد استفاده قرار میگیره.وظیفه شل کد این هست که معمولاً دستورات اجرایی رو راه اندازی می کنه که با استفاده از اون مهاجم می تونه دستگاه آسیب پذیری که مورد نفوذ واقع شده رو کنترل بکنه ، در حالت کلی می تونیم بگیم هر قطعه کد که وظیفه شبیه به این عملیات رو انجام می ده می تونه یک کد شل نامیده بشه.

شل کد (Shellcode) چیست؟

انواع شل کد ها (Shellcode)

بسته به هدف مهاجم و گرفتن دسترسی از دستگاهی که قصد نفوذ به اون رو داره شل کد ها میتونن به دو دسته کلی بندی بشن :

  • local: این نوع شل کد توسط مهاجمی استفاده می شه که دسترسی محدودی به سیستم داره اما می تونه از یک آسیب پذیری ، به عنوان مثال سرریز بافر (Buffer Over Flow) ، در یک پروسه با دسترسی بالاتر توی اون سیستم استفاده بکنه. در صورت اجرای موفقیت آمیز ، کد شل دسترسی مهاجم به سیستم رو با همون امتیاز و دسترسی بالاتر مثل فرآیند هدف قرار می ده.
  • remote: شل کد از راه دور (remote) زمانی مورد استفاده قرار می گیره که مهاجم بخواد یک فرایند آسیب پذیر رو که در دستگاه دیگه ای توی شبکه محلی ، اینترانت (Intranet) یا شبکه از راه دور اجرا می شi ، l,vn هدف قرار بده. در صورت اجرای موفقیت آمیز ، کد شل می توانه دسترسی مهاجم ر به سیستم یا دستگاه مورد نظر در سراسر شبکه فراهم بکنه. کدهای شل (Shellcode) از راه دور معمولاً از اتصالات سوکت استاندارد TCP/IP استفاده می کنند تا به مهاجم اجازه دسترسی به شل یا پوسته درون دستگاه مورد نظر را بدهند. چنین شل کد را می توان بر اساس نحوه برقراری این ارتباط طبقه بندی کرد:
  • اگه کد شل ارتباط رو برقرار کرد ، به اون اصطلاحا "شل معکوس" یا کد شل اتصال می گن چون کد شل به دستگاه مهاجم متصل می شه.
  • از طرف دیگه ، اگه مهاجم ارتباط را برقرار کنه ، کد شل (Bindshell)نامیده می شه چون کد پوسته به یک پورت خاص در دستگاه قربانی متصل می شه.

نحوه اجرا شدن شل کد ها در سیستم :

پیاده سازی شل کد ها از طریق دانلود و اجرای نوعی بدافزار در سیستم مورد نظر هست. این نوع (Shellcode) پوسته ای ایجاد نمی کنه ، بلکه به سیستم دستور می ده تا یک فایل اجرایی خاص رو از شبکه دانلود بکنه، روی دیسک ذخیره و اجرا بکنه. امروزه ، معمولاً در این نوع حملات دانلود کردن توسط درایو انجام می شه ، جایی که قربانی از یک صفحه وب مخرب بازدید می کنه که به نوبه خودش سعی می کنه نوعی فایل مخرب از پیش تعیین شده رو بارگیری کرده و کد شل را اجرا بکنه تا نرم افزار روی دستگاه قربانی نصب بشه. مزایای این تکنیک این هست که کد مخرب این قابلیت رو داره تا کوچکتر باشه ، این که نیازی به کد شل یا پوسته برای ایجاد یک فرآیند جدید در سیستم مورد نظر نیست و این که کد شل نیازی به کد جدید برای پاکسازی فرایند مورد نظر نداره

برای جلوگیری از اجرای شل کد ها در سیستم چه کنیم؟

از دیوار آتش (Firewall) می تونیم برای تشخیص اتصالات خروجی ایجاد شده توسط شل کد های معکوس و همچنین اتصالات ورودی ایجاد شده توسط (Bindshell) ها استفاده کنیم. بنابراین فایروال ها می تونن با جلوگیری از اتصال مهاجم به شل یا پوسته ایجاد شده توسط (Shellcode)، حتی در صورت آسیب پذیری سیستم ، مقداری امنیت رو در برابر مهاجم ارائه بکنند. این یکی از دلایلی هست است که گاهی اوقات از سوکت استفاده می شه بخاطر اینکه اتصال جدیدی ایجاد نمی کنه و بنابراین تشخیص و مسدود کردن اون هم توسط فایروال سخت تر میشه. 


امیدوارم لذت برده باشید :)))


مهران کیاء
مهران کیاء

متخصص تست نفوذ و امنیت

مهران کیاء , هکر کلاه خاکستری , فعال در حوزه تست نفوذ و امنیت , علاقه مند به مباحث شبکه و برنامه نویسی عاشق یادگیری و آموزش دادن. دوستان عزیز جهت مطرح کردن سوالات و مشکلات خودشون در دوره های آموزشی بنده میتونن از طریق کانال تلگرام اقدام کنند. https://t.me/MehranKiyaNET

نظرات