رفتن به مطلب
بازگشایی انجمن! ×
GuardIran

Metasploit-Advanced ( اکسپلویت نویسی پیشرفته )


پست های پیشنهاد شده

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

فقط سرفصل هارو خدمتتون می گم و رد می شم .
مقدمه زبان برنامه نویسی روبی و نوشتن اولین برنامه در روبی
کار با متغییر ها و متدهای درون شل و کار با شل
تابع split ؛ squeeze و اعداد و تبدیلات در روبی ؛ رنج و محدوده وآرایه ها در روبی
عملگر های تصمیم ساز و حلقه ها ؛ عبارت منظم
معماری فریم ورک متااسپلویت
درک ماژول ها در متااسپلویت
نوشتن یک ماژول اختصاصی اسنکر FTP
نوشتن ماژول اختصاصی اسنکر HTTP Server
نوشتن ماژول برای بکارگیری
و ...

نکته ای که باید یادآوری کنم اینکه فایلهای که برای دانلود احتیاج باشه تو همون سرفصل ارائه دوستان داده میشه فقط دوستان تمرین تمرین تمرین اگه می خواین خوب یاد بگیرین اینو هیچ وقت یادتون نره سپاس

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


:D :wub:کار با Ruby

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

This is the hidden content, please

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


 

جلسه دوم و پایانی کار با Ruby

تو این جلسه کار با حلقه ها و تابع های squeeze و split و ... هست که پایان فصل اول هم محسوب میشه
دوستان تا جلسات قبلی رو متوجه نشید فصل دوم که شروع ماژول نویسی هست و متوجه نمی شید در ضمن استقبال کمه امیدوارم مورد قبول دوستان باشه

This is the hidden content, please

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


با سلام و عرض ادب دوباره خدمت همه عزیزان
دوستان این نکته رو بازم می گم تا درس های قبلی رو متوجه نشدین از اینجا به بعدو با مشکل روبه رو می شن پس خواهشا توجه کنید چون از اینجا به بعد جذابیت این سر فصل شروع می شه
قصل دوم رو با هم شروع می کنیم
این جلسه می خوایم در مورد نحوه ایجاد ماژول البته به صورت خلاصه صحبت کنیم
براینکه بتونیم ماژول بنویسم اول باید بدونم فریم ورک متااسپلویت چه طوری کار می کنه و اجزاشو بشناسیم
فریم ورک متااسپلویت از کتابخانه های libraries ماژول modules پلاگین Plugins و ... ساخته شده

 

This is the hidden content, please

کتابخانه REX : میاد عملکرد های هسته ای مثل تنظیم سوکت ها اتصالات فرمت بندی کاربرد داره
MSFCore : عملکرد Api فریم ورک رو توصیف می کنه
MSF Base : برای پشتیبانی ماژول ها استفاده می شه
ما انواع ماژول داریم پیلودها برای ایجاد یک کانال دسترسی به سیستم به کار می رن
ماژول های اگزیلیاری را داریم که برای عملیات های مختلفی مثل جمع آوری اطلاعات لاگینگ سرویس ها مختلف فازینگ یک نرم افزار استفاده می شن
پیلود : برای اتصال دو طرفه استفاده میشه یا برای نصب یک سرویس استفاده می شه مثل مترپرتر که همه باهاش آشنا هستن
اگزیلیاری : برای عملیات های مختلفی مثل جمع آوری اطلاعات لاگینگ سرویس ها مختلف فازینگ یک نرم افزار استفاده می شن و یا پیدا کردن یک سرویس خاص
انکودرها : برای جلوگیری از شناسایی از دید آنتی ویروس و فایروال ها به این صورت که میاد رمزنگاری می کنه پیلودهارو
NOPS : برای پایداری پیلود ها انجام وظیفه می کنه
اکسپلویت ها : این همین کد هایه که روی سیستم قربانی اجرا و یا برای یک آسیب پذیری استفاده می شن
ماژول های متا که تو کتابخانه های گوناگونی هستن ساخته شده خوب ببینیم این توابع کجا هستن تو کالی
Meta-fre/lib/msf/

تو این مسیر کتابخونه ها ستن که تو پوشه core همه ماژول های که تا الان توضیح دادم هستش
می خوایم اولین ماژول خودمون که اگزیلیاری هست و بنویسیم met-fre/lib/msf/core/aux/web/
تو اینجا اگه نگاه کنید می بینید کتابخانه های مختلفی داریم .یکسری فایل های کتابخانه ای تو متا هستش که به صورت گسترده تو همه ماژول های متا استفاده می شه که تو مسیر /Core/exploit/ قرار دارن که کتابخونه های دیگه برای ماژول های دیگه هم تو همین مسیر می تونین ببینین .
اولین ماژول خودمون با یک ماژول اسنکر http شروع می کنیم که چه طوری کار می کنه این ماژول تو این مسیر قرار داره /met-fre/mod/aux/scanner/http/nano http_version.rb
اگه یادتو باشه گفتیم که # یعنی کامنت و توضیح و هیچ نقشی تو اجرا دستورات نداره پس اینجا هم همین طور خط require ‘rex/proto/http’ اینجا میاد به همه متدهای پروتکلی http که از کتابخونه REX هستشو فراخونی می کنه و تو کد ما قرار می ده پس میاد همه آدرس هارو از پوشه /lib/rex/proto/http/ می گیره یعنی هر ماژولی که باز نیاز باشه مثل get ,post,…
تو خط بعدی باز داریم require ‘msf/core’ که گفتیم کتابخونه هسته ای ماست عبارت class met میاد کدی که داریم می نویسیمو می گیم که از چه نسخه ای استفاده کنه که ما از نسخه 3 استفاده می کنیم بعد میام می گیم که این کد برای ماژول auxiliary هستش
یعنی جای که این طوری تعریف کردیم class MetasploitModule < Msf::Auxiliary که در متااسپلویت های 3 و نسخه های بالاتر کاربرد داره
Exploit mixins should be called first#
include Msf::Exploit::Remote::HttpClient
میاد فایل lib/msf/core/exploit/http رو به کد ما اضافه می کنه برایه این می تونم از این ماژول استفاده کنم چون قبلا require ‘msf/core’ تعریفم کردم
include Msf::Auxiliary::WmapScanServer
فایل wmapmodule.rb رو درون مسیر lib/msf/core/auxiliary اضافه می کنه wmap یک اسکنر آسیب پذیری مبتنی بر وب که به کمک فریم ورک متا اسپلویت میاد
# Scanner mixin should be near last
include Msf::Auxiliary::Scanner
scanner.rb موجود در پوشه lib/msf/core/auxiliary فایل و اضافه می کنه که حاوی انواع متدهای مختلف مثل اجرای یک ماژول مقداردهی اولیه و پیشرفته اسکن و ... پشتیبانی می کنه .
def initialize
super(
'Name' => 'HTTP Version Detection',
'Description' => 'Display version information about each system.',
'Author' => 'hdm',
'License' => MSF_LICENSE
)

register_wmap_options({
'OrderID' => 0,
'Require' => {},
})
End
این بخش از ماژول یک متد رو مقداردهی اولیه می کنه این متد پارامترهای اولیه را برای این ماژول متااسپلویت مقداردهی می کنه مثل name , Author , Description , License
و در بخش آخر داریم :
# Fingerprint a single host
def run_host(ip)
begin
connect
res = send_request_raw({ 'uri' => '/', 'method' => 'GET' })
fp = http_fingerprint(:response => res)
print_status("#{ip}:#{rport} #{fp}") if fp
rescue ::Timeout::Error, ::Errno::EPIPE
ensure
disconnect
end
end

end
این بخش کار واقعی ماژول را تعیین می کنه در اینجا ما متدی با نام run_host با آدرس IP به عنوان پارامتر برای ایجاد یک کانکشن مورد نیاز برای میزبان داریم و بعد متد run_host از اسکنر موجود در مسیر lib/msf/core/auxiliary/scanner.rb می گیره و برای تست آدرس IP استفاده میشه در ادامه هم کلمه کلیدی begin رو داریم که نشان دهنده شروع یک متد هست بعد متد connect که یک اتصال http با سرور ایجاد می کنه باز یک متغیر به نام res تعریف کردیم که از متد send_raw_request که از فایل core/exploit/http/client.rb و با پارامتر url به صورت / می دهیم تا با درخواست های get کار کنه و در ادامه نتایج تو res ذخیره می شه که اگر درخواست موفقیت آمیز بود و یا نوبد خروجی بده که متد http_fingerprint از فایل /lib/core/exploit/http/client.rb اجرا بشه و درون fp ذخیره بشه که اطلاعاتی از قبیل set_cookie,Powered-by و.. هستش .ما برای انجام محاسبات به یک بسته http نیاز داریم که response => res به عنوان یک پارامتر بهش بده در خط آخر پاسخ چاپ می شه خط آخر هم یعنی اینکه rescue ::Timeout::Error, ::Errno::EPIPE استثناء ها رو در نظر می گیره که شاید ماژول به حالت TimeOut در بیاد .
امیدوارم مفید بوده باشه
اگه متوجه نشودید دوباره بخونین تا خوب درک کنین این تازه ساده ترینش بود

در ضمن دوستان استقبال خیلی کمه چون فک می کنم هیچ علاقه ای به این مطالب ندارید منم دل سرد می شم به ادامه در مجموع ممنون از همه دوستانی که تا اینجا همراهی کردن بندرو یا حق

This is the hidden content, please

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


  • 3 هفته بعد...

با سلام و عرض ادب و پوزش از همه عزیزان بابت این مدت نبود بنده به علت یکسری از مشکلات یکمی سرم شلوغ شدش امید به حق سعی می کنم تاپیک نخوابه که البته بستگی به شما عزیزان هم داره با دل گرم کردن دنبال بودن این تاپیک خوب بریم سراغ بحث این جلسه

طریقه نوشتن ماژول ftp

همین طور که دوستان یادشون هست تو جلسه قبل خط 1 میاد کتابخونه های هسته ای
موردنیازمون تعریف می کردیم یعنی خط 1 میاد به ماژول ما مسیر
همه فایل های کتابخونه ای رو اضافه می کرد خط 2
مشخص می کنه که ما در حال ایجاد ماژول اگزیلیاری هستیم دقیقا مثل ماژول قبلی
بعد تو خط 3 و 4 چون قبلا تو خط 1 کتابخونه های هسته ای رو تعریف کردیم
حالا می تونیم از دستور include Msf::Exploit::Remote::Ftp
به کمک خط 3 lib/msf/core/exploit/ftp.rb اشاره کنیم
و همچنین عبارت include Msf::Auxiliary::Scanner
به فایل lib/msf/core/auxiliary/scnner.rb رو فراخوانی می کنه بعد تو خط 5
تا 14 اطلاعات اولیه ماژول خودمون مثل نام و توضیحات و نام نویسنده و لایسنس رو مقداردهی
می کنیم و بعد برای اینکه ماژول ما کار کنه می گیم چه گزینه هایی مورد نیاز هستش
من امدم تو خط 11 تا 14 گفتم که پورت پیشفرض رو RPORT = 21 تعریف کردم .
بعد باز امدم یه تابع به نام run_host معرفی کردم که برای اتصال به هدف از طریق
نشستن به هدف از طریق run_host که از فایل lib/msf/core/auxiliary/scanner.rb
هستو براش انتخاب کردم باز تو خط 16 امدم گفتم که برای اتصال از تابع connect که
از فایل lib/msf/core/exploit/ftp.rb استفاده کردم که با هدف ارتباط برقرار کنه
که تابع connect خودش دوتا پارامتر می گیره یکی true و دیگری false .
که با true پارامتر هامو تعریف می کنم ولی false حالت توضیحات داره بیشتر .


1- require 'msf/core'

2- class MetasploitModule < Msf::Auxiliary
3- include Msf::Exploit::Remote::Ftp
4- include Msf::Auxiliary::Scanner
5- def initialize
6- super(
7- 'Name' => 'FTP Detector',
8- 'Description' => '1.0',
9- 'Author' => 'unf0rgiven2',
10- 'License' => MSF_LICENSE
)
11- register_options(
[
12- Opt::RPORT(21) ,
13- ], self.class)
14- end

15- def run_host (target_host)
16- connect(true,false)
17- if(banner)
18- print_status("#{rhost} is running #{banner}")
19- end
20- disconnect
21- end
22- end

خوب حالا ببینیم این ماژولی که نوشتیم و به چه صورتی به کار ببریم
تو متااسپلویت من اسم ماژول خودمو un_ftp.rb گذاشتم و بعد
تو مسیر /usr/share/metasploit-framework/modules/auxiliary/scanner/ftp
قبل از اینکه ماژول خودمو اجرا کنم ببینیم میام تست می کنم مثل تصویر زیر اقدام می کنم
فقط اگه از قبل متااسپلویت رو اجرا کرده بودین و بعد ماژولی که نوشتینو تو مسیری که
خدمتتون گفتم کپی کردین ولی تو متااسپلویت پیدا نشد باید قبلش دستور reload_all
تو متااجرا کنید

This is the hidden content, please

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

This is the hidden content, please

This is the hidden content, please

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

 

This is the hidden content, please

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • ایجاد مورد جدید...