Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
GitHound — BloodHound OpenGraph collector for GitHub जो संगठन संरचना, अनुमतियों और क्रॉस-क्लाउड आक्रमण पथों को सुरक्षा ऑडिट और घटना प्रतिक्रिया के लिए एक नेविगेबल ग्राफ में मैप करता है। | Kitploit
उपकरण/GitHubGitHub/specterops/githound
टोहीभेद्यता विश्लेषणजानकारी एकत्र करनापेनिट्रेशन टेस्टिंगक्लाउड सुरक्षापहचान और एक्सेस प्रबंधन (IAM)आपूर्ति श्रृंखला सुरक्षा
GitHubspecterops/githound

GitHound

BloodHound OpenGraph collector for GitHub जो संगठन संरचना, अनुमतियों और क्रॉस-क्लाउड आक्रमण पथों को सुरक्षा ऑडिट और घटना प्रतिक्रिया के लिए एक नेविगेबल ग्राफ में मैप करता है।

रिपॉजिटरी देखें
1431811 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

GitHound

GitHound

अवलोकन

GitHound GitHub के लिए एक BloodHound OpenGraph कलेक्टर है, जो आपके संगठन की संरचना और अनुमतियों को एक नेविगेट करने योग्य हमले-पथ ग्राफ में मैप करने के लिए डिज़ाइन किया गया है। यह:

  • मुख्य GitHub संस्थाओं का मॉडल बनाता है

    • GH_Organization: आपके GitHub संगठन का मेटाडेटा
    • GH_User: संगठन में व्यक्तिगत उपयोगकर्ता खाते
    • GH_Team: साझा पहुंच के लिए उपयोगकर्ताओं को समूहित करने वाली टीमें
    • GH_Repository: संगठन के भीतर रिपॉजिटरी
    • GH_Branch: प्रत्येक रिपॉजिटरी में नामित शाखाएं
    • GH_OrgRole, GH_TeamRole, GH_RepoRole: संगठन-, टीम-, और रिपॉजिटरी-स्तरीय भूमिकाएँ/अनुमतियाँ
  • BloodHound में विज़ुअलाइज़ और विश्लेषण करें

    • एक्सेस ऑडिट: एक नज़र में देखें कि रिपॉजिटरी और शाखाओं पर किसके पास एडमिन/राइट/रीड पहुँच है
    • अनुपालन जाँच: टीमों और रिपॉजिटरी में न्यूनतम-विशेषाधिकार सत्यापित करें
    • घटना प्रतिक्रिया: विशेषाधिकार वृद्धि और समूह सदस्यता का पता लगाएं

GitHound के साथ, आपको अपने GitHub अनुमति परिदृश्य का एक स्पष्ट, इंटरैक्टिव ग्राफ मिलता है—जो सुरक्षा समीक्षाओं, अनुपालन ऑडिट और त्वरित घटना जांच के लिए एकदम सही है।

दस्तावेज़ीकरण

विस्तृत दस्तावेज़ीकरण के लिए, देखें BloodHound Docs - GitHound.

त्वरित प्रारंभ

root@kitploit:~
# 1. Load the collector
. ./githound.ps1

# 2. Create a session with your Personal Access Token
$session = New-GitHubSession -OrganizationName "YourOrgName" -Token (Get-Clipboard)

# 3. Run the collection
Invoke-GitHound -Session $session

# 4. Upload the resulting githound_<orgId>.json file to BloodHound

यदि संग्रह बाधित होता है, तो जहाँ से छोड़ा था वहाँ से फिर से शुरू करें:

root@kitploit:~
Invoke-GitHound -Session $session -Resume

GitHub ऐप सत्र

GitHound व्यक्तिगत पहुँच टोकन सत्र और GitHub ऐप इंस्टॉलेशन सत्र दोनों का समर्थन करता है। मौजूदा संगठन-स्कोप्ड GitHub ऐप वर्कफ़्लो अपरिवर्तित है:

root@kitploit:~
. ./githound.ps1

$session = New-GitHubJwtSession `
  -OrganizationName "YourOrgName" `
  -ClientId $clientId `
  -PrivateKeyPath $privateKeyPath `
  -InstallationId $installationId

Invoke-GitHound -Session $session -CollectAll

वही फ़ंक्शन एंटरप्राइज़-सक्षम सत्र भी बना सकता है:

root@kitploit:~
. ./githound.ps1

$session = New-GitHubJwtSession `
  -EnterpriseName "YourEnterpriseSlug" `
  -ClientId $clientId `
  -PrivateKeyPath $privateKeyPath `
  -InstallationId $installationId `
  -PersonalAccessToken $pat

एंटरप्राइज़-सक्षम सत्र लौटाए गए GitHound.Session पर कई प्रमाणीकरण संदर्भ बनाए रखते हैं:

  • Headers: सामान्य संग्रह के लिए उपयोग किए जाने वाले GitHub ऐप इंस्टॉलेशन टोकन हेडर
  • JwtHeaders: उपयोगकर्ता एप्लिकेशन-स्तरीय एंडपॉइंट के लिए उपयोग किए जाने वाले GitHub ऐप JWT हेडर जैसे इंस्टॉलेशन गणना
  • PatHeaders: उन संग्रह पथों के लिए वैकल्पिक व्यक्तिगत पहुँच टोकन हेडर जिनमें उपयोगकर्ता-टोकन प्रमाणीकरण की आवश्यकता होती है

प्रमाणित GitHub ऐप से संबंधित इंस्टॉलेशनों की गणना करने के लिए:

root@kitploit:~
Get-GitHubAppInstallation -Session $session |
  Select-Object TargetType, InstallationId, Login, Name, SuspendedAt

वर्कफ़्लो विश्लेषण

वर्कफ़्लो पार्सिंग अब Invoke-GitHound में बनाया गया है जब आप -CollectAll का उपयोग करते हैं। कलेक्टर करेगा:

  • कच्चे GH_Workflow नोड और वर्कफ़्लो सामग्री एकत्र करेगा
  • उन वर्कफ़्लो का GH_WorkflowJob और GH_WorkflowStep में विश्लेषण करेगा
  • GH_CanPwnRequest और GH_CanDispatchTo की गणना करेगा
  • परिणामों को सामान्य समेकित githound_<orgId>.json आउटपुट में मर्ज करेगा

रिज्यूम/डिबगिंग उद्देश्यों के लिए, मध्यवर्ती वर्कफ़्लो-विश्लेषण चेकपॉइंट को githound_WorkflowAnalysis_<orgId>.json के रूप में लिखा जाता है।

एंटरप्राइज़ संग्रह नींव

GitHound में अब Git-HoundEnterprise के माध्यम से एक न्यूनतम एंटरप्राइज़ संग्रह नींव शामिल है। वह कलेक्टर वर्तमान में बनाता है:

  • GH_Enterprise
  • सदस्य संगठनों के लिए हल्के GH_Organization स्टब नोड
  • एंटरप्राइज़ से उसके संगठनों तक GH_Contains किनारे

Git-HoundEnterpriseUser के माध्यम से एंटरप्राइज़ उपयोगकर्ता संग्रह जोड़ता है:

  • GH_User
  • एंटरप्राइज़ से उन उपयोगकर्ताओं तक GH_HasMember किनारे

Git-HoundEnterpriseSamlProvider के माध्यम से एंटरप्राइज़ SAML संग्रह जोड़ता है:

  • GH_SamlIdentityProvider
  • GH_ExternalIdentity
  • एंटरप्राइज़ से प्रदाता तक GH_HasSamlIdentityProvider
  • वही पहचान-सहसंबंध किनारे जो संगठन SAML कलेक्टर द्वारा उपयोग किए जाते हैं

इस पथ के लिए PAT-समर्थित सत्र की आवश्यकता होती है क्योंकि GitHub एंटरप्राइज़ SAML को enterprise.ownerInfo के माध्यम से उजागर करता है।

Git-HoundEnterpriseTeam के माध्यम से एंटरप्राइज़ टीम संग्रह जोड़ता है:

  • GH_EnterpriseTeam
  • एंटरप्राइज़ टीमों से असाइन किए गए संगठनों तक GH_AssignedTo किनारे
  • एंटरप्राइज़ टीमों से org-दृश्यमान ent: GH_Team नोड्स तक GH_MemberOf किनारे (प्रॉपर्टी मैचिंग का उपयोग करके)
  • एंटरप्राइज़-टीम members भूमिकाएँ और उपयोगकर्ताओं से उन भूमिकाओं तक GH_HasRole किनारे

Git-HoundEnterpriseRole के माध्यम से एंटरप्राइज़ भूमिका संग्रह जोड़ता है:

  • GH_EnterpriseRole
  • एंटरप्राइज़ से उन भूमिकाओं तक GH_Contains किनारे
  • सीधे असाइन किए गए उपयोगकर्ताओं और एंटरप्राइज़ टीमों से GH_HasRole किनारे
  • एंटरप्राइज़.ownerInfo.admins से भरा एक डिफ़ॉल्ट owners रोल, जब PAT-समर्थित एंटरप्राइज़ एडमिन डेटा उपलब्ध हो

फिलहाल, कच्ची एंटरप्राइज़ अनुमति स्ट्रिंग्स को GH_EnterpriseRole नोड पर उसके permissions प्रॉपर्टी में समर्पित अनुमति किनारों में विस्तारित करने के बजाय संरक्षित किया जाता है।

एंटरप्राइज़ SCIM संग्रह वर्तमान में जोड़ता है:

  • SCIM_User
  • SCIM_Group
  • SCIM_User से GH_ExternalIdentity तक SCIM_Provisioned
  • SCIM_Group से GH_EnterpriseTeam तक SCIM_Provisioned जब GitHub एंटरप्राइज़ टीम group_id उजागर करता है
  • SCIM_User से SCIM_Group तक SCIM_MemberOf

यह GitHound को साझा SCIM स्कीमा से GitHub के मूल एंटरप्राइज़ पहचान और टीम मॉडल में प्रदाता-अज्ञेय पुल देता है।

जब एकत्रित GH_SamlIdentityProvider ऊपरी IdP की पहचान करता है, तो GitHound SCIM साइडकार आउटपुट के अंदर प्रदाता-जागरूक SCIM सहसंबंध किनारे भी जोड़ सकता है:

  • Okta_User -> SCIM_User
    • Okta_User.id = SCIM_User.externalId द्वारा मिलान
  • Okta_Group -> SCIM_Group
    • Okta_Group.name = SCIM_Group.externalId द्वारा मिलान
    • और Okta_Group.oktaDomain = GH_SamlIdentityProvider.foreign_environmentid

GitHound SCIM परत को अपने स्वयं के साइडकार आउटपुट में रखता है ताकि ये मैपिंग दिखाई देती रहें बिना SCIM-मूल नोड्स को मुख्य GitHub-मूल एंटरप्राइज़ ग्राफ में मिलाए:

  • githound_<entId>.json में एंटरप्राइज़ GitHub-मूल डेटा होता है
  • githound_scim_<entId>.json में SCIM-मूल नोड और SCIM ब्रिज किनारे होते हैं
  • githound_saml_<entId>.json में SAML और बाहरी पहचान डेटा होता है
  • githound_hybrid_<entId>.json में क्रॉस-मॉडल किनारे जैसे SAML_Implements, SAML_HasAccount, और GH_SyncedTo होते हैं
  • githound_saml_<entId>.json में GitHub सेवा प्रदाता के लिए सामान्यीकृत SAML टोपोलॉजी भी शामिल है, जिसमें SAML_TrustsIssuer और SAML_HasAssertionConsumerService शामिल हैं

मूल GitHub पहचान-प्रदाता मॉडल GitHub/SAML-मूल आउटपुट में अक्षुण्ण रहता है:

  • GH_ExternalIdentity
  • GH_HasExternalIdentity
  • GH_MapsToUser

githound_hybrid_<entId>.json में सामान्यीकृत SAML परत अब SAML_HasAccount को सीधे GH_User पर रखती है, जबकि लिंक किए गए GH_ExternalIdentity SAML-मुख गुणों जैसे saml_identity_name_id और saml_identity_username से match_values प्राप्त करती है।

एंटरप्राइज़ संग्रह द्वारा उत्सर्जित GH_Organization स्टब्स को जानबूझकर collected = false के रूप में चिह्नित किया गया है। वे एंटरप्राइज़ संदर्भ से संरचनात्मक खोज का प्रतिनिधित्व करते हैं और बाद में सामान्य संगठन संग्रह द्वारा समृद्ध किए जाने के लिए हैं।

एंटरप्राइज़-प्रथम ऑर्केस्ट्रेशन के लिए, Invoke-GitHoundEnterprise समर्थित एंटरप्राइज़-स्कोप डेटा एकत्र करेगा, संबंधित संगठन इंस्टॉलेशनों की गणना करेगा, और फिर चुने गए चेकपॉइंट पथ के तहत प्रत्येक संगठन के लिए अपनी उपनिर्देशिका में मौजूदा Invoke-GitHound वर्कफ़्लो चलाएगा।

उदाहरण:

root@kitploit:~
$session = New-GitHubJwtSession `
  -EnterpriseName "your-enterprise-slug" `
  -ClientId $clientId `
  -PrivateKeyPath $privateKeyPath `
  -InstallationId $enterpriseInstallationId `
  -PersonalAccessToken $pat

Invoke-GitHoundEnterprise -Session $session -CheckpointPath "./output/your-enterprise" -CollectAll

संबंधित संगठनों की गणना किए बिना केवल एंटरप्राइज़ परीक्षण के लिए:

root@kitploit:~
Invoke-GitHoundEnterprise -Session $session -CheckpointPath "./output/your-enterprise" -EnterpriseOnly

स्कीमा

मरमेड स्कीमा

विस्तृत दस्तावेज़ीकरण के लिए, देखें BloodHound Docs - GitHound Schema.

प्रमुख एज श्रेणियाँ:

प्राथमिक हमले पथ पैटर्न:

root@kitploit:~
(:GH_User)-[:GH_HasRole|GH_MemberOf|GH_AddMember*1..]->(:GH_RepoRole)-[:GH_AdminTo|GH_CanPush]->(:GH_Repository)

उपयोग उदाहरण

एक उपयोगकर्ता के पास किन रिपॉजिटरी में लिखने की पहुँच है?

अपने लक्ष्य उपयोगकर्ता के लिए ऑब्जेक्ट आइडेंटिफ़ायर खोजें:

root@kitploit:~
MATCH (n:GH_User)
RETURN n

संकेत: तालिका लेआउट चुनें

https://github.com/user-attachments/assets/1ddfd075-2a15-4aa9-bad7-74c43e6c82d6

निम्नलिखित क्वेरी में <object_id> मान को उपयोगकर्ता के ऑब्जेक्ट आइडेंटिफ़ायर से बदलें:

root@kitploit:~
MATCH p = (:GH_User {objectid:"<object_id>"})-[:GH_MemberOf|GH_AddMember|GH_HasRole|GH_HasBaseRole|GH_Owns*1..]->(:GH_RepoRole)-[:GH_WriteRepoContents]->(:GH_Repository)
RETURN p

उपयोगकर्ता से रिपॉजिटरी

एक रिपॉजिटरी में लिखने की पहुँच किसके पास है?

अपने लक्ष्य रिपॉजिटरी के लिए ऑब्जेक्ट आइडेंटिफ़ायर प्राप्त करें:

root@kitploit:~
MATCH (n:GH_Repository)
RETURN n

अपने लक्ष्य रिपॉजिटरी के लिए ऑब्जेक्ट आइडेंटिफ़ायर लें और निम्नलिखित क्वेरी में <object_id> मान को उससे बदलें:

root@kitploit:~
MATCH p = (:GH_User)-[:GH_MemberOf|GH_HasRole|GH_HasBaseRole|GH_Owns|GH_AddMember*1..]->(:GH_RepoRole)-[:GH_WriteRepoContents]->(:GH_Repository {objectid:"<object_id>"})
RETURN p

रिपॉजिटरी से उपयोगकर्ता

संगठन प्रशासकों के सदस्य (डोमेन प्रशासक के समतुल्य)?

root@kitploit:~
MATCH p = (:GH_User)-[:GH_HasRole|GH_HasBaseRole]->(:GH_OrgRole {short_name: "owners"})
RETURN p

संगठन प्रशासक

SSO के माध्यम से प्रबंधित उपयोगकर्ता (केवल Entra)

root@kitploit:~
MATCH p = (:AZUser)-[:GH_SyncedTo]->(:GH_User)
RETURN p

SSO उपयोगकर्ता

क्रॉस-क्लाउड हमले पथ: GitHub से Azure

GitHub संस्थाएँ खोजें जो Azure फ़ेडरेटेड पहचान (OIDC विश्वास संबंध) ग्रहण कर सकती हैं:

root@kitploit:~
// All GitHub → Azure OIDC attack paths
MATCH p = (:GH_Repository|GH_Branch|GH_Environment)-[:GH_CanAssumeIdentity]->(:AZFederatedIdentityCredential)
RETURN p

// Users with paths to Azure via GitHub Actions
MATCH p = (:GH_User)-[:GH_HasRole|GH_MemberOf|GH_AddMember*1..]->(:GH_RepoRole)-[:GH_CanPush]->(:GH_Repository)-[:GH_CanAssumeIdentity]->(:AZFederatedIdentityCredential)
RETURN p

किन रिपॉजिटरी के पास संगठन के रहस्यों तक पहुंच है?

root@kitploit:~
MATCH p = (:GH_Repository)-[:GH_HasSecret]->(:GH_OrgSecret)
RETURN p

गुप्त स्कैनिंग अलर्ट वाली रिपॉजिटरी

root@kitploit:~
MATCH p = (:GH_Repository)-[:GH_Contains]->(:GH_SecretScanningAlert)
RETURN p

योगदान

हम आपके योगदान का स्वागत करते हैं और उनकी सराहना करते हैं! प्रक्रिया को सुचारू और कुशल बनाने के लिए, कृपया इन चरणों का पालन करें:

  1. अपने विचार पर चर्चा करें

    • यदि आपको कोई बग मिला है या कोई नई सुविधा प्रस्तावित करना चाहते हैं, तो कृपया इस रिपॉजिटरी में एक मुद्दा खोलकर शुरू करें। समस्या या सुधार का स्पष्ट रूप से वर्णन करें ताकि हम सबसे अच्छे दृष्टिकोण पर चर्चा कर सकें।
  2. फ़ोर्क करें और एक शाखा बनाएं

    • इस रिपॉजिटरी को अपने खाते में फ़ोर्क करें।

    • अपने काम के लिए एक विषय शाखा बनाएं:

      root@kitploit:~
      git checkout -b feat/my-new-feature
      
  3. कार्यान्वित करें और परीक्षण करें

    • रिपॉजिटरी में मौजूदा शैली और पैटर्न का पालन करें।

    • अपने परिवर्तनों को कवर करने के लिए कोई भी परीक्षण/उदाहरण जोड़ें या अपडेट करें।

    • सत्यापित करें कि आपका कोड अपेक्षित रूप से काम करता है:

      root@kitploit:~
      # e.g. dot-source the collector and run it, or load the model.json in BloodHound
      
  4. एक पुल अनुरोध सबमिट करें

    • अपनी शाखा को अपने फ़ोर्क पर पुश करें:

      root@kitploit:~
      git push origin feat/my-new-feature
      
    • इस रिपॉजिटरी के main शाखा के विरुद्ध एक पुल अनुरोध खोलें।

    • अपने PR विवरण में, कृपया शामिल करें:

      • क्या आपने बदला है और क्यों।
      • कैसे अपने परिवर्तनों का पुनरुत्पादन/परीक्षण करें।
  5. समीक्षा और मर्ज

    • मैं आपके PR की समीक्षा करूंगा, यदि आवश्यक हो तो प्रतिक्रिया दूंगा, और एक बार सब कुछ जांच में आ जाने पर मर्ज कर दूंगा।
    • बड़े या अधिक जटिल परिवर्तनों के लिए, समीक्षा में थोड़ा अधिक समय लग सकता है—अग्रिम धन्यवाद आपके धैर्य के लिए!

इस विस्तार को बेहतर बनाने में मदद करने के लिए धन्यवाद! 🎉

लाइसेंसिंग

root@kitploit:~
Copyright 2025 Jared Atkinson

Licensed under the Apache License, Version 2.0
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

जब तक कि निचले स्तर की LICENSE फ़ाइल या लाइसेंस हेडर द्वारा अन्यथा चिह्नित न किया गया हो, इस रिपॉजिटरी में सभी फ़ाइलें Apache-2.0 लाइसेंस के तहत जारी की जाती हैं। लाइसेंस की एक पूरी प्रति शीर्ष-स्तरीय LICENSE फ़ाइल में पाई जा सकती है।

टूल डाउनलोड करें
श्रेणीप्रमुख एजविवरण
समाहितीकरणGH_Contains, GH_Ownsसंगठनात्मक पदानुक्रम
भूमिका असाइनमेंटGH_HasRole, GH_MemberOf, GH_HasBaseRoleकिसके पास कौन सी भूमिकाएँ हैं
रिपॉजिटरी अनुमतियाँGH_AdminTo, GH_CanPush, GH_CanPullभूमिकाएँ क्या कर सकती हैं
शाखा सुरक्षाएँGH_BypassPullRequestAllowances, GH_RestrictionsCanPushशाखा-स्तरीय पहुंच
रहस्यGH_HasSecretरहस्य पहुंच मैपिंग
क्रॉस-क्लाउडGH_CanAssumeIdentity, GH_SyncedToAzure/AWS पर हमले के पथ