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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Grouper — نص PowerShell للمساعدة في العثور على الإعدادات الضعيفة في نهج المجموعة لـ Active Directory. (مهمل، استخدم Grouper2 بدلاً من ذلك!) | Kitploit
أدوات/GitHubGitHub/l0ss/grouper
تصعيد الامتيازاتتحليل الثغرات الأمنيةتدقيق التكويناختبار الاختراق
GitHubl0ss/grouper

Grouper

نص PowerShell للمساعدة في العثور على الإعدادات الضعيفة في نهج المجموعة لـ Active Directory. (مهمل، استخدم Grouper2 بدلاً من ذلك!)

عرض المستودع
732116منذ 7 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Grouper

لا تستخدم GROUPER بعد الآن. استخدم GROUPER2! https://github.com/l0ss/Grouper2

برنامج PowerShell للمساعدة في العثور على الإعدادات الضعيفة في نهج المجموعة (Group Policy) في Active Directory.

صورة لسمكة

الصورة بواسطة Jon Hanson - https://www.flickr.com/people/61952179@N00?rb=1 - https://creativecommons.org/licenses/by-sa/2.0/

ملخص

Grouper هي وحدة PowerShell مصممة لمختبري الاختراق وفرق الاختراق الأحمر (على الرغم من أنها قد تكون مفيدة أيضًا لمسؤولي الأنظمة) تقوم بغربلة مخرجات XML (الكثير من الضوضاء عادةً) من أمر Get-GPOReport cmdlet (جزء من وحدة نهج المجموعة من Microsoft) وتحديد جميع الإعدادات المحددة في كائنات نهج المجموعة (GPOs) التي قد تكون مفيدة لشخص يحاول فعل شيء ممتع/شرير.

أمثلة على أنواع الأشياء التي تجدها في GPOs:

  • GPOs التي تمنح أذونات تعديل على GPO نفسه لمستخدمين غير افتراضيين.
  • نصوص بدء التشغيل والإيقاف (Startup and shutdown scripts)
    • الحجج والنصوص نفسها تتضمن غالبًا بيانات اعتماد.
    • النصوص غالبًا ما تُخزن بأذونات تسمح لك بتعديلها.
  • مثبتات MSI التي تُنشر تلقائيًا
    • مرة أخرى، غالبًا ما تُخزن في مكان يمنحك أذونات تعديل.
  • كلمات مرور نهج المجموعة القديمة الطراز (Group Policy Preferences passwords).
  • إدخالات تسجيل الدخول التلقائي (Autologon registry entries) التي تحتوي على بيانات اعتماد.
  • بيانات اعتماد أخرى مخزنة في السجل لأشياء ممتعة مثل VNC.
  • مهام مجدولة (Scheduled tasks) ببيانات اعتماد مخزنة.
    • أيضًا غالبًا ما تشغل أشياء من مشاركات ملفات غير مؤمنة جيدًا.
  • حقوق المستخدم (User Rights)
    • مفيد لرصد الأماكن التي منح فيها المسؤولون بالخطأ وصول RDP لـ 'Domain Users' أو تلك الحقوق الممتعة التي تسمح لك بتشغيل mimikatz حتى بدون صلاحيات إدارة كاملة.
  • تعديلات على أذونات الملفات المحلية
    • جيد للعثور على تلك الأجهزة التي وضع فيها المسؤولون "Full Control" لـ "Everyone" على "C:\Program Files".
  • مشاركات الملفات (File Shares)
  • ملفات INI
  • متغيرات البيئة (Environment Variables)
  • ... والمزيد! (حسنًا، ليس كثيرًا، لكن بعضها)

نعم إنها خشنة بعض الشيء، لكنها توفر علي قدرًا هائلاً من الوقت في قراءة تقارير GPO HTML الرهيبة بحجم 150 ميجابايت، وإذا كانت تعمل معي فقد تعمل معك.

ملاحظة: على الرغم من أن بعض أسماء الوظائف قد تتضمن كلمة "تدقيق" (audit)، فإن Groper ليس المقصود منه بأي حال أن يكون تدقيقًا شاملاً للتكوينات الأفضل الممارسات إلخ. إذا كنت تريد ذلك، يجب عليك استخدام Microsoft SCT و LGPO.exe أو شيء من هذا القبيل.

الاستخدام

قم بإنشاء تقرير GPO على جهاز Windows مثبتة عليه أوامر نهج المجموعة cmdlets. هذه الأوامر مثبتة افتراضيًا على وحدات التحكم بالمجال (Domain Controllers)، ويمكن تثبيتها على عملاء Windows باستخدام RSAT، أو تمكينها من خلال معالج "إضافة ميزة" على خوادم Windows.

root@kitploit:~
Get-GPOReport -All -ReportType xml -Path C:\temp\gporeport.xml

قم باستيراد وحدة Grouper.

root@kitploit:~
Import-Module .\grouper.psm1

قم بتشغيل Grouper.

root@kitploit:~
Invoke-AuditGPOReport -Path C:\temp\gporeport.xml

المعاملات (Parameters)

هناك أيضًا بعض المعاملات التي يمكنك العبث بها لتغيير إعدادات النهج التي سيظهرها Grouper:

root@kitploit:~
-showDisabled

افتراضيًا، سيعرض Grouper فقط GPOs الممكّنة حاليًا والمرتبطة بوحدة تنظيمية (OU) في AD. هذا يبدل هذا السلوك.

root@kitploit:~
-Online

افتراضيًا، يعمل Grouper فقط مع مخرجات XML الفعلية من Get-GPOReport، ولا يقوم بأي اتصالات شبكة على الإطلاق، مما يجعله "آمنًا من حيث العمليات (opsec safe)"، رغم أنني أكره هذا المصطلح.

إذا قمت بتشغيله مع -Online، سيقوم Grouper بتفعيل الفحوصات التي تتطلب التحدث إلى (على الأقل) مجال AD الذي تم إنشاء التقرير منه، ولكنها ستتضمن أيضًا التحدث إلى خوادم الملفات مثلًا. سيسمح هذا لـ Grouper بالقيام بأشياء مفيدة مثل الإبلاغ عن ACLs على الملفات المستهدفة بواسطة GPOs، والتحقق مما إذا كان المستخدم الحالي يستطيع الكتابة إلى الملف المعني.

root@kitploit:~
-Level

Grouper لديه 3 مستويات من التصفية يمكنك تطبيقها على مخرجاته.

  1. أرني جميع الإعدادات التي يمكنك.
  2. (افتراضي) أرني فقط الإعدادات التي تبدو 'مثيرة للاهتمام' ولكن قد لا تكون ضعيفة.
  3. أرني فقط الإعدادات التي تعتبر بالتأكيد فكرة سيئة للغاية وستحتوي على بيانات اعتماد أو ستمنحني صلاحية مدير على مضيف آخر.

الاستخدام بسيط. -Level 3، -Level 2، إلخ.


الأسئلة الشائعة

أنا في مهمة ولا أجد جهازًا مرتبطًا بالمجال يمكنني الوصول إليه مع تثبيت أوامر نهج المجموعة cmdlets ولا أريد تثبيتها لأن ذلك مزعج وفوضوي!

يعمل Get-GPOReport بشكل جيد على الأجهزة غير المرتبطة بالمجال عبر runas /netonly. ستحتاج إلى بعض بيانات الاعتماد منخفضة الصلاحية، لكن هذا متوقع.

افعل مثل هذا:

root@kitploit:~
runas /netonly /user:domain\user powershell.exe

على جهاز غير مرتبط بالمجال يمكنه الاتصال بوحدة تحكم بالمجال.

ثم في جلسة PowerShell الناتجة، افعل مثل هذا:

root@kitploit:~
Get-GpoReport -Domain example.com -All -ReportType xml -Path C:\temp\gporeport.xml

سهل.

أنا لا أثق بك لذا لا أريد تشغيل البرنامج النصي المريب الخاص بك على جهاز مرتبط بالمجال، لكني أريد تجربة Grouper.

كل ما يحتاجه Grouper للعمل هو PowerShell 2.0 وملف xml الناتج من Get-GPOReport. يمكنك تشغيله على VM بدون كرت شبكة إذا كنت قلقًا وسيظل يعمل بشكل جيد.

ومع ذلك، إنه كود بسيط إلى حد ما لذا لا ينبغي أن يكون من الصعب رؤية أنه لا يفعل أي شيء مريب عن بعد.

أعتقد أنه من الغباء أنك تعتمد على أوامر MS Group Policy cmdlets/RSAT لـ Grouper. يجب أن تكتبه لاستعلام المجال مباشرة أو لتحليل ملفات النهج مباشرة من SYSVOL.

إجابة قصيرة: نعم.

إجابة طويلة: نعم، فعل أحد هذه الأشياء سيكون أفضل، لكن هناك شيئين منعوني من فعلها حتى الآن.

من الناحية المثالية، أود تحليل ملفات النهج مباشرة من SYSVOL، لكنها مخزنة بمجموعة من تنسيقات الملفات المختلفة، بعضها مملوك، وهي حقًا مزعجة في القراءة، وليس لدي الوقت ولا الرغبة في كتابة مجموعة من المحللات (parsers) لها من الصفر عندما توفر Microsoft بالفعل cmdlets تقوم بالمهمة بشكل جيد.

في المستقبل غير البعيد، أود دمج Get-GPOReport من Microsoft داخل Grouper، حتى لا تحتاج إلى RSAT على الإطلاق، لكني بحاجة لمعرفة ما إذا كان ذلك سيشكل انتهاكًا لحقوق النشر. أحتاج أيضًا لمعرفة كيفية فعل ذلك الشيء الذي قلته للتو.


أسئلة أتوقعها

Grouper يعرض لي جميع هذه الإعدادات غير الضعيفة. ما هذا بحق الجحيم؟ الكثير من الإيجابيات الكاذبة؟

Grouper ليس ماسحًا للثغرات. Grouper يقوم فقط بتصفية الكم الهائل من الحشو والضوضاء في تقارير نهج المجموعة لإظهار فقط إعدادات النهج التي يمكن تكوينها بطرق قابلة للاستغلال.

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

Grouper لم يظهر لي شيئًا أعرف أنه ضعيف تمامًا في نهج المجموعة. ما هذا بحق الجحيم؟ سلبيات كاذبة كثيرة؟

رائع، لقد وجدت طريقة لتحسين Grouper! قم بالتمرير لأسفل وسترى حيث قدمت دليلًا صغيرًا لإضافة فحوصات جديدة إلى Grouper.

ليس لدي بيئة مختبر وليس لدي ملف تقرير GPO في متناول اليد! وأنا أيضًا شديد النفاذ!

أنا معك يا صديقي. يوجد ملف test_report.xml في المستودع يمكنك تجربته. يحتوي على مجموعة من الإعدادات السيئة حتى ترى كيف يبدو ذلك.

ستحتاج إلى تشغيله مع العلم -showDisabled لأنه مليء بتكوينات سيئة لدرجة أنني لم أرغب حتى في تمكين GPO في بيئة مختبر.

أنا أكثر نفادًا من ذلك الرجل السابق وأطالب بصور جميلة فورًا!

حسنًا.

لقطة شاشة لمخرجات الاختبار

لكن انتظر، كيف أعرف أي المستخدمين / الأجهزة تنطبق عليها هذه النهج؟ الشيء الخاص بك عديم الفائدة!

إجابة قصيرة: PowerView ستقوم بعمل جيد في هذا.

إجابة أطول: سأحاول إضافة هذه الوظيفة في وقت ما، لكن في الوقت الحالي، اصمت واستخدم PowerView.

أنا أكره أحد فحوصات Grouper ولا أريد رؤيته مرة أخرى.

رائع، سهل الإصلاح.

افتح grouper.ps1، ابحث عن مصفوفة "$polchecks" وقم فقط بتعليق السطر الذي يتم فيه إضافة هذا الفحص إلى المصفوفة.

تم.

أريد تحسين Grouper لكن لا أستطيع فهم الكود الإسباجيتي الفظيع الخاص بك. ساعدني لأساعدك.

بالتأكيد، يبدو جيدًا.

  1. احصل على بعض مخرجات XML لتقرير GPO التي تتضمن نوع النهج/الإعداد الذي تريد أن يتمكن Grouper من العثور عليه. قد يتطلب هذا إنشاء نهج مناسب في بيئة مختبر.

  2. ابحث عن كائن XML <GPO> الذي يطابق النهج المستهدف.

  3. ابحث عن القسم الفرعي من XML الذي يطابق المعلومات التي تريد استخراجها من النهج. إعدادات النهج مقسمة إما إلى نهج المستخدم (User) أو نهج الكمبيوتر (Computer)، لذا سيكون هذا عادةً في أحد:

    root@kitploit:~
    GPO.Computer.ExtensionData.Extension
    or
    GPO.User.ExtensionData.Extension
    
  4. الآن الجزء المزعج - سبب كون هذا الكود فوضويًا هو أن كل قسم من إعدادات النهج منظم بشكل مختلف ويستخدم اصطلاحات تسمية مختلفة جدًا، لذا ستحتاج لمعرفة كيفية تنظيم النهج المستهدف. حظًا سعيدًا؟

  5. إليك هيكل دالة فحص يمكنك استخدامه للبدء. تأكد من أنها إما لا تعود بشيء على الإطلاق أو تعود بقيمة $null إذا لم يتم العثور على شيء مثير للاهتمام.

    root@kitploit:~
    Function Get-GPOThing {
        [cmdletbinding()]
        Param (
            [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()]  [System.Xml.XmlElement]$polXML,
            [Parameter(Mandatory=$true)][ValidateSet(1,2,3)][int]$level
        )
    
        ######
        # الوصف: يتحقق من الأشياء.
        # ضعيف: وصف لما يظهره إذا كان Level -eq 3
        # مثير للاهتمام: وصف لما يظهره إذا كان Level -eq 2
        # ممل: جميع الأشياء.
        ######
    
    	$settingsThings = ($polXml.Thing.ExtensionData.Extension.Thing |  Sort-Object GPOSettingOrder)
    
        if ($settingsThings) {
    	    foreach ($setting in $settingsThings) {
                if ($level -eq 1) {
                    $output = @{}
                    $output.Add("Name", $setting.Name)
                    if ($setting.SettingBoolean) {
                        $output.Add("SettingBoolean", $setting.SettingBoolean)
                    }
                    if ($setting.SettingNumber) {
                        $output.Add("SettingNumber", $setting.SettingNumber)
                    }
                    $output.Add("Type", $setting.Type.InnerText)
                    Write-Output $output
                    ""
                }
            }
        }
    }
    
    

الشكر، الشكاوى، التعليقات، تهديدات الموت، الأخطاء المطبعية

شكر جزيل لكل من:

  • @harmj0y لدالة مساعدته في فك تشفير كلمة مرور GPP.
  • @sysop_host و @prashant3535 لمساعدتهم وتشجيعهم. أعتقد أنه ربما لا يزال هناك سطر أو اثنان مسروقان من @sysop_host في هذا الشيء لكنني لست متأكدًا أين بالضبط وأكره إلقاء اللوم عليه بسبب كودي السيئ.

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

تنزيل الأداة
  • استخدم Ctrl-f للوصول إلى "$polchecks" وأضفه إلى مصفوفة الفحوصات مع البقية.

  • اختبره.

  • إذا كان يعمل، قدم طلب سحب (pull request)!

  • إذا علقت، تواصل معي. سأحاول المساعدة إذا تمكنت من توفير بضع دقائق.