نوشته‌ها

آموزش SEC580 – بخش دوم

سلام خدمت شما

با قسمت دوم از دوره SEC580 در خدمتتون هستم.

با توجه به درگیری‌های کاری سعی می کنم هر هفته ۱ تا ۲ پارت از این آموزش را منتشر کنم.دوره به صورت فشرده و کوتاه خواهد بود.

انواع Payload:

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

 Inline و  non-staged

به پیلودهای حاوی Exploit و یا Full Shell code به منظور اجرای یک کار خاص پیلودهای non-staged و یا Inline می‌گویند.

Stager:

این نوع پیلود با پیلود های Staged کار می کند و وظیفه برقراری ارتباط بین مهاجم و فرد قربانی را دارد و با ایجاد یک Channel اطلاعات مد نظر فرد مهاجم را از آن عبور میدهد

Meterperter:

یک پیلود چند وجهی و یا همان Multi-Faceted می‌باشد که با استفاده از dll injection از راه دور به سیستم فرد قربانی حمله می‌کند و موجب ایجاد دسترسی می‌شود.

این نوع پیلود هیج اثری بر روی Hard-Disk نمی‌گذارد و تمامی بدافزارها را در Memory اجرا می‌کند.

کشف و بازرسی این پیلود با روش‌های ساده Digital Forensic بسیار سخت و دشوار می‌باشد.

PassiveX:

این نوع پیلود برای گذر از فایروال ها می باشند که از استفاده از ActiveX و IE به منظور ساخت یک http Tunnel به منظور ارسال و دریافت اطلاعات مد نظر فرد مهاجم مانع شناسایی شدن پیلود می شود.

NONX:

این پیلول وظیفه دور زدن NX را دارد، در برخی CPU ها به منظور جلوگیری از اجرای کد بر روی قسمت‌های مختلف حافظه از NX استفاده می‌شود که در ویندوز NX با نام DEP مخفف Data Execution Prevention پیاده سازی می‌شود و NONX توانایی دورزدن آن را نیز دارد.

IPv6:

همانطور که از نام آن پیداست این نوع پیلود برای استفاده در شبکه‌های مجهز به IPv6 می‌باشد

لیستی از Payload های موجوددر متاسپلویت

bind_tcp
bind_tcp_ipv6
bind_nonx_tcp
reverse_tcp
reverse_http
reverse_tcp_ipv6
reverse_nonx_tcp
reverse_tcp_allport
x64/bind_tcp
x64/reverse_tcp

با دستور msfconsole محیط برنامه را باز می‌کنیم.با استفاده از دستور banner می‌توانیم حالت شروع کنسول متاسپلویت را تغییر دهیم.

به منظور پیدا کردن سریع‌تر اکسپلویت‌ها، ماژول‌ها و یا Payload‌ها می‌توانیم از دستور search استفاده کنیم.

برای مثال من قصد دارم اسکنر های Port در متاسپلویت را ببینم

search <name>

چند مثال عملی

search cve:2019 type:exploit platform:windows app:client firefox

تمامی اکسپلویت‌های firefox با این مشخصات را برای ما نمایش می‌دهد

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

search cve:2019 type:exploit platform:windows app:client

نکته: در صورت نمایش ندادن خروجی خاصی به معنی این است که مشخصاتی که وارد کرده اید، در متاسپلویت وجود ندارد.

به منظور وارد شدن و به کار گرفتن این ماژول ما از دستور use استفاده می‌کنیم و وارد آن می‌شویم.

اصول نوشتاری دستور use به این شکل می‌باشد

use <Module_name>

حالا مراحل رو با مثال دیگری دنبال کنیم:

search portscan

use /auxiliary/scanner/portscan/tcp

با استفاده از دستورات متنوع show ما توانایی دیدن مقدار اطلاعات مختلف در رابطه با ماژول‌ها و اجزای مختلف متاسپلویت را داریم.

دستور show options برای ما پارامترهای مورد نیاز برای تنظیم آنها را نمایش می‌دهد که در ماژول‌های مختلف متاسپلویت دوپارامتر کاربرد بسیار دارند، پارامترهای RHOSTS و RPORTS برای ما اهمیت ویژه دارند.

مقدار RHOSTS مخفف Remote HOSTS تایین کننده IP هدف ما می‌باشد و RPORTS مخفف Remote PORT تعیین کننده Port هدف ما می‌باشد.این مقدارها را با استفاده از دستور set می‌‍توانیم تنظیم کنیم.

آموزش SEC580 - بخش دوم

اصول نوشتاری دستور set:

set <Variable> <Vaule>

set RHOSTS TargetURL/TargetIP

set PORTS 80

همانطور که در بالا گفتیم دستور show محتویات بسیاری را برای ما نمایش می‌دهد. برای مثال ما می‌توانیم از این دستور به منظور نمایش تمامی Exploit ها و یا ماژول‌های Auxiliary استفاده کنیم.

نمونه‌ای از این دستورات:

show exploits

نمایش تمامی اکسپلویت‌های قایل استفاده در متاسپلویت

show auxiliary 

نمایش تمامی ماژول‌های Auxiliary در متاسپلویت

show payloads

فرض کنید قرار است از طریق یک اکسپلویت به یک سیستم حمله کنیم و برای گرفتن دسترسی نیاز به یک پیلود دارید و پیلودهای قابل استفاده برای آن اکسپلویت را با این دستور می‌‍توانیم مشاهده کنیم

show encoders 

نمایش تمامی Encoder های قابل استفاده در متاسپلویت

show post

نمایش تمامی ماژول‌های Post-Exploiting قابل استفاده در متاسپلویت

show advanced

دیدن اطلاعات یک ماژول

از دستور Generate  به منظور تبدیل یک پیلود به کد استفاده می‌کنیم.

دستور بعدی:

info <Module_name>

مثال:

info auxiliary/scanner/portmap/portmap_amp

دستوری بعدی help نام دارد که برای کمک کردن به ما آماده شده است.برای نمونه:

help set