Azure Attacks — الـ Managed Identity مش لُعبة
RBAC abuse و MI theft و Storage و Key Vault و Runbooks
ليه Azure مختلف عن AWS و GCP؟
تخيّل مدينتين جنب بعض، بينهم جسور كتير. كل جسر ليه حارس مختلف. وأغلب الجسور دي محدش بناها بقصد — اتولدت من اتفاقيات قديمة وما حدش راجعها. المهاجم بيدوّر على أرخى نقطة في المنظومة، مش أقصر طريق.
- طب يا حضرتك، Microsoft نفسها مش متحصنة؟ هما بيعملوا الـ cloud أصلاً.
يا مستجد. خد بقى. في حادثة Midnight Blizzard (يناير 2024)، روسيا اخترقت Microsoft نفسها عن طريق password spray على tenant قديم بتاع test، ومنه قفزوا لـ OAuth app معاها صلاحيات على الـ corporate tenant. مايكروسوفت! اللي بتعمل Azure أصلاً!
Azure مدمج بعمق مع Entra ID (هوية اليوزرز) ومع Active Directory الكلاسيكي. الاختراق هنا بيقفز بين الطبقات: من حساب M365 → لـ Subscription → لـ VM → لـ on-prem AD. الجسور دي هي اللي بتخلي Azure هدف ذهبي للـ state actors.
- يخلط بين Entra Roles و Azure RBAC. يفتكر إن Global Admin معاه access على الـ subscriptions أوتوماتيك. لا، لازم يفعّل elevation.
- يفتكر إن Conditional Access policies مفعّلة على كل المستخدمين. الـ break-glass accounts مستثناة. وفيه يوزر admin من 2018 ما اتغطّاش.
- يطلب Managed Identity token من VM ما يفتكرش يفحص الـ scope بتاعها قبل ما يشتغل. ممكن تكون Reader، ممكن تكون Owner على الـ subscription كله.
- ينسى الـ refresh tokens. الـ access token عمره ساعة، الـ refresh token عمره 90 يوم.
نموذج الصلاحيات — RBAC + Entra Roles
الاستطلاع — معلومات عن الـ Tenant من غير اعتماد
Managed Identity — جوهرة المهاجم
لما تشغّل VM أو Function App في Azure، تقدر تديها Managed Identity — هوية أوتوماتيك معاها صلاحيات على موارد تانية. الفايدة: مفيش باسوردات. المشكلة: أي حد يخترق الـ VM، بقا هو نفسه الـ identity في ثانية.
Storage Accounts — أكبر مصدر للتسريب
- Public containers — زي S3 buckets، بس أصعب في الاكتشاف (الـ DNS مش بيتحرث بسهولة).
- SAS Tokens — مفاتيح مؤقتة. بتلاقيها في كود JavaScript على الـ frontend، Postman، commits على GitHub.
- Storage Account Keys — مفتاحين أبديين لكل حساب. اللي معاه واحد منهم = SYSTEM على الداتا.
Key Vault — صندوق الأسرار الذهبي
Key Vault بيحتوي certificates وsecrets وkeys. الهجوم مش بيكسر التشفير — بيكسر سياسة الوصول.
# كل من له get/list secrets يستطيع تنزيل كل شيء
az keyvault secret list --vault-name target-kv --query '[].name' -o tsv \
| while read name; do
echo "=== $name ==="
az keyvault secret show --vault-name target-kv --name "$name" --query value -o tsv
done
# Soft-delete لا يحميك — يمكن استعادة secret محذوف لمدة 90 يوماً
az keyvault secret list-deleted --vault-name target-kvAutomation Accounts والـ Runbooks
الـ Runbook = سكريبت PowerShell بيشتغل بصلاحيات Run-As Account (غالباً Contributor على الـ Subscription). أي حد يقدر يعدل عليه، بقى Contributor.
الـ evil.ps1 ممكن ينشئ Service Principal بصلاحيات Owner ويبعت الـ credentials بره البيئة.
القفز للـ on-prem — عن طريق Azure AD Connect
الـ server اللي بيشغل Azure AD Connect فيه حسابين خدمة، الاتنين قاتلين:
- MSOL_* — معاه صلاحية DCSync على on-prem AD. اللي يكسر هاش الحساب ده، بيقرا كل الباسوردات في الدومين.
- Sync_* — معاه صلاحية على Entra للمزامنة. كفاية إنه يعمل reset لباسورد Global Admin مش "cloud-only".
# على خادم AAD Connect — استخراج credentials
adconnectdump.exe # أو AADInternals: Get-AADIntSyncCredentials
# ثم DCSync بحساب MSOL_ من أي مكان داخل الشبكة
mimikatz # lsadump::dcsync /domain:corp.local /user:Administrator /authuser:MSOL_xxx /authpassword:xxxالكشف والحماية
- Sign-in Logs — أدمن بيدخل من IP غريب. UEBA risk score > 70 = جرس إنذار.
- Audit Logs — إضافة credential على Service Principal، تعديل Conditional Access policies، رفع role.
- Activity Log — على الـ Subscription: Microsoft.Authorization/roleAssignments/write، Microsoft.KeyVault/vaults/secrets/getSecret من principal مش معتاد.
- Defender for Cloud — بيكشف Managed Identity token abuse وIMDS من شبكة مش معتادة.
- طبّق Conditional Access على كل دور إداري — MFA قوي + Trusted Locations + Compliant Device.
- استخدم Privileged Identity Management (PIM) — أدوار Just-In-Time مع تفعيل وموافقة.
- اعزل Break-Glass accounts (اتنين على الأقل) بره الـ Conditional Access، وحط تنبيه على كل استخدام.
- راجع الـ Service Principals كل أسبوع — كتير منهم بينسى ومعاه credentials مالهاش انتهاء.
الخلاصة الناشفة
Azure مش subscription فيها VMs. Azure هوية موصولة بكل حاجة في الشركة.
لو الـ Global Admin اتخرق، الـ on-prem AD اتخرق معاه (لو Entra Connect مفعّل). والـ M365 اتخرق. والـ Subscriptions اتخرقت لو فعّل elevation.
الـ junior بيحمي VMs.
الـ pro بيحمي identities.
الـ state actor بيحمي نفسه عن طريق سرقة identity ساكت ويقعد جوه شهور.
لو Conditional Access policies عندك فيها break-glass accounts من غير monitoring، يبقى إنت مش بتدافع — إنت بتسيب باب جانبي وفاكر الموضوع آمن.
اكتبها على screensaver السيرفر:
اللي بيحمي identities بيحمي كل حاجة. اللي بيحمي VMs بيحمي الـ VMs بس.