MET
0.10.0
Security Posture Scanner for MDO, EXO and Teams - assesses MDO, EXO/EOP, and Teams protection posture.
Minimum PowerShell version
7.4
Installation Options
Owners
Copyright
(c) 2026 Pierre Thoor. MIT License.
Package Details
Author(s)
- Pierre Thoor
Tags
MDO Microsoft365 Defender ExchangeOnline Teams Security Posture Assessment
Functions
Connect-METSession Disconnect-METSession Invoke-METTriage Get-METReport Test-METPrerequisites
Dependencies
This module has no dependencies.
Release Notes
v0.10.0 - Connect-METSession security hardening. Fixes a confirmed cross-customer data leak in session reuse: Connect-METSession previously reused any live Exchange Online/Graph/Teams connection without verifying it belonged to the requested tenant, so running MET against two different -DelegatedOrganization customers in the same session without disconnecting in between could return a report labeled for one customer containing another customer's actual configuration. Adds certificate-file authentication (-CertificatePath/-CertificatePassword) for non-Windows platforms, since -CertificateThumbprint is Windows-only. Scopes device-code authentication down to a documented headless-only fallback, with a warning on every use, per Microsoft's current guidance to block it wherever possible. Adds Disconnect-METSession for clean session teardown across all three connection legs. Adds MET-MDO014 (Group Reference Audit) and expands MET-EXO014 (Advanced Delivery Policy) coverage. v0.9.0 - Quarantine policy accuracy pass. Fixes two confirmed false-positive bugs: MET-EXO009 previously flagged Microsoft's own Standard/Strict preset security policies as Fail/Warning for impersonation, spoof, and phish quarantine verdicts, even though Microsoft's own Strict preset uses full-access quarantine policies for those verdicts by design; corrected to only evaluate the two verdicts (Malware, High-Confidence Phish) that actually have a restrictive floor. MET-EXO004 previously flagged the built-in AdminOnlyAccessPolicy's by-design "no access" configuration as a misconfiguration on every tenant; narrowed to evaluate only genuinely custom quarantine policies. Adds preset-aware retention handling to MET-EXO008 and a new informational check, MET-EXO017 (Quarantine Notification Cadence). v0.8.0 - Teams attack-surface hardening. Adds five new Teams checks: MET-Teams009 (Trial Tenant Federation Exposure), MET-Teams010 (Per-User External Access Policy Drift), MET-Teams011 (SecOps Blocklist Authority & Blocked Entities), MET-Teams012 (Call Reporting / vishing surface), and MET-Teams014 (Cross-Tenant Guest & External Collaboration, the first check with a direct Microsoft Graph dependency). Also fixes a real gap in MET-Teams003, which previously only evaluated the Global meeting policy and missed custom meeting policies entirely, and adds rule-level exception visibility to MET-Teams001 and MET-Teams004.
FileList
- MET.nuspec
- MET.psd1
- Private\Expand-METGroupMembership.ps1
- Checks\Teams\MET-Teams007-GuestConfiguration.ps1
- Checks\EXO\MET-EXO016-ArcTrustedSealers.ps1
- MET.psm1
- Private\New-METCheckResult.ps1
- Checks\Teams\MET-Teams012-CallReporting.ps1
- Checks\EXO\MET-EXO012-MailboxForwarding.ps1
- Private\Resolve-METCoverageMatrix.ps1
- Checks\Teams\MET-Teams005-TeamsUserReporting.ps1
- Checks\EXO\MET-EXO001-DMARC.ps1
- LICENSE
- Private\Resolve-METEffectivePolicy.ps1
- Checks\Teams\MET-Teams011-SecOpsBlocklistAuthority.ps1
- Checks\EXO\MET-EXO003-SPF.ps1
- Public\Disconnect-METSession.ps1
- Private\Get-METPresetSecurityPolicyTier.ps1
- Checks\Teams\MET-Teams002-SafeAttachments.ps1
- Checks\EXO\MET-EXO017-QuarantineNotificationCadence.ps1
- Public\Test-METPrerequisites.ps1
- Private\Get-METRuleScope.ps1
- Checks\Teams\MET-Teams014-CrossTenantAccess.ps1
- Checks\MDO\MET-MDO010-PriorityAccounts.ps1
- Public\Invoke-METTriage.ps1
- Private\Expand-METRuleRecipients.ps1
- Checks\Teams\MET-Teams009-TrialTenantFederation.ps1
- Checks\MDO\MET-MDO007-AntiSpamOutbound.ps1
- Public\Connect-METSession.ps1
- Private\Test-METAssemblyLoadConflict.ps1
- Checks\EXO\MET-EXO006-SubmissionPolicy.ps1
- Checks\MDO\MET-MDO004-AntiSpoofing.ps1
- Public\Get-METReport.ps1
- Private\Get-METCertificateByThumbprint.ps1
- Checks\EXO\MET-EXO014-AdvancedDeliveryPolicy.ps1
- Checks\MDO\MET-MDO011-UserTags.ps1
- Private\Resolve-METDnsName.ps1
- Private\Test-METIsPresetSecurityPolicyName.ps1
- Checks\EXO\MET-EXO011-ConnectorHygiene.ps1
- Checks\MDO\MET-MDO013-PolicyPrecedenceConflicts.ps1
- Private\Find-METRuleContradictions.ps1
- Private\Resolve-METAntiPhishEffectivePolicy.ps1
- Checks\EXO\MET-EXO002-DKIM.ps1
- Checks\MDO\MET-MDO009-ZAP.ps1
- Private\New-METEffectivePolicyCoverageResult.ps1
- Private\Get-METAssemblyFileVersion.ps1
- Checks\EXO\MET-EXO010-DirectSend.ps1
- Checks\MDO\MET-MDO008-PresetPolicyCoverage.ps1
- Private\Resolve-METSafeLinksEffectivePolicy.ps1
- Private\Get-METPolicyOrderingObservations.ps1
- Checks\EXO\MET-EXO015-ExternalSenderTag.ps1
- Checks\MDO\MET-MDO001-SafeLinks.ps1
- Private\Resolve-METPresetPolicy.ps1
- Checks\Teams\MET-Teams001-SafeLinks.ps1
- Checks\EXO\MET-EXO004-QuarantinePolicy.ps1
- Checks\MDO\MET-MDO006-AntiSpamInbound.ps1
- Private\Get-METAssessableMailboxes.ps1
- Checks\Teams\MET-Teams004-ZAPForTeams.ps1
- Checks\EXO\MET-EXO008-QuarantineRetention.ps1
- Checks\MDO\MET-MDO014-GroupReferenceAudit.ps1
- Private\Resolve-METTenantGuid.ps1
- Checks\Teams\MET-Teams008-AppPermissionPolicy.ps1
- Checks\EXO\MET-EXO007-TransportRuleAudit.ps1
- Checks\MDO\MET-MDO002-SafeAttachments.ps1
- Private\Test-METIsBuiltInQuarantinePolicyName.ps1
- Checks\Teams\MET-Teams003-MeetingProtection.ps1
- Checks\EXO\MET-EXO005-TenantAllowBlockList.ps1
- Checks\MDO\MET-MDO012-SafeDocuments.ps1
- Private\Get-METCheckWeight.ps1
- Checks\Teams\MET-Teams006-ExternalAccess.ps1
- Checks\EXO\MET-EXO009-QuarantinePolicyVerdictAlignment.ps1
- Checks\MDO\MET-MDO003-AntiPhish.ps1
- Private\Get-METCertificateFromFile.ps1
- Checks\Teams\MET-Teams010-ExternalAccessPolicyDrift.ps1
- Checks\EXO\MET-EXO013-SpoofIntelligenceAllowList.ps1
- Checks\MDO\MET-MDO005-AntiMalware.ps1
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 0.10.0 (current version) | 5 | 8/19/2026 |