دوره SEC542 – بخش سی و نهم

دوره آموزشی SEC542

در این بخش از دوره آموزشی SEC542 از موسسه SANS به آشنایی با آشنایی با ابزار BeEF می پردازیم که به منظور استفاده از آسیب پذیری XSS از آن استفاده می شود.

BeEF

BeEF فریم‌ورکی برای ساخت و اجرای حملات است که توسط Wade Alcorn نوشته شده است. قدرت این پروتکل در وجود قابلیت‌های interprotocol است. حملات این فریم‌ورک از روی مرورگر اجرا شده و به مهاجم اجازه می‌دهد تا به جای نگرانی درباره نحوه حمله به کلاینت، بر روی پیلودهایش متمرکز شود.

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

نسخه stable این فریم‌ورک به زبان Ruby ارائه شده، اما همچنان از نسخه PHP آن نیز استفاده می‌شود. برای دریافت این ابزار و کسب اطلاعات بیشتر می‌توانید به لینک زیر مراجعه کنید:

beefproject.com

BeEF Interface

اینترفیس ابزار BeEF از طریق وب قابل دسترسی است. این اینترفیس، پنل‌هایی را برای کارهای اکسپلویت کردن در اختیار ما قرار می‌دهد.

اولین پنل، لیستی از مرورگرهای زامبی شده (هم آفلاین و هم آنلاین) را نشان می‌دهد. برای مرورگرهای آفلاین، BeEF دستورات را cache کرده و زمانی که دوباره مرورگر آنلاین شود، آن‌ها را اجرا می‌کند.

شناسایی آسیب پذیری XSS

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

به تصویر زیر دقت کنید:

رنگ سبز: ماژول بر روی قربانی کار کرده و بصورت مخفیانه قابل اجراست.
رنگ نارنجی: ماژول بر روی قربانی کار می‌کند اما ممکن است قربانی آن را ببیند.
رنگ خاکستری: اطمینانی برای کارکرد ماژول وجود ندارد.
رنگ قرمز: ماژول بر روی این تارگت اجرا نمی‌شود.
زمانی که ما یک ماژول را انتخاب می‌کنیم، پنل سمت راست، توضیحات و تنظیمات مرتبط با آن ماژول را نشان می‌دهد. در نهایت با زدن دکمه Execute، دستور به مرورگر قربانی ارسال می‌گردد.

کنترل زامبی‌ها

با تزریق فایل hook,js از طریق یک باگ XSS می‌توانیم یک مرورگر را زامبی کرده و کنترل آن را در دست بگیریم. درواقع پیلود اکسپلویت بصورت زیر خواهد بود:

زمانی که قربانی صفحه حاوی اسکریپت اکسپلویت را لود می‌کند، مرورگر او به کنترلر BeEF متصل می‌شود. در این حالت، با استفاده از فایل hook,js می‌توانیم دستورات مختلفی را بر روی مرورگر قربانی اجرا کنیم. در حقیقیت کنترلر BeEF بر اساس دستورات موردنظر ما، کدهای JS فایل hook.js را تغییر داده و آن‌ها را به مرورگر قربانی ارسال می‌کند.

کارکرد BeEF

فریم‌ورک BeEF ماژول‌های متعددی دارد که از API های قدرتمندی استفاده می‌کنند. این فریم‌ورک قابلیت‌های زیر را دارد:

• کنترل زامبی‌ها
• ماژول‌ها
Autorun
Clipboard Stealing
JavaScript Injection
Request Initiation
History Browsing
• Port Scanning
• اکسپلویت‌های مرورگر
• اکسپلویت‌های Interprotocol

History Browsing

این ماژول، لیستی از URL ها را به زامبی ارسال کرده و سپس مشخص می‌کند که آیا کلاینت به آن‌ها دسترسی داشته یا نه. درواقع روش مورد استفاده در این ماژول، bruteforce است و نیاز داریم لیستی از URL ها را برای این کار تهیه کنیم (بطور پیش‌فرض آدرس تعداد کمی سایت در BeEF وجود دارد). همچنین این ماژول به ما امکان fingerprint کردن قربانیان و جمع آوری اطلاعات آنان را داده و سایت‌های دیگری که ممکن است در حملات دیگرمان مورد استفاده قرار گیرند را برای ما مشخص می‌کند.

Request Initiation

ماژول Request Initiation به زامبی دستور می‌دهد تا یک صفحه را درخواست دهد. از این ماژول می‌توان برای دانلود نرم‌افزار بر روی سیستم، پیاده‌سازی حملات CSRF، هدایت قربانی به یک سایت خاص و غیره استفاده کرد. برای نمونه می‌توان به کلیک بر روی آگهی‌های تبلیغاتی جهت کسب درآمد، یا اجرای یک حمله DoS با ارسال درخواست‌های انبوه به وب‌سرور، اشاره نمود. قابل ذکر است که این ماژول، محتوای صفحه را به مهاجم بازنمی‌گرداند.

Port Scanning

ابزار BeEF دارای یک اسکنر جالب است. این اسکنر می‌تواند با استفاده زامبی‌های متعدد خود در شبکه عملیات port scan انجام دهد. یعنی اگر تعداد زامبی‌های ما به اندازه کافی زیاد باشد، می‌توانیم از طریق هرکدام از آن‌ها تنها یک پورت را اسکن کنیم. بدین ترتیب هیچ IDS توانایی شناسایی آن را نخواهد داشت. پس با بالا رفتن تعداد زامبی‌ها، ریسک شناسایی شدن در شبکه کاهش می‌یابد.

Browser Exploitation

در نسخه فعلی ابزار BeEF قابلیت اتصال به Metasploit افزوده شده است. جهت استفاده از این قابلیت، به یک نسخه در حال اجرا از Metasploit که در دسترس سرور BeEF باشد، احتیاج داریم. کنترلر BeEF از طریق کانکشن RPC به Metasploit وصل شده و اکسپلویت‌ها و پیلودهای موجود را لود می‌کند.

با انتخاب حمله، BeEF یک iframe در مرورگر قربانی تزریق کرده و اکسپلویت را به او ارسال می کند. علاوه بر این، امکان استفاده از Metasploit Browser AutoPWN را نیز داریم که تا زمان گرفتن دسترسی از قربانی، همه اکسپلویت‌ها را بر روی او اجرا می‌کند. بکارگیری این روش به دلیل عدم پایداری و ایجاد مشکلات مختلف در فرآیند تست توصیه نمی‌شود.

Interprotocol Exploitation

مهاجمین می‌توانند از BeEF برای برقراری ارتباط و اکسپلویت پروتکل‌های دیگر استفاده کنند. یعنی از طریق یک مرورگر زامبی، درخواست‌های HTTP خود را به سرورهای تارگت (در شبکه داخلی) ارسال کنند. برای مثال، BeEF شامل ماژولی برای برقراری ارتباط و اکسپلویت یک سرور Asterisk VoIP می‌باشد. همچنین می‌تواند به طیف وسیعی از سرویس‌ها متصل شده و اکسپلویت‌های Metasploit را بر روی آن‌ها اجرا کند.
بسیاری از پروتکل‌ها نسبت به دیتاهای غیرقابل فهم درخواست‌ها بی‌تفاوت‌اند و آن‌ها را در نظر نمی‌گیرند. BeEF از این بی‌تفاوتی استفاده کرده و پروتکل‌های دیگری را در پیلود درخواست‌های HTTP خود ارسال می‌کند. مثلا یک BindShell را به عنوان پیلود ارسال نموده و شل قربانی به مهاجم بازمی‌گردد.

مطالب این بخش توسط سرکار خانم فهیمه رضایی تهیه شده است.

درباره نویسنده: احسان نیک آور

ممکن است دوست داشته باشید