
gpoParser هي أداة مصممة لاستخراج وتحليل الإعدادات المطبقة عبر كائنات نهج المجموعة (GPOs) في بيئة Active Directory.
gpoParser هي أداة مصممة لاستخراج وتحليل الإعدادات المطبَّقة عبر كائنات نهج المجموعة (GPOs) في بيئة Active Directory. نظرًا لأن تعداد هذه الإعدادات قد يكون مملًا ويستغرق وقتًا طويلًا، توفر هذه الأداة فهمًا أوضح للسياسات المطبَّقة وتساعد في تحديد التهيئات الخطيرة التي قد تتيح الحركة الجانبية أو تصعيد الامتيازات. تم تقديمها في leHack 2025 و DEFCON 33.
ملاحظة: الاعتماد المطلوب لحزمة gssapi: libkrb5-dev، ثبّته عبر sudo apt install libkrb5-dev (أو عبر مدير الحزم المناسب لديك)
pipx install git+https://github.com/synacktiv/gpoParser
$ gpoParser -h
usage: gpoParser [-h] {local,remote,display,query,enrich} ...
GPO Analysis Tool
positional arguments:
{local,remote,display,query,enrich}
Choose mode
local Parse GPOs locally
remote Parse GPOs via remote LDAP/SYSVOL
display Display parsed GPO contents
query Query GPO parser results in order to display affected computers
enrich Enrich BloodHound with new edges
options:
-h, --help show this help message and exit
متصل: يتصل بدليل LDAP لجمع المعلومات المتعلقة بـ GPO وسماتها (flags و gPLink و gPOptions والمزيد). كما يتصل بمشاركة SYSVOL لجمع ملفات تهيئة GPO.
$ gpoParser remote -h
usage: gpoParser remote [-h] [-s SERVER] [-d DOMAIN] [-u USER] [-p PASSWORD] [-H HASH] [-k] [-o OUTPUT]
options:
-h, --help show this help message and exit
-s, --server SERVER LDAP server IP or FQDN (ex: ldap://192.168.57.5 or ldaps://dc.corp.local)
-d, --domain DOMAIN Domain name tied to the user
-u, --user USER Username
-p, --password PASSWORD
Password
-H, --hash HASH NTLM authentication, format is [LM:]NT
-k, --kerberos Use Kerberos authentication
-o, --output OUTPUT Output filename and location (default ./cache_gpoParser_<timestamp>.json)
$ gpoParser remote -u bob -p password -d corp -s 192.168.57.5
Retrieving \CORP.LOCAL\Policies\{008B0634-C0B9-443A-A06A-E2BAD875E27F}\Machine/Microsoft/Windows NT/SecEdit/GptTmpl.inf
Retrieving \CORP.LOCAL\Policies\{008B0634-C0B9-443A-A06A-E2BAD875E27F}\Machine/Preferences/Groups/Groups.xml
Retrieving \CORP.LOCAL\Policies\{008B0634-C0B9-443A-A06A-E2BAD875E27F}\Machine/Preferences/Registry/Registry.xml
[...]
Information saved to cache, now use display / query features
غير متصل: يتطلب نسخة (جزئية) من دليل LDAP ومحتوى مجلد Policies من مشاركة SYSVOL. حاليًا، يعتمد جمع دليل LDAP على:
Objects (NDJSON)$ gpoParser local -h
usage: gpoParser local [-h] [-f {ldeep,adexplorer}] [-o OUTPUT] sysvol_folder ldap_folder
positional arguments:
sysvol_folder SYSVOL folder containing the policies
ldap_folder Folder with LDAP dump in ldeep format
options:
-h, --help show this help message and exit
-f {ldeep,adexplorer}, --format {ldeep,adexplorer}
JSON files input format (default ldeep)
-o OUTPUT, --output OUTPUT
Output filename and location (default ./cache_gpoParser_<timestamp>.json)
$ mkdir sysvol && cd sysvol && echo -e 'prompt\nrecurse\nmget *' | smbclient -W CORP -U bob%password //192.168.57.5/SYSVOL
$ mkdir ldap && ldeep ldap -u bob -p password -d corp.local -s 192.168.57.5 all ldap/corp
$ gpoParser local sysvol/ ldap/
Information saved to cache, now use display / query features
يعرض هذا الوضع جميع تغييرات التهيئة المطبَّقة بواسطة GPOs، مع الاقتصار على التنسيقات المدعومة والبيانات التي تم تحليلها. يمكنك تصفية النتائج حسب اسم GPO أو GUID.
$ gpoParser display -h
usage: gpoParser display [-h] [-g GPO] [-c CACHE]
options:
-h, --help show this help message and exit
-g GPO, --gpo GPO Filter by GPO name or GUID
-c CACHE, --cache CACHE
Cache file location (default: ./cache_gpoParser_<timestamp>.json)
$ gpoParser display
Cache file found, using it
{6F3821B3-89B2-496D-82A5-58092D3EA588}: AddAdmin
Computer configuration
Groups
The following principals are added to BUILTIN\Administrators
CORP\admin
{ADC96BD4-86D3-4516-BCF2-F7BDD5A76366}: AddRDP
Computer configuration
Groups
The following principals are added to BUILTIN\Remote Desktop Users
CORP\bob
[...]
$ gpoParser display -g work
Cache file found, using it
{474D47E2-2B77-4E37-9744-A3CF6AB04449}: Workstation admins
Computer configuration
Groups
The following principals are added to BUILTIN\Administrators
CORP\Admin - All Workstations
يعرض هذا العرض العلاقات بين GPOs وأجهزة الكمبيوتر. على سبيل المثال، يمكنك معرفة الأجهزة التي ينطبق عليها GPO معيّن أو التغييرات المطبَّقة على جهاز واحد أو أكثر.
$ gpoParser query -h
usage: gpoParser query [-h] [-g GPO] [-C COMPUTER] [-c CACHE]
options:
-h, --help show this help message and exit
-g GPO, --gpo GPO Filter by GPO name or GUID
-C COMPUTER, --computer COMPUTER
Computer name or distinguishedName to filter on
-c CACHE, --cache CACHE
Cache file location (default: ./cache_gpoParser_<timestamp>.json)
$ gpoParser query
Cache file found, using it
{6F3821B3-89B2-496D-82A5-58092D3EA588}: AddAdmin
This GPO affects the following computers:
CN=SRV55,OU=PROD,OU=Servers,DC=CORP,DC=LOCAL
CN=SRV54,OU=PROD,OU=Servers,DC=CORP,DC=LOCAL
CN=SRV53,OU=PROD,OU=Servers,DC=CORP,DC=LOCAL
CN=SRV52,OU=PROD,OU=Servers,DC=CORP,DC=LOCAL
{6AC1786C-016F-11D2-945F-00C04FB984F9}: Default Domain Controllers Policy
This GPO affects the following computers:
CN=DC01,OU=Domain Controllers,DC=CORP,DC=LOCAL
{31B2F340-016D-11D2-945F-00C04FB984F9}: Default Domain Policy
This GPO affects the following computers:
CN=SRV51,OU=SUBSUB,OU=SUB,DC=CORP,DC=LOCAL
CN=SRV49,OU=SUB,DC=CORP,DC=LOCAL
CN=SRV50,OU=SUB,DC=CORP,DC=LOCAL
CN=SRV55,OU=PROD,OU=Servers,DC=CORP,DC=LOCAL
[...]
$ gpoParser query -C wks
Cache file found, using it
CN=WKS01,OU=ADMIN,OU=WORKSTATIONS,DC=CORP,DC=LOCAL
{31B2F340-016D-11D2-945F-00C04FB984F9}: Default Domain Policy
Computer configuration
Registry
The following registry key changes have been made
Action: Create
Path: MACHINE\System\CurrentControlSet\Control\Lsa\NoLMHash
Value: 4,1
The following registry key changes have been made
Action: Update
Hive: HKEY_LOCAL_MACHINE
Path: SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
Name: EnableMDNS
Value: 00000000
يحلّل معلومات GPO لإنشاء حواف إضافية مثل AdminTo و CanRDP و CanPSRemote، لتحديد فرص الحركة الجانبية التي قد لا يكتشفها BloodHound بشكل أصلي. تُضاف الحواف عبر الاتصال المباشر بقاعدة بيانات Neo4j.
$ gpoParser enrich -h
usage: gpoParser enrich [-h] [-u USER] [-p PASSWORD] [-s SERVER] [-c CACHE]
options:
-h, --help show this help message and exit
-u USER, --user USER Username for neo4j authentication (default: neo4j)
-p PASSWORD, --password PASSWORD
Password for neo4j authentication (default: bloodhoundcommunityedition)
-s SERVER, --server SERVER
Neo4j server URI (default: bolt://localhost:7687)
-c CACHE, --cache CACHE
Cache file location (default: ./cache_gpoParser_<timestamp>.json)
يُدخل استيعاب البيانات دون اتصال بعض القيود: قد لا يتم دائمًا جمع أو تفسير معاملات مثل حالة الوراثة، وحالة تهيئة المستخدم/الكمبيوتر، وعوامل تصفية الأمان، وعوامل تصفية WMI، والاستهداف على مستوى العنصر بواسطة الأدوات الحالية (BloodHound و PowerView و GPOHound). ستأخذ gpoParser جميع هذه المعاملات في الاعتبار تدريجيًا مع استمرار تطويرها. سيتم تقديم أدوات جمع بيانات إضافية مع تطور الأدوات.