
أداة PowerShell خفيفة الوزن لتقييم الوضع الأمني لبيئات Microsoft Entra ID. تساعد في تحديد الكائنات ذات الامتيازات، والتعيينات الخطرة، والتكوينات الخاطئة المحتملة.

EntraFalcon هي أداة تقييم مبنية على PowerShell لمختبري الاختراق ومحللي الأمن ومسؤولي النظام لتقييم الوضع الأمني لبيئة Microsoft Entra ID.
صُممت EntraFalcon لسهولة الاستخدام، وتعمل على PowerShell 5.1 و7، وتدعم كلاً من Windows وLinux، ولا تتطلب أي وحدات PowerShell إضافية أو تثبيتات إضافية أو موافقة على Microsoft Graph API.
تساعد الأداة في كشف الكائنات ذات الامتيازات والتعيينات التي قد تكون محفوفة بالمخاطر وسوء تكوينات Conditional Access التي غالبًا ما يتم التغاضي عنها، مثل:
تُعرض النتائج في تقارير HTML تفاعلية لدعم الاستكشاف والتحليل بكفاءة.
| النوع | الإذن | إلزامي | التأثير في حال الغياب |
|---|---|---|---|
| دور Entra ID | Global Reader | نعم | غير ممكن تشغيل السكربتات |
| دور Azure | Reader: على كل Management Group أو Subscription | لا | لا يمكن تقييم تعيينات Azure IAM |
علاوة على ذلك، يجب أن تكون قادرًا على المصادقة إلى Microsoft Graph API واختياريًا Azure ARM API من الجهاز الذي تشغّل منه الأداة. تأكد من أن سياسات Conditional Access لا تحظر مصادقتك.
للبدء، استنسخ المستودع وانتقل إلى دليل المشروع:```powershell git clone https://github.com/CompassSecurity/EntraFalcon cd EntraFalcon
ملاحظة: قد تحتاج إلى تغيير سياسة تنفيذ PowerShell مؤقتًا لتشغيل السكربت.
افعل ذلك فقط للسكربتات الموثوقة!```
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
يتضمن EntraFalcon دعمًا مدمجًا لمصادقة Entra ID. استخدم -AuthFlow لاختيار تدفق المصادقة.
بالنسبة للتقييمات العادية، استخدم أحد تدفقات التغطية الكاملة:
| التدفق الموصى به | الأفضل لـ | المنصة | التغطية |
|---|---|---|---|
BroCi (افتراضي) | تشغيلات Windows التفاعلية | Windows | كاملة |
BroCiManualCode | المصادقة في متصفح آخر | Windows، Linux، macOS | كاملة |
BroCiToken | رمز تحديث Azure Portal موجود | Windows، Linux، macOS | كاملة |
ServicePrincipal | الأتمتة / CI | Windows، Linux، macOS | كاملة |
يستخدم BroCi تسجيل دخول تفاعلي واحد. لا يستخدم BroCiToken وServicePrincipal أي تسجيل دخول تفاعلي. قد تتطلب تدفقات المستخدم الاحتياطية عمليات تسجيل دخول تفاعلية متعددة لأن رموز موارد منفصلة يتم طلبها.
نظرًا لعدم وجود تطبيقات طرف أول مصرّح لها مسبقًا، لا يمكن للتدفقات الاحتياطية إجراء التعداد الكامل (PIM for Groups، Access Packages، Catalogs). لذلك، تبقى حاليًا خيارات احتياطية فقط.
| التدفق | استخدمه فقط عندما | المنصة | القيود |
|---|---|---|---|
AuthCode | تكون التوافقية مع الأنظمة القديمة مطلوبة | Windows | تغطية جزئية. لا يوجد تقرير مستقل لـ PIM for Groups أو Access Packages أو Catalogs. |
DeviceCode | تكون المصادقة المستندة إلى المتصفح غير ممكنة | Windows، Linux، macOS | تغطية جزئية. لا يوجد تقرير مستقل لـ PIM for Groups أو Access Packages أو Catalogs. تُشغَّل بعض فحوصات Security Findings بعمق منخفض. |
ManualCode | يجب إكمال المصادقة عبر جلسة متصفح منفصلة | Windows، Linux، macOS | تغطية جزئية. لا يوجد تقرير مستقل لـ PIM for Groups أو Access Packages أو Catalogs. |
يستخدم BroCi تطبيقات طرف أول بديلة ويتطلب تسجيل دخول تفاعلي واحد فقط.
يكون مفيدًا عندما يتطلب عميل Azure Active Directory PowerShell تعيينًا ويجب تجنبه.```powershell
.\run_EntraFalcon.ps1
تحديد BroCi الصريح:```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCi
.\run_EntraFalcon.ps1 -AuthFlow BroCiManualCode
1. يقوم السكربت بنسخ عنوان URL الخاص بالمصادقة إلى الحافظة.
2. الصق عنوان URL في المتصفح (اختياريًا على جهاز آخر لدعم SSO).
3. افتح أدوات مطوّر المتصفح، وفي علامة التبويب Network، فعّل `Preserve log`.
4. أكمل المصادقة.
5. ابحث في سجل الشبكة عن `code=1.` وانسخ عنوان URL الخاص بالطلب الذي يحتوي على الرمز إلى الحافظة.
6. اضغط Enter للمتابعة؛ يقرأ السكربت الرمز من الحافظة ويكمل الحصول على الرمز المميز.
#### موصى به: BroCi مع Token
إذا كان رمز تحديث Azure Portal صالح متاحًا بالفعل (client c44b4083-3bb0-49c1-b47d-974e53cbdf3c)، فيمكن استخدامه مباشرة.
مثال: الحصول على رمز التحديث من المتصفح
1. افتح أدوات مطوّر المتصفح، وفي علامة التبويب Network، فعّل Preserve log.
2. قم بالمصادقة على https://entra.microsoft.com.
3. ابحث في سجل الشبكة عن `brk_client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c` واستخرج رمز التحديث من الاستجابة.```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCiToken -BroCiToken "1.XXXXXXXXXXX"
يتم المصادقة كتطبيق مسجَّل باستخدام منحة بيانات اعتماد عميل OAuth2 — دون الحاجة إلى تفاعل المستخدم.
مفيد للتنفيذ الآلي المتكرر.
يتطلب تسجيل تطبيق Entra مخصص مع أذونات Graph API من نوع Application (انظر أدناه).
باستخدام client secret:```powershell .\run_EntraFalcon.ps1 -AuthFlow ServicePrincipal -Tenant "mysecuretenant.ch" -SPClientId "" -SPClientSecret ""
**باستخدام شهادة PFX:**```powershell
.\run_EntraFalcon.ps1 -AuthFlow ServicePrincipal -Tenant "mysecuretenant.ch" -SPClientId "<AppId>" -SPCertificatePath "C:\certs\app.pfx"
لـ PFX محمي بكلمة مرور، أضف -SPCertificatePassword (Read-Host -Prompt "Certificate password" -AsSecureString).
مع شهادة PEM + المفتاح الخاص (PowerShell 7+ فقط):```powershell .\run_EntraFalcon.ps1 -AuthFlow ServicePrincipal -Tenant "mysecuretenant.ch" -SPClientId "" -SPCertificatePemPath "C:\certs\cert.pem" -SPPrivateKeyPemPath "C:\certs\key.pem"
لمفتاح خاص مشفّر، أضف `-SPPrivateKeyPemPassword (Read-Host -Prompt "Private key password" -AsSecureString)`.
##### أذونات تسجيل التطبيق المطلوبة
امنح الأذونات التالية من نوع **Application** (وليس Delegated) على تسجيل التطبيق ووافق عليها إدارياً: