Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
DFIR-O365RC — وحدة PowerShell لجمع سجلات Office 365 وAzure | Kitploit
أدوات/GitHubGitHub/anssi-fr/dfir-o365rc
التحقيق الجنائي الرقميالتحاليل الرقمية الجنائيةأمن السحابةالاستجابة للحوادثتحليل السجلات
GitHubanssi-fr/dfir-o365rc

DFIR-O365RC

وحدة PowerShell لجمع سجلات Office 365 وAzure

عرض المستودع
28234منذ 11 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

DFIR-O365RC

Publish Docker image to Dockerhub Publish module to PowerShell Gallery


جدول المحتويات:

  1. وصف الوحدة

  2. التثبيت والمتطلبات الأساسية

    1. استخدام Docker
    2. التثبيت اليدوي
  3. إدارة تطبيق DFIR-O365RC

    1. إنشاء التطبيق
    2. تحديث التطبيق
    3. إزالة التطبيق
  4. متطلبات الأذونات والتراخيص

  5. الوظائف المضمنة في الوحدة

  6. الملفات المولَّدة

تم تقديم DFIR-O365RC في SSTIC 2021 (الندوة حول أمن تكنولوجيا المعلومات والاتصالات). الشرائح وتسجيل العرض التقديمي، باللغة الفرنسية، متاحة هنا.

⚠️ في 31 مارس 2024، ألغت Microsoft طريقة المصادقة التي استخدمناها في DFIR-O365RC. أدى ذلك إلى إصدار الإصدار 2.0.0 في أغسطس 2024، مع تغييرات جوهرية فيما يتعلق بالمصادقة وإعادة هيكلة شاملة للكود. ⚠️

وصف الوحدة

وحدة PowerShell DFIR-O365RC هي مجموعة من الوظائف التي تسمح لمُحلِّل الأدلة الجنائية بجمع السجلات ذات الصلة باختراقات Microsoft 365 وإجراء تحقيقات في Entra ID.

يتم إنشاء السجلات بتنسيق JSON واسترجاعها من مصدرين رئيسيين للبيانات:

  • سجل التدقيق الموحد لـ Microsoft 365;
  • سجلات تسجيل الدخول لـ Microsoft Entra وسجلات التدقيق.

يمكن الاستعلام عن هذين المصدرين من نقاط نهاية مختلفة:

* تم تصميم Office 365 Management API لتحليل البيانات في الوقت الفعلي مع SIEM. DFIR-O365RC هي أداة للأدلة الجنائية، وهدفها ليس مراقبة بيئة Microsoft 365 في الوقت الفعلي.

سوف يقوم DFIR-O365RC بجلب البيانات من:

  • سجلات Microsoft Entra باستخدام Microsoft Graph PowerShell لأن الأداء جيد ويُلتف حول Microsoft Graph REST API;
  • افتراضيًا، سجل التدقيق الموحد باستخدام Exchange Online PowerShell: على الرغم من ضعف الأداء، إلا أن هذا هو الخيار الوحيد القابل للاستخدام حاليًا;
  • اختياريًا، سجل التدقيق الموحد باستخدام Purview. فترة الاحتفاظ 180 يومًا، والأداء جيد ولكنه لا يزال في مرحلة بيتا وتوجد أخطاء في الواجهة الخلفية تجعله غير قابل للاستخدام حاليًا.

إذا كنت تحقق في نشاط ضار لـ Microsoft 365، فإن Search-O365 (من Exchange Online PowerShell) سوف يجلب أيضًا سجل تدقيق صندوق البريد، على الرغم من أن cmdlet Search-MailboxAuditLog قيد الإيقاف.

إذا كنت تحقق في موارد Azure أخرى، باستخدام DFIR-O365RC:

  • يمكنك الحصول على سجل نشاط Azure Monitor باستخدام وحدة Az.Monitor PowerShell، مع فترة احتفاظ تبلغ 90 يومًا. يركز هذا السجل على الأنشطة في Azure Resource Manager (المتعلقة باشتراك Azure);
  • يمكنك الحصول على سجل تدقيق Azure DevOps باستخدام Azure DevOps Services REST API، مع فترة احتفاظ تبلغ 90 يومًا. يركز هذا السجل على الأنشطة في Azure DevOps (المتعلقة بمؤسسة Azure DevOps).

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

استخدام Docker

هذه هي الطريقة الموصى بها لاستخدام DFIR-O365RC

اكتب فقط:```bash sudo docker pull anssi/dfir-o365rc:latest sudo docker run --rm -v .:/mnt/host -it anssi/dfir-o365rc:latest

root@kitploit:~
DFIR-O365RC جاهز للاستخدام:```bash
PowerShell 7.4.2
DFIR-O365RC: PowerShell module for Microsoft 365 and Entra ID log collection
https://github.com/ANSSI-FR/DFIR-O365RC
PS /mnt/host/output>

إذا كنت ترغب في بناء صورة Docker يدويًا، قم باستنساخ المستودع واستخدام docker compose (أو الإصدار القديم docker-compose) لبناء الصورة، تشغيل الحاوية وتثبيت وحدة تخزين (في مجلد output/):```bash sudo docker compose build dfir-o365rc sudo docker compose run dfir-o365rc

using legacy Compose V1

sudo docker-compose run dfir-o365rc

root@kitploit:~
### استخدام PowerShell

يمكنك تثبيت الوحدة على *PowerShell Desktop* و *PowerShell Core*.

يرجى ملاحظة أن الأمر `Connect-ExchangeOnline` [يتطلب Microsoft .NET Framework 4.7.2 أو أحدث](https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#windows).

لتثبيت الوحدة من PowerShell Gallery :```powershell
Install-Module -Name DFIR-O365RC

يمكنك أيضًا تثبيت الوحدة يدويًا عن طريق استنساخ مستودع DFIR-O365RC، وتثبيت التبعيات المطلوبة (راجع DFIR-O365RC.psd1)، ثم إضافة دليل DFIR-O365RC إلى أحد مسارات وحدات PowerShell الخاصة بك.

إدارة تطبيق DFIR-O365RC

إنشاء التطبيق

بمجرد استيراد الوحدة، ستحتاج إلى إنشاء تطبيق Entra، والذي سيتولى عملية جمع السجلات لك.

للقيام بذلك:

  1. قم بإنشاء شهادة موقعة ذاتيًا واحصل على الجزء العام المشفر بـ base64:

    على Linux، باستخدام PowerShell Core أو حاوية Docker: ```bash openssl req -new -x509 -newkey rsa:2048 -sha256 -days 365 -nodes -out exampleDFIRO365RC.crt -keyout exampleDFIRO365RC.key -batch openssl pkcs12 -inkey exampleDFIRO365RC.key -in exampleDFIRO365RC.crt -export -out exampleDFIRO365RC.pfx # Enter a password for the certificate openssl x509 -in exampleDFIRO365RC.crt -outform DER -out - | base64 | tr -d "\n"

    root@kitploit:~

في ويندوز، باستخدام باورشيل: ```powershell $certificate = New-SelfSignedCertificate -Subject "CN=exampleDFIRO365RC" -KeySpec KeyExchange -NotBefore (Get-Date) -NotAfter (Get-Date).AddDays(365) $certificatePassword = Read-Host -MaskInput "Please enter a password for the certificate" $certificateSecurePassword = ConvertTo-SecureString -String $certificatePassword -AsPlainText -Force Export-PfxCertificate -Cert $certificate -FilePath exampleDFIRO365RC.pfx -Password $certificateSecurePassword Write-Host ([System.Convert]::ToBase64String($certificate.GetRawCertData()))

root@kitploit:~
2) استخدم cmdlet `New-Application` من وحدة DFIR-O365RC:   ```powershell
$certificateb64="<base64-encoded public part from step 1>"
New-Application -certificateb64 $certificateb64

اختياريًا، إذا كنت ترغب في جمع السجلات في اشتراكات المستأجر (ليس ضروريًا إذا كنت لا تخطط لاستخدام Get-AzRMActivityLogs): ```powershell New-Application -certificateb64 $certificateb64 -subscriptions

root@kitploit:~
بشكل اختياري، إذا كنت ترغب في أن تكون قادرًا على جمع السجلات في مؤسسات Azure DevOps الخاصة بالمستأجر (قد يستغرق ذلك وقتًا طويلاً وليس ضروريًا إذا كنت لا تخطط لاستخدام `Get-AzDevOpsActivityLogs`):   ```powershell
New-Application -certificateb64 $certificateb64 -organizations

لإنشاء التطبيق، ستحتاج إلى تسجيل الدخول إلى Azure عدة مرات باستخدام حساب ذو صلاحيات عالية جدًا.

بمجرد إنشاء التطبيق، ستحصل على مخرجات مشابهة لـ: ```powershell Done creating the application with the required permissions Please use the following identifiers: WARNING: AppID: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx WARNING: Tenant: example.onmicrosoft.com

root@kitploit:~
### تحديث التطبيق

بمجرد إنشاء التطبيق، لا يزال بإمكانك، باستخدام cmdlet `Update-Application` من الوحدة النمطية، تحديث بيانات اعتماده وأذوناته:

- يمكنك إضافة شهادة جديدة للتطبيق:

`Update-Application -certificateb64 <base64-encoded public part>`

- يمكنك تحديد اشتراكات جديدة ترغب في جمع السجلات منها:

`Update-Application -subscriptions`

- يمكنك تحديد مؤسسات Azure DevOps جديدة ترغب في جمع السجلات منها:

`Update-Application -organizations`

- يمكنك تحديث أذونات التطبيق، وهو مفيد بشكل خاص إذا كان لديك تطبيق قديم وتم تحديث الأذونات منذ إنشائه:

`Update-Application -permissions`

### إزالة التطبيق

بمجرد الانتهاء من جمع السجلات، يمكنك حذف التطبيق باستخدام cmdlet `Remove-Application` من الوحدة النمطية.

لإزالة التطبيق، ستحتاج إلى تسجيل الدخول إلى Azure عدة مرات باستخدام حساب **ذي صلاحية عالية**.

إذا كان التطبيق قادرًا على جمع سجلات الاشتراكات أو مؤسسات Azure DevOps، فستحتاج إلى إضافة المفاتيح `-organizations` و/أو `-subscriptions`.

## متطلبات الأذونات والتراخيص

⚠️

بدءًا من الإصدار 2.0.0، أصبحت الأداة تعمل الآن في سياق كيان خدمة مع [App-only access / Application permissions](https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#app-only-access-access-without-a-user). 

لاستخدام الإصدار 2.0.0 وما فوق، ستحتاج إلى [إنشاء تطبيق](#creating-the-application).

بمجرد إنشاء التطبيق، سيتم تشغيل البرنامج النصي باستخدام بيانات اعتماد التطبيق وأذوناته.

⚠️

سيتم إنشاء التطبيق مع أقل مجموعة أذونات مطلوبة ممكنة:

- `Exchange.ManageAsApp` لواجهة برمجة التطبيقات `Office 365 Exchange Online` (مطلوب لتشغيل cmdlets PowerShell الخاصة بـ Exchange Online)
- `AuditLog.Read.All` لواجهة برمجة التطبيقات `Microsoft Graph` (مطلوب لجمع سجلات Microsoft Entra)
- `AuditLogsQuery.Read.All` لواجهة برمجة التطبيقات `Microsoft Graph` (مطلوب لجمع سجل التدقيق الموحد باستخدام Purview)
- `Application.Read.All` و `DelegatedPermissionGrant.Read.All` لواجهة برمجة التطبيقات `Microsoft Graph` (مطلوب لإثراء سجلات Microsoft Entra المتعلقة بالتطبيقات وخدمات الخوادم)
- `Device.Read.All` لواجهة برمجة التطبيقات `Microsoft Graph` (مطلوب لإثراء سجلات Microsoft Entra المتعلقة بالأجهزة)
- `User.Read.All` لواجهة برمجة التطبيقات `Microsoft Graph` (مطلوب للحصول على معلومات عن المستخدمين)
- `UserAuthenticationMethod.Read.All` لواجهة برمجة التطبيقات `Microsoft Graph` (مطلوب للحصول على معلومات عن طرق مصادقة المستخدمين)
- `Organization.Read.All` لواجهة برمجة التطبيقات `Microsoft Graph` (مطلوب للحصول على معلومات عامة عن المستأجر)
- `View-only audit logs` في `Exchange Online` (مطلوب لاستخدام cmdlet `Search-UnifiedAuditLog`)

اختياريًا (إذا كنت تستخدم المفتاح `-subscriptions`):

- بالنسبة للمجموعة الفرعية المحددة من الاشتراكات: دور `Reader` على `Microsoft.Insights/eventtypes/*` (مطلوب للحصول على سجل نشاط Azure Monitor)

اختياريًا (إذا كنت تستخدم المفتاح `-organizations`):

- بالنسبة للمجموعة الفرعية المحددة من اشتراكات Azure DevOps: `View audit log` (مطلوب للحصول على سجل تدقيق Azure DevOps)

لاسترداد سجلات Microsoft Entra باستخدام واجهة برمجة تطبيقات Microsoft Graph، تحتاج إلى مستخدم واحد على الأقل مع ترخيص [Microsoft Entra ID P1](https://www.microsoft.com/en-us/security/business/microsoft-entra-pricing). يمكن شراء هذا الترخيص لمستخدم واحد أو يمكن تضمينه في بعض خطط الترخيص مثل خطة *Microsoft 365 Business Premium*.

## الوظائف المضمنة في الوحدة النمطية

تحتوي الوحدة النمطية على 10 وظائف:

| **الوظيفة**  | **مصدر البيانات**  | الاحتفاظ | **الأداء**  | **الاكتمال** | **التفاصيل** |
|---|---|---|---|---|---|
| `Get-O365Full` | سجل التدقيق الموحد (Unified Audit Log) | 90 يومًا / 180 يومًا* |  ضعيف | جميع سجل التدقيق الموحد (Unified Audit Log) | افتراضيًا، يتم استرداد سجل التدقيق الموحد بأكمله. يجب استخدام هذا فقط على مستأجر صغير أو لفترة زمنية قصيرة.<br />يمكنك أيضًا استخدام هذا cmdlet لجمع الأحداث لبعض [أنواع السجلات](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) المحددة. |
| `Get-O365Light` | سجل التدقيق الموحد (Unified Audit Log) | 90 يومًا / 180 يومًا* |  جيد | مجموعة فرعية من سجل التدقيق الموحد فقط | يتم استرداد مجموعة فرعية فقط من *العمليات* التي تعتبر ذات أهمية. |
| `Get-O365Defender` | سجل التدقيق الموحد (Unified Audit Log) | 90 يومًا / 180 يومًا* |  جيد | مجموعة فرعية من سجل التدقيق الموحد فقط | يسترجع الأحداث المتعلقة بـ Microsoft Defender لـ Microsoft 365. يتطلب ترخيص [Office 365 E5](https://www.microsoft.com/en-us/microsoft-365/enterprise/office-365-e5?activetab=pivot:overviewtab) واحدًا على الأقل أو خطة ترخيص تتضمن Microsoft Defender لـ Office 365. |
| `Get-AADLogs` | سجلات Microsoft Entra | 30 يومًا |  جيد | جميع سجلات Microsoft Entra | الحصول على معلومات المستأجر وجميع سجلات Microsoft Entra: سجلات تسجيلات الدخول وسجلات التدقيق. |
| `Get-AADApps` | غير متاح | غير متاح |  جيد | كامل | خدمات الخوادم لـ Microsoft Entra ID وتطبيقاتها، وoauth2PermissionGrants وappRoleAssignments |
| `Get-AADDevices` | غير متاح | غير متاح |  جيد | كامل | أجهزة Microsoft Entra ID وأصحابها/مستخدميها |
| `Get-AADUsers` | غير متاح | غير متاح |  جيد | كامل | مستخدمو Microsoft Entra ID وطرق المصادقة الخاصة بهم |
| `Search-O365` | سجل التدقيق الموحد / سجل تدقيق صندوق البريد** | 90 يومًا / 180 يومًا* | ضعيف | مجموعة فرعية من سجل التدقيق الموحد فقط | البحث عن النشاط المتعلق بمستخدمين محددين أو عناوين IP أو نصوص حرة. |
| `Get-AzRMActivityLogs` | سجل نشاط Azure Monitor | 90 يومًا |  جيد | جميع سجل نشاط Azure Monitor | الحصول على جميع سجل نشاط Azure Monitor لمجموعة فرعية محددة من الاشتراكات. |
| `Get-AzDevOpsActivityLogs` | سجل تدقيق Azure DevOps | 90 يومًا |  جيد | جميع سجل تدقيق Azure DevOps | الحصول على جميع سجل تدقيق Azure DevOps لمجموعة فرعية محددة من مؤسسات Azure DevOps. |

\* يمكنك الحصول على 180 يومًا من الاحتفاظ باستخدام Purview، مقارنة بـ 90 يومًا افتراضيًا باستخدام Exchange Online.

** عند البحث عن المستخدمين، سيبحث cmdlet `Search-O365` أيضًا في سجل تدقيق صندوق البريد (Mailbox Audit Log).

تحتوي كل وظيفة على تعليق مساعد (comment-based help) يمكنك استدعاؤه باستخدام cmdlet *Get-Help*.```powershell
# Display comment-based help
PS> Get-Help Get-O365Full
# Display comment-based help with examples
PS> Get-Help Get-O365Full -Examples

تأخذ كل دالة كمعامل:

  • تاريخ بداية (-startDate) ;
  • تاريخ انتهاء (-endDate) ;
  • معرف التطبيق (-appId)، الذي يتم الحصول عليه عند إنشاء التطبيق ;
  • اسم المستأجر (-tenant) ;
  • مسار الشهادة بصيغة PFX (-certificatePath)، الذي يتم الحصول عليه عند إنشاء التطبيق.

أمثلة:

للوضوح، سنفترض أن:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"

root@kitploit:~
في حالة حقيقية، يتم جمع هذه المعلمات عند [إنشاء التطبيق](#creating-the-application).



من أجل استرداد سجلات Microsoft Entra من آخر 30 يومًا بالإضافة إلى معلومات عامة عن المستأجر:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

احصل على Microsoft Entra service principals وتطبيقها و oauth2PermissionGrant و appRoleAssignment:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-30) Get-AADApps --appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
الحصول على أجهزة Microsoft Entra وأصحابها ومستخدميها:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADDevices -appId $appId -tenant $tenant -certificatePath $certificatePath

احصل على مستخدمي Microsoft Entra وإعدادات أساليب المصادقة الخاصة بهم:```powershell Get-AADUsers -appId $appId -tenant $tenant -certificatePath $certificatePath -authenticationMethods

root@kitploit:~
استرداد أحداث سجل التدقيق الموحد التي تعتبر ذات أهمية من آخر 30 يومًا، باستثناء تلك المتعلقة بـ Entra ID، والتي تم استردادها بالفعل بواسطة الأمر الأول:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -operationsSet "allButAzureAD"

استرجاع أحداث سجل التدقيق الموحد التي تعتبر ذات أهمية في نافذة زمنية بين -90 يومًا و -30 يومًا من الآن:```powershell $endDate = (Get-Date).AddDays(-30) $startDate = (Get-Date).AddDays(-90) Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
إذا تم تمكين تدقيق صندوق البريد، يمكنك أيضًا استرداد عمليات `MailboxLogin` باستخدام المفتاح المخصص:

_احذر من حد عالمي يبلغ 50.000 حدثًا لكل بحث_```powershell
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -mailboxLogin

إذا كان هناك مستخدمون لديهم تراخيص Office 365 E5 أو إذا كان هناك خطة Microsoft Defender for Office 365 في المستأجر، يمكنك استرداد السجلات المتعلقة بـ Microsoft Defender من آخر 90 يومًا:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-O365Defender -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
لاسترداد جميع أحداث سجل التدقيق الموحد (Unified Audit Log) بين ليلة عيد الميلاد 2020 وبوكسينغ داي 2020: 

_احذر من ضعف الأداء عند استخدام ذلك الأمر cmdlet_```powershell
$endDate = Get-Date "12/26/2020"
$startdate = Get-Date "12/24/2020"
Get-O365Full -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

يمكنك استخدام وظيفة البحث للبحث عن عناوين IP أو النشاط المتعلق بمستخدمين معينين أو إجراء بحث نصي حر في سجل التدقيق الموحد:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90)

Retrieve events which contains the "Python" or "Python3" free text

Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -freeTexts "Python","Python3"

Retrieve events related to the IP adresses 8.8.8.8 and 4.4.4.4.

Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -IPAddresses "8.8.8.8","4.4.4.4"

Retrieve events related to users [email protected] and [email protected]

Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -userIds "[email protected]","[email protected]"

root@kitploit:~
عند البحث عن **مستخدمين** محددين، سيبحث `Search-O365` أيضًا في سجل تدقيق صندوق البريد. وذلك لأنه، اعتمادًا على مستوى ترخيص المستخدم وإعداداته، قد لا تكون بعض سجلات صندوق البريد موجودة في سجل التدقيق الموحد.

لاسترداد جميع سجلات نشاط Azure Resource Manager من الاشتراكات التي للتطبيق حق الوصول إليها:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-90)
Get-AzRMActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

لاسترداد جميع سجلات نشاط Azure DevOps من المؤسسات التي يمكن للتطبيق الوصول إليها:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-AzDevOpsActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
## الملفات المُنشأة

جميع الملفات المُنشأة بتنسيق JSON.

_قد يؤدي تشغيل عدة أوامر cmdlet تستخدم Purview وتكتب إلى نفس ملف الإخراج إلى JSON غير صالح بسبب "إلحاق" ساذج_

- `Get-AADApps` سينشئ في مجلد `azure_ad_apps`:
  - ملف JSON يحتوي على التطبيقات الموجودة والمحذوفة: `AADApps_example.onmicrosoft.com_applications_raw.json`;
  - ملف JSON يحتوي على موظفي الخدمة الموجودين والمحذوفين: `AADApps_example.onmicrosoft.com_service_principals_raw.json`;
  - ملف JSON يحتوي على موظفي الخدمة المُثرين: `AADApps_example.onmicrosoft.com.json`.

- `Get-AADDevices` سينشئ في مجلد `azure_ad_devices`:
  - ملف JSON يحتوي على الأجهزة الموجودة والمحذوفة: `AADDevices_example.onmicrosoft.com_devices_raw.json`;
  - ملف JSON يحتوي على الأجهزة المُثرية: `AADDevices_example.onmicrosoft.com.json`.

- `Get-AADUsers` سينشئ في مجلد `azure_ad_users`:
  - ملف JSON يحتوي على المستخدمين الموجودين والمحذوفين: `AADUsers_example.onmicrosoft.com_users_raw.json`;
  - ملف JSON يحتوي على إعدادات المصادقة للمستخدمين: `AADUsers_example.onmicrosoft.com_users_settings_raw.json`;
  - ملف JSON يحتوي على المستخدمين المُثرين: `AADUsers_example.onmicrosoft.com.json`.

- `Get-AADLogs` سينشئ:
  - في مجلد `azure_ad_tenant`:
    - ملف JSON يحتوي على معلومات عامة عن المستأجر: `AADTenant_example.onmicrosoft.com.json`.

  - في مجلد `azure_ad_audit`:
    - ملفات JSON تحتوي على سجلات تدقيق Microsoft Entra: `AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json`.

  - في مجلد `azure_ad_signin`:
    - ملفات JSON تحتوي على سجلات تسجيل الدخول إلى Microsoft Entra: `YYYY-MM-DD/AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`.

- `Get-AzRMActivityLogs` سينشئ:
  - في مجلد `azure_rm_subscriptions`:
    - ملف JSON يحتوي على معلومات عامة عن الاشتراكات: `AzRMsubscriptions_example.onmicrosoft.com.json`.

  - في مجلد `azure_rm_activity`:
    - ملفات JSON تحتوي على سجلات نشاط Azure Monitor: `YYYY-MM-DD/AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json`.

- `Get-AzDevOpsActivityLogs` سينشئ:
  - في مجلد `azure_DevOps_orgs`:
    - ملف JSON يحتوي على معلومات عامة عن مؤسسات Azure DevOps: `AzdevopsOrgs_example.onmicrosoft.com.json`.

  - في مجلد `azure_DevOps_activity`:
    - ملفات JSON تحتوي على سجلات تدقيق Azure DevOps: `YYYY-MM-DD/AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json`.

- `Get-O365Full` سينشئ في مجلد `O365_unified_audit_logs` (على التوالي `O365_unified_audit_logs_purview` عند استخدام Purview):
  - ملفات JSON تحتوي على سجلات التدقيق الموحدة: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (على التوالي `*/UnifiedAuditLogPurview_*` عند استخدام Purview);
  - ملفات JSON تحتوي على سجلات التدقيق الموحدة لـ [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) المحددة: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (على التوالي `*/UnifiedAuditLogPurview_*` عند استخدام Purview).

- `Get-O365Light` سينشئ في مجلد `O365_unified_audit_logs` (على التوالي `O365_unified_audit_logs_purview` عند استخدام Purview):
  - ملفات JSON تحتوي على سجلات التدقيق الموحدة لمجموعة فرعية من *العمليات*، والتي تُعتبر ذات أهمية: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (على التوالي `*/UnifiedAuditLogPurview_*` عند استخدام Purview).
- `Get-O365Defender` سينشئ في مجلد `O365_unified_audit_logs` (على التوالي `O365_unified_audit_logs_purview` عند استخدام Purview):
  - ملفات JSON تحتوي على سجلات التدقيق الموحدة لـ [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) المرتبطة بـ Defender: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (على التوالي `*/UnifiedAuditLogPurview_*` عند استخدام Purview).
- `Search-O365` سينشئ:
  - في مجلد `O365_unified_audit_logs` (على التوالي `O365_unified_audit_logs_purview` عند استخدام Purview):
    - ملفات JSON تحتوي على سجلات التدقيق الموحدة لـ `RequestType` المحدد (`FreeText`, `IPAddresses`, أو `UserIds`): `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RequestType%_YYYY-MM-DD-HH-MM-SS.json` (على التوالي `*/UnifiedAuditLogPurview_*` عند استخدام Purview). `YYYY-MM-DD-HH-MM-SS` يمثل الوقت الذي تم فيه الجمع. عند البحث عن `FreeText`، يُضاف `_%i` إضافي في النهاية، مما يشير إلى أن هذه هي نتيجة البحث عن النص الحر رقم `%i`.

  - في مجلد `Exchange_mailbox_audit_logs`:
    - ملفات JSON تحتوي على سجلات تدقيق صندوق البريد (فقط عند البحث عن UserIDs): `YYYY-MM-DD/MailboxAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS_%UserID%.json`. `YYYY-MM-DD-HH-MM-SS` يمثل الوقت الذي تم فيه الجمع. `%UserID%` يشير إلى أن هذه هي نتيجة البحث عن هذا UserID.




سيؤدي تشغيل الوظائف المختلفة إلى إنشاء هيكل دليل مشابه لهذا:```
output
│   Get-AADApps.log
│   Get-AADDevices.log
│   Get-AADLogs.log
│   Get-AzDevOpsActivityLogs.log
│   Get-AzRMActivityLogs.log
│   Get-O365Defender.log
│   Get-O365Full.log
│   Get-O365Light.log
│   Search-O365.log
│
├───azure_ad_apps
│       AADApps_example.onmicrosoft.com.json
│       AADApps_example.onmicrosoft.com_applications_raw.json
│       AADApps_example.onmicrosoft.com_service_principals_raw.json
│
├───azure_ad_audit
│       AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json
│       [...]
│
├───azure_ad_devices
│       AADDevices_example.onmicrosoft.com.json
│       AADDevices_example.onmicrosoft.com_devices_raw.json
│
├───azure_ad_signin
│   ├───YYYY-MM-DD
│   │       AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│   │       [...]
│   │
│   ├───[...]
│
├───azure_ad_tenant
│       AADTenant_example.onmicrosoft.com.json
│
├───azure_ad_users
│       AADUsers_divreponse.onmicrosoft.com.json
│       AADUsers_divreponse.onmicrosoft.com_users_raw.json
│       AADUsers_divreponse.onmicrosoft.com_users_settings_raw.json
|
├───azure_DevOps_activity
│   ├───YYYY-MM-DD
│   │       AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json
│   │       [...]
│   │
│   ├───[...]
│
├───azure_DevOps_orgs
│       AzdevopsOrgs_example.onmicrosoft.com.json
├───azure_rm_activity
│   ├───YYYY-MM-DD
│   │       AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json
│   │       [...]
│   │
│   ├───[...]
│
├───azure_rm_subscriptions
│       AzRMsubscriptions_example.onmicrosoft.com.json
│
├───Exchange_mailbox_audit_logs
│   └───YYYY-MM-DD
│   │       MailboxAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS_%UserID%.json
│   │       [...]
│   │
│   ├───[...]
│
├───O365_unified_audit_logs
│   ├───YYYY-MM-DD
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS.json
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_IPAddresses_YYYY-MM-DD-HH-MM-SS.json
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_FreeText_YYYY-MM-DD-HH-MM-SS_%i.json
│   │       [...]
│   │
│   ├───[...]
│
└───O365_unified_audit_logs_purview
│   ├───YYYY-MM-DD
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS.json
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_IPAddresses_YYYY-MM-DD-HH-MM-SS.json
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_FreeText_YYYY-MM-DD-HH-MM-SS_%i.json
│   │       [...]
│   │
│   ├───[...]
تنزيل الأداة
مصدر البيانات / نقطة النهايةالاحتفاظالأداءالنطاق
سجل التدقيق الموحد / Exchange Online PowerShell90 يومًاضعيفجميع سجلات Microsoft 365 (بما في ذلك Entra)
سجل التدقيق الموحد / Purview180 يومًاجيدجميع سجلات Microsoft 365 (بما في ذلك Entra)
سجل التدقيق الموحد / Office 365 Management API *7 أيامجيدجميع سجلات Microsoft 365 (بما في ذلك Entra)
سجلات Microsoft Entra / Microsoft Graph PowerShell30 يومًاجيدسجلات تسجيل الدخول والتدقيق لـ Entra فقط
سجلات Microsoft Entra / Microsoft Graph REST API30 يومًاجيدسجلات تسجيل الدخول والتدقيق لـ Entra فقط