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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
profilehound — ProfileHound - جامع BloodHound OpenGraph لملفات تعريف المستخدمين المخزنة على أجهزة المجال. اتخذ قرارات مستنيرة بشأن نهب الأسرار من خلال تحديد ملفات تعريف المستخدمين النشطة على أجهزة المجال. | Kitploit
أدوات/GitHubGitHub/m4lwhere/profilehound
الاستخبارات مفتوحة المصدر (OSINT)الاستطلاعالحركة الجانبيةجمع المعلوماتما بعد الاستغلالاختبار الاختراقالفريق الأحمر
GitHubm4lwhere/profilehound

profilehound

ProfileHound - جامع BloodHound OpenGraph لملفات تعريف المستخدمين المخزنة على أجهزة المجال. اتخذ قرارات مستنيرة بشأن نهب الأسرار من خلال تحديد ملفات تعريف المستخدمين النشطة على أجهزة المجال.

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

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
root@kitploit:~
    ____             _____ __     __  __                      __
   / __ \_________  / __(_) /__  / / / /___  __  ______  ____/ /
  / /_/ / ___/ __ \/ /_/ / / _ \/ /_/ / __ \/ / / / __ \/ __  /
 / ____/ /  / /_/ / __/ / /  __/ __  / /_/ / /_/ / / / / /_/ /
/_/   /_/   \____/_/ /_/_/\___/_/ /_/\____/\__,_/_/ /_/\__,_/

ProfileHound

ProfileHound هي أداة ما بعد تصعيد الصلاحيات تساعد في العثور على أهداف عمليات الفريق الأحمر وتحقيقها من خلال تحديد ملفات تعريف المستخدمين في المجال على الأجهزة. تستخدم تنسيق BloodHound OpenGraph لإنشاء حافة جديدة تُسمى HasUserProfile تحدد ما إذا كان ملف تعريف مستخدم موجودًا على حاسوب معين. تتيح هذه الحافة للمشغّلين اتخاذ قرارات مستنيرة بشأن الأجهزة التي يجب استهدافها لسرقة الأسرار.

تتطلب هذه الأداة وصولًا إداريًا إلى مشاركة C$ على الأجهزة المستهدفة لتعداد ملفات تعريف المستخدمين.

شكرٌ كبير لـ Remi Gascou (@podalirius) على أداتي ShareHound و bhopengraph. لقد رغبت منذ فترة في بناء أداة لجمع هذه البيانات، واستخدام هذه المكتبات سمح لي بالتركيز على البناء بدلاً من الانشغال بالتفاصيل الداخلية.

[!WARNING] ProfileHound في مراحل تطوير مبكرة ولا تتوفر فيها جميع أوضاع الجمع بعد. استخدمها بحذر في بيئات الإنتاج، وتتحمل أنت مسؤولية المخاطر الناتجة عن استخدام هذه الأداة.

لماذا؟

تحولت أهداف ما بعد الاستغلال في Active Directory من البيانات المخزنة محليًا إلى تطبيقات SaaS والسحابة. ولإثبات القيمة في مجال الأمن الهجومي (offsec)، نحتاج إلى إظهار كيفية اختراق الوصول إلى هذه الخدمات. في كثير من الحالات، لا تُستخدم هذه الخدمات إلا من قبل مجموعات أو مستخدمين معينين، مثل الموارد البشرية والمالية وغيرها. في بعض السيناريوهات، لا يمكن الوصول إلى تطبيقات SaaS معينة إلا من أجهزة محددة.

حافة HasSession في BloodHound رائعة، لكنها مفيدة فقط عندما يكون المستخدم مسجلاً الدخول إلى جهاز. إذا لم يكن المستخدم مسجلاً الدخول إلى الجهاز عند جمع البيانات، فقد يكون من الصعب العثور على الحاسوب الذي قد يحتوي على أسرار تسهّل المزيد من الاستغلال. قد تحتوي ملفات تعريف المستخدمين على قدر كبير من المعلومات القيّمة ضمن DPAPI وبيانات الاعتماد المخزنة مؤقتًا ومفاتيح SSH ومفاتيح السحابة والمزيد - ولا يتطلب الوصول إلى هذه البيانات جلسة مستخدم نشطة.

مثال على حافة HasUserProfile

تستخدم ProfileHound تنسيق OpenGraph الخاص بـ BloodHound لبناء حافة رسم بياني جديدة تُسمى HasUserProfile تحدد ما إذا كان ملف تعريف مستخدم موجودًا على جهاز في المجال. يساعد ذلك المشغّلين على التركيز على الأجهزة التي يمتلك فيها مستخدم أو مجموعة عالية القيمة ملف تعريف.

تحتوي حافة HasUserProfile على خصائص لتاريخ إنشاء الملف الشخصي وتاريخ آخر تعديل. تساعد هذه المعلومات في تحديد:

  • إذا كان الملف الشخصي قيد الاستخدام النشط (تم تسجيل الدخول خلال الأيام القليلة الماضية)
  • إذا كان الملف الشخصي مستخدمًا لسنوات (فمن المرجح أن يحتوي على الكثير من الأسرار!)

مثال على خصائص حافة HasUserProfile

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

التثبيت

ثبّت ProfileHound باستخدام pipx (إلا إذا كنت تستمتع بجحيم الاعتماديات):

root@kitploit:~
pipx install profilehound

لاستخدام أحدث إصدار تجريبي، يمكنك التثبيت من المصدر:

root@kitploit:~
pipx install git+https://github.com/m4lwhere/profilehound.git

دوكر

لاستخدام نهج الحاويات، قم ببناء الصورة وتشغيل الأداة بما يلي:

root@kitploit:~
docker build -t profilehound .
docker run --rm profilehound --help
docker run --rm -v ${PWD}:/profilehound profilehound --auth-user alice --auth-password whiteRabbit --auth-domain sccm.lab --dns 192.168.57.10 --auth-dc-ip 192.168.57.10

الاستخدام

على سبيل المثال، للتشغيل باستخدام حساب مسؤول مجال sccm.lab\alice وكلمة مرور whiteRabbit:

root@kitploit:~
$ profilehound --auth-user alice --auth-password whiteRabbit --auth-domain sccm.lab --target 192.168.57.0/27
    ____             _____ __     __  __                      __
   / __ \_________  / __(_) /__  / / / /___  __  ______  ____/ /
  / /_/ / ___/ __ \/ /_/ / / _ \/ /_/ / __ \/ / / / __ \/ __  /
 / ____/ /  / /_/ / __/ / /  __/ __  / /_/ / /_/ / / / / /_/ /
/_/   /_/   \____/_/ /_/_/\___/_/ /_/\____/\__,_/_/ /_/\__,_/    v0.1.1
@m4lwhere

BloodHound CE OpenGraph collector for user profiles stored on domain machines.

[12/30/25 11:58:05] INFO     Loaded 32 targets
[12/30/25 11:58:08] INFO     Successful authentication on 192.168.57.10 (192.168.57.10) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.10\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.10\C$\Users\...
                    INFO         vagrant:    S-1-5-21-3016982856-3796307652-1246469985-1000  created:2025-11-07      modified:2025-11-07
                    INFO     Found 1 domain profile(s) for 192.168.57.10
                    INFO     Successful authentication on 192.168.57.11 (192.168.57.11) as sccm.lab\alice
[12/30/25 11:58:09] INFO     Successfully connected to share \\192.168.57.11\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.11\C$\Users\...
                    INFO         administrator:      S-1-5-21-3016982856-3796307652-1246469985-500   created:2025-11-07      modified:2025-11-07
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-28      modified:2025-11-07
                    INFO         eve:        S-1-5-21-3016982856-3796307652-1246469985-1116  created:2025-12-27      modified:2025-11-07
                    INFO     Found 3 domain profile(s) for 192.168.57.11
                    INFO     Successful authentication on 192.168.57.12 (192.168.57.12) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.12\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.12\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-28      modified:2025-12-28
                    INFO         franck:     S-1-5-21-3016982856-3796307652-1246469985-1117  created:2025-12-27      modified:2025-11-07
                    INFO         sccm-sql:   S-1-5-21-3016982856-3796307652-1246469985-1121  created:2025-11-07      modified:2025-11-07
                    INFO     Found 3 domain profile(s) for 192.168.57.12
                    INFO     Successful authentication on 192.168.57.13 (192.168.57.13) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.13\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.13\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-26      modified:2025-12-28
                    INFO         sccm-account-da:    S-1-5-21-3016982856-3796307652-1246469985-1119  created:2025-12-26      modified:2025-11-07
                    INFO     Found 2 domain profile(s) for 192.168.57.13
[12/30/25 11:59:27] INFO     Found 4 machines with profiles
                    INFO     Exported OpenGraph intel to profilehound_20251230-115805.json

يؤدي هذا إلى إنشاء ملف باسم profilehound_20251230-115805.json في الدليل الحالي. يمكن استيراد هذا الملف مباشرة إلى BHCE عن طريق سحبه وإفلاته في واجهة BloodHound. سيتم تحليله تلقائيًا وربط العقد عبر SID. سيتم إنشاء الحافة الجديدة HasUserProfile لإظهار العلاقة بين المستخدم والملف الشخصي.

ستقوم ProfileHound أيضًا بطباعة ملخص صغير للإحصائيات على وحدة التحكم عند اكتمال العملية:

root@kitploit:~
╭───────────────────────── General Summary ──────────────────────────────╮
│        ProfileHound Statistics                                         │
│  Total Targets with Profiles    4                                      │
│  Total Unique Profiles (Users)  7                                      │
│  Average Profiles per Target    2.25                                   │
╰────────────────────────────────────────────────────────────────────────╯
       Top Connected Users
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User          ┃ Machine Count ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ alice         │ 3             │
│ vagrant       │ 1             │
│ administrator │ 1             │
│ eve           │ 1             │
│ franck        │ 1             │
└───────────────┴───────────────┘
     Top Populated Machines
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Machine       ┃ Profile Count ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 192.168.57.11 │ 3             │
│ 192.168.57.12 │ 3             │
│ 192.168.57.13 │ 2             │
│ 192.168.57.10 │ 1             │
└───────────────┴───────────────┘
                       Oldest User Profiles
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User            ┃ Machine         ┃ Created    ┃ Last Modified ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ vagrant         │ DC.sccm.lab     │ 2025-11-07 │ 2025-11-07    │
│ sccm-sql        │ MSSQL.sccm.lab  │ 2025-11-07 │ 2025-11-07    │
│ administrator   │ MECM.sccm.lab   │ 2025-11-07 │ 2025-11-07    │
│ sccm-account-da │ CLIENT.sccm.lab │ 2025-12-26 │ 2025-11-07    │
│ alice           │ CLIENT.sccm.lab │ 2025-12-26 │ 2025-12-28    │
└─────────────────┴─────────────────┴────────────┴───────────────┘
                Longest Lived Profiles (Created -> Modified)
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User          ┃ Machine         ┃ Age (Days) ┃ Created    ┃ Last Modified ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ alice         │ CLIENT.sccm.lab │ 1.8        │ 2025-12-26 │ 2025-12-28    │
│ alice         │ MSSQL.sccm.lab  │ 0.0        │ 2025-12-28 │ 2025-12-28    │
│ sccm-sql      │ MSSQL.sccm.lab  │ 0.0        │ 2025-11-07 │ 2025-11-07    │
│ administrator │ MECM.sccm.lab   │ 0.0        │ 2025-11-07 │ 2025-11-07    │
│ vagrant       │ DC.sccm.lab     │ 0.0        │ 2025-11-07 │ 2025-11-07    │
└───────────────┴─────────────────┴────────────┴────────────┴───────────────┘
                     Top 5 Machines to Focus On (Hubs)
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Machine         ┃ Score ┃ Reason                                         ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ MECM.sccm.lab   │ 4.5   │ Has 3 profiles, potential lateral movement hub │
│ MSSQL.sccm.lab  │ 4.5   │ Has 3 profiles, potential lateral movement hub │
│ CLIENT.sccm.lab │ 3.5   │ Has 2 profiles, potential lateral movement hub │
│ DC.sccm.lab     │ 1.0   │ Has 1 profiles, potential lateral movement hub │
└─────────────────┴───────┴────────────────────────────────────────────────┘

كيف تعمل

تستخدم ProfileHound مشاركة C$ لتعداد ملفات تعريف المستخدمين على جهاز في المجال من المسار \\<target>\C$\Users\. ستقرأ ملف NTUSER.DAT الخاص بالمستخدم لتحديد ما إذا كان المستخدم حساب مجال أم حساب محلي عن طريق استخراج SID من بيانات الملف الوصفية. على سبيل المثال، ستجمع جميع أدلة المستخدمين في \\<target>\C$\Users\ ثم تمر على كل دليل للعثور على ملف NTUSER.DAT في \\<target>\C$\Users\<username>\NTUSER.DAT. إذا كان ملف NTUSER.DAT مملوكًا لـ SID معروف، فستحاول العثور على SID الخاص بالمستخدم من خلال قراءة دليل DPAPI الخاص به (مثل \\<target>\C$\Users\<username>\AppData\Roaming\Microsoft\Protect\<SID>).

نظرًا لأننا نصل إلى مشاركة C$، نحتاج إلى حساب إداري للمصادقة على الجهاز المستهدف. ستستخدم ProfileHound بيانات الاعتماد المقدمة للمصادقة على الجهاز المستهدف. إذا كنت تستخدم حساب مجال، يمكنك استخدام الخيار --auth-domain لتحديد المجال. إذا كنت تستخدم حسابًا محليًا، يمكنك استخدام الخيار --smb-local-auth.

بشكل افتراضي، تتوقف ProfileHound بعد فشل مصادقة مجال SMB لتقليل خطر قفل الحسابات. إذا كان من المتوقع أن ترفض بعض الأجهزة مصادقة المجال وتريد مواصلة فحص الأجهزة المتبقية، استخدم --smb-ignore-failed-domain-auth.

إذا توقفت ProfileHound أثناء جمع بيانات SMB بعد العثور على ملفات تعريف، فستحاول تصدير نتائج OpenGraph الجزئية قبل الخروج.

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

من المثير للاهتمام ملاحظة أنه إذا كان آخر تعديل لملف NTUSER.DAT قبل تاريخ الإنشاء، فمن المحتمل أن الملف الشخصي قد أُنشئ لكن لم يُستخدم بشكل ملموس. توجد هذه الحالة لأن ملف NTUSER.DAT يُنسخ من ملف التعريف C:\Users\Default عند إنشاء ملف تعريف مستخدم جديد، مع الحفاظ على نفس تاريخ التعديل حتى لو كان تاريخ الإنشاء لاحقًا. ولهذا، يمكننا أن نكون واثقين بشكل معقول أن هذا الملف الشخصي لن يحتوي على أي أسرار.

تحديد الأهداف

تستخدم ProfileHound مكتبة ShareHound الخاصة بـ @podalirius_ لتعداد الأهداف. إذا لم يتم توفير خيارات --target أو --target-file، ستعدد ProfileHound الأهداف عن طريق الاتصال بـ LDAP لجمع جميع أسماء FQDN للأجهزة في المجال تلقائيًا.

استعلامات ممتعة

هناك الكثير من الاستنتاجات القوية التي يمكننا استخلاصها من هذه البيانات، والتي تخبرنا أين يجب أن نركّز اهتمامنا. يمكن استيراد جميع هذه الاستعلامات إلى BloodHound عن طريق سحب وإفلات ملف ProfileHound_Cypher_Queries.zip في واجهة BloodHound باستخدام زر Import في صفحة Saved Queries. فيما يلي بعض الأمثلة:

العثور على جميع حواف ملفات تعريف المستخدمين

هذا استعلام بسيط يعثر على جميع ملفات تعريف المستخدمين في الرسم البياني.

root@kitploit:~
MATCH p=(u:User)-[:HasUserProfile]->(c:Computer)
RETURN p

العثور على ملفات تعريف المستخدمين حسب اسم المجموعة

سيؤدي هذا إلى العثور على جميع ملفات تعريف المستخدمين الأعضاء في مجموعة "Administrators" بالمجال.

root@kitploit:~
MATCH p=(g:Group)<-[:MemberOf*1..]-(u:User)-[:HasUserProfile]->(c:Computer)
WHERE toLower(g.samaccountname) = "administrators"
RETURN p

العثور على ملفات تعريف المستخدمين النشطة خلال آخر 3 أيام

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

root@kitploit:~
WITH 3 as active_days
MATCH p = (u:User)-[e:HasUserProfile]-(c:Computer)
WHERE e.profileModified > (datetime().epochseconds - (active_days * 86400))
RETURN p

ملفات تعريف المستخدمين النشطة ضمن مجموعة محددة (قوي)

هذا استعلام قوي للغاية لتحديد ملفات تعريف مستخدمين معينة استُخدمت خلال آخر 3 أيام لأعضاء مجموعة محددة.

root@kitploit:~
WITH 3 as active_days, "administrators" as group_name
MATCH p = (g:Group)<-[:MemberOf*1..]-(u:User)-[e:HasUserProfile]-(c:Computer)
WHERE e.profileModified > (datetime().epochseconds - (active_days * 86400)) AND toLower(g.samaccountname) = group_name
RETURN p

إزالة ملفات تعريف المستخدمين غير المستخدمة

سيؤدي هذا إلى إزالة أي ملفات تعريف مستخدمين حيث يتم تعديل ملف NTUSER.DAT قبل تاريخ الإنشاء. يشير ذلك إلى أن الملف الشخصي أُنشئ لكن لم يُستخدم بشكل ملموس. توجد هذه الحالة لأن ملف NTUSER.DAT يُنسخ من ملف التعريف C:\Users\Default عند إنشاء ملف تعريف مستخدم جديد، مع الحفاظ على نفس تاريخ التعديل حتى لو كان تاريخ الإنشاء لاحقًا.

root@kitploit:~
match p = (u:User)-[e:HasUserProfile]-(c:Computer)
where e.profileCreated < e.profileModified
return p

شكر وتقدير

لن يكون هذا ممكنًا ببساطة دون مكتبتي Remi Gascou (@podalirius) ShareHound و bhopengraph.

التحسينات المستقبلية

ينصب تركيز هذه الأداة على تحديد الأجهزة الأكثر احتمالًا لاحتواء أسرار لمستخدمين محددين. ستشمل التحسينات المستقبلية ما يلي:

  • تنفيذ SCCMHunter الخاص بـ @garrettfoster13 كمكتبة لتحسين جمع البيانات.
    • استخدام دالة get_lastlogon لإنشاء حواف HasUserProfile على الأجهزة.
    • استخدام دالة get_puser لربط مستخدمي المجال كمالكين رئيسيين للأجهزة لأجهزة معينة.
  • تنفيذ ربط ملكية أجهزة Azure AD من AzureHound.
    • يبدو أن هذا يُجمع بالفعل ككائن AZDeviceOwner في .data.owners[owner.DeviceOwner.onPremisesSecurityIdentifier]
  • استخدام ShareHound للزحف على الملفات الحساسة في ملفات التعريف المطابقة وإدخالها في الرسم البياني.
  • استخراج البيانات من ملف NTUSER.DAT للبرامج والمستندات ونشاط المتصفح الحديث.
تنزيل الأداة