نرمافزار Microsoft Access دارای یک ویژگی به نام "لینک دادن به جداول SQL Server از راه دور" میباشد. این ویژگی میتواند توسط مهاجمان جهت افشای خودکار توکنهای NTLM ویندوز به یک سرور تحت کنترل مهاجم سوءاستفاده شود که این امر از طریق هر پورت TCP مانند پورت 80 قابل انجام است. حمله میتواند صرفاً با باز کردن یک فایل با پسوند accdb یا mdb توسط قربانی انجام شود. در واقع هرگونه فایل رایجتر آفیس مانند یک فایل rtf نیز در این روش قابل بهرهبرداری است. این تکنیک به مهاجم اجازه میدهد اکثر قوانین فایروال در جلوگیری از سرقت اطلاعات NTLM را دور بزند.
NTLM یک پروتکل منسوخ شده تصدیق هویت است که در سال 1993 توسط مایکروسافت منتشر شد که از نوع challenge-response میباشد و در آن سرور یک NTLM hash مخفی را که از روی کلمه عبور کاربر مشتق شده است نگه میدارد و هر زمان که کاربر بخواهد وارد سیستم شود، سرور یک چالش تصادفی ایجاد کرده و کاربر از کلمه عبور برای محاسبه پاسخ صحیح استفاده میکند. رایجترین حملات NTLM به شرح ذیل میباشند:
• حمله بروت فورس از ضعف موجود در تابع هش NTLM استفاده میکند تا کلمه عبور اصلی را از هش NTLM ذخیره شده روی سرور بازیابی کند.
• حمله pass-the-hash از این موضوع که هش NTLM برای دادن پاسخ صحیح به چالشها کافی است بهرهبرداری میکند و اینکه از هش به جای خود پسورد استفاده میشود را بی فایده میسازد.
• حمله relay نوعی حمله Man in the Middle است در آن مهاجم یک تراکنش handshake را از پیش گرفته و خود را به جای کلاینت و سرور جا میزند و پیامهای آنها را برای یکدیگر ارسال میکند تا جایی که تصدیق هویت انجام شود و پس از آن مهاجم ارتباط کلاینت اصلی را قطع کرده و بقیه ارتباط را خودش ادامه میدهد.
خوشبختانه میتوان با بلاک کردن ترافیک outbound در پورتهای استفاده شده توسط پروتکل NTLM یعنی 445 و 139 حملات فوق را بسیار سخت نمود.
قبل از اینکه توضیح داده شود که چگونه هکرها از این ویژگی بهرهبردرای میکنند، باید توضیح داد که این ویژگی در حالت عادی چگونه کار میکند. کاربران به کمک ویژگی linked tables میتوانند به یک پایگاه داده خارجی مانند Microsoft SQL server متصل شوند. برای فعالسازی این ویژگی کاربر میتواند مطابق شکل زیر بر روی دکمه ODBC Database در زیر تب External Data کلیک کند. در اینجا از آفیس 2010 استفاده شده است، اما در تمام نسخههای آفیس مشابه است.
مایکروسافت اکسس یک پیشنهاد میدهد که جدول یک بار دانلود شود و نتیجه به عنوان یک جدول محلی استفاده شود. برای استفاده از ویژگی linking و sync شدن با یک پایگاه داده از راه دور، کاربر معمولاً گزینه دوم را به صورت زیر انتخاب میکند:
سپس کاربر گزینه SQL Server را به عنوان منبع ODBC انتخاب میکند:
در مرحله بعدی کاربر باید یک روش برای تصدیق هویت با سرور راه دور انتخاب کند که در شکل زیر قابل مشاهده است:
یک کاربر عادی معمولاً از روش تصدیق هویت پشتیبانی شده توسط سرور استفاده میکند اما فرض کنید کاربر از ابزارهای تایید هویت (credentials) ویندوز خودش جهت تصدیق هویت استفاده کند. همچنین کاربر معمولاً قسمت پورت را وارد نمیکند و از مقدار پیشفرض 1433 استفاده میکند؛ اما فرض کنید کاربر یک پورت غیر رایج یعنی 80 را برای این کار وارد کند. در اینجا چیزی مانع نمیشود که از پورت 80 برای اتصال به سرور SQL server استفاده کنیم.
با فرض اینکه تصدیق هویت با سرور SQL راه دور موفقیت آمیز باشد و جدول مورد نظر وجود داشته باشد، یک ردیف جدید در لیست جداول در دسترس قرار میگیرد که نشاندهنده جدول لینک شده است. وقتی که کاربر روی آن کلیک میکند، یک اتصال با پایگاه داده راه دور برقرار میشود و مایکروسافت اکسس تلاش میکند با سرور پایگاه داده تصدیق هویت انجام دهد.
مهاجم میتواند سروری را راهاندازی کند که کاملاً تحت کنترل وی میباشد، سپس در پورت 80، آدرس IP خود را در بالای فیلد server alias قرار دهد. وی میتواند فایل دیتابیس شامل linked table را برای قربانی ارسال کند. اگر قربانی فایل را باز کرده و روی جدول کلیک کند، قربانی با سرور مهاجم ارتباط برقرار کرده و سعی میکند تصدیق هویت انجام دهد. سرور مهاجم میتواند در این لحظه حمله خود را آغاز کند، یعنی یک فرآیند تصدیق هویت را با یک سرور NTLM در داخل سازمان قربانی شروع و یک چالش دریافت کند، سپس آن چالش را به عنوان بخشی از فرآیند تصدیق هویت بین کلاینت قربانی و سرور مهاجم برای قربانی ارسال کند، یک پاسخ معتبر را دریافت کرده و سپس آن پاسخ را برای تصدیق هویت موفق بین سرور مهاجم و سرور سازمان استفاده نماید. به عبارت دیگر تصدیق هویت با استفاده از NTLMSSP در پوشش TDS انجام میشود.
در سناریوی فوق راضی کردن قربانی به باز کردن یک فایل اکسس کار سادهای است اما کلیک کردن بر روی پایگاه داده نیز همینطور میباشد؟ در اینجا باید گفت که مایکروسافت اکسس از ماکروها پشتیبانی میکند و مهاجم میتواند یک ماکرو بنویسد که به طور خودکار جدول پایگاه داده لینک شده را باز کند. این کار با تعیین نام ماکرو به AutoExec قابل انجام است که در شکل زیر قابل مشاهده است.
اما با توجه به آن که مایکروسافت در سال گذشته یک ویژگی امنیتی جدید برای این سناریو معرفی کرد آیا این کار بی فایده است؟ باید پاسخ داد خیر؛ زیرا این ویژگی شامل ماکروهای مایکروسافت اکسس نمیشود. اینها با VBA کاملاً متفاوت هستند و دارای قابلیتهای ضعیفتری میباشند. حتی ویژگی نه چندان موثر “protected view” از سال 2010 که یک نوار زرد رنگ را بالای سند نمایش میدهد و حاکی از ناامن بودن سند میباشد و از کاربر میخواهد ماکروها را فعال کند در اینجا موثر نیست. این pop up وقتی که ماکروهای ساده به طور خودکار اجرا میشوند نمایش داده نمیشود. مایکروسافت اکسس به عنوان یک سرور OLE linking در ویندوز ثبت شده است. به عنوان مثال یک نفر ممکن است یک فایل عکس را در یک سند Word قرار دهد و وقتی سند باز شد، MS-Paint به آن تصویر رسیدگی میکند و اطلاعات را برای نمایش عکس به Word میفرستد.
به همین صورت میتوان یک فایل accdb را داخل یک فایل ورد به صورت یک OLE object قرار داد که به طور خودکار دانلود شود (حتی روی پورت 80 پروتکل TCP) و سپس توسط مایکروسافت اکسس پردازش شود. مانند رشته موجود در تصویر زیر:
توصیه امنیتی
• استفاده از یک سیستم جلوگیری از نفوذ که دارای “Microsoft Windows NTLM Information Disclosure” میباشد.
• استفاده از آنتیویروس که فایلهای accdb دارای object های منجر به نشت NTLM را به عنوان ویروس یا تروجان شناسایی میکند.
• غیر فعال کردن ماکروها در مایکروسافت اکسس و یا اگر در سازمان شما از ماکروها استفاده نمیشود میتوانید آنها را از روی سیستمها حذف کنید.
• باز نکردن فایلهای پیوست از منابع غیر قابل اعتماد.
در تستهای انجام شده با کمک Office 2021 (Current Channel, version 2306, build 16529.20182) مشخص گردید که مایکروسافت این مشکل امنیتی را مورد توجه قرار داده است و هشدار زیر به برای کاربر نمایش میدهد:
حتی در صورت مشاهده پیام خطای فوق نباید بر روی OK یا دکمه X برای بستن پیام کلیک کنید! در صورت مشاهده پیغام خطای فوق باید MSACCESS.EXE را از Windows Task Manager ببندید تا از ادامه بهرهبرداری جلوگیری کنید!
منبع خبر:
https://research.checkpoint.com/2023/abusing-microsoft-access-linked-table-feature-to-perform-ntlm-…