Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
my-CVE-2021-1675 — تحليل تفصيلي وتنفيذ استغلال لثغرة Windows PrintNightmare (CVE-2021-1675/34527) مع تصعيد الامتيازات القائم على RPC وتنفيذ التعليمات البرمجية عن بُعد عبر تثبيت برنامج تشغيل طابعة خبيث. | Kitploit
أدوات/GitHubGitHub/hahaleyile/my-cve-2021-1675
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالأوراق والأبحاثالتعلم والتعليمأداة الوصول عن بعداستغلال الملفات الثنائية
GitHubhahaleyile/my-cve-2021-1675

my-CVE-2021-1675

تحليل تفصيلي وتنفيذ استغلال لثغرة Windows PrintNightmare (CVE-2021-1675/34527) مع تصعيد الامتيازات القائم على RPC وتنفيذ التعليمات البرمجية عن بُعد عبر تثبيت برنامج تشغيل طابعة خبيث.

عرض المستودع
331منذ 5 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

= تقرير تحليل Print Nightmare :imagesdir: Figures :toc: :icons: font :figure-caption: الشكل :xrefstyle: short :pdf-theme: basic-theme.yml

في 29 يونيو 2021، تم الكشف عن ثغرة أمنية خطيرة جدًا في خدمة الطباعة في Windows كـ 0day، حصلت على تصنيف أساسي 8.8، وتم نشرها على GitHub (وتم حذفها لاحقًا). هذه الثغرة هي الشهيرة PrintNightmare: CVE-2021-34527، وخطورتها تتجاوز حتى EternalBlue.

== معلومات أساسية عن الثغرة

تعمل ثغرة 34527 تقريبًا على جميع إصدارات Windows بدءًا من Windows 7 و Windows Server 2008، يمكن الاطلاع على التفاصيل في <> .

من ناحية الضرر، يمكن للمهاجم استخدام مصادقة مستخدم عادي لتنفيذ تعليمات برمجية عشوائية عن بُعد بصلاحيات المسؤول. من حيث صعوبة الاستغلال، من السهل جدًا استغلال هذه الثغرة، وبالتالي فهي خطيرة للغاية.

من ناحية خصائص الثغرة، تستند ثغرة 34527 إلى الثغرة CVE-2021-1675. وثغرة 1675 هي ثغرة رفع صلاحيات محلي وتنفيذ تعليمات برمجية عن بُعد، وتتشابه بشكل كبير مع ثغرة 34527.

قبل فهم كيفية عمل الثغرة، يجب أن يكون لدينا فكرة عامة عن بنية برنامج الطباعة الخلفي في Windows، مما يسهل فهم العلاقات بين الوحدات المختلفة المشاركة في الثغرة.

== مسار استدعاء CVE-2021-1675

=== بنية برنامج الطباعة الخلفي في Windows

يمكن تمثيل بنية spooler باستخدام <<spooler_arch>> :

[[spooler_arch]] .هندسة برنامج الطباعة الخلفي image::Print Spooler Architecture.png[]

بالتحديد، يدير برنامج الطباعة الخلفي مهام الطباعة، ويتكون من المكونات التالية:

winspool.drv:: ملف مكتبة الارتباط الديناميكي المقدم للمستخدم. يحدد هذا الملف واجهات برمجة التطبيقات Win32 المتعلقة بـ spooler ليستخدمها المستخدم. تستخدم جميع واجهات API داخله أسلوب استدعاء الإجراء عن بُعد للحصول على الخدمة.

spoolsv.exe:: يعمل spoolsv.exe كخادم في الهيكل، كأول برنامج يعالج استدعاءات API. تم تصميم هذا لتمكين print spooler من معالجة مهام الطباعة المحلية والبعيدة دون تمييز.

spoolsv.dll:: برنامج التوجيه. يقوم بتوجيه طلبات الطباعة التي يستقبلها spoolsv.exe إلى مختلف موفري الطباعة، ويقرر أي موفر سيعالج الطلب في النهاية. دوره هو التمييز بين مهام الطباعة البعيدة والمحلية. على الجهاز البعيد، يقوم بتعيين المهمة ثابتًا إلى موفر الطباعة المحلي.

localspl.dll:: موفر الطباعة المحلي. المهمة الرئيسية لموفري الطباعة هي التعامل مع متطلبات إدارة مهام الطباعة، ويتم تنفيذ معظم واجهات API داخل هذه الوحدة.

بناءً على النظرية المذكورة أعلاه، لنكمل الدراسة: على سبيل المثال، عندما أستدعي الدالة AddPrinterDriverEx (CVE-2021-1675)، سيمر عبر المسار التالي:

=== اختيار إصدار الدالة

أولاً، هذه الدالة هي في الواقع ماكرو، يختار إصدار Unicode (W) أو إصدار Ansi (A) بناءً على بيئة الترجمة المحلية، كما هو في <>:

[[AddPrinterDriverEx]] .AddPrinterDriverEx image::AddPrinterDriverEx.png[]

ولكن سواء كان إصدار أحرف عريضة أو ضيقة، فالنتيجة واحدة، لأن السلاسل النصية في نواة Windows مشفرة بـ Unicode، لذا في النهاية يتم تحويل استدعاء إصدار Ansi إلى استدعاء إصدار Unicode، كما في <>:

[[AnsiToUnicode]] .AnsiToUnicode image::AnsiToUnicode.png[]

عندما يتم تحويل جميع معاملات دالة Ansi إلى إصدار Unicode، يتم استدعاء دالة (<>):

[[AnsiCallUnicode]] .AnsiCallUnicode image::AnsiCallUnicode.png[]

وهذه الدالة هي في الواقع إصدار Unicode من AddPrinterDriverEx (<>):

[[GetUnicodeProcAddress]] .GetUnicodeProcAddress image::GetUnicodeProcAddress.png[]

=== ترسل دالة API طلب RPC إلى خادم spooler

بعد الدخول إلى الدالة الداخلية لإصدار Unicode، أولاً، يتم تحديد نوع معامل الدالة بناءً على قيمة Level:

image::pDriverInfo.png[]

في هذه الثغرة، سنقوم بتعيين Level إلى 2، أي اختيار نوع المعامل pDriverInfo كبنية DRIVER_INFO_2. ثم يقوم Windows بمعالجة معاملات الدالة، وبعد اكتمال المعالجة، يتم متابعة معالجة API عبر استدعاء إجراء عن بُعد:

image::set arguments.png[]

image::NdrClientCall3.png[]

=== آلية MSRPC

تعتمد آلية استدعاء الإجراء عن بُعد من Microsoft على معيار DCE. بشرح بسيط، استدعاء الإجراء عن بُعد هو تشغيل عمليات على نظام بعيد، وهذه العمليات محددة مسبقًا من قبل المبرمج أو النظام.

الطريقة المحددة لـ RPC هي إجراء تسلسل للدالة المطلوب استدعاؤها عن بُعد، ونقلها عبر الشبكة إلى النظام البعيد، ثم يقوم النظام البعيد بإلغاء التسلسل وتنفيذها. في الهيكل الذي بنته Microsoft، يتم عادةً اختيار TCP/IP و SMB لنقل استدعاءات RPC.

لاستخدام MSRPC، يجب أولاً تعريف واجهة IDL للدالة المراد استدعاؤها، ثم استخدام أداة MIDL لإنشاء كعب البرنامج التسلسلي (stub) الخاص بالعميل والخادم. بالنسبة لبعض Win32 API، فهي تحتوي بالفعل على stub الخادم المحدد مسبقًا، لذا يمكننا فقط إنشاء واستخدام stub العميل.

يستخدم MSRPC UUID لتعريف نوع معين من البروتوكولات، مثل MS-RPRN الذي يصف بروتوكول الطباعة عن بُعد، جميع الدوال المتعلقة بالطباعة عن بُعد تنتمي إلى هذا البروتوكول، ويستخدم MSPRC UUID 12345678-1234-ABCD-EF00-0123456789AB لتعريف هذا البروتوكول (<<rprn_uuid>>):

[[rprn_uuid]] .UUID MS-RPRN image::spoolss uuid.png[]

ثم، يمكن الاستمرار في هذا الاتصال، باستخدام رقم العملية (operator number) لتعريف الدوال داخل البروتوكول، وبالتالي استدعاؤها عن بُعد. على سبيل المثال، تستخدم AddPrinterDriverEx الرقم 89 لتعريف نفسها (<<addPrinterDriverEx_opnum>>):

[[addPrinterDriverEx_opnum]] .رقم عملية AddPrinterDriverEx image::AddPrinterDriverEx Opnum.png[]

عند استخدام MSRPC، هناك نقطتان جديرتان بالملاحظة:

[IMPORTANT]

  • يستخدم اتصال TCP/IP منافذ ديناميكية، ويجب الحصول على قيمة المنفذ من خلال endpoint mapper الذي يستمع على المنفذ 135.

"As you can see in your output, the scripts are trying to connect to port 135 (endpoint mapper) in order to get the TCP/IP port where the DCOM endpoint is listening (that is a dynamic port)." -- SecureAuthCorp/impacket issue #412

  • بالإضافة إلى ذلك، تتطلب بعض دوال RPC مصادقة للاستدعاء، وبالتالي تحتاج هذه الثغرة إلى صلاحيات مستخدم عادي. ====

=== يعالج spoolsv.exe طلب API

[[call_flow]] .تسلسل استدعاء RpcAddPrinterDriverEx image::Function Calls.png[]

من <<call_flow>> يمكن ملاحظة أن spoolsv.exe يستدعي هذه الدوال، ومن تحليل الدوال داخليًا، لا تقوم هذه الوحدة بأي شيء سوى التهيئة. في النهاية، تستدعي هذه الوحدة الدالة المشار إليها بواسطة pLocalProvidor، وهي الدالة LocalAddPrinterDriverEx الموجودة في وحدة localspl.dll. باعتبار localspl موفر طباعة محلي، فهو بالفعل الوحدة التي تنفذ وظيفة API.

=== منطق تنفيذ الدالة في موفر الطباعة المحلي

[[LocalAddPrinterDriverEx]] .LocalAddPrinterDriverEx image::LocalAddPrinterDriverEx.png[]

أولاً، يوضح <> أن الوحدة تتحقق مما إذا كان spooler يعمل بشكل صحيح، ثم تنتقل إلى الدالة SplAddPrinterDriverEx.

[[SplAddPrinterDriverEx]] .SplAddPrinterDriverEx image::SplAddPrinterDriverEx.png[]

داخل الدالة <> يوجد موقع مهم لتحديد ما إذا كانت الدالة AddPrinterDriverEx يمكن تنفيذها بنجاح. النصف الأول لا حاجة لفحصه، لأن WPP هي تقنية متعلقة بالتسجيل، يمكن تخطيها مؤقتًا.

في النصف الثاني، يعرّف Microsoft متغيرًا v12، وهو علامة لتحديد ما إذا كانت الدالة ستستمر في التنفيذ أم ستخرج مباشرة.

[[bittest]] .bittest dwFileCopyFlags image::bittest in spl.png[]

من <> يمكن ملاحظة أن هناك شرطين للاستمرار: الأول هو أن تكون v12 تساوي 0 أي نجاح bittest، والثاني هو نجاح Validate. و Validate هو التحقق من الصلاحيات، ولا يمكن تجاوزه بسهولة. يوجد بداخله API هو OpenProcessToken، مما يعني ضرورة رفع الصلاحيات في العملية التالية، وهذا غير ممكن إذا لم يكن المستخدم مسؤولاً.

لذا، للاستمرار في التنفيذ، يجب تجاوز فحص bittest. والمتغير الذي يتم فحصه a4 — المعامل الرابع للدالة — هو المعامل الموضح في الموقع الرسمي تحت <> :

[cols="2,5a"] |=== |الاسم/القيمة |الوصف

|APD_STRICT_UPGRADE

0x00000001

|إضافة برنامج تشغيل الطابعة البديل فقط إذا لم يكن أي من ملفات برنامج التشغيل البديل أقدم من أي ملفات مقابلة لبرنامج التشغيل المثبت حاليًا.

|APD_STRICT_DOWNGRADE

0x00000002

|إضافة برنامج تشغيل الطابعة البديل فقط إذا لم يكن أي من ملفات برنامج التشغيل المثبت حاليًا أقدم من أي ملفات مقابلة لبرنامج التشغيل البديل.

|APD_COPY_ALL_FILES

0x00000004

|إضافة برنامج تشغيل الطابعة ونسخ جميع الملفات في دليل برنامج التشغيل. يجب تجاهل طوابع الوقت للملفات.

|APD_COPY_NEW_FILES

0x00000008

|إضافة برنامج تشغيل الطابعة ونسخ الملفات في دليل برنامج التشغيل الأحدث من أي من الملفات المقابلة قيد الاستخدام حاليًا.

|APD_COPY_FROM_DIRECTORY

0x00000010

|إضافة برنامج تشغيل الطابعة باستخدام أسماء الملفات المؤهلة بالكامل المحددة في بنية _DRIVER_INFO_6. إذا تم تحديد هذه العلامة، يجب تحديد إحدى علامات النسخ الأخرى في هذا الحقل البت.

|APD_DONT_COPY_FILES_TO_CLUSTER

0x00001000

|عند إضافة برنامج تشغيل طابعة إلى مجموعة خوادم طباعة، لا تنسخ ملفات برنامج التشغيل إلى القرص المشترك للمجموعة.

|APD_COPY_TO_ALL_SPOOLERS

0x00002000

|إضافة برنامج تشغيل الطابعة إلى خوادم spooler العنقودية.

|APD_INSTALL_WARNED_DRIVER

0x00008000

|إضافة برنامج تشغيل الطابعة، حتى إذا كان موجودًا في قائمة الخادم لبرامج تشغيل الطابعة المحذرة.

|APD_RETURN_BLOCKING_STATUS_CODE

0x00010000

|تحديد رمز الخطأ المحدد للتنفيذ لإرجاعه إذا كان برنامج تشغيل الطابعة محظورًا من التثبيت بواسطة سياسة الخادم.

|===

bittest 16 يتحقق مما إذا كانت البتة 16 من المتغير هي 1، وقيمة المعامل المقابلة هي 0x8000 (APD_INSTALL_WARNED_DRIVER). من الشرح أيضًا يمكن ملاحظة أن هذا المعامل يعني إضافة برنامج تشغيل الطابعة إلى الخادم دون تحقق.

يُقال أنه قبل إصلاح 1675، لم يكن هذا المعامل موجودًا في الوثائق الرسمية، مما يوضح موقع الثغرة.

=== طريقة استغلال الثغرة

عند تنفيذ طريقة إضافة برنامج تشغيل الطابعة فعليًا، إذا تم اختيار بنية DRIVER_INFO_2، ستحدث الأمور التالية:

. يتم فتح DriverFile و ConfigFile و DataFile على التوالي، للتأكد من وجود هذه الملفات الثلاثة. من بينها، يُسمح لـ DataFile فقط بأن يكون مسار UNC.

. إذا كانت الملفات الثلاثة موجودة، يتم نسخها إلى الدليل C:\Windows\System32\spool\drivers\x64\3\New، كما هو موضح في <<cp_conf_file>> و <<cp_data_file>>: + [[cp_conf_file]] .نسخ ملف التكوين image::copy config file.png[] + [[cp_data_file]] .نسخ ملف البيانات image::copy data file.png[]

. سبب النسخ إلى هذا الدليل هو تنفيذ الملفات المقابلة، و3 تشير إلى أن برنامج تشغيل الطابعة هذا من النوع v3. يتم نسخ الملف الجديد أولاً إلى دليل New لمنع استبدال الملفات في دليل 3. إذا كان هناك ملف بنفس الاسم تحت 3، يتم وضع الملف المكرر في دليل Old كنسخة احتياطية، ثم يتم نسخ الملفات من New إلى 3 لاستبدال الملفات. يمكن ملاحظة ذلك عند تنفيذ طريقة RpcAddPrinterDriverEx مرة ثانية: + .الاستدعاء الثاني لـ RPC image::second time call.png[] + .نسخ احتياطي للملفات إلى الدليل القديم image::backup file.png[] + .نسخ الملفات الجديدة إلى الوجهة image::copy file.png[] + وفقًا لهذه الآلية، يمكننا حفظ ملف من مسار بعيد كملف في مسار محلي، لأن معاملات الدالة لملف برنامج التشغيل وملف التكوين يمكن أن تكون فقط مسارات محلية، فقط معامل ملف البيانات يمكن أن يكون مسارًا بعيدًا.

ifdef::backend-pdf[] تم توثيق نتائج تشغيل البرنامج الخبيث على https://github.com/hahaleyile/my-CVE-2021-1675[مستودعي]، والصورة المتحركة التوضيحية هي ملف gif في دليل Figures. endif::[]

== إصلاح Microsoft لثغرة 1675

في 8 يونيو 2021، قامت Microsoft بإصلاح ثغرة CVE-2021-1675، مع التعديلات التالية:

[[path_1675]] .تصحيح CVE-2021-1675 image::IsElevated.png[]

[[YIsElevationRequired]] .YIsElevationRequired image::YIsElevationRequired.png[]

[[YIsElevated]] .YIsElevated image::YIsElevated.png[]

[[unset_1675]] .إلغاء تعيين APD_INSTALL_WARNED_DRIVER image::JudgeIsElevated.png[]

أضافت Microsoft في الدالة RpcAddPrinterDriverEx فحصًا لرفع صلاحيات المستخدم، ويمكن للمستخدم إزالة هذا القيد في السجل (<<path_1675>>). يكفي للمستخدم إنشاء مفتاح باسم NoWaringNoElevationOnInstall (<>) في الموقع المحدد في السجل، أو أن يحصل حساب RPC على رمز العملية TOKEN_QUERY (<>)، لتجاوز هذا الإصلاح. إذا تم تطبيق الإصلاح، فسيتم تعيين البتة 16 من dwFileCopyFlags إلى 0 بواسطة العملية AND، مما يعني تعطيل قيمة المعامل APD_INSTALL_WARNED_DRIVER (<<unset_1675>>).

== تجاوز تصحيح 1675

على الرغم من أن Microsoft قد أصدرت تصحيحًا للدالة RpcAddPrinterDriverEx، إلا أنه لا يزال بإمكاننا تجاوز ذلك عن طريق الاستدعاء عن بُعد عبر RpcAsyncAddPrinterDriver. كما هو موضح في <<async_send>>، فإن هذه الدالة من جانب العميل هي استدعاء مباشر للخادم عن بُعد:

[[async_send]] .إرسال RpcAsyncAddPrinterDriver image::RpcAsyncAddPrinterDriver Send.png[]

يقوم الخادم أولاً بتخصيص مساحة للخيط، ثم متابعة الاستدعاء، كما هو موضح في <<async_receive>>:

[[async_receive]] .استقبال RpcAsyncAddPrinterDriver image::RpcAsyncAddPrinterDriver Receive.png[]

في الدالة التي تستمر في الاستدعاء، يتم دفع جميع المعاملات إلى المكدس، وتشغيل YAddPrinterDriverEx كخيط (<<async_yadd>>):

[[async_yadd]] .بدء الخيط YAddPrinterDriverEx image::thread start YAddPrinterDriverEx.png[]

وهكذا يتم تجاوز تصحيح Microsoft لـ RpcAddPrinterDriverEx بنجاح.

بمعنى آخر، من خلال الاستدعاء عن بُعد للدالة RpcAsyncAddPrinterDriver، يمكن متابعة تنفيذ أي كود بصلاحيات المسؤول.

بالإضافة إلى ذلك، وفقًا لـ <>، فإن هذا التصحيح لديه مشاكل في التحقق من Token، وفي نفس الوقت سيكون التصحيح غير فعال على الأجهزة التي تم تعطيل UAC فيها بالكامل. لكني شخصيًا لست على دراية بآلية هذا الجانب، لذلك لن أعلق كثيرًا.

== إصلاح Microsoft لثغرة 34527

في 6 يوليو 2021، قامت Microsoft بحل مشكلة ثغرة الطباعة الخلفية مؤقتًا من خلال تحديث جديد.

وفقًا للبيان الرسمي، سيجعل هذا التحديث تثبيت برامج تشغيل الطابعة على خادم الطباعة مقتصرًا على المسؤولين فقط. كما أضافت Microsoft سياسة جماعية ومفتاحي سجل ليتمكن المستخدمون من تخصيص هذه السياسة.

من خلال فك التجميع في IDA لـ <<restrict_async>>، يمكننا رؤية أن Microsoft أضافت في دالة Async التحقق من Token وإدخالات السجل.

تنزيل الأداة

. وفقًا لـ <>، pConfigFile هو مكتبة الارتباط الديناميكي لتكوين برنامج تشغيل الجهاز، لذلك يجب تحميله مرة واحدة للتهيئة. هذا الأمر تم تأكيده من التشغيل الفعلي. + .تحميل pConfigFile image::Load Image.png[] + وبالتالي، بمجرد كتابة dll خبيث، ووضع الكود الخبيث في نقطة دخول dll لتنفيذه، يمكن تنفيذ أي كود، وبصلاحيات المسؤول. + .spoolsv.exe تحت صلاحية المسؤول image::spoolsv user.png[]

. دالة CreateInternalDriverFileArray() تتحقق مما إذا كان دليل spool driver يحتوي على الملفات بناءً على علامات تشغيل الملفات. إذا تم وضع علامة a5 flag على False، فإن دالة تحميل برنامج التشغيل ستتحقق فقط مما إذا كان دليل المستخدم يحتوي على ملف برنامج التشغيل المراد نسخه. خلاف ذلك، ستحاول الدالة العثور على برنامج التشغيل الهدف في دليل spool driver. يتطلب ذلك تعيين dwFileCopyFlags مع المعامل APD_COPY_FROM_DIRECTORY في نفس الوقت. + image::APD.png[] + image::APD_1.png[]

[TIP]

خلاصة القول، فكرة استغلال الكود الخبيث هي: تهيئة dll الخبيث كـ configfile، مما يؤدي إلى تنفيذ أي كود بصلاحيات المسؤول. يكفي فتح مشاركة samba على جهاز المهاجم، ليقوم الجهاز المستهدف بتحميل البرنامج الخبيث كـ datafile إلى جهازه المحلي، ثم تنفيذ هذا البرنامج.

== طريقة استخدام برنامج الاستغلال

تم بناء هذا البرنامج على أساس docker، مما يحل مشكلة تبعيات البيئة بشكل فعال.

أولاً، يقوم المستخدم بتنزيل ملف compose في دليله الخاص، ثم إنشاء مجلد باسم share في هذا الدليل لاستخدامه كدليل ربط. يمكن للمستخدم وضع البرنامج الخبيث داخل مجلد share، وسيتم مشاركة هذا المجلد عبر مسار samba باسم smb.

بعد ذلك، يقوم المستخدم بإدخال الأمر في الطرفية

[source,docker]

docker-compose up -d

لتشغيل المجموعة (حاوية واحدة). يمكن للمستخدم الدخول إلى الحاوية للعمل، وتم إعداد البيئة داخل الحاوية مسبقًا.

أو يمكن ببساطة إدخال الأمر في الطرفية

[source,docker]

docker-compose run my_cve python main.py -h

لتنفيذ الأمر.

== نتائج تشغيل برنامج الاستغلال

الشكر لـ <> على الكود مفتوح المصدر الذي أتاح لي الرجوع إليه!

ifndef::backend-pdf[] .نتيجة تشغيل البرنامج image::exploit.gif[] endif::[]

[[restrict_async]] .القيود في الدالة غير المتزامنة image::restrict in async.png[]

من خلال <<restrict_rpcadd>> يمكننا ملاحظة أن Microsoft أضافت في الدالة RpcAddPrinterDriverEx التحقق من مجموعة المستخدمين ومفاتيح السجل الخاصة بها.

[[restrict_rpcadd]] .القيود في دالة RpcAddPrinterDriverEx image::restrict in rpcadd.png[]

لذلك، ربما لا يزال إصلاح ثغرة 1675 يعاني من مشكلة في التحقق من Token.

== خطة المشروع

. إضافة دعم للاستدعاء عن بُعد لـ RpcAsyncAddPrinterDriver، لتجاوز تصحيح Microsoft في 8 يونيو، وتحقيق CVE-2021-34527 exp.

. فهم آلية UAC، وتحسين تحليل الثغرة هذا.

[bibliography] == المراجع

  • [[[a,الموقع الرسمي]]] Windows Print Spooler Remote Code Execution Vulnerability https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-34527

  • [[[b,dwFileCopyFlags]]] https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/b96cc497-59e5-4510-ab04-5484993b259b

  • [[[c,تحليل ثغرة Windows PrintNightmare (CVE-2021-34527) وتصحيحها]]] https://www.freebuf.com/vuls/279876.html

  • [[[d,gentilkiwi/mimikatz]]] https://github.com/gentilkiwi/mimikatz

  • [[[e,الوثائق الرسمية]]] DRIVER_INFO_2 structure https://docs.microsoft.com/en-us/windows/win32/printdocs/driver-info-2

  • [[[f,cube0x0]]] https://github.com/cube0x0

  • [[[g,James Forshaw]]] https://twitter.com/tiraniddo/status/1410726790994169857

  • [[[h,البيان الرسمي]]] KB5005010: Restricting installation of new printer drivers after applying the July 6, 2021 updates https://support.microsoft.com/en-us/topic/kb5005010-restricting-installation-of-new-printer-drivers-after-applying-the-july-6-2021-updates-31b91c02-05bc-4ada-a7ea-183b129578a7