آسیب‌پذیری (ZeroLogon (CVE-2020-1472 و روش مقابله با آن

مقدمه

آسیب‌پذیری ZeroLogon به تنهایی شاید خطرناک‌ترین و فوری‌ترین آسیب‌پذیری سال ۲۰۲۰ است که حتما مدیران شبکه باید در اسرع وقت، نسبت به نصب وصله و رفع آن اقدام نمایند.

آسیب‌پذیری ZeroLogon یا CVE-2020-1472، یک آسیب‌پذیری فوق‌العاده خطرناک در تمامی نسخه‌های ویندوز سرور از 2008 تا 2019 است که دارای حداکثر درجه خطر (CVSS 10/10) می‌باشد. با استفاده از این آسیب‌پذیری، نفوذگر بدون نیاز به هیچگونه اطلاعات هویتی، و تنها با ارسال چند بایت به سرور DC می‌تواند به سادگی دسترسی Domain Admin را به دست آورد.

متاسفانه از آنجا که:

  • کد استفاده از آسیب‌پذیری در اختیار مهاجمان قرار دارد،
  • استفاده از آسیب‌پذیری بسیار ساده و بدون مشکل و بدون نیاز به اطلاعات هویتی یا … است،
  • تمامی نسخه‌های ویندوز سرور آسیب‌پذیر هستند،
  • آسیب‌پذیری حداکثر دسترسی متصور (ادمین کل دامنه) را برای مهاجم فراهم می‌کند،
  • امکان بستن پورت DC وجود نداشته و برای کارکرد اکتیودایرکتوری باید این پورت از تمام سیستم‌های شبکه قابل دسترسی باشد،
  • و اینکه به علت وجود آسیب‌پذیری در پروتکل MS-NRPC، به سادگی قابل وصله کردن نیست (صرف نصب آپدیت ویندوز برای محافظت کافی نمی‌باشد) و نصب وصله ممکن است اختلالاتی در عملکرد دامنه ایجاد کند،

این آسیب‌پذیری به تنهایی شاید خطرناک‌ترین و فوری‌ترین آسیب‌پذیری سال ۲۰۲۰ است که حتما مدیران شبکه باید در اسرع وقت، نسبت به نصب وصله و رفع آن اقدام نمایند.

جزئیات آسیب‌پذیری

برای درک کامل این آسیب‌پذیری ابتدا لازم است تا اندکی در رابطه با پروتکل MS-NRPC توضیح داده شود. این پروتکل یک رابط RPC است که از آن جهت موارد زیر استفاده می‌شود:

  • احراز هویت کاربران دامنه
  • احراز هویت سیستم‌های تحت دامنه
  • ارتباطات بین Domain Controllerهای یک دامنه
  • ارتباطات بین دامین (Forest)
  • انجام انواع عملیات از جمله تغییر پسوردهای سیستم‌های دامنه
  • یافتن و مدیریت این ارتباطات و …

همانگونه که مشخص است امکان بستن یا محدود کردن این پروتکل به دلیل کارکردهای آن وجود ندارد.

آسیب‌پذیری ZeroLogon یا CVE-2020-1472 به دلیل یک نقص در روش پیاده‌سازی الگوریتم AES-CFB8 در پروتکل MS-NRPC حین احراز هویت کاربر رخ می‌دهد. نفوذگر با ارسال تعدادی بسته MS-NRPC که در آن اطلاعات احراز هویتی با ۸ بایت صفر مقدار دهی شده‌اند، این امکان را دارد که بدون در اختیار داشتن اطلاعات کاربری ادمین و یا هرگونه اطلاعات کاربری دیگر، دسترسی خود را به سطح ادمین شبکه تغییر داده و پس از آن اقدام به تغییر رمز DC بکند. الگوریتم AES-CFB8 دارای یک Initial Vector یا IV شانزده-بایتی بوده که اصولا در هر بار استفاده باید با یک مقدار تصادفی پر شود، اما متاسفانه در پروتکل MS-NRPC میکروسافت، مقدار IV همیشه برابر با شانزده بایت صفر در نظر گرفته شده است. این اشکال در رمزنگاری باعث آسیب‌پذیر شدن AES-CFB8 شده و نفوذگر به طور میانگین پس از ۲۵۶ بار ارسال یک بسته حاوی ۸ بایت صفر به عنوان اطلاعات هویتی، به سادگی می‌تواند سرور را دچار خطا کرده و بالاترین سطح دسترسی را از سرور دریافت نماید.

نحوه تست وجود آسیب‌پذیری

نحوه تست نام دامنه ویندوز برای وجود آسیب‌پذیری به شرح زیر می‌باشد:

  1. ابتدا نرم‌افزار پایتون ۳ را دریافت و نصب نمایید. (https://www.python.org)
  2. سپس با اجرای دستور زیر، ماژول impacket را نصب نمایید.
    pip install impacket
  3. ابزار تستzerologon_tester.py را از این آدرس دریافت نمایید. (https://github.com/SecuraBV/CVE-2020-1472/raw/master/zerologon_tester.py)
  4. با باز کردن کامندلاین، به فولدری که فایل zerologon_tester.py قرار دارد بروید.
  5. دستور زیر را با جایگزینی مقادیر مناسب به جای DC-Name و DC-IP اجرا نمایید:
    python3 zerologon_tester.py <DC-Name> <DC-IP>
  6. دقت کنید که مرحله ۵ باید برای تمامی DCها (حتی DCهایی که در وضعیت فقط خواندنی قرار دارند) اجرا شود.
  7. در صورتیکه تست به درستی اجرا شود، یکی از دو پیام زیر را دریافت می‌کنید:
    • در صورتیکه بدون هیچ علامت «=» با timedout مواجه شوید، به معنی این است که پادویش این حمله را تشخیص داده و جلوی آن را گرفته است.
      Detection
    • در صورتی که پس از تعداد زیادی «=» با timedout مواجه شوید، به این معنی است که سیستم شما آسیب‌پذیر نمی‌باشد.
      patched
    • پیام Success! DC can be fully compromised by a Zerologon attack به معنی آسیب‌پذیر بودن دامنه بوده و باید آسیب‌پذیری را وصله نمایید.
      successful
اجرای تست باید بر روی تمامی کنترلرهای دامنه شامل اصلی (Primary)، جایگزین (Additional) و حتی فقط خواندنی (ReadOnly) انجام شود.

نحوه رفع آسیب‌پذیری و نصب وصله

برای آسیب‌پذیری Zerologon صرفا آپدیت کردن ویندوز و نصب وصله برای رفع آن کافی نیست!!
۱. سیستم‌های DC را آپدیت کنید.
۲. لاگ‌های ویندوز را بررسی کرده و سیستم‌های ناسازگار را بیابید.
۳. سیستم‌های ناسازگار را آپدیت یا استثنا کنید.
۴. حالت ارتباط امن را فعال نمایید.

از آنجاییکه این ایراد در پروتکل ارتباطی MS-NRPC بوده و رفع آن مستلزم تغییر در پروتکل می‌باشد، احتمال دارد نصب وصله با برخی تجهیزات و نرم‌افزارها ناسازگار باشد. از این رو برخلاف سایر آسیب‌پذیری‌ها، تنها نصب یک وصله برای رفع مشکل کافی نبوده و بایستی حتما فرآیند چهار مرحله‌ای (نصب وصله، یافتن سیستم‌های ناسازگار، رفع مشکل، فعال‌سازی کامل وصله) انجام گیرد. در غیر این صورت نصب وصله به تنهایی جلوی این آسیب‌پذیری خطرناک را نخواهد گرفت.‬

چهار مرحله ایمن سازی شبکه به شرح زیر می‌باشد:

  1. آپدیت: در تاریخ ۲۱ مرداد ۱۳۹۹ از سوی میکروسافت آپدیتی برای این آسیب‌پذیری منتشر شده است. جهت نصب به لینک زیر مراجعه و آپدیت مناسب را از جدول مربوطه دریافت نمایید:
    https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-1472
  2. بررسی: برخی سیستم‌های قدیمی، ممکن است از پروتکل قدیمی استفاده نمایند. لذا پس از نصب آپدیت بالا، با مراجعه به Event Viewer در DC و بررسی لاگ‌های Security ویندوز، سیستم‌هایی را که از ارتباطات ناسازگار و غیر امن جهت برقراری ارتباط با DC استفاده می‌کنند را پیدا کنید. برای این کار می‌توانید رخدادهای با شناسه event id 5829 را فیلتر کرده و بررسی کنید.
    با اجرای اسکریپت زیر بر روی لاگ‌های جمع‌آوری شده می‌توانید تمامی سیستم هایی که از ارتباطات ناسازگار و غیر امن جهت اتصال به DC استفاده می‌کنند را شناسایی نمایید:
    https://support.microsoft.com/en-us/help/4557233/script-to-help-in-monitoring-event-ids-related-to-changes-in-netlogon
  3. رفع: در مرحله بعد نیاز است تا نسبت به بروزرسانی سیستم‌های یافته شده در مراحل قبل به آخرین نسخه  اقدام فرمایید، یا اینکه آنها را در لیست استثنائات Group Policy قرار دهید که طبعا باعث ناامن ماندن آنها خواهد شد.
  4. فعال‌سازی کامل: فعالسازی گزینه Enforcement Mode جهت فعال نمودن محافظت کامل، و جلوگیری از ارتباطات ناامن.
    برای این موضوع باید در مسیر  HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters مقداری از نوع DWORD و با نام FullSecureChannelProtection ساخته و آن را برابر با ۱ قرار دهید.

لازم به ذکر است که به گفته مایکروسافت، یک وصله نهایی برای این آسیب پذیری در ۳ ماهه ابتدایی سال ۲۰۲۱ ارائه خواهد شد که برای برطرف شدن کامل خطرات این آسیب‌پذیری، نصب آن وصله نیز ضروری می‌باشد.

پادویش چگونه جلوی این آسیب‌پذیری را می‌گیرد؟

اگر چه نصب وصله تنها راه مطمئن و قطعی جلوگیری از آسیب‌پذیری می‌باشد، و باید حتما انجام گیرد، اما آنتی‌ویروس پادویش با استفاده از ویژگی جلوگیری از نفوذ (IPS) اقدام به شناسایی و جلوگیری از ارتباطات برقراری شده با استفاده از اطلاعات هویتی که تمامی بایت های آن با صفر مقدار گذاری شده باشند می‌نماید. شما می‌توانید جهت مشاهده لاگ‌های مربوط به این حمله که پادویش آن‌را با نام Exploit.ZeroLogon.Possibility شناسایی و جلوگیری می‌کند و همچنین سیستم‌هایی که احتمالا در حال حمله به سرور DC شبکه می‌باشند به سربرگ جلوگیری از نفوذ گزارشات آنتی‌ویروس مراجعه بفرمایید.