
BOF لإساءة استخدام Kerberos (تطبيق لبعض الميزات الهامة من Rubeus).
ملفات كائنات المنارة (Beacon Object Files) لاستغلال Kerberos. هذا تنفيذ لبعض الميزات المهمة لمشروع Rubeus، مكتوب بلغة C. المشروع يدعم التكامل مع أطر عمل C2: Cobalt Strike و Havoc و AdaptixC2 و Outflank C2.

يقوم إجراء asktgt ببناء حركة مرور AS-REQ (طلب TGT) خام للمستخدم المحدد ومفتاح التشفير (/rc4 أو /aes256). يمكن أيضًا استخدام علم /password بدلاً من التجزئة - في هذه الحالة سيكون /enctype:X افتراضيًا إلى RC4. إذا لم يتم تحديد /domain، يتم استخراج المجال الحالي للكمبيوتر، وإذا لم يتم تحديد /dc، يتم فعل الشيء نفسه لوحدة التحكم بالمجال الحالية للنظام. إذا نجح المصادقة، يتم تحليل AS-REP الناتج وإخراج KRB-CRED (ملف .kirbi الذي يتضمن TGT للمستخدم) ككتلة base64. علم /ptt سيقوم بعملية "pass-the-ticket" وتطبيق بيانات اعتماد Kerberos الناتجة على جلسة تسجيل الدخول الحالية. ملاحظة أمنية أخرى: يمكن تطبيق TGT واحد فقط في كل مرة على جلسة تسجيل الدخول الحالية، لذا يتم مسح TGT السابق عند تطبيق التذكرة الجديدة عند استخدام خيار /ptt.
لتكوين AS-REQ بشكل أكثر توافقًا مع الطلبات الحقيقية، يمكن استخدام علم /opsec، حيث سيرسل هذا طلب AS-REQ أولي دون مصادقة مسبقة أولاً، إذا نجح ذلك، يتم فك تشفير AS-REP الناتج وإرجاع TGT، وإلا يتم إرسال AS-REQ مع مصادقة مسبقة.
يمكن طلب TGT بدون PAC باستخدام المفتاح /nopac. يمكن استخدام علم /nopreauth لإرسال AS-REQ دون مصادقة مسبقة.
krb_asktgt /user:USER /password:PASSWORD [/domain:DOMAIN] [/dc:DC] [/enctype:{rc4|aes256}] [/ptt] [/nopac] [/opsec]
krb_asktgt /user:USER /aes256:HASH [/domain:DOMAIN] [/dc:DC] [/ptt] [/nopac] [/opsec]
krb_asktgt /user:USER /rc4:HASH [/domain:DOMAIN] [/dc:DC] [/ptt] [/nopac]
krb_asktgt /user:USER /nopreauth [/domain:DOMAIN] [/dc:DC] [/ptt]

يقوم إجراء asktgs ببناء/تحليل طلب خدمة TGS-REQ/TGS-REP خام باستخدام TGT المحدد /ticket:X المقدم. يجب أن تكون هذه القيمة ترميز base64 لملف .kirbi. إذا لم يتم تحديد /dc، يتم استخراج وحدة التحكم بالمجال الحالية للكمبيوتر واستخدامها كوجهة لحركة المرور الطالبة. علم /ptt سيقوم بعملية "pass-the-ticket" وتطبيق تذكرة الخدمة الناتجة على جلسة تسجيل الدخول الحالية. يجب تحديد واحد أو أكثر من /service:X SPNs، مفصولة بفواصل.
أنواع التشفير المدعومة في TGS-REQ المنشأة هي RC4_HMAC و AES256_CTS_HMAC_SHA1. في هذه الحالة، سيستخدم KDC أعلى تشفير مدعوم بشكل متبادل لبناء تذكرة الخدمة المعادة. إذا كنت ترغب في فرض مفاتيح RC4 أو AES256، استخدم /enctype:[rc4 or aes256].
لتكوين TGS-REQ بشكل أكثر توافقًا مع الطلبات الحقيقية، يمكن استخدام علم /opsec، سيؤدي هذا أيضًا إلى إرسال TGS-REQ إضافي تلقائيًا عند طلب تذكرة خدمة لحساب تم تكوينه للتفويض غير المقيد.
تم تنفيذ علم /u2u لطلب تذاكر من مستخدم إلى مستخدم (User-to-User). مع وسيطة /tgs:X (لتزويد TGT للحساب الهدف)، يمكن أن تكون وسيطة /service:X اسم المستخدم للحساب الذي تم تزويد TGT له (مع وسيطة /tgs:X). وسيطة /targetuser:X ستطلب PAC لأي حساب آخر عن طريق إدراج قسم بيانات PA-FOR-USER باسم مستخدم المستخدم الهدف.
تم تنفيذ علم /keyList لطلبات قائمة مفاتيح Kerberos. يجب أن تستخدم هذه الطلبات TGT جزئي مُزور من وحدة تحكم مجال للقراءة فقط في معامل /ticket:BASE64. علاوة على ذلك، يجب تعيين حقل /spn:x إلى SPN الخاص بـ KRBTGT داخل المجال، على سبيل المثال KRBTBT/domain.local.
krb_asktgs /ticket:BASE64 /service:SPN1,SPN2,... [/domain:DOMAIN] [/dc:DC] [/tgs:BASE64] [/targetdomain:DOMAIN] [/targetuser:USER] [/enctype:{rc4|aes256}] [/ptt] [/keylist] [/u2u] [/opsec]

يقوم إجراء renew ببناء/تحليل تبادل تجديد TGT خام TGS-REQ/TGS-REP باستخدام /ticket:X المقدم. يجب أن تكون هذه القيمة ترميز base64 لملف .kirbi. إذا لم يتم تحديد /dc، يتم استخراج وحدة التحكم بالمجال الحالية للكمبيوتر واستخدامها كوجهة لحركة التجديد. علم /ptt سيقوم بعملية "pass-the-ticket" وتطبيق بيانات اعتماد Kerberos الناتجة على جلسة تسجيل الدخول الحالية.
krb_renew /ticket:BASE64 [/dc:DC] [/ptt]
إذا تم تكوين حساب (مستخدم أو كمبيوتر) للتفويض المقيد (أي لديه قيمة SPN في حقل msds-allowedtodelegateto الخاص به)، يمكن استخدام هذا الإجراء لاستغلال الوصول إلى SPN/الخادم الهدف.
شرح مختصر هو أن الحساب الذي تم تمكين التفويض المقيد له يُسمح له بطلب تذاكر لنفسه كأي مستخدم، في عملية تُعرف بـ S4U2self. لكي يُسمح للحساب بفعل ذلك، يجب أن يكون لديه TrustedToAuthForDelegation ممكّنًا في خاصية useraccountcontrol الخاصة به، وهو شيء لا يمكن تعديله إلا من قبل المستخدمين المميزين افتراضيًا. هذه التذكرة تحمل علامة FORWARDABLE افتراضية. يمكن للخدمة بعد ذلك استخدام هذه التذكرة المطلوبة بشكل خاص لطلب تذكرة خدمة لأي اسم رئيسي خدمة (SPN) محدد في حقل msds-allowedtodelegateto للحساب. باختصار، إذا كنت تتحكم في حساب مع تعيين TrustedToAuthForDelegation وقيمة في msds-allowedtodelegateto، يمكنك التظاهر بأنك أي مستخدم في المجال لـ SPNs المحددة في حقل msds-allowedtodelegateto للحساب.
يمكن بعد ذلك استخدام تذكرة S4U2self كمعامل /tgs:Y (كتلة base64) لتنفيذ عملية S4U2proxy. يجب توفير قيمة صالحة لـ msds-allowedtodelegateto للحساب (/service:X).
معامل /altservice يسمح لنا باستبدال أي اسم خدمة نريده في ملف KRB-CRED الناتج. يمكن توفير اسم خدمة بديل واحد أو أكثر، مفصولة بفواصل (/altservice:cifs,HOST,...).
لتكوين TGS-REQ بشكل أكثر توافقًا مع الطلبات الحقيقية، يمكن استخدام علم /opsec.
من الممكن، في بعض الظروف، استخدام تذكرة S4U2Self لانتحال المستخدمين المحميين من أجل تصعيد الامتيازات على النظام الطالب، كما نوقش هنا. لهذا الغرض، يمكن استخدام علم /self ووسيطة /altservice:X لإنشاء تذكرة خدمة قابلة للاستخدام.
لتزوير إحالة S4U2Self، يكون مفتاح الثقة هو المطلوب فقط. باستخدام وسيطة /targetdomain:X مع علم /self وبدون وسيطة /targetdc، سيتم التعامل مع التذكرة المقدمة مع /ticket:X كإحالة S4U2Self وطلب تذكرة خدمة S4U2Self النهائية فقط. يمكن أيضًا استخدام /altservice:X لإعادة كتابة sname في التذكرة الناتجة.
krb_s4u /ticket:BASE64 /service:SPN {/impersonateuser:USER | /tgs:BASE64} [/domain:DOMAIN] [/dc:DC] [/altservice:SERVICE] [/ptt] [/nopac] [/opsec] [/self]
krb_cross_s4u /ticket:BASE64 /service:SPN /targetdomain:DOMAIN /targetdc:DC {/impersonateuser:USER | /tgs:BASE64} [/domain:DOMAIN] [/dc:DC] [/altservice:SERVICE] [/nopac] [/self]

يقوم إجراء ptt بتقديم /ticket:X (TGT أو تذكرة خدمة) لجلسة تسجيل الدخول الحالية من خلال API LsaCallAuthenticationPackage() مع رسالة KERB_SUBMIT_TKT_REQUEST، أو (إذا كان مرتفع الامتياز) لجلسة تسجيل الدخول المحددة بواسطة /luid:ea4... مثل معاملات /ticket:X الأخرى، يمكن أن تكون القيمة ترميز base64 لملف .kirbi.
krb_ptt /ticket:BASE64 [/luid:LOGONID]
يقوم إجراء purge بمسح جميع تذاكر Kerberos من جلسة تسجيل الدخول الحالية، أو (إذا كان مرتفع الامتياز) جلسة تسجيل الدخول المحددة بواسطة /luid:0xA...
krb_purge [/luid:LOGONID]
يقوم إجراء describe بأخذ قيمة /ticket:X (TGT أو تذكرة خدمة)، وتحليلها، ووصف قيم التذكرة. مثل معاملات /ticket:X الأخرى، يمكن أن تكون القيمة ترميز base64 لملف .kirbi.
krb_describe /ticket:BASE64
