آنچه در این مقاله میخوانیم
افزایش سرعت جستوجوی NetNTLMv1 بدون استفاده از GPU
این مقاله بخشی از مجموعه پژوهشهای تخصصی تیم ما است؛ پژوهشهایی که متخصصان امنیت تهاجمی Sophos انجام میدهند تا خدمات تشخیص و پاسخ مدیریتشده (MDR) را تقویت کنند و از مشتریان در برابر تهدیدهای در حال تحول عصر هوش مصنوعی محافظت کنند.
حملات سایبری معمولاً به دلیل استفاده از یک تکنیک هوشمندانه بهتنهایی موفق نمیشوند. در بیشتر موارد، مهاجمان زمانی موفق میشوند که بتوانند فرضیات امنیتی، میانبرها و سازوکارهای قدیمیای را پیدا کنند که سازمانها طی سالها در زیرساخت خود انباشته کردهاند.
این ضعفها همیشه واضح نیستند؛ بلکه ممکن است سالها در محیط سازمان باقی بمانند و از ارتقاهای نرمافزاری، مهاجرتهای سیستمی و بررسیهای کد عبور کنند.
بهعنوان اعضای تیم Red Team، یکی از ارزشمندترین یافتهها زمانی به دست میآید که فناوریای را شناسایی کنیم که دیگر با الزامات امنیتی مدرن سازگار نیست.
یک پروتکل منسوخ، یک تنظیمات فراموششده، یک وابستگی قدیمی یا یک تصمیم طراحی اشتباه، همگی میتوانند فرصتی برای مهاجمان ایجاد کنند.
شناخت این خطرها به سازمانها کمک میکند تا اقدامات اصلاحی را در نقاطی انجام دهند که بیشترین تأثیر را در کاهش آسیبپذیریها و کوچکتر کردن سطح حمله دارند.
این مقاله یکی از همین نمونهها را بررسی میکند و توضیح میدهد چگونه مکانیزمهای قدیمی احراز هویت میتوانند در محیطهای مدرن ضعفهای قابل سوءاستفاده ایجاد کنند؛ تا مدافعان امنیتی بتوانند پیش از مهاجمان آنها را شناسایی کنند.
پروتکلی که حاضر نیست از بین برود
NetNTLMv1 چیست؟
NetNTLMv1 که نام رسمی آن NTLMv1 Challenge-Response Protocol است، یک پروتکل قدیمی احراز هویت مایکروسافت است که برای تأیید هویت کاربر طراحی شده بود، بدون اینکه رمز عبور واقعی او را از طریق شبکه ارسال کند.
NetNTLMv1 در واقع به دادههایی اشاره دارد که هنگام فرآیند ورود کاربر در شبکه منتقل میشوند.
امروزه NetNTLMv1 یک فناوری منسوخ و پرخطر محسوب میشود؛ زیرا دو ضعف اصلی در طراحی آن وجود دارد:
۱. رمزنگاری ضعیف (DES)
NetNTLMv1 برای رمزگذاری از کلیدهای DES با طول ۵۶ بیت استفاده میکند.
از آنجا که رمزنگاری ۵۶ بیتی از نظر ریاضی ضعیف است، مهاجمی که بتواند پاسخ NetNTLMv1 را از شبکه دریافت کند، میتواند کلیدهای DES را بازیابی کند و مستقیماً به NT Hash اصلی کاربر دست پیدا کند.
این موضوع به طول یا پیچیدگی رمز عبور کاربر وابسته نیست.
۲. حملات قابل پیشبینی و از پیش محاسبهشده
با استفاده از ابزارهایی مانند جدولهای جستوجوی از پیش محاسبهشده (Rainbow Tables)، مهاجمی که کنترل Challenge سرور را در اختیار دارد، میتواند پاسخ کلاینت را در چند ثانیه جستوجو کند و کلیدهای مخفی کاربر را استخراج کند.
NetNTLMv1 همچنان در تستهای نفوذ یک یافته ارزشمند محسوب میشود؛ زیرا هنوز در بسیاری از محیطهای Active Directory دیده میشود.
دلایل باقی ماندن آن شامل موارد زیر است:
- سیستمهای قدیمی
- میزبانهایی با تنظیمات اشتباه
- تجهیزات قدیمی شبکه
- کنترلکنندههای دامنهای که سالها بدون تغییر باقی ماندهاند
با وجود قدمت زیاد و امنیت پایین، کارشناسان Sophos هنوز در ارزیابیهای واقعی با NetNTLMv1 مواجه میشوند.
در هزاران تست نفوذ و عملیات Red Team، فرصتهای کاهش سطح امنیت (Downgrade) به NetNTLMv1 همچنان رایج هستند و مشاهده یک Hash نسخه v1 یکی از یافتههای مورد علاقه متخصصان این حوزه است.
مسیر حمله NetNTLMv1
این مسیر حمله برای افرادی که شبکههای داخلی را آزمایش کردهاند آشنا است:
۱.
مهاجم یک هدف (ترجیحاً یک Domain Controller) را مجبور میکند که به سمت او احراز هویت انجام دهد.
۲.
مهاجم مذاکره احراز هویت را به NetNTLMv1 کاهش میدهد؛ یعنی به جای استفاده از یک پروتکل قویتر، یک Server Challenge مشخص ارائه میکند.
ابزارها و روشهایی مانند:
- PetitPotam
- PrinterBug
- Coercer
- مسمومسازی Name Resolution
همگی میتوانند به همین نتیجه برسند.
۳.
اگر Challenge ثابت زیر استفاده شود:
پاسخ دیگر چیزی نیست که نیاز باشد مهاجم آن را با Brute Force امتحان کند؛ بلکه تبدیل به دادهای میشود که میتوان آن را در جدول جستوجو پیدا کرد.
چرا این حمله امکانپذیر است؟
دلیل اصلی این موضوع استفاده NetNTLMv1 از DES با کلید ۵۶ بیتی است.
DES امروزه با الگوریتمهای مدرنتر مانند AES جایگزین شده است که از کلیدهای:
- ۱۲۸ بیتی
- ۱۹۲ بیتی
- ۲۵۶ بیتی
پشتیبانی میکند.
فرآیند کار NetNTLMv1 به این شکل است:
۱.
پاسخ NetNTLMv1 از NT Hash قربانی استفاده میکند.
۲.
Hash را تا ۲۱ بایت افزایش میدهد و آن را به سه بخش ۷ بایتی تقسیم میکند.
۳.
هر بخش ۷ بایتی را به عنوان کلید DES استفاده میکند تا همان Challenge هشتبایتی سرور را رمزگذاری کند.
۴.
وقتی Challenge ثابت و مشخص باشد، بازیابی NT Hash تبدیل به سه مسئله مستقل بازیابی کلید DES با متن اصلی مشخص میشود.
۵.
بخش سوم بسیار ساده است؛ زیرا Padding باعث میشود فقط ۲ بایت اطلاعات واقعی باقی بماند.
یعنی فقط:
وجود دارد.
۶.
پردازندههای مدرن میتوانند این بخش را تقریباً بلافاصله بازیابی کنند.
دو بخش اول هر کدام فضای کامل کلید DES با طول ۵۶ بیت را دارند.
ورود Rainbow Table به ماجرا
اینجا است که Rainbow Table وارد بازی میشود.
Rainbow Table چیست؟
Rainbow Table یک فایل بزرگ از پیش ساختهشده است که برای معکوس کردن Hashهای رمزنگاریشده استفاده میشود.
به جای اینکه مهاجم هر رمز احتمالی را در لحظه محاسبه کند، از این پایگاه داده آماده استفاده میکند تا Hashهای سرقتشده بدون Salt را به رمز اصلی تبدیل کند.
در سیستمهای مدرن، Hashهای رمز عبور معمولاً با یک مقدار تصادفی منحصربهفرد (Salt) ترکیب میشوند؛ بنابراین مهاجم نمیتواند از یک جدول آماده برای همه Hashها استفاده کند و باید هر Hash را جداگانه بررسی کند.
جدولهای Rainbow مربوط به NetNTLMv1
در سال ۲۰۲۶، شرکت Mandiant مجموعه کامل Rainbow Table مربوط به DES در NetNTLMv1 را برای حالت Challenge ثابت منتشر کرد.
این مجموعه شامل:
- ۴۰۹۶ فایل
- هر فایل حدود ۲ گیگابایت
- مجموعاً حدود ۹ ترابایت داده
است.
این جدولها کل فضای کلید:
را پوشش میدهند.
هر زنجیره حدود:
دارد و هر جدول تقریباً:
را شامل میشود.
با داشتن یک پاسخ NetNTLMv1 ضبطشده، این جدولها میتوانند دو کلید DES مورد نیاز برای بازسازی NT Hash را پیدا کنند.








