حمله Kerberoasting چیست؟ روش حمله، شناسایی و مقابله

در بسیاری از سازمانها، سرویسها و برنامههای مختلف با حسابهای کاربری مخصوصی در Active Directory اجرا میشوند. اگر این حسابها بهدرستی مدیریت نشوند، میتوانند به یکی از اهداف مهاجمان برای سرقت اعتبارنامه تبدیل شوند. حمله Kerberoasting یکی از تکنیکهایی است که با سوءاستفاده از نحوه کار Kerberos و Service Accountها، امکان هدف قرار دادن رمز عبور این حسابها را فراهم میکند.
حمله Kerberoasting چیست؟
Kerberoasting Attack یکی از تکنیکهای سرقت اعتبارنامه در محیطهای مبتنی بر Active Directory و Kerberos است که هدف آن معمولاً بهدست آوردن رمز عبور حسابهای سرویس است.
در شبکههای سازمانی، بعضی سرویسها مانند نرمافزارهای سازمانی، Database یا سرویسهای تحت شبکه با یک حساب کاربری مشخص اجرا میشوند. به این حسابها Service Account گفته میشود.
برای اینکه Kerberos بتواند یک سرویس را در شبکه شناسایی کند، معمولاً برای آن یک شناسه به نام Service Principal Name (SPN) ثبت میشود. کاربری که در دامنه احراز هویت شده باشد، میتواند برای سرویس دارای SPN یک Service Ticket درخواست کند.
اینجا نقطهای است که حمله Kerberoasting اهمیت پیدا میکند. مهاجم در صورت داشتن دسترسی لازم در دامنه، میتواند Service Ticket مربوط به برخی حسابهای سرویس را درخواست کند و اطلاعات مربوط به آن را دریافت کند. سپس میتواند این اطلاعات را خارج از شبکه و بهصورت آفلاین بررسی کند تا رمز عبور حساب سرویس را حدس بزند.
در واقع، مهاجم بهجای اینکه مستقیماً رمز عبور را از Domain Controller بگیرد، یک Ticket دریافت میکند و بعد تلاش میکند رمز عبوری را که Ticket با آن محافظت شده، بهصورت آفلاین پیدا کند.
اگر حساب سرویس رمز عبور ضعیف یا قابل حدس داشته باشد، احتمال موفقیت حمله بیشتر میشود. در صورت بهدستآمدن رمز عبور، مهاجم ممکن است بتواند به سرویس مربوطه دسترسی پیدا کند و در شرایطی از آن برای گسترش دسترسی خود در شبکه استفاده کند.
نکته مهم: Kerberoasting Attack به این معنی نیست که Kerberos خودش آسیبپذیر است؛ مهاجم از نحوه استفاده از Service Accountها و Service Ticketها در محیط Active Directory سوءاستفاده میکند.
Kerberos و SPN چه نقشی در این حمله دارند؟
کاربر دامنه → درخواست Service Ticket → Kerberos → سرویس
برای مثال، اگر نرمافزار مالی سازمان با حساب svc-finance اجرا شود، SPN به Kerberos کمک میکند این سرویس را شناسایی کند. کاربر احرازشده در دامنه میتواند برای این سرویس یک Service Ticket درخواست کند. در Kerberoasting Attack، مهاجم از همین فرایند برای دریافت Ticket حسابهای سرویس و انجام بررسی آفلاین استفاده میکند.
سناریویی از حمله Kerberoasting
فرض کنید مهاجم ابتدا از طریق فیشینگ به حساب یکی از کارکنان سازمان دسترسی پیدا کرده است.
این حساب دسترسی مدیریتی ندارد، اما عضو دامنه است.
مهاجم پس از بررسی محیط Active Directory متوجه میشود یک حساب سرویس برای اجرای نرمافزار داخلی سازمان استفاده میشود. این حساب دارای SPN است و رمز عبور آن نیز مدت زیادی تغییر نکرده است.
مهاجم برای این سرویس Kerberos Ticket دریافت میکند و اطلاعات مربوط به Ticket را خارج از محیط سازمان بررسی میکند.
اگر رمز عبور حساب سرویس قابل حدس باشد، مهاجم ممکن است بتواند آن را بازیابی کند. در این صورت، دسترسی او میتواند از یک حساب کاربری معمولی به حساب سرویس گسترش پیدا کند.
نکته مهم: دریافت Ticket بهتنهایی به معنی موفقیت حمله نیست. نقطه خطر زمانی است که مهاجم بتواند از Ticket برای انجام حمله آفلاین و در نهایت کشف رمز عبور ضعیف استفاده کند.
چرا Service Accountها هدف مناسبی هستند؟
Service Accountها معمولاً برای اجرای سرویسها، برنامهها یا وظایف خودکار استفاده میشوند و همین موضوع باعث میشود مدیریت آنها با حسابهای معمولی متفاوت باشد.
برخی مشکلات رایج عبارتاند از:
- رمز عبور برای مدت طولانی تغییر نمیکند.
- رمز عبور پیچیدگی کافی ندارد.
- یک حساب سرویس دسترسی بیشتری از نیاز واقعی خود دارد.
- یک حساب برای چند سرویس استفاده میشود.
- فعالیت حساب سرویس بهطور دقیق مانیتور نمیشود.
بنابراین، ریسک حمله Kerberoasting فقط به وجود SPN مربوط نیست؛ ترکیب SPN با یک حساب سرویس دارای رمز عبور ضعیف یا مدیریت نامناسب، خطر را افزایش میدهد.
چگونه Kerberoasting را شناسایی کنیم؟
شناسایی این حمله معمولاً با بررسی یک رویداد منفرد امکانپذیر نیست. تیم امنیت باید الگوی درخواستهای Kerberos و رفتار حسابها را در کنار سایر رویدادها بررسی کند.
برخی موارد مهم عبارتاند از:
1. بررسی درخواستهای Service Ticket
افزایش غیرعادی درخواستهای Service Ticket، مخصوصاً زمانی که یک حساب معمولی تعداد زیادی سرویس را در مدت کوتاهی بررسی میکند، میتواند نیازمند بررسی باشد.
البته تعداد زیاد درخواستها بهتنهایی نشانه Kerberoasting نیست و باید نوع سرویسهای درخواستشده، حساب درخواستکننده و الگوی زمانی فعالیت نیز در نظر گرفته شود.
2. بررسی حساب درخواستکننده
باید مشخص شود چه حسابی Ticket را درخواست کرده است و آیا چنین فعالیتی با نقش واقعی کاربر مطابقت دارد یا خیر.
برای مثال، اگر حساب یک کارمند عادی در مدت کوتاهی برای تعداد زیادی Service Account درخواست Ticket ایجاد کند، این رفتار میتواند غیرعادی باشد.
3. بررسی Event Logهای مرتبط با Kerberos
ثبت و تحلیل رویدادهای مرتبط با احراز هویت Kerberos در Domain Controller میتواند به تیم امنیت کمک کند الگوهای غیرمعمول درخواست Ticket را شناسایی کند.
در محیطهای سازمانی، ارسال این رویدادها به SIEM نیز امکان correlation میان احراز هویت، فعالیت حسابها و سایر رویدادهای امنیتی را فراهم میکند.
راهکارهای مقابله با حمله Kerberoasting
مؤثرترین راهکار، حذف شرایطی است که باعث میشود یک Service Account هدف مناسبی برای حمله باشد.
۱. استفاده از رمز عبور قوی برای Service Accountها
رمز عبور حسابهای سرویس باید طولانی، پیچیده و غیرقابل حدس باشد. رمزهای کوتاه یا الگوهای قابل پیشبینی، ریسک حمله آفلاین را افزایش میدهند.
۲. کاهش دسترسی Service Account
یک حساب سرویس نباید بیشتر از نیاز واقعی خود دسترسی داشته باشد. اجرای سرویس با حداقل سطح دسترسی باعث میشود در صورت افشای اعتبارنامه، دامنه فعالیت مهاجم محدودتر شود.
۳. مدیریت مناسب حسابهای سرویس
در محیطهای Active Directory، استفاده از gMSA (Group Managed Service Account) برای سرویسهایی که از آن پشتیبانی میکنند، میتواند مدیریت حسابهای سرویس را امنتر کند؛ زیرا رمز عبور این حسابها بهصورت خودکار مدیریت و تغییر داده میشود.
۴. مانیتورینگ درخواستهای Kerberos
صرفاً داشتن رمز عبور قوی کافی نیست. سازمان باید درخواستهای غیرمعمول Ticket و رفتار حسابهای موجود در دامنه را نیز تحت نظر داشته باشد.
۵. حذف حسابها و SPNهای غیرضروری
حسابهای سرویس قدیمی و SPNهایی که دیگر استفاده نمیشوند، نباید بدون بررسی در Active Directory باقی بمانند. کاهش داراییهای غیرضروری، سطح حمله را نیز کاهش میدهد.
تفاوت Kerberoasting Attack با Pass-the-Ticket
این دو تکنیک به Kerberos مربوط هستند اما یکسان نیستند.
در حمله Kerberoasting هدف اصلی دریافت Service Ticket و تلاش برای بازیابی رمز عبور حساب سرویس از طریق تحلیل آفلاین آن است.
اما در Pass-the-Ticket، مهاجم ابتدا یک Kerberos Ticket معتبر را به دست میآورد؛ مثلاً ممکن است این Ticket را از یک سیستم آلوده سرقت کرده باشد. سپس بهجای بهدست آوردن رمز عبور، همان Ticket را برای دسترسی به سرویسهای مجاز برای آن استفاده میکند.
به زبان ساده:
- Kerberoasting: مهاجم تلاش میکند از یک Ticket به رمز عبور حساب سرویس برسد.
- Pass-the-Ticket: مهاجم تلاش میکند بدون داشتن رمز عبور، از خود Ticket سرقتشده برای دسترسی استفاده کند.
بنابراین تفاوت اصلی این است که در Kerberoasting، اعتبار حساب سرویس هدف قرار میگیرد؛ اما در Pass-the-Ticket، یک Ticket معتبر سرقتشده مورد سوءاستفاده قرار میگیرد.
