
एक PowerShell स्क्रिप्ट जो Microsoft 365 वातावरणों की सुरक्षा मूल्यांकन को स्वचालित करती है।

माइक्रोसॉफ्ट 365 वातावरणों की सुरक्षा मूल्यांकन को स्वचालित करने वाला एक PowerShell स्क्रिप्ट लिखकर माइक्रोसॉफ्ट 365 सुरक्षा की स्थिति को आगे बढ़ाना।
Soteria Inspect 365Inspect प्रोजेक्ट से उत्पन्न हुआ है और यह सोटेरिया का SaaS समाधान है जो Microsoft 365 सेवाओं के पूरे सूट में 200 से अधिक निरीक्षण बिंदुओं के साथ Microsoft 365 टेनेंट की सुरक्षा का मूल्यांकन करने में सहायता करता है।
Microsoft 365 के लिए Soteria Inspect ग्राहकों को समय के साथ प्रत्येक निष्कर्ष के प्रभावित ऑब्जेक्ट्स में परिवर्तनों के साथ-साथ सुधार प्रयासों को ट्रैक करने की अनुमति देता है, और अब MSP और मूल संगठनों के लिए मल्टी-टेनेंसी शामिल करता है ताकि वे अपने चाइल्ड टेनेंट्स की नब्ज पर नजर रख सकें।
Microsoft 365 के लिए Soteria Inspect सीधे Soteria या Azure Marketplace के माध्यम से उपलब्ध है
हमारे सभी Microsoft 365 के लिए Soteria Inspect ऑफ़र देखें

365Inspect कम्युनिटी संस्करण को Exchange प्रशासन, Microsoft Graph, Microsoft Teams और SharePoint प्रशासन मॉड्यूल के लिए प्रशासनिक PowerShell मॉड्यूल की आवश्यकता है।
365Inspect अब PowerShell Core (6+) के साथ संगत है, और आवश्यक मॉड्यूल निर्भरताओं के कारण Microsoft Windows ऑपरेटिंग सिस्टम की आवश्यकता है।
365Inspect.ps1 PowerShell स्क्रिप्ट स्थापित मॉड्यूल और इंस्पेक्टरों के कार्य करने के लिए आवश्यक मॉड्यूल के न्यूनतम संस्करण को मान्य करेगी।
यदि आपके पास ये मॉड्यूल स्थापित नहीं हैं, तो आपको उन्हें स्थापित करने के लिए संकेत दिया जाएगा, और आपकी अनुमति से, स्क्रिप्ट स्थापना का प्रयास करेगी। अन्यथा, आप उन्हें एक प्रशासनिक 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
एक्सचेंज ऑनलाइन PowerShell स्थापित करें
SharePoint PnP PowerShell मॉड्यूल स्थापित करें
Microsoft Graph SDK स्थापित करें
उपरोक्त स्थापित होने के बाद, अपने ब्राउज़र का उपयोग करके या git clone का उपयोग करके Github से 365Inspect स्रोत कोड फ़ोल्डर डाउनलोड करें।
9 सितंबर, 2024 तक, PnP.PowerShell को टेनेंट एडमिन को SharePoint/PnP सेवा के उपयोग के लिए अपना स्वयं का एप्लिकेशन पंजीकृत करने की आवश्यकता है। आवश्यक चरणों के लिए निम्नलिखित PnP.PowerShell दस्तावेज़ देखें। PnP PowerShell के साथ उपयोग करने के लिए एक Entra ID एप्लिकेशन पंजीकृत करें अनुमतियाँ निर्धारित करें प्रमाणीकरण
नोट: यदि आप PowerShell 5.1 का उपयोग कर रहे हैं तो PnP PowerShell अब संगत नहीं है और रन टाइम पर सभी SharePoint इंस्पेक्टर बाहर रखे जाएंगे।
एक कमांड है जिसे इस चरण को स्वचालित करने के लिए चलाया जा सकता है।```powershell Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "PnP Rocks" -Tenant [yourtenant].onmicrosoft.com -Interactive
__बनाए गए एप्लिकेशन का नाम या एप्लिकेशन/क्लाइंट आईडी याद रखें। अब प्रमाणीकरण के लिए इसकी आवश्यकता है और आपको 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
आप PowerShell कमांड प्रॉम्प्ट से मुख्य स्क्रिप्ट फ़ाइल, 365Inspect.ps1, को निष्पादित करके 365Inspect से इंटरैक्ट करेंगे।
आपके M365 टेनेंट का निरीक्षण करने के लिए 365Inspect को केवल उचित अनुमतियों वाले M365 खाते के माध्यम से पहुंच की आवश्यकता है, इसलिए अधिकांश कमांड लाइन पैरामीटर मूल्यांकन किए जा रहे संगठन और प्रमाणीकरण की विधि से संबंधित हैं।
.\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 अब एप्लिकेशन प्रमाणीकरण का समर्थन करता है
365Inspect का HTML रिपोर्ट प्रारूप बदल गया है



365Inspect ठीक से नहीं चल सकता जब तक कि आप जिस M365 खाते से प्रमाणित करते हैं उसके पास उपयुक्त विशेषाधिकार न हों। 365Inspect को न्यूनतम रूप से निम्नलिखित की आवश्यकता है:
हम समझते हैं कि ये अत्यधिक अनुमेय भूमिकाएँ हैं, दुर्भाग्य से Microsoft Graph के उपयोग के कारण, हमें Microsoft द्वारा कम विशेषाधिकारों का उपयोग करने से प्रतिबंधित किया गया है। एप्लिकेशन और क्लाउड एप्लिकेशन व्यवस्थापक भूमिकाएँ (प्रतिनिधि और एप्लिकेशन अनुमतियाँ प्रदान करने के लिए उपयोग की जाती हैं) Microsoft Graph या Azure AD PowerShell मॉड्यूल के लिए अनुमतियाँ प्रदान करने से प्रतिबंधित हैं। Microsoft Docs - एप्लिकेशन व्यवस्थापक
यदि एप्लिकेशन auth पैरामीटर का उपयोग करके 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 काफी तेज़ और बदसूरत त्रुटि फेंक देगा, इसलिए कमांड लाइन आउटपुट की निगरानी करें।
हम सामुदायिक भागीदारी और योगदान को प्रोत्साहित करते हैं! कृपया हमारे Contributing Guidelines देखें।
365Inspect एक स्क्रिप्ट हार्नेस है जो .\inspectors फ़ोल्डर में संग्रहीत अन्य इंस्पेक्टर स्क्रिप्ट मॉड्यूल चलाता है। किसी भी अन्य स्क्रिप्ट की तरह जिसे आप उन्नत विशेषाधिकारों के साथ चला सकते हैं, आपको कुछ सुरक्षा स्वच्छता प्रथाओं का पालन करना चाहिए:
Soteria सुरक्षा और सलाहकार समाधानों की एक विस्तृत श्रृंखला प्रदान करता है जिसमें Incident Response, Managed Detection and Response, Security Assessments, Penetration Testing और बहुत कुछ शामिल है। अपनी सभी आवश्यकताओं के लिए हमसे संपर्क करें!
.\365Inspect.ps1 -OutPath ..\365_report -UserPrincipalName [email protected] -Auth APP -Environment USGovGCCHigh
-Environment के लिए वैध तर्क हैं:
नोट: एप्लिकेशन प्रमाणीकरण के साथ 365Inspect निष्पादित करने के लिए पूर्वापेक्षाएँ हैं। एप्लिकेशन प्रमाणीकरण आवश्यकताएँ पर जाएं
365Inspect अब रिपोर्ट आउटपुट को HTML (डिफ़ॉल्ट मान), CSV, और XML प्रारूपों में समर्थन करता है।
उदाहरण के लिए, -ReportType पैरामीटर को कॉल करके CSV रिपोर्ट उत्पन्न की जा सकती हैं:
.\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 - गैर-मानक/उपभोक्ता Microsoft 365 टेनेंट के लिए कनेक्ट करने के लिए Azure Cloud इंस्टेंस निर्दिष्ट करें।
जब आप -Auth MFA के साथ 365Inspect निष्पादित करते हैं, तो यह कई ग्राफिकल लॉगिन प्रॉम्प्ट उत्पन्न कर सकता है जिनमें आपको क्रमिक रूप से लॉग इन करना होगा। यह सामान्य व्यवहार है क्योंकि Exchange, SharePoint आदि के अलग-अलग प्रशासन मॉड्यूल हैं और प्रत्येक को अलग लॉगिन सत्र की आवश्यकता होती है। यदि आप अनुरोधित संख्या में बस लॉग इन करते हैं, तो 365Inspect निष्पादित होना शुरू हो जाना चाहिए। यह मज़ेदार के विपरीत है और हम एक कार्यसमाधान की तलाश कर रहे हैं, लेकिन कहने की आवश्यकता नहीं कि हमें लगता है कि परिणाम MFA कोड देखने में बिताए गए मिनट के लायक हैं।