
أداة تعداد أمني لأكتيف ديركتوري منخفضة الظهور تستخدم واجهات ADSI/COM الأصلية. تعدّد قوائم ACL، والتفويض، وعلاقات الثقة، وADCS، وأهداف Kerberoast، ومسارات الهجوم دون الحاجة إلى .NET أو PowerShell، مع إنتاج مخرجات متوافقة مع BloodHound.
BloodHound يُظهر لك المسار. أما Kestrel فيُظهر لك ما هو موجود بالفعل في الداخل.
الجميع يرسمون الخريطة نفسها: مسار الهجوم - من يستطيع الوصول إلى Domain Admin. إنه السؤال الصحيح، والأدوات التي تجيب عنه ممتازة. لكن رسم بياني لـ "من يستطيع الوصول إلى من" أعمى عن فئة كاملة من المشكلات، لأن بعض أسوأ الأشياء الموجودة في Active Directory ليست مسارًا على الإطلاق.
إنها باب خلفي ملحوم داخل سمة. شهادة تستمر في المصادقة لفترة طويلة بعد إعادة تعيين كلمة المرور. إذن مطبوع في المخطط نفسه، بحيث يرثه كل كائن يُنشأ من الآن فصاعدًا بصمت. حساب محذوف احتفظ أحدهم بهدوء بحق إعادته. كائن مخفي عن التعداد بواسطة ACE واحد يمنع القراءة.
لا شيء من ذلك يمثل حافة في رسم بياني. كل ذلك موجود في دليلك الآن. يقرأه Kestrel - باستدعاءات Windows الأصلية، وحقوق مستخدم نطاق عادية، دون خادم، دون Python، دون وكيل، وبصمة على وحدة التحكم بالمجال محدودة لدرجة أنها موثقة حدثًا بحدث.
ملف .exe واحد. أمر واحد. كل ما يلي.
منظومة AD الهجومية - SharpHound وimpacket وCertipy والرسم البياني خلفها - رائعة، وكلها تنظر إلى السطح نفسه: إمكانية الوصول. أما Kestrel فينظر إلى الأبعاد الثلاثة التي لا يستطيع ذلك السطح التعبير عنها.
defaultSecurityDescriptor في المخطط، والكائنات المخفية، وACEs رفض OWNER RIGHTS، ومفاتيح AD FS DKM. أدوات الرسم البياني لا تجمع هذه لأنه لا توجد حافة لرسمها.ليس الأمر أن Kestrel أسرع من رسم بياني. إنه يجيب عن أسئلة لا يستطيع الرسم البياني طرحها.
| الخطر | ما يكتشفه Kestrel | العلامة/العلامات |
|---|---|---|
| النسخ المتماثل والتفويض | حقوق DCSync (من يستطيع النسخ المتماثل - دون أن يقوم بالنسخ المتماثل أبدًا)، التفويض غير المقيّد / المقيّد / RBCD / S4U | --acl · --delegation |
| إساءة استخدام الشهادات | AD CS ESC1–5/9، CA مارق في مخزن NTAuth، استمرارية شهادة طويلة الأمد، ACL مفتاح AD FS DKM - الشرط المسبق لـ Golden SAML | --adcs · --adfs |
| الاستمرارية في السمات | بيانات اعتماد الظل، حقن سجل SID، حقوق إعادة إحياء شواهد القبور، الكائنات المخفية، أبواب خلفية defaultSecurityDescriptor في المخطط، adminCount اليتيم | --shadowcreds · --sidhistory · --acl · --schema · --adminsdholder |
| بيانات اعتماد نصية صريحة وقابلة للكسر | cpassword في GPP، أسرار unattend/sysprep وكلمات مرور النصوص البرمجية عبر SYSVOL، الحسابات القابلة لـ Kerberoast وAS-REP-roast، ثغرات تغطية LAPS | --gpp · --roast · --laps |
| عبر النطاقات والهجين | الكيانات الخارجية في المجموعات المميزة، حسابات مزامنة Entra Connect الموسومة Tier-0، وضع الثقة، حسابات الأجهزة المنشأة عبر MachineAccountQuota (mS-DS-CreatorSID) | --groups · --trust · --machines |
| الوضع الأمني والاستطلاع | سياسة كلمات المرور / PSO، عمر krbtgt، إعدادات GPO لـ LLMNR / NBT-NS / WDigest / NTLMv1، قارئات gMSA، الأجهزة القديمة، طوبولوجيا التفويض | --pwdpolicy · --policy · --gmsa · --stale |
| علم الآثار | ACEs خطرة يتيمة (حق يحتفظ به كيان محذوف - يُحلّ SID إلى لا أحد)، حسابات مميزة قديمة (منسية، مفرطة الامتيازات، كلمة مرور قديمة) | --archaeology |
| تقوية النطاق | علامات dSHeuristics لـ LDAP المجهول / استبعاد AdminSDHolder، عضوية واسعة في Pre-Windows 2000 Compatible Access | --hardening |
| وضع الخدمة (يُقرأ من AD، دون حزمة إلى الخدمة) | تصعيد Exchange-to-DA ونهاية العمر، الاستيلاء على حاوية SCCM وخريطة الموقع، تسميم منطقة ADIDNS (يمكن للمستخدمين المصادق عليهم إنشاء سجلات) | --exchange · --sccm · --dns |
أكثر من عشرين فحصًا عادةً ما تكون موزعة عبر عشرات النصوص البرمجية ولغتين. هنا هي ثنائية واحدة - وتنتهي بحكم واحد مرتب حسب الخطورة.
Kestrel.exe --all --report audit.html
شغّل كل شيء. احصل على تقرير HTML الكامل. وفي نهاية وحدة التحكم تمامًا، الجزء المهم:
═══ Kestrel - Prioritized Findings ═══
CRITICAL DCSync CORP\svc_sql - non-default principal can replicate directory changes (DCSync)
→ fix: remove GetChanges/GetChangesAll from the principal on the domain head (dsacls) unless it is a DC
CRITICAL AD FS CN=... - read access to the DKM key (Golden SAML precondition)
→ fix: remove non-default read ACEs on the DKM object (dsacls) and rotate the token-signing certificate
HIGH Persistence CN=... - object hidden from enumeration via a broad deny-read ACE
→ fix: inspect the hidden object and remove the broad deny-read ACE (dsacls)
[=] 2 critical · 1 high · 0 medium · 0 low
ليس جدارًا من المخرجات. النتائج المهمة، مرتّبة، كل واحدة منها مرفقة بالأمر اللازم لإغلاقها.
--opengraph) لدمجها مع مجموعتك الحالية، أو انطلق من أي principal (--from).--diff مقابل لقطة الأسبوع الماضي لالتقاط ما تغيّر؛ وأداة نُشر أثر الكشف الدقيق الخاص بها كي تتمكن من إدراجها في القائمة البيضاء وضبط تنبيهاتك حولها.Kestrel للقراءة فقط. لا يكتب أبدًا إلى الدليل، ولا ينسخ، ولا يحتاج إلى SeSecurityPrivilege، ولا يمسّ السحابة. قراءة من يستطيع تنفيذ DCSync لا تشبه إطلاقًا، على مستوى الشبكة، تنفيذ DCSync - لا DRSUAPI، ولا 4662 الخاص بتوقيع النسخ المتماثل. كل استعلام يشغّله وكل حدث يمكنه توليده (وما لا يمكنه) مُفهرَس في FOOTPRINT.md. أداة تدقيق تخبر المدافع بالضبط كيف يلتقطها ليست تناقضًا - بل هذا هو المقصد كله.
احصل على بناء. كل تشغيل ناجح لـ CI ينشر أثرًا باسم Kestrel.exe - نزّله من تبويب Actions، دون الحاجة إلى toolchain.
أو ابنِه بنفسك. Visual Studio (v143+) أو MSBuild:
git clone https://github.com/ssteelfactor-oss/Kestrel.git
cd Kestrel
msbuild Kestrel.vcxproj /p:Configuration=Release /p:Platform=x64
C خالص، بدون أي تبعيات خارجية. ابنِ /MT وستحصل على ملف تنفيذي واحد مكتفٍ ذاتيًا - ضعه على مضيف منضم إلى النطاق، وشغّله بأي مستخدم عادي.
شغّله.
Kestrel.exe --all --report audit.html # everything, HTML report + ranked findings
Kestrel.exe --acl --adcs --adfs # pick specific checks
Kestrel.exe --paths --from CORP\jdoe # attack paths from one principal
Kestrel.exe --all --diff last-week.json # what changed since the last snapshot
Kestrel.exe --all --opengraph graph.json # export to BloodHound CE OpenGraph
شغّل --all، أو اختر أي مجموعة فرعية. المساعدة الكاملة: Kestrel.exe --help.