بررسی حمله Kerberos Username Bruteforce در Active Directory
در این مقاله، تکنیک بهرهبرداری (Exploitation) موسوم به Kerberos Username Bruteforce یا حمله brute-force پیشاحراز هویت Kerberos مورد بررسی قرار میگیرد. این حمله با سوءاستفاده از پاسخهای پروتکل Kerberos، امکان شناسایی نامهای کاربری معتبر و انجام brute-force برای رمزهای عبور را فراهم میکند.
مقاله حاضر روشهای بهرهبرداری و تکنیکهای مقابله را تشریح میکند و آنها را برای شفافیت بیشتر به چارچوب MITRE ATT&CK نگاشت میکند. همچنین مکانیزمهای تشخیص (Detection Mechanisms) و توصیههای عملی ارائه شدهاند تا به متخصصان امنیت در شناسایی و دفاع در برابر این تهدید رایج کمک کنند.
این عنوان به یک مرحله شناسایی (Reconnaissance) در بستر Active Directory اشاره دارد که در آن مهاجم با استفاده از تکنیک Kerberos Username Bruteforce تلاش میکند تا نامهای کاربری معتبر را در محیط کشف کند. این حمله با ارسال درخواستهای Kerberos و تحلیل پاسخها صورت میگیرد و یکی از مراحل کلیدی در فرآیند شناسایی زیرساختهای مبتنی بر Windows Domain است.
فهرست مطالب
- Kerberos Authentication
مروری بر پروتکل Kerberos و سازوکار احراز هویت آن - Pre-auth Bruteforce
بررسی حملات brute-force پیشاحراز هویت و شناسایی نامهای کاربری معتبر - Metasploit
استفاده از ماژولهای Metasploit برای اجرای حملات Kerberos Username Bruteforce - Nmap
شناسایی سرویسهای Kerberos و پیکربندیهای آسیبپذیر با ابزار Nmap - Kerbrute
معرفی و استفاده عملی از ابزار Kerbrute برای brute-force کردن نامهای کاربری و رمزهای عبور - Rubeus
استفاده از ابزار قدرتمند Rubeus برای حملات پیشرفته Kerberos و بهرهبرداری - Detection & Mitigation
مکانیزمهای شناسایی، تشخیص و ارائه راهکارهای دفاعی برای مقابله با حملات Kerberos Bruteforce
بررسی مکانیزم احراز هویت Kerberos
Kerberos یک پروتکل احراز هویت پرکاربرد در محیطهای Active Directory (AD) است که امکان احراز هویت امن را با استفاده از ticketها فراهم میکند و از ارسال رمزهای عبور بهصورت plaintext جلوگیری میکند. این پروتکل از سه مؤلفه کلیدی تشکیل شده است:
- Key Distribution Center (KDC): مستقر بر روی Domain Controller (DC) و مسئول صدور ticketها
- Authentication Server (AS): مدیریت درخواستهای اولیه احراز هویت
- Ticket Granting Server (TGS): صدور Service Ticket برای دسترسی به منابع خاص
فرآیند احراز هویت بهصورت زیر انجام میشود:
- کاربر یک درخواست احراز هویت به AS ارسال میکند که شامل timestamp رمزنگاریشده با رمز عبور او است.
- در صورت اعتبارسنجی موفق، AS یک Ticket Granting Ticket (TGT) بازمیگرداند.
- کاربر هنگام دسترسی به منابع، TGT را به TGS ارائه میدهد.
- TGS یک Service Ticket صادر میکند که اجازه دسترسی به سرویس درخواستشده را میدهد.
با وجود ویژگیهای امنیتی Kerberos، این پروتکل میتواند از طریق تکنیکهای brute-force مورد سوءاستفاده قرار گیرد تا مهاجم بتواند به اعتبارنامهها (credentials) و اطلاعات حساس دسترسی پیدا کند.
بررسی Pre-auth Bruteforce
Brute-force کردن Kerberos به دلیل تفاوتهای مشخص در پاسخهای سرور هنگام تلاشهای احراز هویت ممکن میشود. مهاجمان از این تفاوتها سوءاستفاده میکنند تا نامهای کاربری معتبر را شناسایی کرده و رمزهای عبور را کرک کنند. از آنجا که Kerberos روی پورت ۸۸ عمل میکند، مهاجمان هنگام اجرای حملات brute-force بهطور خاص این پورت را هدف قرار میدهند.
شناسایی نام کاربری از طریق پاسخهای AS-REQ
زمانی که یک درخواست TGT از طریق پیام AS-REQ ارسال میشود، سرور Kerberos بسته به شرایط پاسخهای متفاوتی ارائه میدهد:
- نام کاربری نامعتبر: سرور پاسخ KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN بازمیگرداند که نشان میدهد نام کاربری وجود ندارد.
- نام کاربری معتبر بدون نیاز به Pre-Authentication: سرور ممکن است بلافاصله یک TGT را در پاسخ AS-REP صادر کند که منجر به حمله AS-REP Roasting میشود.
- نام کاربری معتبر با نیاز به Pre-Authentication: سرور پاسخ KRB5KDC_ERR_PREAUTH_REQUIRED بازمیگرداند که نشان میدهد کلاینت باید دادههای احراز هویت اضافی ارائه کند.
تکنیکهای brute-force مانند Kerberos Username Bruteforce بهویژه در محیطهایی که دارای تنظیمات امنیتی ضعیف یا پیکربندیهای اشتباه هستند بسیار خطرناکاند و به مهاجمان امکان میدهند بهصورت سیستماتیک نامهای کاربری معتبر را شناسایی کرده و به دسترسی غیرمجاز دست یابند.
Metasploit
ماژول auxiliary/scanner/kerberos/kerberos_login در Metasploit میتواند اعتبارنامههای Kerberos را در برابر طیفی از ماشینها بررسی کرده و لاگینهای موفق را گزارش دهد.
این ماژول قادر است اطلاعات زیر را از KDC شناسایی کند:
- حسابهای معتبر / نامعتبر
- حسابهای قفلشده یا غیرفعال
- حسابهایی با رمز عبور منقضیشده (در صورتی که رمز عبور مطابقت داشته باشد)
- حسابهای قابل حمله AS-REP Roasting
گزینه USER_FILE برای مشخص کردن فایلی استفاده میشود که شامل لیستی از نامهای کاربری است؛ این فایل به ماژول امکان میدهد تا با کوئری زدن به Domain Controller تشخیص دهد که آیا این نامها در دامنه هدف وجود دارند یا خیر.
use auxiliary/scanner/kerberos/kerberos_login set rhosts 192.168.1.48 set domain ignite.local set user_file users.txt run
ماژول gather/kerberos_enumusers در Metasploit با استفاده از یک wordlist سفارشی به یک Domain Controller واحد کوئری ارسال میکند و حسابهای کاربری معتبر دامنه را شناسایی میکند.
use auxiliary/gather/kerberos_enumusers set rhosts 192.168.1.48 set domain ignite.local set user_file users.txt run
Nmap
اسکریپت krb5-enum-users در ابزار Nmap با اجرای brute-force روی نامهای کاربری محتمل، به کوئری زدن علیه سرویس Kerberos پرداخته و نامهای کاربری معتبر را کشف میکند.
پارامتر krb5-enum-users.realm یک آرگومان الزامی است که REALM مربوط به Kerberos را به اسکریپت ارائه میدهد تا نامهای کاربری را در همان محدوده بررسی کند.
nmap -p 88 --script krb5-enum-users --script-args krb5-enum-users.realm='ignite.local',userdb=users.txt 192.168.1.48
Kerbrute
Kerbrute ابزاری تخصصی است که برای شناسایی و enumerate کردن حسابهای کاربری معتبر Active Directory که از Kerberos pre-authentication استفاده میکنند به کار میرود.
./kerbrute_linux_amd64 userenum --dc 192.168.1.48 -d ignite.local users.txt
Impacket
اسکریپت GetNPUsers از مجموعهی Impacket ابزاری قدرتمند جهت enumeration نامهای کاربری معتبر در محیط Active Directory است که امکان استخراج AS-REP hashes را برای تحلیل و offline cracking فراهم میسازد.
impacket-GetNPUsers -dc-ip 192.168.1.48 ignite.local/ -usersfile users.txt
Windows
Rubeus
مهاجمان از گزینهی brute در ابزار Rubeus برای انجام حملات password bruteforce علیه تمامی حسابهای کاربری موجود در Active Directory استفاده میکنند. در بسیاری از محیطهای سازمانی واقعی، حسابهای کاربری متعددی معمولاً از یک رمز عبور مشترک بهره میبرند که همین موضوع موجب افزایش اثربخشی این نوع حملات میشود. در نتیجه، استفاده از گزینهی brute میتواند منجر به تولید چندین TGT برای حسابهایی شود که رمز عبور یکسانی دارند.
.\Rubeus.exe brute /passwords:password.txt /dc.ignite.local /outfile:ignite.txt
دستور فوق خروجی را در فایل ignite.txt تولید خواهد کرد.
type .\ignite.txt
مهاجمان میتوانند از آسیبپذیریهای ناشی از پیکربندی نادرست Kerberos – که یکی از قدرتمندترین پروتکلهای احراز هویت در زیرساختهای شبکهای است – سوءاستفاده کنند. با بهرهگیری از تکنیکهای مختلف brute-force و استفاده از ابزارهایی نظیر Kerbrute، Impacket، Rubeus و Metasploit، مهاجمان قادر به تلاش برای استخراج اطلاعات هویتی خواهند بود.
با این حال، سازمانها میتوانند با پیادهسازی best practices امنیتی، نظارت مستمر بر لاگها و اجرای سیاستهای سختگیرانه در کنترل دسترسی، از خود در برابر این تهدیدات محافظت کنند. برای مقابله مؤثر با حملاتی مانند Kerberos Username Bruteforce، لازم است سازمانها ترکیبی از کنترلهای فنی، مانیتورینگ پیوسته، ثبت دقیق وقایع و آگاهی نسبت به attack vectors شناختهشده را در راهکارهای دفاعی خود لحاظ کنند.
تشخیص و مقابله با تهدیدات Kerberos
روشهای تشخیص:
مانیتورینگ Event Logها
با پایش مستمر رویدادهای زیر در سیستمهای مبتنی بر Active Directory میتوان فعالیتهای مشکوک مرتبط با سوءاستفاده از Kerberos را شناسایی کرد:
- Event ID 4768 – درخواستهای Ticket Granting Ticket (TGT)
- Event ID 4769 – درخواستهای Ticket Granting Service (TGS)
- Event ID 4771 – تلاشهای ناموفق برای ورود از طریق Kerberos
شناسایی درخواستهای پرتکرار و غیرعادی
- چندین تلاش ناموفق برای ورود از یک آدرس IP مشخص
- ثبت تعداد زیادی درخواست برای service ticket در بازه زمانی کوتاه
راهکارهای مقابله:
- الزام به Pre-Authentication
فعالسازی pre-authentication برای تمام حسابهای کاربری به منظور جلوگیری از حملات AS-REP Roasting. - اجرای سیاستهای قوی رمز عبور
استفاده از رمزهای عبور پیچیده و قوی برای افزایش مقاومت در برابر حملات brute-force. - مانیتورینگ رفتارهای غیرمعمول
بهرهگیری از ابزارهای SIEM برای شناسایی الگوهای رفتاری مشکوک و تشخیص زودهنگام حملات. - استفاده از سیاستهای قفل حساب (Account Lockout)
محدودسازی تعداد دفعات مجاز برای ورود ناموفق به منظور مقابله با حملات password spraying. - محدودسازی حسابهای سرویس دارای SPN
کاهش سطح حمله در برابر Kerberoasting از طریق حذف یا محدودسازی تخصیص غیرضروری Service Principal Name (SPN) به حسابهای کاربری.