Metasploit چیست؟
Metasploit Framework یک چارچوب متنباز (با مجوز BSD-3-Clause) برای بهرهبرداری (Exploitation) و پسازبهرهبرداری (Post-Exploitation) است که شرکت Rapid7 آن را نگهداری میکند. معماری آن ماژولی است و کار با آن معمولاً از کنسول msfconsole انجام میشود:
- exploit — کدی که از یک آسیبپذیری مشخص در یک محصول مشخص بهره میگیرد.
- payload — کدی که پس از موفقیت اکسپلویت روی هدف اجرا میشود؛ از یک دستور ساده تا عامل تعاملی Meterpreter. مفهوم payload در دانشنامه بهصورت جداگانه توضیح داده شده است.
- auxiliary — ماژولهای کمکی: پویش، شمارش، بروتفورس و آزمونهایی که اکسپلویت نیستند.
- post — ماژولهای پس از دسترسی: جمعآوری اطلاعات، حرکت جانبی، پایداری.
- encoder و nop — تغییر شکل بایتهای payload برای سازگاری با محدودیتهای هدف.
نکتهی مهمی که در محتوای فارسی مرتب اشتباه گفته میشود: Rapid7 برای Metasploit Framework تگ انتشار در GitHub منتشر نمیکند. صفحهی Releases مخزن رسمی خالی است و نسخه از طریق بیلدهای nightly و نصبکنندههای رسمی ردیابی میشود؛ شاخهی جاری 6.4.x است. اگر متنی «آخرین نسخهی Metasploit را از GitHub Releases بگیرید» میگوید، به منبعی ارجاع میدهد که وجود ندارد.
باور غلط: «Metasploit یکی از بهترین ابزارهای تست نفوذ وب است»
«Metasploit یکی از بهترین ابزارهای تست نفوذ برنامههای وب است.» این جمله نادرست است و خواننده را دربارهی کل جریان کار گمراه میکند. Metasploit یک چارچوب بهرهبرداری شبکه و میزبان است. در آزمون یک برنامهی وب، ستون فقرات کار یک پروکسی رهگیر است — رهگیری، تغییر و تکرار درخواستهای HTTP — و Metasploit چنین چیزی نیست.
ریشهی این اشتباه، فهرستهای «۱۰ ابزار برتر تست نفوذ» است که ابزارهای حوزههای متفاوت را در یک ردیف میگذارند. اما جریان کار واقعی چنین است: کشف سطح حمله با ابزارهای شناسایی، سپس آزمون دستی هر نقطهی ورودی در پروکسی، سپس اثبات مفهوم و PoC برای هر یافته. Metasploit تنها در سه نقطهی باریک وارد این جریان میشود.
Metasploit ماژولهای اسکن وب هم دارد (auxiliary/scanner/http/*) اما این ماژولها بهطور محسوس از Burp، ZAP و Nuclei ضعیفترند و عملاً هیچوقت انتخاب درست نیستند. آنها را بهعنوان «اسکنر آسیبپذیری وب» معرفی کردن، توصیهی فنی نادرستی است.
سه کاربرد واقعی Metasploit در یک engagement وب
۱. بهرهبرداری از CVE شناختهشده در پشتهی زیرین. وقتی در مرحلهی شناسایی مشخص شد که برنامه روی یک کامپوننت وصلهنشده اجرا میشود — Struts، Confluence، WebLogic، Jenkins، یک کتابخانهی آسیبپذیر لاگگیری — ماژولهای exploit/multi/http/* یک اکسپلویت آزمودهشده و قابل تکرار در اختیار میگذارند. این همان چیزی است که OWASP در دستهی A03:2025 نقصهای زنجیرهی تأمین نرمافزار به آن اشاره میکند و بیشترین موارد واقعی RCE امروز از همین مسیر میآید، نه از کد خودِ برنامه. برای مدیریت این ریسک، فرایند مدیریت آسیبپذیری مهمتر از ابزار است.
۲. ساخت payload و شنونده. اگر در آزمون دستی یک نقص آپلود فایل یا اجرای کد کشف شده باشد، msfvenom برای تولید payload و exploit/multi/handler برای دریافت اتصال برگشتی به کار میآید. مفاهیم مرتبط در reverse shell و RCE توضیح داده شدهاند.
۳. پسازبهرهبرداری و ارزیابی تأثیر. پس از رسیدن به اجرای کد، پرسش واقعی مشتری این است: «از اینجا مهاجم تا کجا میتواند برود؟» ماژولهای post و قابلیت pivoting برای پاسخ به همین پرسشاند — موضوعی که در ارتقای سطح دسترسی و حرکت جانبی شرح داده شده است. این مرحله فقط در صورتی مجاز است که در قرارداد و دامنهی آزمون صریحاً پیشبینی شده باشد.
چرا Metasploit جای اسکنر وب را نمیگیرد
| هدف | ابزار درست | Metasploit |
|---|---|---|
| رهگیری و تغییر درخواست HTTP | Burp Suite / Caido | ندارد |
| کشف مسیر و پارامتر (فازینگ) | ffuf / feroxbuster | ماژول ضعیف |
| تشخیص CVE و پیکربندی نادرست در مقیاس | Nuclei | ماژول ضعیف |
| تزریق SQL | sqlmap + کار دستی | خارج از دامنه |
| کنترل دسترسی، IDOR، منطق کسبوکار | فقط آزمون دستی | خارج از دامنه |
| بهرهبرداری از CVE در کامپوننت زیرین | Metasploit | انتخاب مناسب |
| ساخت payload و شنونده | msfvenom + handler | انتخاب مناسب |
دلیل ساختاری این تقسیم کار روشن است: چارچوب اکسپلویت با امضاهای آسیبپذیری شناختهشده کار میکند، اما پرارزشترین یافتههای یک برنامهی وب — IDOR، کنترل دسترسی شکسته و شرایط مسابقه — امضا ندارند.
نمونهی فنی: بررسی یک ماژول پیش از اجرا
حرفهایترین کاری که میتوان با Metasploit در یک engagement کرد، این است که پیش از اجرای هر ماژول، رفتار و اثر آن را بخوانید. خروجی info پیشنیازها، هدفهای پشتیبانیشده، درجهی پایداری و اثر تخریبی احتمالی ماژول را نشان میدهد:
msfconsole -q
msf6 > search cve:2017-5638 type:exploit
msf6 > info exploit/multi/http/struts2_content_type_ognl
msf6 > show optionsاجرای ماژولی که ممکن است سرویس عملیاتی را از کار بیندازد، بدون پنجرهی زمانی توافقشده و بدون اطلاع تیم عملیات مشتری، خطای حرفهای است. اگر هدف فقط اثبات وجود آسیبپذیری است، حالت check در ماژولهایی که آن را پیاده کردهاند برای یک PoC کافی است.
مرزهای قانونی: مجوز کتبی، نه چیز دیگر
Metasploit ابزاری است که اثر آن بر سامانهی هدف واقعی و بازگشتناپذیر است. تنها چیزی که استفاده از آن را از یک حمله متمایز میکند، مجوز کتبی و دامنهی مکتوب است. حداقلهای حرفهای:
- قرارداد و قواعد اجرای آزمون (Rules of Engagement) که دامنه، پنجرهی زمانی، اقدامات مجاز و ممنوع، و مسیر تماس اضطراری را مشخص کند.
- ممنوعیت صریح اقدامات تخریبی: حذف داده، تغییر پیکربندی عملیاتی، ایجاد پایداری، و هر چیزی که پس از پایان آزمون باقی بماند.
- ثبت دقیق هر ماژول اجراشده با زمان و هدف، تا تیم مشتری بتواند لاگهای خود را با فعالیت آزمون تطبیق دهد.
- پاکسازی و مستندسازی آن در گزارش: حذف payloadها، فایلهای آپلودشده و حسابهای آزمایشی.
اگر آسیبپذیری کشفشده در محصول یک تأمینکنندهی ثالث باشد، مسیر درست افشای مسئولانه است، نه انتشار عمومی اکسپلویت.
پرسشهای متداول
آیا Metasploit برای تست نفوذ سایت مناسب است؟
برای آزمون خودِ برنامهی وب نه. Metasploit در آزمون وب سه کاربرد باریک دارد: بهرهبرداری از CVE شناختهشده در پشتهی زیرین (سرور، فریمورک، کتابخانه)، ساخت payload با msfvenom و دریافت اتصال با handler، و پسازبهرهبرداری. کشف آسیبپذیریهای خود برنامه با پروکسی رهگیر و آزمون دستی انجام میشود.
آخرین نسخهی Metasploit را از کجا بفهمیم؟
از نصبکنندههای رسمی و بیلدهای nightly؛ Rapid7 در GitHub تگ انتشار منتشر نمیکند و صفحهی Releases مخزن خالی است. شاخهی جاری 6.4.x است. در گزارش تست نفوذ، نسخهی دقیقی که استفاده کردهاید را همراه تاریخ آزمون بنویسید.
msfvenom چه کاری انجام میدهد؟
ابزار تولید payload در Metasploit است: نوع payload، سیستمعامل و معماری هدف، قالب خروجی و پارامترهای اتصال برگشتی را میگیرد و یک فایل یا رشتهی قابل تحویل تولید میکند. در یک آزمون وب معمولاً وقتی به کار میآید که پیشتر یک مسیر اجرای کد — مثل آپلود فایل بدون محدودیت — بهصورت دستی کشف شده باشد.
استفاده از Metasploit چه زمانی قانونی است؟
فقط روی سامانههایی که مجوز کتبی آزمون آنها را دارید، در دامنه و پنجرهی زمانی توافقشده، و با فهرست صریح اقدامات مجاز و ممنوع. اجرای آن روی هدفی که مجوزش را ندارید — حتی «برای تست» — نفوذ غیرمجاز است. چارچوب آن در قرارداد تست نفوذ آمده است.
