اطلاعیه

Collapse
No announcement yet.

نوشتن ماژول برای متاسپلویت قسمت دوم

Collapse
X
 
  • Filter
  • زمان
  • Show
Clear All
new posts

  • نوشتن ماژول برای متاسپلویت قسمت دوم

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

    به هر حال برای شروع ساخت ماژول برای چهارچوب متاسپلویت نیاز به دانش برنامه نویسی روبی دارید که در قسمت اول این مقاله [#نوشتن ماژول برای متاسپلویت] بنده چندین منبع برای یادگیری این زبان اسکریپت نویسی معرفی کردم. اما در این قسمت خواهیم آموخت چگونه می توانیم با استفاده از زبان اسکریپت نویسی روبی شروع به ساخت ماژول خود برای چهارچوب متاسپلویت بکنیم(در اصل استاندارد ماژول نویسی متاسپلویت را تحلیل خواهیم کرد). به نظر بنده تنها تفاوتی که در نوشتن ماژول برای متاسپلویت با نوشتن اسکریپت برای مفسر متاسپلویت وجود دارد، خطوطی هست که در اول ماژول تعریف شده و ویژگی های متاسپلویت را به داخل ماژول وارد می کند که بنده در این قسمت این موارد را مورد بررسی قرار خواهم داد.
    شروع نوشتن ماژول برای متاسپلویت
    کد:
    [LEFT]require 'msf/core'[/LEFT]
    احتما دارد همواره مشاهده کرده باشید که در تمامی ماژول هایی که برای متاسپلویت وجود دارد، تکه کد بالا در اول آن ماژول تعریف شده است. این تکه کد ماژول را قابل خواندن برای متاسپلویت خواهد کرد. یا می توان اینطور بیان کرد، این تکه کد ماژول را برای چهارچوب متاسپلویت سازگار سازی می کند. به همین دلیل در تمامی ماژول هایی که برای متاسپلویت نوشته می شود این تکه کد را مشاهده خواهید کرد.
    کد:
    [LEFT]class Metasploit3 < Msf::Auxiliary[/LEFT]
    همانطور که برنامه نویس های روبی در جریان هستند، روبی همانند زبان برنامه نویسی سی پلاس پلاس دارای خاصیت ارث بری است. یعنی شما می توانید یک کلاس تعریف کنید و به آن یک سری خصوصیات اطلاق دهید و سپس کلاس های دیگری تعریف کنید که خصوصیات همان کلاس اولیه را به ارث ببرند و حتی می توانند شامل خصوصیات جدیدی هم شوند که اینا مربوط به مباحث برنامه نویسی روبی می شود.

    به هر حال با تکه کد بالا کلاسی تعریف می کنید که خصوصیات کمکی متاسپلویت را به ارث می برد یا همان شامل می شود. ماژول های کمکی که در متاسپلویت وجود دارند می توانند ویژگی ها بسیاری از قبیل پویشگری، ایجاد ارتباط و… را به شما ارائه دهند و کار کد نویسی را برای شما سرعت بخشند.
    کد:
    [LEFT]include Msf::[/LEFT]
    بیشتر افرادی که با برنامه نویسی سی/سی پلاس پلاس کار کردند با واژه include آشنا هستند و می دانند که ما با استفاده از این دستور در سی کتابخانه های موجود سی را به کد خود می افزودیم. در این قسمت هم واژه include کاربرد مشابه دارد با این تفاوت که ویژگی هایی که در رابط های کمکی متاسپلویت وجود دارد را می توانید به درون کد خود وارد کنید. ویژگی هایی از قبیل پویشگری و…!
    کد:
     	
    include Msf::Exploit::Remote::TCP
    به عنوان مثال تکه کد بالا ویژگی پویشگری TCP از راه دور را به ماژول ما اضافه می کند و بعد ها ما می توانیم از این ویژگی بهره مند شویم و عملیات های پویشگری را انجام بدهیم.
    کد:
    [LEFT]def initialize
        super(
            'Name' => 'Sample Code',
            'Version' => '$Revision$',
            'De******ion' => 'A sample code for training',
            'Author' => 'Milad Kahsari Alhadi @c3phalex1n',
            'License' => MSF_LICENSE
        )[/LEFT]
    علاوه بر نکات بالا که متذکر شدیم تکه کد بالا هم به صورت گسترده در ماژول های متاسپلویت مورد استفاده قرار می گیرد که مشخصاتی درباره ماژول، نویسنده ماژول، ورزن، لایسنس و … ارائه می دهد. این ماژول با استفاده از متود initialize تعریف شده است. به این معنا که مقادیر درون این تابع مقداردهی اولیه شده است. سپس یک هش ایجاد شده و به هر کلید آن یک مقداری اختصاص گردیده است. (مربوط به دانش برنامه نویسی روبی می شود)
    کد:
    [LEFT]register_options(
    [
        OptString.new('PORTS', [true, "Ports to scan (e.g. 25,80,110-900)", "1-10000"]),
        OptInt.new('TIMEOUT', [true, "The socket connect timeout in milliseconds", 1000]),
        OptInt.new('CONCURRENCY', [true, "The number of concurrent ports to check per host", 10]), self.class)
     
    deregister_options('RPORT')[/LEFT]
    تکه کد بالا یکی دیگر از قسمت هایی است که به صورت خیلی گسترده در ماژول های متاسپلویت مورد استفاده قرار می گیرد. در این قسمت، این کد به پارامتر های ماژول خود مقدار دهی می کند که در عملیات خود از آنها بهره مند شود. مثلا گزینه RPORTS شامل درگاهی می شود که باید به آن حمله شود.

    اما شاید یک نکته برای شما جالب به نظر برسد و آن ها واژگان True و False است. این دو پارامتر تعریف می کند که پارامتر مد نظر باید مقداردهی شود یا خیر، با به زبان ساده تر مشخص می کند پارامتر آیا یک گزینه اختیاری (optional) هست با نه یک گزینه اصلی است و باید مقداردهی شود. پایان قسمت دوم، در قسمت سوم شروع به تحلیل یک ماژول از متاسپلویت خواهیم کرد تا این مباحث را عمیق تر متوجه شویم.
    انقدر نشد چشمه از پاسخ سنگ سرد، به رفتن در اسِتاد و اِبرام کرد
    بسی کَند و کاوید و کوشش نمود، کز آن سنگ خارا رهی برگشود
    ملک الشعرای بهار
    My Blog : c3phalex1n.blogspot.com

    سایت جنبش مصاف، علی اکبر رائفی پور : http://masaf.ir
    خدا خیرش بده واقعا، تا حالا ندیده بودم کسی اینقدر برای جوُنا زحمت بکشه.

  • #2
    http://blog.oopssec.ir/?p=473#more-473
    انقدر نشد چشمه از پاسخ سنگ سرد، به رفتن در اسِتاد و اِبرام کرد
    بسی کَند و کاوید و کوشش نمود، کز آن سنگ خارا رهی برگشود
    ملک الشعرای بهار
    My Blog : c3phalex1n.blogspot.com

    سایت جنبش مصاف، علی اکبر رائفی پور : http://masaf.ir
    خدا خیرش بده واقعا، تا حالا ندیده بودم کسی اینقدر برای جوُنا زحمت بکشه.

    Comment


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

      Comment


      • #4
        نوشته اصلی توسط hack_tnt نمایش پست ها
        اقای الهادی این پوستجر اسکیوال چه جوری نصب می شه شوخی کردم بالاخره مشکل حل شد اقا ولی کلی وقت من رو گرفت...مقاله را نخواندم هنوز چون وقت نکردم اما ذخیره کردم تا بعدا سر فرصت بخوانم...موفق باشید با سپاس
        در این زمینه فیلم ساختم!
        تو جلسه هم حتی به صورت عملی این کار رو کردم برات :x
        انقدر نشد چشمه از پاسخ سنگ سرد، به رفتن در اسِتاد و اِبرام کرد
        بسی کَند و کاوید و کوشش نمود، کز آن سنگ خارا رهی برگشود
        ملک الشعرای بهار
        My Blog : c3phalex1n.blogspot.com

        سایت جنبش مصاف، علی اکبر رائفی پور : http://masaf.ir
        خدا خیرش بده واقعا، تا حالا ندیده بودم کسی اینقدر برای جوُنا زحمت بکشه.

        Comment

        Working...
        X