العودة إلى التحديثات
New releaseSep 22, 2026

PrivescCheck v2026.09.21-1

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

مشاركة

PrivescCheck

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

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

البدء السريع

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

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

حالة الاستخدام 1: تقييم سريع

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Report TXT,HTML"

حالة الاستخدام 2: تقييم موسّع

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report TXT,HTML"

حالة الاستخدام 3: تقييم شامل

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report ALL"

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

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

    -Extended
        Include all "extended" checks in the scan.

    -Audit
        Include all "audit" checks in the scan.

    -Risky
        Include all "risky" checks in the scan. Those are checks that are
        likely to trigger active EDR counter measures due to their behavior.

    -Report <FORMAT>[,...]
        Specify output report file formats (TXT, HTML, CSV, XML). Use alias
        'ALL' to generate all report files. By default, the output filename
        is automatically generated. Use option '-FilePath' to specify one
        explicitly.

    -FilePath <PREFIX>
        Specify the output report file name or directory. The file extension
        is automatically appended. If a directory path is supplied, the
        filename is automatically generated at runtime.

    -Silent
        Suppress terminal output. This can be useful if you want to run the
        script as part of a batch file, in a scheduled task for instance.

    -Force
        Force execution and ignore warnings. Typically, the script stops if
        it is executed with administrator privileges. Use this option to
        execute it anyway.

تنسيقات ملفات التقرير

تنسيق ملف التقرير > TXT

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

Screenshot of a raw text report generated by PrivescCheck

تنسيق ملف التقرير > HTML

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

Screenshot of an HTML report generated by PrivescCheck

تنسيق ملف التقرير > CSV أو XML

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

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

أنواع الفحوصات

نوع الفحص > Base

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

نوع الفحص > Extended

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

نوع الفحص > 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"

الشكر والتقدير

الفئات