
أداة PowerShell النصية التي تقوم بأتمتة التقييم الأمني لبيئات Microsoft 365.

تعزيز أمان Microsoft 365 من خلال تأليف سكريبت PowerShell يعمل على أتمتة التقييم الأمني لبيئات Microsoft 365.
ولد Soteria Inspect من مشروع 365Inspect وهو حل SaaS من Soteria للمساعدة في تقييم أمان مستأجر Microsoft 365 مع أكثر من 200 نقطة تفتيش عبر مجموعة كاملة من خدمات Microsoft 365.
يسمح Soteria Inspect for Microsoft 365 للعملاء بتتبع التغييرات على الكائنات المتأثرة لكل نتيجة مع مرور الوقت بالإضافة إلى جهود المعالجة، ويتضمن الآن تعدد المستأجرين لمزودي الخدمات المُدارة (MSP) والمنظمات الأم لمراقبة حالة مستأجريهم الفرعيين.
يتوفر Soteria Inspect for Microsoft 365 مباشرة من خلال Soteria أو من خلال Azure Marketplace
اطلع على جميع عروض Soteria Inspect for Microsoft 365

يتطلب 365Inspect Community Edition وحدات PowerShell الإدارية لإدارة Exchange و Microsoft Graph و Microsoft Teams ووحدة إدارة SharePoint.
يعمل 365Inspect الآن مع PowerShell Core (6+) ويتطلب نظام تشغيل Microsoft Windows بسبب تبعيات الوحدات المطلوبة.
سيتحقق سكريبت PowerShell 365Inspect.ps1 من الوحدات المثبتة والحد الأدنى لإصدار الوحدات اللازمة لعمل المفتشين.
إذا لم تكن هذه الوحدات مثبتة، سيُطلب منك تثبيتها، وبموافقتك، سيحاول السكريبت تثبيتها. وإلا، يمكنك تثبيتها باستخدام الأوامر التالية في موجه PowerShell إداري، أو باتباع التعليمات في المراجع أدناه:
Install-Module -Name ExchangeOnlineManagement -AllowClobber -Force
Install-Module -Name PnP.PowerShell -AllowClobber -Force
Install-Module -Name Microsoft.Graph -AllowClobber -Force
Install-Module -Name MicrosoftTeams -AllowClobber -Force
تثبيت Exchange Online PowerShell
تثبيت وحدة SharePoint PnP PowerShell
بمجرد تثبيت ما سبق، قم بتنزيل مجلد الكود المصدري لـ 365Inspect من Github باستخدام متصفحك أو باستخدام git clone.
اعتبارًا من 9 سبتمبر 2024، تتطلب PnP.PowerShell من مسؤولي المستأجرين تسجيل تطبيقهم الخاص لاستخدامه مع خدمة SharePoint/PnP. راجع وثائق PnP.PowerShell التالية للخطوات المطلوبة. تسجيل تطبيق Entra ID لاستخدامه مع PnP PowerShell تحديد الأذونات المصادقة
ملاحظة: إذا كنت تستخدم PowerShell 5.1، فإن PnP PowerShell لم يعد متوافقًا وسيتم استبعاد جميع مفتشي SharePoint أثناء التشغيل.
يوجد أمر يمكن تشغيله لأتمتة هذه الخطوة.```powershell Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "PnP Rocks" -Tenant [yourtenant].onmicrosoft.com -Interactive
__تذكر اسم التطبيق أو معرف العميل/التطبيق (Application/Client ID) الذي تم إنشاؤه. هذا مطلوب الآن للمصادقة وسيُطلب منك إدخال معرف التطبيق (AppID)!__
# توافق الوحدات
حاليًا، إصدارات الوحدات Microsoft.Graph وMicrosoft.Graph.Beta 2.23.0 غير متوافقة مع ExchangeOnlineManagement الإصدار 3.5.1.
الإصدارات التالية متوافقة:
- Microsoft.Graph الإصدار 2.21.1
- Microsoft.Graph.Beta الإصدار 2.21.1
- ExchangeOnlineManagement الإصدار 3.5.0
يمكن استخدام الأوامر التالية لتثبيت الإصدارات المتوافقة:```powershell
Install-Module -Name Microsoft.Graph -Scope CurrentUser -RequiredVersion 2.21.1 -AllowClobber -Force
Install-Module -Name Microsoft.Graph.Beta -Scope CurrentUser -RequiredVersion 2.21.1 -AllowClobber -Force
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -RequiredVersion 3.5.0 -AllowClobber -Force
نظرًا لأنك ستقوم بتشغيل 365Inspect بصلاحيات إدارية، يجب وضعه في موقع منطقي والتأكد من أن محتويات المجلد قابلة للقراءة والكتابة فقط من قبل المستخدم الإداري. هذا مهم بشكل خاص إذا كنت تنوي تثبيت 365Inspect في موقع حيث سيتم تنفيذه بشكل متكرر أو استخدامه كجزء من عملية آلية. ملاحظة: لا يحتاج 365Inspect إلى التشغيل في نافذة PowerShell إدارية ليعمل.
لتشغيل 365Inspect، افتح وحدة تحكم PowerShell وانتقل إلى المجلد الذي قمت بتنزيل 365Inspect فيه:
cd 365Inspect
ستتفاعل مع 365Inspect عن طريق تنفيذ ملف البرنامج النصي الرئيسي، 365Inspect.ps1، من داخل موجه أوامر PowerShell.
كل ما يتطلبه 365Inspect لفحص مستأجر M365 الخاص بك هو الوصول عبر حساب M365 بصلاحيات مناسبة، لذا فإن معظم معاملات سطر الأوامر تتعلق بالمؤسسة التي يتم تقييمها وطريقة المصادقة.
يبدو تنفيذ 365Inspect كما يلي:
.\365Inspect.ps1 -OutPath <value> -UserPrincipalName [email protected] -Auth <MFA|DEVICE|ALREADY_AUTHED|APP> -pnpPowerShellApplicationId <Your Pnp PowerShell Application/Client ID>
على سبيل المثال، لتسجيل الدخول عن طريق إدخال بيانات الاعتماد الخاصة بك في متصفح مع دعم MFA:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA
لتسجيل الدخول إلى نشر حكومي أو أي نشر سحابي وطني آخر (الصين، ألمانيا، إلخ)، يجب تحديد المعامل -Environment كما يلي:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -Environment USGovGCCHigh
الوسائط الصالحة للمعامل -Environment هي:
يمكن تحقيق مصادقة التطبيق عن طريق تنفيذ البرنامج النصي مع المعاملات التالية:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth APP
لتسجيل الدخول إلى نشر حكومي أو أي نشر سحابي وطني آخر (الصين، ألمانيا، إلخ)، يجب تحديد المعامل -Environment كما يلي:
أثناء تنفيذ 365Inspect، سيقوم بطباعة تحديثات الحالة بشكل مطرد تشير إلى مهمة التفتيش التي تعمل حاليًا.
قد يستغرق 365Inspect بعض الوقت للتنفيذ. هذا الوقت يتناسب مع حجم وتعقيد البيئة قيد الاختبار. على سبيل المثال، تتضمن بعض مهام التفتيش مسح تكوين الحساب لجميع المستخدمين. قد يحدث هذا على الفور تقريبًا لمؤسسة تضم 50 مستخدمًا، أو قد يستغرق دقائق كاملة (!) لمؤسسة تضم 10000.
يقوم 365Inspect بإنشاء الدليل المحدد في معامل out_path. هذا الدليل هو نتيجة فحص 365Inspect بالكامل. يحتوي على أربعة عناصر مهمة:
نظرًا لطبيعة بعض العناصر التي تم إرجاعها، فإن تقرير csv محدد بحرف الكارات (^). يوصى بفتح تقرير CSV في محرر نصوص بدلاً من Excel، حيث أن Excel يقوم افتراضيًا بتحديد الفاصلة (،) كمحدد وسيعرض التقرير بشكل غير صحيح. بمجرد فتحه في محرر نصوص، يمكن لصق البيانات في Excel.
دعم مصادقة الجهاز
يدعم 365Inspect الآن مصادقة التطبيق
تغير تنسيق تقرير HTML الخاص بـ 365Inspect



لا يمكن لـ 365Inspect العمل بشكل صحيح ما لم يكن لحساب M365 الذي تقوم بالمصادقة به صلاحيات مناسبة. يتطلب 365Inspect، على الأقل، ما يلي:
نحن ندرك أن هذه أدوار متساهلة للغاية، ولكن للأسف بسبب استخدام Microsoft Graph، فإننا مقيدون باستخدام صلاحيات أقل من قبل Microsoft. أدوار مسؤول التطبيق والمسؤول السحابي للتطبيق (المستخدمة لمنح أذونات مفوضة وأذونات التطبيق) مقيدة من منح أذونات لوحدات PowerShell الخاصة بـ Microsoft Graph أو Azure AD. وثائق Microsoft - مسؤول التطبيق
إذا تم تنفيذ 365Inspect باستخدام معامل مصادقة التطبيق، يجب منح أدوار إضافية للسماح للتطبيق بأداء جميع المهام المنفذة. راجع متطلبات مصادقة التطبيق
قبل أن يتم استخدام 365Inspect، يجب أن تكون جميع المكونات الأخرى المطلوبة في مكانها.
للاستخدام الأكثر كفاءة للوقت، يوصى بتنفيذ الوظائف المطلوبة بالترتيب التالي:
راجع المراجع التالية:
تم تصميم 365Inspect ليكون سهل التوسع، على أمل أن يمكن الأفراد والمؤسسات إما من استخدام وحدات 365Inspect الخاصة بهم داخليًا، أو نشر تلك الوحدات لمجتمع M365.
يتم تخزين جميع وحدات المفتش الخاصة بـ 365Inspect في مجلد .\inspectors.
من السهل إنشاء وحدة مفتش. المفتشون لديهم ملفان:
يتم تضمين القوالب في مجلد Templates. ما عليك سوى إضافة الكود والقيم الخاصة بك في المواقع المعنية. يجب أن تكون أسماء ملفات PowerShell و JSON متطابقة حتى يتعرف 365Inspect على أن الاثنين ينتميان معًا. هناك أمثلة عديدة في مجموعة الوحدات المدمجة في 365Inspect، لكننا سنضع مثالًا هنا أيضًا.
# If some of the parsed M365 objects were found to have the security flaw this module is inspecting for,
# return a list of strings representing those objects. This is what will end up as the "Affected Objects"
# field in the report.
If ($safe_attachment_bypass_rules.Count -ne 0) {
return $safe_attachment_bypass_rules
}
# If none of the parsed M365 objects were found to have the security flaw this module is inspecting for,
# returning $null indicates to 365Inspect that there were no findings for this module.
return $null
}
return Inspect-BypassingSafeAttachments
</details>
<details>
<summary>ملف .json مثال، BypassingSafeAttachments.json:</summary>```json
{
"FindingName": "Do Not Bypass the Safe Attachments Filter",
"Description": "In Exchange, it is possible to create mail transport rules that bypass the Safe Attachments detection capability. The rules listed above bypass the Safe Attachments capability. Consider reviewing these rules, as bypassing the Safe Attachments capability even for a subset of senders could be considered insecure depending on the context or may be an indicator of compromise.",
"Remediation": "Navigate to the Mail Flow → Rules screen in the Exchange Admin Center. Look for the offending rules and begin the process of assessing who created them and whether they are necessary to the continued function of the organization. If they are not, remove the rules.",
"DefaultValue": "None",
"ExpectedValue": "None",
"Impact": "Critical",
"AffectedObjects": "",
"Service": "Exchange", // Valid values are Exchange, SharePoint, Teams, Intune, AzureAD, SecurityandCompliance, Tenant //
"PowerShell": "", // Any PowerShell remediation command examples should be placed here //
"References": [
{
"Url": "https://docs.microsoft.com/en-us/exchange/security-and-compliance/mail-flow-rules/manage-mail-flow-rules",
"Text": "Manage Mail Flow Rules in Exchange Online"
},
{
"Url": "https://www.undocumented-features.com/2018/05/10/atp-safe-attachments-safe-links-and-anti-phishing-policies-or-all-the-policies-you-can-shake-a-stick-at/#Bypass_Safe_Attachments_Processing",
"Text": "Undocumented Features: Safe Attachments, Safe Links, and Anti-Phishing Policies"
}
]
}
بمجرد وضع هذين الملفين في مجلد .\inspectors، يعتبران جزءًا من مخزون وحدات 365Inspect وسيتم تشغيلهما في المرة التالية التي تقوم فيها بتنفيذ 365Inspect.
لقد قمت للتو بإنشاء وحدة BypassingSafeAttachments Inspector. هذا كل شيء!
سيقوم 365Inspect بإلقاء خطأ عالٍ وقبيح إذا كان هناك شيء في وحدتك لا يعمل أو لا يتبع اتفاقيات 365Inspect، لذا راقب مخرجات سطر الأوامر.
نشجع على المشاركة المجتمعية والمساهمات! يرجى الاطلاع على إرشادات المساهمة
365Inspect هو إطار برمجي لتشغيل وحدات برنامج inspector الأخرى المخزنة في مجلد .\inspectors. كما هو الحال مع أي برنامج آخر قد تقوم بتشغيله بامتيازات مرتفعة، يجب عليك اتباع ممارسات معينة للنظافة الأمنية:
تقدم Soteria مجموعة واسعة من حلول الأمان والاستشارات بما في ذلك الاستجابة للحوادث، الكشف والاستجابة المدارة، تقييمات الأمان، اختبار الاختراق، والمزيد. اتصل بنا لجميع احتياجاتك!
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth APP -Environment USGovGCCHigh
الوسائط الصالحة للمعامل -Environment هي:
ملاحظة: هناك متطلبات مسبقة لتنفيذ 365Inspect مع مصادقة التطبيق. انتقل إلى متطلبات مصادقة التطبيق
يدعم 365Inspect الآن إخراج التقرير إلى تنسيق HTML (القيمة الافتراضية)، CSV، و XML.
على سبيل المثال، يمكن إنشاء تقارير CSV عن طريق استدعاء المعامل -ReportType:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -ReportType CSV
يمكن تشغيل 365Inspect مع وحدات المفتش المحددة فقط، أو على العكس، عن طريق استبعاد وحدات محددة.
على سبيل المثال، لتسجيل الدخول عن طريق إدخال بيانات الاعتماد الخاصة بك في متصفح مع دعم MFA:
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth MFA -SelectedInspectors inspector1, inspector2
أو
.\365Inspect.ps1 -OutPath ..\365_report -Auth MFA -ExcludedInspectors inspector1, inspector2, inspector3
لتحليل المعاملات بشكل أعمق:
OutPath هو المسار إلى مجلد حيث سيتم وضع التقرير الذي تم إنشاؤه بواسطة 365Inspect.
Auth هو محدد يجب أن يكون إحدى القيم الحرفية "MFA" أو "ALREADY_AUTHED".
SelectedInspectors هو اسم أو أسماء المفتش أو المفتشين الذين ترغب في تشغيلهم مع 365Inspect. إذا تم تحديد عدة مفتشين، يجب أن تكون مفصولة بفواصل. سيتم تشغيل المفتشين المذكورين فقط.
ExcludedInspectors هو اسم أو أسماء المفتش أو المفتشين الذين ترغب في منعهم من التشغيل مع 365Inspect. إذا تم تحديد عدة مفتشين، يجب أن تكون مفصولة بفواصل. سيتم تشغيل جميع الوحدات الأخرى باستثناء الوحدات المضمنة.
UserPrincipalName - UserPrincipalName الخاص بالمقيم، تم تضمينه لتقليل عدد المرات التي تحتاج فيها لإدخال بيانات الاعتماد في الوحدات المدعومة.
ReportType - تنسيق إخراج التقرير الذي تم إنشاؤه. القيم المدعومة حاليًا هي HTML (الافتراضي)، CSV، و XML.
Environment - حدد مثيل Azure Cloud للاتصال به لمستأجري Microsoft 365 غير القياسيين/الاستهلاكيين.
عند تنفيذ 365Inspect مع -Auth MFA، قد ينتج عدة مطالبات تسجيل دخول رسومية يجب عليك تسجيل الدخول إليها تباعًا. هذا سلوك طبيعي لأن Exchange و SharePoint وما إلى ذلك لديها وحدات إدارة منفصلة وكل منها يتطلب جلسة تسجيل دخول مختلفة. إذا قمت ببساطة بتسجيل الدخول العدد المطلوب من المرات، يجب أن يبدأ 365Inspect في التنفيذ. هذا هو عكس المتعة ونحن نسعى لإيجاد حل بديل، ولكن لا داعي للقول إننا نشعر أن النتائج تستحق الدقيقة التي تقضيها في النظر إلى رموز MFA.