
BloodHound आक्रमण अनुसंधान किट

BARK का पूर्ण रूप BloodHound Attack Research Kit है। यह एक PowerShell स्क्रिप्ट है जिसे BloodHound Enterprise टीम को दुरुपयोग प्रिमिटिव्स पर शोध करने और उन्हें निरंतर मान्य करने में सहायता के लिए बनाया गया है। BARK वर्तमान में Microsoft के Azure उत्पादों और सेवाओं के सूट पर केंद्रित है।
BARK को किसी तृतीय-पक्ष निर्भरता की आवश्यकता नहीं है। BARK के फ़ंक्शन यथासंभव सरल और रखरखाव योग्य बनाए गए हैं। अधिकांश फ़ंक्शन विभिन्न REST API एंडपॉइंट्स पर अनुरोध करने के लिए बहुत ही सरल रैपर हैं। BARK के बुनियादी फ़ंक्शन एक-दूसरे पर निर्भर भी नहीं हैं - आप BARK से लगभग किसी भी BARK फ़ंक्शन को निकाल सकते हैं और यह आपकी अपनी स्क्रिप्ट्स में एक स्टैंडअलोन फ़ंक्शन के रूप में पूरी तरह से काम करेगा।
प्राथमिक लेखक: Andy Robbins @_wald0
योगदानकर्ता:
PowerShell स्क्रिप्ट आयात करने के कई तरीके हैं। यहाँ एक तरीका है:
पहले, इस रिपॉजिटरी को क्लोन करके या GitHub से इसकी कच्ची सामग्री को कॉपी-पेस्ट करके BARK.ps1 डाउनलोड करें।
git clone https://github.com/BloodHoundAD/BARK
अब, उस निर्देशिका में cd करें जहाँ PS1 है:
cd BARK
अंत में, आप PS1 को इस प्रकार डॉट-इम्पोर्ट कर सकते हैं:
. .\BARK.ps1
एंटर दबाएँ, और आपके PowerShell इंस्टेंस के पास अब BARK के सभी फ़ंक्शनों तक पहुँच होगी।
बहुत कम अपवादों को छोड़कर, Azure API एंडपॉइंट्स के साथ इंटरैक्ट करने के लिए प्रमाणीकरण आवश्यक है। BARK में कुछ फ़ंक्शन हैं जो MS Graph और Azure REST APIs के साथ इंटरैक्ट करने के लिए आवश्यक टोकन प्राप्त करने में आपकी मदद करेंगे। कोई भी BARK फ़ंक्शन जो Azure API के साथ इंटरैक्ट करता है जिसमें प्रमाणीकरण की आवश्यकता है, उसके लिए आपको एक टोकन प्रदान करना होगा।
मान लीजिए कि आप किसी Entra ID टेनेंट में सभी उपयोगकर्ताओं को सूचीबद्ध करना चाहते हैं। पहले आपको MS Graph के लिए स्कोप किया गया एक टोकन प्राप्त करना होगा। इस टोकन को प्राप्त करने के कई तरीके हैं:
यदि आपके पास उस टेनेंट में एक Entra उपयोगकर्ता के लिए उपयोगकर्ता नाम/पासवर्ड संयोजन है, तो आप पहले BARK के Get-EntraRefreshTokenWithUsernamePassword फ़ंक्शन का उपयोग करके उपयोगकर्ता के लिए एक रिफ्रेश टोकन प्राप्त कर सकते हैं:
$MyRefreshTokenRequest = Get-EntraRefreshTokenWithUsernamePassword -username "[email protected]" -password "MyVeryCoolPassword" -TenantID "contoso.onmicrosoft.com"
आपके द्वारा अभी बनाया गया ऑब्जेक्ट, $MyRefreshTokenRequest, में आपके उपयोगकर्ता के लिए एक रिफ्रेश टोकन शामिल होगा। अब आप इस रिफ्रेश टोकन का उपयोग करके MS Graph-स्कोप्ड टोकन का अनुरोध कर सकते हैं:
$MyMSGraphToken = Get-MSGraphTokenWithRefreshToken -RefreshToken $MyRefreshTokenRequest.refresh_token -TenantID "contoso.onmicrosoft.com"
अब इस नए ऑब्जेक्ट, $MyMSGraphToken, में इसकी एक प्रॉपर्टी मान के रूप में आपके उपयोगकर्ता के लिए एक MS Graph-स्कोप्ड JWT होगा। अब आप इस टोकन का उपयोग Entra टेनेंट में सभी उपयोगकर्ताओं को सूचीबद्ध करने के लिए तैयार हैं:
$MyUsers = Get-AllEntraUsers -Token $MyMSGraphToken.access_token -ShowProgress
समाप्त होने पर, $MyEntraUsers वेरिएबल आपके Entra टेनेंट के सभी उपयोगकर्ताओं का प्रतिनिधित्व करने वाले ऑब्जेक्ट्स से भर जाएगा।
Get-AzureKeyVaultTokenWithClientCredentials क्लाइंट ID और सीक्रेट का उपयोग करके Azure Vault को संसाधन/इच्छित दर्शक के रूप में निर्दिष्ट करते हुए STS से एक टोकन का अनुरोध करता है।Get-AzureKeyVaultTokenWithUsernamePassword उपयोगकर्ता द्वारा प्रदान किए गए उपयोगकर्ता नाम और पासवर्ड का उपयोग करके Azure Vault को संसाधन/इच्छित दर्शक के रूप में निर्दिष्ट करते हुए STS से एक टोकन का अनुरोध करता है।Get-AzurePortalTokenWithRefreshToken उपयोगकर्ता द्वारा प्रदान किए गए रिफ्रेश टोकन के साथ एक Azure Portal Auth Refresh टोकन का अनुरोध करता है।Get-AzureRMTokenWithClientCredentials क्लाइंट ID और सीक्रेट के साथ AzureRM-स्कोप्ड JWT का अनुरोध करता है। Entra सेवा प्रिंसिपल के रूप में प्रमाणीकरण के लिए उपयोगी।Get-AzureRMTokenWithPortalAuthRefreshToken उपयोगकर्ता द्वारा प्रदान किए गए Azure Portal Auth Refresh टोकन के साथ AzureRM-स्कोप्ड JWT का अनुरोध करता है।Get-AzureRMTokenWithRefreshToken उपयोगकर्ता द्वारा प्रदान किए गए रिफ्रेश टोकन के साथ AzureRM-स्कोप्ड JWT का अनुरोध करता है।Get-AzureRMTokenWithUsernamePassword उपयोगकर्ता द्वारा प्रदान किए गए उपयोगकर्ता नाम और पासवर्ड के साथ AzureRM-स्कोप्ड JWT का अनुरोध करता है।Get-EntraRefreshTokenWithUsernamePassword login.microsoftonline.com से उपयोगकर्ता द्वारा प्रदान किए गए उपयोगकर्ता नाम और पासवर्ड के साथ एक रिफ्रेश टोकन सहित टोकन का एक संग्रह का अनुरोध करता है। यह विफल होगा यदि उपयोगकर्ता पर मल्टी-फ़ैक्टर प्रमाणीकरण की आवश्यकताएँ हैं या कोई सशर्त एक्सेस नीति प्रभावित करती है।Get-MSGraphTokenWithClientCredentials क्लाइंट ID और सीक्रेट के साथ MS Graph-स्कोप्ड JWT का अनुरोध करता है। Entra सेवा प्रिंसिपल के रूप में प्रमाणीकरण के लिए उपयोगी।Get-MSGraphTokenWithPortalAuthRefreshToken उपयोगकर्ता द्वारा प्रदान किए गए Azure Portal Auth Refresh टोकन के साथ MS Graph-स्कोप्ड JWT का अनुरोध करता है।Get-MSGraphTokenWithRefreshToken उपयोगकर्ता द्वारा प्रदान किए गए रिफ्रेश टोकन के साथ MS Graph-स्कोप्ड JWT का अनुरोध करता है।Get-MSGraphTokenWithUsernamePassword उपयोगकर्ता द्वारा प्रदान किए गए उपयोगकर्ता नाम और पासवर्ड के साथ MS Graph-स्कोप्ड JWT का अनुरोध करता है।Parse-JWTToken इनपुट के रूप में Base64 एन्कोडेड JWT लेगा और इसे आपके लिए पार्स करेगा। सही टोकन दर्शक और दावों को सत्यापित करने के लिए उपयोगी।BARK में रिफ्रेश टोकन-आधारित फ़ंक्शन TokenTactics के फ़ंक्शनों पर आधारित हैं, जो Steve Borosh द्वारा है।
Get-AllEntraApps सभी Entra एप्लिकेशन पंजीकरण ऑब्जेक्ट्स एकत्र करता है।Get-AllEntraGroups सभी Entra समूह एकत्र करता है।Get-AllEntraRoles सभी Entra व्यवस्थापक भूमिकाएँ एकत्र करता है।Get-AllEntraServicePrincipals सभी Entra सेवा प्रिंसिपल ऑब्जेक्ट्स एकत्र करता है।Get-AllEntraUsers सभी Entra उपयोगकर्ता एकत्र करता है।Get-EntraAppOwner Entra ऐप पंजीकरण के स्वामी एकत्र करता है।Get-EntraDeviceRegisteredUsers Entra डिवाइस के पंजीकृत उपयोगकर्ता एकत्र करता है।Get-EntraGroupMembers Entra समूह के सदस्य एकत्र करता है।Get-EntraGroupOwner Entra समूह के स्वामी एकत्र करता है।Get-EntraRoleTemplates Entra व्यवस्थापक भूमिका टेम्पलेट एकत्र करता है।Get-EntraServicePrincipal एक Entra सेवा प्रिंसिपल एकत्र करता है।Get-EntraServicePrincipalOwner Entra सेवा प्रिंसिपल के स्वामी एकत्र करता है।Get-EntraTierZeroServicePrincipals उन Entra सेवा प्रिंसिपलों को एकत्र करता है जिनके पास Tier Zero Entra व्यवस्थापक भूमिका या Tier Zero MS Graph ऐप भूमिका असाइनमेंट है।Get-MGAppRoles MS Graph सेवा प्रिंसिपल द्वारा उपलब्ध कराए गए ऐप भूमिकाओं को एकत्र करता है।