
कम-अवलोकनीयता वाला Active Directory सुरक्षा गणना उपकरण जो देशी ADSI/COM इंटरफेस का उपयोग करता है। यह ACLs, प्रतिनिधि अधिकार, विश्वास संबंध, ADCS, Kerberoast लक्ष्य, और हमले के पथों की गणना करता है, बिना .NET या PowerShell के, और BloodHound-संगत आउटपुट उत्पन्न करता है।
BloodHound आपको रास्ता दिखाता है। Kestrel आपको दिखाता है कि पहले से अंदर क्या मौजूद है।
हर कोई एक ही चीज़ का नक्शा बनाता है: हमले का रास्ता - कौन Domain Admin तक पहुँच सकता है। यह सही सवाल है, और जो टूल्स इसका जवाब देते हैं वे बेहतरीन हैं। लेकिन "कौन किस तक पहुँच सकता है" का ग्राफ़ समस्याओं की एक पूरी श्रेणी के प्रति अंधा है, क्योंकि Active Directory में मौजूद कुछ सबसे खतरनाक चीज़ें कोई रास्ता नहीं होतीं।
वे एक attribute में वेल्ड किया गया backdoor होती हैं। एक certificate जो password रीसेट होने के बहुत बाद तक प्रमाणित करता रहता है। एक permission जो schema में ही अंकित होती है, ताकि अब से बनने वाला हर object उसे चुपचाप विरासत में पा ले। एक हटाया गया account जिसे किसी ने चुपचाप वापस लाने का अधिकार अपने पास रखा। एक object जो enumeration से एक ही deny-read ACE द्वारा छिपाया गया है।
इनमें से कोई भी ग्राफ़ में एक edge नहीं है। यह सब अभी आपकी directory में मौजूद है। Kestrel इसे पढ़ता है - native Windows calls के साथ, सामान्य domain-user अधिकारों के साथ, कोई server नहीं, कोई Python नहीं, कोई agent नहीं, और domain controller पर इतना सीमित footprint कि वह event-by-event प्रलेखित है।
एक .exe। एक command। नीचे सब कुछ।
offensive AD ecosystem - SharpHound, impacket, Certipy, और उनके पीछे का ग्राफ़ - शानदार है, और यह सब एक ही सतह को देखता है: reachability। Kestrel उन तीन आयामों को देखता है जिन्हें वह सतह व्यक्त नहीं कर सकती।
defaultSecurityDescriptor backdoors, छिपे हुए objects, OWNER RIGHTS deny-ACEs, AD FS DKM keys। ग्राफ़ टूल्स इन्हें एकत्र नहीं करते क्योंकि इन्हें खींचने के लिए कोई edge नहीं है।ऐसा नहीं है कि Kestrel किसी ग्राफ़ से तेज़ है। यह उन सवालों का जवाब देता है जो ग्राफ़ पूछ ही नहीं सकता।
| पाप | Kestrel क्या पाता है | फ़्लैग |
|---|---|---|
| प्रतिकृति और प्रत्यायोजन | DCSync अधिकार (कौन प्रतिकृति बना सकता है - बिना कभी प्रतिकृति बनाए), unconstrained / constrained / RBCD / S4U प्रत्यायोजन | --acl · --delegation |
| प्रमाणपत्र दुरुपयोग | AD CS ESC1–5/9, NTAuth स्टोर में रोगी CA, दीर्घकालिक प्रमाणपत्र दृढ़ता, AD FS DKM कुंजी ACL - गोल्डन SAML की पूर्व शर्त | --adcs · --adfs |
| विशेषताओं में दृढ़ता | Shadow credentials, SID इतिहास इंजेक्शन, tombstone-reanimation अधिकार, छिपी वस्तुएँ, schema defaultSecurityDescriptor बैकडोर, अनाथ adminCount | --shadowcreds · --sidhistory · --acl · --schema · --adminsdholder |
| स्पष्ट और क्रैक करने योग्य क्रेडेंशियल | GPP cpassword, SYSVOL में unattend/sysprep रहस्य और स्क्रिप्ट पासवर्ड, Kerberoastable और AS-REP-roastable खाते, LAPS कवरेज अंतराल | --gpp · --roast · --laps |
| क्रॉस-डोमेन और हाइब्रिड | विशेषाधिकार प्राप्त समूहों में विदेशी प्रिंसिपल, Tier-0 के रूप में चिह्नित Entra Connect सिंक खाते, ट्रस्ट स्थिति, MachineAccountQuota के माध्यम से बनाए गए मशीन खाते (mS-DS-CreatorSID) | --groups · --trust · --machines |
| स्थिति और पुनर्ज्ञान | पासवर्ड / PSO नीति, krbtgt आयु, LLMNR / NBT-NS / WDigest / NTLMv1 GPO सेटिंग्स, gMSA पाठक, पुराने कंप्यूटर, प्रत्यायोजन टोपोलॉजी | --pwdpolicy · --policy · --gmsa · --stale |
| पुरातत्व | अनाथ खतरनाक ACE (हटाए गए प्रिंसिपल द्वारा धारित अधिकार - SID किसी का नहीं होता), पुराने विशेषाधिकार प्राप्त खाते (भूले हुए, अति-विशेषाधिकार प्राप्त, प्राचीन पासवर्ड) | --archaeology |
| डोमेन सुदृढ़ीकरण | dSHeuristics अनाम-LDAP / AdminSDHolder-बहिष्करण फ़्लैग, Pre-Windows 2000 Compatible Access व्यापक सदस्यता | --hardening |
| सेवा स्थिति (AD से पढ़ा गया, सेवा को कोई पैकेट नहीं) | Exchange-to-DA एस्केलेशन और EOL, SCCM कंटेनर टेकओवर और साइट मैप, ADIDNS ज़ोन विषाक्तता (Authenticated Users रिकॉर्ड बना सकते हैं) | --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) में export करें ताकि आपके मौजूदा collection के साथ जुड़ जाए, या किसी भी principal से pivot करें (--from)।--diff ताकि पकड़ सकें कि क्या बदला; और एक ऐसा टूल जिसका सटीक detection footprint प्रकाशित है ताकि आप उसे whitelist कर सकें और उसके आसपास अपनी alerting को tune कर सकें।Kestrel read-only है। यह कभी directory में लिखता नहीं, कभी replicate नहीं करता, कभी SeSecurityPrivilege की आवश्यकता नहीं होती, कभी cloud को नहीं छूता। यह पढ़ना कि कौन DCSync कर सकता है, wire पर बिल्कुल वैसा नहीं दिखता जैसा DCSync करना - कोई DRSUAPI नहीं, कोई replication-signature 4662 नहीं। इसकी हर चलाई जाने वाली query और हर event जो यह उत्पन्न कर सकता है (और नहीं कर सकता) FOOTPRINT.md में सूचीबद्ध है। एक auditor जो defender को बताता है कि उसे कैसे पकड़ना है, यह विरोधाभास नहीं है - यही तो पूरा मुद्दा है।
एक build प्राप्त करें। हर हरा CI run एक Kestrel.exe artifact प्रकाशित करता है - इसे Actions tab से डाउनलोड करें, किसी toolchain की आवश्यकता नहीं।
या इसे स्वयं build करें। Visual Studio (v143+) या MSBuild:
git clone https://github.com/ssteelfactor-oss/Kestrel.git
cd Kestrel
msbuild Kestrel.vcxproj /p:Configuration=Release /p:Platform=x64