احسان امجدی
کارشناس امنیت اطلاعات و ارتباطات

Meterpreter Shell چیست و چه کاربردی دارد؟

پس از یک exploit موفق Meterpreter Shell به شما این امکان را خواهد داد تا بتوانید تحت remote shell کاملی که به سیستم هدف زده اید، کارهای مختلفی را انجام دهید. Meterpreter Shell برای دستکاری کردن سیستمی که به آن ارتباط ریموت دارید، عالی است بنابراین بسته به نوع هدفی که دارید معمولا Meterpreter Shell نسبت به یک remote terminal shell مستقیم ترجیح داده میشود.

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

Meterpreter مجموعه ای از دستورات و مولفه ای هایی را در اختیار میگذارد که با اجرایشان میتوانند کمک بزرگی را در تست های امنیتی بما بکنند. برای مثال دستوراتی وجود دارند که هش های پسورد را بدست آورده و داده و تنظیمات مرتبط را از سیستم جمع آوری میکنند. همچنین در کنار این دستورات به ظاهر جدی و خشن! برخی ابزارهای سرگرمی نیز وجود دارند که خود را در مجموعه Meterpreter گنجانده اند.

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

دستورات اصلی در Meterpreter

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

وب سایت توسینسو

وقتی که به session فعال شده وارد شدیم، میتوانیم از محیط فرمان Meterpreter shell استفاده کنیم:

وب سایت توسینسو

بسیار خوب؛ حال وقت ان است که ببینیم که Meterpreter shell چه کاری میتواند برایمان انجام دهد. بنابراین کار با با دستور help آغاز میکنیم تا ببینیم که چه دستوراتی را در اختیار داریم:

وب سایت توسینسو

بعد از آن مجموعه دستوراتی را خواهید دید که به بخش های کوچگتری تقسیم شده اند. این دستورات شامل موارد زیر هستند:

  • Core commands
  • File System commands
  • Networking commands
  • System Commands
  • User Interface Commands
  • Webcam Commands
  • And three Priv Commands

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

Core Commands

وب سایت توسینسو

به عنوان یک کاربر مبتدی، به احتمال زیاد بیشتر دستورات background، help، load، migrate، run و exit از این لیست به کار شما میآید!

  • Background: این دستور این امکان را میدهد تا مسیر طی شده در session را به عقب برگردیم؛ بنابراین میتوانیم به محیط دستوری msf برگردیم و یا به session های دیگر دسترسی پیدا کنیم.
وب سایت توسینسو

همچنین با استفاده از قالب دستوری "<# session –i <session " میتوانیم به session مورد نظرمان برگردیم.

  • Load and Run: این دستورات به شما اجازه میدهند تا در کنار Meterprete، ماژول ها و دستورات بیشتری را داشته باشید.
  • Exit: از محیط Meterpreter خارج میشود.

File System Commands

وقتی که شما ارتباط meterprete shell دارید، با دو نوع فایل سیستمی سر و کار خواهید داشت؛ فایل های سیستمی محلی(لوکال) و ریموت. دستورات File System بشما این امکان را میدهند تا با هردوی آن ها تعامل و ارتباط داشته باشید.

وب سایت توسینسو

اساسا شما میتوانید از دستورات استاندارد لینوکس برای جستجو و استفاده از فایل سیستمی استفاده کنید. اما چگونه میتوان بین سیستم محلی و سیستم ریموت برای پیوست کردن فایل ها تفاوت قائل شد؟تمام دستورات در سیستم ریموت استفاده میشوند. برای مثال برای دریافت لیست دایرکتوری سیستم ریموت، فقط کافیست دستور "ls" را تایپ کنید:

وب سایت توسینسو

اگر بتوانید یک دایرکتوری با نام "test" در سیستم هدف (ریموت)درست کنید، میتوانیم به درون آن برویم و لیست محتویات داخل آن را ببینیم:

وب سایت توسینسو

وقتی که شما نیاز به استفاده از فایل های سیستمی لوکال (سیستم کالی) دارید، دو دستور وجود دارند که بشما کمک خواهند کرد:

  • Getlwd & lpwd: به شما دایرکتوری موجود در سیستم لوکال را نشان خواهد داد.
  • Lcd: مسیر دایرکتوری لوکال را تغییر میدهد.

در بخش بعد سعی خواهیم کرد تا ضمن ادامه آموزش کار با Meterpreter shell، ابزارهای بیشتری را نیز در این محیط بشما معرفی کنیم. پس با ما همراه باشید.

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

  • Getlwd & lpwd: به شما دایرکتوری موجود در سیستم لوکال را نشان خواهد داد.
  • Lcd: مسیر دایرکتوری لوکال را تغییر میدهد.

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

وب سایت توسینسو

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

وب سایت توسینسو

در شکل بالا ما به دسکتاپ کالی و جایی که میخواهیم فایل هایمان را در کالی برای آپلود انتخاب کنیم، وصل شدیم. سپس به پوشه تست در سیستم هدف وصل شدیم و خیلی ساده با استفاده از دستور "Upload" فرمان انتقال فایل را صادر کردیم.

  • نکته: در خط هفتم در مجموعه فرمان های بالا و در فرمان "Upload tools"، عبارت "Tools" نام فایلی است که قصد آپلود ان را داریم.

به عکس؛ عمل دانلود نیز در همان مسیری که گفته شد صورت می پذیرد؛ فقط کافیست که در دستور صادره عبارت download را جایگزین Upload کرده و در ادامه نام فایلی را که میخواهیم دانلود شود، بیاوریم. همه چیز برای دانلود فایل از سیستم ریموت یا همان هدف به سیستم کالی یا لوکالمان آماده ست:

وب سایت توسینسو

خوب حالا میخواهیم در ادامه آموزشمان نگاهی بر Network Command بیاندازیم.

Network Commands

این دستورات بشما این امکان را میدهند تا برخی خصوصیات شبکه ای را ببینید و دستکاری کنید.

وب سایت توسینسو
  • Arp: لیستی از تناظر آدرس های مک سیستم های ریموت با ادرس IP واقعیشان را نشان میدهد.
  • Ifconfig و ipconfig: هر دوی این دستورات مشخصات شبکه ای در سیستم ریموت را نشان میدهد. ( ifconfig در لینوکس و ipconfig در ویندوز)
  • Netstat: لیستی از کانکشن های فعال در شبکه را نشان میدهد.
  • Portfwd and route: به شما این امکان را میدهد تا برخی از حملات پیشرفته routing را انجام دهید.

System Commands

در زیر لیستی از دستورات سیستمی آورده شده است. در این آموزش مجال توضیح و پوشش تک تک آن ها را نداریم اما جهت اشنایی آن را مرور میکنیم:

وب سایت توسینسو
  • CLEAREV: این دستور تلاش میکند تا لاگ های بجا مانده از شما را بر روی سیستم هدف پاکسازی کند.

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

وب سایت توسینسو

برخی از این event ها ممکن است شامل همان کارهایی باشد که از نفوذ ما بجا مانده است. بنابراین میتوانیم بصورت ریموت و از راه دور از پشت سیستم کالی با تایپ عبارت "clearev" آن ها را پاک کنیم:

وب سایت توسینسو

لاگ های اپلیکیشن، سیستم و امنیتی از بین میروند. اگر مجددا به لاگ های امنیتی نگاهی بیاندازیم، فقط یک رکورد را میتوانیم در آن مشاهده کنیم و آن رکورد "Log Clear" است:

وب سایت توسینسو

GETPID & PS COMMANDS

اگر از Meterpreter استفاده میکنید، با این دو فرمان زیاد برخورد خواهید کرد:

  • Getpid: بشما میگوید که چه فرآیندی (ID آن( در شل در حال اجراست.
  • Ps: لیستی از تمام فرآیند های در حال اجرا در سیستم هدف را نشان میدهد.

بنابراین اگر عبارت "getpid" را تایپ کنید، خواهید دید:

وب سایت توسینسو

این شماره ID فرآیندی است که شل شما از آن استفاده میکند. اگر عبارت "ps" را تایپ کنیم، میتوانیم تمام فرآیندهای در حال اجرا را ببینیم:

وب سایت توسینسو

اگر لیست را بسمت پایین مرور کنیم، میتوانیم شماره pid 3824 را مشاهده کنیم:

وب سایت توسینسو

در این شکل همچنین مشاهده خواهیم کرد که این فرآیند تحت فرآینده "powershell.exe" و کاربری "Fred" در حال اجراست.این اطلاعات زمانی بکار میآیند که بخواهیم از یک فرایند با سطح دسترسی پایین به یک فرایند با سطح دسترسی بالا تغیر حالت دهیم. ما میتوانیم شل فعالمان در این PID را به فرایندی که سطح دسترسی بالاتری دارد، منتقل (Migrate) کنیم. این انتقال که به "Migrating" معروف است، به ما این امکان را میدهد تا شل –مان- را در فرآیند پرکاربردتری دیگری ترکیب و یا مخفی کنیم و این در حالی است که این کار با ماهیت یک کانکشن مخفی صورت میپذیرد. "Explorer.exe" یکی از فرایندهای پرکاربردیست که معمولا به آن تغیر وضعیت میدهند.برای مثال شماره PID فرایندی که میخواهید از آن استفاده کنید را پیدا کنید ( در مثال ما 1736 است) و عبارت "<#Migrate <PID” را تایپ کنید:

وب سایت توسینسو

در این مورد و دستورات Meterpreter در آینده بیشتر صحبت خواهیم کرد. فعلا قصد داریم تا در بخش بعد از این آموزش به اسکرین شات و استفاده از وب‌کم از راه دور بپردازیم. سربلند و مانا باشید.


احسان امجدی
احسان امجدی

کارشناس امنیت اطلاعات و ارتباطات

احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...

نظرات