در یک شبکه سازمانی، سرقت رمز عبور تنها راه سوءاستفاده از یک حساب کاربری نیست. در برخی محیط‌های Windows، مهاجم اگر بتواند Hash رمز عبور یک حساب را به دست آورد، ممکن است بدون دانستن رمز عبور اصلی از همان Hash برای احراز هویت در سیستم‌های دیگر استفاده کند. این تکنیک با نام Pass the Hash (PtH) شناخته می‌شود. در حمله Pass the Hash، مهاجم به‌جای اینکه رمز عبور واقعی کاربر را داشته باشد، از اطلاعات احراز هویت به‌دست‌آمده برای انجام Authentication استفاده می‌کند. بنابراین حتی اگر مهاجم هرگز رمز عبور واقعی را ندیده باشد، در شرایطی که سیستم مقصد احراز هویت سازگار با این روش را بپذیرد، می‌تواند با هویت حساب موردنظر به منابع دیگری دسترسی پیدا کند.

خطر اصلی زمانی بیشتر می‌شود که Hash متعلق به یک حساب دارای دسترسی بالا باشد. در این حالت، یک سیستم آلوده می‌تواند به نقطه شروعی برای حرکت جانبی (Lateral Movement) در شبکه تبدیل شود.

 

Pass the Hash چگونه کار می‌کند؟

برای درک حمله Pass-the-Hash، یک سناریوی ساده را در نظر بگیریم.

فرض کنید یک مهاجم ابتدا به یک سیستم Windows در شبکه دسترسی پیدا کرده است. در این مرحله، مهاجم هنوز رمز عبور حساب‌های دیگر را در اختیار ندارد؛ اما اگر بتواند اطلاعات احراز هویت یک حساب را از سیستم به دست آورد، ممکن است بتواند از آن برای دسترسی به سیستم‌های دیگر استفاده کند.

فرض کنیم مهاجم به Hash مربوط به یک حساب کاربری دسترسی پیدا کرده است.

در یک احراز هویت معمول، کاربر با استفاده از اعتبارنامه خود به سیستم یا سرویس مقصد احراز هویت می‌کند:

نام کاربری + رمز عبور احراز هویت سیستم مقصد

اما در Pass the Hash، مهاجم به‌جای استفاده از رمز عبور اصلی، از Hash  سرقت‌شده در فرآیند احراز هویت استفاده می‌کند:

سیستم آلوده سرقت Hash  → استفاده از هش احراز هویت در سیستم دیگر

بنابراین مهاجم حتما نیازی ندارد رمز عبور واقعی را بداند یا آن را Crack کند. اگر شرایط احراز هویت و سرویس مقصد اجازه دهد، همان اطلاعات سرقت‌شده می‌تواند برای Authentication مورد استفاده قرار گیرد.

 

مهاجم Hash را از کجا به دست می‌آورد؟

این اطلاعات معمولاً پس از آن در اختیار مهاجم قرار می‌گیرد که او به یک سیستم Windows دسترسی پیدا کرده باشد. برای مثال:

  • آلوده شدن سیستم یک کاربر
  • به‌دست آوردن دسترسی Local Administrator
  • Compromise شدن یک Server
  • دسترسی به اطلاعات احراز هویت ذخیره‌شده یا موجود در یک سیستم
  • وجود Credential یک حساب Privileged روی سیستم آلوده

نکته مهم این است که به‌دست آوردن Hash با Crack کردن آن تفاوت دارد.

در Hash Cracking، هدف مهاجم پیدا کردن رمز عبور اصلی از روی Hash است.

اما در حمله Pass the Hash، مهاجم می‌تواند تلاش کند خود Hash سرقت‌شده را به‌عنوان اطلاعات احراز هویت استفاده کند و بدون دانستن رمز عبور واقعی به سیستم دیگری دسترسی پیدا کند.

به همین دلیل، Pass the Hash بیشتر از آنکه یک روش برای «پیدا کردن رمز عبور» باشد، روشی برای سوءاستفاده از Credential سرقت‌شده است.

 

سناریوی واقعی از حمله Pass the Hash

فرض کنیم یک سازمان چنین ساختاری دارد:

  • User PC
  • File Server
  • Application Server
  • Domain Controller

یک کاربر عادی روی سیستم خود فعالیت می‌کند. مهاجم ابتدا این سیستم را آلوده کرده و به آن دسترسی پیدا می‌کند.

در این مرحله، مهاجم هنوز دسترسی مدیریتی به شبکه ندارد. اما اگر بتواند اطلاعات احراز هویت یک حساب دارای دسترسی مناسب را از سیستم به دست آورد، ممکن است بتواند از آن برای دسترسی به سیستم‌های دیگر استفاده کند.

فرض کنیم مهاجم به Hash یک حساب مدیریتی دسترسی پیدا کرده است.

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

اگر احراز هویت موفق باشد و این حساب روی File Server دسترسی مدیریتی داشته باشد، مهاجم می‌تواند از همین دسترسی برای ادامه فعالیت خود استفاده کند.

برای مثال ممکن است مسیر حمله به شکل زیر ادامه پیدا کند:

User PC → File Server → Application Server

این جابه‌جایی از یک سیستم به سیستم دیگر، نمونه‌ای از Lateral Movement یا حرکت جانبی در شبکه است.

بنابراین در این سناریو، Pass the Hash خودش «حرکت جانبی» نیست؛ بلکه می‌تواند یکی از روش‌هایی باشد که مهاجم برای انجام حرکت جانبی از آن استفاده می‌کند.

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

 

چرا Pass the Hash برای شبکه‌های سازمانی خطرناک است؟

خطر اصلی این حمله فقط سرقت یک Credential نیست.

مشکل زمانی ایجاد می‌شود که یک Credential در چند نقطه قابل استفاده باشد.

فرض کنید یک Local Administrator روی ۵۰ سیستم سازمانی، Password یکسانی داشته باشد.

اگر مهاجم بتواند Credential مربوط به آن حساب را از یکی از سیستم‌ها به دست آورد، تعداد زیادی سیستم بالقوه در معرض خطر قرار می‌گیرند.

در این شرایط:

  • یک Credential
  • چند سیستم
  • دسترسی بیشتر
  • حرکت جانبی

بنابراین استفاده مجدد از Credentialها می‌تواند دامنه اثر یک Compromise را به‌طور قابل توجهی افزایش دهد.

مایکروسافت نیز در راهکارهای مقابله با حملات Pass the Hash بر کاهش امکان استفاده مجدد از Credentialهای سرقت‌شده و محدود کردن مسیر حرکت مهاجم تأکید کرده است.

 

Pass the Hashچه تفاوتی با Pass the Ticket دارد؟

این دو تکنیک به هم نزدیک هستند، اما یکسان نیستند.

در Pass the Hash مهاجم از Hash سرقت‌شده برای Authentication استفاده می‌کند.

در Pass the Ticket مهاجم از یک Kerberos Ticket معتبر که قبلاً به دست آورده است برای Authentication استفاده می‌کند.

 

شناسایی حمله Pass the Hash

برای شناسایی حمله Pass the Hash معمولاً با پیدا کردن یک نشانه مشخص انجام نمی‌شود. تیم امنیت باید رفتار حساب‌های کاربری و سیستم‌ها را بررسی کند و ببیند آیا الگوی احراز هویت با فعالیت معمول آن‌ها مطابقت دارد یا خیر.

 

NTLM چه ارتباطی با Pass the Hash دارد؟

NTLM (NT LAN Manager) یکی از روش‌های احراز هویت در محیط Windows است. در حمله Pass the Hash، مهاجم از اطلاعات احراز هویت مرتبط با NTLM که به دست آورده است، به‌جای دانستن رمز عبور واقعی استفاده می‌کند.

به همین دلیل، بررسی Authenticationهای NTLM می‌تواند در شناسایی این حمله مفید باشد.

مثال عملی:

فرض کنید حساب admin-helpdesk معمولاً فقط از سیستم‌های واحد Help Desk استفاده می‌شود.

در حالت عادی ممکن است این حساب چنین فعالیتی داشته باشد:

PC-Helpdesk → Server-01

اما اگر در مدت کوتاهی همان حساب از یک سیستم غیرمنتظره به چند Server مختلف متصل شود، این رفتار باید بررسی شود:

Unknown-PC → Server-01 (سیستم ناشناس)

Unknown-PC → Server-02

Unknown-PC → Server-DC

در این مرحله هنوز نمی‌توان گفت حمله Pass the Hash اتفاق افتاده است. تیم امنیت باید اطلاعات بیشتری را کنار هم قرار دهد؛ برای مثال:

  • حساب کاربری مورد استفاده
  • سیستم مبدأ و IP آن
  • سیستم مقصد
  • زمان احراز هویت
  • نوع Logon
  • Authentication Package
  • فعالیت Processهای مرتبط روی سیستم مبدأ

برای مثال، Event ID 4624 در لاگ امنیتی ویندوز، اطلاعاتی درباره ورود موفق کاربران مانند نام حساب، سیستم مبدأ، نوع ورود و روش احراز هویت ثبت می‌کند. تیم امنیت می‌تواند با بررسی این اطلاعات، Loginهای غیرعادی را شناسایی و با سایر رویدادها مقایسه کند.

حالا فرض کنید همان حساب، در یک بازه کوتاه، از یک سیستم غیرمعمول با NTLM احراز هویت کرده و هم‌زمان روی سیستم مبدأ نیز فعالیت مشکوکی مشاهده شده است. در این شرایط، احتمال به‌خطر افتادن Credential بیشتر می‌شود و بررسی دقیق‌تری لازم است.

نکته مهم این است که هر NTLM Authentication نشانه Pass the Hash نیست. NTLM می‌تواند برای فعالیت‌های عادی نیز استفاده شود. چیزی که اهمیت دارد، کنار هم قرار گرفتن چند نشانه و مقایسه آن‌ها با رفتار معمول حساب و سیستم است.

به همین دلیل، شناسایی Pass the Hash بیشتر از اینکه به دنبال «یک لاگ خاص» باشد، به دنبال پیدا کردن الگوی غیرعادی در Authentication و ارتباط آن با سایر فعالیت‌های مشکوک است.

 

چگونه از حمله Pass-the-Hash جلوگیری کنیم؟

هیچ کنترل امنیتی به‌تنهایی تمام ریسک حمله Pass the Hash را از بین نمی‌برد. راهکار مناسب، ترکیبی از Credential Protection، محدودسازی دسترسی و کنترل حرکت جانبی است.

 

1. استفاده نکردن از یک Password مشترک برای Local Administratorها

اگر یک Local Administrator روی تعداد زیادی سیستم Password یکسان داشته باشد، Compromise شدن یک سیستم می‌تواند ریسک سیستم‌های دیگر را افزایش دهد.

به همین دلیل Password حساب‌های Local Administrator باید به‌صورت جداگانه و مدیریت‌شده باشند.

یکی از راهکارهای شناخته‌شده در محیط ویندوز، Windows LAPS است که برای مدیریت خودکار Password حساب‌های Local Administrator استفاده می‌شود.

مایکروسافت نیز LAPS را به‌عنوان یکی از قابلیت‌های مرتبط با کاهش ریسک Credential Theft (سرقت اطلاعات کاربری) و  Pass the Hash معرفی کرده است.

 

2. استفاده از حساب‌های Privileged فقط در سیستم‌های مورداعتماد

حساب‌های مدیریتی نباید برای فعالیت‌های روزمره مانند Email، Web Browsing یا کار با فایل‌ها استفاده شوند. همچنین بهتر است Login حساب‌های Privileged به Workstationهای عادی محدود شود.

برای مثال، اگر Domain Administrator روی یک Workstation معمولی Login کند و آن سیستم بعداً آلوده شود، Credential این حساب نیز ممکن است در معرض خطر قرار بگیرد.

بنابراین باید مشخص باشد کدام حساب، روی کدام سیستم و برای چه کاری اجازه Login دارد.

 

3. استفاده از Credential Guard در محیط‌های سازگار

Windows Defender Credential Guard با استفاده از قابلیت‌های امنیتی مبتنی بر Virtualization، برای محافظت از اطلاعات احراز هویت در برابر برخی روش‌های Credential Theft طراحی شده است.

مایکروسافت در راهنمای فعلی خود نیز Credential Guard را در کنار کاهش NTLM به‌عنوان یکی از اقدامات مقابله با Pass the Hash مطرح می‌کند.

البته فعال‌سازی آن باید با توجه به نسخه Windows، سازگاری نرم‌افزارها و معماری سازمان بررسی شود.

 

4. کاهش وابستگی به NTLM

Pass the Hash در محیط‌های Windows ارتباط نزدیکی با استفاده از NTLM و اطلاعات احراز هویت مرتبط با آن دارد.

بنابراین سازمان‌ها باید مشخص کنند:

  • کجا NTLM استفاده می‌شود؟
  • آیا سرویس جایگزین وجود دارد؟
  • کدام Applicationها هنوز به NTLM وابسته‌اند؟
  • آیا امکان کاهش یا حذف NTLM وجود دارد؟

مایکروسافت در راهنمای امنیتی به‌روز خود نیز کاهش یا غیرفعال کردن NTLM در صورت امکان را همراه با Credential Guard به‌عنوان یکی از اقدامات مقابله با Pass the Hash پیشنهاد می‌کند.

البته حذف NTLM بدون بررسی Dependencyها می‌تواند باعث اختلال در سرویس‌های قدیمی شود؛ بنابراین این کار باید مرحله‌ای و همراه با Monitoring انجام شود.

 

5. محدود کردن حرکت جانبی با Segmentation

حتی اگر یک Credential سرقت شود، نباید مهاجم بتواند با استفاده از آن به تمام بخش‌های شبکه دسترسی پیدا کند. محدود کردن ارتباط میان Workstationها، Serverها و منابع حساس باعث می‌شود دامنه استفاده از Credential سرقت‌شده کاهش پیدا کند.

برای مثال، اگر User VLAN به Database Server نیازی ندارد، این ارتباط نباید صرفاً به دلیل «داخلی بودن شبکه» مجاز باشد.

این محدودیت‌ها باعث می‌شوند Compromise شدن یک Workstation الزاماً به دسترسی گسترده به سایر سیستم‌ها تبدیل نشود.

 

آیا تغییر رمز عبور می‌تواند حمله PtH را متوقف کند؟

تغییر پسورد می‌تواند Credential قبلی را بی‌اعتبار کند، اما نباید آن را تنها راهکار مقابله با Pass the Hash در نظر گرفت.

فرض کنید Hash یک حساب در اختیار مهاجم قرار گرفته و سازمان فقط Password همان حساب را تغییر می‌دهد.

اگر:

  • حساب‌های مشابه دیگری با Password مشترک وجود داشته باشند،
  • مهاجم هنوز روی سیستم آلوده دسترسی داشته باشد،
  • یا Credentialهای دیگری نیز در معرض خطر باشند،

مشکل ممکن است ادامه پیدا کند.

به همین دلیل هنگام مشاهده نشانه‌های  Credential Theft، باید علاوه بر تغییر Credential، منبع آلودگی، سیستم‌های درگیر، حساب‌های استفاده‌شده و مسیر احتمالی حرکت مهاجم نیز بررسی شوند.

 

یک اشتباه رایج: فقط روی Domain Administrator تمرکز نکنید

بعضی سازمان‌ها تصور می‌کنند اگر Credentialهای Domain Administrator محافظت شوند، حمله Pass the Hash دیگر خطر جدی ندارد.

اما مهاجم همیشه از بالاترین سطح شروع نمی‌کند.

فرض کنید یک Local Administrator روی چندین Server دسترسی دارد.

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

بنابراین باید تمام حساب‌های Privileged، نه فقط Domain Administrator، تحت کنترل باشند.

 

جمع ‌بندی

حمله Pass the Hash نشان می‌دهد که محافظت از Password به‌تنهایی برای جلوگیری از سوءاستفاده از Credentialها کافی نیست. در این حمله، مهاجم از Hash سرقت‌شده برای احراز هویت استفاده می‌کند و در شرایط مناسب می‌تواند با هویت حساب موردنظر به سیستم دیگری دسترسی پیدا کند.

ریسک حمله زمانی بیشتر می‌شود که Credentialهای Privileged روی سیستم‌های متعدد قابل استفاده باشند یا حساب موردنظر دسترسی گسترده‌ای در شبکه داشته باشد.

به همین دلیل، مقابله با Pass the Hash باید هم‌زمان شامل مدیریت Credentialها، محدود کردن حساب‌های Privileged، استفاده از LAPS، محافظت از Credentialها، کاهش وابستگی به NTLM، مانیتورینگ Authentication و کنترل حرکت جانبی باشد.

هدف فقط جلوگیری از سرقت یک Hash نیست؛ هدف این است که اگر یک Credential هم سرقت شد، مهاجم نتواند با استفاده از آن به‌راحتی در شبکه گسترش پیدا کند.