العودة إلى التحديثات
New releaseAug 19, 2026

PrivescCheck v2026.08.19-1

نص برمجي لتصعيد الامتيازات واستكشاف النظام لنظام ويندوز

مشاركة

PrivescCheck

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

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

🚀 بدء سريع

قم بتنزيل البرنامج النصي هنا: PrivescCheck.ps1

[!TIP] يمكن أيضًا استخدام الرابط أعلاه مباشرة في طرفية PowerShell مع (New-Object Net.WebClient).DownloadString(...).

حالة الاستخدام 1 (اختبار الاختراق): تشغيل الفحوصات الأساسية فقط

هل هناك طريقة واضحة لتصعيد الصلاحيات محليًا؟

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck"

حالة الاستخدام 2 (البحث): تشغيل الفحوصات الموسعة + كتابة تقارير قابلة للقراءة البشرية

هل هناك معلومات إضافية يمكن الاستفادة منها لمرحلة ما بعد الاستغلال أو للعثور على ثغرات في برامج الطرف الثالث؟

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML"

حالة الاستخدام 3 (التدقيق): تشغيل جميع الفحوصات + كتابة جميع التقارير

هل هناك مشكلات تكوين لا تغطيها معايير الأمان العامة؟

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML"

📖 الاستخدام المفصل

Invoke-PrivescCheck [-Extended] [-Audit] [-Experimental] [-Report <PREFIX>]
    [-Format <FORMAT>[,...]] [-Risky] [-Silent] [-Force]

    -Extended
        قم بتضمين جميع فحوصات "الموسعة" في الفحص (انظر README).

    -Audit
        قم بتضمين جميع فحوصات "التدقيق" في الفحص.

    -Experimental
        قم بتضمين جميع فحوصات "التجريبية" في الفحص. استخدمها فقط إذا كنت
        تعرف ما تفعله.

    -Report <PREFIX>
        قم بإنشاء ملف تقرير واحد على الأقل. سيكون اسم ملف الإخراج
        "PREFIX.txt" افتراضيًا. يتم إضافة الامتداد تلقائيًا
        بناءً على تنسيق التقرير (انظر "-Format <FORMAT>[,...]").

    -Format <FORMAT>[,...]
        حدد تنسيق ملف (ملفات) تقرير الإخراج. إذا لم يتم تعيينه، فإن
        القيمة الافتراضية هي "TXT". التنسيقات المدعومة هي: "TXT" و"HTML" و"CSV"
        و"XML".

    -Risky
        قم بتضمين الفحوصات المميزة بأنها "محفوفة بالمخاطر"، أي الفحوصات التي من المحتمل أن
        تؤدي إلى إجراء حظر بواسطة حل حماية نقطة النهاية. استخدمها بحذر.

    -Silent
        قم بكتم إخراج الطرفية. يمكن أن يكون هذا مفيدًا إذا كنت تريد تشغيل
        البرنامج النصي كجزء من ملف دفعي، في مهمة مجدولة على سبيل المثال.

    -Force
        فرض التنفيذ وتجاهل التحذيرات. عادةً، يتوقف البرنامج النصي إذا
        تم تنفيذه بصلاحيات المسؤول. استخدم هذا الخيار لتنفيذه
        على أي حال.

تنسيق التقرير > TXT (-Format TXT)

استخدم الخيار -Report <PREFIX> (مع -Format TXT) لتحديد أنك تريد إنشاء تقرير نصي خام. يكون الإخراج مشابهًا لما ستراه في الطرفية، باستثناء أنه يحتوي فقط على أحرف ASCII لتوافق أفضل (بأسلوب رجعي) مع جميع برامج تحرير النصوص.

لقطة شاشة لتقرير نصي خام تم إنشاؤه بواسطة PrivescCheck

تنسيق التقرير > HTML (-Format HTML)

استخدم الخيار -Report <PREFIX> مع -Format HTML لتحديد أنك تريد إنشاء تقرير HTML. يمكن فتح ملف الإخراج في متصفح ويب. إنه أكثر ملاءمة لتصور البيانات من التقرير النصي الخام. بالإضافة إلى ذلك، يوفر إمكانيات الفرز والتصفية!

لقطة شاشة لتقرير HTML تم إنشاؤه بواسطة PrivescCheck

تنسيق التقرير > CSV (-Format CSV) وXML (-Format XML)

استخدم الخيار -Report <PREFIX> مع -Format CSV أو -Format XML لتحديد أنك تريد إنشاء تقرير CSV أو XML. يهدف ملف الإخراج إلى تسهيل تحليل النتائج بواسطة أدوات إعداد التقارير الآلية.

[!NOTE] على الرغم من أن تنسيق الإخراج غير موثق (حتى الآن)، يمكنك بسهولة اكتشافه من خلال تحليل بنية ملف تم إنشاؤه بالفعل. يمكنك استخدام قيمة Id لكل فحص لتحديدها بشكل فريد.

نوع الفحص > الأساسي (Base)

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

نوع الفحص > الموسع (Extended) (-Extended)

لا يمكن تنفيذ فحوصات من النوع Extended إلا إذا تم تحديد الخيار -Extended في سطر الأوامر. وهي تهدف بشكل أساسي إلى توفير معلومات إضافية قد تكون مفيدة لتطوير الاستغلال، أو مرحلة ما بعد الاستغلال.

نوع الفحص > التدقيق (Audit) (-Audit)

لا يمكن تنفيذ فحوصات من النوع Audit إلا إذا تم تحديد الخيار -Audit في سطر الأوامر. وهي تهدف بشكل أساسي إلى توفير معلومات ذات صلة في سياق تدقيق التكوين.

💡 نصائح وحيل

سياسة تنفيذ PowerShell

بشكل افتراضي، يتم تعيين سياسة تنفيذ PowerShell على Restricted على الأجهزة العميلة، وRemoteSigned على الخوادم، عند بدء تشغيل عملية powershell.exe جديدة. تمنع هذه السياسات تنفيذ البرامج النصية (غير الموقعة)، ولكن يمكن تجاوزها ضمن النطاق الحالي على النحو التالي.

Set-ExecutionPolicy Bypass -Scope Process -Force
. .\PrivescCheck.ps1

ومع ذلك، لا تعمل هذه الحيلة عندما يتم فرض سياسة التنفيذ من خلال GPO. في هذه الحالة، بعد بدء جلسة PowerShell جديدة، يمكنك تحميل البرنامج النصي على النحو التالي.

Get-Content .\PrivescCheck.ps1 | Out-String | Invoke-Expression

إصدار PowerShell 2

تتمثل إحدى الطرق الشائعة لتجاوز وضع اللغة المقيدة في استخدام PSv2 لأنه لا يطبق هذه الحماية. لذلك، يذهب جزء كبير من جهد التطوير إلى الحفاظ على هذا التوافق الرجعي.

[!NOTE] على الرغم من أن إصدار PowerShell 2 لا يزال ممكّنًا افتراضيًا على الإصدارات الحديثة من Windows (إزالة PowerShell 2.0 من Windows)، إلا أنه لا يمكن تشغيله بدون إطار عمل .Net الإصدار 2.0، الأمر الذي يتطلب تثبيتًا يدويًا.

مهلة Metasploit

إذا قمت بتشغيل هذا البرنامج النصي ضمن جلسة Meterpreter، فمن المحتمل أن تحصل على خطأ "timeout". وذلك لأن Metasploit يستخدم قيمة مهلة افتراضية تبلغ 15 ثانية، وهي غير كافية لاكتمال تنفيذ نموذجي للبرنامج النصي.

meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_import /local/path/to/PrivescCheck.ps1
[+] File successfully imported. No result was returned.
meterpreter > powershell_execute "Invoke-PrivescCheck"
[-] Error running command powershell_execute: Rex::TimeoutError Operation timed out.

من الممكن تعيين مهلة مختلفة بفضل الخيار -t لأمر sessions (التوثيق). في المثال التالي، يتم تعيين مهلة دقيقتين للجلسة بالمعرف 1، ولكن قد ترغب في تعيين قيمة أعلى.

msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"

🏗️ البناء

تحديث البيانات

تعتمد بعض الفحوصات على بيانات عبر الإنترنت (على سبيل المثال قاعدة بيانات برامج تشغيل LOL)، ولكن البرنامج النصي مصمم للعمل دون اتصال بالإنترنت. لحل هذه المشكلة، يتم تضمين البيانات في البرنامج النصي، وبالتالي تحتاج إلى تحديث منتظم. هذه العملية مؤتمتة بالكامل في الإصدار الرسمي، ولكن إذا كنت تريد بناء البرنامج النصي محليًا، يمكنك القيام بذلك يدويًا اختياريًا.

powershell -ep bypass ". .\build\Build.ps1; Update-LolDriverFile"

بناء البرنامج النصي

بناء البرنامج النصي بسيط مثل تشغيل الأمر أدناه. سيتم حفظ ملف الإخراج في مجلد .\dist\.

powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck"

يستخدم برنامج البناء النصي مولّد أرقام شبه عشوائي مع بذرة مولّدة عشوائيًا لاختيار اسم متغير لكل وحدة. إذا كنت تريد إنشاء نتائج قابلة لإعادة الإنتاج عبر عمليات البناء، يمكنك اختيار إعادة استخدام البذرة المولّدة مسبقًا باستخدام الخيار -NoNewSeed.

powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewSeed"

يستخدم برنامج البناء النصي تشفير AES مع مفتاح مولّد عشوائيًا لإخفاء محتوى كل وحدة. إذا كنت تريد إنشاء نتائج قابلة لإعادة الإنتاج عبر عمليات البناء، يمكنك اختيار إعادة استخدام المفتاح المولّد مسبقًا باستخدام الخيار -NoNewKey.

powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewKey"

📑 الاعتمادات

الفئات