
سكربت PowerShell لإجراء مصادقة PKINIT باستخدام Windows API من جهاز غير منضم إلى نطاق.
نص برمجي PowerShell لإجراء مصادقة PKINIT مع واجهة برمجة تطبيقات Windows من جهاز غير منضم إلى مجال.
ينشئ هذا الأمر cmdlet جلسة تسجيل دخول جديدة باستخدام الشهادة المحددة عبر PKINIT.
صُمم ليعمل على جهاز افتراضي غير منضم إلى مجال. يحتوي الأمر cmdlet على وضعين: وضع يضبط مفاتيح التسجيل ووضع يرقّع ذاكرة LSASS لتجاوز الفحوصات من جانب العميل المتعلقة بشهادة وحدة تحكم المجال. تفشل هذه الفحوصات عند التشغيل على جهاز غير منضم إلى المجال.
في وضع التسجيل (الافتراضي)، يلزم امتيازات مسؤول لضبط مفاتيح التسجيل ذات الصلة (واستعادتها في النهاية). إذا كانت المفاتيح مضبوطة بالفعل، فلن تكون امتيازات المسؤول مطلوبة. علاوةً على ذلك، يجب إضافة شهادة المرجع المصدق (CA) إلى قائمة مراجع التصديق الموثوقة. إذا فشلت هذه الطريقة (على سبيل المثال بسبب فحص لا يمكن تجاوزه بمفاتيح التسجيل)، فيمكن تجربة طريقة الترقيع بدلاً من ذلك. إنها أقل أناقة لكنها ستتجاوز أي فحص من جانب العميل متعلق بشهادة KDC.
في وضع الترقيع (-PatchLsass)، سيتم ترقيع دالة KerbCheckKdcCertificate في LSASS. وبما أن KerbCheckKdcCertificate غير مُصدَّرة من kerberos.dll، فيجب استرداد الرموز. لكي يسترد هذا الأمر cmdlet الرموز تلقائيًا، يجب تعريف متغير البيئة _NT_SYMBOL_PATH (مثلًا SRV*c:\symbols*https://msdl.microsoft.com/download/symbols). إذا لم تكن الرموز موجودة على القرص مسبقًا، فستكون هناك حاجة إلى اتصال بالإنترنت لتنزيلها. كما يلزم توفر Windows SDK لتنزيل الرموز. افتراضيًا، سيبحث البرنامج النصي في للعثور على ملفات DLL التي يحتاجها ( و ).
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64dbghelp.dllsymsrv.dllللحصول على شرح أكثر تفصيلًا، راجع مقال المدونة المرتبط.
PS > Invoke-RunAsWithCert user.pfx -Domain CORP.LOCAL