🧠 “متااسپلویت فقط یک ابزار نیست — یک فلسفه است. اگر فقط می‌خواهید یک اکسپلویت را اجرا کنید، یک دکمه فشار دهید. اما اگر می‌خواهید بفهمید چرا کار می‌کند، چرا نمی‌کند، و چطور خودتان بسازیدش — باید به سورسش نگاه کنید.”


🎯 چرا باید سورس متااسپلویت را بخوانید؟

بسیاری فقط use exploit/... و set RHOSTS ... و exploit را می‌زنند — و اگر کار کرد، خوشحال می‌شوند. اما اگر نکرد؟ یا اگر بخواهید چیز جدیدی بسازید؟ یا اگر بخواهید یک اکسپلویت قدیمی را برای سیستم جدید تطبیق دهید؟

جواب همه این‌ها در سورس‌ها نهفته است.

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


📚 بخش اول: رسمی‌ترین و معتبرترین سورس — مخزن اصلی متااسپلویت

🔗 github.com/rapid7/metasploit-framework

چرا اینجا؟

  • تمام اکسپلویت‌های رسمی، ماژول‌ها، پیلودها و کتابخانه‌های متااسپلویت اینجایند.
  • هر آپدیت، هر باگ‌فیکس، هر اکسپلویت جدید ابتدا اینجا منتشر می‌شود.
  • Pull Requestها و Issueهای جالبی وجود دارند که نشان می‌دهند چطور متخصصان امنیت دنیا فکر می‌کنند.

چه چیزی پیدا می‌کنید؟

  • /modules/exploits/ — قلب تپنده متااسپلویت. هر اکسپلویت در یک فایل .rb (ربی) نوشته شده.
  • /modules/payloads/ — پیلودهای شل، مترپریتر، ویندوز، لینوکس، اندروید و…
  • /modules/auxiliary/ — ابزارهای کمکی مثل اسکنرها، اسپووفرها، ابزارهای جمع‌آوری اطلاعات.
  • /lib/msf/ — کتابخانه‌های داخلی متااسپلویت — اگر می‌خواهید عمیق‌تر بروید، اینجا جای شماست.

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


🔍 بخش دوم: سورس‌های آموزشی و الهام‌بخش — جایی که یاد می‌گیرید چطور فکر کنید

۱. Exploit Database (Exploit-DB) — گنجینه تاریخی اکسپلویت‌ها

🔗 https://www.exploit-db.com

چرا مهم است؟

  • متااسپلویت اغلب اکسپلویت‌هایش را از اینجا یا الهام گرفته از اینجا می‌سازد.
  • اکسپلویت‌های خام، PoCها، و کدهای C, Python, Perl — همه اینجا هستند.
  • می‌توانید یک اکسپلویت قدیمی را پیدا کنید، ببینید چطور کار می‌کند، و آن را به متااسپلویت تبدیل کنید.

🧩 مثال انسانی: فرض کنید یک اکسپلویت برای یک نسخه قدیمی از Apache Tomcat در Exploit-DB پیدا کردید — با خواندن کدش، می‌فهمید چطور از یک RCE سوءاستفاده می‌کند. حالا می‌توانید همان منطق را در یک ماژول متااسپلویت بازنویسی کنید — و حتی Pull Request بدهید!


۲. Packet Storm Security

🔗 https://packetstormsecurity.com

چه چیزی پیدا می‌کنید؟

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

📜 نکته فلسفی: بعضی از بهترین اکسپلویت‌ها در Packet Storm هستند — چون نویسندگانش علاقه‌مندان واقعی بودند، نه فقط کدنویس‌های شرکتی. اینجا اکسپلویت‌ها “داستان” دارند — نه فقط کد.


۳. GitHub — جستجوی هوشمندانه

متااسپلویت فقط در مخزن رسمی نیست. هزاران نسخه اصلاح شده، ماژول‌های جدید، و PoCهای منتشر نشده در GitHub پراکنده‌اند.

چند جستجوی طلایی:

  • exploit windows smb site:github.com
  • metasploit module cve-2024-*
  • metasploit custom payload
  • msfvenom shellcode decoder

سورس‌های جالب در GitHub:

🧭 نکته عملی: وقتی یک اکسپلویت در GitHub پیدا کردید، حتماً به تاریخچه Commitها و Issueها نگاه کنید — ممکن است مشکلاتی داشته باشد که نویسنده حل نکرده. اینجا یاد می‌گیرید چطور یک کد “ناتمام” را کامل کنید.


🛠️ بخش سوم: سورس‌های داخلی — وقتی می‌خواهید خودتان بسازید

۱. مستندات رسمی توسعه ماژول متااسپلویت

🔗 https://docs.metasploit.com/docs/development/

چرا بخوانید؟

  • نحوه ساخت ماژول اکسپلویت، اگزیلیاری، پست و…
  • ساختار کلاس‌ها، توابع، و APIهای داخلی.
  • نحوه استفاده از Msf::Exploit::Remote::HttpClient و ده‌ها کتابخانه دیگر.

📖 مثال کوچک از مستندات:

class MetasploitModule < Msf::Exploit::Remote
  Rank = NormalRanking

  include Msf::Exploit::Remote::HttpClient

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'My Custom Exploit',
      'Description'    => %q{ This is my first exploit. },
      'Author'         => ['Your Name'],
      'License'        => MSF_LICENSE,
      'References'     => [ ['CVE', '2024-XXXX'] ],
      'Targets'        => [ ['Automatic', {}] ],
      'DefaultTarget'  => 0))
  end

  def exploit
    res = send_request_cgi({
      'uri'    => '/vulnerable-path',
      'method' => 'POST',
      'data'   => payload.encoded
    })
    if res && res.code == 200
      print_good("Exploit succeeded!")
    end
  end
end

این یک اکسپلویت ساده HTTP است. وقتی سورس را می‌بینید، می‌فهمید چطور ساختارش کار می‌کند — و می‌توانید آن را تغییر دهید.


۲. سورس ماژول‌های معروف — بهترین معلمان

به جای شروع از صفر، از بهترین‌ها یاد بگیرید:

  • exploits/windows/smb/ms17_010_eternalblue.rb — اکسپلویت معروف ویندوز
  • exploits/linux/http/apache_mod_cgi_bash_env_exec.rb — اکسپلویت Shellshock
  • exploits/multi/http/struts2_content_type_ognl.rb — اکسپلویت Struts2

چه چیزی یاد بگیرید؟

  • چطور پارامترها را تعریف می‌کنند؟
  • چطور چک می‌کنند که هدف آسیب‌پذیر است؟ (check method)
  • چطور پیلود را encode و deliver می‌کنند؟
  • چطور خطاهای احتمالی را مدیریت می‌کنند؟

🎓 نکته آموزشی: یک ماژول معروف را باز کنید — خط به خط آن را دنبال کنید — سپس یک کپی از آن بگیرید و تغییرات کوچک دهید. مثلاً فقط URI را عوض کنید. بعد اجرا کنید. این بهترین روش یادگیری است.


🧪 بخش چهارم: سورس‌های آزمایشگاهی — جایی که خودتان می‌سازید

۱. Hack The Box & TryHackMe

در این پلتفرم‌ها، چالش‌هایی وجود دارند که نیاز به ساخت ماژول سفارشی متااسپلویت دارند. مثلاً:

  • یک وب‌اپلیکیشن با RCE ولی بدون ماژول رسمی.
  • یک سرویس قدیمی که فقط با یک پیلود خاص کار می‌کند.

چه می‌کنید؟

  • با Burp یا curl درخواست را بررسی کنید.
  • یک اسکریپت Python بنویسید که اکسپلویتش کند.
  • حالا همان منطق را در یک ماژول متااسپلویت پیاده‌سازی کنید.

🛠️ مثال واقعی: در HTB، ماشینی داشتیم که یک فایل PHP با eval($_GET['cmd']) داشت — هیچ ماژول رسمی برایش نبود. من یک ماژول سفارشی نوشتم که cmd را inject می‌کرد — و کار کرد! اینجاست که واقعاً یاد می‌گیرید.


۲. CTF ها و Write-upها

در CTFها، گاهی تنها راه حل، نوشتن یک اکسپلویت سفارشی است. Write-upهای برتر (مثل PPP, Shellphish, DiceGang) اغلب سورس کد اکسپلویتشان را منتشر می‌کنند — و اینها طلا هستند!

چند منبع عالی:


🧭 راهنمای انسانی: چطور شروع کنیم؟

مرحله ۱: یک ماژول ساده را خط به خط بخوانید

مثال: auxiliary/scanner/http/http_version

  • ببینید چطور از HttpClient استفاده می‌کند.
  • چطور run_host تعریف شده.
  • چطور خروجی را چاپ می‌کند.

مرحله ۲: یک کپی بگیرید و تغییر دهید

مثلاً فقط User-Agent را عوض کنید. یا یک هدر جدید اضافه کنید. ذخیره کنید. لود کنید. تست کنید.

مرحله ۳: یک ماژول جدید از صفر بسازید

با الهام از یک PoC در Exploit-DB. مثلاً یک Local File Inclusion ساده.

مرحله ۴: Pull Request بدید!

اگر ماژول شما کاربردی است و تست شده، آن را به مخزن اصلی متااسپلویت بدهید. اولین Pull Request شما می‌تواند نقطه عطفی در مسیر حرفه‌ای شما باشد.


✨ جمع‌بندی: متااسپلویت را مثل یک زبان یاد بگیرید — نه یک ابزار

  • ابزارها می‌آیند و می‌روند — اما درک شما از سورس‌ها ماندگار است.
  • بهترین سورس، همان سورسی است که شما با دستان خودتان می‌نویسید — بعد از خواندن هزاران خط کد دیگران.
  • اگر فقط می‌خواهید دکمه بزنید، متااسپلویت برای شماست. اما اگر می‌خواهید بسازید، تغییر دهید، و الهام ببخشید — سورس‌ها برای شماست.

🌱 یادتان باشد: هر متخصص متااسپلویت، روزی مبتدی بوده — و اولین ماژولش احتمالاً باگ داشته. مهم این است که شروع کنید — و متوقف نشوید.


نوشته شده با عشق، تجربه و اشتیاق — توسط کسی که روزی اولین ماژولش را نوشت و کار نکرد — اما دوباره امتحان کرد.

اگر می‌خواهید یک ماژول را با هم خط به خط بررسی کنیم — فقط بگویید. من اینجام.

دسته بندی شده در: