در این مطلب به بررسی حمله ای پرداخته می شود که در نهایت این امکان را برای مهاجم فراهم می کند تا username و password های تعریف شده در شبکه قربانی را از طریق اینترنت و به صورت remote کشف نماید. به صورت کلی حمله ای که در این post به آن پرداخته می شود، حمله ی Password Spray بر روی سرویس OWA (Outlook Web Access) هست. برای آشنایی بیشتر با حمله فوق سناریو و مراحل اجرای حمله را با هم بررسی می کنیم.
سناریوی مورد نظر:
سناریویی را در نظر بگیرید که در آن مهاجم ابتدا آدرس URL سرویس ایمیل شبکه قربانی را شناسایی کرده و متوجه می شود که شبکه قربانی از OWA استفاده می کند. در این مرحله مهاجم می تواند با بهره گیری از یک wordlist برای username و password ها از طریق سرویس OWA حساب های کاربری تعریف شده در شبکه قربانی را شناسایی کند. حتی نکته خیلی مهمی که این حمله را خطرناک تر می کند این هست که مهاجم در این مرحله نه تنها توانسته حساب های کاربری که دسترسی به سرویس mailbox شبکه دارند را شمارش کند، بلکه حتی اگر یک حساب کاربری در شبکه قربانی تعریف شده باشد که به سرویس mailbox هم دسترسی نداشته باشد، مهاجم می تواند آنها را نیز کشف کند.
مراحل اجرای حمله:
مرحله اول: شناسایی سرویس ایمیل شبکه قربانی
در این مرحله مهاجم با استفاده از روش های متداولی که وجود دارد، باید پورتال OWA شبکه قربانی را شناسایی کند. به عنوان نمونه در تصویر زیر می توان یک پورتال تستی OWA را مشاهده کرد:
مرحله دوم: شناسایی مسیر پروتکل AutoDiscover
در این مرحله بعد از این که مهاجم پورتال OWA سرویس ایمیل شبکه قربانی را شناسایی کرد، باید ببیند آیا مسیرهای مرتبط با پروتکل AutoDiscover که در زمان نصب سرویس Exchange به صورت پیش فرض بر روی IIS قرار می گیرند، قابل فراخوانی هست یا خیر؟ برای این کار کافی است مهاجم ببیند آیا یکی از مسیرهای زیر را می تواند از طریق اینترنت فراخوانی کند یا خیر؟
https://autodiscover.rnpg.ir/autodiscover/autodiscover.xml
https://mail.rnpg.ir/autodiscover/autodiscover.xml
اگر مهاجم توانست یکی از آدرس های فوق را ببیند، پس یعنی به احتمال خیلی زیاد می تواند حمله ای که در این post به آن می پردازیم را اجرا کند. در سامانه تستی پورتال ایمیل mail.rnpg.ir، هر دو آدرس نام برده در دسترس هستند. بعد از این که مهاجم مسیر دوم را در مرورگر خود فراخوانی می کند، با pop-up ای که در تصویر زیر می بینید مواجه می شود:
همان طور که مشاهده شد، بنابراین با فراخوانی آدرس های مذکور، یک pop-up احراز هویت به مهاجم نمایش داده می شود و تنها در صورتی که اطلاعات یک حساب کاربری معتبر از شبکه rnpg.ir در این پنجره وارد شود، فایل Autodiscover.xml به مهاجم نمایش داده می شود:
همین رفتاری که سرویس ایمیل شبکه قربانی در صورت موفق بودن احراز هویت یک حساب کاربری در pop-up نمایش داده شده نشان می دهد به مهاجم کمک می کند تا بتواند اطلاعات حساب های کاربری موجود در شبکه قربانی را به دست آورد و همان طور که در ابتدای post اشاره کردیم، در این روش، نه تنها مهاجم می تواند حساب های کاربری که دسترسی به mailbox برای آنها تعریف شده است را به دست آورد، بلکه می تواند سایر حساب های کاربری شبکه که حتی دسترسی mailbox ندارند را هم شمارش کند.
مرحله سوم: اجرای حمله Password Spray
قبل از این که جزئیات این مرحله را عنوان کنیم اصلا ببینیم که حمله password spray چیست؟
حمله password spray در واقع یکی از انواع تکنیک های به دست آوردن credential ها با امتحان کردن مقادیر مختلف نام کاربری ها و password ها است. تکنیکی که ما درواقع اکثراً آن را با نام Brute force می شناسیم. اما تکنیک password spray با brute force تفاوتی که دارد این هست که ما در روش brute force تمام حالات ممکن برای یک ترکیب user/pass را با شروع از یک user جلو می بریم و تمام مقادیر قرار گرفته در password list برای آن user بررسی می شود و تا زمانی که آخرین password قرار گرفته در password list برای user بررسی نشده باشد، سراغ یک user جدید نمی رویم. به عبارتی:
Username: user1 : password: pass1
password: pass2
password: pass3
.
.
.
Username: userN : password: pass1
password: pass2
password: pass3
.
.
.
اما در روش password spraying اتفاقی که می افتد بدین صورت هست که ابتدا یک password از فایل password list انتخاب می شود و آن password به عنوان رمز عبور تمام user های موجود در username list بررسی می شود و تا زمانی که آخرین username موجود در username list بررسی نشده باشد، سراغ password بعدی نمی رویم، یعنی:
password: pass1 : username: user1
username: user2
.
.
.
password: passN : username: user1
username: user2
.
.
.
تکنیک password spray بزرگترین و مهمترین مزیتی که نسبت به روش brute force دارد این هست که بدین ترتیب چنان چه مکانیزم Account Lockout در شبکه قربانی پیاده سازی شده باشد، این تکنیک می تواند با دور زدن مکانیزم مذکور کماکان به شناسایی credential های موجود در شبکه بپرداز و با اختلالی مواجه نشود. برای اجرای حمله مورد نظر در سناریو مذکور هم ما از روش password spray برای شناسایی credential های شبکه قربانی استفاده می کنیم.
برای پیاده سازی حمله password spray ابزارهای زیادی وجود دارند که می توانند این کار را برای ما انجام بدهند. به عنوان نمونه می توان به ruler که یک ابزار نوشته شده برای سوء استفاده از سرویس exchange هست اشاره کرد.
برای این که بتوان از ruler در جهت پیاده سازی حمله password spray استفاده کرد، مهاجم باید ابتدا یک لیست برای username ها و password هایی که می خواهد آن ها را در شبکه قربانی امتحان کند تهیه کند و سپس با استفاده از دستور زیر، آن را به اجرا در آورد:
./ruler-linux64 -k --domain rnpg.ir brute --users username.txt --passwords password.txt –verbose
همان طور که مشاهده کردید، مهاجم با اجرای این حمله توانست چندین user/pass معتبر از شبکه قربانی شناسایی کند و در حملات آتی خود از آنان بهره ببرد.