From ed4441bc92c4d0856a65fd37417dfe8a075317c0 Mon Sep 17 00:00:00 2001 From: kingwil <5839248+kingwil@users.noreply.github.com> Date: Wed, 14 Oct 2026 20:04:36 +0100 Subject: [PATCH 1/7] Add Defender XDR 3.2.1 workbook-only candidate package Include three XDR workbooks and their connector prerequisite; preserve existing repository content. Candidate validation and installation remain incomplete. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Data/Solution_Microsoft Defender XDR.json | 452 +- .../Microsoft Defender XDR/Package/3.2.1.zip | Bin 0 -> 243596 bytes .../Package/createUiDefinition.json | 6126 +- .../Package/mainTemplate.json | 74274 +++++++-------- .../Package/testParameters.json | 26 +- .../SolutionMetadata.json | 37 +- .../MicrosoftDefenderForEndPoint.json | 3889 + .../MicrosoftDefenderForIdentity.json | 5443 ++ ...nderForOffice365detectionsandinsights.json | 77565 ++++++++++++++++ 9 files changed, 118705 insertions(+), 49107 deletions(-) create mode 100644 Solutions/Microsoft Defender XDR/Package/3.2.1.zip create mode 100644 Solutions/Microsoft Defender XDR/XDR Workbooks/MicrosoftDefenderForEndPoint.json create mode 100644 Solutions/Microsoft Defender XDR/XDR Workbooks/MicrosoftDefenderForIdentity.json create mode 100644 Solutions/Microsoft Defender XDR/XDR Workbooks/MicrosoftDefenderForOffice365detectionsandinsights.json diff --git a/Solutions/Microsoft Defender XDR/Data/Solution_Microsoft Defender XDR.json b/Solutions/Microsoft Defender XDR/Data/Solution_Microsoft Defender XDR.json index 1c8d54ffb68..418bfdf88ef 100644 --- a/Solutions/Microsoft Defender XDR/Data/Solution_Microsoft Defender XDR.json +++ b/Solutions/Microsoft Defender XDR/Data/Solution_Microsoft Defender XDR.json @@ -2,451 +2,25 @@ "Name": "Microsoft Defender XDR", "Author": "Microsoft - support@microsoft.com", "Logo": "", - "Description": "The [Microsoft Defender XDR](https://www.microsoft.com/security/business/threat-protection/microsoft-365-defender) solution for Microsoft Sentinel enables you to ingest Security Alerts/Incidents and raw logs from the products within Microsoft Defender XDR suite into Microsoft Sentinel.\n\nAdditional Hunting Queries to support proactive and reactive hunting for the Microsoft Defender XDR solution can be found on [GitHub](https://github.com/Azure/Azure-Sentinel/tree/master/Hunting%20Queries/Microsoft%20365%20Defender). This repository has a collection of queries developed by Microsoft Security Research and Microsoft Sentinel community contributions.\n\n**Underlying Microsoft Technologies used:**\n\nThis solution takes a dependency on the following technologies, and some of these dependencies either may be in [Preview](https://azure.microsoft.com/support/legal/preview-supplemental-terms/) state or might result in additional ingestion or operational costs:\n\na. [Azure Monitor HTTP Data Collector API](https://docs.microsoft.com/azure/azure-monitor/logs/data-collector-api)", + "Description": "Workbook-only authoring candidate for Microsoft Defender XDR: Defender for Endpoint, Defender for Identity, and Office 365 Detections & Insights. Includes the Microsoft Defender XDR connector prerequisite for panels using connected Sentinel SecurityAlert data. Detection rules, hunting queries, playbooks, and Sentinel workbook installation are excluded. Live installation and runtime qualification are not established.", "Data Connectors": [ "Data Connectors/MicrosoftThreatProtection.json" ], - "Analytic Rules": [ - "Analytic Rules/PossiblePhishingwithCSL&NetworkSession.yaml", - "Analytic Rules/SUNSPOTHashes.yaml", - "Analytic Rules/PotentialBuildProcessCompromiseMDE.yaml", - "Analytic Rules/SolarWinds_TEARDROP_Process-IOCs.yaml", - "Analytic Rules/SolarWinds_SUNBURST_Network-IOCs.yaml", - "Analytic Rules/SolarWinds_SUNBURST_&_SUPERNOVA_File-IOCs.yaml", - "Analytic Rules/AVdetectionsrelatedtoUkrainebasedthreats.yaml", - "Analytic Rules/AVTarrask.yaml", - "Analytic Rules/AVSpringShell.yaml", - "Analytic Rules/PossibleWebpBufferOverflow.yaml", - "Analytic Rules/Campaign/Jupyter-Solarmaker/DeimosComponentExecution.yaml", - "Analytic Rules/Campaign/Macaw Ransomware/ImminentRansomware.yaml", - "Analytic Rules/Campaign/Sysrv-botnet/MaliciousCMDExecutionByJava.yaml", - "Analytic Rules/Command and Control/C2-NamedPipe.yaml", - "Analytic Rules/Credential Access/DoppelPaymerProcDump.yaml", - "Analytic Rules/Credential Access/LSASSCredDumpProcdump.yaml", - "Analytic Rules/Defense Evasion/DoppelpaymerStopService.yaml", - "Analytic Rules/Defense Evasion/QakbotCampaignSelfDeletion.yaml", - "Analytic Rules/Defense Evasion/Regsvr32Rundll32ImageLoadsAbnormalExtension.yaml", - "Analytic Rules/Defense Evasion/Regsvr32Rundll32WithAnomalousParentProcess.yaml", - "Analytic Rules/Discovery/SuspiciousCommandInitiatedByWebServerProcess.yaml", - "Analytic Rules/Execution/BITSAdminActivity.yaml", - "Analytic Rules/Execution/OfficeAppsLaunchingWscript.yaml", - "Analytic Rules/Execution/PotentialKerberoastActivities.yaml", - "Analytic Rules/Exfiltration/FilesCopiedToUSBDrives.yaml", - "Analytic Rules/Exploits/MosaicLoader.yaml", - "Analytic Rules/Impact/AnomalousVoulmeOfFileDeletion.yaml", - "Analytic Rules/Lateral Movement/RemoteFileCreationWithPsExec.yaml", - "Analytic Rules/Lateral Movement/ServiceAccountsPerformingRemotePS.yaml", - "Analytic Rules/Persistence/AccountCreation.yaml", - "Analytic Rules/Persistence/LocalAdminGroupChanges.yaml", - "Analytic Rules/Persistence/RareProcessAsService.yaml", - "Analytic Rules/Ransomware/DEV-0270/DisableSecurityServiceViaRegistry.yaml", - "Analytic Rules/Ransomware/DataDeletionOnMulipleDrivesUsingCipherExe.yaml", - "Analytic Rules/Ransomware/LaZagneCredTheft.yaml", - "Analytic Rules/Ransomware/LogDeletionUsingWevtutil.yaml", - "Analytic Rules/Ransomware/MultiProcessKillWithTaskKill.yaml", - "Analytic Rules/Ransomware/PotentialCobaltStrikeRansomwareActivity.yaml", - "Analytic Rules/Ransomware/QakbotDiscoveryActivities.yaml", - "Analytic Rules/Ransomware/ShadowCopyDeletion.yaml" - ], - "Hunting Queries": [ - "Hunting Queries/Appspot Phishing Abuse.yaml", - "Hunting Queries/Campaigns/Bazacall/PayloadDropUsingCertUtil.yaml", - "Hunting Queries/Campaigns/JudgementPandaExfilActivity.yaml", - "Hunting Queries/Campaigns/Jupyter-Solarmaker/DeimosComponentExecution.yaml", - "Hunting Queries/Campaigns/LemonDuck/LemonDuckRegistrationFunction.yaml", - "Hunting Queries/Campaigns/Log4j/DeviceWithLog4jAlerts.yaml", - "Hunting Queries/Campaigns/Log4j/Log4jVulnRelatedAlerts.yaml", - "Hunting Queries/Campaigns/Macaw Ransomware/ImminentRansomware.yaml", - "Hunting Queries/Campaigns/Macaw Ransomware/MaliciousUseOfMSBuildAsLoLBin.yaml", - "Hunting Queries/Campaigns/Qakbot/QakbotReconActivities.yaml", - "Hunting Queries/Campaigns/RobbinhoodDriver.yaml", - "Hunting Queries/Campaigns/Snip3MaliciousNetworkConnectivity.yaml", - "Hunting Queries/Campaigns/Sysrv-botnet/MaliciousCMDExecutionByJava.yaml", - "Hunting Queries/Check for spoofing attempts on the domain with Authentication failures.yaml", - "Hunting Queries/Command and Control/C2-NamedPipe.yaml", - "Hunting Queries/Command and Control/ReconWithRundll.yaml", - "Hunting Queries/Credential Access/DoppelPaymerProcdump.yaml", - "Hunting Queries/Credential Access/LaZagne.yaml", - "Hunting Queries/Credential Access/LSASSCredDumpProcdump.yaml", - "Hunting Queries/Defense Evasion/ClearSystemLogs.yaml", - "Hunting Queries/Defense Evasion/DoppelpaymerStopServices.yaml", - "Hunting Queries/Defense Evasion/QakbotCampaignSelfDeletion.yaml", - "Hunting Queries/Defense Evasion/Regsvr32Rundll32ImageLoadsAbnormalExtension.yaml", - "Hunting Queries/Defense Evasion/Regsvr32Rundll32WithAnomalousParentProcess.yaml", - "Hunting Queries/Delivered Bad Emails from Top bad IPv4 addresses.yaml", - "Hunting Queries/Discovery/SuspiciousCommandInitiatedByWebServerProcess.yaml", - "Hunting Queries/Discovery/User&GroupEnumWithNetCommand.yaml", - "Hunting Queries/Email and Collaboration Queries/Attachment/ATP policy status check.yaml", - "Hunting Queries/Email and Collaboration Queries/Attachment/JNLP attachment.yaml", - "Hunting Queries/Email and Collaboration Queries/Attachment/Safe attachment detection.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/Authentication failures.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/CompAuth Failure Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/DKIM Failure Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/DMARC Failure Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/SPF Failure Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/Spoof attempts with auth failure.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/Top Spoof detections by Sender Domain.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/Top Spoof DMARC detections by Sender Domain.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/Top Spoof Intra-Org detections by SenderDomain.yaml", - "Hunting Queries/Email and Collaboration Queries/Custom Detections/Message from Accepted Domain with DMARC TempError.yaml", - "Hunting Queries/Email and Collaboration Queries/Custom Detections/Message with URL listed on OpenPhish delivered into Inbox.yaml", - "Hunting Queries/Email and Collaboration Queries/Custom Detections/Potential OAuth phishing email delivered into Inbox.yaml", - "Hunting Queries/Email and Collaboration Queries/Custom Detections/Potentially malicious SVG file delivered into Inbox.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Audit Email Preview-Download action.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Bad email percentage - Inbound emails.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Calculate MDO Efficacy.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Email sender IP address Geo location information.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Hunt for Admin email access.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Hunt for TABL changes.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Local time to UTC time conversion.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Mail item accessed.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Malicious email senders.yaml", - "Hunting Queries/Email and Collaboration Queries/General/MDO daily detection summary report.yaml", - "Hunting Queries/Email and Collaboration Queries/General/New TABL Items.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Top 10 Domains sending Malicious Emails (Malware+Phish+Spam).yaml", - "Hunting Queries/Email and Collaboration Queries/General/Top 10 External Senders (Malware).yaml", - "Hunting Queries/Email and Collaboration Queries/General/Top 10 External Senders (Phish).yaml", - "Hunting Queries/Email and Collaboration Queries/General/Top 10 External Senders (Spam).yaml", - "Hunting Queries/Email and Collaboration Queries/General/Top 10 External Senders.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Top 10 Targeted Users (Malware+Phish+Spam).yaml", - "Hunting Queries/Email and Collaboration Queries/General/Top 10 Users clicking on Malicious URLs (Malware+Phish+Spam).yaml", - "Hunting Queries/Email and Collaboration Queries/General/Total number of detections by MDO over time.yaml", - "Hunting Queries/Email and Collaboration Queries/General/Total number of detections by MDO.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Automated email notifications and suspicious sign-in activity.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/BEC - File sharing tactics - Dropbox.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/BEC - File sharing tactics - OneDrive or SharePoint.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Email bombing.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Emails containing links to IP addresses.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Files share contents and suspicious sign-in activity.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Good emails from senders with bad patterns.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Hunt for email bombing attacks.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Hunt for email conversation take over attempts.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Hunt for malicious attachments using external IOC source.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Hunt for malicious URLs using external IOC source.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/Inbox rule change which forward-redirect email.yaml", - "Hunting Queries/Email and Collaboration Queries/Hunting/MDO_CountOfRecipientsEmailaddressbySubject.YAML", - "Hunting Queries/Email and Collaboration Queries/Hunting/MDO_Countofrecipientsemailaddressesbysubject.YAML", - "Hunting Queries/Email and Collaboration Queries/Hunting/MDO_CountOfSendersEmailaddressbySubject.YAML", - "Hunting Queries/Email and Collaboration Queries/Hunting/MDO_SummaryOfSenders.YAML", - "Hunting Queries/Email and Collaboration Queries/Hunting/MDO_URLClickedinEmail.YAML", - "Hunting Queries/Email and Collaboration Queries/Hunting/Top outbound recipient domains sending inbound emails with threats.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Detections by detection methods.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Mail reply to new domain.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Mailflow by directionality.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Malicious emails detected per day.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Sender recipient contact establishment.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Spam Detections by Delivery Location - High.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Spam Detections by Delivery Location - Medium.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Top 100 malicious email senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Top 100 senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Zero day threats.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Email containing malware accessed on a unmanaged device.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Email containing malware sent by an internal sender.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Email malware detection report.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/File Malware Detection Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/File Malware Top Families by AV.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/File Malware Top Families by Safe Attachments.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Malware Detection Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Malware Detections by Delivery Location.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Malware Detections by Detection Technology Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Malware Detections by Detection Technology.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Malware detections by Workload Locations.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Malware detections by Workload Type.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Top Domains sending Malware.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Top Email Malware Families.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Top Users receiving Malware.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Zero-day Malware Detections Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Communication from suspicious external users.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Communication to suspicious external users.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Expanding recipients into separate rows.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/External malicious Teams messages sent from internal senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Hunt for malicious messages using External Threat Intelligence.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Inbound Teams messages by sender domains.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Malicious Teams messages by URL detection methods.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Malicious Teams messages received from external senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Microsoft Teams chat initiated by a suspicious external user.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Number of unique accounts performing Teams message Admin submissions.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Number of unique accounts performing Teams message User submissions.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Possible partner impersonation in external Team messages.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Possible Teams phishing activity.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Potentially malicious URL click in Teams.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Rare Domains in External Teams Messages.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Suspicious Teams Display Name.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams Admin submission of Malware and Phish daily trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams Admin submission of No Threats daily trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams Admin-User Submissions Grading Verdicts.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams blocked URL clicks daily trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams Malware ZAP .yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams Message with URL listed on OpenPhish.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams message ZAPed with the same URL in Email.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams messages from a specific sender by ThreadType.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams messages with suspicious URL domains.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams Phish ZAP.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams post delivery events daily trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams Spam ZAP.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams URL clicks actions summarized by URLs clicked on.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams URL clicks through actions on Phish or Malware URLs summarized by URLs.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams User submissions daily trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams users clicking on suspicious URL domains.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top 10 Attacked user by Phish messages.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top 10 external senders sending Teams messages.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top 10 External senders sending Teams phishing messsages.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top 10 sender domains - Admin Teams message submissions FN.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top 10 sender domains - Teams user submissions FN or FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top 10 senders - Teams users submissions FN or FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top 10 senders of Admin Teams message submissions FN.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top 10 senders of Admin Teams message submissions FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top 10 Users clicking on malicious URLs in Teams.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top accounts performing Teams admin submissions FN or FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top accounts performing Teams user submissions FN or FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top domains outbound sending Malicious Teams messages inbound.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top external malicious senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top External Sender domains - Malware.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top External Sender domains - Phish.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top External Sender domains - Spam.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Top malicious URLs clicked by users in Teams.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Total number of MDO Teams protection detections daily.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/URL click on URLs in ZAP-d Teams messages.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Spam and Phish delivered to Inbox due to Admin Overrides.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Spam and Phish delivered to Inbox due to User Overrides.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Top policies performing admin overrides.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Top policies performing user overrides.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Total Emails with Admin Overrides - Allow.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Total Emails with Admin Overrides - Block.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Total Emails with User Overrides - Allow.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Total Emails with User Overrides - Block.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phish Detection Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phish Detections by Delivery Location - High.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phish Detections by Delivery Location - Medium.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phish Detections by Delivery Location Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phish Detections by Detection Technology Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phish Detections by Detection Technology.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Possible device code phishing attempts.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Top Domains sending Phish.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Top Users receiving Phish.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Zero-day Phish Detections Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Campaign with randomly named attachments.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Campaign with suspicious keywords.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Custom detection-Emails with QR from non-prevalent senders.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Emails delivered having URLs from QR codes.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Emails with QR codes and suspicious keywords in subject.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Emails with QR codes from non-prevalent sender.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Hunting for sender patterns.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Hunting for user signals-clusters.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Inbound emails with QR code URLs.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Personalized campaigns based on the first few keywords.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Personalized campaigns based on the last few keywords.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Risky sign-in attempt from a non-managed device.yaml", - "Hunting Queries/Email and Collaboration Queries/QR code/Suspicious sign-in attempts from QR code phishing campaigns.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/Group quarantine release.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/High Confidence Phish Released.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/Quarantine Phish reason trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/Quarantine Phish reason.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/Quarantine Release Email Details.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/Quarantine release trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/Quarantine releases by Detection types.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/Quarantine Spam reason trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/Quarantine Spam reason.yaml", - "Hunting Queries/Email and Collaboration Queries/Remediation/AIR investigation actions insight.yaml", - "Hunting Queries/Email and Collaboration Queries/Remediation/Email remediation action list.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Bulk Detection Top10 Domains.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detection Delivery Location.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detection IP and Geo Position.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detection Mails with BCL.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detection Tech.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detection Top10 Domains.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detection Top10 Users.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detection Top15 Domains Details.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detection Top15 Users Details.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detection Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detections by Detection technology.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Display Name - Spoof and Impersonation.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Impersonation Phishing detections by Detection Technology Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Impersonation Phishing detections by Detection Technology.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Impersonation Phishing detections trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Referral phish emails.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Spoof and impersonation detections by sender IP.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Spoof and impersonation phish detections.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Spoof detections by Detection Technology Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Spoof detections by Detection Technology.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Spoof detections trend.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Top Domains with BEC Threats inbound.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/User not covered under display name impersonation.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submission Trend - FN.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submission Trend - FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submissions by Detection Method - Phish FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submissions by Detection Method - Spam FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submissions by Detection Type.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submissions by Grading Verdict - FN-FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submissions by Submission State - FN.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submissions by Submission State - FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submissions by Submission Type - FN.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Admin Submissions by Submission Type - FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Top accounts performing admin submissions - FN.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Top accounts performing admin submissions - FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Top accounts performing user submissions.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Top Detection Overrides - Admin Submissions.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Top Sender Domains - Admin Submissions FN.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Top Sender Domains - Admin Submissions FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Total Submissions by Submission Status.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Total Submissions by Submission Type.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User reported submissions.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submission Accuracy versus Admin Verdicts.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top detection overrides by Admins.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top detection overrides by Users.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top email (P2) senders domains.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top email (P2) senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top Intra-Org P2 senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top Intra-Org Subjects.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions by Admin review status.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions by Grading Verdict - FN-FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions by Submission Type.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions from Junk Folder.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions Trend - FN.yaml", - "Hunting Queries/Email and Collaboration Queries/Top Attacks/Attacked more than x times average.yaml", - "Hunting Queries/Email and Collaboration Queries/Top Attacks/Malicious mails by sender IPs.yaml", - "Hunting Queries/Email and Collaboration Queries/Top Attacks/Top 10 percent of most attacked users.yaml", - "Hunting Queries/Email and Collaboration Queries/Top Attacks/Top 10 URL domains attacking organization.yaml", - "Hunting Queries/Email and Collaboration Queries/Top Attacks/Top external malicious senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Top Attacks/Top targeted users.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/End user malicious clicks.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/URL click count by click action.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/URL click on ZAP Email.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/URL clicks actions by URL.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/URLClick details based on malicious URL click alert.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/User clicked through events.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/User clicks on malicious inbound emails.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/User clicks on phishing URLs in emails.yaml", - "Hunting Queries/Email and Collaboration Queries/URL/Malicious Clicks allowed (click-through).yaml", - "Hunting Queries/Email and Collaboration Queries/URL/Malicious Emails with QR code Urls.yaml", - "Hunting Queries/Email and Collaboration Queries/URL/Phishing Email Url Redirector.yaml", - "Hunting Queries/Email and Collaboration Queries/URL/SafeLinks URL detections.yaml", - "Hunting Queries/Email and Collaboration Queries/URL/Top 10 Users clicking on Malicious URLs (Malware).yaml", - "Hunting Queries/Email and Collaboration Queries/URL/Top 10 Users clicking on Malicious URLs (Phish).yaml", - "Hunting Queries/Email and Collaboration Queries/URL/Top 10 Users clicking on Malicious URLs (Spam).yaml", - "Hunting Queries/Email and Collaboration Queries/URL/URL Click attempts by threat type.yaml", - "Hunting Queries/Email and Collaboration Queries/URL/URL Clicks by Action.yaml", - "Hunting Queries/Email and Collaboration Queries/URL/URLs by location.yaml", - "Hunting Queries/Email and Collaboration Queries/ZAP/Post Delivery Events by Admin.yaml", - "Hunting Queries/Email and Collaboration Queries/ZAP/Post Delivery Events by Location.yaml", - "Hunting Queries/Email and Collaboration Queries/ZAP/Post Delivery Events by ZAP type.yaml", - "Hunting Queries/Email and Collaboration Queries/ZAP/Post Delivery Events over time.yaml", - "Hunting Queries/EmailDelivered-ToInbox.yaml", - "Hunting Queries/Execution/AnomalousPayloadDeliveredWithISOFile.yaml", - "Hunting Queries/Execution/BitsadminActivity.yaml", - "Hunting Queries/Execution/MaliciousUseOfMSIExec.yaml", - "Hunting Queries/Execution/MaliciousUseOfMsiExecMimikatz.yaml", - "Hunting Queries/Execution/OfficeAppsLaunchingWscript.yaml", - "Hunting Queries/Execution/PotentialKerberoastActivities.yaml", - "Hunting Queries/Execution/PowerShellDownloads.yaml", - "Hunting Queries/Execution/SuspiciousAppExeutedByWebserver.yaml", - "Hunting Queries/Execution/SuspiciousMshtaUsage.yaml", - "Hunting Queries/Exfiltration/FilesCopiedToUSBDrives.yaml", - "Hunting Queries/Exploits/CVE-2022-26134-Confluence.yaml", - "Hunting Queries/Exploits/MosaicLoader.yaml", - "Hunting Queries/Exploits/Print Spooler RCE/SpoolsvSpawningRundll32.yaml", - "Hunting Queries/Exploits/Print Spooler RCE/SuspiciousDLLInSpoolFolder.yaml", - "Hunting Queries/Exploits/Print Spooler RCE/SuspiciousFilesInSpoolFolder.yaml", - "Hunting Queries/Exploits/Print Spooler RCE/SuspiciousSpoolsvChildProcess.yaml", - "Hunting Queries/Exploits/PrintNightmareUsageDetection-CVE-2021-1675.yaml", - "Hunting Queries/Exploits/SuspiciousFileCreationByPrintSpoolerService.yaml", - "Hunting Queries/General Queries/MITRESuspiciousEvents.yaml", - "Hunting Queries/Impact/AnomalousVoulmeOfFileDeletion.yaml", - "Hunting Queries/Initial Access/DetectMailSniper.yaml", - "Hunting Queries/Lateral Movement/AccountBruteForce.yaml", - "Hunting Queries/Lateral Movement/RemoteFileCreationWithPsExec.yaml", - "Hunting Queries/Lateral Movement/ServiceAccountsPerformingRemotePS.yaml", - "Hunting Queries/Persistence/AccountCreation.yaml", - "Hunting Queries/Persistence/LocalAdminGroupChanges.yaml", - "Hunting Queries/Persistence/RareProcessAsService.yaml", - "Hunting Queries/Persistence/ScheduledTaskCreation.yaml", - "Hunting Queries/Privilege Escalation/SAMNameChange_CVE-2021-42278.yaml", - "Hunting Queries/Ransomware/DataDeletionOnMulipleDrivesUsingCipherExe.yaml", - "Hunting Queries/Ransomware/DetectMultipleSignsOfRamsomwareActivity.yaml", - "Hunting Queries/Ransomware/DEV-0270/DisableSecurityServiceViaRegistry.yaml", - "Hunting Queries/Ransomware/DEV-0270/DomainDiscoveryWMICwithDLLHostExe.yaml", - "Hunting Queries/Ransomware/DEV-0270/MDEExclusionUsingPowerShell.yaml", - "Hunting Queries/Ransomware/IcedIdSuspiciousImageLoad.yaml", - "Hunting Queries/Ransomware/LaZagneCredTheft.yaml", - "Hunting Queries/Ransomware/LogDeletionUsingWevtutil.yaml", - "Hunting Queries/Ransomware/MultiProcessKillWithTaskKill.yaml", - "Hunting Queries/Ransomware/PotentialCobaltStrikeRansomwareActivity.yaml", - "Hunting Queries/Ransomware/QakbotDiscoveryActivities.yaml", - "Hunting Queries/Ransomware/ShadowCopyDeletion.yaml", - "Hunting Queries/Ransomware/TurningOffServicesWithSCCommad.yaml", - "Hunting Queries/TVM/Detect_CISA_Alert_AA22-117A2021_Top_Routinely_Exploited_Vulnerabilities.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Punycode chars lookalike domains.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Hunt for RMM tool execution following Teams messages.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Hunt for alerts correlated with Teams messages.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Identify acting user for reported phish.yaml", - "Hunting Queries/Email and Collaboration Queries/Authentication/Inbound Sender Domains Failing Email Authentication.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Automatic External Email Forwarding by Type.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/First-Contact External Email Senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/New External Sender Domains Carrying Threats.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Top External Domains Receiving Auto-forwarded Email.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Top External Recipients Receiving Auto-forwarded Email.yaml", - "Hunting Queries/Email and Collaboration Queries/Mailflow/Top Users Auto-forwarding Email Externally.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/File Malware Detections Over Time.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/File Malware Detections by Location.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/File Malware Detections by Workload.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/File Malware Top Families by MDO Detonation.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/File Malware Top Families by SharePoint Antivirus.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/File Scanning Coverage.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Malware Detection IP and Geo Position.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Malware Detections by Sender Country.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Malware Detections by Threat Classification.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Top Attacked Users by Malware Threat Classification.yaml", - "Hunting Queries/Email and Collaboration Queries/Malware/Top File Owners Holding Malware.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/First-Contact External Teams Senders.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Malicious files shared in Microsoft Teams.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Microsoft Teams External versus Internal Thread Exposure.yaml", - "Hunting Queries/Email and Collaboration Queries/Microsoft Teams protection/Teams File Protection Summary.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/SecOps Mailbox Override Count.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/SecOps Mailbox Overrides by Threat Type.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Top Recipients Receiving Threats Delivered by Override.yaml", - "Hunting Queries/Email and Collaboration Queries/Overrides/Top Sender Domains Delivering Threats via Override.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phish Detection IP and Geo Position.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phish Detections by Sender Country.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phish Detections by Threat Classification.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Phishing Detected by LLM Content Analysis.yaml", - "Hunting Queries/Email and Collaboration Queries/Phish/Top Attacked Users by Phish Threat Classification.yaml", - "Hunting Queries/Email and Collaboration Queries/Quarantine/Quarantine Release Percentage.yaml", - "Hunting Queries/Email and Collaboration Queries/Remediation/Automated Investigation Outcomes by Day.yaml", - "Hunting Queries/Email and Collaboration Queries/Remediation/Automated Remediation Delivery to Action Latency.yaml", - "Hunting Queries/Email and Collaboration Queries/Remediation/Automated Remediation Efficiency Over Time.yaml", - "Hunting Queries/Email and Collaboration Queries/Remediation/Automated Remediation Manual versus Automatic Approval.yaml", - "Hunting Queries/Email and Collaboration Queries/Spam/Spam Detections by Sender Country.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Impersonation and Spoof Detections by Sender Country.yaml", - "Hunting Queries/Email and Collaboration Queries/Spoof and Impersonation/Top Recipients Targeted by Impersonation or BEC.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/Top accounts performing user submissions - FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top Inbound Subjects FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top Intra-Org P2 senders FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top email (P2) sender domains FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions - Top email (P2) senders FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions Trend - FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions by Detection Method - Phish FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions by Detection Method - Spam FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Submissions/User Submissions by Submission State - FP.yaml", - "Hunting Queries/Email and Collaboration Queries/Top Attacks/Largest Malicious Email Campaigns by Cluster.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/Blocked URL Clicks by Workload.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/Top 20 Malicious URLs by Clicks.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/Top Clicks on Malicious URLs.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/URL Click-Through by Workload.yaml", - "Hunting Queries/Email and Collaboration Queries/URL Click/URL Threat Protection Summary.yaml", - "Hunting Queries/Email and Collaboration Queries/URL/Malware URL Detections Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/URL/Phishing URL Detections Trend.yaml", - "Hunting Queries/Email and Collaboration Queries/URL/QR Code URL Detections Trend.yaml" - ], - "Workbooks": [ - "Workbooks/MicrosoftDefenderForOffice365detectionsandinsights.json", - "Workbooks/MicrosoftDefenderForEndPoint.json", - "Workbooks/MicrosoftDefenderForIdentity.json" - ], + "Analytic Rules": [], + "Hunting Queries": [], + "Workbooks": [], "BasePath": "C:\\GitHub\\Azure-Sentinel\\Solutions\\Microsoft Defender XDR", - "Version": "3.0.18", "Metadata": "SolutionMetadata.json", "TemplateSpec": true, "StaticDataConnectorIds": [ "MicrosoftThreatProtection" - ] + ], + "XDR Workbooks": [ + "XDR Workbooks/MicrosoftDefenderForEndPoint.json", + "XDR Workbooks/MicrosoftDefenderForIdentity.json", + "XDR Workbooks/MicrosoftDefenderForOffice365detectionsandinsights.json" + ], + "Playbooks": [], + "XDR Detections": [], + "Version": "3.2.1" } diff --git a/Solutions/Microsoft Defender XDR/Package/3.2.1.zip b/Solutions/Microsoft Defender XDR/Package/3.2.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..0a6451bf26c6489089275d34b3c568200a287935 GIT binary patch literal 243596 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 z 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 I0{-3p7qmSOD*ylh literal 0 HcmV?d00001 diff --git a/Solutions/Microsoft Defender XDR/Package/createUiDefinition.json b/Solutions/Microsoft Defender XDR/Package/createUiDefinition.json index 24edc3ff13b..373809538ea 100644 --- a/Solutions/Microsoft Defender XDR/Package/createUiDefinition.json +++ b/Solutions/Microsoft Defender XDR/Package/createUiDefinition.json @@ -6,7 +6,7 @@ "config": { "isWizard": false, "basics": { - "description": "\n\n**Note:** Please refer to the following before installing the solution: \n\n• Review the solution [Release Notes](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Microsoft%20Defender%20XDR/ReleaseNotes.md)\n\n • There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing.\n\nThe [Microsoft Defender XDR](https://www.microsoft.com/security/business/threat-protection/microsoft-365-defender) solution for Microsoft Sentinel enables you to ingest Security Alerts/Incidents and raw logs from the products within Microsoft Defender XDR suite into Microsoft Sentinel.\n\nAdditional Hunting Queries to support proactive and reactive hunting for the Microsoft Defender XDR solution can be found on [GitHub](https://github.com/Azure/Azure-Sentinel/tree/master/Hunting%20Queries/Microsoft%20365%20Defender). This repository has a collection of queries developed by Microsoft Security Research and Microsoft Sentinel community contributions.\n\n**Underlying Microsoft Technologies used:**\n\nThis solution takes a dependency on the following technologies, and some of these dependencies either may be in [Preview](https://azure.microsoft.com/support/legal/preview-supplemental-terms/) state or might result in additional ingestion or operational costs:\n\na. [Azure Monitor HTTP Data Collector API](https://docs.microsoft.com/azure/azure-monitor/logs/data-collector-api)\n\n**Data Connectors:** 1, **Workbooks:** 3, **Analytic Rules:** 40, **Hunting Queries:** 387\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)", + "description": "\n\n**Note:** Please refer to the following before installing the solution: \n\n• Review the solution [Release Notes](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Microsoft%20Defender%20XDR/ReleaseNotes.md)\n\n • There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing.\n\nWorkbook-only authoring candidate for Microsoft Defender XDR: Defender for Endpoint, Defender for Identity, and Office 365 Detections & Insights. Includes the Microsoft Defender XDR connector prerequisite for panels using connected Sentinel SecurityAlert data. Detection rules, hunting queries, playbooks, and Sentinel workbook installation are excluded. Live installation and runtime qualification are not established.\n\n**Data Connectors:** 1, **XDR Workbooks:** 3\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)", "subscription": { "resourceProviders": [ "Microsoft.OperationsManagement/solutions", @@ -52,6126 +52,46 @@ ], "steps": [ { - "name": "dataconnectors", - "label": "Data Connectors", - "bladeTitle": "Data Connectors", - "elements": [ - { - "name": "dataconnectors1-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This Solution installs the data connector for Microsoft Defender XDR. You can get Microsoft Defender XDR custom log data in your Microsoft Sentinel workspace. After installing the solution, configure and enable this data connector by following guidance in Manage solution view." - } - }, - { - "name": "dataconnectors-link1", - "type": "Microsoft.Common.TextBlock", - "options": { - "link": { - "label": "Learn more about connecting data sources", - "uri": "https://docs.microsoft.com/azure/sentinel/connect-data-sources" - } - } - } - ] - }, - { - "name": "workbooks", - "label": "Workbooks", - "subLabel": { - "preValidation": "Configure the workbooks", - "postValidation": "Done" - }, - "bladeTitle": "Workbooks", - "elements": [ - { - "name": "workbooks-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This solution installs workbook(s) to help you gain insights into the telemetry collected in Microsoft Sentinel. After installing the solution, start using the workbook in Manage solution view." - } - }, - { - "name": "workbooks-link", - "type": "Microsoft.Common.TextBlock", - "options": { - "link": { - "label": "Learn more", - "uri": "https://docs.microsoft.com/azure/sentinel/tutorial-monitor-your-data" - } - } - }, - { - "name": "workbook1", - "type": "Microsoft.Common.Section", - "label": "Microsoft Defender for Office 365 Detections and Insights", - "elements": [ - { - "name": "workbook1-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Gain extensive insight into your organization's Microsoft Defender for Office 365 protection across email and Microsoft Teams by analyzing and correlating events. \nYou can track detections and insights over time including: metrics for phish, spam, and malware, URL and URL click detection details, malicious file detections, Microsoft Teams collaboration protection (impersonation, voice phishing, and malicious URLs and files), post-delivery detections, user and admin submissions, system overrides, and actions taken by security administrators." - } - } - ] - }, - { - "name": "workbook2", - "type": "Microsoft.Common.Section", - "label": "Microsoft Defender For EndPoint", - "elements": [ - { - "name": "workbook2-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "A wokbook to provide details about Microsoft Defender for Endpoint Advance Hunting to Overview & Analyse data brought through M365 Defender Connector." - } - } - ] - }, - { - "name": "workbook3", - "type": "Microsoft.Common.Section", - "label": "Microsoft Defender For Identity", - "elements": [ - { - "name": "workbook3-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Use this workbook to analyse the advance hunting data ingested for Defender For Identity." - } - } - ] - } - ] - }, - { - "name": "analytics", - "label": "Analytics", - "subLabel": { - "preValidation": "Configure the analytics", - "postValidation": "Done" - }, - "bladeTitle": "Analytics", + "name": "contentSelection", + "label": "Content selection", "elements": [ { - "name": "analytics-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This solution installs the following analytic rule templates. After installing the solution, create and enable analytic rules in Manage solution view." - } - }, - { - "name": "analytics-link", - "type": "Microsoft.Common.TextBlock", - "options": { - "link": { - "label": "Learn more", - "uri": "https://docs.microsoft.com/azure/sentinel/tutorial-detect-threats-custom?WT.mc_id=Portal-Microsoft_Azure_CreateUIDef" - } - } - }, - { - "name": "analytic1", - "type": "Microsoft.Common.Section", - "label": "Possible Phishing with CSL and Network Sessions", - "elements": [ - { - "name": "analytic1-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for malicious URL clicks in phishing email recognized by MDO in correlation with CommonSecurityLogs(CSL) & NetworkSession events. \nIf your workspace doesnt have one of the many data sources required for ASIM it may give informational error which can be safely ignored." - } - } - ] - }, - { - "name": "analytic2", - "type": "Microsoft.Common.Section", - "label": "SUNSPOT malware hashes", - "elements": [ - { - "name": "analytic2-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query uses Microsoft Defender for Endpoint data to look for IoCs associated with the SUNSPOT malware shared by Crowdstrike.\nMore details: \n - https://www.crowdstrike.com/blog/sunspot-malware-technical-analysis/\n - https://techcommunity.microsoft.com/blog/microsoftsentinelblog/monitoring-the-software-supply-chain-with-azure-sentinel/2176463/" - } - } - ] - }, - { - "name": "analytic3", - "type": "Microsoft.Common.Section", - "label": "Potential Build Process Compromise - MDE", - "elements": [ - { - "name": "analytic3-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "The query looks for source code files being modified immediately after a build process is started. The purpose of this is to look for malicious code injection during the build process. This query uses Microsoft Defender for Endpoint telemetry.\nMore details: https://techcommunity.microsoft.com/t5/azure-sentinel/monitoring-the-software-supply-chain-with-azure-sentinel/ba-p/2176463" - } - } - ] - }, - { - "name": "analytic4", - "type": "Microsoft.Common.Section", - "label": "TEARDROP memory-only dropper", - "elements": [ - { - "name": "analytic4-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies SolarWinds TEARDROP memory-only dropper IOCs in Window's defender Exploit Guard activity\nReferences:\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f" - } - } - ] - }, - { - "name": "analytic5", - "type": "Microsoft.Common.Section", - "label": "SUNBURST network beacons", - "elements": [ - { - "name": "analytic5-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies SolarWinds SUNBURST domain beacon IOCs in DeviceNetworkEvents\nReferences:\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f" - } - } - ] - }, - { - "name": "analytic6", - "type": "Microsoft.Common.Section", - "label": "SUNBURST and SUPERNOVA backdoor hashes", - "elements": [ - { - "name": "analytic6-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies SolarWinds SUNBURST and SUPERNOVA backdoor file hash IOCs in DeviceFileEvents\nReferences:\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f" - } - } - ] - }, - { - "name": "analytic7", - "type": "Microsoft.Common.Section", - "label": "AV detections related to Ukraine threats", - "elements": [ - { - "name": "analytic7-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for Microsoft Defender AV detections for malware observed in relation to the war in Ukraine.\n Ref: https://msrc-blog.microsoft.com/2022/02/28/analysis-resources-cyber-threat-activity-ukraine/ " - } - } - ] - }, - { - "name": "analytic8", - "type": "Microsoft.Common.Section", - "label": "AV detections related to Tarrask malware", - "elements": [ - { - "name": "analytic8-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for Microsoft Defender AV detections related to Tarrask malware. In Microsoft Sentinel, the SecurityAlerts table includes only the Device Name of the affected device, this query joins the DeviceInfo table to clearly connect other information such as Device group, ip, logged-on users etc. \n This would allow the Microsoft Sentinel analyst to have more context related to the alert, if available.\n Reference: https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/" - } - } - ] - }, - { - "name": "analytic9", - "type": "Microsoft.Common.Section", - "label": "AV detections related to SpringShell Vulnerability", - "elements": [ - { - "name": "analytic9-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for Microsoft Defender AV detections related to the SpringShell vulnerability. In Microsoft Sentinel, the SecurityAlerts table includes only the Device Name of the affected device.\n This query joins the DeviceInfo table to clearly connect other information such as device group, IP, logged-on users, etc. This would allow the Microsoft Sentinel analyst to have more context related to the alert, if available.\n Reference: https://www.microsoft.com/security/blog/2022/04/04/springshell-rce-vulnerability-guidance-for-protecting-against-and-detecting-cve-2022-22965/" - } - } - ] - }, - { - "name": "analytic10", - "type": "Microsoft.Common.Section", - "label": "Execution of software vulnerable to webp buffer overflow of CVE-2023-4863", - "elements": [ - { - "name": "analytic10-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks at device, process, and network events from Defender for Endpoint that may be vulnerable to buffer overflow defined in CVE-2023-4863. Results are not an indicator of malicious activity." - } - } - ] - }, - { - "name": "analytic11", - "type": "Microsoft.Common.Section", - "label": "Deimos Component Execution", - "elements": [ - { - "name": "analytic11-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Jupyter, otherwise known as SolarMarker, is a malware family and cluster of components known for its info-stealing and backdoor capabilities that mainly proliferates through search engine optimization manipulation and malicious advertising in order to successfully encourage users to download malicious templates and documents. This malware has been popular since 2020 and currently is still active as of 2021." - } - } - ] - }, - { - "name": "analytic12", - "type": "Microsoft.Common.Section", - "label": "Imminent Ransomware", - "elements": [ - { - "name": "analytic12-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for a series of commands that are commonly used by attackers to disable security tools and system recovery tools before deploying Macaw ransomware in an organization." - } - } - ] - }, - { - "name": "analytic13", - "type": "Microsoft.Common.Section", - "label": "Java Executing cmd to run Powershell", - "elements": [ - { - "name": "analytic13-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query was originally published in the threat analytics report, Sysrv botnet evolution.\nSysrv is a Go-based botnet that targets both Windows and Linux servers, and steals resources to mine cryptocurrency.\nThe following query finds instances of the Java process being used to execute cmd.exe, and download and execute a PowerShell script." - } - } - ] - }, - { - "name": "analytic14", - "type": "Microsoft.Common.Section", - "label": "C2-NamedPipe", - "elements": [ - { - "name": "analytic14-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Detects the creation of a named pipe used by known APT malware.\nReference - https://docs.microsoft.com/openspecs/windows_protocols/ms-wpo/4de75e21-36fd-440a-859b-75accc74487c" - } - } - ] - }, - { - "name": "analytic15", - "type": "Microsoft.Common.Section", - "label": "DopplePaymer Procdump", - "elements": [ - { - "name": "analytic15-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query was originally published in the threat analytics report, Doppelpaymer: More human-operated ransomware. There is also a related blog.\nDoppelPaymer is ransomware that is spread manually by human operators. These operators have exhibited extensive knowledge of system administration and common network security misconfigurations. For example, they use SysInternal utilities such as ProcDump to dump credentials from LSASS. They often use these stolen credentials to turn off security software, run malicious commands, and spread malware throughout an organization.\nThe following query detects ProcDump being used to dump credentials from LSASS.\nThe See also section below lists links to other queries associated with DoppelPaymer.\nReferences:\nhttps://msrc-blog.microsoft.com/2019/11/20/customer-guidance-for-the-dopplepaymer-ransomware/\nhttps://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/DoppelPaymer.KM!MTB\nhttps://docs.microsoft.com/sysinternals/downloads/procdump\nhttps://docs.microsoft.com/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection" - } - } - ] - }, - { - "name": "analytic16", - "type": "Microsoft.Common.Section", - "label": "LSASS Credential Dumping with Procdump", - "elements": [ - { - "name": "analytic16-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\nIn early March 2021, Microsoft released patches for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n1. CVE-2021-26855\n2. CVE-2021-26857\n3. CVE-2021-26858\n4. CVE-2021-27065\nThe following query looks for evidence of Procdump being used to dump credentials from LSASS, the Local Security Authentication Server. This might indicate an attacker has compromised user accounts.\nMore queries related to this threat can be found under the See also section of this page.\nReference - https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/" - } - } - ] - }, - { - "name": "analytic17", - "type": "Microsoft.Common.Section", - "label": "Doppelpaymer Stop Services", - "elements": [ - { - "name": "analytic17-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query was originally published in the threat analytics report, Doppelpaymer: More human-operated ransomware. There is also a related blog.\nDoppelPaymer is ransomware that is spread manually by human operators. These operators have exhibited extensive knowledge of system administration and common network security misconfigurations. They often use stolen credentials from over-privileged service accounts to turn off security software, run malicious commands, and spread malware throughout an organization.\nThe following query detects attempts to stop security services.\nThe See also section below lists links to other queries associated with DoppelPaymer.\nReferences:\nhttps://msrc-blog.microsoft.com/2019/11/20/customer-guidance-for-the-dopplepaymer-ransomware/\nhttps://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/DoppelPaymer.KM!MTB" - } - } - ] - }, - { - "name": "analytic18", - "type": "Microsoft.Common.Section", - "label": "Qakbot Campaign Self Deletion", - "elements": [ - { - "name": "analytic18-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query was originally published in the threat analytics report, Qakbot blight lingers, seeds ransomware\nQakbot is malware that steals login credentials from banking and financial services. It has been deployed against small businesses as well as major corporations. Some outbreaks have involved targeted ransomware campaigns that use a similar set of techniques. Links to related queries are listed under See also.\nThe following query detects if an instance of Qakbot has attempted to overwrite its original binary.\nReference - https://www.microsoft.com/security/blog/2017/11/06/mitigating-and-eliminating-info-stealing-qakbot-and-emotet-in-corporate-networks/" - } - } - ] - }, - { - "name": "analytic19", - "type": "Microsoft.Common.Section", - "label": "Regsvr32 Rundll32 Image Loads Abnormal Extension", - "elements": [ - { - "name": "analytic19-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query is looking for regsvr32.exe or rundll32.exe loading DLL images with other extensions than .dll.\nJoins the data to public network events.\nReferences:\nhttps://threathunt.blog/running-live-malware-for-threat-hunting-purposes/" - } - } - ] - }, - { - "name": "analytic20", - "type": "Microsoft.Common.Section", - "label": "Regsvr32 Rundll32 with Anomalous Parent Process", - "elements": [ - { - "name": "analytic20-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This analytical rule looks for rundll32.exe or regsvr32.exe being spawned by abnormal processes: wscript.exe, powershell.exe, cmd.exe, pwsh.exe, cscript.exe.\nBlog: https://threathunt.blog/running-live-malware-for-threat-hunting-purposes/" - } - } - ] - }, - { - "name": "analytic21", - "type": "Microsoft.Common.Section", - "label": "Detect Suspicious Commands Initiated by Webserver Processes", - "elements": [ - { - "name": "analytic21-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query was originally published in the threat analytics report, Operation Soft Cell.\nOperation Soft Cell is a series of campaigns targeting users' call logs at telecommunications providers throughout the world. These attacks date from as early as 2012.\nOperation Soft Cell operators sometimes use legitimate web server processes to launch commands, especially for network discovery and user/owner discovery. The following query detects activity of this kind.\nReference - https://www.cybereason.com/blog/operation-soft-cell-a-worldwide-campaign-against-telecommunications-providers" - } - } - ] - }, - { - "name": "analytic22", - "type": "Microsoft.Common.Section", - "label": "Bitsadmin Activity", - "elements": [ - { - "name": "analytic22-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Background Intelligent Transfer Service (BITS) is a way to reliably download files from webservers or SMB servers. \nThis service is commonly used for legitimate purposes, but can also be used as part of a malware downloader. \nAdditionally, bitsadmin can be used to upload files and therefore can be used for data exfiltration. This\nquery will identify use of bitsadmin.exe for either purpose and will identify directionality file transfer\ndirectionality." - } - } - ] - }, - { - "name": "analytic23", - "type": "Microsoft.Common.Section", - "label": "Office Apps Launching Wscipt", - "elements": [ - { - "name": "analytic23-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query was originally published in the threat analytics report, Trickbot: Pervasive & underestimated.\nTrickbot is a very prevalent piece of malware with an array of malicious capabilities. Originally designed to steal banking credentials, it has since evolved into a modular trojan that can deploy other malware, disable security software, and perform command-and-control (C2) operations.\nTrickbot is frequently spread through email. An attacker will send a target a message with an attachment containing a malicious macro. If the target enables the macro, it will write a JScript Encoded (JSE) file to disk (JScript is a Microsoft dialect of ECMAScript). The JSE file will then be launched using wscript.exe to perform a variety of malicious tasks, particularly reconnaissance.\nThe following query detects when Office applications have launched wscript.exe to run a JSE file.\nSee Detect rundll.exe being used for reconnaissance and command-and-control for another query related to Trickbot activity.\nReference - https://attack.mitre.org/software/S0266/" - } - } - ] - }, - { - "name": "analytic24", - "type": "Microsoft.Common.Section", - "label": "Detect Potential Kerberoast Activities", - "elements": [ - { - "name": "analytic24-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query aim to detect if someone requests service tickets (where count => maxcount)\nThe query requires trimming to set a baseline level for MaxCount \nMitre Technique: Kerberoasting (T1558.003)\n@MattiasBorg82" - } - } - ] - }, - { - "name": "analytic25", - "type": "Microsoft.Common.Section", - "label": "Files Copied to USB Drives", - "elements": [ - { - "name": "analytic25-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists files copied to USB external drives with USB drive information based on FileCreated events associated with most recent USBDriveMount events befor file creations. But be aware that Advanced Hunting is not monitoring all the file types." - } - } - ] - }, - { - "name": "analytic26", - "type": "Microsoft.Common.Section", - "label": "MosaicLoader", - "elements": [ - { - "name": "analytic26-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks Malware Hides Itself Among Windows Defender Exclusions to Evade Detection." - } - } - ] - }, - { - "name": "analytic27", - "type": "Microsoft.Common.Section", - "label": "Unusual Volume of file deletion by users", - "elements": [ - { - "name": "analytic27-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for users performing file deletion activities. Spikes in file deletion observed from risky sign-in sessions are flagged here.\nThis applies to SharePoint and OneDrive users.\nAudit event and Cloud application identifier references.\nReference - https://learn.microsoft.com/microsoft-365/compliance/audit-log-activities?view=o365-worldwide\nReference - https://learn.microsoft.com/azure/sentinel/entities-reference#cloud-application-identifiers" - } - } - ] - }, - { - "name": "analytic28", - "type": "Microsoft.Common.Section", - "label": "Remote File Creation with PsExec", - "elements": [ - { - "name": "analytic28-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query was originally published in the threat analytics report, Ryuk ransomware. There is also a related blog.\nRyuk is human-operated ransomware. Much like DoppelPaymer ransomware, Ryuk is spread manually, often on networks that are already infected with Trickbot.\nRyuk operators use PsExec to manually spread the ransomware to other devices.\nThe following query detects remote file creation events that might indicate an active attack.\nThe See also section below lists links to other queries associated with Ryuk ransomware.\nReferences:\nhttps://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/\nhttps://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Ryuk.AA\nhttps://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/\nhttps://docs.microsoft.com/sysinternals/downloads/psexec" - } - } - ] - }, - { - "name": "analytic29", - "type": "Microsoft.Common.Section", - "label": "Service Accounts Performing Remote PS", - "elements": [ - { - "name": "analytic29-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Service Accounts Performing Remote PowerShell.\nThe purpose behind this detection is for finding service accounts that are performing remote powershell sessions.\nThere are two phases to the detection: Identify service accounts, Find remote PS cmdlets being ran by these accounts.\nTo accomplish this, we utilize DeviceLogonEvents and DeviceEvents to find cmdlets ran that meet the criteria.\nOne of the main advantages of this method is that only requires server telemetry, and not the attacking client.\nThe first phase relies on the DeviceLogonEvents to determine whether an account is a service account or not, consider the following accounts with logons:.\nRandom_user has DeviceLogonEvents with type 2, 3, 7, 10, 11 & 13.\nRandom_service_account 'should' only have DeviceLogonEvents with type 3,4 or 5." - } - } - ] - }, - { - "name": "analytic30", - "type": "Microsoft.Common.Section", - "label": "Account Creation", - "elements": [ - { - "name": "analytic30-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "User accounts may be created to achieve persistence on a machine.\nRead more here: https://attack.mitre.org/wiki/Technique/T1136.\nTags: #CreateAccount.\nQuery #1: Query for users being created using \"net user\" command.\n\"net user\" commands are noisy, so needs to be joined with another signal -.\nE.g. in this example we look for use of uncommon & undocumented commandline switches (e.g. /ad instead of /add)." - } - } - ] - }, - { - "name": "analytic31", - "type": "Microsoft.Common.Section", - "label": "Local Admin Group Changes", - "elements": [ - { - "name": "analytic31-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for changes to the local administrators group.\nBlogpost: https://www.verboon.info/2020/09/hunting-for-local-group-membership-changes." - } - } - ] - }, - { - "name": "analytic32", - "type": "Microsoft.Common.Section", - "label": "Rare Process as a Service", - "elements": [ - { - "name": "analytic32-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query is looking for rarely seen processes which are launched as a service. Whiltelisted process list need to be updated based on the environment.\nAuthor: Jouni Mikkola\nMore info: https://threathunt.blog/rare-process-launch-as-a-service/" - } - } - ] - }, - { - "name": "analytic33", - "type": "Microsoft.Common.Section", - "label": "Disabling Security Services via Registry", - "elements": [ - { - "name": "analytic33-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for processes modifying the registry to disable security features. This is a common technique used by threat actors for defence evasion." - } - } - ] - }, - { - "name": "analytic34", - "type": "Microsoft.Common.Section", - "label": "Deletion of data on multiple drives using cipher exe", - "elements": [ - { - "name": "analytic34-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for attempts to delete data on multiple drives using cipher.exe. This activity is typically done by ransomware to prevent recovery of data after encryption." - } - } - ] - }, - { - "name": "analytic35", - "type": "Microsoft.Common.Section", - "label": "LaZagne Credential Theft", - "elements": [ - { - "name": "analytic35-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "LaZagne is a popular open-source tool used to recover passwords stored on a local computer. It has been used in ransomware attacks to steal credentials and escalate privileges. This query looks for the execution of LaZagne." - } - } - ] - }, - { - "name": "analytic36", - "type": "Microsoft.Common.Section", - "label": "Clearing of forensic evidence from event logs using wevtutil", - "elements": [ - { - "name": "analytic36-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for attempts to clear at least 10 log entries from event logs using wevtutil. Clearing event logs can be a sign of ransomware activity, as ransomware often attempts to cover its tracks by deleting logs." - } - } - ] - }, - { - "name": "analytic37", - "type": "Microsoft.Common.Section", - "label": "Stopping multiple processes using taskkill", - "elements": [ - { - "name": "analytic37-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for attempts to stop at least 10 separate processes using the taskkill.exe utility. This is a common technique used by ransomware to stop security products and other processes." - } - } - ] - }, - { - "name": "analytic38", - "type": "Microsoft.Common.Section", - "label": "Potential Ransomware activity related to Cobalt Strike", - "elements": [ - { - "name": "analytic38-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for alerts related to suspected ransomware and Cobalt Strike activity, a tool used in numerous ransomware campaigns. It looks for alerts that indicate potential ransomware activity, such as attempts to clear security event logs, delete backup files, and execute Cobalt Strike malware." - } - } - ] - }, - { - "name": "analytic39", - "type": "Microsoft.Common.Section", - "label": "Qakbot Discovery Activies", - "elements": [ - { - "name": "analytic39-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for injected processes launching discovery activity. Qakbot has been observed leading to ransomware in numerous instances. It looks for discovery commands such as net.exe, whoami.exe, nslookup.exe, netstat.exe, arp.exe, and ping.exe." - } - } - ] + "name": "DeployDefenderWorkbook", + "type": "Microsoft.Common.CheckBox", + "label": "DeployDefenderWorkbook", + "defaultValue": false, + "toolTip": "Deploy Defender Workbooks and their Content Hub registrations independently of Microsoft Sentinel DeployWorkbook. Candidate provider contract requires approved lab installation, readback and update verification." }, { - "name": "analytic40", - "type": "Microsoft.Common.Section", - "label": "Shadow Copy Deletions", - "elements": [ - { - "name": "analytic40-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This rule detects when Shadow Copies are being deleted. This is a know actions that is performed by threat actors.\nThis query detects know commands that have been used by the ransomware actors.\nSome information from Mitre Attack: \nhttps://attack.mitre.org/techniques/T1490/" - } - } - ] + "name": "DeployDataConnector", + "type": "Microsoft.Common.CheckBox", + "label": "DeployDataConnector", + "defaultValue": true, + "toolTip": "Deploy the data connectors carried by this solution, together with their metadata and catalog entries (ContentKind DataConnector, ResourceDataConnector and DataType)." } ] }, { - "name": "huntingqueries", - "label": "Hunting Queries", - "bladeTitle": "Hunting Queries", + "name": "dataconnectors", + "label": "Data Connectors", + "bladeTitle": "Data Connectors", "elements": [ { - "name": "huntingqueries-text", + "name": "dataconnectors1-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "This solution installs the following hunting queries. After installing the solution, run these hunting queries to hunt for threats in Manage solution view. " + "text": "This Solution installs the data connector for Microsoft Defender XDR. You can get Microsoft Defender XDR custom log data in your Microsoft Sentinel workspace. After installing the solution, configure and enable this data connector by following guidance in Manage solution view." } }, { - "name": "huntingqueries-link", + "name": "dataconnectors-link1", "type": "Microsoft.Common.TextBlock", "options": { "link": { - "label": "Learn more", - "uri": "https://docs.microsoft.com/azure/sentinel/hunting" + "label": "Learn more about connecting data sources", + "uri": "https://docs.microsoft.com/azure/sentinel/connect-data-sources" } } - }, - { - "name": "huntingquery1", - "type": "Microsoft.Common.Section", - "label": "Appspot Phishing Abuse", - "elements": [ - { - "name": "huntingquery1-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps surface phishing campaigns associated with Appspot abuse.These emails frequently contain phishing links that utilize the recipients' own email address as a unique identifier in the URI.\nThis campaign was published on Twitter by @MsftSecIntel at this link: https://twitter.com/MsftSecIntel/status/1374148156301004800\nReference - https://twitter.com/MsftSecIntel/status/1374148156301004800 This hunting query depends on MicrosoftThreatProtection data connector (EmailUrlInfo EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery2", - "type": "Microsoft.Common.Section", - "label": "Dropping Payload via certutil", - "elements": [ - { - "name": "huntingquery2-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "BazaCall campaign tricks users into calling a fake customer support center, and download a malicious Excel file which contains a macro to infect users' device with BazaLoader. This query searches for a copy of certutil.exe used by the macro. This hunting query depends on MicrosoftThreatProtection data connector (DeviceFileEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery3", - "type": "Microsoft.Common.Section", - "label": "Judgement Panda Exfil Activity", - "elements": [ - { - "name": "huntingquery3-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Original Sigma Rule: https://github.com/SigmaHQ/sigma/blob/master/rules-emerging-threats/2019/TA/APT31/proc_creation_win_apt_apt31_judgement_panda.yml.\nQuestions via Twitter: @janvonkirchheim. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery4", - "type": "Microsoft.Common.Section", - "label": "Deimos Component Execution", - "elements": [ - { - "name": "huntingquery4-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Jupyter, otherwise known as SolarMarker, is a malware family and cluster of components known for its info-stealing and backdoor capabilities that mainly proliferates through search engine optimization manipulation and malicious advertising. This hunting query depends on MicrosoftThreatProtection data connector (DeviceEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery5", - "type": "Microsoft.Common.Section", - "label": "LemonDuck Registration Function", - "elements": [ - { - "name": "huntingquery5-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "LemonDuck is a malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021. This hunting query depends on MicrosoftThreatProtection data connector (DeviceEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery6", - "type": "Microsoft.Common.Section", - "label": "Devices with Log4j vulnerability alerts and additional other alert related context", - "elements": [ - { - "name": "huntingquery6-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Microsoft has observed threat actors exploiting vulnerabilities associated with Log4J. This hunting query depends on MicrosoftThreatProtection data connector (AlertInfo AlertEvidence Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery7", - "type": "Microsoft.Common.Section", - "label": "Alerts Related to Log4j Vulnerability", - "elements": [ - { - "name": "huntingquery7-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Microsoft has observed attackers exploiting vulnerabilities associated with Log4J. This hunting query depends on MicrosoftThreatProtection data connector (AlertInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery8", - "type": "Microsoft.Common.Section", - "label": "Imminent Ransomware", - "elements": [ - { - "name": "huntingquery8-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Before deploying Macaw ransomware in an organization, the attacker will run several commands designed to disable security tools and system recovery tools. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery9", - "type": "Microsoft.Common.Section", - "label": "Malicious Use of MSBuild as LOLBin", - "elements": [ - { - "name": "huntingquery9-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Prior to deploying Macaw ransomware in an organization, the adversary frequently uses MSBuild.exe as a LOLBin to communicate with the C2. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery10", - "type": "Microsoft.Common.Section", - "label": "Qakbot Reconnaissance Activities", - "elements": [ - { - "name": "huntingquery10-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for reconnaissance and beaconing activities after code injection occurs in Qakbot infections. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery11", - "type": "Microsoft.Common.Section", - "label": "Robbinhood Driver", - "elements": [ - { - "name": "huntingquery11-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query detects the presence of the Robbinhood ransomware driver. This hunting query depends on MicrosoftThreatProtection data connector (DeviceFileEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery12", - "type": "Microsoft.Common.Section", - "label": "Snip3 Malicious Network Connectivity", - "elements": [ - { - "name": "huntingquery12-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This hunting query looks for potentially hollowed processes that may be used to facilitate command-and-control or exfiltration by Snip3 malware. This hunting query depends on MicrosoftThreatProtection data connector (DeviceNetworkEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery13", - "type": "Microsoft.Common.Section", - "label": "Java Executing cmd to run Powershell", - "elements": [ - { - "name": "huntingquery13-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query finds instances of the Java process being used to execute cmd.exe, and download and execute a PowerShell script. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery14", - "type": "Microsoft.Common.Section", - "label": "Spoofing attempts from Specific Domains", - "elements": [ - { - "name": "huntingquery14-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query identifies potential phishing or spoofing attempts originating from specific domains with authentication failures. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery15", - "type": "Microsoft.Common.Section", - "label": "C2-NamedPipe", - "elements": [ - { - "name": "huntingquery15-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Detects the creation of a named pipe used by known APT malware.\nReference - https://docs.microsoft.com/openspecs/windows_protocols/ms-wpo/4de75e21-36fd-440a-859b-75accc74487c This hunting query depends on MicrosoftThreatProtection data connector (DeviceEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery16", - "type": "Microsoft.Common.Section", - "label": "Recon with Rundll", - "elements": [ - { - "name": "huntingquery16-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query detects suspicious rundll.exe activity associated with Trickbot campaigns. This hunting query depends on MicrosoftThreatProtection data connector (DeviceNetworkEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery17", - "type": "Microsoft.Common.Section", - "label": "DopplePaymer Procdump", - "elements": [ - { - "name": "huntingquery17-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Detects the use of ProcDump to dump credentials from LSASS memory by DoppelPaymer ransomware operators. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery18", - "type": "Microsoft.Common.Section", - "label": "Credential Harvesting Using LaZagne", - "elements": [ - { - "name": "huntingquery18-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Detects the use of LaZagne to steal credentials from the SAM database by Ryuk ransomware operators. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery19", - "type": "Microsoft.Common.Section", - "label": "LSASS Credential Dumping with Procdump", - "elements": [ - { - "name": "huntingquery19-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Detects the use of Procdump to dump credentials from LSASS memory. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery20", - "type": "Microsoft.Common.Section", - "label": "Clear System Logs", - "elements": [ - { - "name": "huntingquery20-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This hunting query searches for attempts to use fsutil.exe to clear system logs and delete forensic artifacts. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery21", - "type": "Microsoft.Common.Section", - "label": "Doppelpaymer Stop Services", - "elements": [ - { - "name": "huntingquery21-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for attempts to stop security services, which is a common tactic used by DoppelPaymer ransomware operators. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery22", - "type": "Microsoft.Common.Section", - "label": "Qakbot Campaign Self Deletion", - "elements": [ - { - "name": "huntingquery22-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query detects if an instance of Qakbot has attempted to overwrite its original binary. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery23", - "type": "Microsoft.Common.Section", - "label": "Regsvr32 Rundll32 Image Loads Abnormal Extension", - "elements": [ - { - "name": "huntingquery23-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query is looking for regsvr32.exe or rundll32.exe loading DLL images with other extensions than .dll. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents DeviceNetworkEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery24", - "type": "Microsoft.Common.Section", - "label": "Regsvr32 Rundll32 with Anomalous Parent Process", - "elements": [ - { - "name": "huntingquery24-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for rundll32.exe or regsvr32.exe being spawned by abnormal processes such as wscript.exe, powershell.exe, cmd.exe, pwsh.exe, cscript.exe. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents DeviceNetworkEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery25", - "type": "Microsoft.Common.Section", - "label": "Determine Successfully Delivered Phishing Emails by top IP Addresses", - "elements": [ - { - "name": "huntingquery25-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query identifies phishing emails sent that were successfully delivered, by top IP addressess. cutoff default value is 5, adjust the value as needed. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery26", - "type": "Microsoft.Common.Section", - "label": "Detect Suspicious Commands Initiated by Webserver Processes", - "elements": [ - { - "name": "huntingquery26-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Detect suspicious commands initiated by web server processes used for network discovery and user/owner discovery. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery27", - "type": "Microsoft.Common.Section", - "label": "Enumeration of Users & Groups for Lateral Movement", - "elements": [ - { - "name": "huntingquery27-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query hunts for attempts to list users or groups using Net commands, which are commonly used for lateral movement. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery28", - "type": "Microsoft.Common.Section", - "label": "ATP policy status check", - "elements": [ - { - "name": "huntingquery28-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query displays the configuration auditing for 'Safe Attachments for SharePoint, OneDrive, and Microsoft Teams' and 'Safe Documents' in Microsoft Defender for Office 365. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery29", - "type": "Microsoft.Common.Section", - "label": "JNLP-File-Attachment", - "elements": [ - { - "name": "huntingquery29-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "JNLP file extensions are an uncommon file type often used to deliver malware. This hunting query depends on MicrosoftThreatProtection data connector (EmailAttachmentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery30", - "type": "Microsoft.Common.Section", - "label": "Safe Attachments detections", - "elements": [ - { - "name": "huntingquery30-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query provides insights on the detections done by Safe Attachment detections This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery31", - "type": "Microsoft.Common.Section", - "label": "Authentication failures by time and authentication type", - "elements": [ - { - "name": "huntingquery31-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing authentication failure count by authentication type. Update the authentication type below as DMARC, DKIM, SPM, CompAuth This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery32", - "type": "Microsoft.Common.Section", - "label": "CompAuth Failure Trend", - "elements": [ - { - "name": "huntingquery32-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spoof - Composite Authentication fails summarizing the data daily. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery33", - "type": "Microsoft.Common.Section", - "label": "DKIM Failure Trend", - "elements": [ - { - "name": "huntingquery33-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spoof - DKIM fails summarizing the data daily. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery34", - "type": "Microsoft.Common.Section", - "label": "DMARC Failure Trend", - "elements": [ - { - "name": "huntingquery34-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spoof - DMARC fails summarizing the data daily. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery35", - "type": "Microsoft.Common.Section", - "label": "SPF Failure Trend", - "elements": [ - { - "name": "huntingquery35-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spoof - SPF fails summarizing the data daily. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery36", - "type": "Microsoft.Common.Section", - "label": "Spoof attempts with auth failure", - "elements": [ - { - "name": "huntingquery36-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps in checking for spoofing attempts on the domain with Authentication failures This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery37", - "type": "Microsoft.Common.Section", - "label": "Top Spoof external domain detections by Sender domain (P1/P2)", - "elements": [ - { - "name": "huntingquery37-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish-Spoof-external domain detections summarizing the data by the top 10 email sender P2 domain (SenderFromDomain) and sender P1 domain (SenderMailFromDomain). This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery38", - "type": "Microsoft.Common.Section", - "label": "Top Spoof DMARC detections by Sender domain (P1/P2)", - "elements": [ - { - "name": "huntingquery38-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spoof-DMARC fails detections summarizing the data by the top email sender P2 domain (SenderFromDomain) and sender P1 domain (SenderMailFromDomain). This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery39", - "type": "Microsoft.Common.Section", - "label": "Top Spoof intra-org detections by Sender domain (P1/P2)", - "elements": [ - { - "name": "huntingquery39-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish-Spoof-internal domain detections summarizing the data by the top 10 email sender P2 domain (SenderFromDomain) and sender P1 domain (SenderMailFromDomain). This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery40", - "type": "Microsoft.Common.Section", - "label": "Message from an Accepted Domain with DMARC TempError", - "elements": [ - { - "name": "huntingquery40-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious email appearing to come from an Accepted Domain but DMARC had a (transient) TempError result. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery41", - "type": "Microsoft.Common.Section", - "label": "Message with URL listed on OpenPhish delivered into Inbox", - "elements": [ - { - "name": "huntingquery41-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious email with a URL from OpenPhish was delivered to Inbox This hunting query depends on MicrosoftThreatProtection data connector (EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery42", - "type": "Microsoft.Common.Section", - "label": "Potential OAuth phishing email delivered into Inbox", - "elements": [ - { - "name": "huntingquery42-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious OAuth app URL has been delivered into an Inbox. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery43", - "type": "Microsoft.Common.Section", - "label": "Potentially malicious svg file delivered to Inbox", - "elements": [ - { - "name": "huntingquery43-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious .SVG file has been delivered into an Inbox. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailAttachmentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery44", - "type": "Microsoft.Common.Section", - "label": "Audit Email Preview-Download action", - "elements": [ - { - "name": "huntingquery44-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps report on who Previewed/Downloaded email messages using the Email entity page in Defender for Office 365 This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery45", - "type": "Microsoft.Common.Section", - "label": "Bad email percentage of Inbound emails", - "elements": [ - { - "name": "huntingquery45-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises bad traffic (% of emails with threats) compared to total inbound emails over time summarising the data daily. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery46", - "type": "Microsoft.Common.Section", - "label": "Calculate overall MDO efficacy", - "elements": [ - { - "name": "huntingquery46-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps calculate overall efficacy of MDO based on threats blocked pre-delivery, post-delivery cleanups, or were uncaught. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery47", - "type": "Microsoft.Common.Section", - "label": "Email sender IP address Geo location information", - "elements": [ - { - "name": "huntingquery47-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps getting GeoIP information of emails SenderIPv4 addresses. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery48", - "type": "Microsoft.Common.Section", - "label": "Hunt for Admin email access", - "elements": [ - { - "name": "huntingquery48-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps report on email access by administrators This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery49", - "type": "Microsoft.Common.Section", - "label": "Hunt for TABL changes", - "elements": [ - { - "name": "huntingquery49-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for Tenant allow/block list (TABL) changes in Defender for Office 365 This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery50", - "type": "Microsoft.Common.Section", - "label": "Local time to UTC time conversion", - "elements": [ - { - "name": "huntingquery50-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Advanced Hunting has default timezone as UTC time. Filters in Advanced Hunting also work in UTC by default whereas query results are shown in local time if user has selected local time zone in security center settings. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery51", - "type": "Microsoft.Common.Section", - "label": "Mail item accessed", - "elements": [ - { - "name": "huntingquery51-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing emails accessed by end users using cloud app events data This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery52", - "type": "Microsoft.Common.Section", - "label": "Malicious email senders", - "elements": [ - { - "name": "huntingquery52-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for emails from a sender with at least one email in quarantine This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery53", - "type": "Microsoft.Common.Section", - "label": "MDO daily detection summary report", - "elements": [ - { - "name": "huntingquery53-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps report daily on total number of emails, total number of emails detected aby Defender for Office 365 This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents AlertEvidence EmailEvents EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery54", - "type": "Microsoft.Common.Section", - "label": "New TABL Items", - "elements": [ - { - "name": "huntingquery54-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps identifying when new items being added to the Tenant/Allow Block List (TABL) in Defender for Office 365. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery55", - "type": "Microsoft.Common.Section", - "label": "Top 10 Domains sending Malicious Emails (Malware+Phish+Spam)", - "elements": [ - { - "name": "huntingquery55-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies the top 10 sender domains delivering inbound emails classified as malware, phishing, or spam.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery56", - "type": "Microsoft.Common.Section", - "label": "Top 10 External Senders (Malware)", - "elements": [ - { - "name": "huntingquery56-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies the top 10 external sender addresses delivering inbound emails classified as malware.\nIf you want to exclude your own organization's domains (including subdomains), add a filter after the malware filter, e.g.:\n | where SenderFromAddress !contains \".yourdomain.com\"\n(Replace \"yourdomain.com\" with your actual domain.)\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery57", - "type": "Microsoft.Common.Section", - "label": "Top 10 External Senders (Phish)", - "elements": [ - { - "name": "huntingquery57-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies the top 10 external sender addresses delivering inbound emails classified as phishing.\nIf you want to exclude your own organization's domains (including subdomains), add a filter after the phishing filter, e.g.:\n | where SenderFromAddress !contains \".yourdomain.com\"\n(Replace \"yourdomain.com\" with your actual domain.)\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery58", - "type": "Microsoft.Common.Section", - "label": "Top 10 External Senders (Spam)", - "elements": [ - { - "name": "huntingquery58-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies the top 10 external sender addresses delivering inbound emails classified as spam.\nIf you want to exclude your own organization's domains (including subdomains), add a filter after the spam filter, e.g.:\n | where SenderFromAddress !contains \".yourdomain.com\"\n(Replace \"yourdomain.com\" with your actual domain.)\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery59", - "type": "Microsoft.Common.Section", - "label": "Top 10 External Senders (Spam)", - "elements": [ - { - "name": "huntingquery59-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies the top 10 external sender addresses delivering inbound emails classified as spam.\nTo exclude your own organization's domains (including subdomains), add a filter after the spam filter, e.g.:\n | where SenderFromAddress !contains \".yourdomain.com\"\n(Replace \"yourdomain.com\" with your actual domain.)\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery60", - "type": "Microsoft.Common.Section", - "label": "Top 10 Targeted Users (Malware+Phish+Spam)", - "elements": [ - { - "name": "huntingquery60-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies the top 10 users receiving inbound emails classified as malware, phishing, or spam.\nBased on concepts from the Defender for Office 365 solution in Sentinel: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery61", - "type": "Microsoft.Common.Section", - "label": "Top 10 Users clicking on Malicious URLs (Malware+Phish+Spam)", - "elements": [ - { - "name": "huntingquery61-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Visualises the top 10 users with click attempts on URLs in emails detected as malware, phishing, or spam, helping analysts identify risky user behaviour and potential targets.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery62", - "type": "Microsoft.Common.Section", - "label": "MDO Threat Protection Detections trend over time", - "elements": [ - { - "name": "huntingquery62-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Graph of MDO detections trended over time This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents CloudAppEvents EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery63", - "type": "Microsoft.Common.Section", - "label": "Total number of detections by MDO", - "elements": [ - { - "name": "huntingquery63-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Provides a summary of total number of detections This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents CloudAppEvents EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery64", - "type": "Microsoft.Common.Section", - "label": "Automated email notifications and suspicious sign-in activity", - "elements": [ - { - "name": "huntingquery64-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for Automated email notifications and suspicious sign-in activity This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents AADSignInEventsBeta Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery65", - "type": "Microsoft.Common.Section", - "label": "BEC - File sharing tactics - Dropbox", - "elements": [ - { - "name": "huntingquery65-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for BEC - File sharing tactics - Dropbox This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery66", - "type": "Microsoft.Common.Section", - "label": "BEC - File sharing tactics - OneDrive or SharePoint", - "elements": [ - { - "name": "huntingquery66-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for BEC - File sharing tactics - OneDrive or SharePoint This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery67", - "type": "Microsoft.Common.Section", - "label": "Email bombing attacks", - "elements": [ - { - "name": "huntingquery67-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing recipients who are potentially victim of email bombing attacks This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery68", - "type": "Microsoft.Common.Section", - "label": "Emails containing links to IP addresses", - "elements": [ - { - "name": "huntingquery68-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for Emails containing links to IP addresses This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery69", - "type": "Microsoft.Common.Section", - "label": "Files share contents and suspicious sign-in activity", - "elements": [ - { - "name": "huntingquery69-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for Files share contents and suspicious sign-in activity This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents AADSignInEventsBeta Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery70", - "type": "Microsoft.Common.Section", - "label": "Good emails from senders with bad patterns", - "elements": [ - { - "name": "huntingquery70-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for good emails from senders with bad patterns This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery71", - "type": "Microsoft.Common.Section", - "label": "Hunt for email bombing attacks", - "elements": [ - { - "name": "huntingquery71-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps to hunt for possible email bombing attacks in Microsoft Defender for Office 365. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery72", - "type": "Microsoft.Common.Section", - "label": "Hunt for email conversation take over attempts", - "elements": [ - { - "name": "huntingquery72-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for email conversation take over attempts This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery73", - "type": "Microsoft.Common.Section", - "label": "Hunt for malicious attachments using external IOC source", - "elements": [ - { - "name": "huntingquery73-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for emails with malicious attachments based on SH256 hash from external IOC source This hunting query depends on MicrosoftThreatProtection data connector (EmailAttachmentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery74", - "type": "Microsoft.Common.Section", - "label": "Hunt for malicious URLs using external IOC source", - "elements": [ - { - "name": "huntingquery74-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for emails with malicious URLs based on external IOC source This hunting query depends on MicrosoftThreatProtection data connector (EmailUrlInfo EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery75", - "type": "Microsoft.Common.Section", - "label": "Inbox rule changes which forward-redirect email", - "elements": [ - { - "name": "huntingquery75-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for Inbox rule changes which forward-redirect email This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery76", - "type": "Microsoft.Common.Section", - "label": "MDO_CountOfRecipientsEmailaddressbySubject", - "elements": [ - { - "name": "huntingquery76-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Count of recipient's email addresses by subject This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery77", - "type": "Microsoft.Common.Section", - "label": "MDO_Countofrecipientsemailaddressesbysubject", - "elements": [ - { - "name": "huntingquery77-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Count of recipient's email addresses by subject This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery78", - "type": "Microsoft.Common.Section", - "label": "MDO_CountOfSendersEmailaddressbySubject", - "elements": [ - { - "name": "huntingquery78-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Count of sender's email addresses by subject This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery79", - "type": "Microsoft.Common.Section", - "label": "MDO_SummaryOfSenders", - "elements": [ - { - "name": "huntingquery79-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Count of all Senders and where they were delivered This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery80", - "type": "Microsoft.Common.Section", - "label": "MDO_URLClickedinEmail", - "elements": [ - { - "name": "huntingquery80-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "URLs clicked in Email This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery81", - "type": "Microsoft.Common.Section", - "label": "Top outbound recipient domains sending inbound emails with threats", - "elements": [ - { - "name": "huntingquery81-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for top outbound recipient domains which are sending inbound emails with threats This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery82", - "type": "Microsoft.Common.Section", - "label": "Detections by detection methods", - "elements": [ - { - "name": "huntingquery82-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing malicious email detections by detection methods This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery83", - "type": "Microsoft.Common.Section", - "label": "Mail reply to new domain", - "elements": [ - { - "name": "huntingquery83-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing mail that is likely a reply but there is no history of the people chatting and the domain is new This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery84", - "type": "Microsoft.Common.Section", - "label": "Mailflow by directionality", - "elements": [ - { - "name": "huntingquery84-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing inbound / outbound / intra-org emails by domain per day This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery85", - "type": "Microsoft.Common.Section", - "label": "Malicious emails detected per day", - "elements": [ - { - "name": "huntingquery85-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing Malware, Phishing, Spam emails caught per day This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery86", - "type": "Microsoft.Common.Section", - "label": "Sender recipient contact establishment", - "elements": [ - { - "name": "huntingquery86-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps in checking the sender-recipient contact establishment status This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery87", - "type": "Microsoft.Common.Section", - "label": "Spam Detections (High) by delivery location", - "elements": [ - { - "name": "huntingquery87-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails with Spam detections (High confidence) summarizing the data by Delivery Location. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery88", - "type": "Microsoft.Common.Section", - "label": "Spam Detections (Normal) by delivery location", - "elements": [ - { - "name": "huntingquery88-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails with Spam detections (Normal confidence) summarizing the data by Delivery Location. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery89", - "type": "Microsoft.Common.Section", - "label": "Top 100 malicious email senders", - "elements": [ - { - "name": "huntingquery89-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing top 100 malicious senders This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery90", - "type": "Microsoft.Common.Section", - "label": "Top 100 senders", - "elements": [ - { - "name": "huntingquery90-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing top 100 senders in your organization in last 30 days This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery91", - "type": "Microsoft.Common.Section", - "label": "Zero day threats", - "elements": [ - { - "name": "huntingquery91-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing zero day threats via URL and file detonations This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery92", - "type": "Microsoft.Common.Section", - "label": "Email containing malware accessed on a unmanaged device", - "elements": [ - { - "name": "huntingquery92-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this query, we are looking for emails containing malware accessed on a unmanaged device This hunting query depends on MicrosoftThreatProtection data connector (EmailPostDeliveryEvents CloudAppEvents AADSignInEventsBeta Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery93", - "type": "Microsoft.Common.Section", - "label": "Email containing malware sent by an internal sender", - "elements": [ - { - "name": "huntingquery93-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this query, we are looking for emails containing malware attachment sent by an internal sender This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery94", - "type": "Microsoft.Common.Section", - "label": "Email malware detection report", - "elements": [ - { - "name": "huntingquery94-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing email malware detection cases This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailAttachmentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery95", - "type": "Microsoft.Common.Section", - "label": "File Malware Detection Trend", - "elements": [ - { - "name": "huntingquery95-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total files located on SharePoint, OneDrive and Teams with Malware detections over time summarizing the data daily. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery96", - "type": "Microsoft.Common.Section", - "label": "File Malware by Top Malware Families (Anti Virus)", - "elements": [ - { - "name": "huntingquery96-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total Malware detections of files located on SharePoint, OneDrive and Teams over time summarizing the data by the various Malware families detected focusing on built-in SharePoint AV detections This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery97", - "type": "Microsoft.Common.Section", - "label": "File Malware by Top Malware Families (Safe Attachments)", - "elements": [ - { - "name": "huntingquery97-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total Malware detections of files located on SharePoint, OneDrive and Teams over time summarizing the data by the various Malware families detected focusing on Defender for Office 365 detections (detonations) This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery98", - "type": "Microsoft.Common.Section", - "label": "Malware Detections Trend", - "elements": [ - { - "name": "huntingquery98-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Malware detections over time summarizing the data daily. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery99", - "type": "Microsoft.Common.Section", - "label": "Malware Detections by delivery location", - "elements": [ - { - "name": "huntingquery99-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Malware detections over time summarizing the data daily by Delivery Location. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery100", - "type": "Microsoft.Common.Section", - "label": "Malware Detections by Detection technology Trend", - "elements": [ - { - "name": "huntingquery100-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Malware detections over time summarizing the data daily by various Malware detection technologies/controls. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery101", - "type": "Microsoft.Common.Section", - "label": "Malware Detections by Detection technology", - "elements": [ - { - "name": "huntingquery101-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Malware detections summarizing the data by various Malware detection technologies/controls. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery102", - "type": "Microsoft.Common.Section", - "label": "Malware detections by Workload Locations", - "elements": [ - { - "name": "huntingquery102-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the amount of total Malware detections of files located on SharePoint, OneDrive and Teams, summarizing by the locations they are stored This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery103", - "type": "Microsoft.Common.Section", - "label": "Malware detections by Workload Type", - "elements": [ - { - "name": "huntingquery103-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the amount of total Malware detections of files located on SharePoint, OneDrive and Teams, summarizing by the workload in which they are stored This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery104", - "type": "Microsoft.Common.Section", - "label": "Email Top Domains sending Malware", - "elements": [ - { - "name": "huntingquery104-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total inbound emails with Malware detections summarizing the data by the top email sender P2 domain (SenderFromDomain) This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery105", - "type": "Microsoft.Common.Section", - "label": "Top Malware Families", - "elements": [ - { - "name": "huntingquery105-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Malware detections summarizing the data by ThreatNames of the malware detected. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery106", - "type": "Microsoft.Common.Section", - "label": "Top Users receiving Malware", - "elements": [ - { - "name": "huntingquery106-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total inbound emails with Malware detections summarizing the data by the top recipient email address (RecipientEmailAddress) This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery107", - "type": "Microsoft.Common.Section", - "label": "Zero-day Malware Detections Trend", - "elements": [ - { - "name": "huntingquery107-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Malware detections over time summarizing the data daily by Malware detection technologies/controls used for detecting unknown-unique malware. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery108", - "type": "Microsoft.Common.Section", - "label": "Teams communication from suspicious external users", - "elements": [ - { - "name": "huntingquery108-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for communication from suspicious external users. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery109", - "type": "Microsoft.Common.Section", - "label": "Teams communication to suspicious external users", - "elements": [ - { - "name": "huntingquery109-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for communication with suspicious external users. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery110", - "type": "Microsoft.Common.Section", - "label": "Expanding recipients into separate rows", - "elements": [ - { - "name": "huntingquery110-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for recipients of Teams messages. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery111", - "type": "Microsoft.Common.Section", - "label": "External malicious Teams messages sent from internal senders", - "elements": [ - { - "name": "huntingquery111-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for external malicious Teams messages sent from internal senders This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery112", - "type": "Microsoft.Common.Section", - "label": "Hunt for malicious messages using External Threat Intelligence", - "elements": [ - { - "name": "huntingquery112-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for Teams messages with malicious URLs based on external Threat Intelligence source This hunting query depends on MicrosoftThreatProtection data connector (MessageUrlInfo MessageEvents UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery113", - "type": "Microsoft.Common.Section", - "label": "Inbound Teams messages by sender domains", - "elements": [ - { - "name": "huntingquery113-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing volume of inbound external Teams message by sender domains This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery114", - "type": "Microsoft.Common.Section", - "label": "Malicious Teams messages by URL detection methods", - "elements": [ - { - "name": "huntingquery114-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing malicious Teams message detections by URL detection methods This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery115", - "type": "Microsoft.Common.Section", - "label": "Malicious Teams messages received from external senders", - "elements": [ - { - "name": "huntingquery115-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for malicious Teams messages received from external senders. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery116", - "type": "Microsoft.Common.Section", - "label": "Microsoft Teams chat initiated by a suspicious external user", - "elements": [ - { - "name": "huntingquery116-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Use AlertInfo and AlertEvidence to collect general information and clickable links to more IOCs about suspicious external Teams messages. This hunting query depends on MicrosoftThreatProtection data connector (AlertInfo AlertEvidence Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery117", - "type": "Microsoft.Common.Section", - "label": "Number of unique accounts performing Teams message Admin submissions", - "elements": [ - { - "name": "huntingquery117-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises number of unqiue accounts performing Teams message admin submissions as false negatives or false positives This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery118", - "type": "Microsoft.Common.Section", - "label": "Number of unique accounts performing Teams message User submissions", - "elements": [ - { - "name": "huntingquery118-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises number of unqiue accounts performing Teams message user submissions as false negatives or false positives This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery119", - "type": "Microsoft.Common.Section", - "label": "Possible partner impersonation in external Team messages", - "elements": [ - { - "name": "huntingquery119-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query can be used as a Custom Detection Rule (CDR) to trigger when a partner email domain or email address is used in a Sender display name part of an inbound external Teams message This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery120", - "type": "Microsoft.Common.Section", - "label": "Possible Teams phishing activity", - "elements": [ - { - "name": "huntingquery120-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for possible Teams phishing activity. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery121", - "type": "Microsoft.Common.Section", - "label": "Potentially malicious URL click in Teams", - "elements": [ - { - "name": "huntingquery121-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query provides insights on a potentially malicious URL click in Teams This hunting query depends on MicrosoftThreatProtection data connector (MessagePostDeliveryEvents MessageUrlInfo UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery122", - "type": "Microsoft.Common.Section", - "label": "Rare Domains in External Teams Messages", - "elements": [ - { - "name": "huntingquery122-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Detects rare domains (seen in fewer than 3 Teams messages) appearing in external Microsoft Teams threads within the last 24 hours. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents MessageUrlInfo UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery123", - "type": "Microsoft.Common.Section", - "label": "Suspicious Teams Display Name", - "elements": [ - { - "name": "huntingquery123-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for Teams messages from an external user with a suspicious display name. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery124", - "type": "Microsoft.Common.Section", - "label": "Teams Admin submission of Malware and Phish daily trend", - "elements": [ - { - "name": "huntingquery124-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily amount of admin false negative Teams message submissions by submission type of Phish or Malware This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery125", - "type": "Microsoft.Common.Section", - "label": "Teams Admin submission of No Threats daily trend", - "elements": [ - { - "name": "huntingquery125-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily amount of admin false positive Teams message submissions This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery126", - "type": "Microsoft.Common.Section", - "label": "Teams Admin-User Submissions Grading Verdicts", - "elements": [ - { - "name": "huntingquery126-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualizes Teams messages submitted by users or admins then graded in the submission process. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery127", - "type": "Microsoft.Common.Section", - "label": "Teams blocked URL clicks daily trend", - "elements": [ - { - "name": "huntingquery127-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualizes the daily amount of blocked Url clicks performed by users on Urls in Teams messages. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery128", - "type": "Microsoft.Common.Section", - "label": "Teams Malware ZAP", - "elements": [ - { - "name": "huntingquery128-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for Teams messages with Malware threats that have been ZAPed. This hunting query depends on MicrosoftThreatProtection data connector (MessagePostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery129", - "type": "Microsoft.Common.Section", - "label": "Teams Message with URL listed on OpenPhish", - "elements": [ - { - "name": "huntingquery129-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious Teams message with a URL from OpenPhish was delivered. This hunting query depends on MicrosoftThreatProtection data connector (MessageUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery130", - "type": "Microsoft.Common.Section", - "label": "Teams message ZAPed with the same URL in Email", - "elements": [ - { - "name": "huntingquery130-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for Teams messages that have been ZAPed with the same URL in Email. This hunting query depends on MicrosoftThreatProtection data connector (MessagePostDeliveryEvents MessageUrlInfo EmailUrlInfo EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery131", - "type": "Microsoft.Common.Section", - "label": "Teams messages from a specific sender by ThreadType", - "elements": [ - { - "name": "huntingquery131-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for Teams messages from a specific sender by ThreadType. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery132", - "type": "Microsoft.Common.Section", - "label": "Teams messages with suspicious URL domains", - "elements": [ - { - "name": "huntingquery132-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for Teams messages with suspicious URL domains. This hunting query depends on MicrosoftThreatProtection data connector (MessageUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery133", - "type": "Microsoft.Common.Section", - "label": "Teams Phish ZAP", - "elements": [ - { - "name": "huntingquery133-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for Teams messages with Phish threats that have been ZAPed. This hunting query depends on MicrosoftThreatProtection data connector (MessagePostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery134", - "type": "Microsoft.Common.Section", - "label": "Teams post delivery events daily trend", - "elements": [ - { - "name": "huntingquery134-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualizes the daily amount of post delivery events on Teams messages. This hunting query depends on MicrosoftThreatProtection data connector (MessagePostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery135", - "type": "Microsoft.Common.Section", - "label": "Teams Spam ZAP", - "elements": [ - { - "name": "huntingquery135-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for Teams messages with Spam threats that have been ZAPed. This hunting query depends on MicrosoftThreatProtection data connector (MessagePostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery136", - "type": "Microsoft.Common.Section", - "label": "Teams URL clicks actions summarized by URLs clicked on", - "elements": [ - { - "name": "huntingquery136-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualizes user clicks in Teams summarizing the data by the various URLs and Click actions on them. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery137", - "type": "Microsoft.Common.Section", - "label": "Teams URL clicks through actions on Phish or Malware URLs summarized by URLs", - "elements": [ - { - "name": "huntingquery137-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualizes clicks through actions on Phish or Malware URLs in Teams, summarizing the data by Urls. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery138", - "type": "Microsoft.Common.Section", - "label": "Teams User submissions daily trend", - "elements": [ - { - "name": "huntingquery138-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily amount of user false negative and false postive Teams message submissions This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery139", - "type": "Microsoft.Common.Section", - "label": "Teams users clicking on suspicious URL domains", - "elements": [ - { - "name": "huntingquery139-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for Teams users clicking on suspicious URL domains. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents MessageEvents MessageUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery140", - "type": "Microsoft.Common.Section", - "label": "Top 10 Attacked user by Phish messages", - "elements": [ - { - "name": "huntingquery140-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Top 10 attacked users by Phish messages from external senders using Teams This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery141", - "type": "Microsoft.Common.Section", - "label": "Top 10 external senders sending Teams messages", - "elements": [ - { - "name": "huntingquery141-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visulises all up Top 10 external senders sending Teams messages This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery142", - "type": "Microsoft.Common.Section", - "label": "Top 10 External senders sending Teams phishing messsages", - "elements": [ - { - "name": "huntingquery142-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looking for top 10 External senders sending Team phishing messsages. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery143", - "type": "Microsoft.Common.Section", - "label": "Top 10 sender domains - Admin Teams message submissions FN", - "elements": [ - { - "name": "huntingquery143-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises Teams messages submitted by admins as false negatives, summarizing the data by top 10 sender domains of those messages This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery144", - "type": "Microsoft.Common.Section", - "label": "Top 10 sender domains - Teams user submissions FN or FP", - "elements": [ - { - "name": "huntingquery144-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises Teams messages submitted by users as false negatives or false positives, summarizing the data by top 10 sender domains of those messages This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery145", - "type": "Microsoft.Common.Section", - "label": "Top 10 senders - Teams users submissions FN or FP", - "elements": [ - { - "name": "huntingquery145-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises Teams messages submitted by user as false negatives or false positives, summarizing the data by top 10 indidvidual senders of those messages This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery146", - "type": "Microsoft.Common.Section", - "label": "Top 10 senders of Admin Teams message submissions FN", - "elements": [ - { - "name": "huntingquery146-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises Teams messages submitted by admins as false negatives, summarizing the data by top 10 indidvidual senders of those messages This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery147", - "type": "Microsoft.Common.Section", - "label": "Top 10 senders of Admin Teams message submissions FP", - "elements": [ - { - "name": "huntingquery147-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises Teams messages submitted by admins as false positives, summarizing the data by top 10 indidvidual senders of those messages This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery148", - "type": "Microsoft.Common.Section", - "label": "Top 10 Users clicking on malicious URLs in Teams", - "elements": [ - { - "name": "huntingquery148-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualizes Top 10 Users clicking on malicious Phish or Malware URLs in Teams. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery149", - "type": "Microsoft.Common.Section", - "label": "Top accounts performing Teams admin submissions FN or FP", - "elements": [ - { - "name": "huntingquery149-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the top admins performing false negative or false positive admin submissions of Teams messages This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery150", - "type": "Microsoft.Common.Section", - "label": "Top accounts performing Teams user submissions FN or FP", - "elements": [ - { - "name": "huntingquery150-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the top users performing false negative or false positive user submissions of Teams messages This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery151", - "type": "Microsoft.Common.Section", - "label": "Top domains outbound sending Malicious Teams messages inbound", - "elements": [ - { - "name": "huntingquery151-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looking for potential partner compromise via comparing outbound Teams message traffic per target domain and looking for malicious Teams messages from the same domains as inbound. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery152", - "type": "Microsoft.Common.Section", - "label": "Top External malicious Senders", - "elements": [ - { - "name": "huntingquery152-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Top external senders sending malicious inbound Teams messages Spam, Phish, Malware This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery153", - "type": "Microsoft.Common.Section", - "label": "Top External Sender domains - Malware", - "elements": [ - { - "name": "huntingquery153-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Top External Sender domains sending Teams message with Malware threats This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery154", - "type": "Microsoft.Common.Section", - "label": "Top External Sender domains - Phish", - "elements": [ - { - "name": "huntingquery154-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Top External Sender domains sending Teams message with Phish threats This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery155", - "type": "Microsoft.Common.Section", - "label": "Top External Sender domains - Spam", - "elements": [ - { - "name": "huntingquery155-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Top External Sender domains sending Teams message with Spam threats This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery156", - "type": "Microsoft.Common.Section", - "label": "Top malicious URLs clicked by users in Teams", - "elements": [ - { - "name": "huntingquery156-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunt for top malicious URLs clicked by users in Teams This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery157", - "type": "Microsoft.Common.Section", - "label": "Total number of MDO Teams protection detections daily", - "elements": [ - { - "name": "huntingquery157-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visulises Total number of MDO Teams protection detections daily This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery158", - "type": "Microsoft.Common.Section", - "label": "URL click on URLs in ZAP-d Teams messages", - "elements": [ - { - "name": "huntingquery158-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualizes URL clicks on URLs in Teams messages which were acted by ZAP. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents MessagePostDeliveryEvents MessageUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery159", - "type": "Microsoft.Common.Section", - "label": "Spam and Phish allowed to inbox by Admin Overrides", - "elements": [ - { - "name": "huntingquery159-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps in reviewing malicious emails allowed due to admin overrides This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery160", - "type": "Microsoft.Common.Section", - "label": "Spam and Phish allowed to inbox by User Overrides", - "elements": [ - { - "name": "huntingquery160-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps in reviewing malicious emails allowed due to user overrides This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery161", - "type": "Microsoft.Common.Section", - "label": "Top policies performing admin overrides", - "elements": [ - { - "name": "huntingquery161-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps in reviewing top policies for admin overrides (Allow/Block) This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery162", - "type": "Microsoft.Common.Section", - "label": "Top policies performing user overrides", - "elements": [ - { - "name": "huntingquery162-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps in reviewing top policies for user overrides (Allow/Block) This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery163", - "type": "Microsoft.Common.Section", - "label": "Total Emails with Admin Overrides (Allow)", - "elements": [ - { - "name": "huntingquery163-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total amount of emails subject to an admin policy with action of allow, independent of action taken, summarizing the data by type of override This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery164", - "type": "Microsoft.Common.Section", - "label": "Total Emails with Admin Overrides (Block)", - "elements": [ - { - "name": "huntingquery164-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the amount of emails subject to an admin policy with action of block, summarizing the data daily This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery165", - "type": "Microsoft.Common.Section", - "label": "Total Emails with User Overrides (Allow)", - "elements": [ - { - "name": "huntingquery165-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the amount of emails subject to a user type policy with action of allow, summarizing the data by type of override and threats type found This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery166", - "type": "Microsoft.Common.Section", - "label": "Total Emails with User Overrides (Block)", - "elements": [ - { - "name": "huntingquery166-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the amount of emails subject to a user type policy with action of block, summarizing the data daily This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery167", - "type": "Microsoft.Common.Section", - "label": "Phish Detections Trend", - "elements": [ - { - "name": "huntingquery167-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish detections over time summarizing the data daily. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery168", - "type": "Microsoft.Common.Section", - "label": "Phish Detections (High) by delivery location", - "elements": [ - { - "name": "huntingquery168-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails with Phish detections (High confidence) summarizing the data by Delivery Location. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery169", - "type": "Microsoft.Common.Section", - "label": "Phish Detections (Normal) by delivery location", - "elements": [ - { - "name": "huntingquery169-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails with Phish detections (Normal confidence) summarizing the data by Delivery Location. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery170", - "type": "Microsoft.Common.Section", - "label": "Phish Detections by delivery location trend", - "elements": [ - { - "name": "huntingquery170-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish detections over time summarizing the data daily by Delivery Location. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery171", - "type": "Microsoft.Common.Section", - "label": "Phish Detections by Detection technology Trend", - "elements": [ - { - "name": "huntingquery171-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish detections over time summarizing the data daily by various Phish Detection technologies/controls This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery172", - "type": "Microsoft.Common.Section", - "label": "Phish Detections by Detection technology", - "elements": [ - { - "name": "huntingquery172-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish detections summarizing the data by various Phish detection technologies/controls This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery173", - "type": "Microsoft.Common.Section", - "label": "Possible device code phishing attempts", - "elements": [ - { - "name": "huntingquery173-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps hunting for possible device code Phishing attempts This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents AADSignInEventsBeta Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery174", - "type": "Microsoft.Common.Section", - "label": "Email Top Domains sending Phish", - "elements": [ - { - "name": "huntingquery174-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total inbound emails with Phish detections summarizing the data by the top email sender P2 domain (SenderFromDomain). This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery175", - "type": "Microsoft.Common.Section", - "label": "Top Users receiving Phish", - "elements": [ - { - "name": "huntingquery175-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total inbound emails with Phish detections summarizing the data by the top recipient email address (RecipientEmailAddress) This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery176", - "type": "Microsoft.Common.Section", - "label": "Zero-day Phish Detections Trend", - "elements": [ - { - "name": "huntingquery176-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish detections over time summarizing the data daily by Phish detection technologies/controls used for detecting unknown-unique phish This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery177", - "type": "Microsoft.Common.Section", - "label": "Campaign with randomly named attachments", - "elements": [ - { - "name": "huntingquery177-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this detection,we hunt for emails with randomly named attachment names from the same sender to multiple recipients This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery178", - "type": "Microsoft.Common.Section", - "label": "Campaign with suspicious keywords", - "elements": [ - { - "name": "huntingquery178-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this detection, we track emails with suspicious keywords in subjects. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery179", - "type": "Microsoft.Common.Section", - "label": "Custom detection-Emails with QR from non-prevalent senders", - "elements": [ - { - "name": "huntingquery179-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this detection, we check the sender prevalence over the last 14 days and use the same to detect malicious activity via email containing QR code This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery180", - "type": "Microsoft.Common.Section", - "label": "Emails delivered having URLs from QR codes", - "elements": [ - { - "name": "huntingquery180-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this query, we hunt for inbound emails delivered having URLs from QR codes This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery181", - "type": "Microsoft.Common.Section", - "label": "Emails with QR codes and suspicious keywords in subject", - "elements": [ - { - "name": "huntingquery181-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this query, we hunt for inbound emails having URLs from QR codes and suspicious keywords in subject This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery182", - "type": "Microsoft.Common.Section", - "label": "Emails with QR codes from non-prevalent sender", - "elements": [ - { - "name": "huntingquery182-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this query, we hunt for inbound emails having URLs from QR codes and send by non-prevalent senders This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery183", - "type": "Microsoft.Common.Section", - "label": "Hunting for sender patterns", - "elements": [ - { - "name": "huntingquery183-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this detection approach, we correlate email from non-prevalent senders in the organization with impersonation intents This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailAttachmentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery184", - "type": "Microsoft.Common.Section", - "label": "Hunting for user signals-clusters", - "elements": [ - { - "name": "huntingquery184-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this detection,we use Email reported by user as malware or phish MDO alert as a starting point to identify the scope of a campaign. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery185", - "type": "Microsoft.Common.Section", - "label": "Inbound emails with QR code URLs", - "elements": [ - { - "name": "huntingquery185-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this query, we summarize volume of inbound emails with QR code URLs in last 30 days This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery186", - "type": "Microsoft.Common.Section", - "label": "Personalized campaigns based on the first few keywords", - "elements": [ - { - "name": "huntingquery186-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this detection, we track emails with personalized subjects. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery187", - "type": "Microsoft.Common.Section", - "label": "Personalized campaigns based on the last few keywords", - "elements": [ - { - "name": "huntingquery187-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this detection, we track emails with personalized subjects. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery188", - "type": "Microsoft.Common.Section", - "label": "Risky sign-in attempt from a non-managed device", - "elements": [ - { - "name": "huntingquery188-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this detection,we hunt for any sign-in attempt from a non-managed, non-compliant, untrusted device. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery189", - "type": "Microsoft.Common.Section", - "label": "Suspicious sign-in attempts from QR code phishing campaigns", - "elements": [ - { - "name": "huntingquery189-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This detection approach correlates a user accessing an email with image/document attachments and a risky sign-in attempt from non-trusted devices. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents AADSignInEventsBeta Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery190", - "type": "Microsoft.Common.Section", - "label": "Group quarantine release", - "elements": [ - { - "name": "huntingquery190-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps in reviewing group Quarantine released messages by detection type. Useful to see what is leading to the largest number of messages being released. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery191", - "type": "Microsoft.Common.Section", - "label": "High Confidence Phish Released", - "elements": [ - { - "name": "huntingquery191-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query shows information about high confidence phish email that has been released from the Quarantine. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery192", - "type": "Microsoft.Common.Section", - "label": "Quarantine Phish Reason trend", - "elements": [ - { - "name": "huntingquery192-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the amount of phish emails that are quarantined, summarized daily by the detection method This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery193", - "type": "Microsoft.Common.Section", - "label": "Quarantine Phish Reason", - "elements": [ - { - "name": "huntingquery193-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total amount of phish emails that are quarantined, summarized by the detection method This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery194", - "type": "Microsoft.Common.Section", - "label": "Quarantine Release Email Details", - "elements": [ - { - "name": "huntingquery194-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query shows information about email that has been released from the Quarantine in Defender for Office 365. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery195", - "type": "Microsoft.Common.Section", - "label": "Quarantine release trend", - "elements": [ - { - "name": "huntingquery195-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing quarantine release trend in Defender for Office 365 This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery196", - "type": "Microsoft.Common.Section", - "label": "Quarantine releases by Detection Types", - "elements": [ - { - "name": "huntingquery196-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails released from quarantine and summarizing the result by the original filter verdict This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery197", - "type": "Microsoft.Common.Section", - "label": "Quarantine Spam Reason trend", - "elements": [ - { - "name": "huntingquery197-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the amount of spam emails that are quarantined, summarized daily by the detection method This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery198", - "type": "Microsoft.Common.Section", - "label": "Quarantine Spam Reason", - "elements": [ - { - "name": "huntingquery198-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total amount of spam emails that are quarantined, summarized by the detection method This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery199", - "type": "Microsoft.Common.Section", - "label": "AIR investigation actions insight", - "elements": [ - { - "name": "huntingquery199-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query provides insights into AIR investigation actions in Microsoft Defender for Office 365. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery200", - "type": "Microsoft.Common.Section", - "label": "Listing Email Remediation Actions via Explorer", - "elements": [ - { - "name": "huntingquery200-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Listing Email Remediation Actions performed via Explorer in Defender for Office 365 This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery201", - "type": "Microsoft.Common.Section", - "label": "Top 10 domains sending Bulk email", - "elements": [ - { - "name": "huntingquery201-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total inbound emails which has any Bulk complaint level. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery202", - "type": "Microsoft.Common.Section", - "label": "Spam detection by delivery location", - "elements": [ - { - "name": "huntingquery202-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spam detections over time summarizing the data daily by Delivery Location. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery203", - "type": "Microsoft.Common.Section", - "label": "Spam detection by IP and its location", - "elements": [ - { - "name": "huntingquery203-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spam detections summarizing the data by email sender IP address (SenderIPv4, SenderIPv6). This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery204", - "type": "Microsoft.Common.Section", - "label": "Bulk Emails by Sender Bulk Complaint level", - "elements": [ - { - "name": "huntingquery204-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total inbound emails which has any Bulk complaint level. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery205", - "type": "Microsoft.Common.Section", - "label": "Spam detection technologies", - "elements": [ - { - "name": "huntingquery205-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spam detections summarizing the data by various Spam detection technologies/controls. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery206", - "type": "Microsoft.Common.Section", - "label": "Email Top 10 Domains sending Spam", - "elements": [ - { - "name": "huntingquery206-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total inbound emails with Spam detections. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery207", - "type": "Microsoft.Common.Section", - "label": "Email Top 10 Targeted Users (Spam)", - "elements": [ - { - "name": "huntingquery207-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises top 10 users targeted with Spam. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery208", - "type": "Microsoft.Common.Section", - "label": "Email Top 15 Domains sending Spam with Additional Details", - "elements": [ - { - "name": "huntingquery208-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total inbound emails with Spam detections summarizing the data by the top 15 email sender P2 domain (SenderFromDomain). This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery209", - "type": "Microsoft.Common.Section", - "label": "Email Top 15 Targeted Users (Spam) with Additional Details", - "elements": [ - { - "name": "huntingquery209-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises top 15 users targeted with Spam with summarized spam detections. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery210", - "type": "Microsoft.Common.Section", - "label": "Spam detection trend", - "elements": [ - { - "name": "huntingquery210-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spam detections over time summarizing the data daily This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery211", - "type": "Microsoft.Common.Section", - "label": "Spam Detections by Detection technology", - "elements": [ - { - "name": "huntingquery211-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Spam detections over time by various Spam Detection technologies/controls. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery212", - "type": "Microsoft.Common.Section", - "label": "Display Name - Spoof and Impersonation", - "elements": [ - { - "name": "huntingquery212-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing incoming email messages where the Display Name of the sender contains own or other partner company/brand name This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery213", - "type": "Microsoft.Common.Section", - "label": "Impersonation Detections by Detection Technology Trend", - "elements": [ - { - "name": "huntingquery213-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish (BEC) Impersonation detections by Detection Technology over time This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery214", - "type": "Microsoft.Common.Section", - "label": "Impersonation Detections by Detection Technology", - "elements": [ - { - "name": "huntingquery214-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish (BEC) Impersonation detections by Detection Technology This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery215", - "type": "Microsoft.Common.Section", - "label": "Impersonation Detections Trend", - "elements": [ - { - "name": "huntingquery215-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish (BEC) - Impersonation detections over time. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery216", - "type": "Microsoft.Common.Section", - "label": "referral-phish-emails", - "elements": [ - { - "name": "huntingquery216-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Hunting for credential phishing using the \"Referral\" infrastructure using Defender for Office 365 data This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery217", - "type": "Microsoft.Common.Section", - "label": "Spoof and impersonation detections by sender IP", - "elements": [ - { - "name": "huntingquery217-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing count of spoof and impersonation detections done per sender IP This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery218", - "type": "Microsoft.Common.Section", - "label": "Spoof and impersonation phish detections", - "elements": [ - { - "name": "huntingquery218-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing count of phish detections done by spoof detection methods This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery219", - "type": "Microsoft.Common.Section", - "label": "Spoof Detections by Detection Technology Trend", - "elements": [ - { - "name": "huntingquery219-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish (BEC) Spoof detections by Detection Technology over time This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery220", - "type": "Microsoft.Common.Section", - "label": "Spoof Detections by Detection Technology", - "elements": [ - { - "name": "huntingquery220-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails with Phish (BEC) Spoof detections by Detection Technology This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery221", - "type": "Microsoft.Common.Section", - "label": "Spoof Detections Trend", - "elements": [ - { - "name": "huntingquery221-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises total emails Business Email Compromise (BEC) Spoofing detections over time summarizing the data daily. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery222", - "type": "Microsoft.Common.Section", - "label": "Top Domains Outbound with Emails with Threats Inbound (Partner BEC)", - "elements": [ - { - "name": "huntingquery222-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises top outbound recipient domains by outbound email volume and shows total number of inbound emails with Threats from the same domains (as inbound senders) This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery223", - "type": "Microsoft.Common.Section", - "label": "User not covered under display name impersonation", - "elements": [ - { - "name": "huntingquery223-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps to find threats using display name impersonation for users not already protected with User Impersonation This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents IdentityInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery224", - "type": "Microsoft.Common.Section", - "label": "Admin Submission Trend (FN)", - "elements": [ - { - "name": "huntingquery224-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily amount of admin false negative submission by submission type. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery225", - "type": "Microsoft.Common.Section", - "label": "Admin Submission Trend (FP)", - "elements": [ - { - "name": "huntingquery225-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily amount of admin false positive submission by submission type. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery226", - "type": "Microsoft.Common.Section", - "label": "Admin Submissions by DetectionMethod (Phish FP)", - "elements": [ - { - "name": "huntingquery226-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the original detection technology of emails submitted as phish false positive by admins This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery227", - "type": "Microsoft.Common.Section", - "label": "Admin Submissions by DetectionMethod (Spam FP)", - "elements": [ - { - "name": "huntingquery227-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the original detection technology of emails submitted as spam false positive by admins This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery228", - "type": "Microsoft.Common.Section", - "label": "Admin Submissions by Detection Type", - "elements": [ - { - "name": "huntingquery228-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises all emails submitted as false positive by admins summarizing by the original filter verdict threat type This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery229", - "type": "Microsoft.Common.Section", - "label": "Admin Submissions by Grading verdict (FN-FP)", - "elements": [ - { - "name": "huntingquery229-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total amount of admin false negative or false positive submissions by the verdict of the submission grading. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery230", - "type": "Microsoft.Common.Section", - "label": "Admin Submissions by Submission State (FN)", - "elements": [ - { - "name": "huntingquery230-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total amount of admin false negative submissions by the state of the submission. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery231", - "type": "Microsoft.Common.Section", - "label": "Admin Submissions by Submission State (FP)", - "elements": [ - { - "name": "huntingquery231-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total amount of admin false positive submissions by the state of the submission. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery232", - "type": "Microsoft.Common.Section", - "label": "Admin Submissions by Submission Type (FN)", - "elements": [ - { - "name": "huntingquery232-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing admin reported email submissions This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery233", - "type": "Microsoft.Common.Section", - "label": "Admin Submissions by Submission Type (FP)", - "elements": [ - { - "name": "huntingquery233-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total amount of admin false positive submission by submission type. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery234", - "type": "Microsoft.Common.Section", - "label": "Top accounts performing admin submissions (FN)", - "elements": [ - { - "name": "huntingquery234-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the top admins performing false negative submissions This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery235", - "type": "Microsoft.Common.Section", - "label": "Top accounts performing admin submissions (FP)", - "elements": [ - { - "name": "huntingquery235-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the top admins performing false positive submissions This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery236", - "type": "Microsoft.Common.Section", - "label": "Top accounts performing user submissions", - "elements": [ - { - "name": "huntingquery236-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query graphs top accounts performing user submissions This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery237", - "type": "Microsoft.Common.Section", - "label": "Top 10 Detection Overrides - Admin Email Submissions (FN)", - "elements": [ - { - "name": "huntingquery237-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails submitted as false negatives by admins where emails where already detected by MDO but there was an admin policy override This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery238", - "type": "Microsoft.Common.Section", - "label": "Top 10 sender domains - Admin email submissions (FN)", - "elements": [ - { - "name": "huntingquery238-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails submitted by admins as false negatives, summarizing the data by top 10 sender domains of those emails This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery239", - "type": "Microsoft.Common.Section", - "label": "Top 10 sender domains - Admin email submissions (FP)", - "elements": [ - { - "name": "huntingquery239-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails submitted by admins as false positives, summarizing the data by top 10 sender domains of those emails This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery240", - "type": "Microsoft.Common.Section", - "label": "Total Submissions by Submission Type", - "elements": [ - { - "name": "huntingquery240-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Total Submissions by Submission Status This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery241", - "type": "Microsoft.Common.Section", - "label": "Total Submissions by Submission Type", - "elements": [ - { - "name": "huntingquery241-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Total Submissions by Submission Type This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery242", - "type": "Microsoft.Common.Section", - "label": "User reported submissions", - "elements": [ - { - "name": "huntingquery242-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing user reported email submissions This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery243", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions accuracy vs Admin review verdict", - "elements": [ - { - "name": "huntingquery243-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises user submissions type compared to admin review verdict This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery244", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FN) - Top Detection Overrides by Admins", - "elements": [ - { - "name": "huntingquery244-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails submitted as false negatives by users where emails were already detected by MDO but there was an admin definded policy override This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery245", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FN) - Top Detection Overrides by Users", - "elements": [ - { - "name": "huntingquery245-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises emails submitted as false negatives by users where emails were already detected by MDO but there was a policy override. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery246", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FN) - Top Inbound P2 Senders domains", - "elements": [ - { - "name": "huntingquery246-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises top sender domains of inbound emails submitted as false negatives by users. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery247", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FN) - Top Inbound P2 Senders", - "elements": [ - { - "name": "huntingquery247-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises top sender email addresses of inbound emails submitted as false negatives by users. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery248", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FN) - Top Intra-Org P2 Senders", - "elements": [ - { - "name": "huntingquery248-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises top sender email addresses of intra-org emails submitted as false negatives by users. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery249", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FN) - Top Intra-Org Subjects", - "elements": [ - { - "name": "huntingquery249-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises top 10 subjects of intra-org emails submitted as false negatives by users. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery250", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions by Admin review status (Mark and Notify)", - "elements": [ - { - "name": "huntingquery250-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises user submissions where admin also performed 'mark and notify' action on the submission This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery251", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FN-FP) by Grading verdict", - "elements": [ - { - "name": "huntingquery251-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total ammount of user false negative or false positive submissions by the verdict of the submission grading. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery252", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FN) by Submission Type", - "elements": [ - { - "name": "huntingquery252-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total ammount of user false negative submission by submission type, including the phish simulations reported emails This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery253", - "type": "Microsoft.Common.Section", - "label": "User email submissions (FN) from Junk Folder", - "elements": [ - { - "name": "huntingquery253-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the total ammount of user false negative submissions from the junk folder This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery254", - "type": "Microsoft.Common.Section", - "label": "User Email Submission Trend (FN)", - "elements": [ - { - "name": "huntingquery254-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily ammount of users false negative submission by submission type, including phish simulations reported by users. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery255", - "type": "Microsoft.Common.Section", - "label": "Attacked more than x times average", - "elements": [ - { - "name": "huntingquery255-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing count of users attacked more than x times average. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery256", - "type": "Microsoft.Common.Section", - "label": "Malicious mails by sender IPs", - "elements": [ - { - "name": "huntingquery256-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing sender IPs sending malicious email of type Malware or Phish This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery257", - "type": "Microsoft.Common.Section", - "label": "Top 10% of most attacked users", - "elements": [ - { - "name": "huntingquery257-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing the list of top 10% of most attacked users This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery258", - "type": "Microsoft.Common.Section", - "label": "Top 10 URL domains attacking organization", - "elements": [ - { - "name": "huntingquery258-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing list of top 10 URL domains attacking the organization This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery259", - "type": "Microsoft.Common.Section", - "label": "Top external malicious senders", - "elements": [ - { - "name": "huntingquery259-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing external top malicious email sender with malware or phishing emails in an organization in last 30 days This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery260", - "type": "Microsoft.Common.Section", - "label": "Top targeted users", - "elements": [ - { - "name": "huntingquery260-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing top targeted users with malware or phishing emails in an organization in last 30 days This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery261", - "type": "Microsoft.Common.Section", - "label": "End user malicious clicks", - "elements": [ - { - "name": "huntingquery261-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing list of top users click on Phis URLs This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery262", - "type": "Microsoft.Common.Section", - "label": "URL click count by click action", - "elements": [ - { - "name": "huntingquery262-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing URL click count by ClickAction This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery263", - "type": "Microsoft.Common.Section", - "label": "URL click on ZAP email", - "elements": [ - { - "name": "huntingquery263-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this query, we are looking for Url clicks on emails which get actioned by Zerohour auto purge This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Alertinfo AlertEvidence Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery264", - "type": "Microsoft.Common.Section", - "label": "URL clicks actions by URL", - "elements": [ - { - "name": "huntingquery264-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this query, we are looking URL click actions by URL in the last 7 days This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery265", - "type": "Microsoft.Common.Section", - "label": "URLClick details based on malicious URL click alert", - "elements": [ - { - "name": "huntingquery265-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "In this query, we are looking for Url clicks on emails which are generated the alert-A potentially malicious URL click was detected This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Alertinfo AlertEvidence Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery266", - "type": "Microsoft.Common.Section", - "label": "User clicked through events", - "elements": [ - { - "name": "huntingquery266-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps reviewing malicious clicks where user was allowed to proceed through malicious URL page. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery267", - "type": "Microsoft.Common.Section", - "label": "User clicks on malicious inbound emails", - "elements": [ - { - "name": "huntingquery267-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query provides insights on users who clicked on a suspicious URL This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery268", - "type": "Microsoft.Common.Section", - "label": "User clicks on phishing URLs in emails", - "elements": [ - { - "name": "huntingquery268-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query helps in determining clickthroughs when email delivered because of detection overrides. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery269", - "type": "Microsoft.Common.Section", - "label": "Malicious Clicks allowed (click-through)", - "elements": [ - { - "name": "huntingquery269-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Visualises malicious URL clicks that were allowed through Safe Links over time, helping analysts identify when users bypass security controls and click on malicious content.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery270", - "type": "Microsoft.Common.Section", - "label": "Malicious Emails with QR code Urls", - "elements": [ - { - "name": "huntingquery270-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Visualises emails containing QR code URLs that have been detected as malicious, helping analysts identify QR code-based attack campaigns.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (EmailUrlInfo EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery271", - "type": "Microsoft.Common.Section", - "label": "PhishingEmailUrlRedirector (1)", - "elements": [ - { - "name": "huntingquery271-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "The query helps detect emails associated with the open redirector URL campaign using Defender for Office 365 data. This hunting query depends on MicrosoftThreatProtection data connector (EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery272", - "type": "Microsoft.Common.Section", - "label": "SafeLinks URL detections", - "elements": [ - { - "name": "huntingquery272-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query provides insights on the detections done by SafeLinks protection in Defender for Office 365 This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery273", - "type": "Microsoft.Common.Section", - "label": "Top 10 Users clicking on Malicious URLs (Malware)", - "elements": [ - { - "name": "huntingquery273-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Visualises the top 10 users with click attempts on URLs in emails detected as malware, helping analysts identify risky user behaviour and potential targets.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery274", - "type": "Microsoft.Common.Section", - "label": "Top 10 Users clicking on Malicious URLs (Phish)", - "elements": [ - { - "name": "huntingquery274-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Visualises the top 10 users with click attempts on URLs in emails detected as phishing, helping analysts identify risky user behaviour and potential targets.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery275", - "type": "Microsoft.Common.Section", - "label": "Top 10 Users clicking on Malicious URLs (Spam)", - "elements": [ - { - "name": "huntingquery275-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Visualises the top 10 users with click attempts on URLs in emails detected as spam, helping analysts identify risky user behaviour and potential targets.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery276", - "type": "Microsoft.Common.Section", - "label": "URL Click attempts by threat type", - "elements": [ - { - "name": "huntingquery276-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Visualises the total amount of click attempts on URLs with detections, split by the different threat types identified.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery277", - "type": "Microsoft.Common.Section", - "label": "URL Clicks by Action", - "elements": [ - { - "name": "huntingquery277-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Summarizes URL click events by action type to help analysts understand user click behavior and policy effectiveness.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery278", - "type": "Microsoft.Common.Section", - "label": "URLs by location", - "elements": [ - { - "name": "huntingquery278-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Visualises where URLs have been identified in emails, summarizing by location (for example: Attachment, header, body) to help analysts understand distribution and risk.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303 This hunting query depends on MicrosoftThreatProtection data connector (EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery279", - "type": "Microsoft.Common.Section", - "label": "Post Delivery Events by Admin", - "elements": [ - { - "name": "huntingquery279-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily amount of emails that had an admin post delivery action, summarizing the data by action type This hunting query depends on MicrosoftThreatProtection data connector (EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery280", - "type": "Microsoft.Common.Section", - "label": "Post Delivery Events by Location", - "elements": [ - { - "name": "huntingquery280-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the amount of emails that had a post delivery action, summarizing the data daily by the final location as a result of the action This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery281", - "type": "Microsoft.Common.Section", - "label": "Post Delivery Events by ZAP type", - "elements": [ - { - "name": "huntingquery281-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily amount of emails that had a post delivery action from zero-hour auto purge, summarizing by phish,spam or malware detection action This hunting query depends on MicrosoftThreatProtection data connector (EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery282", - "type": "Microsoft.Common.Section", - "label": "Post Delivery Events over time", - "elements": [ - { - "name": "huntingquery282-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily amount of emails that had a post delivery action from zero-hour auto purge. This hunting query depends on MicrosoftThreatProtection data connector (EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery283", - "type": "Microsoft.Common.Section", - "label": "Determine Successfully Delivered Phishing Emails to Inbox/Junk folder.", - "elements": [ - { - "name": "huntingquery283-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query identifies threats which got successfully delivered to Inbox/Junk folder. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery284", - "type": "Microsoft.Common.Section", - "label": "Anomalous Payload Delivered from ISO files", - "elements": [ - { - "name": "huntingquery284-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for lnk file executions from other locations than C: drive, which can relate to mounted ISO-files. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents DeviceEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery285", - "type": "Microsoft.Common.Section", - "label": "Bitsadmin Activity", - "elements": [ - { - "name": "huntingquery285-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for use of bitsadmin.exe for file transfer, which can be used for legitimate purposes or as part of a malware downloader. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery286", - "type": "Microsoft.Common.Section", - "label": "Detect Malicious use of MSIExec", - "elements": [ - { - "name": "huntingquery286-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query detects possible download and execution using Msiexec. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery287", - "type": "Microsoft.Common.Section", - "label": "Detect Malicious use of Msiexec Mimikatz", - "elements": [ - { - "name": "huntingquery287-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for malicious use of msiexec.exe, particularly alongside mimikatz, a common credential dumper and privilege escalation tool. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery288", - "type": "Microsoft.Common.Section", - "label": "Office Apps Launching Wscipt", - "elements": [ - { - "name": "huntingquery288-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "The query searches for Office applications launching wscript.exe to run a JSE file. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery289", - "type": "Microsoft.Common.Section", - "label": "Detect Potential kerberoast Activities", - "elements": [ - { - "name": "huntingquery289-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query aim to detect if someone requests service tickets (where count => maxcount). The query requires trimming to set a baseline level for MaxCount. This hunting query depends on MicrosoftThreatProtection data connector (IdentityLogonEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery290", - "type": "Microsoft.Common.Section", - "label": "PowerShell Downloads", - "elements": [ - { - "name": "huntingquery290-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "The query searches for PowerShell execution events that could involve a download. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery291", - "type": "Microsoft.Common.Section", - "label": "Webserver Executing Suspicious Applications", - "elements": [ - { - "name": "huntingquery291-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for common webserver process names and identifies any processes launched using a scripting language (cmd, powershell, wscript, cscript). This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery292", - "type": "Microsoft.Common.Section", - "label": "Detect Suspicious Mshta Usage", - "elements": [ - { - "name": "huntingquery292-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query detects when mshta.exe has been run, which might include illegitimate usage by attackers. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery293", - "type": "Microsoft.Common.Section", - "label": "Files Copied to USB Drives", - "elements": [ - { - "name": "huntingquery293-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists files copied to USB external drives with USB drive information based on FileCreated events associated with most recent USBDriveMount events befor file creations. This hunting query depends on MicrosoftThreatProtection data connector (DeviceEvents DeviceFileEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery294", - "type": "Microsoft.Common.Section", - "label": "Suspicious Tomcat Confluence Process Launch", - "elements": [ - { - "name": "huntingquery294-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "The query checks for suspicious Tomcat process launches associated with likely exploitation of Confluence - CVE-2022-26134. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery295", - "type": "Microsoft.Common.Section", - "label": "MosaicLoader", - "elements": [ - { - "name": "huntingquery295-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This hunting query looks Malware Hides Itself Among Windows Defender Exclusions to Evade Detection. This hunting query depends on MicrosoftThreatProtection data connector (DeviceRegistryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery296", - "type": "Microsoft.Common.Section", - "label": "Spoolsv Spawning Rundll32", - "elements": [ - { - "name": "huntingquery296-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Look for the spoolsv.exe launching rundll32.exe with an empty command line. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery297", - "type": "Microsoft.Common.Section", - "label": "Suspicious DLLs in spool Folder", - "elements": [ - { - "name": "huntingquery297-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Look for the creation of suspicious DLL files spawned in the \\spool\\ folder along with DLLs that were recently loaded afterwards from \\Old. This hunting query depends on MicrosoftThreatProtection data connector (DeviceFileEvents DeviceImageLoadEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery298", - "type": "Microsoft.Common.Section", - "label": "Suspicious Files in spool Folder", - "elements": [ - { - "name": "huntingquery298-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Monitor for creation of suspicious files in the /spools/driver/ folder. This is a broad-based search that will surface any creation or modification of files in the folder targeted by this exploit. This hunting query depends on MicrosoftThreatProtection data connector (DeviceFileEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery299", - "type": "Microsoft.Common.Section", - "label": "Suspicious Spoolsv Child Process", - "elements": [ - { - "name": "huntingquery299-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Surfaces suspicious spoolsv.exe behavior likely related to CVE-2021-1675 This hunting query depends on MicrosoftThreatProtection data connector (DeviceImageLoadEvents DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery300", - "type": "Microsoft.Common.Section", - "label": "PrintNightmare CVE-2021-1675 usage Detection", - "elements": [ - { - "name": "huntingquery300-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for any file creations in the print spooler drivers folder. This hunting query depends on MicrosoftThreatProtection data connector (DeviceFileEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery301", - "type": "Microsoft.Common.Section", - "label": "Windows Print Spooler Service Suspicious File Creation", - "elements": [ - { - "name": "huntingquery301-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "The query digs in Windows print spooler drivers folder for any file creations. This behavior is used from PoC Exploit of CVE-2021-34527, CVE-2021-1675 or CVE-2022-21999. This hunting query depends on MicrosoftThreatProtection data connector (DeviceFileEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery302", - "type": "Microsoft.Common.Section", - "label": "MITRE - Suspicious Events", - "elements": [ - { - "name": "huntingquery302-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This hunting query looks for several different MITRE techniques, grouped by risk level. A weighting is applied to each risk level and a total score calculated per machine. Techniques can be added/removed as required. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery303", - "type": "Microsoft.Common.Section", - "label": "Unusual Volume of file deletion by users", - "elements": [ - { - "name": "huntingquery303-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for users performing file deletion activities. Spikes in file deletion observed from risky sign-in sessions are flagged here. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents AADSignInEventsBeta Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery304", - "type": "Microsoft.Common.Section", - "label": "Detect MaiSniper", - "elements": [ - { - "name": "huntingquery304-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for usage of MailSniper Exchange attack tool. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents DeviceNetworkEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery305", - "type": "Microsoft.Common.Section", - "label": "Account Brute Force", - "elements": [ - { - "name": "huntingquery305-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This hunting query searches for public IP addresses that failed to logon to a computer multiple times, using multiple accounts, and eventually succeeded. This hunting query depends on MicrosoftThreatProtection data connector (DeviceLogonEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery306", - "type": "Microsoft.Common.Section", - "label": "Remote File Creation with PsExec", - "elements": [ - { - "name": "huntingquery306-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query detects remote file creation events that might indicate an active attack using PsExec. This hunting query depends on MicrosoftThreatProtection data connector (DeviceFileEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery307", - "type": "Microsoft.Common.Section", - "label": "Service Accounts Performing Remote PS", - "elements": [ - { - "name": "huntingquery307-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for any Service Accounts Performing Remote PowerShell. This hunting query depends on MicrosoftThreatProtection data connector (DeviceLogonEvents DeviceEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery308", - "type": "Microsoft.Common.Section", - "label": "Account Creation", - "elements": [ - { - "name": "huntingquery308-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for the creation of user accounts on a machine using the \"net user\" command. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery309", - "type": "Microsoft.Common.Section", - "label": "Local Admin Group Changes", - "elements": [ - { - "name": "huntingquery309-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This hunting query searches for changes to the local administrators group. This hunting query depends on MicrosoftThreatProtection data connector (IdentityInfo DeviceEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery310", - "type": "Microsoft.Common.Section", - "label": "Rare Process as a Service", - "elements": [ - { - "name": "huntingquery310-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query looks for rarely seen processes which are launched as a service. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents DeviceNetworkEvents DeviceFileEvents DeviceImageLoadEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery311", - "type": "Microsoft.Common.Section", - "label": "Scheduled Task Creation", - "elements": [ - { - "name": "huntingquery311-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for any scheduled task creation event. This hunting query depends on MicrosoftThreatProtection data connector (DeviceEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery312", - "type": "Microsoft.Common.Section", - "label": "SAM Name Change CVE-2021-42278", - "elements": [ - { - "name": "huntingquery312-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "The following query detects possible CVE-2021-42278 exploitation by finding changes of device names in the network using Microsoft Defender for Identity. This hunting query depends on MicrosoftThreatProtection data connector (IdentityDirectoryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery313", - "type": "Microsoft.Common.Section", - "label": "Deletion of data on multiple drives using cipher exe", - "elements": [ - { - "name": "huntingquery313-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for attempts to delete data on multiple drives using cipher.exe. This activity is typically done by ransomware to prevent recovery of data after encryption. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery314", - "type": "Microsoft.Common.Section", - "label": "Check for multiple signs of Ransomware Activity", - "elements": [ - { - "name": "huntingquery314-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for multiple signs of ransomware activity to identify affected devices. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery315", - "type": "Microsoft.Common.Section", - "label": "Disabling Services via Registry", - "elements": [ - { - "name": "huntingquery315-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Search for processes modifying the registry to disable security features. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery316", - "type": "Microsoft.Common.Section", - "label": "DLLHost.exe WMIC domain discovery", - "elements": [ - { - "name": "huntingquery316-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for dllhost.exe calling WMIC to discover additional hosts and associated domain. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery317", - "type": "Microsoft.Common.Section", - "label": "PowerShell adding exclusion path for Microsoft Defender of ProgramData", - "elements": [ - { - "name": "huntingquery317-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identify PowerShell creating an exclusion path of ProgramData directory for Microsoft Defender to not monitor. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery318", - "type": "Microsoft.Common.Section", - "label": "Suspicious Image Load related to IcedId", - "elements": [ - { - "name": "huntingquery318-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for suspicious load image events by rundll32.exe or regsvr32.exe, a behavior associated with IcedId, which can lead to IcedId ransomware. This hunting query depends on MicrosoftThreatProtection data connector (DeviceImageLoadEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery319", - "type": "Microsoft.Common.Section", - "label": "LaZagne Credential Theft", - "elements": [ - { - "name": "huntingquery319-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query can be used to locate processes executing credential theft activity, often LaZagne in ransomware compromises. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery320", - "type": "Microsoft.Common.Section", - "label": "Clearing of forensic evidence from event logs using wevtutil", - "elements": [ - { - "name": "huntingquery320-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for attempts to clear at least 10 log entries from event logs using wevtutil. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery321", - "type": "Microsoft.Common.Section", - "label": "Stopping multiple processes using taskkill", - "elements": [ - { - "name": "huntingquery321-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for attempts to stop at least 10 separate processes using the taskkill.exe utility. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery322", - "type": "Microsoft.Common.Section", - "label": "Potential Ransomware activity related to Cobalt Strike", - "elements": [ - { - "name": "huntingquery322-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for alerts related to suspected ransomware and Cobalt Strike activity, a tool used in numerous ransomware campaigns. This hunting query depends on MicrosoftThreatProtection data connector (AlertInfo AlertEvidence DeviceLogonEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery323", - "type": "Microsoft.Common.Section", - "label": "Qakbot Discovery Activies", - "elements": [ - { - "name": "huntingquery323-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query searches for injected processes launching discovery activity. Qakbot has been observed leading to ransomware in numerous instances. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery324", - "type": "Microsoft.Common.Section", - "label": "Shadow Copy Deletions", - "elements": [ - { - "name": "huntingquery324-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This rule detects when Shadow Copies are being deleted. This is a know actions that is performed by threat actors. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery325", - "type": "Microsoft.Common.Section", - "label": "Turning off services using sc exe", - "elements": [ - { - "name": "huntingquery325-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query checks for attempts to turn off at least 10 existing services using sc.exe. This hunting query depends on MicrosoftThreatProtection data connector (DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery326", - "type": "Microsoft.Common.Section", - "label": "Detect CISA Alert (AA22-117A) 2021 Top Routinely Exploited Vulnerabilities", - "elements": [ - { - "name": "huntingquery326-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This advanced hunting query detects CISA Alert (AA22-117A) 2021 Top Routinely Exploited Vulnerabilities https://www.cisa.gov/uscert/ncas/alerts/aa22-117a This hunting query depends on MicrosoftThreatProtection data connector (DeviceTvmSoftwareVulnerabilitiesKB Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery327", - "type": "Microsoft.Common.Section", - "label": "Punycode lookalikes", - "elements": [ - { - "name": "huntingquery327-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Punycode lookalike domains in Emails and Teams messages This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailUrlInfo MessageUrlInfo MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery328", - "type": "Microsoft.Common.Section", - "label": "Hunt for RMM tool execution following Teams messages", - "elements": [ - { - "name": "huntingquery328-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Correlates inbound Microsoft Teams messages with subsequent execution of common Remote Monitoring and Management (RMM) tools (QuickAssist, AnyDesk, TeamViewer) \non the recipient's device within a short time window. This pattern is associated with social engineering / tech-support-scam intrusions (e.g., Storm-1811 / Black \nBasta) where attackers lure victims via Teams chat and then convince them to launch an RMM tool to gain remote access. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents DeviceProcessEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery329", - "type": "Microsoft.Common.Section", - "label": "Hunt for alerts correlated with Teams messages", - "elements": [ - { - "name": "huntingquery329-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Correlates Microsoft Teams message activity with downstream Defender alerts on the\nrecipient (victim) identity, surfacing potential phishing or social-engineering chats\nthat are followed by alert activity within a tunable time window. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents CloudAppEvents AlertEvidence Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery330", - "type": "Microsoft.Common.Section", - "label": "Identify acting user for reported phish", - "elements": [ - { - "name": "huntingquery330-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Identifies the user who acted on a reported phishing message and compares that actor with the original recipient, helping investigate delegate or shared mailbox reporting scenarios. This hunting query depends on MicrosoftThreatProtection data connector (AlertEvidence CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery331", - "type": "Microsoft.Common.Section", - "label": "Inbound Sender Domains Failing Email Authentication", - "elements": [ - { - "name": "huntingquery331-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists inbound sender domains with the most email authentication failures (DMARC, DKIM, SPF, and Composite Authentication), using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery332", - "type": "Microsoft.Common.Section", - "label": "Automatic External Email Forwarding Overview by Type (Mailbox Rule and SMTP)", - "elements": [ - { - "name": "huntingquery332-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises automatic external email forwarding across the tenant by forwarding type (mailbox rule versus SMTP forwarding), using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery333", - "type": "Microsoft.Common.Section", - "label": "First-Contact External Email Senders", - "elements": [ - { - "name": "huntingquery333-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists external email senders seen for the first time in the period (most recent first), surfacing new first-contact relationships, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery334", - "type": "Microsoft.Common.Section", - "label": "New External Sender Domains Carrying Threats", - "elements": [ - { - "name": "huntingquery334-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists external sender domains seen for the first time in the period that already carried threats, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery335", - "type": "Microsoft.Common.Section", - "label": "Top External Domains Receiving Auto-forwarded Email (Mailbox Rule and SMTP)", - "elements": [ - { - "name": "huntingquery335-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the top external domains receiving automatically forwarded email, by forwarding type, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery336", - "type": "Microsoft.Common.Section", - "label": "Top External Recipients Receiving Auto-forwarded Email (Mailbox Rule and SMTP)", - "elements": [ - { - "name": "huntingquery336-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the top external recipients receiving automatically forwarded email, by forwarding type, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery337", - "type": "Microsoft.Common.Section", - "label": "Top Internal Users Auto-forwarding Email Externally (Mailbox Rule and SMTP)", - "elements": [ - { - "name": "huntingquery337-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the top internal users automatically forwarding email to external addresses, by forwarding type, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery338", - "type": "Microsoft.Common.Section", - "label": "File Malware Detections Over Time (SharePoint, OneDrive and Teams)", - "elements": [ - { - "name": "huntingquery338-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query shows the daily volume of file malware detections in SharePoint, OneDrive and Teams over the last 30 days, using the FileMaliciousContentInfo table. This hunting query depends on MicrosoftThreatProtection data connector (FileMaliciousContentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery339", - "type": "Microsoft.Common.Section", - "label": "File Malware Detections by Location (SharePoint, OneDrive and Teams)", - "elements": [ - { - "name": "huntingquery339-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query surfaces malware detections in files stored in SharePoint, OneDrive and Teams, grouped by the site or personal location where each file resides, using the FileMaliciousContentInfo table. This hunting query depends on MicrosoftThreatProtection data connector (FileMaliciousContentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery340", - "type": "Microsoft.Common.Section", - "label": "File Malware Detections by Workload (SharePoint, OneDrive and Teams)", - "elements": [ - { - "name": "huntingquery340-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises malware detections in files stored in SharePoint, OneDrive and Teams by the Microsoft 365 collaboration workload, using the FileMaliciousContentInfo table. This hunting query depends on MicrosoftThreatProtection data connector (FileMaliciousContentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery341", - "type": "Microsoft.Common.Section", - "label": "File Malware Top Families by Microsoft Defender Detonation (SharePoint, OneDrive and Teams)", - "elements": [ - { - "name": "huntingquery341-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the top malware families detected in files across SharePoint, OneDrive and Teams by Microsoft Defender for Office 365 (Safe Attachments detonation), using the FileMaliciousContentInfo table. This hunting query depends on MicrosoftThreatProtection data connector (FileMaliciousContentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery342", - "type": "Microsoft.Common.Section", - "label": "File Malware Top Families by SharePoint Antivirus (SharePoint, OneDrive and Teams)", - "elements": [ - { - "name": "huntingquery342-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the top malware families detected in files across SharePoint, OneDrive and Teams by the built-in SharePoint Online antivirus, using the FileMaliciousContentInfo table. This hunting query depends on MicrosoftThreatProtection data connector (FileMaliciousContentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery343", - "type": "Microsoft.Common.Section", - "label": "File Scanning Coverage (SharePoint, OneDrive and Teams)", - "elements": [ - { - "name": "huntingquery343-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises file scanning coverage in SharePoint, OneDrive and Teams: how many files were processed, how many were found malicious, and how many were scanned with no detection, using the FileMaliciousContentInfo table. This hunting query depends on MicrosoftThreatProtection data connector (FileMaliciousContentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery344", - "type": "Microsoft.Common.Section", - "label": "Malware Detection IP and Geo Position", - "elements": [ - { - "name": "huntingquery344-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises inbound email malware detections by sender IP address with geographic coordinates for mapping. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery345", - "type": "Microsoft.Common.Section", - "label": "Malware Detections by Sender Country", - "elements": [ - { - "name": "huntingquery345-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises inbound email malware detections by the sender IP address country, derived from the sender IPv4 address. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery346", - "type": "Microsoft.Common.Section", - "label": "Malware Detections by Threat Classification", - "elements": [ - { - "name": "huntingquery346-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises inbound email malware detections grouped by the malware threat classification (for example Adware, Downloader, HackTool, Ransomware, Remote access trojan, Spyware). This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery347", - "type": "Microsoft.Common.Section", - "label": "Top Attacked Users by Malware Threat Classification", - "elements": [ - { - "name": "huntingquery347-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query surfaces, for each malware threat classification, the recipient most frequently targeted by inbound malware email. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery348", - "type": "Microsoft.Common.Section", - "label": "Top File Owners Holding Malware (SharePoint, OneDrive and Teams)", - "elements": [ - { - "name": "huntingquery348-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the file owners (or the SharePoint/Teams site, when a file has no individual owner) whose files in SharePoint, OneDrive or Teams were flagged as malware, using the FileMaliciousContentInfo table. This hunting query depends on MicrosoftThreatProtection data connector (FileMaliciousContentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery349", - "type": "Microsoft.Common.Section", - "label": "First-Contact External Teams Senders", - "elements": [ - { - "name": "huntingquery349-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists external Microsoft Teams senders by the date they were first seen, surfacing recent first-contact senders. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery350", - "type": "Microsoft.Common.Section", - "label": "Malicious files shared in Microsoft Teams", - "elements": [ - { - "name": "huntingquery350-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists Microsoft Teams files detected with malware by Microsoft Defender for Office 365. This hunting query depends on MicrosoftThreatProtection data connector (FileMaliciousContentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery351", - "type": "Microsoft.Common.Section", - "label": "Microsoft Teams External versus Internal Thread Exposure", - "elements": [ - { - "name": "huntingquery351-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query shows de-duplicated Microsoft Teams messages split by whether the thread includes external participants. This hunting query depends on MicrosoftThreatProtection data connector (MessageEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery352", - "type": "Microsoft.Common.Section", - "label": "Teams File Protection Summary", - "elements": [ - { - "name": "huntingquery352-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarizes Microsoft Teams file protection: files scanned, files with malware detected, and files with no detection. This hunting query depends on MicrosoftThreatProtection data connector (FileMaliciousContentInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery353", - "type": "Microsoft.Common.Section", - "label": "SecOps Mailbox Override Count", - "elements": [ - { - "name": "huntingquery353-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query counts inbound emails delivered to the SecOps mailbox by an organisation-level allow override. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery354", - "type": "Microsoft.Common.Section", - "label": "SecOps Mailbox Overrides by Threat Type", - "elements": [ - { - "name": "huntingquery354-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query breaks down inbound emails delivered to the SecOps mailbox by an organisation-level allow override, grouped by threat type. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery355", - "type": "Microsoft.Common.Section", - "label": "Top Recipients Receiving Threats Delivered by Override", - "elements": [ - { - "name": "huntingquery355-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the recipients who received the most threats that were delivered because of an admin or user override, with the share overridden and a breakdown of override types, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery356", - "type": "Microsoft.Common.Section", - "label": "Top Sender Domains Delivering Threats via Override", - "elements": [ - { - "name": "huntingquery356-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the sender domains whose threats were most often delivered because of an admin or user override, with the share overridden and a breakdown of override types, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery357", - "type": "Microsoft.Common.Section", - "label": "Phish Detection IP and Geo Position", - "elements": [ - { - "name": "huntingquery357-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises inbound email phishing detections by sender IP address with geographic coordinates for mapping. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery358", - "type": "Microsoft.Common.Section", - "label": "Phish Detections by Sender Country", - "elements": [ - { - "name": "huntingquery358-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises inbound email phishing detections by the sender IP address country, derived from the sender IPv4 address. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery359", - "type": "Microsoft.Common.Section", - "label": "Phish Detections by Threat Classification", - "elements": [ - { - "name": "huntingquery359-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises inbound email phishing detections grouped by the message-intent threat classification produced by Microsoft Defender for Office 365 LLM content analysis (for example Invoice, Gift card, Payroll, PII gathering). This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery360", - "type": "Microsoft.Common.Section", - "label": "Phishing Detected by LLM Content Analysis", - "elements": [ - { - "name": "huntingquery360-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists inbound phishing messages that Microsoft Defender for Office 365 detected using LLM (Language AI) content analysis, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery361", - "type": "Microsoft.Common.Section", - "label": "Top Attacked Users by Phish Threat Classification", - "elements": [ - { - "name": "huntingquery361-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query surfaces, for each phishing message-intent threat classification, the recipient most frequently targeted by inbound phishing email. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery362", - "type": "Microsoft.Common.Section", - "label": "Quarantine Release Percentage", - "elements": [ - { - "name": "huntingquery362-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query calculates the percentage of quarantined emails that were subsequently released, out of the total quarantined. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery363", - "type": "Microsoft.Common.Section", - "label": "Automated Investigation Outcomes by Day", - "elements": [ - { - "name": "huntingquery363-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarizes daily automated investigation outcomes (threat detected versus clean) by correlating automated remediation events with alert evidence, using the EmailPostDeliveryEvents and AlertEvidence tables. This hunting query depends on MicrosoftThreatProtection data connector (EmailPostDeliveryEvents AlertEvidence Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery364", - "type": "Microsoft.Common.Section", - "label": "Automated Remediation Delivery to Action Latency", - "elements": [ - { - "name": "huntingquery364-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query measures how long after delivery Microsoft Defender for Office 365 automated remediation acts on a message, reported as daily average and percentiles, using the EmailEvents and EmailPostDeliveryEvents tables. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery365", - "type": "Microsoft.Common.Section", - "label": "Automated Remediation Efficiency Over Time", - "elements": [ - { - "name": "huntingquery365-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query trends the outcome (success versus failure) of Microsoft Defender for Office 365 automated remediation actions over time, using the EmailPostDeliveryEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery366", - "type": "Microsoft.Common.Section", - "label": "Automated Remediation Manual versus Automatic Approval", - "elements": [ - { - "name": "huntingquery366-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query shows whether Microsoft Defender for Office 365 automated remediation actions were taken automatically or required manual admin approval, using the EmailPostDeliveryEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailPostDeliveryEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery367", - "type": "Microsoft.Common.Section", - "label": "Spam Detections by Sender Country", - "elements": [ - { - "name": "huntingquery367-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarizes inbound spam detections by the geographic country of the sending IP address, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery368", - "type": "Microsoft.Common.Section", - "label": "Impersonation and Spoof Detections by Sender Country", - "elements": [ - { - "name": "huntingquery368-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarizes inbound impersonation and spoof (BEC) detections by the geographic country of the sending IP address, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery369", - "type": "Microsoft.Common.Section", - "label": "Top Recipients Targeted by Impersonation or BEC", - "elements": [ - { - "name": "huntingquery369-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the recipients most frequently targeted by impersonation and Business Email Compromise (BEC) attempts, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery370", - "type": "Microsoft.Common.Section", - "label": "Top accounts performing user submissions (FP)", - "elements": [ - { - "name": "huntingquery370-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the top accounts performing user false positive submissions. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery371", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FP) - Top Inbound Subjects", - "elements": [ - { - "name": "huntingquery371-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the top 10 subjects of inbound emails submitted as false positives by users. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery372", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FP) - Top Intra-Org P2 Senders", - "elements": [ - { - "name": "huntingquery372-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the top 10 intra-org senders of emails submitted as false positives by users. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery373", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FP) - Top P2 Sender Domains", - "elements": [ - { - "name": "huntingquery373-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the top 10 sender domains of emails submitted as false positives by users. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery374", - "type": "Microsoft.Common.Section", - "label": "User Email Submissions (FP) - Top Inbound P2 Senders", - "elements": [ - { - "name": "huntingquery374-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the top 10 inbound senders of emails submitted as false positives by users. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery375", - "type": "Microsoft.Common.Section", - "label": "User Email Submission Trend (FP)", - "elements": [ - { - "name": "huntingquery375-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises the daily amount of user false positive email submissions over time. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery376", - "type": "Microsoft.Common.Section", - "label": "User Submissions by Detection Method - Phish (FP)", - "elements": [ - { - "name": "huntingquery376-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises user false positive submissions by the original phish filter verdict on the reported message. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery377", - "type": "Microsoft.Common.Section", - "label": "User Submissions by Detection Method - Spam (FP)", - "elements": [ - { - "name": "huntingquery377-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises user false positive submissions by the original spam filter verdict on the reported message. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery378", - "type": "Microsoft.Common.Section", - "label": "User Submissions by Submission State (FP)", - "elements": [ - { - "name": "huntingquery378-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises user false positive submissions by submission state. This hunting query depends on MicrosoftThreatProtection data connector (CloudAppEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery379", - "type": "Microsoft.Common.Section", - "label": "Largest Malicious Email Campaigns by Cluster", - "elements": [ - { - "name": "huntingquery379-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query surfaces the largest malicious inbound email campaigns, clustered by EmailClusterId, with one row per attack wave, using the EmailEvents table. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery380", - "type": "Microsoft.Common.Section", - "label": "Blocked URL Clicks by Workload", - "elements": [ - { - "name": "huntingquery380-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises blocked Safe Links URL clicks over time broken down by the workload the click came from (Email, Teams, Office, Microsoft 365 Copilot). This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery381", - "type": "Microsoft.Common.Section", - "label": "Top 20 Malicious URLs by Clicks", - "elements": [ - { - "name": "huntingquery381-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the top 20 URLs carrying a detection ranked by the number of clicks registered, with the threat type, click action and workload for each. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery382", - "type": "Microsoft.Common.Section", - "label": "Top Clicks on Malicious URLs", - "elements": [ - { - "name": "huntingquery382-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query lists the malicious URLs that registered the most user clicks, with threat type, click action and workload, using the UrlClickEvents table. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery383", - "type": "Microsoft.Common.Section", - "label": "URL Click-Through by Workload", - "elements": [ - { - "name": "huntingquery383-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query shows malicious URL click-throughs (where the user proceeded past the Safe Links warning) broken down by the workload the click came from. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery384", - "type": "Microsoft.Common.Section", - "label": "URL Threat Protection Summary", - "elements": [ - { - "name": "huntingquery384-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query summarises URL threat protection activity (Safe Links click outcomes and distinct URLs seen in email) as a set of headline metrics for the selected period. This hunting query depends on MicrosoftThreatProtection data connector (UrlClickEvents EmailUrlInfo Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery385", - "type": "Microsoft.Common.Section", - "label": "Malware URL Detections Trend", - "elements": [ - { - "name": "huntingquery385-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises inbound email malware detections attributed to URL-based detection technologies over time. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery386", - "type": "Microsoft.Common.Section", - "label": "Phishing URL Detections Trend", - "elements": [ - { - "name": "huntingquery386-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises inbound email phishing detections attributed to URL-based detection technologies over time. This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents Parser or Table)" - } - } - ] - }, - { - "name": "huntingquery387", - "type": "Microsoft.Common.Section", - "label": "QR Code URL Detections Trend", - "elements": [ - { - "name": "huntingquery387-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "This query visualises inbound email detections involving URLs embedded in QR codes over time, split by the threat type of the detection (phishing, malware, spam). This hunting query depends on MicrosoftThreatProtection data connector (EmailEvents EmailUrlInfo Parser or Table)" - } - } - ] } ] } @@ -6179,7 +99,9 @@ "outputs": { "workspace-location": "[first(map(filter(basics('getLAWorkspace').value, (filter) => and(contains(toLower(filter.id), toLower(resourceGroup().name)),equals(filter.name,basics('workspace')))), (item) => item.location))]", "location": "[location()]", - "workspace": "[basics('workspace')]" + "workspace": "[basics('workspace')]", + "DeployDefenderWorkbook": "[steps('contentSelection').DeployDefenderWorkbook]", + "DeployDataConnector": "[steps('contentSelection').DeployDataConnector]" } } } diff --git a/Solutions/Microsoft Defender XDR/Package/mainTemplate.json b/Solutions/Microsoft Defender XDR/Package/mainTemplate.json index 65cfc8c6d19..f29c7c4d474 100644 --- a/Solutions/Microsoft Defender XDR/Package/mainTemplate.json +++ b/Solutions/Microsoft Defender XDR/Package/mainTemplate.json @@ -28,28 +28,18 @@ "description": "Workspace name for Log Analytics where Microsoft Sentinel is setup" } }, - "workbook1-name": { - "type": "string", - "defaultValue": "Microsoft Defender for Office 365 Detections and Insights", - "minLength": 1, - "metadata": { - "description": "Name for the workbook" - } - }, - "workbook2-name": { - "type": "string", - "defaultValue": "Microsoft Defender For EndPoint", - "minLength": 1, + "DeployDefenderWorkbook": { + "type": "bool", + "defaultValue": false, "metadata": { - "description": "Name for the workbook" + "description": "Deploy Defender Workbooks and their Content Hub registrations independently of Microsoft Sentinel DeployWorkbook. Candidate provider contract requires approved lab installation, readback and update verification." } }, - "workbook3-name": { - "type": "string", - "defaultValue": "Microsoft Defender For Identity", - "minLength": 1, + "DeployDataConnector": { + "type": "bool", + "defaultValue": true, "metadata": { - "description": "Name for the workbook" + "description": "Deploy the data connectors carried by this solution, together with their metadata and catalog entries (ContentKind DataConnector, ResourceDataConnector and DataType)." } } }, @@ -57,7 +47,7 @@ "email": "support@microsoft.com", "_email": "[variables('email')]", "_solutionName": "Microsoft Defender XDR", - "_solutionVersion": "3.0.18", + "_solutionVersion": "3.2.1", "solutionId": "azuresentinel.azure-sentinel-solution-microsoft365defender", "_solutionId": "[variables('solutionId')]", "uiConfigId1": "MicrosoftThreatProtection", @@ -69,2241 +59,6 @@ "dataConnectorTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-dc-',uniquestring(variables('_dataConnectorContentId1'))))]", "dataConnectorVersion1": "1.0.0", "_dataConnectorcontentProductId1": "[concat(take(variables('_solutionId'),50),'-','dc','-', uniqueString(concat(variables('_solutionId'),'-','DataConnector','-',variables('_dataConnectorContentId1'),'-', variables('dataConnectorVersion1'))))]", - "analyticRuleObject1": { - "analyticRuleVersion1": "1.1.2", - "_analyticRulecontentId1": "6c3a1258-bcdd-4fcd-b753-1a9bc826ce12", - "analyticRuleId1": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '6c3a1258-bcdd-4fcd-b753-1a9bc826ce12')]", - "analyticRuleTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('6c3a1258-bcdd-4fcd-b753-1a9bc826ce12')))]", - "_analyticRulecontentProductId1": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','6c3a1258-bcdd-4fcd-b753-1a9bc826ce12','-', '1.1.2')))]" - }, - "analyticRuleObject2": { - "analyticRuleVersion2": "1.0.4", - "_analyticRulecontentId2": "53e936c6-6c30-4d12-8343-b8a0456e8429", - "analyticRuleId2": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '53e936c6-6c30-4d12-8343-b8a0456e8429')]", - "analyticRuleTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('53e936c6-6c30-4d12-8343-b8a0456e8429')))]", - "_analyticRulecontentProductId2": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','53e936c6-6c30-4d12-8343-b8a0456e8429','-', '1.0.4')))]" - }, - "analyticRuleObject3": { - "analyticRuleVersion3": "1.1.0", - "_analyticRulecontentId3": "1bf6e165-5e32-420e-ab4f-0da8558a8be2", - "analyticRuleId3": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '1bf6e165-5e32-420e-ab4f-0da8558a8be2')]", - "analyticRuleTemplateSpecName3": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('1bf6e165-5e32-420e-ab4f-0da8558a8be2')))]", - "_analyticRulecontentProductId3": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','1bf6e165-5e32-420e-ab4f-0da8558a8be2','-', '1.1.0')))]" - }, - "analyticRuleObject4": { - "analyticRuleVersion4": "1.0.6", - "_analyticRulecontentId4": "738702fd-0a66-42c7-8586-e30f0583f8fe", - "analyticRuleId4": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '738702fd-0a66-42c7-8586-e30f0583f8fe')]", - "analyticRuleTemplateSpecName4": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('738702fd-0a66-42c7-8586-e30f0583f8fe')))]", - "_analyticRulecontentProductId4": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','738702fd-0a66-42c7-8586-e30f0583f8fe','-', '1.0.6')))]" - }, - "analyticRuleObject5": { - "analyticRuleVersion5": "1.0.5", - "_analyticRulecontentId5": "ce1e7025-866c-41f3-9b08-ec170e05e73e", - "analyticRuleId5": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'ce1e7025-866c-41f3-9b08-ec170e05e73e')]", - "analyticRuleTemplateSpecName5": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('ce1e7025-866c-41f3-9b08-ec170e05e73e')))]", - "_analyticRulecontentProductId5": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','ce1e7025-866c-41f3-9b08-ec170e05e73e','-', '1.0.5')))]" - }, - "analyticRuleObject6": { - "analyticRuleVersion6": "1.0.7", - "_analyticRulecontentId6": "a3c144f9-8051-47d4-ac29-ffb0c312c910", - "analyticRuleId6": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'a3c144f9-8051-47d4-ac29-ffb0c312c910')]", - "analyticRuleTemplateSpecName6": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('a3c144f9-8051-47d4-ac29-ffb0c312c910')))]", - "_analyticRulecontentProductId6": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','a3c144f9-8051-47d4-ac29-ffb0c312c910','-', '1.0.7')))]" - }, - "analyticRuleObject7": { - "analyticRuleVersion7": "1.1.3", - "_analyticRulecontentId7": "b6685757-3ed1-4b05-a5bd-2cacadc86c2a", - "analyticRuleId7": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'b6685757-3ed1-4b05-a5bd-2cacadc86c2a')]", - "analyticRuleTemplateSpecName7": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('b6685757-3ed1-4b05-a5bd-2cacadc86c2a')))]", - "_analyticRulecontentProductId7": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','b6685757-3ed1-4b05-a5bd-2cacadc86c2a','-', '1.1.3')))]" - }, - "analyticRuleObject8": { - "analyticRuleVersion8": "1.0.4", - "_analyticRulecontentId8": "1785d372-b9fe-4283-96a6-3a1d83cabfd1", - "analyticRuleId8": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '1785d372-b9fe-4283-96a6-3a1d83cabfd1')]", - "analyticRuleTemplateSpecName8": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('1785d372-b9fe-4283-96a6-3a1d83cabfd1')))]", - "_analyticRulecontentProductId8": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','1785d372-b9fe-4283-96a6-3a1d83cabfd1','-', '1.0.4')))]" - }, - "analyticRuleObject9": { - "analyticRuleVersion9": "1.0.3", - "_analyticRulecontentId9": "3bd33158-3f0b-47e3-a50f-7c20a1b88038", - "analyticRuleId9": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '3bd33158-3f0b-47e3-a50f-7c20a1b88038')]", - "analyticRuleTemplateSpecName9": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('3bd33158-3f0b-47e3-a50f-7c20a1b88038')))]", - "_analyticRulecontentProductId9": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','3bd33158-3f0b-47e3-a50f-7c20a1b88038','-', '1.0.3')))]" - }, - "analyticRuleObject10": { - "analyticRuleVersion10": "1.1.3", - "_analyticRulecontentId10": "26e81021-2de6-4442-a74a-a77885e96911", - "analyticRuleId10": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '26e81021-2de6-4442-a74a-a77885e96911')]", - "analyticRuleTemplateSpecName10": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('26e81021-2de6-4442-a74a-a77885e96911')))]", - "_analyticRulecontentProductId10": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','26e81021-2de6-4442-a74a-a77885e96911','-', '1.1.3')))]" - }, - "analyticRuleObject11": { - "analyticRuleVersion11": "1.0.0", - "_analyticRulecontentId11": "c25a8cd4-5b4a-45a8-9ba0-3b753a652f6b", - "analyticRuleId11": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'c25a8cd4-5b4a-45a8-9ba0-3b753a652f6b')]", - "analyticRuleTemplateSpecName11": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('c25a8cd4-5b4a-45a8-9ba0-3b753a652f6b')))]", - "_analyticRulecontentProductId11": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','c25a8cd4-5b4a-45a8-9ba0-3b753a652f6b','-', '1.0.0')))]" - }, - "TemplateEmptyArray": "[json('[]')]", - "analyticRuleObject12": { - "analyticRuleVersion12": "1.0.0", - "_analyticRulecontentId12": "bb46dd86-e642-48a4-975c-44f5ac2b5033", - "analyticRuleId12": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'bb46dd86-e642-48a4-975c-44f5ac2b5033')]", - "analyticRuleTemplateSpecName12": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('bb46dd86-e642-48a4-975c-44f5ac2b5033')))]", - "_analyticRulecontentProductId12": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','bb46dd86-e642-48a4-975c-44f5ac2b5033','-', '1.0.0')))]" - }, - "analyticRuleObject13": { - "analyticRuleVersion13": "1.0.0", - "_analyticRulecontentId13": "2c81c0a0-9823-4a14-b21a-2b4acd3335d2", - "analyticRuleId13": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '2c81c0a0-9823-4a14-b21a-2b4acd3335d2')]", - "analyticRuleTemplateSpecName13": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('2c81c0a0-9823-4a14-b21a-2b4acd3335d2')))]", - "_analyticRulecontentProductId13": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','2c81c0a0-9823-4a14-b21a-2b4acd3335d2','-', '1.0.0')))]" - }, - "analyticRuleObject14": { - "analyticRuleVersion14": "1.0.0", - "_analyticRulecontentId14": "7ce00cba-f76f-4026-ab7f-7e4f1b67bd18", - "analyticRuleId14": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '7ce00cba-f76f-4026-ab7f-7e4f1b67bd18')]", - "analyticRuleTemplateSpecName14": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('7ce00cba-f76f-4026-ab7f-7e4f1b67bd18')))]", - "_analyticRulecontentProductId14": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','7ce00cba-f76f-4026-ab7f-7e4f1b67bd18','-', '1.0.0')))]" - }, - "analyticRuleObject15": { - "analyticRuleVersion15": "1.0.0", - "_analyticRulecontentId15": "1be34fb9-f81b-47ae-84fb-465e6686d76c", - "analyticRuleId15": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '1be34fb9-f81b-47ae-84fb-465e6686d76c')]", - "analyticRuleTemplateSpecName15": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('1be34fb9-f81b-47ae-84fb-465e6686d76c')))]", - "_analyticRulecontentProductId15": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','1be34fb9-f81b-47ae-84fb-465e6686d76c','-', '1.0.0')))]" - }, - "analyticRuleObject16": { - "analyticRuleVersion16": "1.0.0", - "_analyticRulecontentId16": "c332b840-61e4-462e-a201-0e2d69bad45d", - "analyticRuleId16": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'c332b840-61e4-462e-a201-0e2d69bad45d')]", - "analyticRuleTemplateSpecName16": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('c332b840-61e4-462e-a201-0e2d69bad45d')))]", - "_analyticRulecontentProductId16": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','c332b840-61e4-462e-a201-0e2d69bad45d','-', '1.0.0')))]" - }, - "analyticRuleObject17": { - "analyticRuleVersion17": "1.0.0", - "_analyticRulecontentId17": "5bdc1504-880c-4b30-a39c-7c746535928d", - "analyticRuleId17": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '5bdc1504-880c-4b30-a39c-7c746535928d')]", - "analyticRuleTemplateSpecName17": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('5bdc1504-880c-4b30-a39c-7c746535928d')))]", - "_analyticRulecontentProductId17": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','5bdc1504-880c-4b30-a39c-7c746535928d','-', '1.0.0')))]" - }, - "analyticRuleObject18": { - "analyticRuleVersion18": "1.0.0", - "_analyticRulecontentId18": "47c02e21-3949-4e05-a28e-576cd75ff6f6", - "analyticRuleId18": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '47c02e21-3949-4e05-a28e-576cd75ff6f6')]", - "analyticRuleTemplateSpecName18": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('47c02e21-3949-4e05-a28e-576cd75ff6f6')))]", - "_analyticRulecontentProductId18": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','47c02e21-3949-4e05-a28e-576cd75ff6f6','-', '1.0.0')))]" - }, - "analyticRuleObject19": { - "analyticRuleVersion19": "1.0.0", - "_analyticRulecontentId19": "36fbd4e7-5630-4414-aa42-702a7fdded21", - "analyticRuleId19": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '36fbd4e7-5630-4414-aa42-702a7fdded21')]", - "analyticRuleTemplateSpecName19": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('36fbd4e7-5630-4414-aa42-702a7fdded21')))]", - "_analyticRulecontentProductId19": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','36fbd4e7-5630-4414-aa42-702a7fdded21','-', '1.0.0')))]" - }, - "analyticRuleObject20": { - "analyticRuleVersion20": "1.0.0", - "_analyticRulecontentId20": "2624fc55-0998-4897-bb48-1c6422befce4", - "analyticRuleId20": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '2624fc55-0998-4897-bb48-1c6422befce4')]", - "analyticRuleTemplateSpecName20": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('2624fc55-0998-4897-bb48-1c6422befce4')))]", - "_analyticRulecontentProductId20": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','2624fc55-0998-4897-bb48-1c6422befce4','-', '1.0.0')))]" - }, - "analyticRuleObject21": { - "analyticRuleVersion21": "1.0.0", - "_analyticRulecontentId21": "fa2f7d8a-6726-465a-aa72-6f6e3d4c99d7", - "analyticRuleId21": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'fa2f7d8a-6726-465a-aa72-6f6e3d4c99d7')]", - "analyticRuleTemplateSpecName21": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('fa2f7d8a-6726-465a-aa72-6f6e3d4c99d7')))]", - "_analyticRulecontentProductId21": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','fa2f7d8a-6726-465a-aa72-6f6e3d4c99d7','-', '1.0.0')))]" - }, - "analyticRuleObject22": { - "analyticRuleVersion22": "1.0.0", - "_analyticRulecontentId22": "2a1dc4c2-a8d6-4a0e-8539-9b971c851195", - "analyticRuleId22": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '2a1dc4c2-a8d6-4a0e-8539-9b971c851195')]", - "analyticRuleTemplateSpecName22": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('2a1dc4c2-a8d6-4a0e-8539-9b971c851195')))]", - "_analyticRulecontentProductId22": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','2a1dc4c2-a8d6-4a0e-8539-9b971c851195','-', '1.0.0')))]" - }, - "analyticRuleObject23": { - "analyticRuleVersion23": "1.0.0", - "_analyticRulecontentId23": "174de33b-107b-4cd8-a85d-b4025a35453f", - "analyticRuleId23": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '174de33b-107b-4cd8-a85d-b4025a35453f')]", - "analyticRuleTemplateSpecName23": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('174de33b-107b-4cd8-a85d-b4025a35453f')))]", - "_analyticRulecontentProductId23": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','174de33b-107b-4cd8-a85d-b4025a35453f','-', '1.0.0')))]" - }, - "analyticRuleObject24": { - "analyticRuleVersion24": "1.0.0", - "_analyticRulecontentId24": "12134de5-361b-427c-a1a0-d43f40a593c4", - "analyticRuleId24": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '12134de5-361b-427c-a1a0-d43f40a593c4')]", - "analyticRuleTemplateSpecName24": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('12134de5-361b-427c-a1a0-d43f40a593c4')))]", - "_analyticRulecontentProductId24": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','12134de5-361b-427c-a1a0-d43f40a593c4','-', '1.0.0')))]" - }, - "analyticRuleObject25": { - "analyticRuleVersion25": "1.0.0", - "_analyticRulecontentId25": "3ab04acf-e0e7-4f7c-8995-748ab4c848c2", - "analyticRuleId25": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '3ab04acf-e0e7-4f7c-8995-748ab4c848c2')]", - "analyticRuleTemplateSpecName25": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('3ab04acf-e0e7-4f7c-8995-748ab4c848c2')))]", - "_analyticRulecontentProductId25": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','3ab04acf-e0e7-4f7c-8995-748ab4c848c2','-', '1.0.0')))]" - }, - "analyticRuleObject26": { - "analyticRuleVersion26": "1.0.0", - "_analyticRulecontentId26": "506f4d6b-3864-4bb1-8f75-a13fb066f97a", - "analyticRuleId26": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '506f4d6b-3864-4bb1-8f75-a13fb066f97a')]", - "analyticRuleTemplateSpecName26": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('506f4d6b-3864-4bb1-8f75-a13fb066f97a')))]", - "_analyticRulecontentProductId26": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','506f4d6b-3864-4bb1-8f75-a13fb066f97a','-', '1.0.0')))]" - }, - "analyticRuleObject27": { - "analyticRuleVersion27": "1.0.3", - "_analyticRulecontentId27": "e5f8e196-3544-4a8b-96a9-17c1b6a49710", - "analyticRuleId27": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'e5f8e196-3544-4a8b-96a9-17c1b6a49710')]", - "analyticRuleTemplateSpecName27": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('e5f8e196-3544-4a8b-96a9-17c1b6a49710')))]", - "_analyticRulecontentProductId27": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','e5f8e196-3544-4a8b-96a9-17c1b6a49710','-', '1.0.3')))]" - }, - "analyticRuleObject28": { - "analyticRuleVersion28": "1.0.0", - "_analyticRulecontentId28": "35ab0d58-baab-4154-87ed-fa2f69797e9e", - "analyticRuleId28": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '35ab0d58-baab-4154-87ed-fa2f69797e9e')]", - "analyticRuleTemplateSpecName28": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('35ab0d58-baab-4154-87ed-fa2f69797e9e')))]", - "_analyticRulecontentProductId28": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','35ab0d58-baab-4154-87ed-fa2f69797e9e','-', '1.0.0')))]" - }, - "analyticRuleObject29": { - "analyticRuleVersion29": "1.0.0", - "_analyticRulecontentId29": "d29cc957-0ddb-4d00-8d6f-ad1bb345ff9a", - "analyticRuleId29": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'd29cc957-0ddb-4d00-8d6f-ad1bb345ff9a')]", - "analyticRuleTemplateSpecName29": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('d29cc957-0ddb-4d00-8d6f-ad1bb345ff9a')))]", - "_analyticRulecontentProductId29": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','d29cc957-0ddb-4d00-8d6f-ad1bb345ff9a','-', '1.0.0')))]" - }, - "analyticRuleObject30": { - "analyticRuleVersion30": "1.0.0", - "_analyticRulecontentId30": "450f4e56-5bba-4070-b9d9-9204ba9d777d", - "analyticRuleId30": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '450f4e56-5bba-4070-b9d9-9204ba9d777d')]", - "analyticRuleTemplateSpecName30": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('450f4e56-5bba-4070-b9d9-9204ba9d777d')))]", - "_analyticRulecontentProductId30": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','450f4e56-5bba-4070-b9d9-9204ba9d777d','-', '1.0.0')))]" - }, - "analyticRuleObject31": { - "analyticRuleVersion31": "1.0.2", - "_analyticRulecontentId31": "63aa43c2-e88e-4102-aea5-0432851c541a", - "analyticRuleId31": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '63aa43c2-e88e-4102-aea5-0432851c541a')]", - "analyticRuleTemplateSpecName31": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('63aa43c2-e88e-4102-aea5-0432851c541a')))]", - "_analyticRulecontentProductId31": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','63aa43c2-e88e-4102-aea5-0432851c541a','-', '1.0.2')))]" - }, - "analyticRuleObject32": { - "analyticRuleVersion32": "1.0.0", - "_analyticRulecontentId32": "91a451e3-178f-41b2-9e5d-da97d75b9971", - "analyticRuleId32": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '91a451e3-178f-41b2-9e5d-da97d75b9971')]", - "analyticRuleTemplateSpecName32": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('91a451e3-178f-41b2-9e5d-da97d75b9971')))]", - "_analyticRulecontentProductId32": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','91a451e3-178f-41b2-9e5d-da97d75b9971','-', '1.0.0')))]" - }, - "analyticRuleObject33": { - "analyticRuleVersion33": "1.0.0", - "_analyticRulecontentId33": "32b29155-3fd3-4a9e-a0ca-a67e2593b60b", - "analyticRuleId33": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '32b29155-3fd3-4a9e-a0ca-a67e2593b60b')]", - "analyticRuleTemplateSpecName33": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('32b29155-3fd3-4a9e-a0ca-a67e2593b60b')))]", - "_analyticRulecontentProductId33": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','32b29155-3fd3-4a9e-a0ca-a67e2593b60b','-', '1.0.0')))]" - }, - "analyticRuleObject34": { - "analyticRuleVersion34": "1.0.0", - "_analyticRulecontentId34": "03caa992-477f-4b19-8e2a-8cd58f8f9652", - "analyticRuleId34": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '03caa992-477f-4b19-8e2a-8cd58f8f9652')]", - "analyticRuleTemplateSpecName34": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('03caa992-477f-4b19-8e2a-8cd58f8f9652')))]", - "_analyticRulecontentProductId34": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','03caa992-477f-4b19-8e2a-8cd58f8f9652','-', '1.0.0')))]" - }, - "analyticRuleObject35": { - "analyticRuleVersion35": "1.0.0", - "_analyticRulecontentId35": "7d0d3050-8dac-4b83-bfae-902f7dc0c21c", - "analyticRuleId35": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '7d0d3050-8dac-4b83-bfae-902f7dc0c21c')]", - "analyticRuleTemplateSpecName35": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('7d0d3050-8dac-4b83-bfae-902f7dc0c21c')))]", - "_analyticRulecontentProductId35": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','7d0d3050-8dac-4b83-bfae-902f7dc0c21c','-', '1.0.0')))]" - }, - "analyticRuleObject36": { - "analyticRuleVersion36": "1.0.0", - "_analyticRulecontentId36": "515d0bba-b297-4f83-8280-20ff7f27ecb1", - "analyticRuleId36": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '515d0bba-b297-4f83-8280-20ff7f27ecb1')]", - "analyticRuleTemplateSpecName36": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('515d0bba-b297-4f83-8280-20ff7f27ecb1')))]", - "_analyticRulecontentProductId36": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','515d0bba-b297-4f83-8280-20ff7f27ecb1','-', '1.0.0')))]" - }, - "analyticRuleObject37": { - "analyticRuleVersion37": "1.0.0", - "_analyticRulecontentId37": "4dd31bd5-11a3-4b9c-a7c5-4927ab4f2a77", - "analyticRuleId37": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '4dd31bd5-11a3-4b9c-a7c5-4927ab4f2a77')]", - "analyticRuleTemplateSpecName37": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('4dd31bd5-11a3-4b9c-a7c5-4927ab4f2a77')))]", - "_analyticRulecontentProductId37": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','4dd31bd5-11a3-4b9c-a7c5-4927ab4f2a77','-', '1.0.0')))]" - }, - "analyticRuleObject38": { - "analyticRuleVersion38": "1.0.1", - "_analyticRulecontentId38": "4bd9ce9d-8586-4beb-8fdb-bd018cacbe7d", - "analyticRuleId38": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '4bd9ce9d-8586-4beb-8fdb-bd018cacbe7d')]", - "analyticRuleTemplateSpecName38": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('4bd9ce9d-8586-4beb-8fdb-bd018cacbe7d')))]", - "_analyticRulecontentProductId38": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','4bd9ce9d-8586-4beb-8fdb-bd018cacbe7d','-', '1.0.1')))]" - }, - "analyticRuleObject39": { - "analyticRuleVersion39": "1.0.0", - "_analyticRulecontentId39": "ba9db6b2-3d05-42ae-8aee-3a15bbe29f27", - "analyticRuleId39": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 'ba9db6b2-3d05-42ae-8aee-3a15bbe29f27')]", - "analyticRuleTemplateSpecName39": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('ba9db6b2-3d05-42ae-8aee-3a15bbe29f27')))]", - "_analyticRulecontentProductId39": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','ba9db6b2-3d05-42ae-8aee-3a15bbe29f27','-', '1.0.0')))]" - }, - "analyticRuleObject40": { - "analyticRuleVersion40": "1.0.0", - "_analyticRulecontentId40": "28c63a44-2d35-48b7-831b-3ed24af17c7e", - "analyticRuleId40": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', '28c63a44-2d35-48b7-831b-3ed24af17c7e')]", - "analyticRuleTemplateSpecName40": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring('28c63a44-2d35-48b7-831b-3ed24af17c7e')))]", - "_analyticRulecontentProductId40": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-','28c63a44-2d35-48b7-831b-3ed24af17c7e','-', '1.0.0')))]" - }, - "huntingQueryObject1": { - "huntingQueryVersion1": "1.1.0", - "_huntingQuerycontentId1": "cdac93ef-56c0-45bf-9e7f-9cbf0ad06808", - "huntingQueryTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cdac93ef-56c0-45bf-9e7f-9cbf0ad06808')))]" - }, - "huntingQueryObject2": { - "huntingQueryVersion2": "1.0.0", - "_huntingQuerycontentId2": "4d11f63f-5b64-416e-8d77-266e4c6d382e", - "huntingQueryTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4d11f63f-5b64-416e-8d77-266e4c6d382e')))]" - }, - "huntingQueryObject3": { - "huntingQueryVersion3": "1.0.0", - "_huntingQuerycontentId3": "d7b7dcad-d806-4a61-b8fc-0d7c9c45bdec", - "huntingQueryTemplateSpecName3": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d7b7dcad-d806-4a61-b8fc-0d7c9c45bdec')))]" - }, - "huntingQueryObject4": { - "huntingQueryVersion4": "1.0.0", - "_huntingQuerycontentId4": "fe9edc77-1b6c-4f1e-a223-64b580b50187", - "huntingQueryTemplateSpecName4": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('fe9edc77-1b6c-4f1e-a223-64b580b50187')))]" - }, - "huntingQueryObject5": { - "huntingQueryVersion5": "1.0.0", - "_huntingQuerycontentId5": "147c4c0a-7241-4ce9-9b71-0aecb8a2b59f", - "huntingQueryTemplateSpecName5": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('147c4c0a-7241-4ce9-9b71-0aecb8a2b59f')))]" - }, - "huntingQueryObject6": { - "huntingQueryVersion6": "1.0.0", - "_huntingQuerycontentId6": "8fe88892-3a55-4220-9141-939a8e7a15c5", - "huntingQueryTemplateSpecName6": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8fe88892-3a55-4220-9141-939a8e7a15c5')))]" - }, - "huntingQueryObject7": { - "huntingQueryVersion7": "1.0.0", - "_huntingQuerycontentId7": "e7791695-c103-4d20-a75a-53e90788616b", - "huntingQueryTemplateSpecName7": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e7791695-c103-4d20-a75a-53e90788616b')))]" - }, - "huntingQueryObject8": { - "huntingQueryVersion8": "1.0.0", - "_huntingQuerycontentId8": "846bf25e-3d2d-4122-9b60-adfadd2fc616", - "huntingQueryTemplateSpecName8": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('846bf25e-3d2d-4122-9b60-adfadd2fc616')))]" - }, - "huntingQueryObject9": { - "huntingQueryVersion9": "1.0.0", - "_huntingQuerycontentId9": "1850a459-b009-43d0-a575-8284b737eef8", - "huntingQueryTemplateSpecName9": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('1850a459-b009-43d0-a575-8284b737eef8')))]" - }, - "huntingQueryObject10": { - "huntingQueryVersion10": "1.0.0", - "_huntingQuerycontentId10": "d6991ef1-b225-4780-b6a6-cfe9b5278f5e", - "huntingQueryTemplateSpecName10": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d6991ef1-b225-4780-b6a6-cfe9b5278f5e')))]" - }, - "huntingQueryObject11": { - "huntingQueryVersion11": "1.0.0", - "_huntingQuerycontentId11": "4713d763-122d-419c-bf6f-bdef111cd8e2", - "huntingQueryTemplateSpecName11": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4713d763-122d-419c-bf6f-bdef111cd8e2')))]" - }, - "huntingQueryObject12": { - "huntingQueryVersion12": "1.0.0", - "_huntingQuerycontentId12": "b3470e40-39ae-4c28-9282-440038f6f964", - "huntingQueryTemplateSpecName12": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b3470e40-39ae-4c28-9282-440038f6f964')))]" - }, - "huntingQueryObject13": { - "huntingQueryVersion13": "1.0.0", - "_huntingQuerycontentId13": "a18e8bcf-e05d-4e45-bc6e-2c5004729fbd", - "huntingQueryTemplateSpecName13": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a18e8bcf-e05d-4e45-bc6e-2c5004729fbd')))]" - }, - "huntingQueryObject14": { - "huntingQueryVersion14": "1.1.1", - "_huntingQuerycontentId14": "cdac93ef-56c0-45bf-9e7f-9cbf0ad034234", - "huntingQueryTemplateSpecName14": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cdac93ef-56c0-45bf-9e7f-9cbf0ad034234')))]" - }, - "huntingQueryObject15": { - "huntingQueryVersion15": "1.0.0", - "_huntingQuerycontentId15": "f78255b6-8f91-4cf3-a25c-e1144b7b5425", - "huntingQueryTemplateSpecName15": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f78255b6-8f91-4cf3-a25c-e1144b7b5425')))]" - }, - "huntingQueryObject16": { - "huntingQueryVersion16": "1.0.0", - "_huntingQuerycontentId16": "76c14475-9a22-4cc1-922c-437d7f614a36", - "huntingQueryTemplateSpecName16": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('76c14475-9a22-4cc1-922c-437d7f614a36')))]" - }, - "huntingQueryObject17": { - "huntingQueryVersion17": "1.0.0", - "_huntingQuerycontentId17": "89b31213-4350-4730-8d27-26667ce53894", - "huntingQueryTemplateSpecName17": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('89b31213-4350-4730-8d27-26667ce53894')))]" - }, - "huntingQueryObject18": { - "huntingQueryVersion18": "1.0.0", - "_huntingQuerycontentId18": "79f9bb6b-6d31-412e-b3bc-6e5ad1303112", - "huntingQueryTemplateSpecName18": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('79f9bb6b-6d31-412e-b3bc-6e5ad1303112')))]" - }, - "huntingQueryObject19": { - "huntingQueryVersion19": "1.0.0", - "_huntingQuerycontentId19": "0b985ed8-aacd-41ba-9b17-489be9224159", - "huntingQueryTemplateSpecName19": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0b985ed8-aacd-41ba-9b17-489be9224159')))]" - }, - "huntingQueryObject20": { - "huntingQueryVersion20": "1.0.0", - "_huntingQuerycontentId20": "6284b962-ab0d-46d8-a47f-1eb1ac1be463", - "huntingQueryTemplateSpecName20": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6284b962-ab0d-46d8-a47f-1eb1ac1be463')))]" - }, - "huntingQueryObject21": { - "huntingQueryVersion21": "1.0.0", - "_huntingQuerycontentId21": "abf42310-51c7-4d7f-98d2-e5af09859aab", - "huntingQueryTemplateSpecName21": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('abf42310-51c7-4d7f-98d2-e5af09859aab')))]" - }, - "huntingQueryObject22": { - "huntingQueryVersion22": "1.0.0", - "_huntingQuerycontentId22": "63ecff0f-3a86-468b-8c9e-a7a88fe33ebb", - "huntingQueryTemplateSpecName22": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('63ecff0f-3a86-468b-8c9e-a7a88fe33ebb')))]" - }, - "huntingQueryObject23": { - "huntingQueryVersion23": "1.0.0", - "_huntingQuerycontentId23": "b1f8aac2-766d-47ec-8787-84bc7692ff77", - "huntingQueryTemplateSpecName23": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b1f8aac2-766d-47ec-8787-84bc7692ff77')))]" - }, - "huntingQueryObject24": { - "huntingQueryVersion24": "1.0.0", - "_huntingQuerycontentId24": "54ea2379-28e7-48e1-8dfd-aaf8fb1331ba", - "huntingQueryTemplateSpecName24": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('54ea2379-28e7-48e1-8dfd-aaf8fb1331ba')))]" - }, - "huntingQueryObject25": { - "huntingQueryVersion25": "1.0.2", - "_huntingQuerycontentId25": "cdac93ef-56c0-45bf-9e7f-9cbf0ad06567", - "huntingQueryTemplateSpecName25": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cdac93ef-56c0-45bf-9e7f-9cbf0ad06567')))]" - }, - "huntingQueryObject26": { - "huntingQueryVersion26": "1.0.0", - "_huntingQuerycontentId26": "fa2f7d8a-6726-465a-aa72-6f6e3d4c99d7", - "huntingQueryTemplateSpecName26": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('fa2f7d8a-6726-465a-aa72-6f6e3d4c99d7')))]" - }, - "huntingQueryObject27": { - "huntingQueryVersion27": "1.0.0", - "_huntingQuerycontentId27": "29683151-e15d-4c0c-845b-892be89bf080", - "huntingQueryTemplateSpecName27": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('29683151-e15d-4c0c-845b-892be89bf080')))]" - }, - "huntingQueryObject28": { - "huntingQueryVersion28": "1.0.0", - "_huntingQuerycontentId28": "518e6938-10ef-4165-af19-82f1287141bc", - "huntingQueryTemplateSpecName28": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('518e6938-10ef-4165-af19-82f1287141bc')))]" - }, - "huntingQueryObject29": { - "huntingQueryVersion29": "1.0.0", - "_huntingQuerycontentId29": "b6392f39-a1f4-4ec8-8689-4cb9d28c295a", - "huntingQueryTemplateSpecName29": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b6392f39-a1f4-4ec8-8689-4cb9d28c295a')))]" - }, - "huntingQueryObject30": { - "huntingQueryVersion30": "1.0.0", - "_huntingQuerycontentId30": "16eda414-1550-4cdc-8512-0769901d3f05", - "huntingQueryTemplateSpecName30": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('16eda414-1550-4cdc-8512-0769901d3f05')))]" - }, - "huntingQueryObject31": { - "huntingQueryVersion31": "1.0.0", - "_huntingQuerycontentId31": "7fbf7687-5ded-4c39-9fe9-f4f6aa6fc422", - "huntingQueryTemplateSpecName31": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('7fbf7687-5ded-4c39-9fe9-f4f6aa6fc422')))]" - }, - "huntingQueryObject32": { - "huntingQueryVersion32": "1.0.0", - "_huntingQuerycontentId32": "eb560458-d96f-4c68-acbb-14b3c706ebe7", - "huntingQueryTemplateSpecName32": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('eb560458-d96f-4c68-acbb-14b3c706ebe7')))]" - }, - "huntingQueryObject33": { - "huntingQueryVersion33": "1.0.0", - "_huntingQuerycontentId33": "14d47b2a-62b3-4c7b-819c-699e264c581d", - "huntingQueryTemplateSpecName33": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('14d47b2a-62b3-4c7b-819c-699e264c581d')))]" - }, - "huntingQueryObject34": { - "huntingQueryVersion34": "1.0.0", - "_huntingQuerycontentId34": "62d6a2e6-4583-4538-a476-a5b3c672657b", - "huntingQueryTemplateSpecName34": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('62d6a2e6-4583-4538-a476-a5b3c672657b')))]" - }, - "huntingQueryObject35": { - "huntingQueryVersion35": "1.0.0", - "_huntingQuerycontentId35": "79755078-7be8-4f13-a8e7-1ce87cb7d5c0", - "huntingQueryTemplateSpecName35": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('79755078-7be8-4f13-a8e7-1ce87cb7d5c0')))]" - }, - "huntingQueryObject36": { - "huntingQueryVersion36": "1.0.0", - "_huntingQuerycontentId36": "5971f2e7-1bb2-4170-aa7a-577ed8a45c72", - "huntingQueryTemplateSpecName36": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('5971f2e7-1bb2-4170-aa7a-577ed8a45c72')))]" - }, - "huntingQueryObject37": { - "huntingQueryVersion37": "1.1.0", - "_huntingQuerycontentId37": "3dbaa9c1-5e69-40a9-bacb-8cbdb4a0e6cb", - "huntingQueryTemplateSpecName37": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3dbaa9c1-5e69-40a9-bacb-8cbdb4a0e6cb')))]" - }, - "huntingQueryObject38": { - "huntingQueryVersion38": "1.1.0", - "_huntingQuerycontentId38": "23b646e8-b885-4cde-a9ab-1e35fa5e37a7", - "huntingQueryTemplateSpecName38": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('23b646e8-b885-4cde-a9ab-1e35fa5e37a7')))]" - }, - "huntingQueryObject39": { - "huntingQueryVersion39": "1.1.0", - "_huntingQuerycontentId39": "ba97d6b9-f82e-4917-9c07-4c0028bbd32d", - "huntingQueryTemplateSpecName39": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ba97d6b9-f82e-4917-9c07-4c0028bbd32d')))]" - }, - "huntingQueryObject40": { - "huntingQueryVersion40": "1.0.0", - "_huntingQuerycontentId40": "4c021477-38f0-409e-869b-11056fcd47f1", - "huntingQueryTemplateSpecName40": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4c021477-38f0-409e-869b-11056fcd47f1')))]" - }, - "huntingQueryObject41": { - "huntingQueryVersion41": "1.0.0", - "_huntingQuerycontentId41": "a8c66aec-2000-45d8-8481-36aaa17f1033", - "huntingQueryTemplateSpecName41": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a8c66aec-2000-45d8-8481-36aaa17f1033')))]" - }, - "huntingQueryObject42": { - "huntingQueryVersion42": "1.0.1", - "_huntingQuerycontentId42": "08113d6f-3c95-45ba-94df-4fdd7f35d944", - "huntingQueryTemplateSpecName42": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('08113d6f-3c95-45ba-94df-4fdd7f35d944')))]" - }, - "huntingQueryObject43": { - "huntingQueryVersion43": "1.0.0", - "_huntingQuerycontentId43": "1b56831b-3713-4c9c-ac75-a7e330623076", - "huntingQueryTemplateSpecName43": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('1b56831b-3713-4c9c-ac75-a7e330623076')))]" - }, - "huntingQueryObject44": { - "huntingQueryVersion44": "1.0.0", - "_huntingQuerycontentId44": "ba1a91ad-1f99-4386-b191-06a76ef213f8", - "huntingQueryTemplateSpecName44": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ba1a91ad-1f99-4386-b191-06a76ef213f8')))]" - }, - "huntingQueryObject45": { - "huntingQueryVersion45": "1.0.0", - "_huntingQuerycontentId45": "242561f3-568a-4864-be15-fbc85b2e77f9", - "huntingQueryTemplateSpecName45": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('242561f3-568a-4864-be15-fbc85b2e77f9')))]" - }, - "huntingQueryObject46": { - "huntingQueryVersion46": "1.0.0", - "_huntingQuerycontentId46": "ff56a21d-fc95-4c11-8f9d-cc59c48cd4e6", - "huntingQueryTemplateSpecName46": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ff56a21d-fc95-4c11-8f9d-cc59c48cd4e6')))]" - }, - "huntingQueryObject47": { - "huntingQueryVersion47": "1.0.0", - "_huntingQuerycontentId47": "0d5ae69d-bdb2-404d-8c8c-50ebe68b6a5b", - "huntingQueryTemplateSpecName47": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0d5ae69d-bdb2-404d-8c8c-50ebe68b6a5b')))]" - }, - "huntingQueryObject48": { - "huntingQueryVersion48": "1.0.0", - "_huntingQuerycontentId48": "e55e178e-48ba-4313-918a-2d3e16a95441", - "huntingQueryTemplateSpecName48": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e55e178e-48ba-4313-918a-2d3e16a95441')))]" - }, - "huntingQueryObject49": { - "huntingQueryVersion49": "1.0.0", - "_huntingQuerycontentId49": "bc2d8214-afb6-4876-b210-25b69325b9b2", - "huntingQueryTemplateSpecName49": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('bc2d8214-afb6-4876-b210-25b69325b9b2')))]" - }, - "huntingQueryObject50": { - "huntingQueryVersion50": "1.0.0", - "_huntingQuerycontentId50": "712ffdd8-ddce-4372-85dd-063029b418cf", - "huntingQueryTemplateSpecName50": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('712ffdd8-ddce-4372-85dd-063029b418cf')))]" - }, - "huntingQueryObject51": { - "huntingQueryVersion51": "1.0.0", - "_huntingQuerycontentId51": "81ede5df-2ec3-40a5-9dff-1fe6a841079d", - "huntingQueryTemplateSpecName51": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('81ede5df-2ec3-40a5-9dff-1fe6a841079d')))]" - }, - "huntingQueryObject52": { - "huntingQueryVersion52": "1.0.0", - "_huntingQuerycontentId52": "63c799bc-7567-4e4d-97be-e143fcfaa333", - "huntingQueryTemplateSpecName52": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('63c799bc-7567-4e4d-97be-e143fcfaa333')))]" - }, - "huntingQueryObject53": { - "huntingQueryVersion53": "1.0.0", - "_huntingQuerycontentId53": "deb4b2c6-c10e-4044-8cf4-84243e40db73", - "huntingQueryTemplateSpecName53": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('deb4b2c6-c10e-4044-8cf4-84243e40db73')))]" - }, - "huntingQueryObject54": { - "huntingQueryVersion54": "1.0.0", - "_huntingQuerycontentId54": "92b76a34-502e-4a53-93ec-9fc37c3b358c", - "huntingQueryTemplateSpecName54": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('92b76a34-502e-4a53-93ec-9fc37c3b358c')))]" - }, - "huntingQueryObject55": { - "huntingQueryVersion55": "1.1.0", - "_huntingQuerycontentId55": "af183f01-6d98-4fca-8ca4-63577b78a26e", - "huntingQueryTemplateSpecName55": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('af183f01-6d98-4fca-8ca4-63577b78a26e')))]" - }, - "huntingQueryObject56": { - "huntingQueryVersion56": "1.1.0", - "_huntingQuerycontentId56": "530ef5e4-7ee4-4d70-a8e2-a06459605c02", - "huntingQueryTemplateSpecName56": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('530ef5e4-7ee4-4d70-a8e2-a06459605c02')))]" - }, - "huntingQueryObject57": { - "huntingQueryVersion57": "1.1.0", - "_huntingQuerycontentId57": "db9789ab-0636-4ea6-b779-1b72b4b64aac", - "huntingQueryTemplateSpecName57": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('db9789ab-0636-4ea6-b779-1b72b4b64aac')))]" - }, - "huntingQueryObject58": { - "huntingQueryVersion58": "1.0.0", - "_huntingQuerycontentId58": "86c7d21b-2081-419d-bc2e-7bc909d61eef", - "huntingQueryTemplateSpecName58": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('86c7d21b-2081-419d-bc2e-7bc909d61eef')))]" - }, - "huntingQueryObject59": { - "huntingQueryVersion59": "1.0.0", - "_huntingQuerycontentId59": "6f606826-b995-4a8d-8c2c-ee08e3d1194a", - "huntingQueryTemplateSpecName59": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6f606826-b995-4a8d-8c2c-ee08e3d1194a')))]" - }, - "huntingQueryObject60": { - "huntingQueryVersion60": "1.1.0", - "_huntingQuerycontentId60": "b8330f6e-fc47-40ce-b225-5d3b055c6446", - "huntingQueryTemplateSpecName60": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b8330f6e-fc47-40ce-b225-5d3b055c6446')))]" - }, - "huntingQueryObject61": { - "huntingQueryVersion61": "1.0.0", - "_huntingQuerycontentId61": "7d7a3d3f-22db-4cdf-ba67-c57215777a3c", - "huntingQueryTemplateSpecName61": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('7d7a3d3f-22db-4cdf-ba67-c57215777a3c')))]" - }, - "huntingQueryObject62": { - "huntingQueryVersion62": "1.0.0", - "_huntingQuerycontentId62": "eb0e4edb-f423-49f8-a02a-4ededdd30dd5", - "huntingQueryTemplateSpecName62": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('eb0e4edb-f423-49f8-a02a-4ededdd30dd5')))]" - }, - "huntingQueryObject63": { - "huntingQueryVersion63": "1.0.0", - "_huntingQuerycontentId63": "0717b136-a1ef-4af0-a911-e189d0064099", - "huntingQueryTemplateSpecName63": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0717b136-a1ef-4af0-a911-e189d0064099')))]" - }, - "huntingQueryObject64": { - "huntingQueryVersion64": "1.0.0", - "_huntingQuerycontentId64": "0955f477-6471-468a-9b13-fc5fa96d7db2", - "huntingQueryTemplateSpecName64": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0955f477-6471-468a-9b13-fc5fa96d7db2')))]" - }, - "huntingQueryObject65": { - "huntingQueryVersion65": "1.0.0", - "_huntingQuerycontentId65": "85dea577-1c76-44ff-8cad-b47182874ddb", - "huntingQueryTemplateSpecName65": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('85dea577-1c76-44ff-8cad-b47182874ddb')))]" - }, - "huntingQueryObject66": { - "huntingQueryVersion66": "1.0.0", - "_huntingQuerycontentId66": "da745698-da8a-40c5-b527-2e9328c2cefe", - "huntingQueryTemplateSpecName66": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('da745698-da8a-40c5-b527-2e9328c2cefe')))]" - }, - "huntingQueryObject67": { - "huntingQueryVersion67": "1.0.0", - "_huntingQuerycontentId67": "c1cac5ad-7aaa-40de-89aa-954f5a33a578", - "huntingQueryTemplateSpecName67": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('c1cac5ad-7aaa-40de-89aa-954f5a33a578')))]" - }, - "huntingQueryObject68": { - "huntingQueryVersion68": "1.0.0", - "_huntingQuerycontentId68": "8e9a96dd-f85d-4f5e-a65f-dcc55d6d9935", - "huntingQueryTemplateSpecName68": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8e9a96dd-f85d-4f5e-a65f-dcc55d6d9935')))]" - }, - "huntingQueryObject69": { - "huntingQueryVersion69": "1.0.0", - "_huntingQuerycontentId69": "11cc0e3f-9718-4ab5-be7b-d9c036ed6b0a", - "huntingQueryTemplateSpecName69": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('11cc0e3f-9718-4ab5-be7b-d9c036ed6b0a')))]" - }, - "huntingQueryObject70": { - "huntingQueryVersion70": "1.0.0", - "_huntingQuerycontentId70": "e6259b03-622e-4e11-9c54-94987dad7c14", - "huntingQueryTemplateSpecName70": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e6259b03-622e-4e11-9c54-94987dad7c14')))]" - }, - "huntingQueryObject71": { - "huntingQueryVersion71": "1.0.0", - "_huntingQuerycontentId71": "dd4a480b-aa24-4b62-b1f3-f538d8abbdfb", - "huntingQueryTemplateSpecName71": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('dd4a480b-aa24-4b62-b1f3-f538d8abbdfb')))]" - }, - "huntingQueryObject72": { - "huntingQueryVersion72": "1.0.0", - "_huntingQuerycontentId72": "fb46ca1b-0b46-4d9c-b3b3-2f8f807e9f72", - "huntingQueryTemplateSpecName72": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('fb46ca1b-0b46-4d9c-b3b3-2f8f807e9f72')))]" - }, - "huntingQueryObject73": { - "huntingQueryVersion73": "1.0.0", - "_huntingQuerycontentId73": "0da830c3-5d0e-4b98-bfa1-d5131a8d0ebe", - "huntingQueryTemplateSpecName73": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0da830c3-5d0e-4b98-bfa1-d5131a8d0ebe')))]" - }, - "huntingQueryObject74": { - "huntingQueryVersion74": "1.0.0", - "_huntingQuerycontentId74": "57f95ba7-938d-4a76-b411-c01034c0d167", - "huntingQueryTemplateSpecName74": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('57f95ba7-938d-4a76-b411-c01034c0d167')))]" - }, - "huntingQueryObject75": { - "huntingQueryVersion75": "1.0.0", - "_huntingQuerycontentId75": "54569b06-47fc-41ae-9b00-f7d9b61337b6", - "huntingQueryTemplateSpecName75": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('54569b06-47fc-41ae-9b00-f7d9b61337b6')))]" - }, - "huntingQueryObject76": { - "huntingQueryVersion76": "1.0.0", - "_huntingQuerycontentId76": "430a9c0d-f3ce-46a3-a994-92b3ada0d1b2", - "huntingQueryTemplateSpecName76": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('430a9c0d-f3ce-46a3-a994-92b3ada0d1b2')))]" - }, - "huntingQueryObject77": { - "huntingQueryVersion77": "1.0.0", - "_huntingQuerycontentId77": "f840db5b-87c9-43c8-a8c3-5b6b83838cd4", - "huntingQueryTemplateSpecName77": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f840db5b-87c9-43c8-a8c3-5b6b83838cd4')))]" - }, - "huntingQueryObject78": { - "huntingQueryVersion78": "1.0.0", - "_huntingQuerycontentId78": "b95994d1-1008-4c42-a74f-9f2967e39ed6", - "huntingQueryTemplateSpecName78": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b95994d1-1008-4c42-a74f-9f2967e39ed6')))]" - }, - "huntingQueryObject79": { - "huntingQueryVersion79": "1.0.0", - "_huntingQuerycontentId79": "a96c1571-1f7d-48dc-8287-7df5a5f0d987", - "huntingQueryTemplateSpecName79": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a96c1571-1f7d-48dc-8287-7df5a5f0d987')))]" - }, - "huntingQueryObject80": { - "huntingQueryVersion80": "1.0.0", - "_huntingQuerycontentId80": "2c6e7f75-d83c-4344-afdc-83335fe550e6", - "huntingQueryTemplateSpecName80": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2c6e7f75-d83c-4344-afdc-83335fe550e6')))]" - }, - "huntingQueryObject81": { - "huntingQueryVersion81": "1.0.0", - "_huntingQuerycontentId81": "38d6e2fb-a804-4170-8d32-d251ecd6bcd2", - "huntingQueryTemplateSpecName81": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('38d6e2fb-a804-4170-8d32-d251ecd6bcd2')))]" - }, - "huntingQueryObject82": { - "huntingQueryVersion82": "1.0.0", - "_huntingQuerycontentId82": "1c51e10e-7f77-40bc-bd37-6aa55cdf94d6", - "huntingQueryTemplateSpecName82": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('1c51e10e-7f77-40bc-bd37-6aa55cdf94d6')))]" - }, - "huntingQueryObject83": { - "huntingQueryVersion83": "1.0.0", - "_huntingQuerycontentId83": "da7b973a-0045-4fd6-9161-269369336d24", - "huntingQueryTemplateSpecName83": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('da7b973a-0045-4fd6-9161-269369336d24')))]" - }, - "huntingQueryObject84": { - "huntingQueryVersion84": "1.0.0", - "_huntingQuerycontentId84": "6b478186-da3b-4d71-beaa-aa5b42908499", - "huntingQueryTemplateSpecName84": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6b478186-da3b-4d71-beaa-aa5b42908499')))]" - }, - "huntingQueryObject85": { - "huntingQueryVersion85": "1.0.0", - "_huntingQuerycontentId85": "da932998-81dd-4be4-963c-f4890cb4192e", - "huntingQueryTemplateSpecName85": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('da932998-81dd-4be4-963c-f4890cb4192e')))]" - }, - "huntingQueryObject86": { - "huntingQueryVersion86": "1.0.0", - "_huntingQuerycontentId86": "b2beec6a-2c1c-4319-a191-e70c2ee42857", - "huntingQueryTemplateSpecName86": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b2beec6a-2c1c-4319-a191-e70c2ee42857')))]" - }, - "huntingQueryObject87": { - "huntingQueryVersion87": "1.0.0", - "_huntingQuerycontentId87": "45c47684-6650-44b6-81c0-951522d0c435", - "huntingQueryTemplateSpecName87": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('45c47684-6650-44b6-81c0-951522d0c435')))]" - }, - "huntingQueryObject88": { - "huntingQueryVersion88": "1.0.0", - "_huntingQuerycontentId88": "99e1246e-c1a9-4794-8e96-eb906c73c529", - "huntingQueryTemplateSpecName88": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('99e1246e-c1a9-4794-8e96-eb906c73c529')))]" - }, - "huntingQueryObject89": { - "huntingQueryVersion89": "1.0.0", - "_huntingQuerycontentId89": "12225f50-9d41-4b78-8269-cc127d98654c", - "huntingQueryTemplateSpecName89": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('12225f50-9d41-4b78-8269-cc127d98654c')))]" - }, - "huntingQueryObject90": { - "huntingQueryVersion90": "1.0.0", - "_huntingQuerycontentId90": "cadf6e78-2a9a-4fb5-b788-30a592d699d3", - "huntingQueryTemplateSpecName90": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cadf6e78-2a9a-4fb5-b788-30a592d699d3')))]" - }, - "huntingQueryObject91": { - "huntingQueryVersion91": "1.0.0", - "_huntingQuerycontentId91": "95b0c7ed-2853-4343-80a9-ab076cf31e51", - "huntingQueryTemplateSpecName91": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('95b0c7ed-2853-4343-80a9-ab076cf31e51')))]" - }, - "huntingQueryObject92": { - "huntingQueryVersion92": "1.0.0", - "_huntingQuerycontentId92": "439f817c-845c-4dda-a8d9-5c1f6831cee9", - "huntingQueryTemplateSpecName92": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('439f817c-845c-4dda-a8d9-5c1f6831cee9')))]" - }, - "huntingQueryObject93": { - "huntingQueryVersion93": "1.0.0", - "_huntingQuerycontentId93": "07c85687-6dee-4266-9345-1e34de85d989", - "huntingQueryTemplateSpecName93": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('07c85687-6dee-4266-9345-1e34de85d989')))]" - }, - "huntingQueryObject94": { - "huntingQueryVersion94": "1.0.0", - "_huntingQuerycontentId94": "23dbd58b-23ce-42ae-b4d1-0dfdd35871ea", - "huntingQueryTemplateSpecName94": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('23dbd58b-23ce-42ae-b4d1-0dfdd35871ea')))]" - }, - "huntingQueryObject95": { - "huntingQueryVersion95": "1.0.0", - "_huntingQuerycontentId95": "817043be-4b30-4e66-a742-8f601a78b08f", - "huntingQueryTemplateSpecName95": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('817043be-4b30-4e66-a742-8f601a78b08f')))]" - }, - "huntingQueryObject96": { - "huntingQueryVersion96": "1.0.0", - "_huntingQuerycontentId96": "a924de5a-89ce-43c7-8adc-b130e5f1924c", - "huntingQueryTemplateSpecName96": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a924de5a-89ce-43c7-8adc-b130e5f1924c')))]" - }, - "huntingQueryObject97": { - "huntingQueryVersion97": "1.0.0", - "_huntingQuerycontentId97": "2de2de5d-87a3-4e13-9b97-5f42e44d0954", - "huntingQueryTemplateSpecName97": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2de2de5d-87a3-4e13-9b97-5f42e44d0954')))]" - }, - "huntingQueryObject98": { - "huntingQueryVersion98": "1.1.0", - "_huntingQuerycontentId98": "e1dbe1d2-785a-4ecd-a1c0-233fc0e990bc", - "huntingQueryTemplateSpecName98": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e1dbe1d2-785a-4ecd-a1c0-233fc0e990bc')))]" - }, - "huntingQueryObject99": { - "huntingQueryVersion99": "1.1.0", - "_huntingQuerycontentId99": "b3a4b803-06f6-46d8-9220-b3a53e85ce4f", - "huntingQueryTemplateSpecName99": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b3a4b803-06f6-46d8-9220-b3a53e85ce4f')))]" - }, - "huntingQueryObject100": { - "huntingQueryVersion100": "1.1.0", - "_huntingQuerycontentId100": "db79eb5a-785a-400a-a7ef-7285dde8e116", - "huntingQueryTemplateSpecName100": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('db79eb5a-785a-400a-a7ef-7285dde8e116')))]" - }, - "huntingQueryObject101": { - "huntingQueryVersion101": "1.1.0", - "_huntingQuerycontentId101": "15d255f7-57a6-4b23-bd89-376930d3a305", - "huntingQueryTemplateSpecName101": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('15d255f7-57a6-4b23-bd89-376930d3a305')))]" - }, - "huntingQueryObject102": { - "huntingQueryVersion102": "1.0.0", - "_huntingQuerycontentId102": "ef29d6b6-9192-46aa-b16a-082c2da2f78f", - "huntingQueryTemplateSpecName102": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ef29d6b6-9192-46aa-b16a-082c2da2f78f')))]" - }, - "huntingQueryObject103": { - "huntingQueryVersion103": "1.0.0", - "_huntingQuerycontentId103": "af541ae2-9bb4-4737-a8ea-4fa261bc3866", - "huntingQueryTemplateSpecName103": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('af541ae2-9bb4-4737-a8ea-4fa261bc3866')))]" - }, - "huntingQueryObject104": { - "huntingQueryVersion104": "1.0.0", - "_huntingQuerycontentId104": "a2a7bede-cf55-47ed-9aeb-7b4c97079f4f", - "huntingQueryTemplateSpecName104": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a2a7bede-cf55-47ed-9aeb-7b4c97079f4f')))]" - }, - "huntingQueryObject105": { - "huntingQueryVersion105": "1.1.0", - "_huntingQuerycontentId105": "0d16e85e-82ec-460a-bf48-e90164464f7c", - "huntingQueryTemplateSpecName105": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0d16e85e-82ec-460a-bf48-e90164464f7c')))]" - }, - "huntingQueryObject106": { - "huntingQueryVersion106": "1.0.0", - "_huntingQuerycontentId106": "c6bbcac2-a6b8-4537-a32a-6f1367e6aa44", - "huntingQueryTemplateSpecName106": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('c6bbcac2-a6b8-4537-a32a-6f1367e6aa44')))]" - }, - "huntingQueryObject107": { - "huntingQueryVersion107": "1.1.0", - "_huntingQuerycontentId107": "a370ad6f-e7fa-4740-ab9e-cb5560e3599f", - "huntingQueryTemplateSpecName107": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a370ad6f-e7fa-4740-ab9e-cb5560e3599f')))]" - }, - "huntingQueryObject108": { - "huntingQueryVersion108": "1.0.0", - "_huntingQuerycontentId108": "c3a6f568-8200-4f2f-88b8-a4df5eb54ba9", - "huntingQueryTemplateSpecName108": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('c3a6f568-8200-4f2f-88b8-a4df5eb54ba9')))]" - }, - "huntingQueryObject109": { - "huntingQueryVersion109": "1.0.0", - "_huntingQuerycontentId109": "12eeae9e-8f0a-4b8c-b437-31c998f15af8", - "huntingQueryTemplateSpecName109": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('12eeae9e-8f0a-4b8c-b437-31c998f15af8')))]" - }, - "huntingQueryObject110": { - "huntingQueryVersion110": "1.0.0", - "_huntingQuerycontentId110": "18fee342-8209-4270-9198-711646867e71", - "huntingQueryTemplateSpecName110": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('18fee342-8209-4270-9198-711646867e71')))]" - }, - "huntingQueryObject111": { - "huntingQueryVersion111": "1.0.0", - "_huntingQuerycontentId111": "9cb4a6eb-c7ae-44ac-b12b-c16ec63da385", - "huntingQueryTemplateSpecName111": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9cb4a6eb-c7ae-44ac-b12b-c16ec63da385')))]" - }, - "huntingQueryObject112": { - "huntingQueryVersion112": "1.0.0", - "_huntingQuerycontentId112": "28c79831-120c-4028-8a2b-4e4ae3082148", - "huntingQueryTemplateSpecName112": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('28c79831-120c-4028-8a2b-4e4ae3082148')))]" - }, - "huntingQueryObject113": { - "huntingQueryVersion113": "1.0.0", - "_huntingQuerycontentId113": "f304b75a-a2a0-45fb-814c-40b6e08211f0", - "huntingQueryTemplateSpecName113": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f304b75a-a2a0-45fb-814c-40b6e08211f0')))]" - }, - "huntingQueryObject114": { - "huntingQueryVersion114": "1.0.0", - "_huntingQuerycontentId114": "b3470167-2608-44a2-bd2f-8ebad88a27d5", - "huntingQueryTemplateSpecName114": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b3470167-2608-44a2-bd2f-8ebad88a27d5')))]" - }, - "huntingQueryObject115": { - "huntingQueryVersion115": "1.0.0", - "_huntingQuerycontentId115": "3cb281a9-34e5-4864-8303-6c07e096818b", - "huntingQueryTemplateSpecName115": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3cb281a9-34e5-4864-8303-6c07e096818b')))]" - }, - "huntingQueryObject116": { - "huntingQueryVersion116": "1.0.0", - "_huntingQuerycontentId116": "b8eb3e2e-0f95-458e-b6d1-fe36a0ee8310", - "huntingQueryTemplateSpecName116": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b8eb3e2e-0f95-458e-b6d1-fe36a0ee8310')))]" - }, - "huntingQueryObject117": { - "huntingQueryVersion117": "1.0.0", - "_huntingQuerycontentId117": "dc230eec-acc2-482f-8601-25125c8ff122", - "huntingQueryTemplateSpecName117": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('dc230eec-acc2-482f-8601-25125c8ff122')))]" - }, - "huntingQueryObject118": { - "huntingQueryVersion118": "1.0.0", - "_huntingQuerycontentId118": "489ad959-48eb-4c34-bed6-764cfd39214d", - "huntingQueryTemplateSpecName118": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('489ad959-48eb-4c34-bed6-764cfd39214d')))]" - }, - "huntingQueryObject119": { - "huntingQueryVersion119": "1.0.0", - "_huntingQuerycontentId119": "f094e9f1-2d55-450d-af1a-0fdcd290f8c4", - "huntingQueryTemplateSpecName119": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f094e9f1-2d55-450d-af1a-0fdcd290f8c4')))]" - }, - "huntingQueryObject120": { - "huntingQueryVersion120": "1.0.0", - "_huntingQuerycontentId120": "01cf63bd-debd-4d03-847c-d19c31844501", - "huntingQueryTemplateSpecName120": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('01cf63bd-debd-4d03-847c-d19c31844501')))]" - }, - "huntingQueryObject121": { - "huntingQueryVersion121": "1.0.0", - "_huntingQuerycontentId121": "8d25156b-2ac4-4528-b1b1-f8427267f9f2", - "huntingQueryTemplateSpecName121": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8d25156b-2ac4-4528-b1b1-f8427267f9f2')))]" - }, - "huntingQueryObject122": { - "huntingQueryVersion122": "1.0.0", - "_huntingQuerycontentId122": "b2a36ca5-b6a4-4f27-a7d8-7f044885cccf", - "huntingQueryTemplateSpecName122": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b2a36ca5-b6a4-4f27-a7d8-7f044885cccf')))]" - }, - "huntingQueryObject123": { - "huntingQueryVersion123": "1.0.0", - "_huntingQuerycontentId123": "02bdbd93-02b7-40e4-9468-d501463e57af", - "huntingQueryTemplateSpecName123": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('02bdbd93-02b7-40e4-9468-d501463e57af')))]" - }, - "huntingQueryObject124": { - "huntingQueryVersion124": "1.0.0", - "_huntingQuerycontentId124": "fc47e222-c348-43ca-ba11-b4628fe243cd", - "huntingQueryTemplateSpecName124": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('fc47e222-c348-43ca-ba11-b4628fe243cd')))]" - }, - "huntingQueryObject125": { - "huntingQueryVersion125": "1.0.0", - "_huntingQuerycontentId125": "b2a6440b-6ebd-4d86-aa33-cfe11f9defcf", - "huntingQueryTemplateSpecName125": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b2a6440b-6ebd-4d86-aa33-cfe11f9defcf')))]" - }, - "huntingQueryObject126": { - "huntingQueryVersion126": "1.0.0", - "_huntingQuerycontentId126": "20c9d89a-ad65-48f4-ba14-605715af640a", - "huntingQueryTemplateSpecName126": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('20c9d89a-ad65-48f4-ba14-605715af640a')))]" - }, - "huntingQueryObject127": { - "huntingQueryVersion127": "1.0.0", - "_huntingQuerycontentId127": "71117505-5a71-431e-8605-8896960affe5", - "huntingQueryTemplateSpecName127": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('71117505-5a71-431e-8605-8896960affe5')))]" - }, - "huntingQueryObject128": { - "huntingQueryVersion128": "1.0.0", - "_huntingQuerycontentId128": "4684afc7-3d05-4ec1-8fb0-342707d0ac5d", - "huntingQueryTemplateSpecName128": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4684afc7-3d05-4ec1-8fb0-342707d0ac5d')))]" - }, - "huntingQueryObject129": { - "huntingQueryVersion129": "1.0.0", - "_huntingQuerycontentId129": "45d955e0-0e34-4ce7-833d-c14b43d69677", - "huntingQueryTemplateSpecName129": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('45d955e0-0e34-4ce7-833d-c14b43d69677')))]" - }, - "huntingQueryObject130": { - "huntingQueryVersion130": "1.0.0", - "_huntingQuerycontentId130": "8b7a84e9-5831-4e90-9b98-bd57493c6cc9", - "huntingQueryTemplateSpecName130": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8b7a84e9-5831-4e90-9b98-bd57493c6cc9')))]" - }, - "huntingQueryObject131": { - "huntingQueryVersion131": "1.0.0", - "_huntingQuerycontentId131": "f6f317c4-8ebe-4f93-9068-720705a75c65", - "huntingQueryTemplateSpecName131": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f6f317c4-8ebe-4f93-9068-720705a75c65')))]" - }, - "huntingQueryObject132": { - "huntingQueryVersion132": "1.0.0", - "_huntingQuerycontentId132": "5515296b-8f4c-42f1-a5ad-0574fbf99f23", - "huntingQueryTemplateSpecName132": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('5515296b-8f4c-42f1-a5ad-0574fbf99f23')))]" - }, - "huntingQueryObject133": { - "huntingQueryVersion133": "1.0.0", - "_huntingQuerycontentId133": "abd7e757-7737-4c9f-af7a-92e87172ff4f", - "huntingQueryTemplateSpecName133": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('abd7e757-7737-4c9f-af7a-92e87172ff4f')))]" - }, - "huntingQueryObject134": { - "huntingQueryVersion134": "1.0.0", - "_huntingQuerycontentId134": "fea3f03b-0723-4f3e-9f6a-c8a6a67fbde0", - "huntingQueryTemplateSpecName134": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('fea3f03b-0723-4f3e-9f6a-c8a6a67fbde0')))]" - }, - "huntingQueryObject135": { - "huntingQueryVersion135": "1.0.0", - "_huntingQuerycontentId135": "008ff55b-0588-4d39-af03-c08f1bb519d7", - "huntingQueryTemplateSpecName135": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('008ff55b-0588-4d39-af03-c08f1bb519d7')))]" - }, - "huntingQueryObject136": { - "huntingQueryVersion136": "1.0.0", - "_huntingQuerycontentId136": "161b163c-0805-46fd-abda-2fe5f0a5185e", - "huntingQueryTemplateSpecName136": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('161b163c-0805-46fd-abda-2fe5f0a5185e')))]" - }, - "huntingQueryObject137": { - "huntingQueryVersion137": "1.0.0", - "_huntingQuerycontentId137": "68aaf2af-83ac-4f9e-9680-4050700b93f9", - "huntingQueryTemplateSpecName137": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('68aaf2af-83ac-4f9e-9680-4050700b93f9')))]" - }, - "huntingQueryObject138": { - "huntingQueryVersion138": "1.0.0", - "_huntingQuerycontentId138": "ace8e98a-660b-4fa9-a877-60644eb83344", - "huntingQueryTemplateSpecName138": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ace8e98a-660b-4fa9-a877-60644eb83344')))]" - }, - "huntingQueryObject139": { - "huntingQueryVersion139": "1.0.0", - "_huntingQuerycontentId139": "b1fa5bb7-9c4e-4d4f-826a-afc1fbe8c2cf", - "huntingQueryTemplateSpecName139": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b1fa5bb7-9c4e-4d4f-826a-afc1fbe8c2cf')))]" - }, - "huntingQueryObject140": { - "huntingQueryVersion140": "1.0.0", - "_huntingQuerycontentId140": "8b3bd5c3-1f37-4131-8b3a-a0f6d540e56d", - "huntingQueryTemplateSpecName140": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8b3bd5c3-1f37-4131-8b3a-a0f6d540e56d')))]" - }, - "huntingQueryObject141": { - "huntingQueryVersion141": "1.0.0", - "_huntingQuerycontentId141": "511406e2-2bdf-4b4d-a436-17dadbf4829f", - "huntingQueryTemplateSpecName141": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('511406e2-2bdf-4b4d-a436-17dadbf4829f')))]" - }, - "huntingQueryObject142": { - "huntingQueryVersion142": "1.0.0", - "_huntingQuerycontentId142": "0bd46e27-9d5a-4abd-889b-829a8b4d29a4", - "huntingQueryTemplateSpecName142": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0bd46e27-9d5a-4abd-889b-829a8b4d29a4')))]" - }, - "huntingQueryObject143": { - "huntingQueryVersion143": "1.0.0", - "_huntingQuerycontentId143": "132dffdf-3ee0-4748-8509-fbd3a92e5c9f", - "huntingQueryTemplateSpecName143": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('132dffdf-3ee0-4748-8509-fbd3a92e5c9f')))]" - }, - "huntingQueryObject144": { - "huntingQueryVersion144": "1.0.0", - "_huntingQuerycontentId144": "bebb6652-3c52-4358-a946-ecd63cddf082", - "huntingQueryTemplateSpecName144": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('bebb6652-3c52-4358-a946-ecd63cddf082')))]" - }, - "huntingQueryObject145": { - "huntingQueryVersion145": "1.0.0", - "_huntingQuerycontentId145": "2d8448f5-c0a2-46d7-a004-e062970ccb7b", - "huntingQueryTemplateSpecName145": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2d8448f5-c0a2-46d7-a004-e062970ccb7b')))]" - }, - "huntingQueryObject146": { - "huntingQueryVersion146": "1.0.0", - "_huntingQuerycontentId146": "49071a21-fbb6-472f-932f-5b6ca1a25883", - "huntingQueryTemplateSpecName146": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('49071a21-fbb6-472f-932f-5b6ca1a25883')))]" - }, - "huntingQueryObject147": { - "huntingQueryVersion147": "1.0.0", - "_huntingQuerycontentId147": "f82f3d63-b7f2-494d-8254-612405702dd4", - "huntingQueryTemplateSpecName147": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f82f3d63-b7f2-494d-8254-612405702dd4')))]" - }, - "huntingQueryObject148": { - "huntingQueryVersion148": "1.0.0", - "_huntingQuerycontentId148": "b3b507e9-9f92-4751-8463-fc77394fed91", - "huntingQueryTemplateSpecName148": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b3b507e9-9f92-4751-8463-fc77394fed91')))]" - }, - "huntingQueryObject149": { - "huntingQueryVersion149": "1.0.0", - "_huntingQuerycontentId149": "0a29c9f0-e8d4-4339-a196-52bb3a090a79", - "huntingQueryTemplateSpecName149": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0a29c9f0-e8d4-4339-a196-52bb3a090a79')))]" - }, - "huntingQueryObject150": { - "huntingQueryVersion150": "1.0.0", - "_huntingQuerycontentId150": "9ffbd78f-c87c-4fd2-96ec-fd46e27bbd21", - "huntingQueryTemplateSpecName150": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9ffbd78f-c87c-4fd2-96ec-fd46e27bbd21')))]" - }, - "huntingQueryObject151": { - "huntingQueryVersion151": "1.0.0", - "_huntingQuerycontentId151": "ab2f1fd6-1023-425e-a429-ff74db5709be", - "huntingQueryTemplateSpecName151": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ab2f1fd6-1023-425e-a429-ff74db5709be')))]" - }, - "huntingQueryObject152": { - "huntingQueryVersion152": "1.0.0", - "_huntingQuerycontentId152": "74b581fc-e8cb-4b50-9d82-7b91d3a88a08", - "huntingQueryTemplateSpecName152": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('74b581fc-e8cb-4b50-9d82-7b91d3a88a08')))]" - }, - "huntingQueryObject153": { - "huntingQueryVersion153": "1.0.0", - "_huntingQuerycontentId153": "90cd91d1-7b90-421c-a5c9-0479b6b7e6a2", - "huntingQueryTemplateSpecName153": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('90cd91d1-7b90-421c-a5c9-0479b6b7e6a2')))]" - }, - "huntingQueryObject154": { - "huntingQueryVersion154": "1.0.0", - "_huntingQuerycontentId154": "0c68250b-44b5-46f4-8cac-f3e7149e8c61", - "huntingQueryTemplateSpecName154": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0c68250b-44b5-46f4-8cac-f3e7149e8c61')))]" - }, - "huntingQueryObject155": { - "huntingQueryVersion155": "1.0.0", - "_huntingQuerycontentId155": "0c829a3c-ead1-4ebc-92c9-2e85abb1edeb", - "huntingQueryTemplateSpecName155": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0c829a3c-ead1-4ebc-92c9-2e85abb1edeb')))]" - }, - "huntingQueryObject156": { - "huntingQueryVersion156": "1.0.0", - "_huntingQuerycontentId156": "6610945e-9496-4ef4-9bc4-a511a3f2a477", - "huntingQueryTemplateSpecName156": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6610945e-9496-4ef4-9bc4-a511a3f2a477')))]" - }, - "huntingQueryObject157": { - "huntingQueryVersion157": "1.0.0", - "_huntingQuerycontentId157": "75ade06c-7326-4e0d-9dfb-27e05043525b", - "huntingQueryTemplateSpecName157": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('75ade06c-7326-4e0d-9dfb-27e05043525b')))]" - }, - "huntingQueryObject158": { - "huntingQueryVersion158": "1.0.0", - "_huntingQuerycontentId158": "2ae448b1-b27d-4043-a92f-ef10202cdb7a", - "huntingQueryTemplateSpecName158": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2ae448b1-b27d-4043-a92f-ef10202cdb7a')))]" - }, - "huntingQueryObject159": { - "huntingQueryVersion159": "1.0.0", - "_huntingQuerycontentId159": "02e237ed-f7b5-49dd-92e6-1b340d5e37fb", - "huntingQueryTemplateSpecName159": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('02e237ed-f7b5-49dd-92e6-1b340d5e37fb')))]" - }, - "huntingQueryObject160": { - "huntingQueryVersion160": "1.0.0", - "_huntingQuerycontentId160": "b1f797d1-6ea4-4f8f-b663-6c8a1c1018e9", - "huntingQueryTemplateSpecName160": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b1f797d1-6ea4-4f8f-b663-6c8a1c1018e9')))]" - }, - "huntingQueryObject161": { - "huntingQueryVersion161": "1.0.0", - "_huntingQuerycontentId161": "c73ae295-d120-4f79-aaed-de005f766ad2", - "huntingQueryTemplateSpecName161": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('c73ae295-d120-4f79-aaed-de005f766ad2')))]" - }, - "huntingQueryObject162": { - "huntingQueryVersion162": "1.0.0", - "_huntingQuerycontentId162": "fe2cb53e-4eb3-4676-87c1-f80d2813f542", - "huntingQueryTemplateSpecName162": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('fe2cb53e-4eb3-4676-87c1-f80d2813f542')))]" - }, - "huntingQueryObject163": { - "huntingQueryVersion163": "1.1.0", - "_huntingQuerycontentId163": "8f8fd7c8-277a-48c3-ad67-c80b3037c5af", - "huntingQueryTemplateSpecName163": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8f8fd7c8-277a-48c3-ad67-c80b3037c5af')))]" - }, - "huntingQueryObject164": { - "huntingQueryVersion164": "1.1.0", - "_huntingQuerycontentId164": "bd6aae91-6233-430b-a5af-15c6406a7770", - "huntingQueryTemplateSpecName164": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('bd6aae91-6233-430b-a5af-15c6406a7770')))]" - }, - "huntingQueryObject165": { - "huntingQueryVersion165": "1.1.0", - "_huntingQuerycontentId165": "e6b3edc5-ec6f-44ae-9bb4-60c9ea49154e", - "huntingQueryTemplateSpecName165": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e6b3edc5-ec6f-44ae-9bb4-60c9ea49154e')))]" - }, - "huntingQueryObject166": { - "huntingQueryVersion166": "1.1.0", - "_huntingQuerycontentId166": "74e076da-58e8-436d-b7bc-68888dbb6091", - "huntingQueryTemplateSpecName166": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('74e076da-58e8-436d-b7bc-68888dbb6091')))]" - }, - "huntingQueryObject167": { - "huntingQueryVersion167": "1.1.0", - "_huntingQuerycontentId167": "fbe7a9d2-507e-4974-9e9a-d1cba3907f67", - "huntingQueryTemplateSpecName167": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('fbe7a9d2-507e-4974-9e9a-d1cba3907f67')))]" - }, - "huntingQueryObject168": { - "huntingQueryVersion168": "1.1.0", - "_huntingQuerycontentId168": "76c77c8a-bd2a-489a-af52-97291211e4e4", - "huntingQueryTemplateSpecName168": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('76c77c8a-bd2a-489a-af52-97291211e4e4')))]" - }, - "huntingQueryObject169": { - "huntingQueryVersion169": "1.1.0", - "_huntingQuerycontentId169": "4d86021c-cad7-489b-a8c8-dddecb87a2ef", - "huntingQueryTemplateSpecName169": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4d86021c-cad7-489b-a8c8-dddecb87a2ef')))]" - }, - "huntingQueryObject170": { - "huntingQueryVersion170": "1.1.0", - "_huntingQuerycontentId170": "b20e56b8-e335-43d9-b7b3-43c034c43aea", - "huntingQueryTemplateSpecName170": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b20e56b8-e335-43d9-b7b3-43c034c43aea')))]" - }, - "huntingQueryObject171": { - "huntingQueryVersion171": "1.1.0", - "_huntingQuerycontentId171": "dd6efecd-7fe5-41b1-a122-8e0a15de9451", - "huntingQueryTemplateSpecName171": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('dd6efecd-7fe5-41b1-a122-8e0a15de9451')))]" - }, - "huntingQueryObject172": { - "huntingQueryVersion172": "1.1.0", - "_huntingQuerycontentId172": "4c30fab1-db4f-4a64-b66b-51478e43a477", - "huntingQueryTemplateSpecName172": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4c30fab1-db4f-4a64-b66b-51478e43a477')))]" - }, - "huntingQueryObject173": { - "huntingQueryVersion173": "1.0.1", - "_huntingQuerycontentId173": "ad76e484-f159-4d23-99ee-e734f0b8b60b", - "huntingQueryTemplateSpecName173": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ad76e484-f159-4d23-99ee-e734f0b8b60b')))]" - }, - "huntingQueryObject174": { - "huntingQueryVersion174": "1.0.0", - "_huntingQuerycontentId174": "0b197e26-7899-47ff-9be9-f7ba6dc949ea", - "huntingQueryTemplateSpecName174": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0b197e26-7899-47ff-9be9-f7ba6dc949ea')))]" - }, - "huntingQueryObject175": { - "huntingQueryVersion175": "1.0.0", - "_huntingQuerycontentId175": "87846aad-624c-4e18-b963-81bedd7123a2", - "huntingQueryTemplateSpecName175": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('87846aad-624c-4e18-b963-81bedd7123a2')))]" - }, - "huntingQueryObject176": { - "huntingQueryVersion176": "1.1.0", - "_huntingQuerycontentId176": "80f357a6-6bb4-4b2b-a88c-265fccafc794", - "huntingQueryTemplateSpecName176": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('80f357a6-6bb4-4b2b-a88c-265fccafc794')))]" - }, - "huntingQueryObject177": { - "huntingQueryVersion177": "1.0.0", - "_huntingQuerycontentId177": "25150085-015a-4673-9b67-bc6ad9475500", - "huntingQueryTemplateSpecName177": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('25150085-015a-4673-9b67-bc6ad9475500')))]" - }, - "huntingQueryObject178": { - "huntingQueryVersion178": "1.0.0", - "_huntingQuerycontentId178": "9b086a51-e396-4718-90d7-f7b3646e6581", - "huntingQueryTemplateSpecName178": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9b086a51-e396-4718-90d7-f7b3646e6581')))]" - }, - "huntingQueryObject179": { - "huntingQueryVersion179": "1.0.0", - "_huntingQuerycontentId179": "516046e8-a460-4f7b-86eb-421d3a9cdff1", - "huntingQueryTemplateSpecName179": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('516046e8-a460-4f7b-86eb-421d3a9cdff1')))]" - }, - "huntingQueryObject180": { - "huntingQueryVersion180": "1.0.0", - "_huntingQuerycontentId180": "594fe5a1-53b6-466b-86df-028366c3994e", - "huntingQueryTemplateSpecName180": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('594fe5a1-53b6-466b-86df-028366c3994e')))]" - }, - "huntingQueryObject181": { - "huntingQueryVersion181": "1.0.0", - "_huntingQuerycontentId181": "706b711a-7622-40f1-9ebb-331d1a0ff697", - "huntingQueryTemplateSpecName181": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('706b711a-7622-40f1-9ebb-331d1a0ff697')))]" - }, - "huntingQueryObject182": { - "huntingQueryVersion182": "1.0.0", - "_huntingQuerycontentId182": "f708c866-073a-4107-a60b-ba6f86e54caa", - "huntingQueryTemplateSpecName182": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f708c866-073a-4107-a60b-ba6f86e54caa')))]" - }, - "huntingQueryObject183": { - "huntingQueryVersion183": "1.0.0", - "_huntingQuerycontentId183": "68aa199c-259b-4bb0-8e7a-8ed6f96c5525", - "huntingQueryTemplateSpecName183": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('68aa199c-259b-4bb0-8e7a-8ed6f96c5525')))]" - }, - "huntingQueryObject184": { - "huntingQueryVersion184": "1.0.0", - "_huntingQuerycontentId184": "8c852f12-499f-499b-afc1-25c50aa9b462", - "huntingQueryTemplateSpecName184": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8c852f12-499f-499b-afc1-25c50aa9b462')))]" - }, - "huntingQueryObject185": { - "huntingQueryVersion185": "1.0.0", - "_huntingQuerycontentId185": "f6354c94-3a95-4235-8530-414f016a7bf6", - "huntingQueryTemplateSpecName185": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f6354c94-3a95-4235-8530-414f016a7bf6')))]" - }, - "huntingQueryObject186": { - "huntingQueryVersion186": "1.0.0", - "_huntingQuerycontentId186": "dc7e1eb5-16f5-4ad5-96a1-794970f4b310", - "huntingQueryTemplateSpecName186": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('dc7e1eb5-16f5-4ad5-96a1-794970f4b310')))]" - }, - "huntingQueryObject187": { - "huntingQueryVersion187": "1.0.0", - "_huntingQuerycontentId187": "54d3455d-27e0-4ceb-99f9-375abd620151", - "huntingQueryTemplateSpecName187": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('54d3455d-27e0-4ceb-99f9-375abd620151')))]" - }, - "huntingQueryObject188": { - "huntingQueryVersion188": "1.0.0", - "_huntingQuerycontentId188": "8d298b5c-feca-4add-bd42-e43e0a317a88", - "huntingQueryTemplateSpecName188": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8d298b5c-feca-4add-bd42-e43e0a317a88')))]" - }, - "huntingQueryObject189": { - "huntingQueryVersion189": "1.0.0", - "_huntingQuerycontentId189": "3131d0ba-32c9-483e-a25c-82e26a07e116", - "huntingQueryTemplateSpecName189": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3131d0ba-32c9-483e-a25c-82e26a07e116')))]" - }, - "huntingQueryObject190": { - "huntingQueryVersion190": "1.0.0", - "_huntingQuerycontentId190": "a12cac64-ea6d-46d4-91a6-262b165fb9ad", - "huntingQueryTemplateSpecName190": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a12cac64-ea6d-46d4-91a6-262b165fb9ad')))]" - }, - "huntingQueryObject191": { - "huntingQueryVersion191": "1.0.0", - "_huntingQuerycontentId191": "9e8faa62-7222-48a5-a78f-ef2d22f866dc", - "huntingQueryTemplateSpecName191": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9e8faa62-7222-48a5-a78f-ef2d22f866dc')))]" - }, - "huntingQueryObject192": { - "huntingQueryVersion192": "1.1.0", - "_huntingQuerycontentId192": "79bed402-09bc-453b-ab92-8b1411e683fa", - "huntingQueryTemplateSpecName192": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('79bed402-09bc-453b-ab92-8b1411e683fa')))]" - }, - "huntingQueryObject193": { - "huntingQueryVersion193": "1.1.0", - "_huntingQuerycontentId193": "36cf7ce5-7264-46d9-9f47-57b59049b44f", - "huntingQueryTemplateSpecName193": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('36cf7ce5-7264-46d9-9f47-57b59049b44f')))]" - }, - "huntingQueryObject194": { - "huntingQueryVersion194": "1.0.0", - "_huntingQuerycontentId194": "6f96f6d7-d972-421e-a59f-6b9a8de81324", - "huntingQueryTemplateSpecName194": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6f96f6d7-d972-421e-a59f-6b9a8de81324')))]" - }, - "huntingQueryObject195": { - "huntingQueryVersion195": "1.0.0", - "_huntingQuerycontentId195": "9f135aef-ad25-4df2-bdab-8399978a36a2", - "huntingQueryTemplateSpecName195": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9f135aef-ad25-4df2-bdab-8399978a36a2')))]" - }, - "huntingQueryObject196": { - "huntingQueryVersion196": "1.0.0", - "_huntingQuerycontentId196": "23e6d66b-511a-43fd-9863-6924da60319a", - "huntingQueryTemplateSpecName196": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('23e6d66b-511a-43fd-9863-6924da60319a')))]" - }, - "huntingQueryObject197": { - "huntingQueryVersion197": "1.1.0", - "_huntingQuerycontentId197": "32a981ad-cd5a-4d80-8c6c-d59b9893c019", - "huntingQueryTemplateSpecName197": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('32a981ad-cd5a-4d80-8c6c-d59b9893c019')))]" - }, - "huntingQueryObject198": { - "huntingQueryVersion198": "1.1.0", - "_huntingQuerycontentId198": "bde9d9fc-e166-4628-91f7-fb86ace93af0", - "huntingQueryTemplateSpecName198": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('bde9d9fc-e166-4628-91f7-fb86ace93af0')))]" - }, - "huntingQueryObject199": { - "huntingQueryVersion199": "1.0.0", - "_huntingQuerycontentId199": "77104824-b41e-412d-8e50-26971fe97ab0", - "huntingQueryTemplateSpecName199": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('77104824-b41e-412d-8e50-26971fe97ab0')))]" - }, - "huntingQueryObject200": { - "huntingQueryVersion200": "1.0.0", - "_huntingQuerycontentId200": "99713387-9d61-49eb-8edc-f51153d8bb01", - "huntingQueryTemplateSpecName200": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('99713387-9d61-49eb-8edc-f51153d8bb01')))]" - }, - "huntingQueryObject201": { - "huntingQueryVersion201": "1.1.0", - "_huntingQuerycontentId201": "147131b3-8b57-4c50-b981-5a951ed82272", - "huntingQueryTemplateSpecName201": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('147131b3-8b57-4c50-b981-5a951ed82272')))]" - }, - "huntingQueryObject202": { - "huntingQueryVersion202": "1.1.0", - "_huntingQuerycontentId202": "7e93ce37-0cc5-4aa9-b30a-07772affa481", - "huntingQueryTemplateSpecName202": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('7e93ce37-0cc5-4aa9-b30a-07772affa481')))]" - }, - "huntingQueryObject203": { - "huntingQueryVersion203": "1.1.0", - "_huntingQuerycontentId203": "316f8777-09fd-480b-a726-21f521fa990f", - "huntingQueryTemplateSpecName203": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('316f8777-09fd-480b-a726-21f521fa990f')))]" - }, - "huntingQueryObject204": { - "huntingQueryVersion204": "1.1.0", - "_huntingQuerycontentId204": "2e903da3-32fe-46b0-8df7-5f39e55db17e", - "huntingQueryTemplateSpecName204": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2e903da3-32fe-46b0-8df7-5f39e55db17e')))]" - }, - "huntingQueryObject205": { - "huntingQueryVersion205": "1.1.0", - "_huntingQuerycontentId205": "f290d544-c499-4b23-8a7e-c4cbb7ab6316", - "huntingQueryTemplateSpecName205": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f290d544-c499-4b23-8a7e-c4cbb7ab6316')))]" - }, - "huntingQueryObject206": { - "huntingQueryVersion206": "1.1.0", - "_huntingQuerycontentId206": "6fe463ca-4cd3-4d97-a099-6b736f28a128", - "huntingQueryTemplateSpecName206": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6fe463ca-4cd3-4d97-a099-6b736f28a128')))]" - }, - "huntingQueryObject207": { - "huntingQueryVersion207": "1.1.0", - "_huntingQuerycontentId207": "9e4b7553-1113-4d40-bb6b-7daca7d7d255", - "huntingQueryTemplateSpecName207": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9e4b7553-1113-4d40-bb6b-7daca7d7d255')))]" - }, - "huntingQueryObject208": { - "huntingQueryVersion208": "1.1.0", - "_huntingQuerycontentId208": "c03e13ee-0e7a-4d05-b3f4-790b01bb30a5", - "huntingQueryTemplateSpecName208": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('c03e13ee-0e7a-4d05-b3f4-790b01bb30a5')))]" - }, - "huntingQueryObject209": { - "huntingQueryVersion209": "1.1.0", - "_huntingQuerycontentId209": "86f2b124-8caf-4b53-845a-87de3ffccbdf", - "huntingQueryTemplateSpecName209": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('86f2b124-8caf-4b53-845a-87de3ffccbdf')))]" - }, - "huntingQueryObject210": { - "huntingQueryVersion210": "1.1.0", - "_huntingQuerycontentId210": "ae690d6f-0ea5-4617-95cf-1ed9a5fcb329", - "huntingQueryTemplateSpecName210": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ae690d6f-0ea5-4617-95cf-1ed9a5fcb329')))]" - }, - "huntingQueryObject211": { - "huntingQueryVersion211": "1.1.0", - "_huntingQuerycontentId211": "16cfa413-238f-4355-9f8a-4b97ce7572ac", - "huntingQueryTemplateSpecName211": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('16cfa413-238f-4355-9f8a-4b97ce7572ac')))]" - }, - "huntingQueryObject212": { - "huntingQueryVersion212": "1.0.0", - "_huntingQuerycontentId212": "6a570927-8638-4a6f-ac09-72a7d51ffa3c", - "huntingQueryTemplateSpecName212": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6a570927-8638-4a6f-ac09-72a7d51ffa3c')))]" - }, - "huntingQueryObject213": { - "huntingQueryVersion213": "1.0.0", - "_huntingQuerycontentId213": "418e8859-b22a-4fd4-b273-5433e054cdc7", - "huntingQueryTemplateSpecName213": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('418e8859-b22a-4fd4-b273-5433e054cdc7')))]" - }, - "huntingQueryObject214": { - "huntingQueryVersion214": "1.1.0", - "_huntingQuerycontentId214": "15a17150-811d-4829-a3d6-489139c9ff5e", - "huntingQueryTemplateSpecName214": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('15a17150-811d-4829-a3d6-489139c9ff5e')))]" - }, - "huntingQueryObject215": { - "huntingQueryVersion215": "1.0.0", - "_huntingQuerycontentId215": "416cd270-6327-441a-9304-940c832cf361", - "huntingQueryTemplateSpecName215": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('416cd270-6327-441a-9304-940c832cf361')))]" - }, - "huntingQueryObject216": { - "huntingQueryVersion216": "1.0.0", - "_huntingQuerycontentId216": "cdc4da1c-64a1-4941-be59-1f5cc85481ab", - "huntingQueryTemplateSpecName216": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cdc4da1c-64a1-4941-be59-1f5cc85481ab')))]" - }, - "huntingQueryObject217": { - "huntingQueryVersion217": "1.0.0", - "_huntingQuerycontentId217": "b3180ac0-6d94-494a-8b8c-fcc84319ea6e", - "huntingQueryTemplateSpecName217": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b3180ac0-6d94-494a-8b8c-fcc84319ea6e')))]" - }, - "huntingQueryObject218": { - "huntingQueryVersion218": "1.0.0", - "_huntingQuerycontentId218": "011c3d48-f6ca-405f-9763-66c7856ad2ba", - "huntingQueryTemplateSpecName218": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('011c3d48-f6ca-405f-9763-66c7856ad2ba')))]" - }, - "huntingQueryObject219": { - "huntingQueryVersion219": "1.0.0", - "_huntingQuerycontentId219": "1dce39ec-8a64-4e49-9d6e-926ee6f04c39", - "huntingQueryTemplateSpecName219": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('1dce39ec-8a64-4e49-9d6e-926ee6f04c39')))]" - }, - "huntingQueryObject220": { - "huntingQueryVersion220": "1.1.0", - "_huntingQuerycontentId220": "53139a92-eb64-46d2-be97-e752a71e7021", - "huntingQueryTemplateSpecName220": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('53139a92-eb64-46d2-be97-e752a71e7021')))]" - }, - "huntingQueryObject221": { - "huntingQueryVersion221": "1.0.0", - "_huntingQuerycontentId221": "09b263e1-9c73-4585-a55c-bc209e148e14", - "huntingQueryTemplateSpecName221": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('09b263e1-9c73-4585-a55c-bc209e148e14')))]" - }, - "huntingQueryObject222": { - "huntingQueryVersion222": "1.1.0", - "_huntingQuerycontentId222": "f9442d20-eff8-4751-9a75-6451aeace687", - "huntingQueryTemplateSpecName222": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f9442d20-eff8-4751-9a75-6451aeace687')))]" - }, - "huntingQueryObject223": { - "huntingQueryVersion223": "1.0.0", - "_huntingQuerycontentId223": "e90345b3-439c-44e1-a85d-8ae84ad9c65b", - "huntingQueryTemplateSpecName223": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e90345b3-439c-44e1-a85d-8ae84ad9c65b')))]" - }, - "huntingQueryObject224": { - "huntingQueryVersion224": "1.0.0", - "_huntingQuerycontentId224": "c51b0367-573a-42c3-a4a2-2d8b1ef6bea9", - "huntingQueryTemplateSpecName224": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('c51b0367-573a-42c3-a4a2-2d8b1ef6bea9')))]" - }, - "huntingQueryObject225": { - "huntingQueryVersion225": "1.0.0", - "_huntingQuerycontentId225": "e3a11181-3ff9-4ba0-908d-3e229b476ce3", - "huntingQueryTemplateSpecName225": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e3a11181-3ff9-4ba0-908d-3e229b476ce3')))]" - }, - "huntingQueryObject226": { - "huntingQueryVersion226": "1.0.0", - "_huntingQuerycontentId226": "515a98db-49a5-4592-80b7-8227998da9ed", - "huntingQueryTemplateSpecName226": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('515a98db-49a5-4592-80b7-8227998da9ed')))]" - }, - "huntingQueryObject227": { - "huntingQueryVersion227": "1.0.0", - "_huntingQuerycontentId227": "5cb9399f-e4d7-46c1-bdfa-d66eec278bf2", - "huntingQueryTemplateSpecName227": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('5cb9399f-e4d7-46c1-bdfa-d66eec278bf2')))]" - }, - "huntingQueryObject228": { - "huntingQueryVersion228": "1.0.0", - "_huntingQuerycontentId228": "8f82894a-1b18-4d1e-a580-1dcaff739a32", - "huntingQueryTemplateSpecName228": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8f82894a-1b18-4d1e-a580-1dcaff739a32')))]" - }, - "huntingQueryObject229": { - "huntingQueryVersion229": "1.0.0", - "_huntingQuerycontentId229": "8425234b-f09d-490e-be3d-a7ecf081c5d0", - "huntingQueryTemplateSpecName229": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8425234b-f09d-490e-be3d-a7ecf081c5d0')))]" - }, - "huntingQueryObject230": { - "huntingQueryVersion230": "1.0.0", - "_huntingQuerycontentId230": "60cddbbb-2244-4a61-ad73-b20b1c6f5027", - "huntingQueryTemplateSpecName230": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('60cddbbb-2244-4a61-ad73-b20b1c6f5027')))]" - }, - "huntingQueryObject231": { - "huntingQueryVersion231": "1.0.0", - "_huntingQuerycontentId231": "354d78b3-91b7-4219-9079-57e63e281077", - "huntingQueryTemplateSpecName231": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('354d78b3-91b7-4219-9079-57e63e281077')))]" - }, - "huntingQueryObject232": { - "huntingQueryVersion232": "1.0.0", - "_huntingQuerycontentId232": "a7f2dae2-2e33-4744-b013-37dc5628d939", - "huntingQueryTemplateSpecName232": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a7f2dae2-2e33-4744-b013-37dc5628d939')))]" - }, - "huntingQueryObject233": { - "huntingQueryVersion233": "1.0.0", - "_huntingQuerycontentId233": "de074419-2ec5-4c7f-a7f6-0a49178b314c", - "huntingQueryTemplateSpecName233": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('de074419-2ec5-4c7f-a7f6-0a49178b314c')))]" - }, - "huntingQueryObject234": { - "huntingQueryVersion234": "1.0.0", - "_huntingQuerycontentId234": "d236f728-8b0f-4b4f-acf7-e4707993b841", - "huntingQueryTemplateSpecName234": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d236f728-8b0f-4b4f-acf7-e4707993b841')))]" - }, - "huntingQueryObject235": { - "huntingQueryVersion235": "1.0.0", - "_huntingQuerycontentId235": "8b0bae20-687f-47ca-bc2e-8dabbed9cbae", - "huntingQueryTemplateSpecName235": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8b0bae20-687f-47ca-bc2e-8dabbed9cbae')))]" - }, - "huntingQueryObject236": { - "huntingQueryVersion236": "1.0.0", - "_huntingQuerycontentId236": "47506508-dee4-4d4d-93a8-1c78d63cd2eb", - "huntingQueryTemplateSpecName236": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('47506508-dee4-4d4d-93a8-1c78d63cd2eb')))]" - }, - "huntingQueryObject237": { - "huntingQueryVersion237": "1.0.0", - "_huntingQuerycontentId237": "72f939fe-c77b-4c25-91b4-3f784c9c58c3", - "huntingQueryTemplateSpecName237": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('72f939fe-c77b-4c25-91b4-3f784c9c58c3')))]" - }, - "huntingQueryObject238": { - "huntingQueryVersion238": "1.0.0", - "_huntingQuerycontentId238": "da7eecca-ecb8-4b8e-a111-62d2b48e2e69", - "huntingQueryTemplateSpecName238": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('da7eecca-ecb8-4b8e-a111-62d2b48e2e69')))]" - }, - "huntingQueryObject239": { - "huntingQueryVersion239": "1.0.0", - "_huntingQuerycontentId239": "4c786e9a-b570-47bc-877f-7f3da87a4673", - "huntingQueryTemplateSpecName239": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4c786e9a-b570-47bc-877f-7f3da87a4673')))]" - }, - "huntingQueryObject240": { - "huntingQueryVersion240": "1.0.0", - "_huntingQuerycontentId240": "53c58a33-668d-46e1-9714-5892c87650d9", - "huntingQueryTemplateSpecName240": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('53c58a33-668d-46e1-9714-5892c87650d9')))]" - }, - "huntingQueryObject241": { - "huntingQueryVersion241": "1.0.0", - "_huntingQuerycontentId241": "8cde246b-7ed1-429c-933a-f7d0363dbbc0", - "huntingQueryTemplateSpecName241": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8cde246b-7ed1-429c-933a-f7d0363dbbc0')))]" - }, - "huntingQueryObject242": { - "huntingQueryVersion242": "1.0.0", - "_huntingQuerycontentId242": "0bd33643-c517-48b1-8211-25a7fbd15a50", - "huntingQueryTemplateSpecName242": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0bd33643-c517-48b1-8211-25a7fbd15a50')))]" - }, - "huntingQueryObject243": { - "huntingQueryVersion243": "1.0.0", - "_huntingQuerycontentId243": "d78bad8c-3d94-4a73-bdbe-1c567e3d6d62", - "huntingQueryTemplateSpecName243": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d78bad8c-3d94-4a73-bdbe-1c567e3d6d62')))]" - }, - "huntingQueryObject244": { - "huntingQueryVersion244": "1.0.0", - "_huntingQuerycontentId244": "58acf93f-27de-4af4-8a5f-d87ee59326f9", - "huntingQueryTemplateSpecName244": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('58acf93f-27de-4af4-8a5f-d87ee59326f9')))]" - }, - "huntingQueryObject245": { - "huntingQueryVersion245": "1.0.0", - "_huntingQuerycontentId245": "0a9385bc-2ef9-4b0e-8834-12f796b08ca8", - "huntingQueryTemplateSpecName245": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0a9385bc-2ef9-4b0e-8834-12f796b08ca8')))]" - }, - "huntingQueryObject246": { - "huntingQueryVersion246": "1.0.0", - "_huntingQuerycontentId246": "385aca1d-2135-40c6-af8e-030c9e086cf5", - "huntingQueryTemplateSpecName246": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('385aca1d-2135-40c6-af8e-030c9e086cf5')))]" - }, - "huntingQueryObject247": { - "huntingQueryVersion247": "1.0.0", - "_huntingQuerycontentId247": "12798858-1916-4b59-a85e-8a7a4f7b43cf", - "huntingQueryTemplateSpecName247": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('12798858-1916-4b59-a85e-8a7a4f7b43cf')))]" - }, - "huntingQueryObject248": { - "huntingQueryVersion248": "1.0.0", - "_huntingQuerycontentId248": "b78eddd9-ebe5-42ab-95b4-928a782b52b5", - "huntingQueryTemplateSpecName248": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b78eddd9-ebe5-42ab-95b4-928a782b52b5')))]" - }, - "huntingQueryObject249": { - "huntingQueryVersion249": "1.0.0", - "_huntingQuerycontentId249": "cbf3abc0-2b2d-4852-ab7a-9f7a1231997e", - "huntingQueryTemplateSpecName249": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cbf3abc0-2b2d-4852-ab7a-9f7a1231997e')))]" - }, - "huntingQueryObject250": { - "huntingQueryVersion250": "1.0.0", - "_huntingQuerycontentId250": "201cb524-b4b4-479a-9637-da35cfa1e30a", - "huntingQueryTemplateSpecName250": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('201cb524-b4b4-479a-9637-da35cfa1e30a')))]" - }, - "huntingQueryObject251": { - "huntingQueryVersion251": "1.0.0", - "_huntingQuerycontentId251": "abdca3e6-c198-404a-b95c-f09ddfed2027", - "huntingQueryTemplateSpecName251": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('abdca3e6-c198-404a-b95c-f09ddfed2027')))]" - }, - "huntingQueryObject252": { - "huntingQueryVersion252": "1.0.0", - "_huntingQuerycontentId252": "289283e9-9f63-488c-8d62-fe9c598f3cd5", - "huntingQueryTemplateSpecName252": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('289283e9-9f63-488c-8d62-fe9c598f3cd5')))]" - }, - "huntingQueryObject253": { - "huntingQueryVersion253": "1.0.0", - "_huntingQuerycontentId253": "300b0d05-e99e-4349-ab2b-ec12ff5c2da1", - "huntingQueryTemplateSpecName253": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('300b0d05-e99e-4349-ab2b-ec12ff5c2da1')))]" - }, - "huntingQueryObject254": { - "huntingQueryVersion254": "1.0.0", - "_huntingQuerycontentId254": "9c4359a1-0bf9-45b3-9a1a-f333c437a061", - "huntingQueryTemplateSpecName254": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9c4359a1-0bf9-45b3-9a1a-f333c437a061')))]" - }, - "huntingQueryObject255": { - "huntingQueryVersion255": "1.0.0", - "_huntingQuerycontentId255": "de480ca4-4095-4fef-b3e7-2a3f17f24e78", - "huntingQueryTemplateSpecName255": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('de480ca4-4095-4fef-b3e7-2a3f17f24e78')))]" - }, - "huntingQueryObject256": { - "huntingQueryVersion256": "1.0.0", - "_huntingQuerycontentId256": "a8ccbf35-4c6d-4a8f-8c42-04fd9b000a27", - "huntingQueryTemplateSpecName256": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a8ccbf35-4c6d-4a8f-8c42-04fd9b000a27')))]" - }, - "huntingQueryObject257": { - "huntingQueryVersion257": "1.0.0", - "_huntingQuerycontentId257": "e3b7b5c1-0e50-4dfb-b73a-c226636eaf58", - "huntingQueryTemplateSpecName257": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e3b7b5c1-0e50-4dfb-b73a-c226636eaf58')))]" - }, - "huntingQueryObject258": { - "huntingQueryVersion258": "1.0.0", - "_huntingQuerycontentId258": "27ee28e7-423b-48c9-a410-cbc6c8e21d25", - "huntingQueryTemplateSpecName258": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('27ee28e7-423b-48c9-a410-cbc6c8e21d25')))]" - }, - "huntingQueryObject259": { - "huntingQueryVersion259": "1.0.0", - "_huntingQuerycontentId259": "9d6c8c17-06b0-4044-b18e-35eb3dfc5cf2", - "huntingQueryTemplateSpecName259": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9d6c8c17-06b0-4044-b18e-35eb3dfc5cf2')))]" - }, - "huntingQueryObject260": { - "huntingQueryVersion260": "1.0.0", - "_huntingQuerycontentId260": "a1664330-810a-473b-b354-acbaa751a294", - "huntingQueryTemplateSpecName260": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a1664330-810a-473b-b354-acbaa751a294')))]" - }, - "huntingQueryObject261": { - "huntingQueryVersion261": "1.0.0", - "_huntingQuerycontentId261": "d24e9c4a-b72a-4a85-89cd-83760ae61155", - "huntingQueryTemplateSpecName261": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d24e9c4a-b72a-4a85-89cd-83760ae61155')))]" - }, - "huntingQueryObject262": { - "huntingQueryVersion262": "1.0.0", - "_huntingQuerycontentId262": "3f007cdc-86bf-4657-9015-05101a3e54f5", - "huntingQueryTemplateSpecName262": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3f007cdc-86bf-4657-9015-05101a3e54f5')))]" - }, - "huntingQueryObject263": { - "huntingQueryVersion263": "1.0.0", - "_huntingQuerycontentId263": "efe27064-6d35-4720-b7f5-e0326695613d", - "huntingQueryTemplateSpecName263": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('efe27064-6d35-4720-b7f5-e0326695613d')))]" - }, - "huntingQueryObject264": { - "huntingQueryVersion264": "1.0.0", - "_huntingQuerycontentId264": "bc46e331-3cb0-483d-9c90-989d2a59457f", - "huntingQueryTemplateSpecName264": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('bc46e331-3cb0-483d-9c90-989d2a59457f')))]" - }, - "huntingQueryObject265": { - "huntingQueryVersion265": "1.0.0", - "_huntingQuerycontentId265": "03e61096-20d0-46eb-b8e0-a507dd00a19f", - "huntingQueryTemplateSpecName265": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('03e61096-20d0-46eb-b8e0-a507dd00a19f')))]" - }, - "huntingQueryObject266": { - "huntingQueryVersion266": "1.0.0", - "_huntingQuerycontentId266": "f075d4c4-cf76-4e5d-9c2d-9ed524286316", - "huntingQueryTemplateSpecName266": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f075d4c4-cf76-4e5d-9c2d-9ed524286316')))]" - }, - "huntingQueryObject267": { - "huntingQueryVersion267": "1.0.0", - "_huntingQuerycontentId267": "891f4865-75e5-4d40-bc24-ebf97da3ca9a", - "huntingQueryTemplateSpecName267": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('891f4865-75e5-4d40-bc24-ebf97da3ca9a')))]" - }, - "huntingQueryObject268": { - "huntingQueryVersion268": "1.0.0", - "_huntingQuerycontentId268": "d823da0e-1334-4a66-8ff4-2c2c40d26295", - "huntingQueryTemplateSpecName268": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d823da0e-1334-4a66-8ff4-2c2c40d26295')))]" - }, - "huntingQueryObject269": { - "huntingQueryVersion269": "1.0.0", - "_huntingQuerycontentId269": "ba4f7e56-a2f8-4a30-b848-200fdc7fc3a2", - "huntingQueryTemplateSpecName269": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ba4f7e56-a2f8-4a30-b848-200fdc7fc3a2')))]" - }, - "huntingQueryObject270": { - "huntingQueryVersion270": "1.0.0", - "_huntingQuerycontentId270": "13260191-fb10-4a36-9ca1-2bbc0aaf77d0", - "huntingQueryTemplateSpecName270": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('13260191-fb10-4a36-9ca1-2bbc0aaf77d0')))]" - }, - "huntingQueryObject271": { - "huntingQueryVersion271": "1.0.0", - "_huntingQuerycontentId271": "08aff8c6-b983-43a3-be95-68a10c3d35e6", - "huntingQueryTemplateSpecName271": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('08aff8c6-b983-43a3-be95-68a10c3d35e6')))]" - }, - "huntingQueryObject272": { - "huntingQueryVersion272": "1.0.0", - "_huntingQuerycontentId272": "492f1ea1-37c3-410a-a2f2-4e4eae2ff7f9", - "huntingQueryTemplateSpecName272": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('492f1ea1-37c3-410a-a2f2-4e4eae2ff7f9')))]" - }, - "huntingQueryObject273": { - "huntingQueryVersion273": "1.1.0", - "_huntingQuerycontentId273": "5a84e13a-bb17-4124-9564-d74cdb84c124", - "huntingQueryTemplateSpecName273": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('5a84e13a-bb17-4124-9564-d74cdb84c124')))]" - }, - "huntingQueryObject274": { - "huntingQueryVersion274": "1.1.0", - "_huntingQuerycontentId274": "a937905e-ee5c-406c-ab86-8e2581240112", - "huntingQueryTemplateSpecName274": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a937905e-ee5c-406c-ab86-8e2581240112')))]" - }, - "huntingQueryObject275": { - "huntingQueryVersion275": "1.1.0", - "_huntingQuerycontentId275": "3a2fdf32-ebe7-4f65-a1c3-fc7faf23ae90", - "huntingQueryTemplateSpecName275": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3a2fdf32-ebe7-4f65-a1c3-fc7faf23ae90')))]" - }, - "huntingQueryObject276": { - "huntingQueryVersion276": "1.0.0", - "_huntingQuerycontentId276": "3eef362d-3aee-4950-9208-4afa6f7afbe9", - "huntingQueryTemplateSpecName276": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3eef362d-3aee-4950-9208-4afa6f7afbe9')))]" - }, - "huntingQueryObject277": { - "huntingQueryVersion277": "1.0.0", - "_huntingQuerycontentId277": "4620ece3-dceb-4151-8621-5a56351c97cd", - "huntingQueryTemplateSpecName277": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4620ece3-dceb-4151-8621-5a56351c97cd')))]" - }, - "huntingQueryObject278": { - "huntingQueryVersion278": "1.0.0", - "_huntingQuerycontentId278": "ab006655-d723-4844-9d5d-91cb3b020555", - "huntingQueryTemplateSpecName278": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ab006655-d723-4844-9d5d-91cb3b020555')))]" - }, - "huntingQueryObject279": { - "huntingQueryVersion279": "1.1.0", - "_huntingQuerycontentId279": "21bafecb-ae8f-4667-b7d6-144e047cb602", - "huntingQueryTemplateSpecName279": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('21bafecb-ae8f-4667-b7d6-144e047cb602')))]" - }, - "huntingQueryObject280": { - "huntingQueryVersion280": "1.0.0", - "_huntingQuerycontentId280": "5e8d5202-ffdc-4d16-ad33-d56eb319c175", - "huntingQueryTemplateSpecName280": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('5e8d5202-ffdc-4d16-ad33-d56eb319c175')))]" - }, - "huntingQueryObject281": { - "huntingQueryVersion281": "1.1.0", - "_huntingQuerycontentId281": "dbc25434-bbe7-4517-bf4b-48ad9cb4e980", - "huntingQueryTemplateSpecName281": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('dbc25434-bbe7-4517-bf4b-48ad9cb4e980')))]" - }, - "huntingQueryObject282": { - "huntingQueryVersion282": "1.0.0", - "_huntingQuerycontentId282": "dd9df55e-79b7-48e0-9d19-965fcadae5e9", - "huntingQueryTemplateSpecName282": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('dd9df55e-79b7-48e0-9d19-965fcadae5e9')))]" - }, - "huntingQueryObject283": { - "huntingQueryVersion283": "1.0.2", - "_huntingQuerycontentId283": "cdac93ef-56c0-45bf-9e7f-9cbf0ad06123", - "huntingQueryTemplateSpecName283": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cdac93ef-56c0-45bf-9e7f-9cbf0ad06123')))]" - }, - "huntingQueryObject284": { - "huntingQueryVersion284": "1.0.0", - "_huntingQuerycontentId284": "14694b88-a6e9-4cd1-9c4a-e382bdd82d8d", - "huntingQueryTemplateSpecName284": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('14694b88-a6e9-4cd1-9c4a-e382bdd82d8d')))]" - }, - "huntingQueryObject285": { - "huntingQueryVersion285": "1.0.0", - "_huntingQuerycontentId285": "bba7bbbe-5aa3-4c08-bd23-dd6cd8ccaf20", - "huntingQueryTemplateSpecName285": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('bba7bbbe-5aa3-4c08-bd23-dd6cd8ccaf20')))]" - }, - "huntingQueryObject286": { - "huntingQueryVersion286": "1.0.0", - "_huntingQuerycontentId286": "7a5597de-7e99-470d-944f-acb163b9cb14", - "huntingQueryTemplateSpecName286": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('7a5597de-7e99-470d-944f-acb163b9cb14')))]" - }, - "huntingQueryObject287": { - "huntingQueryVersion287": "1.0.0", - "_huntingQuerycontentId287": "58e6170e-0512-4485-9638-463fdde85b0e", - "huntingQueryTemplateSpecName287": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('58e6170e-0512-4485-9638-463fdde85b0e')))]" - }, - "huntingQueryObject288": { - "huntingQueryVersion288": "1.0.0", - "_huntingQuerycontentId288": "fe912310-32f5-4256-933b-d4b45e7e6e54", - "huntingQueryTemplateSpecName288": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('fe912310-32f5-4256-933b-d4b45e7e6e54')))]" - }, - "huntingQueryObject289": { - "huntingQueryVersion289": "1.0.0", - "_huntingQuerycontentId289": "35ca729c-04b4-4f6c-b383-caed1b85226e", - "huntingQueryTemplateSpecName289": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('35ca729c-04b4-4f6c-b383-caed1b85226e')))]" - }, - "huntingQueryObject290": { - "huntingQueryVersion290": "1.0.0", - "_huntingQuerycontentId290": "3842e70d-45be-43b1-8206-4ebc4c305f34", - "huntingQueryTemplateSpecName290": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3842e70d-45be-43b1-8206-4ebc4c305f34')))]" - }, - "huntingQueryObject291": { - "huntingQueryVersion291": "1.0.0", - "_huntingQuerycontentId291": "761230a3-71ad-4522-bfbc-1dca698ffc42", - "huntingQueryTemplateSpecName291": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('761230a3-71ad-4522-bfbc-1dca698ffc42')))]" - }, - "huntingQueryObject292": { - "huntingQueryVersion292": "1.0.0", - "_huntingQuerycontentId292": "81f02314-2ff5-45cb-a35d-0deb546a0104", - "huntingQueryTemplateSpecName292": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('81f02314-2ff5-45cb-a35d-0deb546a0104')))]" - }, - "huntingQueryObject293": { - "huntingQueryVersion293": "1.0.0", - "_huntingQuerycontentId293": "f350f0e7-0e52-434c-a113-197883219f00", - "huntingQueryTemplateSpecName293": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f350f0e7-0e52-434c-a113-197883219f00')))]" - }, - "huntingQueryObject294": { - "huntingQueryVersion294": "1.0.0", - "_huntingQuerycontentId294": "c5b3e559-7c44-442c-9e73-c753abb02c13", - "huntingQueryTemplateSpecName294": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('c5b3e559-7c44-442c-9e73-c753abb02c13')))]" - }, - "huntingQueryObject295": { - "huntingQueryVersion295": "1.0.0", - "_huntingQuerycontentId295": "0efbcea0-1dc0-4844-8a9c-3a1d98fc1697", - "huntingQueryTemplateSpecName295": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0efbcea0-1dc0-4844-8a9c-3a1d98fc1697')))]" - }, - "huntingQueryObject296": { - "huntingQueryVersion296": "1.0.0", - "_huntingQuerycontentId296": "3cc2127f-d9ca-46a0-9628-89f702be82b3", - "huntingQueryTemplateSpecName296": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3cc2127f-d9ca-46a0-9628-89f702be82b3')))]" - }, - "huntingQueryObject297": { - "huntingQueryVersion297": "1.0.0", - "_huntingQuerycontentId297": "0b5b076b-9a1c-440c-a11f-8471a75f46fd", - "huntingQueryTemplateSpecName297": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('0b5b076b-9a1c-440c-a11f-8471a75f46fd')))]" - }, - "huntingQueryObject298": { - "huntingQueryVersion298": "1.0.0", - "_huntingQuerycontentId298": "2d16b6fc-eb63-491c-a2c2-1160e2e41dcf", - "huntingQueryTemplateSpecName298": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2d16b6fc-eb63-491c-a2c2-1160e2e41dcf')))]" - }, - "huntingQueryObject299": { - "huntingQueryVersion299": "1.0.0", - "_huntingQuerycontentId299": "084a6349-b3d6-4528-91e4-4de5d52424e5", - "huntingQueryTemplateSpecName299": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('084a6349-b3d6-4528-91e4-4de5d52424e5')))]" - }, - "huntingQueryObject300": { - "huntingQueryVersion300": "1.0.0", - "_huntingQuerycontentId300": "8f404352-c4ff-44d1-8d70-c50ee2fad8f8", - "huntingQueryTemplateSpecName300": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8f404352-c4ff-44d1-8d70-c50ee2fad8f8')))]" - }, - "huntingQueryObject301": { - "huntingQueryVersion301": "1.0.0", - "_huntingQuerycontentId301": "daa347a4-8251-43a7-9730-32f22aa741ab", - "huntingQueryTemplateSpecName301": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('daa347a4-8251-43a7-9730-32f22aa741ab')))]" - }, - "huntingQueryObject302": { - "huntingQueryVersion302": "1.0.0", - "_huntingQuerycontentId302": "8722489a-d6f1-4b66-98e9-e3dfda902019", - "huntingQueryTemplateSpecName302": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8722489a-d6f1-4b66-98e9-e3dfda902019')))]" - }, - "huntingQueryObject303": { - "huntingQueryVersion303": "1.0.2", - "_huntingQuerycontentId303": "2bdd260c-c687-4cb2-9992-87e5ce677678", - "huntingQueryTemplateSpecName303": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2bdd260c-c687-4cb2-9992-87e5ce677678')))]" - }, - "huntingQueryObject304": { - "huntingQueryVersion304": "1.0.0", - "_huntingQuerycontentId304": "e17ddfc6-7478-443b-99ff-286f3d09b8aa", - "huntingQueryTemplateSpecName304": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e17ddfc6-7478-443b-99ff-286f3d09b8aa')))]" - }, - "huntingQueryObject305": { - "huntingQueryVersion305": "1.0.0", - "_huntingQuerycontentId305": "4095e430-d3f4-426f-92c5-aa5c5e137ca0", - "huntingQueryTemplateSpecName305": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4095e430-d3f4-426f-92c5-aa5c5e137ca0')))]" - }, - "huntingQueryObject306": { - "huntingQueryVersion306": "1.0.0", - "_huntingQuerycontentId306": "a7214393-9da7-432e-9b41-fb02b4f740bd", - "huntingQueryTemplateSpecName306": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a7214393-9da7-432e-9b41-fb02b4f740bd')))]" - }, - "huntingQueryObject307": { - "huntingQueryVersion307": "1.0.0", - "_huntingQuerycontentId307": "cedc5bfa-01f6-4e54-b87b-1edbe430e27a", - "huntingQueryTemplateSpecName307": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cedc5bfa-01f6-4e54-b87b-1edbe430e27a')))]" - }, - "huntingQueryObject308": { - "huntingQueryVersion308": "1.0.0", - "_huntingQuerycontentId308": "d0585c34-1b03-473c-938d-11fe73f7e053", - "huntingQueryTemplateSpecName308": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d0585c34-1b03-473c-938d-11fe73f7e053')))]" - }, - "huntingQueryObject309": { - "huntingQueryVersion309": "1.0.0", - "_huntingQuerycontentId309": "63142c12-5d8b-48cf-a0f6-b523c855497c", - "huntingQueryTemplateSpecName309": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('63142c12-5d8b-48cf-a0f6-b523c855497c')))]" - }, - "huntingQueryObject310": { - "huntingQueryVersion310": "1.0.0", - "_huntingQuerycontentId310": "96976bb1-1993-45b8-a477-8236ee93976b", - "huntingQueryTemplateSpecName310": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('96976bb1-1993-45b8-a477-8236ee93976b')))]" - }, - "huntingQueryObject311": { - "huntingQueryVersion311": "1.0.0", - "_huntingQuerycontentId311": "1ddee78f-7508-4f4a-9b6b-d2927724217d", - "huntingQueryTemplateSpecName311": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('1ddee78f-7508-4f4a-9b6b-d2927724217d')))]" - }, - "huntingQueryObject312": { - "huntingQueryVersion312": "1.0.0", - "_huntingQuerycontentId312": "1299962c-804e-459a-8d3d-41d68bc45ba2", - "huntingQueryTemplateSpecName312": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('1299962c-804e-459a-8d3d-41d68bc45ba2')))]" - }, - "huntingQueryObject313": { - "huntingQueryVersion313": "1.0.0", - "_huntingQuerycontentId313": "cb2fb8f9-89bd-485e-8422-da8cb6c7bc23", - "huntingQueryTemplateSpecName313": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cb2fb8f9-89bd-485e-8422-da8cb6c7bc23')))]" - }, - "huntingQueryObject314": { - "huntingQueryVersion314": "1.0.0", - "_huntingQuerycontentId314": "4f669adc-2c00-4bc8-896b-e59f068dcb18", - "huntingQueryTemplateSpecName314": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4f669adc-2c00-4bc8-896b-e59f068dcb18')))]" - }, - "huntingQueryObject315": { - "huntingQueryVersion315": "1.0.0", - "_huntingQuerycontentId315": "06ea5081-cdea-40c8-b829-240ece951243", - "huntingQueryTemplateSpecName315": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('06ea5081-cdea-40c8-b829-240ece951243')))]" - }, - "huntingQueryObject316": { - "huntingQueryVersion316": "1.0.0", - "_huntingQuerycontentId316": "f086d58b-c44b-4fae-903b-f65ad042a4ee", - "huntingQueryTemplateSpecName316": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f086d58b-c44b-4fae-903b-f65ad042a4ee')))]" - }, - "huntingQueryObject317": { - "huntingQueryVersion317": "1.0.0", - "_huntingQuerycontentId317": "88707168-d4a4-4ca7-a516-b2ee0310af1b", - "huntingQueryTemplateSpecName317": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('88707168-d4a4-4ca7-a516-b2ee0310af1b')))]" - }, - "huntingQueryObject318": { - "huntingQueryVersion318": "1.0.0", - "_huntingQuerycontentId318": "853bacff-45cf-42f2-b2a6-6727fcf183ef", - "huntingQueryTemplateSpecName318": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('853bacff-45cf-42f2-b2a6-6727fcf183ef')))]" - }, - "huntingQueryObject319": { - "huntingQueryVersion319": "1.0.0", - "_huntingQuerycontentId319": "829cf5ba-39d5-4986-814e-d46f8437c27b", - "huntingQueryTemplateSpecName319": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('829cf5ba-39d5-4986-814e-d46f8437c27b')))]" - }, - "huntingQueryObject320": { - "huntingQueryVersion320": "1.0.0", - "_huntingQuerycontentId320": "3dd9ab09-0ea3-4f47-ba10-f84045ab52c3", - "huntingQueryTemplateSpecName320": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3dd9ab09-0ea3-4f47-ba10-f84045ab52c3')))]" - }, - "huntingQueryObject321": { - "huntingQueryVersion321": "1.0.0", - "_huntingQuerycontentId321": "4dd31bd5-11a3-4b9c-a7c5-4927ab4f2a77", - "huntingQueryTemplateSpecName321": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4dd31bd5-11a3-4b9c-a7c5-4927ab4f2a77')))]" - }, - "huntingQueryObject322": { - "huntingQueryVersion322": "1.0.0", - "_huntingQuerycontentId322": "74cc0176-3900-440e-b179-45d6a957145a", - "huntingQueryTemplateSpecName322": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('74cc0176-3900-440e-b179-45d6a957145a')))]" - }, - "huntingQueryObject323": { - "huntingQueryVersion323": "1.0.0", - "_huntingQuerycontentId323": "e18109aa-f252-48ec-b115-1b7c16e1174f", - "huntingQueryTemplateSpecName323": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('e18109aa-f252-48ec-b115-1b7c16e1174f')))]" - }, - "huntingQueryObject324": { - "huntingQueryVersion324": "1.0.0", - "_huntingQuerycontentId324": "aa3a8508-c0ff-404d-8d5c-4e7f548b0d86", - "huntingQueryTemplateSpecName324": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('aa3a8508-c0ff-404d-8d5c-4e7f548b0d86')))]" - }, - "huntingQueryObject325": { - "huntingQueryVersion325": "1.0.0", - "_huntingQuerycontentId325": "9674f529-f0e9-4305-862d-479ccc9e28f1", - "huntingQueryTemplateSpecName325": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9674f529-f0e9-4305-862d-479ccc9e28f1')))]" - }, - "huntingQueryObject326": { - "huntingQueryVersion326": "1.0.0", - "_huntingQuerycontentId326": "180bacfd-18de-450a-8e0c-7d2fa399ca49", - "huntingQueryTemplateSpecName326": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('180bacfd-18de-450a-8e0c-7d2fa399ca49')))]" - }, - "huntingQueryObject327": { - "huntingQueryVersion327": "1.0.1", - "_huntingQuerycontentId327": "9582b09c-a5cd-4da0-8244-52cc952da158", - "huntingQueryTemplateSpecName327": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9582b09c-a5cd-4da0-8244-52cc952da158')))]" - }, - "huntingQueryObject328": { - "huntingQueryVersion328": "1.0.0", - "_huntingQuerycontentId328": "a2ad014d-0a3a-45eb-ad58-b20532b86015", - "huntingQueryTemplateSpecName328": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a2ad014d-0a3a-45eb-ad58-b20532b86015')))]" - }, - "huntingQueryObject329": { - "huntingQueryVersion329": "1.0.0", - "_huntingQuerycontentId329": "d0232a68-41e1-4fdf-aa17-bf67001fe7b2", - "huntingQueryTemplateSpecName329": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d0232a68-41e1-4fdf-aa17-bf67001fe7b2')))]" - }, - "huntingQueryObject330": { - "huntingQueryVersion330": "1.0.0", - "_huntingQuerycontentId330": "a5888069-ad78-4ac5-9241-5ee83eb19d5d", - "huntingQueryTemplateSpecName330": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a5888069-ad78-4ac5-9241-5ee83eb19d5d')))]" - }, - "huntingQueryObject331": { - "huntingQueryVersion331": "1.0.0", - "_huntingQuerycontentId331": "80067390-3954-4276-bbca-8d4be1df0591", - "huntingQueryTemplateSpecName331": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('80067390-3954-4276-bbca-8d4be1df0591')))]" - }, - "huntingQueryObject332": { - "huntingQueryVersion332": "1.0.0", - "_huntingQuerycontentId332": "cb7629af-4872-427a-9042-ce848c2f49e7", - "huntingQueryTemplateSpecName332": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('cb7629af-4872-427a-9042-ce848c2f49e7')))]" - }, - "huntingQueryObject333": { - "huntingQueryVersion333": "1.0.0", - "_huntingQuerycontentId333": "6ad2dbb3-40de-4e39-a3b0-5c8be4e37b7b", - "huntingQueryTemplateSpecName333": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6ad2dbb3-40de-4e39-a3b0-5c8be4e37b7b')))]" - }, - "huntingQueryObject334": { - "huntingQueryVersion334": "1.0.0", - "_huntingQuerycontentId334": "41614487-ccca-458e-81eb-dffbeba0b703", - "huntingQueryTemplateSpecName334": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('41614487-ccca-458e-81eb-dffbeba0b703')))]" - }, - "huntingQueryObject335": { - "huntingQueryVersion335": "1.0.0", - "_huntingQuerycontentId335": "370583ef-40d1-4d8e-a2e2-16095704f357", - "huntingQueryTemplateSpecName335": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('370583ef-40d1-4d8e-a2e2-16095704f357')))]" - }, - "huntingQueryObject336": { - "huntingQueryVersion336": "1.0.0", - "_huntingQuerycontentId336": "01d676ef-29fb-4974-9db1-763660d577fa", - "huntingQueryTemplateSpecName336": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('01d676ef-29fb-4974-9db1-763660d577fa')))]" - }, - "huntingQueryObject337": { - "huntingQueryVersion337": "1.0.0", - "_huntingQuerycontentId337": "7d5d4ac0-e3db-4ddc-9fd3-9894c7de2c5c", - "huntingQueryTemplateSpecName337": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('7d5d4ac0-e3db-4ddc-9fd3-9894c7de2c5c')))]" - }, - "huntingQueryObject338": { - "huntingQueryVersion338": "1.0.0", - "_huntingQuerycontentId338": "5dcb4965-db9c-4fee-a7b1-c178998ce5e8", - "huntingQueryTemplateSpecName338": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('5dcb4965-db9c-4fee-a7b1-c178998ce5e8')))]" - }, - "huntingQueryObject339": { - "huntingQueryVersion339": "1.0.0", - "_huntingQuerycontentId339": "f72e4cc0-1cb9-413a-8f56-f0363c205d1c", - "huntingQueryTemplateSpecName339": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f72e4cc0-1cb9-413a-8f56-f0363c205d1c')))]" - }, - "huntingQueryObject340": { - "huntingQueryVersion340": "1.0.0", - "_huntingQuerycontentId340": "6f0595a9-724e-4b19-8a9c-8a50d0ac2eef", - "huntingQueryTemplateSpecName340": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6f0595a9-724e-4b19-8a9c-8a50d0ac2eef')))]" - }, - "huntingQueryObject341": { - "huntingQueryVersion341": "1.0.0", - "_huntingQuerycontentId341": "2c96d709-274b-45b8-b53a-545124ac8d8a", - "huntingQueryTemplateSpecName341": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2c96d709-274b-45b8-b53a-545124ac8d8a')))]" - }, - "huntingQueryObject342": { - "huntingQueryVersion342": "1.0.0", - "_huntingQuerycontentId342": "57d825ee-1546-48af-b2d3-644731d21ad3", - "huntingQueryTemplateSpecName342": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('57d825ee-1546-48af-b2d3-644731d21ad3')))]" - }, - "huntingQueryObject343": { - "huntingQueryVersion343": "1.0.0", - "_huntingQuerycontentId343": "f9caad74-cd5a-4559-949a-6cd0f3376ff6", - "huntingQueryTemplateSpecName343": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f9caad74-cd5a-4559-949a-6cd0f3376ff6')))]" - }, - "huntingQueryObject344": { - "huntingQueryVersion344": "1.0.0", - "_huntingQuerycontentId344": "b232adb3-059b-4351-9e4b-78a3c15175e5", - "huntingQueryTemplateSpecName344": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b232adb3-059b-4351-9e4b-78a3c15175e5')))]" - }, - "huntingQueryObject345": { - "huntingQueryVersion345": "1.0.0", - "_huntingQuerycontentId345": "eee98563-fd77-4d6a-a1aa-e0e4952b5cf3", - "huntingQueryTemplateSpecName345": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('eee98563-fd77-4d6a-a1aa-e0e4952b5cf3')))]" - }, - "huntingQueryObject346": { - "huntingQueryVersion346": "1.0.0", - "_huntingQuerycontentId346": "f9ec4d6a-4112-4f4a-bbe9-71eb6f65ce3d", - "huntingQueryTemplateSpecName346": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('f9ec4d6a-4112-4f4a-bbe9-71eb6f65ce3d')))]" - }, - "huntingQueryObject347": { - "huntingQueryVersion347": "1.0.0", - "_huntingQuerycontentId347": "a52f16af-5632-420d-ae90-b1b8bd742af0", - "huntingQueryTemplateSpecName347": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a52f16af-5632-420d-ae90-b1b8bd742af0')))]" - }, - "huntingQueryObject348": { - "huntingQueryVersion348": "1.0.0", - "_huntingQuerycontentId348": "c8b12c34-4571-4d37-ae85-fafb02f8bc24", - "huntingQueryTemplateSpecName348": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('c8b12c34-4571-4d37-ae85-fafb02f8bc24')))]" - }, - "huntingQueryObject349": { - "huntingQueryVersion349": "1.0.0", - "_huntingQuerycontentId349": "3c9780f9-1784-48b3-b82e-d1e334c08ed2", - "huntingQueryTemplateSpecName349": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3c9780f9-1784-48b3-b82e-d1e334c08ed2')))]" - }, - "huntingQueryObject350": { - "huntingQueryVersion350": "1.0.0", - "_huntingQuerycontentId350": "b2ec7e00-f8a5-450a-81d9-ddb884162595", - "huntingQueryTemplateSpecName350": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b2ec7e00-f8a5-450a-81d9-ddb884162595')))]" - }, - "huntingQueryObject351": { - "huntingQueryVersion351": "1.0.0", - "_huntingQuerycontentId351": "9ddbd09d-6119-4e78-bf15-911c4113d608", - "huntingQueryTemplateSpecName351": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('9ddbd09d-6119-4e78-bf15-911c4113d608')))]" - }, - "huntingQueryObject352": { - "huntingQueryVersion352": "1.0.0", - "_huntingQuerycontentId352": "1be71088-f71c-43cc-9adc-9e5fd7a3a8c4", - "huntingQueryTemplateSpecName352": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('1be71088-f71c-43cc-9adc-9e5fd7a3a8c4')))]" - }, - "huntingQueryObject353": { - "huntingQueryVersion353": "1.0.0", - "_huntingQuerycontentId353": "293d6bbe-97b6-458e-8670-929e9f1756d2", - "huntingQueryTemplateSpecName353": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('293d6bbe-97b6-458e-8670-929e9f1756d2')))]" - }, - "huntingQueryObject354": { - "huntingQueryVersion354": "1.0.0", - "_huntingQuerycontentId354": "b5ac7138-d807-450e-9f67-dbdac948f651", - "huntingQueryTemplateSpecName354": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b5ac7138-d807-450e-9f67-dbdac948f651')))]" - }, - "huntingQueryObject355": { - "huntingQueryVersion355": "1.0.0", - "_huntingQuerycontentId355": "95f7ab0b-3025-487e-9523-1b68152f4b91", - "huntingQueryTemplateSpecName355": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('95f7ab0b-3025-487e-9523-1b68152f4b91')))]" - }, - "huntingQueryObject356": { - "huntingQueryVersion356": "1.0.0", - "_huntingQuerycontentId356": "d3427b51-d7b9-4610-a871-5738e59cfa93", - "huntingQueryTemplateSpecName356": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d3427b51-d7b9-4610-a871-5738e59cfa93')))]" - }, - "huntingQueryObject357": { - "huntingQueryVersion357": "1.0.0", - "_huntingQuerycontentId357": "22dd5345-f620-41b2-b319-a1b3cfa9cb8e", - "huntingQueryTemplateSpecName357": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('22dd5345-f620-41b2-b319-a1b3cfa9cb8e')))]" - }, - "huntingQueryObject358": { - "huntingQueryVersion358": "1.0.0", - "_huntingQuerycontentId358": "7d041b6d-973b-48aa-886d-d234047511f2", - "huntingQueryTemplateSpecName358": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('7d041b6d-973b-48aa-886d-d234047511f2')))]" - }, - "huntingQueryObject359": { - "huntingQueryVersion359": "1.0.0", - "_huntingQuerycontentId359": "b54359db-ca8c-4a11-98b7-0f320b870cbd", - "huntingQueryTemplateSpecName359": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('b54359db-ca8c-4a11-98b7-0f320b870cbd')))]" - }, - "huntingQueryObject360": { - "huntingQueryVersion360": "1.0.0", - "_huntingQuerycontentId360": "945a8419-d3ec-41ba-a4b3-c37303bd9458", - "huntingQueryTemplateSpecName360": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('945a8419-d3ec-41ba-a4b3-c37303bd9458')))]" - }, - "huntingQueryObject361": { - "huntingQueryVersion361": "1.0.0", - "_huntingQuerycontentId361": "ccaec93a-7231-4483-9d36-78106f0a8a1a", - "huntingQueryTemplateSpecName361": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ccaec93a-7231-4483-9d36-78106f0a8a1a')))]" - }, - "huntingQueryObject362": { - "huntingQueryVersion362": "1.0.0", - "_huntingQuerycontentId362": "60cf8dc6-b3f7-4bd9-b877-3ed9c9443750", - "huntingQueryTemplateSpecName362": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('60cf8dc6-b3f7-4bd9-b877-3ed9c9443750')))]" - }, - "huntingQueryObject363": { - "huntingQueryVersion363": "1.0.0", - "_huntingQuerycontentId363": "8c86aaf1-46c1-4eee-8953-60f163e83253", - "huntingQueryTemplateSpecName363": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('8c86aaf1-46c1-4eee-8953-60f163e83253')))]" - }, - "huntingQueryObject364": { - "huntingQueryVersion364": "1.0.0", - "_huntingQuerycontentId364": "3027abf0-a965-42bd-babe-79f34bbd9e7a", - "huntingQueryTemplateSpecName364": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3027abf0-a965-42bd-babe-79f34bbd9e7a')))]" - }, - "huntingQueryObject365": { - "huntingQueryVersion365": "1.0.0", - "_huntingQuerycontentId365": "ca968fd4-2778-4bca-9da3-2dd1f1b38746", - "huntingQueryTemplateSpecName365": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('ca968fd4-2778-4bca-9da3-2dd1f1b38746')))]" - }, - "huntingQueryObject366": { - "huntingQueryVersion366": "1.0.0", - "_huntingQuerycontentId366": "2a3fe5b0-9a99-467a-b5f9-57825530b22b", - "huntingQueryTemplateSpecName366": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2a3fe5b0-9a99-467a-b5f9-57825530b22b')))]" - }, - "huntingQueryObject367": { - "huntingQueryVersion367": "1.0.0", - "_huntingQuerycontentId367": "fd9d2289-a2c3-4634-8a87-abe4a7db896f", - "huntingQueryTemplateSpecName367": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('fd9d2289-a2c3-4634-8a87-abe4a7db896f')))]" - }, - "huntingQueryObject368": { - "huntingQueryVersion368": "1.0.0", - "_huntingQuerycontentId368": "04f08949-c44a-4c02-9d3c-ba40186ea6b2", - "huntingQueryTemplateSpecName368": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('04f08949-c44a-4c02-9d3c-ba40186ea6b2')))]" - }, - "huntingQueryObject369": { - "huntingQueryVersion369": "1.0.0", - "_huntingQuerycontentId369": "14d4474b-10d0-4d03-9938-98c8ef92f15a", - "huntingQueryTemplateSpecName369": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('14d4474b-10d0-4d03-9938-98c8ef92f15a')))]" - }, - "huntingQueryObject370": { - "huntingQueryVersion370": "1.0.0", - "_huntingQuerycontentId370": "2bf1fded-7eb8-4cff-9e1d-efd204cac3f6", - "huntingQueryTemplateSpecName370": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2bf1fded-7eb8-4cff-9e1d-efd204cac3f6')))]" - }, - "huntingQueryObject371": { - "huntingQueryVersion371": "1.0.0", - "_huntingQuerycontentId371": "3f252bcb-71a8-4c04-bed9-4dd53419ecb6", - "huntingQueryTemplateSpecName371": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('3f252bcb-71a8-4c04-bed9-4dd53419ecb6')))]" - }, - "huntingQueryObject372": { - "huntingQueryVersion372": "1.0.0", - "_huntingQuerycontentId372": "6b26701a-a1c7-4782-a662-f44cdca5bb5f", - "huntingQueryTemplateSpecName372": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('6b26701a-a1c7-4782-a662-f44cdca5bb5f')))]" - }, - "huntingQueryObject373": { - "huntingQueryVersion373": "1.0.0", - "_huntingQuerycontentId373": "97f19cad-130a-47b3-a3bb-cbc2e66845f0", - "huntingQueryTemplateSpecName373": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('97f19cad-130a-47b3-a3bb-cbc2e66845f0')))]" - }, - "huntingQueryObject374": { - "huntingQueryVersion374": "1.0.0", - "_huntingQuerycontentId374": "37511ce4-f88e-4e2d-b505-27411af1a226", - "huntingQueryTemplateSpecName374": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('37511ce4-f88e-4e2d-b505-27411af1a226')))]" - }, - "huntingQueryObject375": { - "huntingQueryVersion375": "1.0.0", - "_huntingQuerycontentId375": "97f0d020-be70-4732-b5d7-abcfeecc459c", - "huntingQueryTemplateSpecName375": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('97f0d020-be70-4732-b5d7-abcfeecc459c')))]" - }, - "huntingQueryObject376": { - "huntingQueryVersion376": "1.0.0", - "_huntingQuerycontentId376": "4ae87c11-4030-42cb-b87d-993198ca40e0", - "huntingQueryTemplateSpecName376": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4ae87c11-4030-42cb-b87d-993198ca40e0')))]" - }, - "huntingQueryObject377": { - "huntingQueryVersion377": "1.0.0", - "_huntingQuerycontentId377": "05d933db-f605-48d5-a177-af64be537cf4", - "huntingQueryTemplateSpecName377": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('05d933db-f605-48d5-a177-af64be537cf4')))]" - }, - "huntingQueryObject378": { - "huntingQueryVersion378": "1.0.0", - "_huntingQuerycontentId378": "2f8a0226-b3f3-4a31-b32b-2dd15d644625", - "huntingQueryTemplateSpecName378": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('2f8a0226-b3f3-4a31-b32b-2dd15d644625')))]" - }, - "huntingQueryObject379": { - "huntingQueryVersion379": "1.0.0", - "_huntingQuerycontentId379": "a92a3921-1a71-4a4d-8382-873b689ff7d8", - "huntingQueryTemplateSpecName379": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a92a3921-1a71-4a4d-8382-873b689ff7d8')))]" - }, - "huntingQueryObject380": { - "huntingQueryVersion380": "1.0.0", - "_huntingQuerycontentId380": "22811654-25ac-43d6-ba63-699ec29dd6af", - "huntingQueryTemplateSpecName380": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('22811654-25ac-43d6-ba63-699ec29dd6af')))]" - }, - "huntingQueryObject381": { - "huntingQueryVersion381": "1.0.0", - "_huntingQuerycontentId381": "13e20569-a96c-48c4-b0d7-3c2058d24245", - "huntingQueryTemplateSpecName381": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('13e20569-a96c-48c4-b0d7-3c2058d24245')))]" - }, - "huntingQueryObject382": { - "huntingQueryVersion382": "1.0.0", - "_huntingQuerycontentId382": "d31069b5-44a5-4a5d-96fa-68db27074023", - "huntingQueryTemplateSpecName382": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('d31069b5-44a5-4a5d-96fa-68db27074023')))]" - }, - "huntingQueryObject383": { - "huntingQueryVersion383": "1.0.0", - "_huntingQuerycontentId383": "07e1f2f5-3662-4e8b-8f52-5273d220976b", - "huntingQueryTemplateSpecName383": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('07e1f2f5-3662-4e8b-8f52-5273d220976b')))]" - }, - "huntingQueryObject384": { - "huntingQueryVersion384": "1.0.0", - "_huntingQuerycontentId384": "a0d5391b-a44c-433c-8e08-7137f6e4a23c", - "huntingQueryTemplateSpecName384": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('a0d5391b-a44c-433c-8e08-7137f6e4a23c')))]" - }, - "huntingQueryObject385": { - "huntingQueryVersion385": "1.0.0", - "_huntingQuerycontentId385": "effba60e-0a4a-4558-bbf6-4e099607d82e", - "huntingQueryTemplateSpecName385": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('effba60e-0a4a-4558-bbf6-4e099607d82e')))]" - }, - "huntingQueryObject386": { - "huntingQueryVersion386": "1.0.0", - "_huntingQuerycontentId386": "4bce2a7c-31fb-46e9-8487-ce611bd98004", - "huntingQueryTemplateSpecName386": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('4bce2a7c-31fb-46e9-8487-ce611bd98004')))]" - }, - "huntingQueryObject387": { - "huntingQueryVersion387": "1.0.0", - "_huntingQuerycontentId387": "88035c0e-0e2d-4805-a249-34d54a88c3fe", - "huntingQueryTemplateSpecName387": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring('88035c0e-0e2d-4805-a249-34d54a88c3fe')))]" - }, - "workbookVersion1": "4.0.0", - "workbookContentId1": "MicrosoftDefenderForOffice365detectionsandinsights", - "workbookId1": "[resourceId('Microsoft.Insights/workbooks', variables('workbookContentId1'))]", - "workbookTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-wb-',uniquestring(variables('_workbookContentId1'))))]", - "_workbookContentId1": "[variables('workbookContentId1')]", - "workspaceResourceId": "[resourceId('microsoft.OperationalInsights/Workspaces', parameters('workspace'))]", - "_workbookcontentProductId1": "[concat(take(variables('_solutionId'),50),'-','wb','-', uniqueString(concat(variables('_solutionId'),'-','Workbook','-',variables('_workbookContentId1'),'-', variables('workbookVersion1'))))]", - "workbookVersion2": "1.0.0", - "workbookContentId2": "MicrosoftDefenderForEndPoint", - "workbookId2": "[resourceId('Microsoft.Insights/workbooks', variables('workbookContentId2'))]", - "workbookTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-wb-',uniquestring(variables('_workbookContentId2'))))]", - "_workbookContentId2": "[variables('workbookContentId2')]", - "_workbookcontentProductId2": "[concat(take(variables('_solutionId'),50),'-','wb','-', uniqueString(concat(variables('_solutionId'),'-','Workbook','-',variables('_workbookContentId2'),'-', variables('workbookVersion2'))))]", - "workbookVersion3": "1.0.0", - "workbookContentId3": "MicrosoftDefenderForIdentity", - "workbookId3": "[resourceId('Microsoft.Insights/workbooks', variables('workbookContentId3'))]", - "workbookTemplateSpecName3": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-wb-',uniquestring(variables('_workbookContentId3'))))]", - "_workbookContentId3": "[variables('workbookContentId3')]", - "_workbookcontentProductId3": "[concat(take(variables('_solutionId'),50),'-','wb','-', uniqueString(concat(variables('_solutionId'),'-','Workbook','-',variables('_workbookContentId3'),'-', variables('workbookVersion3'))))]", "_solutioncontentProductId": "[concat(take(variables('_solutionId'),50),'-','sl','-', uniqueString(concat(variables('_solutionId'),'-','Solution','-',variables('_solutionId'),'-', variables('_solutionVersion'))))]" }, "resources": [ @@ -2316,7 +71,7 @@ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Microsoft Defender XDR data connector with template version 3.0.18", + "description": "Microsoft Defender XDR data connector with template version 3.2.1", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('dataConnectorVersion1')]", @@ -2569,7 +324,8 @@ "contentProductId": "[variables('_dataConnectorcontentProductId1')]", "id": "[variables('_dataConnectorcontentProductId1')]", "version": "[variables('dataConnectorVersion1')]" - } + }, + "condition": "[parameters('DeployDataConnector')]" }, { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", @@ -2599,7 +355,8 @@ "tier": "Microsoft", "link": "https://support.microsoft.com" } - } + }, + "condition": "[parameters('DeployDataConnector')]" }, { "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentId1'))]", @@ -2806,40374 +563,31831 @@ ], "id": "[variables('_uiConfigId1')]" } - } + }, + "condition": "[parameters('DeployDataConnector')]" }, { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentPackages", "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject1').analyticRuleTemplateSpecName1]", "location": "[parameters('workspace-location')]", + "properties": { + "version": "3.2.1", + "kind": "Solution", + "contentSchemaVersion": "3.0.0", + "displayName": "Microsoft Defender XDR", + "publisherDisplayName": "Microsoft Sentinel, Microsoft Corporation", + "descriptionHtml": "

Note: Please refer to the following before installing the solution:

\n

• Review the solution Release Notes

\n

• There may be known issues pertaining to this Solution, please refer to them before installing.

\n

Workbook-only authoring candidate for Microsoft Defender XDR: Defender for Endpoint, Defender for Identity, and Office 365 Detections & Insights. Includes the Microsoft Defender XDR connector prerequisite for panels using connected Sentinel SecurityAlert data. Detection rules, hunting queries, playbooks, and Sentinel workbook installation are excluded. Live installation and runtime qualification are not established.

\n

Data Connectors: 1, XDR Workbooks: 3

\n

Learn more about Microsoft Sentinel | Learn more about Solutions

\n", + "contentKind": "Solution", + "contentProductId": "[variables('_solutioncontentProductId')]", + "id": "[variables('_solutioncontentProductId')]", + "icon": "", + "contentId": "[variables('_solutionId')]", + "parentId": "[variables('_solutionId')]", + "source": { + "kind": "Solution", + "name": "Microsoft Defender XDR", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "Microsoft", + "email": "[variables('_email')]" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + }, + "dependencies": { + "operator": "AND", + "criteria": [ + { + "kind": "DataConnector", + "contentId": "[variables('_dataConnectorContentId1')]", + "version": "[variables('dataConnectorVersion1')]" + }, + { + "kind": "DefenderWorkbook", + "contentId": "05a7425a-fcda-5e24-823d-f8c9dd7a6215", + "version": "3.2.1" + }, + { + "kind": "DefenderWorkbook", + "contentId": "200c5dd2-9786-5619-8425-4508a238d76a", + "version": "3.2.1" + }, + { + "kind": "DefenderWorkbook", + "contentId": "e39952df-ba60-50cf-80f6-76f7a2ebf57c", + "version": "3.2.1" + } + ] + }, + "firstPublishDate": "2022-05-02", + "providers": [ + "Microsoft" + ], + "categories": { + "domains": [ + "Security - Threat Protection" + ] + } + }, + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/', variables('_solutionId'))]" + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2025-04-01", + "name": "DefenderWorkbook-6215edc38e31ea23679b02a59de10f4a", "dependsOn": [ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "PossiblePhishingwithCSL&NetworkSession_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "template": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject1').analyticRuleVersion1]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject1')._analyticRulecontentId1]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", + "languageVersion": "2.0", + "contentVersion": "1.0.0.0", + "imports": { + "MicrosoftSecurity": { + "provider": "MicrosoftSecurity", + "version": "1.0.0" + } + }, + "resources": { + "workbook": { + "import": "MicrosoftSecurity", + "type": "Microsoft.Security/workbooks@2026-06-01-preview", "properties": { - "description": "This query looks for malicious URL clicks in phishing email recognized by MDO in correlation with CommonSecurityLogs(CSL) & NetworkSession events. \nIf your workspace doesnt have one of the many data sources required for ASIM it may give informational error which can be safely ignored.", - "displayName": "Possible Phishing with CSL and Network Sessions", - "enabled": false, - "query": "//SuspiciousUrlClicked\nAlertEvidence\n| where ServiceSource =~ \"Microsoft Defender for Office 365\"\n| where EntityType =~ \"Url\"\n| project AlertId, RemoteUrl\n| join kind=inner (\nAlertEvidence\n| where ServiceSource =~ \"Microsoft Defender for Office 365\"\n| where EntityType =~ \"MailMessage\"\n| project AlertId, NetworkMessageId\n)\non AlertId\n| distinct RemoteUrl, NetworkMessageId\n| join EmailEvents on NetworkMessageId\n| distinct RemoteUrl, NetworkMessageId, RecipientEmailAddress, RecipientObjectId\n| join kind = inner IdentityInfo on $left.RecipientObjectId == $right.AccountObjectId\n| distinct RemoteUrl, NetworkMessageId, RecipientEmailAddress , RecipientObjectId, AccountSID\n| join kind = inner \n(DeviceEvents\n| where ActionType =~ \"BrowserLaunchedToOpenUrl\"| where isnotempty(RemoteUrl)\n| project UrlClickedByUserSid = RemoteUrl,\nInitiatingProcessAccountSid, DeviceName, DeviceId, InitiatingProcessFileName,\nInitiatingProcessAccountUpn, InitiatingProcessAccountName, InitiatingProcessAccountDomain\n)\non $left.AccountSID == $right.InitiatingProcessAccountSid and $left.RemoteUrl == $right.UrlClickedByUserSid\n| distinct RemoteUrl, NetworkMessageId, RecipientEmailAddress, RecipientObjectId,\n AccountSID, UrlClickedByUserSid, DeviceName, DeviceId, InitiatingProcessFileName,\n InitiatingProcessAccountUpn, InitiatingProcessAccountName, InitiatingProcessAccountDomain\n| join kind=inner\n(\n//Suspicious url clicked found in common security logs\nCommonSecurityLog\n| project TimeGenerated, DeviceVendor, DeviceProduct, DeviceAction, DestinationDnsDomain, DestinationIP, RequestURL, SourceIP, SourceHostName, RequestClientApplication\n) on $left.RemoteUrl== $right.RequestURL\n| join kind=inner\n(\n//Find the relevant network sessions\n_Im_NetworkSession\n| where isnotempty(DstIpAddr)\n| where not(ipv4_is_private(DstIpAddr))\n| project TimeGenerated, SrcIpAddr, SrcPortNumber, DstIpAddr, DstPortNumber, DstBytes, SrcBytes\n) on $left.DestinationIP == $right.DstIpAddr //The relevant network session being projected \n| summarize count() by TimeGenerated, RecipientEmailAddress, UrlClickedByUserSid, InitiatingProcessAccountUpn, InitiatingProcessAccountName, InitiatingProcessAccountDomain,\nDeviceName, InitiatingProcessFileName, DeviceProduct, DeviceAction, SourceIP, DestinationIP, RequestClientApplication\n| extend HostName = tostring(split(DeviceName, \".\")[0]), DomainIndex = toint(indexof(DeviceName, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(DeviceName, DomainIndex + 1), DeviceName)\n| extend RecipientEmailName = tostring(split(RecipientEmailAddress,'@',0)[0]), RecipientEmailUPNSuffix = tostring(split(RecipientEmailAddress,'@',1)[0])\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "AlertEvidence", - "EmailEvents", - "IdentityInfo", - "DeviceEvents", - "DeviceNetworkEvents" - ] - }, - { - "connectorId": "Zscaler", - "dataTypes": [ - "CommonSecurityLog" - ] - }, - { - "connectorId": "Fortinet", - "dataTypes": [ - "CommonSecurityLog" - ] - }, - { - "connectorId": "CheckPoint", - "dataTypes": [ - "CommonSecurityLog" - ] - }, - { - "connectorId": "PaloAltoNetworks", - "dataTypes": [ - "CommonSecurityLog" - ] - }, - { - "connectorId": "AWSS3", - "datatypes": [ - "AWSVPCFlow" - ] - }, - { - "connectorId": "WindowsForwardedEvents", - "dataTypes": [ - "WindowsEvent" - ] - }, - { - "connectorId": "SecurityEvents", - "dataTypes": [ - "SecurityEvent" - ] - }, - { - "connectorId": "WindowsSecurityEvents", - "dataTypes": [ - "SecurityEvent" - ] - }, - { - "connectorId": "MicrosoftSysmonForLinux", - "dataTypes": [ - "Syslog" - ] - }, - { - "connectorId": "AzureNSG", - "dataTypes": [ - "AzureDiagnostics" - ] - }, - { - "connectorId": "AzureMonitor(VMInsights)", - "dataTypes": [ - "VMConnection" - ] - }, - { - "connectorId": "AIVectraStream", - "dataTypes": [ - "VectraStream_CL" - ] - } - ], - "tactics": [ - "InitialAccess", - "CommandAndControl" - ], - "techniques": [ - "T1566", - "T1102" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "InitiatingProcessAccountUpn" - }, - { - "identifier": "Name", - "columnName": "InitiatingProcessAccountName" - }, - { - "identifier": "UPNSuffix", - "columnName": "InitiatingProcessAccountDomain" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "RecipientEmailAddress" - }, - { - "identifier": "Name", - "columnName": "RecipientEmailName" - }, - { - "identifier": "UPNSuffix", - "columnName": "RecipientEmailUPNSuffix" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "SourceIP" - } - ], - "entityType": "IP" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "DestinationIP" - } - ], - "entityType": "IP" + "id": "4fffade5-9b6b-51af-a33d-97641e240595", + "name": "MicrosoftDefenderForEndPoint", + "content": { + "version": "Notebook/1.0", + "items": [ + { + "type": 1, + "content": { + "json": "## Microsoft Defender for Endpoint (Preview)\n---\n\nA workbook to provide details about Microsoft Defender for Endpoint Advance Hunting to Overview & Analyse data brought through Microsoft Defender XDR Connector.\n\n\n" + }, + "name": "text - 2" + }, + { + "type": 9, + "content": { + "version": "KqlParameterItem/1.0", + "parameters": [ + { + "id": "b22a3bd7-19b3-495d-a0df-95a7a59d98ff", + "version": "KqlParameterItem/1.0", + "name": "TimeRange", + "type": 4, + "value": { + "durationMs": 172800000 + }, + "typeSettings": { + "selectableValues": [ + { + "durationMs": 300000 + }, + { + "durationMs": 900000 + }, + { + "durationMs": 1800000 + }, + { + "durationMs": 3600000 + }, + { + "durationMs": 14400000 + }, + { + "durationMs": 43200000 + }, + { + "durationMs": 86400000 + }, + { + "durationMs": 172800000 + }, + { + "durationMs": 259200000 + }, + { + "durationMs": 604800000 + }, + { + "durationMs": 1209600000 + }, + { + "durationMs": 2419200000 + }, + { + "durationMs": 2592000000 + }, + { + "durationMs": 5184000000 + }, + { + "durationMs": 7776000000 + } + ], + "allowCustom": true + }, + "timeContext": { + "durationMs": 86400000 + } + }, + { + "id": "f0450560-ef16-4aa9-a3ad-7485dd909587", + "version": "KqlParameterItem/1.0", + "name": "Help", + "type": 10, + "isRequired": true, + "typeSettings": { + "additionalResourceOptions": [] + }, + "jsonData": "[[{ \"value\": \"Yes\", \"label\": \"Yes\"},\r\n {\"value\": \"No\", \"label\": \"No\", \"selected\":true }]", + "label": "Show Help", + "value": "Yes" + } + ], + "style": "pills" + }, + "name": "parameters - 2" + }, + { + "type": 1, + "content": { + "json": "\r\n|Overview|Device|Network|File|\r\n|--------|------|-------|----|\r\n|MDE Tables Last Data Received|Source of the AV detections|Internet Connected Devices|FileActivityCount per Device|\r\n|Daily Data Flow on MDE Tables|Get stats on ASR audit events|Count By Machine Group|Count by InitiatingProcessAccountUpn|\r\n|Device Heartbeat|Get stats on ASR blocks|Count By Network Adaptor||\r\n|Device where files are copied to USB Drive|AV Detections with USB Disk Drive|TimeSeries on Network Activity||\r\n|Device Internet Connectivity Status |List files copied to USB mounted drives|Top 10 RemoteUrl accessed over TimeRange||\r\n|Device Count by DNS Suffix ||Tor Clients||\r\n|Device Microsoft Entra ID Join status ||||\r\n|Device ClientVersion ||||" + }, + "conditionalVisibility": { + "parameterName": "Help", + "comparison": "isEqualTo", + "value": "Yes" + }, + "name": "text - 8" + }, + { + "type": 11, + "content": { + "version": "LinkItem/1.0", + "style": "tabs", + "links": [ + { + "id": "454d4e02-26ba-4195-ae30-94752bbf4603", + "cellValue": "selectedTab", + "linkTarget": "parameter", + "linkLabel": "Overview", + "subTarget": "Overview", + "preText": "Overview", + "style": "link" + }, + { + "id": "3d902e84-3e5b-4631-85d1-c229ec2abf75", + "cellValue": "selectedTab", + "linkTarget": "parameter", + "linkLabel": "Device", + "subTarget": "Device", + "style": "link" + }, + { + "id": "bbc20288-b398-4f63-b7a9-e3830213bb34", + "cellValue": "selectedTab", + "linkTarget": "parameter", + "linkLabel": "Network", + "subTarget": "Network", + "style": "link" + }, + { + "id": "edab4a44-8ca3-4ba1-bede-4186f4376d28", + "cellValue": "selectedTab", + "linkTarget": "parameter", + "linkLabel": "File", + "subTarget": "File", + "style": "link" + } + ] + }, + "name": "links - 3" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "union \r\nisfuzzy = true\r\n(DeviceInfo | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type= \"DeviceInfo\" | extend Description = \"Machine information (including OS information)\"),\r\n(DeviceNetworkInfo | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceNetworkInfo\" | extend Description = \"Network properties of machines\"),\r\n(DeviceProcessEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceProcessEvents\" | extend Description = \"Process creation and related events\"),\r\n(DeviceNetworkEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceNetworkEvents\" | extend Description = \"Network connection and related events\"),\r\n(DeviceFileEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceFileEvents\" | extend Description = \"File creation, modification, and other file system events\"),\r\n(DeviceRegistryEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceRegistryEvents\" | extend Description = \"Creation and modification of registry entries\"),\r\n(DeviceLogonEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceLogonEvents\" | extend Description = \"Sign-ins and other authentication events\"),\r\n(DeviceImageLoadEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceImageLoadEvents\" | extend Description = \"DLL loading events\"),\r\n(DeviceEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceEvents\" | extend Description = \"Additional events types\"),\r\n(DeviceFileCertificateInfo | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceFileCertificateInfo\" | extend Description = \"Certificate information of signed files)\")\r\n| extend [\"Last Log Received At (Local Time)\"] = TimeGenerated\r\n| project Type, Description, [\"Last Log Received At (Local Time)\"]", + "size": 0, + "title": "MDE Tables Last Data Received based on {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Type", + "formatter": 0, + "numberFormat": { + "unit": 0, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Last Log Received At", + "formatter": 6, + "dateFormat": { + "showUtcTime": null, + "formatName": "fullDateTimePattern" + } + } + ], + "filter": true + } + }, + "name": "query - 9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let AllDeviceNames = DeviceInfo | distinct DeviceId, DeviceName;\nlet DeviceEventSummary = DeviceEvents | extend Type = \"DeviceEvents\" | summarize count() by DeviceId, Type, bin(TimeGenerated,1d);\nlet DeviceNetworkEventsSummary = DeviceNetworkEvents | extend Type = \"DeviceNetworkEvents\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\nlet DeviceNetworkInfoSummary = DeviceNetworkInfo | extend Type = \"DeviceNetworkInfo\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\nlet DeviceLogonEventsSummary = DeviceLogonEvents | extend Type = \"DeviceLogonEvents\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\nlet DeviceRegistryEventsSummary = DeviceRegistryEvents | extend Type = \"DeviceRegistryEvents\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\nlet DeviceProcessEventsSummary = DeviceProcessEvents | extend Type = \"DeviceProcessEvents\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\n(DeviceEventSummary\n| union DeviceNetworkEventsSummary,\nDeviceNetworkEventsSummary,\nDeviceNetworkInfoSummary,\nDeviceLogonEventsSummary,\nDeviceRegistryEventsSummary,\nDeviceProcessEventsSummary)\n| join kind=inner ( \nAllDeviceNames\n)\non $left.DeviceId == $right.DeviceId\n| project-reorder Type, TimeGenerated, count_\n//| project-away DeviceId, DeviceId1", + "size": 1, + "title": "Daily Data Flow on MDE Tables over {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "timechart", + "chartSettings": { + "xAxis": "count_" + } + }, + "name": "query - 2" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceInfo \r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| extend ParsedFields=parse_json(LoggedOnUsers)[0]\r\n| extend DurationAtLeast= format_timespan(now()-TimeGenerated,'dd:hh:mm:ss')\r\n| project DurationAtLeast,TimeGenerated,DeviceName,DomainName=ParsedFields.DomainName,UserName=ParsedFields.UserName\r\n| order by DurationAtLeast asc", + "size": 0, + "title": "Device Heartbeat from TimeTange {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "filter": true + } + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let UsbDriveMount = DeviceEvents\r\n| where ActionType==\"UsbDriveMounted\"\r\n| extend ParsedFields=parse_json(AdditionalFields)\r\n| project DeviceId, DeviceName, DriveLetter=ParsedFields.DriveLetter, MountTime=Timestamp,\r\nProductName=ParsedFields.ProductName,SerialNumber=ParsedFields.SerialNumber,Manufacturer=ParsedFields.Manufacturer\r\n| order by DeviceId asc, MountTime desc;\r\nlet FileCreation = DeviceFileEvents\r\n| where InitiatingProcessAccountName != \"system\"\r\n| where ActionType == \"FileCreated\"\r\n| where FolderPath !startswith \"C:\\\\\"\r\n| where FolderPath !startswith \"\\\\\"\r\n| project ReportId,DeviceId,InitiatingProcessAccountDomain,\r\nInitiatingProcessAccountName,InitiatingProcessAccountUpn,\r\nFileName, FolderPath, SHA256, Timestamp, SensitivityLabel, IsAzureInfoProtectionApplied\r\n| order by DeviceId asc, Timestamp desc;\r\nFileCreation | lookup kind=inner (UsbDriveMount) on DeviceId\r\n| where FolderPath startswith DriveLetter\r\n| where Timestamp >= MountTime\r\n| partition by ReportId ( top 1 by MountTime )\r\n| order by DeviceId asc, Timestamp desc\r\n| summarize FileCount = count() by DeviceName\r\n| order by FileCount desc", + "size": 1, + "title": "Device where files are copied to USB Drive from TimeTange {TimeRange}", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FileCount", + "formatter": 8, + "formatOptions": { + "palette": "red" + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "query - 0 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkInfo\r\n| extend ConnectedNetworks = todynamic(tostring(ConnectedNetworks)) \r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| mvexpand ConnectedNetworks\r\n| summarize count() by tostring(ConnectedNetworks.IsConnectedToInternet)", + "size": 1, + "title": "Device Internet Connectivity Status from TimeTange {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FileCount", + "formatter": 8, + "formatOptions": { + "palette": "red" + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "query - 0 - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceInfo\r\n| where isnotempty(OSPlatform)\r\n| summarize arg_max(Timestamp, DeviceName) by DeviceId\r\n| extend DeviceMachineName = split(DeviceName, '.')[0]\r\n| extend DeviceDomain = substring(DeviceName, strlen(DeviceMachineName) + 1, strlen(DeviceName) - strlen(DeviceMachineName) - 1)\r\n| summarize count() by DeviceDomain", + "size": 1, + "title": "Device Count by DNS Suffix", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "gridSettings": { + "filter": true + }, + "chartSettings": { + "showMetrics": false, + "showLegend": true + } + }, + "customWidth": "30", + "name": "query - 0 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceInfo\r\n| where isnotempty(OSPlatform)\r\n| summarize arg_max(TimeGenerated, *) by DeviceId\r\n| summarize count() by tostring(IsAzureADJoined)", + "size": 1, + "title": "Device EntraID Join status", + "queryType": "advancedHunting", + "visualization": "piechart", + "gridSettings": { + "filter": true + }, + "chartSettings": { + "showMetrics": false, + "showLegend": true + } + }, + "customWidth": "30", + "name": "query - 0 - Copy - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceInfo\r\n| where isnotempty(OSPlatform)\r\n| summarize arg_max(TimeGenerated, *) by DeviceId\r\n| summarize count() by ClientVersion", + "size": 1, + "title": "Device ClientVersion", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "gridSettings": { + "filter": true + }, + "chartSettings": { + "showMetrics": false, + "showLegend": true + } + }, + "customWidth": "30", + "name": "query - 0 - Copy - Copy - Copy - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "selectedTab", + "comparison": "isEqualTo", + "value": "Overview" + }, + "name": "groupOverview" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows the source of the AV detections (e.g., the website the file was downloaded from etc.)\r\n//\r\n//Get the list of AV detections\r\nlet avDetections =\r\nDeviceEvents\r\n| where ActionType == \"AntivirusDetection\" and isnotempty(MD5)\r\n| extend ParsedFields=parse_json(AdditionalFields)\r\n| project Timestamp, DeviceName, ThreatName=tostring(ParsedFields.ThreatName), FileName, FolderPath, MD5;\r\n//Get a list of file creations\r\nlet fileCreations =\r\nDeviceFileEvents \r\n| where (isnotempty(FileOriginReferrerUrl) or isnotempty(FileOriginUrl)) and isnotempty(MD5)\r\n| project MD5, FileOriginUrl, FileOriginReferrerUrl, InitiatingProcessFileName, InitiatingProcessParentFileName;\r\n//Join the file creations and AV detections on the MD5 of the file\r\navDetections | join kind=inner (fileCreations) on MD5\r\n| project-away MD51 //Remove the duplicated MD5 field\r\n| sort by Timestamp desc ", + "size": 0, + "title": "Source of the AV detections for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "filter": true + } + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceEvents\r\n| where ActionType startswith \"Asr\" and ActionType endswith \"Audited\"\r\n// Count total stats - count events and machines per rule\r\n| summarize EventCount=count(), MachinesCount=dcount(DeviceId) by ActionType", + "size": 0, + "title": "Get stats on ASR audit events - count events and machines per rule for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 1" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceEvents\r\n| where ActionType startswith \"Asr\" and ActionType endswith \"Blocked\"\r\n// Count total stats - count events and machines per rule\r\n| summarize EventCount=count(), MachinesCount=dcount(DeviceId) by ActionType", + "size": 0, + "title": "Get stats on ASR blocks - count events and machines per rule for {TimeRange}", + "queryType": "advancedHunting" + }, + "name": "query - 1 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query make a best-guess detection regarding which removable media device caused an AV detection\r\n//The query is best run over 30 days to get the full USB history\r\n//\r\n//Get a list of USB AV detections. This assumes any path not beginning with C is a removable/USB device\r\nlet usbDetections =\r\n DeviceEvents\r\n | where ActionType == \"AntivirusDetection\" and FolderPath !startswith \"c\" and FolderPath matches regex \"^[A-Za-z]{1}\"\r\n | extend ParsedFields=parse_json(AdditionalFields)\r\n | project DetectionTime=Timestamp, DeviceName, ThreatName=tostring(ParsedFields.ThreatName), FileName, FolderPath;\r\n//Get a list of USB disk drive connections, grouped by computer name and DeviceID\r\nlet usbConnections = \r\n DeviceEvents\r\n | where ActionType == \"PnpDeviceConnected\"\r\n | extend parsed=parse_json(AdditionalFields)\r\n | project Timestamp, DeviceName, DeviceId=tostring(parsed.DeviceId), ClassName=tostring(parsed.ClassName)\r\n | where ClassName == \"DiskDrive\"\r\n | summarize UsbFirstSeen=min(Timestamp), UsbLastSeen=max(Timestamp) by DeviceId, DeviceName;\r\n//Join USB AV detections and connections, where the detection occurs after the USB has been plugged in\r\nusbDetections | join kind=inner (usbConnections) on DeviceName | where DetectionTime > UsbFirstSeen and DetectionTime < UsbLastSeen\r\n| project DetectionTime, DeviceName, ThreatName, FileName, FolderPath, DeviceId, UsbFirstSeen, UsbLastSeen\r\n| sort by DetectionTime desc", + "size": 0, + "title": "AV Detections with USB Disk Drive for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 3" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let UsbDriveMount = DeviceEvents\r\n| where ActionType==\"UsbDriveMounted\"\r\n| extend ParsedFields=parse_json(AdditionalFields)\r\n| project DeviceId, DeviceName, DriveLetter=ParsedFields.DriveLetter, MountTime=Timestamp,\r\nProductName=ParsedFields.ProductName,SerialNumber=ParsedFields.SerialNumber,Manufacturer=ParsedFields.Manufacturer\r\n| order by DeviceId asc, MountTime desc;\r\nlet FileCreation = DeviceFileEvents\r\n| where InitiatingProcessAccountName != \"system\"\r\n| where ActionType == \"FileCreated\"\r\n| where FolderPath !startswith \"C:\\\\\"\r\n| where FolderPath !startswith \"\\\\\"\r\n| project ReportId,DeviceId,InitiatingProcessAccountDomain,\r\nInitiatingProcessAccountName,InitiatingProcessAccountUpn,\r\nFileName, FolderPath, SHA256, Timestamp, SensitivityLabel, IsAzureInfoProtectionApplied\r\n| order by DeviceId asc, Timestamp desc;\r\nFileCreation | lookup kind=inner (UsbDriveMount) on DeviceId\r\n| where FolderPath startswith DriveLetter\r\n| where Timestamp >= MountTime\r\n| partition by ReportId ( top 1 by MountTime )\r\n| order by DeviceId asc, Timestamp desc", + "size": 0, + "title": "List files copied to USB mounted drives for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 4" + } + ] + }, + "conditionalVisibility": { + "parameterName": "selectedTab", + "comparison": "isEqualTo", + "value": "Device" + }, + "name": "groupDevice" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkInfo\r\n| extend ConnectedNetworks = todynamic(tostring(ConnectedNetworks)) \r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| mv-apply ConnectedNetworks on \r\n(\r\nwhere ConnectedNetworks.IsConnectedToInternet == true\r\n)\r\n| project DeviceName, DefaultGateways, IPv4Dhcp, IPv6Dhcp,MacAddress,MachineGroup, ConnectedNetworks.IsConnectedToInternet", + "size": 0, + "title": "Internet Connected Devices for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkInfo\r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| summarize count() by MachineGroup", + "size": 0, + "title": "Count By Machine Group for {TimeRange}", + "queryType": "advancedHunting", + "gridSettings": { + "filter": true + } + }, + "name": "query - 0 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkInfo\r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| summarize count() by NetworkAdapterType, NetworkAdapterStatus", + "size": 0, + "title": "Count By Network Adaptor", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "filter": true + } + }, + "name": "query - 0 - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkEvents\r\n| summarize count() by DeviceName, DeviceId,bin( TimeGenerated,5m)", + "size": 0, + "title": "TimeSeries on Network Activity for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "timechart" + }, + "name": "query - 0 - Copy - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkEvents\r\n| where isnotempty(RemoteUrl)\r\n| summarize count() by RemoteUrl\r\n| order by count_ desc\r\n| limit 10", + "size": 0, + "title": "Top 10 RemoteUrl accessed over TimeRange {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "categoricalbar" + }, + "name": "query - 0 - Copy - Copy - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query looks for Tor client, or for a common Tor plugin called Meek.\r\n// We query for active Tor connections, but could have alternatively looked for active Tor runs (ProcessCreateEvents) or Tor downloads (DeviceFileEvents)\r\n// To read more about this technique, see:\r\n// Tor: https://attack.mitre.org/wiki/Software/S0183#Techniques_Used\r\n// Meek plugin: https://attack.mitre.org/wiki/Software/S0175\r\n// Multi-hop proxy technique: https://attack.mitre.org/wiki/Technique/T1188\r\n// Tags: #Tor, #MultiHopProxy, #CnC\r\nDeviceNetworkEvents \r\n| where Timestamp < ago(3d) and InitiatingProcessFileName in~ (\"tor.exe\", \"meek-client.exe\")\r\n// Returns MD5 hashes of files used by Tor, to enable you to block them.\r\n// We count how prevalent each file is (by machines) and show examples for some of them (up to 5 machine names per hash).\r\n| summarize MachineCount=dcount(DeviceName), MachineNames=makeset(DeviceName, 5) by InitiatingProcessMD5\r\n| order by MachineCount desc", + "size": 0, + "title": "Tor Clients for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 5" + } + ] + }, + "conditionalVisibility": { + "parameterName": "selectedTab", + "comparison": "isEqualTo", + "value": "Network" + }, + "name": "groupNetwork" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceFileEvents\r\n| summarize FileActivityCount = count() by DeviceName", + "size": 0, + "title": "FileActivityCount per Device for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "unstackedbar" + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceFileEvents\r\n| summarize count() by InitiatingProcessAccountUpn", + "size": 0, + "title": "Count by InitiatingProcessAccountUpn for {TimeRange}", + "queryType": "advancedHunting", + "visualization": "unstackedbar" + }, + "name": "query - 0 - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "selectedTab", + "comparison": "isEqualTo", + "value": "File" + }, + "name": "groupFile" + } + ], + "fromTemplateId": "sentinel-MicrosoftDefenderForEndPoint", + "$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json", + "contentProvenance": { + "packageId": "azuresentinel.azure-sentinel-solution-microsoft365defender", + "packageVersion": "3.2.1", + "contentId": "05a7425a-fcda-5e24-823d-f8c9dd7a6215", + "contentVersion": "3.2.1" } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject1').analyticRuleId1,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 1", - "parentId": "[variables('analyticRuleObject1').analyticRuleId1]", - "contentId": "[variables('analyticRuleObject1')._analyticRulecontentId1]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject1').analyticRuleVersion1]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" } } } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject1')._analyticRulecontentId1]", - "contentKind": "AnalyticsRule", - "displayName": "Possible Phishing with CSL and Network Sessions", - "contentProductId": "[variables('analyticRuleObject1')._analyticRulecontentProductId1]", - "id": "[variables('analyticRuleObject1')._analyticRulecontentProductId1]", - "version": "[variables('analyticRuleObject1').analyticRuleVersion1]" - } + } + } + }, + "condition": "[parameters('DeployDefenderWorkbook')]" }, { "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject2').analyticRuleTemplateSpecName2]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-dwb-',uniqueString('05a7425a-fcda-5e24-823d-f8c9dd7a6215')))]", "location": "[parameters('workspace-location')]", "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', 'DefenderWorkbook-6215edc38e31ea23679b02a59de10f4a')]", "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SUNSPOTHashes_AnalyticalRules Analytics Rule with template version 3.0.18", + "description": "Defender Workbook: MicrosoftDefenderForEndPoint", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject2').analyticRuleVersion2]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject2')._analyticRulecontentId2]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query uses Microsoft Defender for Endpoint data to look for IoCs associated with the SUNSPOT malware shared by Crowdstrike.\nMore details: \n - https://www.crowdstrike.com/blog/sunspot-malware-technical-analysis/\n - https://techcommunity.microsoft.com/blog/microsoftsentinelblog/monitoring-the-software-supply-chain-with-azure-sentinel/2176463/", - "displayName": "SUNSPOT malware hashes", - "enabled": false, - "query": "let SUNSPOT_Hashes = dynamic([\"c45c9bda8db1d470f1fd0dcc346dc449839eb5ce9a948c70369230af0b3ef168\", \"0819db19be479122c1d48743e644070a8dc9a1c852df9a8c0dc2343e904da389\"]);\nunion isfuzzy=true(\nDeviceEvents\n| where InitiatingProcessSHA256 in (SUNSPOT_Hashes)),\n(DeviceImageLoadEvents\n| where InitiatingProcessSHA256 in (SUNSPOT_Hashes))\n| extend timestamp=TimeGenerated\n| extend HostName = tostring(split(DeviceName, \".\")[0]), DomainIndex = toint(indexof(DeviceName, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(DeviceName, DomainIndex + 1), DeviceName)\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceImageLoadEvents", - "DeviceEvents" - ] - } - ], - "tactics": [ - "Persistence" - ], - "techniques": [ - "T1554" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "InitiatingProcessAccountUpn" - }, - { - "identifier": "Name", - "columnName": "InitiatingProcessAccountName" - }, - { - "identifier": "UPNSuffix", - "columnName": "InitiatingProcessAccountDomain" - } - ], - "entityType": "Account" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject2').analyticRuleId2,'/'))))]", + "languageVersion": "2.0", + "contentVersion": "1.0.0.0", + "imports": { + "MicrosoftSecurity": { + "provider": "MicrosoftSecurity", + "version": "1.0.0" + } + }, + "resources": { + "workbook": { + "import": "MicrosoftSecurity", + "type": "Microsoft.Security/workbooks@2026-06-01-preview", "properties": { - "description": "Microsoft Defender XDR Analytics Rule 2", - "parentId": "[variables('analyticRuleObject2').analyticRuleId2]", - "contentId": "[variables('analyticRuleObject2')._analyticRulecontentId2]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject2').analyticRuleVersion2]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } + "id": "4fffade5-9b6b-51af-a33d-97641e240595", + "name": "MicrosoftDefenderForEndPoint", + "content": { + "version": "Notebook/1.0", + "items": [ + { + "type": 1, + "content": { + "json": "## Microsoft Defender for Endpoint (Preview)\n---\n\nA workbook to provide details about Microsoft Defender for Endpoint Advance Hunting to Overview & Analyse data brought through Microsoft Defender XDR Connector.\n\n\n" + }, + "name": "text - 2" + }, + { + "type": 9, + "content": { + "version": "KqlParameterItem/1.0", + "parameters": [ + { + "id": "b22a3bd7-19b3-495d-a0df-95a7a59d98ff", + "version": "KqlParameterItem/1.0", + "name": "TimeRange", + "type": 4, + "value": { + "durationMs": 172800000 + }, + "typeSettings": { + "selectableValues": [ + { + "durationMs": 300000 + }, + { + "durationMs": 900000 + }, + { + "durationMs": 1800000 + }, + { + "durationMs": 3600000 + }, + { + "durationMs": 14400000 + }, + { + "durationMs": 43200000 + }, + { + "durationMs": 86400000 + }, + { + "durationMs": 172800000 + }, + { + "durationMs": 259200000 + }, + { + "durationMs": 604800000 + }, + { + "durationMs": 1209600000 + }, + { + "durationMs": 2419200000 + }, + { + "durationMs": 2592000000 + }, + { + "durationMs": 5184000000 + }, + { + "durationMs": 7776000000 + } + ], + "allowCustom": true + }, + "timeContext": { + "durationMs": 86400000 + } + }, + { + "id": "f0450560-ef16-4aa9-a3ad-7485dd909587", + "version": "KqlParameterItem/1.0", + "name": "Help", + "type": 10, + "isRequired": true, + "typeSettings": { + "additionalResourceOptions": [] + }, + "jsonData": "[[{ \"value\": \"Yes\", \"label\": \"Yes\"},\r\n {\"value\": \"No\", \"label\": \"No\", \"selected\":true }]", + "label": "Show Help", + "value": "Yes" + } + ], + "style": "pills" + }, + "name": "parameters - 2" + }, + { + "type": 1, + "content": { + "json": "\r\n|Overview|Device|Network|File|\r\n|--------|------|-------|----|\r\n|MDE Tables Last Data Received|Source of the AV detections|Internet Connected Devices|FileActivityCount per Device|\r\n|Daily Data Flow on MDE Tables|Get stats on ASR audit events|Count By Machine Group|Count by InitiatingProcessAccountUpn|\r\n|Device Heartbeat|Get stats on ASR blocks|Count By Network Adaptor||\r\n|Device where files are copied to USB Drive|AV Detections with USB Disk Drive|TimeSeries on Network Activity||\r\n|Device Internet Connectivity Status |List files copied to USB mounted drives|Top 10 RemoteUrl accessed over TimeRange||\r\n|Device Count by DNS Suffix ||Tor Clients||\r\n|Device Microsoft Entra ID Join status ||||\r\n|Device ClientVersion ||||" + }, + "conditionalVisibility": { + "parameterName": "Help", + "comparison": "isEqualTo", + "value": "Yes" + }, + "name": "text - 8" + }, + { + "type": 11, + "content": { + "version": "LinkItem/1.0", + "style": "tabs", + "links": [ + { + "id": "454d4e02-26ba-4195-ae30-94752bbf4603", + "cellValue": "selectedTab", + "linkTarget": "parameter", + "linkLabel": "Overview", + "subTarget": "Overview", + "preText": "Overview", + "style": "link" + }, + { + "id": "3d902e84-3e5b-4631-85d1-c229ec2abf75", + "cellValue": "selectedTab", + "linkTarget": "parameter", + "linkLabel": "Device", + "subTarget": "Device", + "style": "link" + }, + { + "id": "bbc20288-b398-4f63-b7a9-e3830213bb34", + "cellValue": "selectedTab", + "linkTarget": "parameter", + "linkLabel": "Network", + "subTarget": "Network", + "style": "link" + }, + { + "id": "edab4a44-8ca3-4ba1-bede-4186f4376d28", + "cellValue": "selectedTab", + "linkTarget": "parameter", + "linkLabel": "File", + "subTarget": "File", + "style": "link" + } + ] + }, + "name": "links - 3" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "union \r\nisfuzzy = true\r\n(DeviceInfo | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type= \"DeviceInfo\" | extend Description = \"Machine information (including OS information)\"),\r\n(DeviceNetworkInfo | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceNetworkInfo\" | extend Description = \"Network properties of machines\"),\r\n(DeviceProcessEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceProcessEvents\" | extend Description = \"Process creation and related events\"),\r\n(DeviceNetworkEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceNetworkEvents\" | extend Description = \"Network connection and related events\"),\r\n(DeviceFileEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceFileEvents\" | extend Description = \"File creation, modification, and other file system events\"),\r\n(DeviceRegistryEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceRegistryEvents\" | extend Description = \"Creation and modification of registry entries\"),\r\n(DeviceLogonEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceLogonEvents\" | extend Description = \"Sign-ins and other authentication events\"),\r\n(DeviceImageLoadEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceImageLoadEvents\" | extend Description = \"DLL loading events\"),\r\n(DeviceEvents | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceEvents\" | extend Description = \"Additional events types\"),\r\n(DeviceFileCertificateInfo | summarize arg_max(TimeGenerated,*) | project TimeGenerated, Type=\"DeviceFileCertificateInfo\" | extend Description = \"Certificate information of signed files)\")\r\n| extend [\"Last Log Received At (Local Time)\"] = TimeGenerated\r\n| project Type, Description, [\"Last Log Received At (Local Time)\"]", + "size": 0, + "title": "MDE Tables Last Data Received based on {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Type", + "formatter": 0, + "numberFormat": { + "unit": 0, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Last Log Received At", + "formatter": 6, + "dateFormat": { + "showUtcTime": null, + "formatName": "fullDateTimePattern" + } + } + ], + "filter": true + } + }, + "name": "query - 9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let AllDeviceNames = DeviceInfo | distinct DeviceId, DeviceName;\nlet DeviceEventSummary = DeviceEvents | extend Type = \"DeviceEvents\" | summarize count() by DeviceId, Type, bin(TimeGenerated,1d);\nlet DeviceNetworkEventsSummary = DeviceNetworkEvents | extend Type = \"DeviceNetworkEvents\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\nlet DeviceNetworkInfoSummary = DeviceNetworkInfo | extend Type = \"DeviceNetworkInfo\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\nlet DeviceLogonEventsSummary = DeviceLogonEvents | extend Type = \"DeviceLogonEvents\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\nlet DeviceRegistryEventsSummary = DeviceRegistryEvents | extend Type = \"DeviceRegistryEvents\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\nlet DeviceProcessEventsSummary = DeviceProcessEvents | extend Type = \"DeviceProcessEvents\" | summarize count() by DeviceId,Type, bin(TimeGenerated,1d);\n(DeviceEventSummary\n| union DeviceNetworkEventsSummary,\nDeviceNetworkEventsSummary,\nDeviceNetworkInfoSummary,\nDeviceLogonEventsSummary,\nDeviceRegistryEventsSummary,\nDeviceProcessEventsSummary)\n| join kind=inner ( \nAllDeviceNames\n)\non $left.DeviceId == $right.DeviceId\n| project-reorder Type, TimeGenerated, count_\n//| project-away DeviceId, DeviceId1", + "size": 1, + "title": "Daily Data Flow on MDE Tables over {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "timechart", + "chartSettings": { + "xAxis": "count_" + } + }, + "name": "query - 2" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceInfo \r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| extend ParsedFields=parse_json(LoggedOnUsers)[0]\r\n| extend DurationAtLeast= format_timespan(now()-TimeGenerated,'dd:hh:mm:ss')\r\n| project DurationAtLeast,TimeGenerated,DeviceName,DomainName=ParsedFields.DomainName,UserName=ParsedFields.UserName\r\n| order by DurationAtLeast asc", + "size": 0, + "title": "Device Heartbeat from TimeTange {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "filter": true + } + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let UsbDriveMount = DeviceEvents\r\n| where ActionType==\"UsbDriveMounted\"\r\n| extend ParsedFields=parse_json(AdditionalFields)\r\n| project DeviceId, DeviceName, DriveLetter=ParsedFields.DriveLetter, MountTime=Timestamp,\r\nProductName=ParsedFields.ProductName,SerialNumber=ParsedFields.SerialNumber,Manufacturer=ParsedFields.Manufacturer\r\n| order by DeviceId asc, MountTime desc;\r\nlet FileCreation = DeviceFileEvents\r\n| where InitiatingProcessAccountName != \"system\"\r\n| where ActionType == \"FileCreated\"\r\n| where FolderPath !startswith \"C:\\\\\"\r\n| where FolderPath !startswith \"\\\\\"\r\n| project ReportId,DeviceId,InitiatingProcessAccountDomain,\r\nInitiatingProcessAccountName,InitiatingProcessAccountUpn,\r\nFileName, FolderPath, SHA256, Timestamp, SensitivityLabel, IsAzureInfoProtectionApplied\r\n| order by DeviceId asc, Timestamp desc;\r\nFileCreation | lookup kind=inner (UsbDriveMount) on DeviceId\r\n| where FolderPath startswith DriveLetter\r\n| where Timestamp >= MountTime\r\n| partition by ReportId ( top 1 by MountTime )\r\n| order by DeviceId asc, Timestamp desc\r\n| summarize FileCount = count() by DeviceName\r\n| order by FileCount desc", + "size": 1, + "title": "Device where files are copied to USB Drive from TimeTange {TimeRange}", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FileCount", + "formatter": 8, + "formatOptions": { + "palette": "red" + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "query - 0 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkInfo\r\n| extend ConnectedNetworks = todynamic(tostring(ConnectedNetworks)) \r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| mvexpand ConnectedNetworks\r\n| summarize count() by tostring(ConnectedNetworks.IsConnectedToInternet)", + "size": 1, + "title": "Device Internet Connectivity Status from TimeTange {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FileCount", + "formatter": 8, + "formatOptions": { + "palette": "red" + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "query - 0 - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceInfo\r\n| where isnotempty(OSPlatform)\r\n| summarize arg_max(Timestamp, DeviceName) by DeviceId\r\n| extend DeviceMachineName = split(DeviceName, '.')[0]\r\n| extend DeviceDomain = substring(DeviceName, strlen(DeviceMachineName) + 1, strlen(DeviceName) - strlen(DeviceMachineName) - 1)\r\n| summarize count() by DeviceDomain", + "size": 1, + "title": "Device Count by DNS Suffix", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "gridSettings": { + "filter": true + }, + "chartSettings": { + "showMetrics": false, + "showLegend": true + } + }, + "customWidth": "30", + "name": "query - 0 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceInfo\r\n| where isnotempty(OSPlatform)\r\n| summarize arg_max(TimeGenerated, *) by DeviceId\r\n| summarize count() by tostring(IsAzureADJoined)", + "size": 1, + "title": "Device EntraID Join status", + "queryType": "advancedHunting", + "visualization": "piechart", + "gridSettings": { + "filter": true + }, + "chartSettings": { + "showMetrics": false, + "showLegend": true + } + }, + "customWidth": "30", + "name": "query - 0 - Copy - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceInfo\r\n| where isnotempty(OSPlatform)\r\n| summarize arg_max(TimeGenerated, *) by DeviceId\r\n| summarize count() by ClientVersion", + "size": 1, + "title": "Device ClientVersion", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "gridSettings": { + "filter": true + }, + "chartSettings": { + "showMetrics": false, + "showLegend": true + } + }, + "customWidth": "30", + "name": "query - 0 - Copy - Copy - Copy - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "selectedTab", + "comparison": "isEqualTo", + "value": "Overview" + }, + "name": "groupOverview" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows the source of the AV detections (e.g., the website the file was downloaded from etc.)\r\n//\r\n//Get the list of AV detections\r\nlet avDetections =\r\nDeviceEvents\r\n| where ActionType == \"AntivirusDetection\" and isnotempty(MD5)\r\n| extend ParsedFields=parse_json(AdditionalFields)\r\n| project Timestamp, DeviceName, ThreatName=tostring(ParsedFields.ThreatName), FileName, FolderPath, MD5;\r\n//Get a list of file creations\r\nlet fileCreations =\r\nDeviceFileEvents \r\n| where (isnotempty(FileOriginReferrerUrl) or isnotempty(FileOriginUrl)) and isnotempty(MD5)\r\n| project MD5, FileOriginUrl, FileOriginReferrerUrl, InitiatingProcessFileName, InitiatingProcessParentFileName;\r\n//Join the file creations and AV detections on the MD5 of the file\r\navDetections | join kind=inner (fileCreations) on MD5\r\n| project-away MD51 //Remove the duplicated MD5 field\r\n| sort by Timestamp desc ", + "size": 0, + "title": "Source of the AV detections for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "filter": true + } + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceEvents\r\n| where ActionType startswith \"Asr\" and ActionType endswith \"Audited\"\r\n// Count total stats - count events and machines per rule\r\n| summarize EventCount=count(), MachinesCount=dcount(DeviceId) by ActionType", + "size": 0, + "title": "Get stats on ASR audit events - count events and machines per rule for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 1" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceEvents\r\n| where ActionType startswith \"Asr\" and ActionType endswith \"Blocked\"\r\n// Count total stats - count events and machines per rule\r\n| summarize EventCount=count(), MachinesCount=dcount(DeviceId) by ActionType", + "size": 0, + "title": "Get stats on ASR blocks - count events and machines per rule for {TimeRange}", + "queryType": "advancedHunting" + }, + "name": "query - 1 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query make a best-guess detection regarding which removable media device caused an AV detection\r\n//The query is best run over 30 days to get the full USB history\r\n//\r\n//Get a list of USB AV detections. This assumes any path not beginning with C is a removable/USB device\r\nlet usbDetections =\r\n DeviceEvents\r\n | where ActionType == \"AntivirusDetection\" and FolderPath !startswith \"c\" and FolderPath matches regex \"^[A-Za-z]{1}\"\r\n | extend ParsedFields=parse_json(AdditionalFields)\r\n | project DetectionTime=Timestamp, DeviceName, ThreatName=tostring(ParsedFields.ThreatName), FileName, FolderPath;\r\n//Get a list of USB disk drive connections, grouped by computer name and DeviceID\r\nlet usbConnections = \r\n DeviceEvents\r\n | where ActionType == \"PnpDeviceConnected\"\r\n | extend parsed=parse_json(AdditionalFields)\r\n | project Timestamp, DeviceName, DeviceId=tostring(parsed.DeviceId), ClassName=tostring(parsed.ClassName)\r\n | where ClassName == \"DiskDrive\"\r\n | summarize UsbFirstSeen=min(Timestamp), UsbLastSeen=max(Timestamp) by DeviceId, DeviceName;\r\n//Join USB AV detections and connections, where the detection occurs after the USB has been plugged in\r\nusbDetections | join kind=inner (usbConnections) on DeviceName | where DetectionTime > UsbFirstSeen and DetectionTime < UsbLastSeen\r\n| project DetectionTime, DeviceName, ThreatName, FileName, FolderPath, DeviceId, UsbFirstSeen, UsbLastSeen\r\n| sort by DetectionTime desc", + "size": 0, + "title": "AV Detections with USB Disk Drive for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 3" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let UsbDriveMount = DeviceEvents\r\n| where ActionType==\"UsbDriveMounted\"\r\n| extend ParsedFields=parse_json(AdditionalFields)\r\n| project DeviceId, DeviceName, DriveLetter=ParsedFields.DriveLetter, MountTime=Timestamp,\r\nProductName=ParsedFields.ProductName,SerialNumber=ParsedFields.SerialNumber,Manufacturer=ParsedFields.Manufacturer\r\n| order by DeviceId asc, MountTime desc;\r\nlet FileCreation = DeviceFileEvents\r\n| where InitiatingProcessAccountName != \"system\"\r\n| where ActionType == \"FileCreated\"\r\n| where FolderPath !startswith \"C:\\\\\"\r\n| where FolderPath !startswith \"\\\\\"\r\n| project ReportId,DeviceId,InitiatingProcessAccountDomain,\r\nInitiatingProcessAccountName,InitiatingProcessAccountUpn,\r\nFileName, FolderPath, SHA256, Timestamp, SensitivityLabel, IsAzureInfoProtectionApplied\r\n| order by DeviceId asc, Timestamp desc;\r\nFileCreation | lookup kind=inner (UsbDriveMount) on DeviceId\r\n| where FolderPath startswith DriveLetter\r\n| where Timestamp >= MountTime\r\n| partition by ReportId ( top 1 by MountTime )\r\n| order by DeviceId asc, Timestamp desc", + "size": 0, + "title": "List files copied to USB mounted drives for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 4" + } + ] + }, + "conditionalVisibility": { + "parameterName": "selectedTab", + "comparison": "isEqualTo", + "value": "Device" + }, + "name": "groupDevice" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkInfo\r\n| extend ConnectedNetworks = todynamic(tostring(ConnectedNetworks)) \r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| mv-apply ConnectedNetworks on \r\n(\r\nwhere ConnectedNetworks.IsConnectedToInternet == true\r\n)\r\n| project DeviceName, DefaultGateways, IPv4Dhcp, IPv6Dhcp,MacAddress,MachineGroup, ConnectedNetworks.IsConnectedToInternet", + "size": 0, + "title": "Internet Connected Devices for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkInfo\r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| summarize count() by MachineGroup", + "size": 0, + "title": "Count By Machine Group for {TimeRange}", + "queryType": "advancedHunting", + "gridSettings": { + "filter": true + } + }, + "name": "query - 0 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkInfo\r\n| summarize arg_max(TimeGenerated,*) by DeviceId\r\n| summarize count() by NetworkAdapterType, NetworkAdapterStatus", + "size": 0, + "title": "Count By Network Adaptor", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "filter": true + } + }, + "name": "query - 0 - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkEvents\r\n| summarize count() by DeviceName, DeviceId,bin( TimeGenerated,5m)", + "size": 0, + "title": "TimeSeries on Network Activity for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "timechart" + }, + "name": "query - 0 - Copy - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceNetworkEvents\r\n| where isnotempty(RemoteUrl)\r\n| summarize count() by RemoteUrl\r\n| order by count_ desc\r\n| limit 10", + "size": 0, + "title": "Top 10 RemoteUrl accessed over TimeRange {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "categoricalbar" + }, + "name": "query - 0 - Copy - Copy - Copy - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query looks for Tor client, or for a common Tor plugin called Meek.\r\n// We query for active Tor connections, but could have alternatively looked for active Tor runs (ProcessCreateEvents) or Tor downloads (DeviceFileEvents)\r\n// To read more about this technique, see:\r\n// Tor: https://attack.mitre.org/wiki/Software/S0183#Techniques_Used\r\n// Meek plugin: https://attack.mitre.org/wiki/Software/S0175\r\n// Multi-hop proxy technique: https://attack.mitre.org/wiki/Technique/T1188\r\n// Tags: #Tor, #MultiHopProxy, #CnC\r\nDeviceNetworkEvents \r\n| where Timestamp < ago(3d) and InitiatingProcessFileName in~ (\"tor.exe\", \"meek-client.exe\")\r\n// Returns MD5 hashes of files used by Tor, to enable you to block them.\r\n// We count how prevalent each file is (by machines) and show examples for some of them (up to 5 machine names per hash).\r\n| summarize MachineCount=dcount(DeviceName), MachineNames=makeset(DeviceName, 5) by InitiatingProcessMD5\r\n| order by MachineCount desc", + "size": 0, + "title": "Tor Clients for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting" + }, + "name": "query - 5" + } + ] + }, + "conditionalVisibility": { + "parameterName": "selectedTab", + "comparison": "isEqualTo", + "value": "Network" + }, + "name": "groupNetwork" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceFileEvents\r\n| summarize FileActivityCount = count() by DeviceName", + "size": 0, + "title": "FileActivityCount per Device for {TimeRange}", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "unstackedbar" + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "DeviceFileEvents\r\n| summarize count() by InitiatingProcessAccountUpn", + "size": 0, + "title": "Count by InitiatingProcessAccountUpn for {TimeRange}", + "queryType": "advancedHunting", + "visualization": "unstackedbar" + }, + "name": "query - 0 - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "selectedTab", + "comparison": "isEqualTo", + "value": "File" + }, + "name": "groupFile" + } + ], + "fromTemplateId": "sentinel-MicrosoftDefenderForEndPoint", + "$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json", + "contentProvenance": { + "packageId": "azuresentinel.azure-sentinel-solution-microsoft365defender", + "packageVersion": "3.2.1", + "contentId": "05a7425a-fcda-5e24-823d-f8c9dd7a6215", + "contentVersion": "3.2.1" + } + } + } + } + } + }, + "packageKind": "Solution", + "packageVersion": "3.2.1", + "packageName": "Microsoft Defender XDR", + "packageId": "azuresentinel.azure-sentinel-solution-microsoft365defender", + "contentSchemaVersion": "3.0.0", + "contentId": "05a7425a-fcda-5e24-823d-f8c9dd7a6215", + "contentKind": "DefenderWorkbook", + "displayName": "MicrosoftDefenderForEndPoint", + "contentProductId": "[concat(take(variables('_solutionId'),50),'-','dwb','-', uniqueString(concat(variables('_solutionId'),'-','DefenderWorkbook','-','05a7425a-fcda-5e24-823d-f8c9dd7a6215','-','3.2.1')))]", + "id": "[concat(take(variables('_solutionId'),50),'-','dwb','-', uniqueString(concat(variables('_solutionId'),'-','DefenderWorkbook','-','05a7425a-fcda-5e24-823d-f8c9dd7a6215','-','3.2.1')))]", + "version": "3.2.1", + "contentProvenance": { + "packageId": "azuresentinel.azure-sentinel-solution-microsoft365defender", + "packageVersion": "3.2.1", + "contentId": "05a7425a-fcda-5e24-823d-f8c9dd7a6215", + "contentVersion": "3.2.1", + "requiredWorkloads": [ + { + "workload": "mde", + "dataTypes": [ + "DeviceEvents", + "DeviceFileCertificateInfo", + "DeviceFileEvents", + "DeviceImageLoadEvents", + "DeviceInfo", + "DeviceLogonEvents", + "DeviceNetworkEvents", + "DeviceNetworkInfo", + "DeviceProcessEvents", + "DeviceRegistryEvents" + ] } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject2')._analyticRulecontentId2]", - "contentKind": "AnalyticsRule", - "displayName": "SUNSPOT malware hashes", - "contentProductId": "[variables('analyticRuleObject2')._analyticRulecontentProductId2]", - "id": "[variables('analyticRuleObject2')._analyticRulecontentProductId2]", - "version": "[variables('analyticRuleObject2').analyticRuleVersion2]" - } + ], + "requiredDataConnectors": [], + "requiredWorkspaceFunctions": [] + } + }, + "condition": "[parameters('DeployDefenderWorkbook')]" }, { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject3').analyticRuleTemplateSpecName3]", - "location": "[parameters('workspace-location')]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2025-04-01", + "name": "DefenderWorkbook-29875c404a91f6531ba59a4626d443d6", "dependsOn": [ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "PotentialBuildProcessCompromiseMDE_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "template": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject3').analyticRuleVersion3]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject3')._analyticRulecontentId3]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", + "languageVersion": "2.0", + "contentVersion": "1.0.0.0", + "imports": { + "MicrosoftSecurity": { + "provider": "MicrosoftSecurity", + "version": "1.0.0" + } + }, + "resources": { + "workbook": { + "import": "MicrosoftSecurity", + "type": "Microsoft.Security/workbooks@2026-06-01-preview", "properties": { - "description": "The query looks for source code files being modified immediately after a build process is started. The purpose of this is to look for malicious code injection during the build process. This query uses Microsoft Defender for Endpoint telemetry.\nMore details: https://techcommunity.microsoft.com/t5/azure-sentinel/monitoring-the-software-supply-chain-with-azure-sentinel/ba-p/2176463", - "displayName": "Potential Build Process Compromise - MDE", - "enabled": false, - "query": "// How far back to look for events from\nlet timeframe = 1d;\n// How close together build events and file modifications should occur to alert (make this smaller to reduce FPs)\nlet time_window = 5m;\n// Edit this to include build processes used\nlet build_processes = dynamic([\"MSBuild.exe\", \"dotnet.exe\", \"VBCSCompiler.exe\"]);\n// Include any processes that you want to allow to edit files during/around the build process\nlet allow_list = dynamic([]);\nDeviceProcessEvents\n| where TimeGenerated > ago(timeframe)\n// Look for build process starts\n| where FileName has_any (build_processes)\n| summarize by BuildParentProcess=InitiatingProcessFileName, BuildProcess=FileName, BuildAccount = AccountName, DeviceName, BuildCommand=ProcessCommandLine, \ntimekey= bin(TimeGenerated, time_window), BuildProcessTime=TimeGenerated\n| join kind=inner(\nDeviceFileEvents\n| where TimeGenerated > ago(timeframe)\n| where InitiatingProcessFileName !in (allow_list)\n| where ActionType == \"FileCreated\" or ActionType == \"FileModified\"\n// Look for code files, edit this to include file extensions used in build.\n| where FileName endswith \".cs\" or FileName endswith \".cpp\"\n| summarize by FileEditParentProcess=InitiatingProcessParentFileName, FileEditAccount = InitiatingProcessAccountName, FileEditDomain = InitiatingProcessAccountDomain, FileEditUpn = InitiatingProcessAccountUpn, \nDeviceName, FileEdited=FileName, FileEditProcess=InitiatingProcessFileName, timekey= bin(TimeGenerated, time_window), FileEditTime=TimeGenerated)\n// join where build processes and file modifications seen at same time on same host\non timekey, DeviceName\n// Limit to only where the file edit happens after the build process starts\n| where BuildProcessTime <= FileEditTime\n| summarize make_set(FileEdited), make_set(FileEditProcess) by timekey, DeviceName, BuildParentProcess, BuildProcess, FileEditAccount, FileEditDomain, FileEditUpn\n| extend HostName = tostring(split(DeviceName, \".\")[0]), DomainIndex = toint(indexof(DeviceName, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(DeviceName, DomainIndex + 1), DeviceName)\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents", - "DeviceFileEvents" - ] - } - ], - "tactics": [ - "Persistence" - ], - "techniques": [ - "T1554" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "FileEditUpn" - }, - { - "identifier": "Name", - "columnName": "FileEditAccount" - }, - { - "identifier": "UPNSuffix", - "columnName": "FileEditDomain" - } - ], - "entityType": "Account" + "id": "baa399d3-2174-5938-b0b8-b91aed73090a", + "name": "MicrosoftDefenderForIdentity", + "content": { + "version": "Notebook/1.0", + "items": [ + { + "type": 1, + "content": { + "json": "## Microsoft Defender for Identity\n---\n" + }, + "name": "text - 2" + }, + { + "type": 9, + "content": { + "version": "KqlParameterItem/1.0", + "parameters": [ + { + "id": "2e238f92-709c-410b-93e0-60eab6150a75", + "version": "KqlParameterItem/1.0", + "name": "TimeRange", + "type": 4, + "isRequired": true, + "value": { + "durationMs": 1800000 + }, + "typeSettings": { + "selectableValues": [ + { + "durationMs": 1800000 + }, + { + "durationMs": 3600000 + }, + { + "durationMs": 14400000 + }, + { + "durationMs": 43200000 + }, + { + "durationMs": 86400000 + }, + { + "durationMs": 172800000 + }, + { + "durationMs": 259200000 + }, + { + "durationMs": 604800000 + }, + { + "durationMs": 1209600000 + }, + { + "durationMs": 2592000000 + }, + { + "durationMs": 5184000000 + }, + { + "durationMs": 7776000000 + } + ], + "allowCustom": true + }, + "timeContext": { + "durationMs": 86400000 + } + }, + { + "id": "ec13514a-7e54-4d41-86db-2805727a2fa7", + "version": "KqlParameterItem/1.0", + "name": "About", + "type": 10, + "description": "", + "isRequired": true, + "value": "Show", + "typeSettings": { + "additionalResourceOptions": [], + "showDefault": false + }, + "jsonData": "[[\r\n \"Show\",\r\n \"Hide\"\r\n]" + } + ], + "style": "pills" + }, + "name": "parameters - 1" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "### Microsoft Defender for Identity Analysis Workbook\r\n\r\n", + "style": "info" + }, + "name": "text - 0" + } + ] + }, + "conditionalVisibility": { + "parameterName": "About", + "comparison": "isEqualTo", + "value": "Show" + }, + "name": "AboutGroup" + }, + { + "type": 11, + "content": { + "version": "LinkItem/1.0", + "style": "tabs", + "links": [ + { + "id": "48578fe1-da47-4a4c-b495-ce7fe24ce495", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "Overview", + "subTarget": "grpOverview", + "style": "link" + }, + { + "id": "30e93159-8bf5-4006-820f-406ea10bcd17", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "LogOnEvents", + "subTarget": "grpLogOnEvents", + "style": "link" + }, + { + "id": "c40f76ed-94be-40ff-b65b-3fda306f2c3d", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "QueryEvents", + "subTarget": "grpQueryEvents", + "style": "link" + }, + { + "id": "38c88a53-f7b1-42da-83d6-0c809835eaab", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "DirectoryEvents", + "subTarget": "grpDirectoryEvents", + "style": "link" + }, + { + "id": "0ad83579-c492-4c20-8db6-27883db5abc8", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "Alerts", + "subTarget": "grpAlerts", + "style": "link" + } + ] + }, + "name": "links - 8" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| summarize count() by LogonType", + "size": 0, + "title": "Log On Summary", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "LogonType", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "count_", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + } + }, + "customWidth": "40", + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n|summarize count() by ActionType", + "size": 0, + "title": "Log On Status", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "30", + "name": "query - 1" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| summarize count() by Protocol", + "size": 0, + "title": "Log On Protocol", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "barchart" + }, + "customWidth": "30", + "name": "query - 1 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityQueryEvents\r\n| summarize count() by Protocol", + "size": 0, + "title": "Query Summary", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "barchart" + }, + "customWidth": "30", + "name": "query - 3" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityQueryEvents\r\n| summarize count() by DestinationPort", + "size": 0, + "title": "Query Destination Port", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "30", + "name": "query - 3 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityQueryEvents\r\n| where isnotempty(QueryType)\r\n| summarize count() by QueryType\r\n| order by count_ desc\r\n| take 10", + "size": 0, + "title": "Top 10 Query Types", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ] + } + }, + "customWidth": "30", + "name": "query - 7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| summarize count() by Protocol", + "size": 0, + "title": "Directory Events Protocol", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "categoricalbar" + }, + "customWidth": "40", + "name": "query - 6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| summarize count() by AccountDomain", + "size": 0, + "title": "Directory Events Protocol", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "30", + "name": "query - 6 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| where isnotempty(AccountUpn)\r\n| summarize count() by AccountUpn\r\n| order by count_ desc \r\n| take 10", + "size": 0, + "title": "Top 10 Accounts Activity", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "30", + "name": "query - 6 - Copy - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpOverview" + }, + "name": "grpOverview" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| extend AdditionalFields = todynamic(tostring(AdditionalFields)) \r\n| where LogonType == \"Resource access\"\r\n| extend FROM_DEVICE_ = tostring(AdditionalFields.[\"FROM.DEVICE\"])\r\n| extend TO_DEVICE_ = tostring(AdditionalFields.[\"TO.DEVICE\"])\r\n| extend Count_ = toint(AdditionalFields.Count)\r\n| summarize sum(Count_) by FROM_DEVICE_, TO_DEVICE_\r\n| order by sum_Count_ desc", + "size": 0, + "title": "Resource Access Summary in Devices", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "sum_Count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "45", + "name": "query - 0", + "styleSettings": { + "margin": "5px", + "padding": "5px", + "showBorder": true + } + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| extend AdditionalFields = todynamic(tostring(AdditionalFields)) \r\n| where LogonType == \"Resource access\"\r\n| extend TargetComputerOperatingSystem_ = tostring(AdditionalFields.TargetComputerOperatingSystem)\r\n| extend DestinationComputerOperatingSystem_ = tostring(AdditionalFields.DestinationComputerOperatingSystem)\r\n| extend Count_ = toint(AdditionalFields.Count)\r\n| summarize sum(Count_) by TargetComputerOperatingSystem_, DestinationComputerOperatingSystem_\r\n| order by sum_Count_ desc", + "size": 0, + "title": "Resource Access Summary in OS", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "sum_Count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "45", + "name": "query - 0 - Copy", + "styleSettings": { + "margin": "5px", + "padding": "5px", + "showBorder": true + } + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| extend AdditionalFields = todynamic(tostring(AdditionalFields)) \r\n| where LogonType == \"Credentials validation\"\r\n| extend FROM_DEVICE = tostring(AdditionalFields.[\"FROM.DEVICE\"])\r\n| extend TO_DEVICE = tostring(AdditionalFields.[\"TO.DEVICE\"])\r\n| extend Count = toint(AdditionalFields.Count)\r\n| summarize sum(Count) by FROM_DEVICE, TO_DEVICE\r\n| order by sum_Count desc", + "size": 0, + "title": "Credentials validation Summary in Devices", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "sum_Count", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "45", + "name": "query - 0 - Copy", + "styleSettings": { + "margin": "5px", + "padding": "5px", + "showBorder": true + } + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = IdentityLogonEvents\r\n| extend AdditionalFields = todynamic(tostring(AdditionalFields)) \r\n| where LogonType == \"Credentials validation\"\r\n| extend TO_DEVICE = tostring(AdditionalFields.[\"TO.DEVICE\"])\r\n| extend Count = toint(AdditionalFields.Count);\r\ndata\r\n| summarize sum(Count) by TO_DEVICE\r\n| order by sum_Count desc\r\n| join kind=inner\r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by TO_DEVICE\r\n)\r\non $left.TO_DEVICE == $right.TO_DEVICE", + "size": 0, + "title": "Credentials validation by Domain Controllers", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "sum_Count", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TO_DEVICE1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 10, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "45", + "name": "query - 0 - Copy - Copy", + "styleSettings": { + "margin": "5px", + "padding": "5px", + "showBorder": true + } + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = IdentityLogonEvents;\r\ndata\r\n| extend Count = toint(AdditionalFields.Count)\r\n| summarize LogonSuccess = sumif(Count,ActionType == \"LogonSuccess\"),LogonFailed= sumif(Count,ActionType == \"LogonFailed\") by AccountUpn\r\n| join kind = inner\r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by AccountUpn\r\n) on $left.AccountUpn == $right.AccountUpn", + "size": 0, + "title": "Logon Summary by Users", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "LogonSuccess", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "LogonFailed", + "formatter": 8, + "formatOptions": { + "palette": "redPurple" + } + }, + { + "columnMatch": "AccountUpn1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "name": "query - 0 - Copy - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpLogOnEvents" + }, + "name": "AttachmentGroup" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = IdentityQueryEvents\r\n| extend TO_DEVICE = tostring(AdditionalFields.[\"TO.DEVICE\"]);\r\ndata\r\n| summarize count() by QueryType, TO_DEVICE\r\n| join kind =inner \r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by QueryType, TO_DEVICE\r\n) on $left.QueryType == $right.QueryType and $left.TO_DEVICE== $right.TO_DEVICE", + "size": 0, + "title": "Device Query Summary", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "TO_DEVICE", + "formatter": 5 + }, + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "QueryType1", + "formatter": 5 + }, + { + "columnMatch": "TO_DEVICE1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true, + "hierarchySettings": { + "treeType": 1, + "groupBy": [ + "TO_DEVICE" + ], + "expandTopLevel": true + } + } + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = IdentityQueryEvents;\r\ndata\r\n| summarize count() by DeviceName\r\n| join kind =inner \r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by DeviceName\r\n) on $left.DeviceName == $right.DeviceName", + "size": 0, + "title": "Query Summary from Source Devices", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "DeviceName1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "name": "query - 0 - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpQueryEvents" + }, + "name": "UrlGroup" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by ActionType ", + "size": 0, + "title": "Timeline on ActionType", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "timechart" + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| summarize count() by ActionType \r\n| order by count_ desc", + "size": 0, + "title": "Top 10 Actions", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "categoricalbar", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ] + }, + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "DestinationPort", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "count_", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + } + }, + "name": "query - 0 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by AccountUpn", + "size": 0, + "title": "Account Trend on Directory Events", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true + }, + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "DestinationPort", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "count_", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + } + }, + "name": "query - 0 - Copy - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpDirectoryEvents" + }, + "name": "group - 8" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = SecurityAlert\r\n| where ProductName == \"Azure Advanced Threat Protection\"\r\n| summarize arg_max(TimeGenerated,*) by SystemAlertId;\r\ndata\r\n| summarize count() by AlertName\r\n| join kind=inner \r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by AlertName\r\n) on AlertName", + "size": 0, + "noDataMessage": "Alerts", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "red" + } + }, + { + "columnMatch": "AlertName1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "palette": "red" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ] + } + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = SecurityAlert\r\n| where ProductName == \"Azure Advanced Threat Protection\"\r\n| summarize arg_max(TimeGenerated,*) by SystemAlertId\r\n| mv-expand todynamic(Entities)\r\n| where Entities[\"Type\"] == \"host\"\r\n| where isnotempty(Entities[\"HostName\"])\r\n| extend HostName = tostring(Entities[\"HostName\"]);\r\ndata\r\n| summarize count() by HostName\r\n| join kind=inner \r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by HostName\r\n) on $left.HostName == $right.HostName", + "size": 0, + "title": "Impacted Hosts", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "red" + } + }, + { + "columnMatch": "HostName1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "red" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ] + } + }, + "name": "query - 1" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpAlerts" + }, + "name": "group - 8" + } + ], + "fromTemplateId": "sentinel-MicrosoftDefenderForIdentity", + "$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json", + "contentProvenance": { + "packageId": "azuresentinel.azure-sentinel-solution-microsoft365defender", + "packageVersion": "3.2.1", + "contentId": "200c5dd2-9786-5619-8425-4508a238d76a", + "contentVersion": "3.2.1" } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject3').analyticRuleId3,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 3", - "parentId": "[variables('analyticRuleObject3').analyticRuleId3]", - "contentId": "[variables('analyticRuleObject3')._analyticRulecontentId3]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject3').analyticRuleVersion3]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" } } } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject3')._analyticRulecontentId3]", - "contentKind": "AnalyticsRule", - "displayName": "Potential Build Process Compromise - MDE", - "contentProductId": "[variables('analyticRuleObject3')._analyticRulecontentProductId3]", - "id": "[variables('analyticRuleObject3')._analyticRulecontentProductId3]", - "version": "[variables('analyticRuleObject3').analyticRuleVersion3]" - } + } + } + }, + "condition": "[parameters('DeployDefenderWorkbook')]" }, { "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject4').analyticRuleTemplateSpecName4]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-dwb-',uniqueString('200c5dd2-9786-5619-8425-4508a238d76a')))]", "location": "[parameters('workspace-location')]", "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', 'DefenderWorkbook-29875c404a91f6531ba59a4626d443d6')]", "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "SolarWinds_TEARDROP_Process-IOCs_AnalyticalRules Analytics Rule with template version 3.0.18", + "description": "Defender Workbook: MicrosoftDefenderForIdentity", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject4').analyticRuleVersion4]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject4')._analyticRulecontentId4]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Identifies SolarWinds TEARDROP memory-only dropper IOCs in Window's defender Exploit Guard activity\nReferences:\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f", - "displayName": "TEARDROP memory-only dropper", - "enabled": false, - "query": "DeviceEvents\n| where ActionType has \"ExploitGuardNonMicrosoftSignedBlocked\"\n| where InitiatingProcessFileName has \"svchost.exe\" and FileName has \"NetSetupSvc.dll\"\n| extend HashAlgorithm = \"SHA1\"\n| extend HostName = tostring(split(DeviceName, \".\")[0]), DomainIndex = toint(indexof(DeviceName, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(DeviceName, DomainIndex + 1), DeviceName)\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceEvents" - ] - } - ], - "tactics": [ - "Execution", - "Persistence", - "DefenseEvasion" - ], - "techniques": [ - "T1543", - "T1059", - "T1027" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "InitiatingProcessAccountUpn" - }, - { - "identifier": "Name", - "columnName": "InitiatingProcessAccountName" - }, - { - "identifier": "UPNSuffix", - "columnName": "InitiatingProcessAccountDomain" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "Algorithm", - "columnName": "HashAlgorithm" - }, - { - "identifier": "Value", - "columnName": "InitiatingProcessSHA1" - } - ], - "entityType": "FileHash" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject4').analyticRuleId4,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 4", - "parentId": "[variables('analyticRuleObject4').analyticRuleId4]", - "contentId": "[variables('analyticRuleObject4')._analyticRulecontentId4]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject4').analyticRuleVersion4]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } + "languageVersion": "2.0", + "contentVersion": "1.0.0.0", + "imports": { + "MicrosoftSecurity": { + "provider": "MicrosoftSecurity", + "version": "1.0.0" } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject4')._analyticRulecontentId4]", - "contentKind": "AnalyticsRule", - "displayName": "TEARDROP memory-only dropper", - "contentProductId": "[variables('analyticRuleObject4')._analyticRulecontentProductId4]", - "id": "[variables('analyticRuleObject4')._analyticRulecontentProductId4]", - "version": "[variables('analyticRuleObject4').analyticRuleVersion4]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject5').analyticRuleTemplateSpecName5]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "SolarWinds_SUNBURST_Network-IOCs_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject5').analyticRuleVersion5]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject5')._analyticRulecontentId5]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", + }, + "resources": { + "workbook": { + "import": "MicrosoftSecurity", + "type": "Microsoft.Security/workbooks@2026-06-01-preview", "properties": { - "description": "Identifies SolarWinds SUNBURST domain beacon IOCs in DeviceNetworkEvents\nReferences:\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f", - "displayName": "SUNBURST network beacons", - "enabled": false, - "query": "let SunburstURL=dynamic([\"panhardware.com\",\"databasegalore.com\",\"avsvmcloud.com\",\"freescanonline.com\",\"thedoccloud.com\",\"deftsecurity.com\"]);\nDeviceNetworkEvents\n| where ActionType == \"ConnectionSuccess\"\n| where RemoteUrl in(SunburstURL)\n| extend HashAlgorithm = 'MD5'\n| extend HostName = tostring(split(DeviceName, \".\")[0]), DomainIndex = toint(indexof(DeviceName, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(DeviceName, DomainIndex + 1), DeviceName)\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceNetworkEvents" - ] - } - ], - "tactics": [ - "Execution", - "Persistence", - "InitialAccess" - ], - "techniques": [ - "T1195", - "T1059", - "T1546" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "InitiatingProcessAccountUpn" - }, - { - "identifier": "Name", - "columnName": "InitiatingProcessAccountName" - }, - { - "identifier": "UPNSuffix", - "columnName": "InitiatingProcessAccountDomain" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "RemoteIP" - } - ], - "entityType": "IP" - }, - { - "fieldMappings": [ - { - "identifier": "Url", - "columnName": "RemoteUrl" - } - ], - "entityType": "URL" - }, - { - "fieldMappings": [ - { - "identifier": "Algorithm", - "columnName": "HashAlgorithm" - }, - { - "identifier": "Value", - "columnName": "InitiatingProcessMD5" - } - ], - "entityType": "FileHash" - } - ] - } + "id": "baa399d3-2174-5938-b0b8-b91aed73090a", + "name": "MicrosoftDefenderForIdentity", + "content": { + "version": "Notebook/1.0", + "items": [ + { + "type": 1, + "content": { + "json": "## Microsoft Defender for Identity\n---\n" + }, + "name": "text - 2" + }, + { + "type": 9, + "content": { + "version": "KqlParameterItem/1.0", + "parameters": [ + { + "id": "2e238f92-709c-410b-93e0-60eab6150a75", + "version": "KqlParameterItem/1.0", + "name": "TimeRange", + "type": 4, + "isRequired": true, + "value": { + "durationMs": 1800000 + }, + "typeSettings": { + "selectableValues": [ + { + "durationMs": 1800000 + }, + { + "durationMs": 3600000 + }, + { + "durationMs": 14400000 + }, + { + "durationMs": 43200000 + }, + { + "durationMs": 86400000 + }, + { + "durationMs": 172800000 + }, + { + "durationMs": 259200000 + }, + { + "durationMs": 604800000 + }, + { + "durationMs": 1209600000 + }, + { + "durationMs": 2592000000 + }, + { + "durationMs": 5184000000 + }, + { + "durationMs": 7776000000 + } + ], + "allowCustom": true + }, + "timeContext": { + "durationMs": 86400000 + } + }, + { + "id": "ec13514a-7e54-4d41-86db-2805727a2fa7", + "version": "KqlParameterItem/1.0", + "name": "About", + "type": 10, + "description": "", + "isRequired": true, + "value": "Show", + "typeSettings": { + "additionalResourceOptions": [], + "showDefault": false + }, + "jsonData": "[[\r\n \"Show\",\r\n \"Hide\"\r\n]" + } + ], + "style": "pills" + }, + "name": "parameters - 1" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "### Microsoft Defender for Identity Analysis Workbook\r\n\r\n", + "style": "info" + }, + "name": "text - 0" + } + ] + }, + "conditionalVisibility": { + "parameterName": "About", + "comparison": "isEqualTo", + "value": "Show" + }, + "name": "AboutGroup" + }, + { + "type": 11, + "content": { + "version": "LinkItem/1.0", + "style": "tabs", + "links": [ + { + "id": "48578fe1-da47-4a4c-b495-ce7fe24ce495", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "Overview", + "subTarget": "grpOverview", + "style": "link" + }, + { + "id": "30e93159-8bf5-4006-820f-406ea10bcd17", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "LogOnEvents", + "subTarget": "grpLogOnEvents", + "style": "link" + }, + { + "id": "c40f76ed-94be-40ff-b65b-3fda306f2c3d", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "QueryEvents", + "subTarget": "grpQueryEvents", + "style": "link" + }, + { + "id": "38c88a53-f7b1-42da-83d6-0c809835eaab", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "DirectoryEvents", + "subTarget": "grpDirectoryEvents", + "style": "link" + }, + { + "id": "0ad83579-c492-4c20-8db6-27883db5abc8", + "cellValue": "Nav", + "linkTarget": "parameter", + "linkLabel": "Alerts", + "subTarget": "grpAlerts", + "style": "link" + } + ] + }, + "name": "links - 8" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| summarize count() by LogonType", + "size": 0, + "title": "Log On Summary", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "LogonType", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "count_", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + } + }, + "customWidth": "40", + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n|summarize count() by ActionType", + "size": 0, + "title": "Log On Status", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "30", + "name": "query - 1" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| summarize count() by Protocol", + "size": 0, + "title": "Log On Protocol", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "barchart" + }, + "customWidth": "30", + "name": "query - 1 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityQueryEvents\r\n| summarize count() by Protocol", + "size": 0, + "title": "Query Summary", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "barchart" + }, + "customWidth": "30", + "name": "query - 3" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityQueryEvents\r\n| summarize count() by DestinationPort", + "size": 0, + "title": "Query Destination Port", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "30", + "name": "query - 3 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityQueryEvents\r\n| where isnotempty(QueryType)\r\n| summarize count() by QueryType\r\n| order by count_ desc\r\n| take 10", + "size": 0, + "title": "Top 10 Query Types", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ] + } + }, + "customWidth": "30", + "name": "query - 7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| summarize count() by Protocol", + "size": 0, + "title": "Directory Events Protocol", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "categoricalbar" + }, + "customWidth": "40", + "name": "query - 6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| summarize count() by AccountDomain", + "size": 0, + "title": "Directory Events Protocol", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "30", + "name": "query - 6 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| where isnotempty(AccountUpn)\r\n| summarize count() by AccountUpn\r\n| order by count_ desc \r\n| take 10", + "size": 0, + "title": "Top 10 Accounts Activity", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "30", + "name": "query - 6 - Copy - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpOverview" + }, + "name": "grpOverview" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| extend AdditionalFields = todynamic(tostring(AdditionalFields)) \r\n| where LogonType == \"Resource access\"\r\n| extend FROM_DEVICE_ = tostring(AdditionalFields.[\"FROM.DEVICE\"])\r\n| extend TO_DEVICE_ = tostring(AdditionalFields.[\"TO.DEVICE\"])\r\n| extend Count_ = toint(AdditionalFields.Count)\r\n| summarize sum(Count_) by FROM_DEVICE_, TO_DEVICE_\r\n| order by sum_Count_ desc", + "size": 0, + "title": "Resource Access Summary in Devices", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "sum_Count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "45", + "name": "query - 0", + "styleSettings": { + "margin": "5px", + "padding": "5px", + "showBorder": true + } + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| extend AdditionalFields = todynamic(tostring(AdditionalFields)) \r\n| where LogonType == \"Resource access\"\r\n| extend TargetComputerOperatingSystem_ = tostring(AdditionalFields.TargetComputerOperatingSystem)\r\n| extend DestinationComputerOperatingSystem_ = tostring(AdditionalFields.DestinationComputerOperatingSystem)\r\n| extend Count_ = toint(AdditionalFields.Count)\r\n| summarize sum(Count_) by TargetComputerOperatingSystem_, DestinationComputerOperatingSystem_\r\n| order by sum_Count_ desc", + "size": 0, + "title": "Resource Access Summary in OS", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "sum_Count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "45", + "name": "query - 0 - Copy", + "styleSettings": { + "margin": "5px", + "padding": "5px", + "showBorder": true + } + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityLogonEvents\r\n| extend AdditionalFields = todynamic(tostring(AdditionalFields)) \r\n| where LogonType == \"Credentials validation\"\r\n| extend FROM_DEVICE = tostring(AdditionalFields.[\"FROM.DEVICE\"])\r\n| extend TO_DEVICE = tostring(AdditionalFields.[\"TO.DEVICE\"])\r\n| extend Count = toint(AdditionalFields.Count)\r\n| summarize sum(Count) by FROM_DEVICE, TO_DEVICE\r\n| order by sum_Count desc", + "size": 0, + "title": "Credentials validation Summary in Devices", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "sum_Count", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "45", + "name": "query - 0 - Copy", + "styleSettings": { + "margin": "5px", + "padding": "5px", + "showBorder": true + } + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = IdentityLogonEvents\r\n| extend AdditionalFields = todynamic(tostring(AdditionalFields)) \r\n| where LogonType == \"Credentials validation\"\r\n| extend TO_DEVICE = tostring(AdditionalFields.[\"TO.DEVICE\"])\r\n| extend Count = toint(AdditionalFields.Count);\r\ndata\r\n| summarize sum(Count) by TO_DEVICE\r\n| order by sum_Count desc\r\n| join kind=inner\r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by TO_DEVICE\r\n)\r\non $left.TO_DEVICE == $right.TO_DEVICE", + "size": 0, + "title": "Credentials validation by Domain Controllers", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "sum_Count", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TO_DEVICE1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 10, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "customWidth": "45", + "name": "query - 0 - Copy - Copy", + "styleSettings": { + "margin": "5px", + "padding": "5px", + "showBorder": true + } + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = IdentityLogonEvents;\r\ndata\r\n| extend Count = toint(AdditionalFields.Count)\r\n| summarize LogonSuccess = sumif(Count,ActionType == \"LogonSuccess\"),LogonFailed= sumif(Count,ActionType == \"LogonFailed\") by AccountUpn\r\n| join kind = inner\r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by AccountUpn\r\n) on $left.AccountUpn == $right.AccountUpn", + "size": 0, + "title": "Logon Summary by Users", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "LogonSuccess", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "LogonFailed", + "formatter": 8, + "formatOptions": { + "palette": "redPurple" + } + }, + { + "columnMatch": "AccountUpn1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "name": "query - 0 - Copy - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpLogOnEvents" + }, + "name": "AttachmentGroup" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = IdentityQueryEvents\r\n| extend TO_DEVICE = tostring(AdditionalFields.[\"TO.DEVICE\"]);\r\ndata\r\n| summarize count() by QueryType, TO_DEVICE\r\n| join kind =inner \r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by QueryType, TO_DEVICE\r\n) on $left.QueryType == $right.QueryType and $left.TO_DEVICE== $right.TO_DEVICE", + "size": 0, + "title": "Device Query Summary", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "TO_DEVICE", + "formatter": 5 + }, + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "QueryType1", + "formatter": 5 + }, + { + "columnMatch": "TO_DEVICE1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true, + "hierarchySettings": { + "treeType": 1, + "groupBy": [ + "TO_DEVICE" + ], + "expandTopLevel": true + } + } + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = IdentityQueryEvents;\r\ndata\r\n| summarize count() by DeviceName\r\n| join kind =inner \r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by DeviceName\r\n) on $left.DeviceName == $right.DeviceName", + "size": 0, + "title": "Query Summary from Source Devices", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "DeviceName1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true + } + }, + "name": "query - 0 - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpQueryEvents" + }, + "name": "UrlGroup" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by ActionType ", + "size": 0, + "title": "Timeline on ActionType", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "timechart" + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| summarize count() by ActionType \r\n| order by count_ desc", + "size": 0, + "title": "Top 10 Actions", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "categoricalbar", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ] + }, + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "DestinationPort", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "count_", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + } + }, + "name": "query - 0 - Copy" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "IdentityDirectoryEvents\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by AccountUpn", + "size": 0, + "title": "Account Trend on Directory Events", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "blue" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ], + "rowLimit": 10000, + "filter": true + }, + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "DestinationPort", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "count_", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + } + }, + "name": "query - 0 - Copy - Copy" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpDirectoryEvents" + }, + "name": "group - 8" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = SecurityAlert\r\n| where ProductName == \"Azure Advanced Threat Protection\"\r\n| summarize arg_max(TimeGenerated,*) by SystemAlertId;\r\ndata\r\n| summarize count() by AlertName\r\n| join kind=inner \r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by AlertName\r\n) on AlertName", + "size": 0, + "noDataMessage": "Alerts", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "red" + } + }, + { + "columnMatch": "AlertName1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "palette": "red" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ] + } + }, + "name": "query - 0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let data = SecurityAlert\r\n| where ProductName == \"Azure Advanced Threat Protection\"\r\n| summarize arg_max(TimeGenerated,*) by SystemAlertId\r\n| mv-expand todynamic(Entities)\r\n| where Entities[\"Type\"] == \"host\"\r\n| where isnotempty(Entities[\"HostName\"])\r\n| extend HostName = tostring(Entities[\"HostName\"]);\r\ndata\r\n| summarize count() by HostName\r\n| join kind=inner \r\n(\r\ndata\r\n| make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by HostName\r\n) on $left.HostName == $right.HostName", + "size": 0, + "title": "Impacted Hosts", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "count_", + "formatter": 8, + "formatOptions": { + "palette": "red" + } + }, + { + "columnMatch": "HostName1", + "formatter": 5 + }, + { + "columnMatch": "Trend", + "formatter": 9, + "formatOptions": { + "palette": "red" + } + }, + { + "columnMatch": "TimeGenerated", + "formatter": 5 + } + ] + } + }, + "name": "query - 1" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Nav", + "comparison": "isEqualTo", + "value": "grpAlerts" + }, + "name": "group - 8" + } + ], + "fromTemplateId": "sentinel-MicrosoftDefenderForIdentity", + "$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json", + "contentProvenance": { + "packageId": "azuresentinel.azure-sentinel-solution-microsoft365defender", + "packageVersion": "3.2.1", + "contentId": "200c5dd2-9786-5619-8425-4508a238d76a", + "contentVersion": "3.2.1" + } + } + } + } + } + }, + "packageKind": "Solution", + "packageVersion": "3.2.1", + "packageName": "Microsoft Defender XDR", + "packageId": "azuresentinel.azure-sentinel-solution-microsoft365defender", + "contentSchemaVersion": "3.0.0", + "contentId": "200c5dd2-9786-5619-8425-4508a238d76a", + "contentKind": "DefenderWorkbook", + "displayName": "MicrosoftDefenderForIdentity", + "contentProductId": "[concat(take(variables('_solutionId'),50),'-','dwb','-', uniqueString(concat(variables('_solutionId'),'-','DefenderWorkbook','-','200c5dd2-9786-5619-8425-4508a238d76a','-','3.2.1')))]", + "id": "[concat(take(variables('_solutionId'),50),'-','dwb','-', uniqueString(concat(variables('_solutionId'),'-','DefenderWorkbook','-','200c5dd2-9786-5619-8425-4508a238d76a','-','3.2.1')))]", + "version": "3.2.1", + "contentProvenance": { + "packageId": "azuresentinel.azure-sentinel-solution-microsoft365defender", + "packageVersion": "3.2.1", + "contentId": "200c5dd2-9786-5619-8425-4508a238d76a", + "contentVersion": "3.2.1", + "requiredWorkloads": [ + { + "workload": "mdi", + "dataTypes": [ + "IdentityDirectoryEvents", + "IdentityLogonEvents", + "IdentityQueryEvents" + ] }, { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject5').analyticRuleId5,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 5", - "parentId": "[variables('analyticRuleObject5').analyticRuleId5]", - "contentId": "[variables('analyticRuleObject5')._analyticRulecontentId5]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject5').analyticRuleVersion5]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } + "workload": "sentinel", + "dataTypes": [ + "SecurityAlert" + ] } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject5')._analyticRulecontentId5]", - "contentKind": "AnalyticsRule", - "displayName": "SUNBURST network beacons", - "contentProductId": "[variables('analyticRuleObject5')._analyticRulecontentProductId5]", - "id": "[variables('analyticRuleObject5')._analyticRulecontentProductId5]", - "version": "[variables('analyticRuleObject5').analyticRuleVersion5]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject6').analyticRuleTemplateSpecName6]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "SolarWinds_SUNBURST_&_SUPERNOVA_File-IOCs_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject6').analyticRuleVersion6]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject6')._analyticRulecontentId6]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Identifies SolarWinds SUNBURST and SUPERNOVA backdoor file hash IOCs in DeviceFileEvents\nReferences:\n- https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n- https://gist.github.com/olafhartong/71ffdd4cab4b6acd5cbcd1a0691ff82f", - "displayName": "SUNBURST and SUPERNOVA backdoor hashes", - "enabled": false, - "query": "let SunburstMD5=dynamic([\"b91ce2fa41029f6955bff20079468448\",\"02af7cec58b9a5da1c542b5a32151ba1\",\"2c4a910a1299cdae2a4e55988a2f102e\",\"846e27a652a5e1bfbd0ddd38a16dc865\",\"4f2eb62fa529c0283b28d05ddd311fae\"]);\nlet SupernovaMD5=\"56ceb6d0011d87b6e4d7023d7ef85676\";\nDeviceFileEvents\n| where MD5 in(SunburstMD5) or MD5 in(SupernovaMD5)\n| extend HashAlgorithm = \"MD5\"\n| extend HostName = tostring(split(DeviceName, \".\")[0]), DomainIndex = toint(indexof(DeviceName, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(DeviceName, DomainIndex + 1), DeviceName)\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceFileEvents" - ] - } - ], - "tactics": [ - "Execution", - "Persistence", - "InitialAccess" - ], - "techniques": [ - "T1195", - "T1059", - "T1546" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "InitiatingProcessAccountUpn" - }, - { - "identifier": "Name", - "columnName": "InitiatingProcessAccountName" - }, - { - "identifier": "UPNSuffix", - "columnName": "InitiatingProcessAccountDomain" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "Algorithm", - "columnName": "HashAlgorithm" - }, - { - "identifier": "Value", - "columnName": "MD5" - } - ], - "entityType": "FileHash" - } - ] - } - }, + ], + "requiredDataConnectors": [ { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject6').analyticRuleId6,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 6", - "parentId": "[variables('analyticRuleObject6').analyticRuleId6]", - "contentId": "[variables('analyticRuleObject6')._analyticRulecontentId6]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject6').analyticRuleVersion6]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } + "connectorId": "MicrosoftThreatProtection", + "dataTypes": [ + "SecurityAlert" + ] } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject6')._analyticRulecontentId6]", - "contentKind": "AnalyticsRule", - "displayName": "SUNBURST and SUPERNOVA backdoor hashes", - "contentProductId": "[variables('analyticRuleObject6')._analyticRulecontentProductId6]", - "id": "[variables('analyticRuleObject6')._analyticRulecontentProductId6]", - "version": "[variables('analyticRuleObject6').analyticRuleVersion6]" - } + ], + "requiredWorkspaceFunctions": [] + } + }, + "condition": "[parameters('DeployDefenderWorkbook')]" }, { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject7').analyticRuleTemplateSpecName7]", - "location": "[parameters('workspace-location')]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2025-04-01", + "name": "DefenderWorkbook-da2727e752b5d883c20387dfb93fc051", "dependsOn": [ "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "AVdetectionsrelatedtoUkrainebasedthreats_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject7').analyticRuleVersion7]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject7')._analyticRulecontentId7]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query looks for Microsoft Defender AV detections for malware observed in relation to the war in Ukraine.\n Ref: https://msrc-blog.microsoft.com/2022/02/28/analysis-resources-cyber-threat-activity-ukraine/ ", - "displayName": "AV detections related to Ukraine threats", - "enabled": false, - "query": "let UA_threats = dynamic([\"FoxBlade\", \"WhisperGate\", \"Lasainraw\", \"SonicVote\", \"CaddyWiper\", \"AprilAxe\", \"FiberLake\", \"Industroyer\", \"DesertBlade\"]);\nSecurityAlert\n| where ProviderName =~ \"MDATP\"\n| extend ThreatFamilyName = tostring(parse_json(ExtendedProperties).ThreatFamilyName)\n| where ThreatFamilyName in~ (UA_threats)\n| extend HostName = tostring(split(CompromisedEntity, \".\")[0]), DomainIndex = toint(indexof(CompromisedEntity, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(CompromisedEntity, DomainIndex + 1), CompromisedEntity)\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "SecurityAlert" - ] - } - ], - "tactics": [ - "Impact" - ], - "techniques": [ - "T1485" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "CompromisedEntity" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject7').analyticRuleId7,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 7", - "parentId": "[variables('analyticRuleObject7').analyticRuleId7]", - "contentId": "[variables('analyticRuleObject7')._analyticRulecontentId7]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject7').analyticRuleVersion7]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject7')._analyticRulecontentId7]", - "contentKind": "AnalyticsRule", - "displayName": "AV detections related to Ukraine threats", - "contentProductId": "[variables('analyticRuleObject7')._analyticRulecontentProductId7]", - "id": "[variables('analyticRuleObject7')._analyticRulecontentProductId7]", - "version": "[variables('analyticRuleObject7').analyticRuleVersion7]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject8').analyticRuleTemplateSpecName8]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "AVTarrask_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { + "template": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject8').analyticRuleVersion8]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject8')._analyticRulecontentId8]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query looks for Microsoft Defender AV detections related to Tarrask malware. In Microsoft Sentinel, the SecurityAlerts table includes only the Device Name of the affected device, this query joins the DeviceInfo table to clearly connect other information such as Device group, ip, logged-on users etc. \n This would allow the Microsoft Sentinel analyst to have more context related to the alert, if available.\n Reference: https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/", - "displayName": "AV detections related to Tarrask malware", - "enabled": false, - "query": "let Tarrask_threats = dynamic([\"HackTool:Win64/Tarrask!MS\", \"HackTool:Win64/Ligolo!MSR\", \"Behavior:Win32/ScheduledTaskHide.A\", \"Tarrask\"]);\nDeviceInfo\n| extend DeviceName = tolower(DeviceName)\n| join kind=rightouter ( SecurityAlert\n| where ProviderName =~ \"MDATP\"\n| extend ThreatName = tostring(parse_json(ExtendedProperties).ThreatName)\n| extend ThreatFamilyName = tostring(parse_json(ExtendedProperties).ThreatFamilyName)\n| where ThreatName in~ (Tarrask_threats) or ThreatFamilyName in~ (Tarrask_threats)\n| extend CompromisedEntity = tolower(CompromisedEntity)\n) on $left.DeviceName == $right.CompromisedEntity\n| summarize by DisplayName, ThreatName, ThreatFamilyName, PublicIP, AlertSeverity, Description, tostring(LoggedOnUsers), DeviceId, TenantId , bin(TimeGenerated, 1d), CompromisedEntity, tostring(LoggedOnUsers), ProductName, Entities\n| extend HostName = tostring(split(CompromisedEntity, \".\")[0]), DomainIndex = toint(indexof(CompromisedEntity, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(CompromisedEntity, DomainIndex + 1), CompromisedEntity)\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "SecurityAlert" - ] - } - ], - "tactics": [ - "Persistence" - ], - "techniques": [ - "T1053" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "CompromisedEntity" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "PublicIP" - } - ], - "entityType": "IP" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject8').analyticRuleId8,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 8", - "parentId": "[variables('analyticRuleObject8').analyticRuleId8]", - "contentId": "[variables('analyticRuleObject8')._analyticRulecontentId8]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject8').analyticRuleVersion8]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } + "languageVersion": "2.0", + "contentVersion": "1.0.0.0", + "imports": { + "MicrosoftSecurity": { + "provider": "MicrosoftSecurity", + "version": "1.0.0" } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject8')._analyticRulecontentId8]", - "contentKind": "AnalyticsRule", - "displayName": "AV detections related to Tarrask malware", - "contentProductId": "[variables('analyticRuleObject8')._analyticRulecontentProductId8]", - "id": "[variables('analyticRuleObject8')._analyticRulecontentProductId8]", - "version": "[variables('analyticRuleObject8').analyticRuleVersion8]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject9').analyticRuleTemplateSpecName9]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "AVSpringShell_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject9').analyticRuleVersion9]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject9')._analyticRulecontentId9]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query looks for Microsoft Defender AV detections related to the SpringShell vulnerability. In Microsoft Sentinel, the SecurityAlerts table includes only the Device Name of the affected device.\n This query joins the DeviceInfo table to clearly connect other information such as device group, IP, logged-on users, etc. This would allow the Microsoft Sentinel analyst to have more context related to the alert, if available.\n Reference: https://www.microsoft.com/security/blog/2022/04/04/springshell-rce-vulnerability-guidance-for-protecting-against-and-detecting-cve-2022-22965/", - "displayName": "AV detections related to SpringShell Vulnerability", - "enabled": false, - "query": "let SpringShell_threats = dynamic([\"Trojan:Python/SpringShellExpl\", \"Exploit:Python/SpringShell\", \"Backdoor:PHP/Remoteshell.V\", \"SpringShell\"]);\nDeviceInfo\n| extend DeviceName = tolower(DeviceName)\n| join kind=inner ( SecurityAlert\n| where ProviderName =~ \"MDATP\"\n| extend ThreatName = tostring(parse_json(ExtendedProperties).ThreatName)\n| extend ThreatFamilyName = tostring(parse_json(ExtendedProperties).ThreatFamilyName)\n| where ThreatName in~ (SpringShell_threats) or ThreatFamilyName in~ (SpringShell_threats)\n| extend CompromisedEntity = tolower(CompromisedEntity)\n) on $left.DeviceName == $right.CompromisedEntity\n| summarize by DisplayName, ThreatName, ThreatFamilyName, PublicIP, AlertSeverity, Description, tostring(LoggedOnUsers), DeviceId, TenantId , bin(TimeGenerated, 1d), CompromisedEntity, tostring(LoggedOnUsers), ProductName, Entities\n| extend HostName = tostring(split(CompromisedEntity, \".\")[0]), DomainIndex = toint(indexof(CompromisedEntity, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(CompromisedEntity, DomainIndex + 1), CompromisedEntity)\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "SecurityAlert" - ] - } - ], - "tactics": [ - "InitialAccess" - ], - "techniques": [ - "T1190" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "CompromisedEntity" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "PublicIP" - } - ], - "entityType": "IP" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject9').analyticRuleId9,'/'))))]", + }, + "resources": { + "workbook": { + "import": "MicrosoftSecurity", + "type": "Microsoft.Security/workbooks@2026-06-01-preview", "properties": { - "description": "Microsoft Defender XDR Analytics Rule 9", - "parentId": "[variables('analyticRuleObject9').analyticRuleId9]", - "contentId": "[variables('analyticRuleObject9')._analyticRulecontentId9]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject9').analyticRuleVersion9]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject9')._analyticRulecontentId9]", - "contentKind": "AnalyticsRule", - "displayName": "AV detections related to SpringShell Vulnerability", - "contentProductId": "[variables('analyticRuleObject9')._analyticRulecontentProductId9]", - "id": "[variables('analyticRuleObject9')._analyticRulecontentProductId9]", - "version": "[variables('analyticRuleObject9').analyticRuleVersion9]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject10').analyticRuleTemplateSpecName10]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "PossibleWebpBufferOverflow_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject10').analyticRuleVersion10]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject10')._analyticRulecontentId10]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query looks at device, process, and network events from Defender for Endpoint that may be vulnerable to buffer overflow defined in CVE-2023-4863. Results are not an indicator of malicious activity.", - "displayName": "Execution of software vulnerable to webp buffer overflow of CVE-2023-4863", - "enabled": false, - "query": "//CVE-2023-4863 Process activity with .webp files on devices where CVE-2023-4863 is unpatched\n//This query shows all process activity with .webp files on vulnerable machines and is not an indicator of malicious activity\nlet VulnDevices = DeviceTvmSoftwareVulnerabilities\n | where CveId == \"CVE-2023-4863\"\n | distinct DeviceId;\nunion DeviceProcessEvents, DeviceNetworkEvents, DeviceEvents\n| where DeviceId in (VulnDevices) and (InitiatingProcessCommandLine has(\".webp\") or ProcessCommandLine has(\".webp\"))\n| extend Name = tostring(split(AccountUpn, \"@\")[0]), UPNSuffix = tostring(split(AccountUpn, \"@\")[1])\n| extend HostName = tostring(split(DeviceName, \".\")[0]), DomainIndex = toint(indexof(DeviceName, '.'))\n| extend HostNameDomain = iff(DomainIndex != -1, substring(DeviceName, DomainIndex + 1), DeviceName)", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Informational", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents", - "DeviceNetworkEvents", - "DeviceEvents", - "DeviceTvmSoftwareVulnerabilities" - ] - } - ], - "tactics": [ - "Execution" - ], - "techniques": [ - "T1203" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "HostNameDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "AccountUpn" - }, - { - "identifier": "Name", - "columnName": "Name" - }, - { - "identifier": "UPNSuffix", - "columnName": "UPNSuffix" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "LocalIP" - } - ], - "entityType": "IP" - }, - { - "fieldMappings": [ - { - "identifier": "ProcessId", - "columnName": "ProcessId" - } - ], - "entityType": "Process" - }, - { - "fieldMappings": [ - { - "identifier": "ProcessId", - "columnName": "InitiatingProcessId" - } - ], - "entityType": "Process" - }, - { - "fieldMappings": [ - { - "identifier": "CommandLine", - "columnName": "ProcessCommandLine" - } - ], - "entityType": "Process" - } - ], - "eventGroupingSettings": { - "aggregationKind": "SingleAlert" - }, - "alertDetailsOverride": { - "alertDynamicProperties": [], - "alertDisplayNameFormat": "Possible exploitation of CVE-2023-4863" - }, - "incidentConfiguration": { - "groupingConfiguration": { - "reopenClosedIncident": false, - "enabled": false, - "matchingMethod": "Selected", - "groupByEntities": [ - "Account" - ], - "lookbackDuration": "PT5H" - }, - "createIncident": false - } - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject10').analyticRuleId10,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 10", - "parentId": "[variables('analyticRuleObject10').analyticRuleId10]", - "contentId": "[variables('analyticRuleObject10')._analyticRulecontentId10]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject10').analyticRuleVersion10]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject10')._analyticRulecontentId10]", - "contentKind": "AnalyticsRule", - "displayName": "Execution of software vulnerable to webp buffer overflow of CVE-2023-4863", - "contentProductId": "[variables('analyticRuleObject10')._analyticRulecontentProductId10]", - "id": "[variables('analyticRuleObject10')._analyticRulecontentProductId10]", - "version": "[variables('analyticRuleObject10').analyticRuleVersion10]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject11').analyticRuleTemplateSpecName11]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DeimosComponentExecution_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject11').analyticRuleVersion11]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject11')._analyticRulecontentId11]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Jupyter, otherwise known as SolarMarker, is a malware family and cluster of components known for its info-stealing and backdoor capabilities that mainly proliferates through search engine optimization manipulation and malicious advertising in order to successfully encourage users to download malicious templates and documents. This malware has been popular since 2020 and currently is still active as of 2021.", - "displayName": "Deimos Component Execution", - "enabled": false, - "query": "DeviceEvents \n| where InitiatingProcessFileName =~ \"powershell.exe\"\n| where ActionType == \"AmsiScriptContent\"\n| where AdditionalFields endswith '[mArS.deiMos]::inteRaCt()\"}'\n| project InitiatingProcessParentFileName, InitiatingProcessFileName, InitiatingProcessCommandLine, ActionType, AdditionalFields, DeviceName\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceEvents" - ] - } - ], - "tactics": [ - "Execution", - "Collection", - "Exfiltration" - ], - "techniques": [ - "T1059", - "T1005", - "T1020" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" + "id": "8f47d55b-34a6-5d13-a89f-315b1a2a4f53", + "name": "MicrosoftDefenderForOffice365detectionsandinsights", + "content": { + "version": "Notebook/1.0", + "items": [ + { + "type": 1, + "content": { + "json": "\n\n \n \n \n \n
\n Microsoft Defender for Office 365 Detections and Insights\n \n \n\t
\n\n\n\n\n
This workbook template provides an example of how to visualise and gain insights into Microsoft Defender for Office 365.
It allows you to visualise Microsoft Defender for Office 365 (MDO) data based on your organisation needs.
The workbook uses data from hunting tables streamed from Microsoft Defender XDR via the Microsoft Sentinel Connector. Keep the data in the Log Analytics workspace for as long as necessary to get insights over an extended period, based on your organisation's needs.
\n\n> \n**Please note:** *The workbook has a total of 14 tabs. If not all tabs are visible, you can access the remaining tabs using the \"...\" located at the end of the tab list on the right side.*\n> \n\n---\n\n\n\n> **Multi-tenant / multi-workspace:** select one or more workspaces in the **Workspace** filter to view data across them in a single view. For cross-tenant (MSSP) scenarios, onboard customer tenants with **Azure Lighthouse** (their workspaces then appear in the selectors) or use **Microsoft Defender multi-tenant management** in the Defender portal. For performance, keep to ~5–10 workspaces per view." + }, + "name": "text - 2", + "id": "d2b45ab8-a1c1-43d2-853d-290640bf4c94" + }, + { + "type": 9, + "content": { + "version": "KqlParameterItem/1.0", + "parameters": [ + { + "id": "2e238f92-709c-410b-93e0-60eab6150a75", + "version": "KqlParameterItem/1.0", + "name": "TimeRange", + "type": 4, + "isRequired": true, + "isGlobal": true, + "typeSettings": { + "selectableValues": [ + { + "durationMs": 3600000 + }, + { + "durationMs": 14400000 + }, + { + "durationMs": 43200000 + }, + { + "durationMs": 86400000 + }, + { + "durationMs": 172800000 + }, + { + "durationMs": 259200000 + }, + { + "durationMs": 604800000 + }, + { + "durationMs": 1209600000 + }, + { + "durationMs": 2592000000 + }, + { + "durationMs": 5184000000 + }, + { + "durationMs": 7776000000 + } + ], + "allowCustom": true + }, + "timeContext": { + "durationMs": 86400000 + }, + "value": { + "durationMs": 7776000000 + }, + "key": "2e238f92-709c-410b-93e0-60eab6150a75" + }, + { + "id": "165f2f4a-e49f-4561-adc5-d0527a4caf32", + "version": "KqlParameterItem/1.0", + "name": "Granularity", + "label": "Trend interval", + "type": 2, + "isRequired": true, + "typeSettings": { + "additionalResourceOptions": [], + "showDefault": false + }, + "jsonData": "[[{ \"value\": \"1d\", \"label\": \"Daily (1d)\", \"selected\": true }, { \"value\": \"7d\", \"label\": \"Weekly (7d)\" }, { \"value\": \"30d\", \"label\": \"Monthly (30d)\" }, { \"value\": \"90d\", \"label\": \"Quarterly (90d)\" }]", + "timeContext": { + "durationMs": 86400000 + }, + "value": "1d" + } + ], + "style": "pills" + }, + "name": "parameters - 1", + "id": "0021e733-42b4-461f-8f6c-14e6e765389d" + }, + { + "type": 11, + "content": { + "version": "LinkItem/1.0", + "style": "tabs", + "links": [ + { + "id": "3d26d949-bba8-486c-9af7-2b85bd5c8ab0", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Executive Summary", + "subTarget": "1", + "style": "link", + "key": "3d26d949-bba8-486c-9af7-2b85bd5c8ab0" + }, + { + "id": "a5f95467-84c1-4d8b-858c-7819339af748", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Email - Malware", + "subTarget": "2", + "style": "link", + "key": "a5f95467-84c1-4d8b-858c-7819339af748" + }, + { + "id": "b6c93de8-16d9-4c90-999b-837935de5645", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Email - Phish", + "subTarget": "3", + "style": "link", + "key": "b6c93de8-16d9-4c90-999b-837935de5645" + }, + { + "id": "9e006e81-4fd4-40b9-9d20-3705dd6c17ad", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Email - Impersonation & BEC", + "subTarget": "15", + "style": "link", + "key": "75f1e28f-e95a-4810-af40-6b47b35cda46" + }, + { + "id": "df2c53b4-b6ed-4151-95fb-b3f08b849b84", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Email - Spam", + "subTarget": "4", + "style": "link", + "key": "df2c53b4-b6ed-4151-95fb-b3f08b849b84" + }, + { + "id": "fd2006c9-39b5-43ac-b05d-47309ee22deb", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Teams & Collaboration", + "subTarget": "14", + "style": "link", + "key": "fd2006c9-39b5-43ac-b05d-47309ee22deb" + }, + { + "id": "ee01f95a-c5f7-4864-82e8-54a164741ba2", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "File - Malware (SharePoint, Teams and OneDrive)", + "subTarget": "9", + "style": "link", + "key": "ee01f95a-c5f7-4864-82e8-54a164741ba2" + }, + { + "id": "9df30067-3266-48a8-b9e3-d65952098d46", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "URL & Clicks", + "subTarget": "5", + "style": "link", + "key": "9df30067-3266-48a8-b9e3-d65952098d46" + }, + { + "id": "b4be0ac3-3f48-44a8-b4b6-b46e17c710cd", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Top Users & Exfiltration", + "subTarget": "6", + "style": "link", + "key": "b4be0ac3-3f48-44a8-b4b6-b46e17c710cd" + }, + { + "id": "e1d34091-7b3c-4e2d-a032-8be82a989313", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Email - Detection Overrides", + "subTarget": "7", + "style": "link", + "key": "e1d34091-7b3c-4e2d-a032-8be82a989313" + }, + { + "id": "a1e6264d-8f85-4a94-9ffd-eee36c04a0d5", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Post-Delivery & Quarantine", + "subTarget": "11", + "style": "link", + "key": "a1e6264d-8f85-4a94-9ffd-eee36c04a0d5" + }, + { + "id": "08c43a4f-f502-4813-9b8d-3f6b0b62b2fd", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "False Negative(FN) Submissions", + "subTarget": "8", + "style": "link", + "key": "08c43a4f-f502-4813-9b8d-3f6b0b62b2fd" + }, + { + "id": "638d931f-f319-4914-b72d-8d68e914c7d4", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "False Positive(FP) Submissions", + "subTarget": "10", + "style": "link", + "key": "638d931f-f319-4914-b72d-8d68e914c7d4" + }, + { + "id": "b2920bee-c32a-4fdd-9d32-b004db2f3ac8", + "cellValue": "Tab", + "linkTarget": "parameter", + "linkLabel": "Security Operations Center (SOC) Insights", + "subTarget": "13", + "style": "link", + "key": "b2920bee-c32a-4fdd-9d32-b004db2f3ac8" + } + ] + }, + "name": "links - 14", + "id": "5c9a1d6b-c248-432b-a1c0-496337635775" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Defender for Office 365 - Protection Insights\r\n
\r\n\r\n**Microsoft Defender for Office 365** is a comprehensive security solution designed to protect organizations from advanced threats targeting their email and collaboration tools. It leverages a multi-layered approach to safeguard against phishing, malware, business email compromise (BEC), and other sophisticated attacks.\r\n" + }, + "name": "text - 13", + "styleSettings": { + "margin": "0", + "padding": "0" + }, + "id": "46119f93-fad9-413c-8e10-7615c6fdde2f" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows the number behind the effectiveness of phish and malware false positives including post delivery events but without edge data detections.\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\n\r\n// Get all mailflow detected as clean at time of delivery \r\nlet EmailEventsClean = materialize( \r\n EmailEvents \r\n | where Timestamp between (toscalar(minTime) .. toscalar(maxTime)) and EmailDirection == \"Inbound\" \r\n | where ThreatTypes !contains \"Phish\" and ThreatTypes !contains \"Malware\" // UN-comment this when using sentinel or another streaming SIEM (line 10).\r\n // this alteration is due to the threat types being updated directly within advanced hunting.\r\n //| where DeliveryLocation != \"Quarantine\" // comment out this line if you uncomment line 10, as it's only required for advanced hunting.\r\n | project NetworkMessageId,ThreatTypes \r\n); \r\n// Get all mailflow detected as phish or malware at time of delivery \r\nlet EmailEventsThreats = materialize( \r\n EmailEvents \r\n | where Timestamp between (toscalar(minTime) .. toscalar(maxTime)) and EmailDirection == \"Inbound\" \r\n | where ThreatTypes contains \"Phish\" or ThreatTypes contains \"Malware\" \r\n | extend MDO_detection = parse_json(DetectionMethods) \r\n | extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0])) \r\n | extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\") \r\n | project NetworkMessageId,FirstDetection,FirstSubcategory,MDO_detection,ThreatTypes \r\n); \r\n// Get all post delivery ZAP / Redelivery events, and arg_max them to ensure we have the latest verdict to work with for each \r\nlet EmailPostDeliveryFiltered = materialize( \r\n EmailPostDeliveryEvents \r\n | where Timestamp between (toscalar(minTime) .. datetime_add('day', 7, toscalar(maxTime))) \r\n | where ActionType in (\"Malware ZAP\",\"Phish ZAP\") or Action has_any (\"Redelivery\",\"Reprocessed\") \r\n | extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n | summarize arg_max(Timestamp, *) by Key \r\n | project Action,ActionType,ActionResult,ThreatTypes,NetworkMessageId \r\n); \r\n// Optional - get all admin submissions for malware or phish, so we can also count these in the miss bucket. \r\nlet CloudAppEventsFiltered = materialize( \r\n CloudAppEvents \r\n | where Timestamp between (toscalar(minTime) .. datetime_add('day', 7, toscalar(maxTime)))\r\n | where ActionType == \"AdminSubmissionSubmitted\" \r\n | extend SubmissionType = tostring(parse_json(RawEventData).SubmissionType) \r\n | extend NetworkMessageId = tostring(parse_json(RawEventData).ObjectId) \r\n | where SubmissionType in (\"1\", \"2\") \r\n | project SubmissionType,NetworkMessageId \r\n); \r\n// get the number of threats caught in mailflow \r\nlet Mal_Phish_Mailflow = toscalar( \r\n EmailEventsThreats \r\n | summarize count() \r\n); \r\n// get the number of threats caught in mailflow which turned out to be false positives (FPs) so we can correct the calculation \r\nlet FP_ZAP = toscalar( \r\n EmailPostDeliveryFiltered \r\n | where ThreatTypes !contains \"Phish\" and ThreatTypes !contains \"Malware\" and Action has_any (\"Redelivery\",\"Reprocessed\") \r\n | join kind=leftsemi (EmailEventsThreats) on NetworkMessageId \r\n | summarize count() \r\n); \r\n// get the number of threats successfully cleaned up post delivery, ignoring where administrative policy stopped action \r\nlet FN_ZAP_Successful = toscalar( \r\n EmailPostDeliveryFiltered \r\n | where ActionType in (\"Malware ZAP\",\"Phish ZAP\") and ActionResult in (\"Success\",\"AdminPolicy\") \r\n | join kind=leftsemi (EmailEventsClean) on NetworkMessageId \r\n | summarize count() \r\n); \r\n// get the number of threats unsuccessfully cleaned up post delivery. \r\nlet FN_ZAP_Unsuccessful = toscalar( \r\n EmailPostDeliveryFiltered \r\n | where ActionType in (\"Malware ZAP\",\"Phish ZAP\") and ActionResult !in (\"Success\",\"AdminPolicy\") \r\n | join kind=leftsemi (EmailEventsClean) on NetworkMessageId \r\n | summarize count() \r\n); \r\n// join the administrative submissions to clean mailflow to find the additional miss \r\nlet FN_Admin_Submissions = toscalar( \r\n CloudAppEventsFiltered \r\n | join kind=rightsemi (EmailEventsClean) on NetworkMessageId \r\n | summarize count() \r\n ); \r\n // print each result, and run the calculation to work out effectiveness at time of delivery and post delivery. \r\n\r\nprint StatisticName=\"Effectiveness Post Delivery\", Value=abs(round(((toreal(toscalar(FN_Admin_Submissions))+toreal(toscalar(FN_ZAP_Unsuccessful)))/(toreal(toscalar(Mal_Phish_Mailflow))+toreal(toscalar(FN_ZAP_Successful))+toreal(toscalar(FN_ZAP_Unsuccessful))+toreal(toscalar(FN_Admin_Submissions))-toreal(toscalar(FP_ZAP)))*100-100),2))", + "size": 1, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "stat", + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "StatisticName", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Value", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + }, + "graphSettings": { + "type": 0, + "topContent": { + "columnMatch": "StatisticName", + "formatter": 1 + }, + "centerContent": { + "columnMatch": "Value", + "formatter": 1, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + }, + "statSettings": { + "valueField": "Value", + "valueAggregation": "None", + "colorSettings": { + "type": "thresholds", + "mode": "foreground", + "heatmapPalette": "greenRed", + "thresholdsGrid": [ + { + "operator": ">", + "thresholdValue": "95", + "representation": "green" + }, + { + "operator": "<=", + "thresholdValue": "95", + "representation": "orange" + }, + { + "operator": "<=", + "thresholdValue": "90", + "representation": "red" + } + ] + }, + "iconSettings": { + "thresholdsGrid": [] + }, + "numberFormatSettings": { + "unit": 1, + "options": { + "style": "decimal" + } + }, + "tagText": "Phish / Malware Effectiveness - Post Delivery", + "valueFontStyle": "superLarge", + "tagTextPosition": "bottom" + } + }, + "customWidth": "50", + "name": "query - 5", + "id": "62de2a91-a809-48ec-a111-e697d556b2b3" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the percentage of emails released from quarantine out of the total ammount of quarantined emails\r\nlet Quarantine_Releases = toscalar(EmailPostDeliveryEvents\r\n| where Action == \"Quarantine release\"\r\n| join kind=leftouter (EmailEvents | where DeliveryLocation == \"Quarantine\") on NetworkMessageId\r\n| summarize count());\r\nlet Quarantined_Mailflow = toscalar(EmailEvents | where DeliveryLocation == \"Quarantine\"\r\n| summarize count());\r\nprint\r\nQuarantine_Releases = toreal(Quarantine_Releases),\r\nQuarantined_Mailflow = toreal(Quarantined_Mailflow),\r\nRelease_Percentage = abs(round(((toreal(Quarantine_Releases)/toreal(Quarantined_Mailflow))*100),2))", + "size": 1, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "stat", + "tileSettings": { + "titleContent": { + "columnMatch": "Release_Percentage", + "formatter": 12, + "formatOptions": { + "palette": "none" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + "showBorder": true, + "sortCriteriaField": "Release_Percentage", + "size": "auto" + }, + "graphSettings": { + "type": 0, + "topContent": { + "columnMatch": "StatisticName", + "formatter": 1 + }, + "centerContent": { + "columnMatch": "Value", + "formatter": 1, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + }, + "statSettings": { + "valueField": "Release_Percentage", + "valueAggregation": "None", + "colorSettings": { + "type": "thresholds", + "mode": "foreground", + "heatmapPalette": "greenRed", + "thresholdsGrid": [ + { + "operator": "<", + "thresholdValue": "5", + "representation": "green" + }, + { + "operator": ">", + "thresholdValue": "5", + "representation": "redDark" + } + ] + }, + "iconSettings": { + "thresholdsGrid": [] + }, + "numberFormatSettings": { + "unit": 1, + "options": { + "style": "decimal" + } + }, + "tagText": "Quarantine Release Percentage", + "valueFontStyle": "superLarge", + "tagTextPosition": "bottom" + } + }, + "customWidth": "50", + "name": "query - 1", + "id": "858ac1a4-8828-45e9-968c-d3cfc1216c64" + } + ] + }, + "name": "TopNr", + "id": "1369c97e-848b-475a-b447-3a435cb7a1f1" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "**Effectiveness visually represents the protection given by Defender for Office 365 against phishing and malware in email messages.**
\r\nWe consider messages that your users report, as well as decisions that are made after delivery." + }, + "name": "text - 9", + "styleSettings": { + "margin": "1px" + }, + "id": "25e2e19e-aefb-4e37-b28f-b4138d63e109" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows the number behind the effectiveness of phish and malware false positives including post delivery events but without edge data detections.\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\n\r\n// Get all mailflow detected as clean at time of delivery \r\nlet EmailEventsClean = materialize( \r\n EmailEvents \r\n | where Timestamp between (toscalar(minTime) .. toscalar(maxTime)) and EmailDirection == \"Inbound\" \r\n | where ThreatTypes !contains \"Phish\" and ThreatTypes !contains \"Malware\" // UN-comment this when using sentinel or another streaming SIEM (line 10).\r\n // this alteration is due to the threat types being updated directly within advanced hunting.\r\n //| where DeliveryLocation != \"Quarantine\" // comment out this line if you uncomment line 10, as it's only required for advanced hunting.\r\n | project NetworkMessageId,ThreatTypes \r\n); \r\n// Get all mailflow detected as phish or malware at time of delivery \r\nlet EmailEventsThreats = materialize( \r\n EmailEvents \r\n | where Timestamp between (toscalar(minTime) .. toscalar(maxTime)) and EmailDirection == \"Inbound\" \r\n | where ThreatTypes contains \"Phish\" or ThreatTypes contains \"Malware\" \r\n | extend MDO_detection = parse_json(DetectionMethods) \r\n | extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0])) \r\n | extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\") \r\n | project NetworkMessageId,FirstDetection,FirstSubcategory,MDO_detection,ThreatTypes \r\n); \r\n// Get all post delivery ZAP / Redelivery events, and arg_max them to ensure we have the latest verdict to work with for each \r\nlet EmailPostDeliveryFiltered = materialize( \r\n EmailPostDeliveryEvents \r\n | where Timestamp between (toscalar(minTime) .. datetime_add('day', 7, toscalar(maxTime))) \r\n | where ActionType in (\"Malware ZAP\",\"Phish ZAP\") or Action has_any (\"Redelivery\",\"Reprocessed\") \r\n | extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n | summarize arg_max(Timestamp, *) by Key \r\n | project Action,ActionType,ActionResult,ThreatTypes,NetworkMessageId \r\n); \r\n// Optional - get all admin submissions for malware or phish, so we can also count these in the miss bucket. \r\nlet CloudAppEventsFiltered = materialize( \r\n CloudAppEvents \r\n | where Timestamp between (toscalar(minTime) .. datetime_add('day', 7, toscalar(maxTime)))\r\n | where ActionType == \"AdminSubmissionSubmitted\" \r\n | extend SubmissionType = tostring(parse_json(RawEventData).SubmissionType) \r\n | extend NetworkMessageId = tostring(parse_json(RawEventData).ObjectId) \r\n | where SubmissionType in (\"1\", \"2\") \r\n | project SubmissionType,NetworkMessageId \r\n); \r\n// get the number of threats caught in mailflow \r\nlet Mal_Phish_Mailflow = toscalar( \r\n EmailEventsThreats \r\n | summarize count() \r\n); \r\n// get the number of threats caught in mailflow which turned out to be false positives (FPs) so we can correct the calculation \r\nlet FP_ZAP = toscalar( \r\n EmailPostDeliveryFiltered \r\n | where ThreatTypes !contains \"Phish\" and ThreatTypes !contains \"Malware\" and Action has_any (\"Redelivery\",\"Reprocessed\") \r\n | join kind=leftsemi (EmailEventsThreats) on NetworkMessageId \r\n | summarize count() \r\n); \r\n// get the number of threats successfully cleaned up post delivery, ignoring where administrative policy stopped action \r\nlet FN_ZAP_Successful = toscalar( \r\n EmailPostDeliveryFiltered \r\n | where ActionType in (\"Malware ZAP\",\"Phish ZAP\") and ActionResult in (\"Success\",\"AdminPolicy\") \r\n | join kind=leftsemi (EmailEventsClean) on NetworkMessageId \r\n | summarize count() \r\n); \r\n// get the number of threats unsuccessfully cleaned up post delivery. \r\nlet FN_ZAP_Unsuccessful = toscalar( \r\n EmailPostDeliveryFiltered \r\n | where ActionType in (\"Malware ZAP\",\"Phish ZAP\") and ActionResult !in (\"Success\",\"AdminPolicy\") \r\n | join kind=leftsemi (EmailEventsClean) on NetworkMessageId \r\n | summarize count() \r\n); \r\n// join the administrative submissions to clean mailflow to find the additional miss \r\nlet FN_Admin_Submissions = toscalar( \r\n CloudAppEventsFiltered \r\n | join kind=rightsemi (EmailEventsClean) on NetworkMessageId \r\n | summarize count() \r\n ); \r\n // print each result, and run the calculation to work out effectiveness at time of delivery and post delivery. \r\nunion withsource=Table \r\n (print StatisticName=\"Mal/Phish Mailflow totals - Minus FPs\", Value=toreal(Mal_Phish_Mailflow) - toreal(FP_ZAP)), \r\n (print StatisticName=\"Admin Mal/Phish FNs Submitted\", Value=toreal(FN_Admin_Submissions)), \r\n (print StatisticName=\"Mal/Phish FPs Reverse Zapped\", Value=toreal(FP_ZAP)), \r\n (print StatisticName=\"Mal / Phish Successfully Zapped\", Value=toreal(FN_ZAP_Successful)), \r\n (print StatisticName=\"Mal / Phish UN-Successfully Zapped\", Value=toreal(FN_ZAP_Unsuccessful)), \r\n (print StatisticName=\"Effectiveness Post Delivery (%)\", Value=abs(round(((toreal(FN_Admin_Submissions)+toreal(FN_ZAP_Unsuccessful))/(toreal(Mal_Phish_Mailflow)+toreal(FN_ZAP_Successful)+toreal(FN_ZAP_Unsuccessful)+toreal(FN_Admin_Submissions)-toreal(FP_ZAP))*100-100),2))), \r\n (print StatisticName=\"Effectiveness Pre-Delivery (%)\", Value=abs(round(((toreal(FN_Admin_Submissions)+toreal(FN_ZAP_Unsuccessful)+toreal(FN_ZAP_Successful))/(toreal(Mal_Phish_Mailflow)+toreal(FN_ZAP_Successful)+toreal(FN_ZAP_Unsuccessful)+toreal(FN_Admin_Submissions)-toreal(FP_ZAP))*100-100),2))) \r\n| project StatisticName, Value", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Value", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + }, + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "StatisticName", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Value", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + }, + "graphSettings": { + "type": 2, + "topContent": { + "columnMatch": "StatisticName", + "formatter": 1 + }, + "centerContent": { + "columnMatch": "Value", + "formatter": 1, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + }, + "nodeIdField": "StatisticName", + "sourceIdField": "Value", + "targetIdField": "Value", + "graphOrientation": 3, + "showOrientationToggles": false, + "nodeSize": null, + "staticNodeSize": 100, + "colorSettings": null, + "hivesMargin": 5, + "edgeColorSettings": null + } + }, + "name": "query - 7", + "id": "9e09ff94-8092-49c7-860f-341049e1398c" + } + ] + }, + "customWidth": "50", + "name": "Effectiveness Nr", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "31081a73-9a54-4668-9e26-ad7347f1e06e" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "**Quarantine release rate by detection technology.** \r\n
\r\nFor each detector, the share of its quarantined mail that was later released (Release % = released / quarantined). A high rate can indicate false positives worth reviewing." + }, + "name": "text - 1", + "styleSettings": { + "margin": "1px" + }, + "id": "e9848043-03dd-4ada-9e73-238067463f74" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Per detection technology: the share of its quarantined emails later released from quarantine (a high rate can indicate false positives). Top 7 by release rate; detectors with <10 quarantined excluded so the rate is meaningful.\r\nEmailEvents\r\n| where DeliveryLocation == \"Quarantine\"\r\n| extend MDO_detection = parse_json(DetectionMethods)\r\n| extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0]))\r\n| extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\")\r\n| where FirstSubcategory contains \"Malware\" or FirstSubcategory contains \"Phish\"\r\n| join kind=leftouter (\r\n EmailPostDeliveryEvents\r\n | where Action == \"Quarantine release\"\r\n | distinct NetworkMessageId\r\n | extend ReleasedFlag = \"yes\"\r\n ) on NetworkMessageId\r\n| summarize Quarantined = dcount(NetworkMessageId), Released = dcountif(NetworkMessageId, ReleasedFlag == \"yes\") by FirstSubcategory\r\n| where Quarantined >= 10 and Released > 0\r\n| extend ReleaseRate = round(Released * 100.0 / Quarantined, 2)\r\n| project ['Detection Technology']=FirstSubcategory, ['Quarantined Emails']=Quarantined, ['Released']=Released, ['Release %']=ReleaseRate\r\n| order by ['Release %'] desc\r\n| take 7", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Quarantined Emails", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Released", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "90px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Release %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "90px" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "name": "query - 2", + "id": "1bbae9d1-d6f8-446a-817c-8fdc2df83d4c" + } + ] + }, + "customWidth": "50", + "name": "Quarantine Overview Relese", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "36fd8f20-ece7-4889-9fb1-f5b85b97b45a" + } + ] + }, + "customWidth": "100", + "name": "group - Exec Protection Insights", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "1d8e22e0-22f7-453e-aed2-9e56ace1363a" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Protection details\r\n
\r\n\r\nThis Overview provides an executive summary of your Microsoft Defender for Office 365 email security posture: the volume of mail processed, threats detected and filtered (phishing, malware, spam), overall protection effectiveness, and the mix of threats targeting your organization. Use it as a starting point, then drill into the dedicated tabs for detailed investigation." + }, + "name": "text - 13", + "id": "24cf577c-e12a-4747-95a7-1c19bee17397" + }, + { + "type": 9, + "content": { + "version": "KqlParameterItem/1.0", + "parameters": [ + { + "id": "5c0f0101-0a11-4b22-9c33-000000000101", + "version": "KqlParameterItem/1.0", + "name": "ProtectionView", + "label": "Protection view", + "type": 2, + "isRequired": true, + "typeSettings": { + "additionalResourceOptions": [], + "showDefault": false + }, + "jsonData": "[[{ \"value\": \"Table\", \"label\": \"Summary table\", \"selected\": true }, { \"value\": \"Tiles\", \"label\": \"Detailed tiles\" }]", + "value": "Tiles" + } + ], + "style": "pills" + }, + "name": "Protection view selector", + "id": "5c0f0102-0a11-4b22-9c33-000000000102" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let base = materialize(EmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| summarize arg_max(Timestamp, ThreatTypes, DeliveryAction, OrgLevelPolicy, OrgLevelAction, UserLevelAction) by Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress));\r\nlet agg = materialize(base | summarize\r\n Total = count(),\r\n Filtered = countif(isnotempty(ThreatTypes) and DeliveryAction != \"Delivered\" and OrgLevelPolicy !in (\"Phishing simulation\", \"SecOps Mailbox\")),\r\n FMal = countif(ThreatTypes has \"Malware\" and OrgLevelPolicy !in (\"Phishing simulation\", \"SecOps Mailbox\")),\r\n FPhish = countif(ThreatTypes has \"Phish\" and not(ThreatTypes has \"Malware\") and DeliveryAction != \"Delivered\" and OrgLevelPolicy !in (\"Phishing simulation\", \"SecOps Mailbox\")),\r\n FSpam = countif(ThreatTypes == \"Spam\" and DeliveryAction != \"Delivered\" and OrgLevelPolicy !in (\"Phishing simulation\", \"SecOps Mailbox\")),\r\n Deliv = countif(isnotempty(ThreatTypes) and DeliveryAction == \"Delivered\" and (isnotempty(OrgLevelAction) or isnotempty(UserLevelAction))),\r\n Blocked = countif(isempty(ThreatTypes) and DeliveryAction != \"Delivered\" and (isnotempty(OrgLevelAction) or isnotempty(UserLevelAction))),\r\n Clean = countif(isempty(ThreatTypes) and DeliveryAction == \"Delivered\"));\r\nlet pd = materialize(EmailPostDeliveryEvents | where ActionResult == \"Success\" | summarize MalZap = countif(ActionType == \"Malware ZAP\"), PhishZap = countif(ActionType == \"Phish ZAP\"), SpamZap = countif(ActionType == \"Spam ZAP\"));\r\nlet sub = materialize(CloudAppEvents | extend R = tostring(parse_json(RawEventData).RecordType), SCT = tostring(parse_json(RawEventData).SubmissionContentType) | where R == \"29\" | summarize Adm = countif(ActionType == \"AdminSubmissionSubmitted\" and SCT == \"Mail\"), Usr = countif(ActionType == \"UserSubmission\"));\r\nlet Total = toscalar(agg | project Total);\r\nlet Filtered = toscalar(agg | project Filtered);\r\nlet FMal = toscalar(agg | project FMal);\r\nlet FPhish = toscalar(agg | project FPhish);\r\nlet FSpam = toscalar(agg | project FSpam);\r\nlet Deliv = toscalar(agg | project Deliv);\r\nlet Blocked = toscalar(agg | project Blocked);\r\nlet Clean = toscalar(agg | project Clean);\r\nlet MalZap = toscalar(pd | project MalZap);\r\nlet PhishZap = toscalar(pd | project PhishZap);\r\nlet SpamZap = toscalar(pd | project SpamZap);\r\nlet Adm = toscalar(sub | project Adm);\r\nlet Usr = toscalar(sub | project Usr);\r\nunion\r\n (print o = 1, Name = \"Total Inbound Emails\", Count = Total),\r\n (print o = 2, Name = \"    Filtering Totals\", Count = Filtered),\r\n (print o = 3, Name = \"        Filtered as Malware\", Count = FMal),\r\n (print o = 4, Name = \"        Filtered as Phish\", Count = FPhish),\r\n (print o = 5, Name = \"        Filtered as Spam\", Count = FSpam),\r\n (print o = 6, Name = \"    Delivered with Detection\", Count = Deliv),\r\n (print o = 7, Name = \"    User/Admin Blocked\", Count = Blocked),\r\n (print o = 8, Name = \"    Clean Emails\", Count = Clean),\r\n (print o = 9, Name = \"Post-Delivery ZAP Removals\", Count = MalZap + PhishZap + SpamZap),\r\n (print o = 10, Name = \"    Removed by Malware ZAP\", Count = MalZap),\r\n (print o = 11, Name = \"    Removed by Phish ZAP\", Count = PhishZap),\r\n (print o = 12, Name = \"    Removed by Spam ZAP\", Count = SpamZap),\r\n (print o = 13, Name = \"User/Admin Reported\", Count = Adm + Usr),\r\n (print o = 14, Name = \"    Reported by Admins\", Count = Adm),\r\n (print o = 15, Name = \"    Reported by Users\", Count = Usr)\r\n| sort by o asc\r\n| extend [\"% of Inbound\"] = round(Count * 100.0 / Total, 1)\r\n| project Name, Count, [\"% of Inbound\"]", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Name", + "formatter": 1, + "formatOptions": { + "customColumnWidthSetting": "3fr" + } + }, + { + "columnMatch": "Count", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "3fr" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "% of Inbound", + "formatter": 3, + "formatOptions": { + "palette": "green", + "min": 0, + "max": 100, + "customColumnWidthSetting": "2fr" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "ProtectionView", + "comparison": "isEqualTo", + "value": "Table" + }, + "name": "query - option 1 grid", + "id": "5c0f0005-0a11-4b22-9c33-000000000005" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "title": "Total Emails", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "EmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key \r\n| summarize Count = count()\r\n| extend Details = \"Total Inbound Emails\";", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Count", + "formatter": 4, + "formatOptions": { + "palette": "greenRed" + } + } + ] + }, + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1, + "formatOptions": { + "compositeBarSettings": { + "labelText": "" + } + } + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "blue", + "compositeBarSettings": { + "labelText": "" + } + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + }, + "chartSettings": { + "xAxis": "Count", + "createOtherGroup": 0 + }, + "mapSettings": { + "locInfo": "LatLong", + "sizeSettings": "Count", + "sizeAggregation": "Sum", + "legendMetric": "Count", + "legendAggregation": "Sum", + "itemColorSettings": { + "type": "heatmap", + "colorAggregation": "Sum", + "nodeColorField": "Count", + "heatmapPalette": "greenRed" + } + } + }, + "name": "query - 1", + "id": "84e8d60b-7937-46f5-b2f4-a1a4adf06c9f" + } + ] + }, + "name": "Total Inbound", + "id": "1aeed046-9ea5-4583-b966-722847997fc7" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "title": "Filtering Totals", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "EmailEvents\r\n| where isnotempty(ThreatTypes) and EmailDirection == \"Inbound\" and DeliveryAction != 'Delivered'\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key \r\n| summarize Count = count()\r\n| extend Details = \"Filtering Totals\";", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1, + "formatOptions": { + "compositeBarSettings": { + "labelText": "" + } + } + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "redDark", + "compositeBarSettings": { + "labelText": "" + } + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "name": "query - 1", + "id": "bae9a200-589f-4ca6-a3cf-f1110f644c49" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises Total emails detected as Malware\r\nEmailEvents\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key \r\n| where ThreatTypes has ('Malware') and EmailDirection == \"Inbound\"\r\n| summarize Count= count()\r\n| extend Details = \"Emails Filtered as Malware\"", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "red" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "33.3", + "name": "query - 4", + "id": "0984d05b-fd2c-48e1-835f-41afc5a2385a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises Total emails detected as Phish\r\nEmailEvents\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key \r\n| where ThreatTypes has \"Phish\" and not(ThreatTypes has \"Malware\") and EmailDirection == \"Inbound\" and DeliveryAction != 'Delivered'\r\n| summarize Count= count()\r\n| extend Details = \"Emails Filtered as Phish\"", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "orange" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "33.3", + "name": "query - 4", + "id": "ced2d054-76d1-40df-a412-0bc86a6c3336" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises Total emails by detected as Spam\r\nEmailEvents\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key \r\n| where ThreatTypes == 'Spam' and EmailDirection == \"Inbound\" and DeliveryAction != 'Delivered'\r\n| summarize Count= count()\r\n| extend Details = \"Emails Filtered as Spam\"", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "yellow" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "33.3", + "name": "query - 4", + "id": "14456a0d-f5ac-46a0-a007-c72c7c40c58f" + } + ] + }, + "customWidth": "50", + "name": "group - 9", + "id": "d4e69885-f1b2-4c2b-85c2-188a6708dc4b" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "title": " ", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "EmailEvents\r\n| where EmailDirection == \"Inbound\" and isnotempty(ThreatTypes) and DeliveryAction == 'Delivered'\r\n| where isnotempty(OrgLevelAction) or isnotempty(UserLevelAction)\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key \r\n| summarize Count= count()\r\n| extend Details = \"Delivered with Detection\"", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "red" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "33.3", + "name": "query - 3", + "id": "394d1ed4-7089-4291-bc80-f9948e3be6a9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "EmailEvents\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where EmailDirection == \"Inbound\" and isempty(ThreatTypes) \r\n| where isnotempty(OrgLevelAction) or isnotempty(UserLevelAction)\r\n| where DeliveryAction != 'Delivered'\r\n| summarize Count= count()\r\n| extend Details = \"User/Admin Blocked\"", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "gray" + }, + "tooltipFormat": { + "tooltip": "Emails blocked from being delivered because of User or Admin overriddes" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "33.3", + "name": "query - 3", + "id": "c29a2268-67d1-4958-a9a3-696384075987" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "EmailEvents\r\n| where isempty(ThreatTypes) and EmailDirection == \"Inbound\" and DeliveryAction == 'Delivered'\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key \r\n| summarize Count= count()\r\n| extend Details = \"Clean Emails\"", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "gray" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "33.3", + "name": "query - 3", + "id": "89a02ac7-971c-4672-bf5d-64709c479536" + } + ] + }, + "customWidth": "50", + "name": "group - 8", + "id": "761e74d4-279e-465f-ba47-5eeec4cf05d2" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "title": "Post-Delivery ZAP Removals", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "EmailPostDeliveryEvents\r\n| where ActionResult == \"Success\"\r\n| where ActionType == \"Malware ZAP\"\r\n| summarize Count= count()\r\n| extend Details = \"Total Emails Removed by Malware ZAP\"\r\n", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "red" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "33.3", + "name": "query - 3", + "id": "b06666bc-6ec0-49e7-a332-77e278d2320f" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "EmailPostDeliveryEvents\r\n| where ActionResult == \"Success\"\r\n| where ActionType == \"Phish ZAP\"\r\n| summarize Count= count()\r\n| extend Details = \"Total Emails Removed by Phish ZAP\"", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "orange" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "33.3", + "name": "query - 3", + "id": "6fbac01b-0c42-46dc-8ca8-68e285593a45" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "EmailPostDeliveryEvents\r\n| where ActionResult == \"Success\"\r\n| where ActionType == \"Spam ZAP\"\r\n| summarize Count= count()\r\n| extend Details = \"Total Emails Removed by Spam ZAP\"", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 1, + "palette": "yellow" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "33.3", + "name": "query - 3", + "id": "7bd27a3b-be13-4ca0-9964-0f872f826b45" + } + ] + }, + "name": "Post Delivery", + "id": "4d20339e-5215-4edf-99d6-728cac183d16" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails reported by user and total emails reported by Admins as false positive or false negative detection\r\nCloudAppEvents\r\n| extend Record= (parse_json(RawEventData)).RecordType\r\n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState,SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| where Record == 29 and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\"\r\n| summarize Count= count()\r\n| extend Details = \"Total Emails Reported by Admins\"", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "palette": "none" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "50", + "name": "query - 3", + "id": "7490fa3a-e287-4fc3-b025-8772b9edb601" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails reported by user and total emails reported by Admins as false positive or false negative detection\r\nCloudAppEvents\r\n| extend Record= (parse_json(RawEventData)).RecordType\r\n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState\r\n| where Record == 29 and ActionType == \"UserSubmission\"\r\n| summarize Count= count()\r\n| extend Details = \"Total Emails Reported by Users\"\r\n", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "palette": "none" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full", + "styleSettings": { + "borderStyle": "rounded", + "backgroundColor": "colorGray100" + } + } + }, + "customWidth": "50", + "name": "query - 2", + "id": "7af222dc-fd74-40ec-8ab7-741e179c07bf" + } + ] + }, + "name": "Reported", + "id": "8151e242-1c30-4550-ae9c-83f159e1a456" + } + ] + }, + "conditionalVisibility": { + "parameterName": "ProtectionView", + "comparison": "isEqualTo", + "value": "Tiles" + }, + "name": "Protection - Tiles view", + "id": "5c0f0103-0a11-4b22-9c33-000000000103" + }, + { + "type": 1, + "content": { + "json": "## Most Attacked Users
\r\n\r\n**The users most targeted by inbound email threats across all threat types (malware, phishing, and spam) in the selected period. Concentrated targeting of a few individuals is a strong signal of deliberate campaigns.**

**Recommended action:** Prioritise these users for security awareness training, tighter protection policies (for example the Strict preset), and closer monitoring - they are your highest-risk people." + }, + "name": "exec vap banner", + "id": "1fe431fb-cc96-4e81-b164-3a1a3823ebeb" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query surfaces the users most targeted by inbound email threats across all threat types (malware, phishing, spam) for the selected period, so SecOps can prioritise the highest-risk individuals. Similar to a \"Most Attacked People\" view.\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| where isnotempty(ThreatTypes)\r\n| summarize\r\n ['Total Threats'] = count(),\r\n Malware = countif(ThreatTypes has \"Malware\"),\r\n Phish = countif(ThreatTypes has \"Phish\"),\r\n Spam = countif(ThreatTypes has \"Spam\"),\r\n ['Last Seen'] = max(Timestamp)\r\n by ['User']=RecipientEmailAddress\r\n| top 10 by ['Total Threats']\r\n| project ['User'], ['Total Threats'], Malware, Phish, Spam, ['Last Seen']", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Malware", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "145px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Phish", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "145px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Spam", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "145px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Total Threats", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "145px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "name": "exec vap table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "2dfd91b1-b8d3-4a72-aaf4-a30a1886bed7" + }, + { + "type": 1, + "content": { + "json": "## Detection trend over time - grouped by {Granularity}\r\n**Represents total emails, total detections, total user submissions and admin email submissions over time summarizing the data per {Granularity} interval**" + }, + "name": "text - 14", + "id": "ddbbdaef-b374-42a8-821c-7fcd7ee53ba9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails, total detections, total user, and admin email submissions over time summarizing the data daily\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet scaffold = range Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran;\r\nlet baseQuery = materialize(EmailEvents\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| where isnotempty(Timestamp));\r\nlet sub = materialize(CloudAppEvents\r\n| extend Record = (parse_json(RawEventData)).RecordType, SubmissionContentType = tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| where Record == 29);\r\nlet zapbase = EmailPostDeliveryEvents\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| where ActionResult == \"Success\"\r\n| where ActionType == \"Phish ZAP\" or ActionType == \"Malware ZAP\" or ActionType == \"Spam ZAP\";\r\nunion\r\n(scaffold | join kind=leftouter (baseQuery | where EmailDirection == \"Inbound\" | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Total Inbound Emails\"),\r\n(scaffold | join kind=leftouter (baseQuery | where ThreatTypes has ('Phish') | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Emails Detected as Phish\"),\r\n(scaffold | join kind=leftouter (baseQuery | where ThreatTypes has ('Malware') | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Emails Detected as Malware\"),\r\n(scaffold | join kind=leftouter (baseQuery | where ThreatTypes has ('Spam') | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Emails Detected as Spam\"),\r\n(scaffold | join kind=leftouter (baseQuery | where EmailDirection == \"Intra-org\" | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Total Intra-org Emails\"),\r\n(scaffold | join kind=leftouter (baseQuery | where EmailDirection == \"Outbound\" | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Total Outbound Emails\"),\r\n(scaffold | join kind=leftouter (baseQuery | where isnotempty(ThreatTypes) | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Total Emails with Threat\"),\r\n(scaffold | join kind=leftouter (sub | where ActionType == \"UserSubmission\" | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Total Emails Reported by Users\"),\r\n(scaffold | join kind=leftouter (zapbase | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Total Emails Removed by ZAP\"),\r\n(scaffold | join kind=leftouter (sub | where ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType == \"Mail\" | summarize Count = count() by Timestamp = bin(Timestamp, gran)) on Timestamp | project Timestamp, Count = coalesce(Count, 0), Details = \"Total Emails Reported by Admins\")", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "xAxis": "Timestamp", + "seriesLabelSettings": [ + { + "seriesName": "Total Inbound Emails", + "label": "Inbound Emails", + "color": "green" + }, + { + "seriesName": "Total Emails with Threat", + "label": "Emails with Threat", + "color": "redDark" + }, + { + "seriesName": "Emails Detected as Phish", + "label": "Emails with Phish", + "color": "redBright" + }, + { + "seriesName": "Emails Detected as Malware", + "label": "Emails with Malware", + "color": "red" + }, + { + "seriesName": "Total Intra-org Emails", + "label": "Intra-org Emails", + "color": "greenDark" + }, + { + "seriesName": "Emails Detected as Spam", + "label": "Emails with Spam", + "color": "gray" + }, + { + "seriesName": "Total Outbound Emails", + "label": "Outbound Emails", + "color": "greenDarkDark" + }, + { + "seriesName": "Total Emails Removed by ZAP", + "label": "Emails ZAP-d", + "color": "orangeDark" + }, + { + "seriesName": "Total Emails Reported by Users", + "label": "User Reported Emails", + "color": "lightBlue" + }, + { + "seriesName": "Total Emails Reported by Admins", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "name": "query - 1", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "bcbefa48-f553-4290-acff-2691caf898ea" + }, + { + "type": 1, + "content": { + "json": "## Bad traffic (%) - Inbound Emails - grouped by {Granularity}\r\n**This represents bad traffic (% of emails with threats) compared to total inbound emails, summarized per {Granularity} interval over time.**" + }, + "name": "text - 15", + "id": "30761bcc-b1a5-45e2-8c0a-22388fbbf16c" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises bad traffic (% of emails with threats) compared to total inbound emails over time summarising the data daily.\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| summarize TotalEmailCount = count(),\r\n BadEmailCount = countif(isnotempty(ThreatTypes)) by bin(Timestamp, {Granularity})\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(BadEmailCount / todouble(TotalEmailCount) * 100, 2))\r\n| project Timestamp, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound", + "size": 0, + "aggregation": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "100", + "name": "query - 4", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "508036a8-d969-44c2-b2d2-c62d99999197" + } + ] + }, + "customWidth": "100", + "name": "group - Exec Protection Details", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "e6edeeeb-dcde-41d0-88c7-97ef773403b1" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Collaboration Protection Posture\r\n
\r\n\r\nMicrosoft Defender for Office 365 protects Microsoft Teams and collaboration, not only email. This snapshot shows Teams threat activity for the period.

**Recommended action:** Review the dedicated **Teams & Collaboration** tab for impersonation, malicious URLs, risky senders and file threats in Teams." + }, + "name": "exec collab banner", + "id": "3d78a6aa-51d4-4cab-93d1-26dff86fd667" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Headline Microsoft Teams / collaboration protection metrics for the executive summary, with per-interval sparklines so the collaboration threat trend is visible at a glance. Messages and URLs are counted per distinct Teams message.\r\nlet gran = {Granularity};\r\nlet me = materialize(MessageEvents);\r\nlet cae = materialize(CloudAppEvents | where ActionType == \"TeamsImpersonationDetected\");\r\nlet mui = materialize(MessageUrlInfo);\r\nlet uce = materialize(UrlClickEvents | where Workload == \"Teams\" and ActionType in (\"ClickBlocked\",\"ClickBlockedByTenantPolicy\"));\r\nlet fmc = materialize(FileMaliciousContentInfo | where Workload == \"MicrosoftTeams\");\r\nunion\r\n(me | summarize Count = dcount(TeamsMessageId) | extend Details = \"Teams Messages Scanned\", Ord = 1, Trend = toscalar(me | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(me | where isnotempty(ThreatTypes) | summarize Count = count() | extend Details = \"Teams Threat Messages\", Ord = 2, Trend = toscalar(me | where isnotempty(ThreatTypes) | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(cae | summarize Count = count() | extend Details = \"Teams Impersonation Detections\", Ord = 3, Trend = toscalar(cae | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(mui | summarize Count = dcount(TeamsMessageId) | extend Details = \"URLs Shared in Teams\", Ord = 4, Trend = toscalar(mui | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(uce | summarize Count = count() | extend Details = \"Malicious Clicks Blocked\", Ord = 5, Trend = toscalar(uce | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(fmc | summarize Count = count() | extend Details = \"Teams Files Scanned\", Ord = 6, Trend = toscalar(fmc | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(fmc | where isnotempty(ThreatTypes) | summarize Count = count() | extend Details = \"Malicious Teams Files\", Ord = 7, Trend = toscalar(fmc | where isnotempty(ThreatTypes) | make-series S = count() default = 0 on Timestamp step gran | project S))\r\n| sort by Ord asc\r\n| project Details, Count, Trend", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "secondaryContent": { + "columnMatch": "Trend", + "formatter": 21 + }, + "showBorder": true, + "size": "auto" + } + }, + "customWidth": "100", + "name": "exec collab tiles", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "3175aee5-56d2-4cb1-b1c3-75be683e6ffb" + } + ] + }, + "customWidth": "100", + "name": "group - Exec Collaboration Posture", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "39b0921f-fcef-49f4-8d52-0dcd1f33045b" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Emerging Threats\r\n
\r\n\r\n

With more sophisticated adversaries and new threats emerging frequently and prevalently, it's critical to be able to quickly identify and react to these threats.

\r\n\r\n[

🛡️Activity Profile: Email threat landscape

](https://security.microsoft.com/threatanalytics3/f186e4b0-28df-499a-901e-c64768b6d0dc/overview?filters=tags%253DPhishing)\r\n[

🛡️Activity Profile: Automated business email impersonation campaign uses parallel aging report and payroll diversion lures

](https://security.microsoft.com/threatanalytics3/3eb53378-892d-4695-a497-25d0a54181ee)\r\n[

🛡️Tool Profile: StealC

](https://security.microsoft.com/threatanalytics3/4d837c12-1db4-49c8-8466-219198d40b9b)\r\n[

🛡️OSINT Profile: UNC1151/Ghostwriter phishing campaign targeting Gmail accounts

](https://security.microsoft.com/threatanalytics3/b1a7e5e7-4b43-4758-8805-f714a131161a)\r\n[

🛡️Activity Profile: Encrypted message campaign targets real estate/financial sectors

](https://security.microsoft.com/threatanalytics3/651d669a-4721-42ab-bb96-509e94b5bfd9)\r\n\r\n
\r\n\r\nView all\r\n \r\n\r\n" + }, + "name": "text - 10", + "styleSettings": { + "margin": "0", + "padding": "0" + }, + "id": "0c781e85-af9a-41a6-9cf7-b3bb9a09d5d0" + } + ] + }, + "customWidth": "100", + "name": "group - Exec Emerging Threats", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "4f8886d3-882a-4c14-ab7f-a37bd302e32f" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Microsoft 365 Secure Email Gateway Performance\r\n
\r\n\r\n

Using multiple vendor email security products can offer diverse detections. However, our comprehensive end-to-end approach—spanning prevention, detection, posture, investigation, response, and user training—delivers a unified and effective defense that matches or exceeds the efficacy of siloed Secure Email Gateway solutions.

\r\n\r\n[

Learn more

](https://www.microsoft.com/en-us/security/blog/2026/06/15/microsoft-defender-email-security-benchmarking-key-insights-from-one-year-of-data/) \r\n\r\n
\r\n

High-severity email threats missed per 1,000 users protected - February–April 2026 (Microsoft Defender email security benchmarking)

" + }, + "name": "text - 12", + "id": "94c804f9-2860-4768-be59-fb31a4ff22d7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "datatable(Index:int, Name:string, Value:int)\r\n[\r\n 1, \"Defender for Office 365\", 194,\r\n 2, \"Mimecast\", 478,\r\n 3, \"ProofPoint\", 483,\r\n 4, \"HornetSecurity\", 813,\r\n 5, \"TrendMicro\", 1151,\r\n 6, \"IronPort\", 1274,\r\n 7, \"Barracuda\", 1585,\r\n 8, \"FireEye\", 2107\r\n]\r\n| project [\"Email security solution\"] = Name, [\"High-severity threats missed / 1K users\"] = Value\r\n| order by [\"High-severity threats missed / 1K users\"] asc\r\n", + "size": 0, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Email security solution", + "formatter": 1, + "formatOptions": { + "customColumnWidthSetting": "40%" + } + }, + { + "columnMatch": "High-severity threats missed / 1K users", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "min": 0, + "max": 2107, + "customColumnWidthSetting": "60%" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "useGrouping": true + } + } + } + ], + "rowLimit": 10, + "sortBy": [ + { + "itemKey": "High-severity threats missed / 1K users", + "sortOrder": 1 + } + ] + } + }, + "name": "query - 11", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "e54fd5bd-17e2-40dc-897d-8a3bb21116ff" + } + ] + }, + "customWidth": "100", + "name": "group - Exec SEG Performance", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "1f3a7e2b-0a1f-48ba-9da3-e7531d500938" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "id": "ab3756d3-3f60-4024-9376-0f1a7d47ac13", + "type": 1, + "name": "text - 18", + "content": { + "json": "\r\n\r\n\r\n\r\n
Stay Current\r\n
\r\n\r\n
\r\n\r\n- **Threat Analytics (Defender XDR)** — live, tenant-specific threat intelligence and recommended actions: aka.ms/threatanalytics\r\n- **Microsoft Security Blog** — campaign write-ups and threat research: microsoft.com/security/blog\r\n- **Microsoft Defender for Office 365 Tech Community blog** — product updates and reporting guidance: Tech Community\r\n- **Latest features in Microsoft Defender for Office 365** — What's new in Microsoft Defender for Office 365 \r\n- **Share reporting feedback**: aka.ms/mdoreportingfeedback\r\n" + } + } + ] + }, + "customWidth": "100", + "name": "group - Exec Stay Current", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "5e22c565-cd2e-41f3-8d5a-0735af67c93f" + } + ], + "exportParameters": true + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "1" + }, + "name": "Detection Overview", + "styleSettings": { + "margin": "0", + "padding": "0" + }, + "id": "3f2cc277-9eb3-486d-a1f8-9fa5374a3d80" + }, + { + "type": 1, + "content": { + "json": "# Malware detection insights\r\n\r\n---\r\n\r\nThis tab provides insights into email message **detections** by Microsoft Defender for Office 365 where the message contained a **malware threat** (such as viruses, spyware, or ransomware) within its **URLs** or **attachments**." + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "text - 13", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "81f28ffc-b69e-4960-a61c-cac17a012ed6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//KPI summary of inbound email malware detections for the selected period, with a per-period Trend series feeding each tile sparkline.\r\nlet gran = {Granularity};\r\nlet mal = EmailEvents | where EmailDirection == \"Inbound\" | where ThreatTypes has \"Malware\";\r\nlet inbox = mal | where DeliveryLocation has \"Inbox\";\r\nlet malTrend = toscalar(mal | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nlet inboxTrend = toscalar(inbox | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nunion\r\n(print Count = toscalar(mal | summarize count()), Details = \"Malware Emails\", Ord = 1, Trend = malTrend),\r\n(print Count = toscalar(mal | summarize dcount(RecipientEmailAddress)), Details = \"Users Targeted\", Ord = 2, Trend = malTrend),\r\n(print Count = toscalar(mal | summarize dcount(SenderFromDomain)), Details = \"Sender Domains\", Ord = 3, Trend = malTrend),\r\n(print Count = toscalar(inbox | summarize count()), Details = \"Delivered to Inbox\", Ord = 4, Trend = inboxTrend)\r\n| sort by Ord asc\r\n| project Count, Details, Trend", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "secondaryContent": { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "min": 0, + "palette": "blue" + } + }, + "showBorder": true, + "size": "auto" + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "malware kpi strip", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "20c06dd3-5025-4b2b-960e-ff012f5d2343" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Malware Detection Trends, Threat Classes, and Malware Names\r\n
\r\n\r\nThis section consolidates key visuals that track and explain malware detections in inbound email as identified by Microsoft Defender for Office 365 focusing on per-{Granularity} trend, threat classes and Malware types. \r\n

**Recommended action:** If malware volume spikes, confirm Safe Attachments (Block mode) is enabled for all users and investigate the top malware families below." + }, + "name": "text - 14", + "id": "1f09c6ec-b2de-4aa9-bd8e-81d11c92ebd4" + }, + { + "type": 1, + "content": { + "json": "### Malware Detection Trend\r\n**This visual displays a per-{Granularity} trend of email malware detections identified by Microsoft Defender for Office 365. The area chart summarises the number of messages flagged for malware threats.**" + }, + "name": "text - Malware Trend header", + "id": "e90b714f-de84-4571-9a60-b3b2f3bd09dd" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections over time summarizing the data daily.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents \r\n| where ThreatTypes has \"Malware\" \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize MalwareDetections = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, MalwareDetections = coalesce(MalwareDetections, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "MalwareDetections", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - 0", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "350d0aa3-c093-4105-a150-c20111ac2912" + }, + { + "type": 1, + "content": { + "json": "### Malware Detection Trend - Advanced Threats\r\n**Not all threats are going to be easily recognisable, that's why Microsoft Defender for Office 365 has advanced threat detection methods, that use virtual sandbox environments to detonate URLs and Files. These virtual sandbox technologies look for known patterns, such as a recognisable login page in a URL, or a file accessing command and control infrastructure. This visual displays a per-{Granularity} trend of Malware detections of these advanced threats**" + }, + "name": "text - Malware Advanced Threats header", + "id": "12e07248-ada4-41d9-99cc-824eb65cff79" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections over time summarizing the data daily by Malware detection technologies/controls used for detecting unknown-unique malware.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where DetectionMethods has 'Malware'\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ParsedMethods = parse_json(DetectionMethods)\r\n| mv-expand MalwareMethod = ParsedMethods.Malware\r\n| where MalwareMethod in ('File detonation','URL detonation')\r\n| summarize Count = count() by MalwareMethod = tostring(MalwareMethod), Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct MalwareMethod | extend d = 1) on d | project Timestamp, MalwareMethod\r\n| join kind=leftouter (agg) on Timestamp, MalwareMethod\r\n| project Timestamp, MalwareMethod, Count = coalesce(Count, 0)\r\n| sort by MalwareMethod asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "File detonation", + "color": "redDark" + }, + { + "seriesName": "URL detonation", + "color": "orangeDark" + } + ] + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - 9", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "ebcb6f29-02be-4dd0-b792-cd99285c29d4" + }, + { + "type": 1, + "content": { + "json": "### Malware Detections by Threat Classification\r\n**Summary of email messages detected by Microsoft Defender for Office 365 as malware, grouped by type of malware (Adware, Downloader, HackTool, Ransomware, Remote access trojan, Spyware).**" + }, + "customWidth": "33", + "name": "text - 15", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "5638fc51-0830-4675-87d4-82f03df17bbf" + }, + { + "type": 1, + "content": { + "json": "### Top Attacked Users by Malware Threat Classification\r\n**Displays the recipient most frequently targeted for each malware type (Adware, Downloader, HackTool, Ransomware, Remote access trojan, Spyware) in inbound email detections.**" + }, + "customWidth": "33", + "name": "text - 15 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "d2e3903b-4984-40da-a437-3d6a2b121e23" + }, + { + "type": 1, + "content": { + "json": "### Malware Detections by Threat Name\r\n**Summarises email messages flagged by Microsoft Defender for Office 365, grouped by specific malware names detected in URLs or attachments.**" + }, + "customWidth": "33", + "name": "text - 15 - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "6c0bebcf-9838-4385-ab3a-30db6c994284" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections summarizing the data by threat classification of the malware threat in the message.\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| where ThreatTypes has 'Malware' and ThreatClassification has_any(\"Adware\",\"Downloader\",\"HackTool\",\"Ransomware\",\"Remote access trojan\",\"Spyware\")\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize Count = count(Key) by ThreatClassification\r\n| sort by Count desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "chartSettings": { + "createOtherGroup": 10 + } + }, + "customWidth": "33", + "name": "query - 11", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "acb98530-8e3a-4383-b42f-8fd74b1c3fbe" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises Malware detections in emails summarizing by various Threat classes showing the top attacked user for each threat classification type.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| where ThreatTypes has \"Malware\" and EmailDirection == \"Inbound\" and ThreatClassification has_any(\"Adware\",\"Downloader\",\"HackTool\",\"Ransomware\",\"Remote access trojan\",\"Spyware\")\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize EmailCount=count() by ThreatClassification, RecipientEmailAddress\r\n| summarize Count = arg_max(EmailCount, RecipientEmailAddress) by ThreatClassification\r\n| sort by Count desc\r\n| project ['Threat Classification'] = ThreatClassification, ['Top Recipient'] = RecipientEmailAddress, ['Emails'] = Count", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "TopEmailCount", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + }, + "statSettings": { + "valueField": "RecipientEmailAddress", + "valueAggregation": "None", + "colorSettings": { + "type": "static", + "mode": "background", + "heatmapPalette": "greenRed", + "thresholdsGrid": [] + }, + "iconSettings": { + "thresholdsGrid": [] + }, + "tagText": "", + "valueFontStyle": "auto" + }, + "chartSettings": { + "xAxis": "RecipientEmailAddress" + } + }, + "customWidth": "33", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - 5 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "d9b46c97-91ce-4d64-aca6-3126ac49c0ff" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections summarizing the data by ThreatNames of the malware detected.\r\nEmailEvents \r\n| where isnotempty(ThreatNames) and ThreatTypes has \"Malware\" \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| mv-expand ThreatName = split(ThreatNames, \",\") to typeof(string)\r\n| where isnotempty(ThreatName)\r\n| distinct Key, ThreatName\r\n| summarize Count = count() by ThreatName\r\n| top 15 by Count\r\n| project ['Threat Name'] = ThreatName, Count", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Count", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "chartSettings": { + "xAxis": "ThreatNames", + "yAxis": [ + "count_" + ], + "createOtherGroup": 10 + } + }, + "customWidth": "33", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - 3", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b9a4b34f-f54f-4d6e-bb20-81925d0f5540" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "group - 3", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "82853a93-e11f-4e4a-80f4-733850a1d3ff" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Malware Detections by Delivery Location, Detection Technology and Sender Infrastructure Insights\r\n
\r\n\r\nThis section consolidates key visuals that track and explain malware detections delivery locations, detection technologies used for detections, sender infrastructure insights in inbound email identified by Microsoft Defender for Office 365 as Malware. \r\n

**Recommended action:** For sender IPs or countries you do not do business with, consider connection filtering or geo-based rules; verify the detection technologies catching these are enabled." + }, + "name": "banner - Malware Delivery Detection Sender", + "id": "cba6403d-e2b1-4fe8-af52-57e5c2aa8e54" + }, + { + "type": 1, + "content": { + "json": "### Malware Detections by delivery location\r\n**Visualizes counts (per {Granularity}) of malware detections of inbound emails by delivery location: Quarantine or Failed (rejected with or without NDR)**" + }, + "name": "text - Malware Delivery Location header", + "id": "95be7f48-40eb-4154-91d8-20f7033f2ff5" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections over time summarizing the data daily by Delivery Location\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where DetectionMethods has 'Malware' and EmailDirection == 'Inbound'\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalMalwareDetections=count(), Quarantine=countif(DeliveryLocation == 'Quarantine'), Failed=countif(DeliveryLocation == 'Failed') by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, TotalMalwareDetections=coalesce(TotalMalwareDetections,0), Quarantine=coalesce(Quarantine,0), Failed=coalesce(Failed,0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "TotalMalwareDetections", + "color": "blue" + }, + { + "seriesName": "Quarantine", + "color": "orangeDark" + }, + { + "seriesName": "Failed", + "color": "redDark" + } + ] + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - 10", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b2c19e58-2123-490b-9631-c0b238c582e6" + }, + { + "type": 1, + "content": { + "json": "### Malware Detections by Detection Technology\r\n**Visualizes counts (per {Granularity}) of Malware detections of inbound emails by various Microsoft Defender for Office 365 detection technologies.**" + }, + "name": "text - Malware Detection Technology header", + "id": "f3c2691e-4f32-4109-9524-8a11719e4425" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections over time summarizing the data daily by various Malware detection technologies/controls in Microsoft Defender for Office 365.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where DetectionMethods has 'Malware'\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ParsedMethods = parse_json(DetectionMethods)\r\n| mv-expand MalwareMethod = ParsedMethods.Malware\r\n| summarize Count = count() by MalwareMethod = tostring(MalwareMethod), Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct MalwareMethod | extend d = 1) on d | project Timestamp, MalwareMethod\r\n| join kind=leftouter (agg) on Timestamp, MalwareMethod\r\n| project Timestamp, MalwareMethod, Count = coalesce(Count, 0)\r\n| sort by MalwareMethod asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "66", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - 8", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "f00c1ce0-e55e-44c0-8bf0-4af662ccef89" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections summarizing the data by various Malware detection technologies/controls in Microsoft Defender for Office 365.\r\nEmailEvents \r\n| where DetectionMethods has 'Malware'\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ParsedMethods = parse_json(DetectionMethods)\r\n| mv-expand MalwareMethod = ParsedMethods.Malware\r\n| summarize Count = count() by MalwareMethod = tostring(MalwareMethod)\r\n| sort by Count desc\r\n| project ['Detection Technology'] = MalwareMethod, ['Detections'] = Count", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "customWidth": "34", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - 2", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "590880a9-1cf7-44ae-b4de-2f65bc700b5d" + }, + { + "type": 1, + "content": { + "json": "### Malware Detections by SenderIPv4 Geo Location\r\n**Visualizes the email sending infrastructure sender IPv4 addresses associated with inbound emails detected as Malware, along with the IPv4 address geographic coordinates (latitude, longitude) and country information. Helps identify high-risk regions and sources for targeted threat mitigation.**" + }, + "name": "text - Malware Geo Location header", + "id": "19d78b48-af58-4bee-abfe-57efb1eba125" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections summarizing the data by email sender IP address (SenderIPv4).\r\nEmailEvents \r\n| where ThreatTypes has 'Malware' and isnotempty(SenderIPv4)\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize count() by SenderIPv4\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Latitude = tostring(GeoInfo.latitude), Longitude = tostring(GeoInfo.longitude)\r\n| project SenderIPv4, Latitude, Longitude, count_", + "size": 0, + "showAnalytics": true, + "title": "Malware Detections-Sender Heatmap (IPv4)", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "map", + "gridSettings": { + "sortBy": [ + { + "itemKey": "count_", + "sortOrder": 2 + } + ] + }, + "sortBy": [ + { + "itemKey": "count_", + "sortOrder": 2 + } + ], + "mapSettings": { + "locInfo": "LatLong", + "locInfoColumn": "GeoInfo", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "none" + } + } + }, + "customWidth": "50", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - 1", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "8cb46ec0-ac2a-41d1-bf8a-0b8585d1fefc" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections summarizing the data by email sender IP address and IP address country information (SenderIPv4).\r\nEmailEvents \r\n| where ThreatTypes has 'Malware' and isnotempty(SenderIPv4)\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Country = tostring(GeoInfo.country)\r\n| summarize count() by Country\r\n| project Country, ['Malware Emails'] = count_\r\n| sort by ['Malware Emails'] desc\r\n\r\n\r\n", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Malware Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [], + "mapSettings": { + "locInfo": "LatLong", + "locInfoColumn": "GeoInfo", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "heatmap", + "heatmapPalette": "red" + } + } + }, + "customWidth": "50", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - 1 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b6a0355a-2b8f-48a5-8edc-58f4f7f8180a" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "Malware-Detectiontech-Deliverylocation-SendingInfra", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "2692cb5e-825c-45c1-bd3a-096b55e8d760" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Malware Detections Top attacked users and top senders\r\n
\r\n\r\nThis section consolidates key visuals that track and explain malware detections in inbound email as identified by Microsoft Defender for Office 365 focusing on top attacked users and top senders. \r\n

**Recommended action:** Apply the Strict preset security policy to the most-attacked users and consider adding persistent malicious sender domains to the Tenant Allow/Block List." + }, + "name": "banner - Malware Top Users Senders", + "id": "bc5b37a4-71e4-4a2f-b0ba-b3dd87333391" + }, + { + "type": 1, + "content": { + "json": "### Malware Detections top attacked users\r\n**Displays the top 10 recipient email addresses that received inbound emails flagged as Malware. These users may be at higher risk and should be prioritised for targeted cybersecurity awareness training. Training should cover the specific threat types and techniques they are exposed to, and reinforce best practices for promptly reporting any suspicious messages that might bypass security controls and reach their inbox.**" + }, + "customWidth": "100", + "name": "text - Malware Top Users header", + "id": "cb87a026-ad03-45cc-887e-ab460490d9a5" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total inbound emails with Malware detections summarizing the data by the top 15 recipient email address (RecipientEmailAddress).\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalEmailCount=count(),MalwareEmailCount = countif(ThreatTypes has \"Malware\") by RecipientEmailAddress\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(MalwareEmailCount / todouble(TotalEmailCount) *100, 2))\r\n| where MalwareEmailCount !=0\r\n| top 15 by MalwareEmailCount\r\n| project ['Recipient'] = RecipientEmailAddress, ['Malware Emails'] = MalwareEmailCount, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Malware Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "count_", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [] + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - Malware Top Recipients", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "e7ffef62-f85e-4188-8ab9-d90a5c666c30" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Sender Domains with Malware Detections (Inbound)\r\n**Displays the top 10 sender domains sending inbound emails detected as Malware. Helps identify external sources most frequently associated with malicious content for prioritised threat monitoring and mitigation.**" + }, + "customWidth": "100", + "name": "text - Malware Top Senders header", + "id": "93390807-25b2-4bea-9648-98e821da8ec6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections summarizing the data by the top 15 email sender P2 domain (SenderFromDomain). Adding additional insights for total inbound emails and bad traffic percentage for each sender domain.\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalEmailCount = count(), MalwareEmailCount = countif(ThreatTypes has \"Malware\") by SenderFromDomain\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(MalwareEmailCount / todouble(TotalEmailCount) *100, 2))\r\n| where MalwareEmailCount !=0\r\n| top 15 by MalwareEmailCount\r\n| project ['Sender Domain'] = SenderFromDomain, ['Malware Emails'] = MalwareEmailCount, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Malware Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal", + "useGrouping": false + } + } + }, + { + "columnMatch": "BadEmailCount", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "count_", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [] + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "query - Malware Top Sender Domains", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "eaa45734-2df2-4a5e-b35b-1295e00cb46f" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "2" + }, + "name": "MalwareTopAttackedUser-TopSenders", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "4e0900ab-e7e4-4cf1-93a4-7e86bca20782" + }, + { + "type": 1, + "content": { + "json": "# Phishing Detection Insights\r\n\r\n---\r\nThis tab provides insights into email message **detections** by Microsoft Defender for Office 365 where the message contained a **Phishing threat** within its **email content**, **URLs**, or **attachments**." + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "text - 24", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "fe82d665-fa9e-4fc2-9ba9-7e2eabb9a04b" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//KPI summary of inbound email phishing detections for the selected period, with a per-period Trend series feeding each tile sparkline.\r\nlet gran = {Granularity};\r\nlet ph = EmailEvents | where EmailDirection == \"Inbound\" | where ThreatTypes has \"Phish\";\r\nlet inbox = ph | where DeliveryLocation has \"Inbox\";\r\nlet phTrend = toscalar(ph | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nlet inboxTrend = toscalar(inbox | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nunion\r\n(print Count = toscalar(ph | summarize count()), Details = \"Phish Emails\", Ord = 1, Trend = phTrend),\r\n(print Count = toscalar(ph | summarize dcount(RecipientEmailAddress)), Details = \"Users Targeted\", Ord = 2, Trend = phTrend),\r\n(print Count = toscalar(ph | summarize dcount(SenderFromDomain)), Details = \"Sender Domains\", Ord = 3, Trend = phTrend),\r\n(print Count = toscalar(inbox | summarize count()), Details = \"Delivered to Inbox\", Ord = 4, Trend = inboxTrend)\r\n| sort by Ord asc\r\n| project Count, Details, Trend", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "secondaryContent": { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "min": 0, + "palette": "blue" + } + }, + "showBorder": true, + "size": "auto" + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "phish kpi strip", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "5debf0b8-4384-485b-8a7f-71ead592718a" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Phishing Detection Trend, LLM Content Analysis, Advanced Threats, and Threat Classes\r\n
\r\n\r\nThis section consolidates key visuals that track and explain Phish detections in inbound email as identified by Microsoft Defender for Office 365 focusing on per-{Granularity} trends, advanced threat detections, LLM-based content analysis, and threat classes.

**Recommended action:** Review the LLM-classified phishing themes; enable Safe Links and impersonation protection, and prioritise awareness training on the dominant lure types." + }, + "name": "text - Phish Section1 Banner", + "id": "ce5e489f-c83b-4bc8-9e63-b08dfb5ef31f" + }, + { + "type": 1, + "content": { + "json": "### Phish Detection Trend
\r\n\r\n**This visual displays a per-{Granularity} trend of email Phish detections identified by Microsoft Defender for Office 365. The area chart summarises the number of messages flagged for Phish threats.**" + }, + "name": "text - Phish Trend Header", + "id": "429ef4d2-61a9-40d0-940f-2212ddce22ce" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections over time summarizing the data daily.\r\n//The comment in the query excludes deliveries to the SecOps Mailbox and by the Phish Simulation system. Remove the \"//\" to apply the exclusion.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where ThreatTypes has \"Phish\"\r\n| summarize PhishDetections = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, PhishDetections = coalesce(PhishDetections, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "PhishDetections", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "query - Phish Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b0d170ec-331c-4ad0-8ce6-258704cc5345" + }, + { + "type": 1, + "content": { + "json": "### Phish Detection Trend - Advanced Threats
\r\n\r\n**Not all threats are easily recognizable, which is why Microsoft Defender for Office 365 uses advanced detection methods, including virtual sandbox environments to detonate URLs and files. These virtual sandbox technologies look for known patterns, such as a recognisable login page in a URL, or a file accessing command and control infrastructure. This visual displays a per-{Granularity} trend of Phish detections of these advanced threats.**" + }, + "name": "text - Phish AdvThreats Header", + "id": "425476e0-066a-42ee-afb9-5dabc612a3c8" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections over time summarizing the data daily by Phish detection technologies/controls used for detecting unknown-unique phish.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Phish\"\r\n| project Timestamp, RecipientEmailAddress, NetworkMessageId, DT=parse_json(DetectionMethods)\r\n| evaluate bag_unpack(DT)\r\n| summarize [\"File detonation\"]=countif(Phish has 'File detonation' and Phish !has 'File detonation reputation'), [\"URL detonation\"]=countif(Phish has 'URL detonation' and Phish !has 'URL detonation reputation') by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, [\"File detonation\"]=coalesce([\"File detonation\"],0), [\"URL detonation\"]=coalesce([\"URL detonation\"],0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "URL detonation", + "color": "orangeDark" + }, + { + "seriesName": "File detonation", + "color": "redDark" + } + ] + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "query - Phish AdvThreats Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "6b62347a-b162-49e6-891c-07697af22dd9" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections - LLM content analysis
\r\n\r\n**Microsoft Defender for Office 365 uses Language AI for Phish and Business Email Compromise (BEC) detection. These models are progressively learning from thousands of real-world phishing attempts and analyzing all messages classified as phish. Furthermore, it incorporates advanced Machine Learning and Natural Language Processing (NLP) techniques to read, process, and understand email content the way a human analyst might, yet in a fraction of the time and at a large scale. [Learn more](https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/microsoft-defender-for-office-365s-language-ai-for-phish-enhancing-email-securit/4410446)**" + }, + "customWidth": "50", + "name": "text - Phish LLM Content Header", + "id": "c23460b1-e025-4f6c-b2d5-3f78c0c9afc6" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections - LLM Threat Classifications
\r\n\r\n**Microsoft Defender for Office 365 uses purpose-built Large Language Models (LLM) at scale to provide AI-powered email and collaboration security. Our solution now parses language to understand and identify attacker intent and classifies threats at machine speed – keeping malicious emails out of your inbox and giving security operations (SOC) teams a new level of insight into adversary techniques. [Learn more](https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/microsoft-ignite-redefining-email-security-with-llms-to-tackle-a-new-era-of-soci/4302421)**" + }, + "customWidth": "50", + "name": "text - Phish LLM ThreatClass Header", + "id": "1d723c26-501f-4385-9331-957ab7ae5019" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of emails detected as Phish by LLM content analysis detection technology in Microsoft Defender for Office 365. \r\n//The comment in the query excludes deliveries to the SecOps Mailbox and by the Phish Simulation system. Remove the \"//\" to apply the exclusion.\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where ThreatTypes has 'Phish' and DetectionMethods contains \"LLM content analysis\"\r\n| summarize count()\r\n| sort by count_ desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "stat", + "statSettings": { + "valueAggregation": "None", + "colorSettings": { + "type": "thresholds", + "mode": "foreground", + "thresholdsGrid": [ + { + "operator": ">", + "thresholdValue": "0", + "representation": "red" + }, + { + "operator": "<=", + "thresholdValue": "0", + "representation": "red" + } + ] + }, + "iconSettings": { + "thresholdsGrid": [] + }, + "tagText": "", + "valueFontStyle": "auto", + "tagTextPosition": "bottom" + } + }, + "customWidth": "50", + "name": "query - Phish LLM Content Count", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "86a301c5-2bc0-436a-982c-861beee7c9ab" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections summarizing the data by intent of the message.\r\n// Microsoft Defender for Office 365 LLM analysis is analyzing email messages to understand the intent of the messages. These threat classifications are then used in filtering decisions.\r\n//The comment in the query excludes deliveries to the SecOps Mailbox and by the Phish Simulation system. Remove the \"//\" to apply the exclusion.\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where ThreatTypes has 'Phish' and ThreatClassification has_any(\"Business intelligence\",\"Contact establishment\",\"Gift card\",\"Invoice\",\"Payroll\",\"PII gathering\",\"Task\")\r\n| summarize count() by ThreatClassification\r\n| sort by count_ desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "chartSettings": { + "yAxis": [ + "count_" + ], + "createOtherGroup": 10 + } + }, + "customWidth": "50", + "name": "query - Phish LLM ThreatClass Pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "d547b730-f174-4f78-8998-02f24453304e" + }, + { + "type": 1, + "content": { + "json": "### Top Attacked Users by LLM Threat classes (Phish)
\r\n\r\n**Displays recipients most frequently targeted by inbound phishing emails, grouped by threat classification (e.g., Gift Card, Invoice, Payroll). Helps identify users at higher risk for phishing attacks. These users may be at higher risk and should be prioritised for targeted cybersecurity awareness training. Training should cover the specific threat types and techniques they are exposed to, and reinforce best practices for promptly reporting any suspicious messages that might bypass security controls and reach their inbox.**" + }, + "customWidth": "100", + "name": "text - Phish LLM TopUsers Header", + "id": "4ba9d9eb-d88d-4e5d-ba58-a740559677f7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises Phish detections in emails summarizing by various Threat classes showing the top attacked user for each threat classification type.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where ThreatTypes has \"Phish\" and EmailDirection == \"Inbound\" and ThreatClassification has_any(\"Business intelligence\",\"Contact establishment\",\"Gift card\",\"Invoice\",\"Payroll\",\"PII gathering\",\"Task\")\r\n| summarize EmailCount=count() by ThreatClassification, RecipientEmailAddress\r\n| summarize Emails = arg_max(EmailCount, RecipientEmailAddress) by ThreatClassification\r\n| sort by Emails desc\r\n| project ['Threat Classification'] = ThreatClassification, ['Top Recipient'] = RecipientEmailAddress, ['Emails'] = Emails", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "80px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "name": "query - Phish LLM TopUsers", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "51599ab2-db69-4195-b4e9-2828729ec35b" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "group - 5", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "25c47f6a-3525-435e-90cf-357f02fb2fed" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Phish Detections by Delivery location, Detection technology and Sender infrastructure insights\r\n
\r\n\r\nThis section consolidates key visuals that track and explain Phish detections delivery locations, detection technologies used for detections, sender infrastructure insights in inbound email identified by Microsoft Defender for Office 365 as Phish.

**Recommended action:** Verify anti-phishing and Safe Links policies cover these delivery paths; consider blocking sender infrastructure from regions you do not operate in, where appropriate." + }, + "name": "text - Phish Section2 Banner", + "id": "6876063e-6a4f-48ea-829d-4486922783dd" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections by delivery location
\r\n\r\n**Visualizes counts (per {Granularity}) of Phish detections of inbound emails by various delivery locations: Quarantine, Junk folder or Failed (rejected with or without NDR)**" + }, + "name": "text - Phish DeliveryLoc Header", + "id": "b5045aab-1b4b-4d35-af41-a6315d36e864" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections over time summarizing the data daily by Delivery Location.\r\n//The comment in the query excludes deliveries to the SecOps Mailboxes and by the Phish Simulation system. Remove the \"//\" to apply the exclusion.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Phish\" and EmailDirection == \"Inbound\"\r\n| summarize TotalPhishDetections=count(), Quarantine=countif(DeliveryLocation == \"Quarantine\"), Junkfolder=countif(DeliveryLocation == \"Junk folder\"), Inbox=countif(DeliveryLocation == \"Inbox/folder\"), Failed=countif(DeliveryLocation == \"Failed\"), Dropped=countif(DeliveryLocation == \"Dropped\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, TotalPhishDetections=coalesce(TotalPhishDetections,0), Quarantine=coalesce(Quarantine,0), Junkfolder=coalesce(Junkfolder,0), Inbox=coalesce(Inbox,0), Failed=coalesce(Failed,0), Dropped=coalesce(Dropped,0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "Quarantine", + "color": "greenDark" + }, + { + "seriesName": "Failed", + "color": "green" + }, + { + "seriesName": "Dropped", + "color": "green" + }, + { + "seriesName": "Junk folder", + "color": "orangeDark" + }, + { + "seriesName": "Inbox", + "color": "redBright" + } + ] + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "query - Phish DeliveryLoc Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "e839848c-d176-4251-bbb4-1c2e1103ed2d" + }, + { + "type": 1, + "content": { + "json": "### Phish detections by Detection Technology
\r\n\r\n**Visualizes counts (per {Granularity}) of Phish detections of inbound emails by various Microsoft Defender for Office 365 detection technologies.**" + }, + "name": "text - Phish DetTech Header", + "id": "149bf1b3-80cc-4e82-ae5d-ddee0f6b0cd9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections over time summarizing the data daily by various Phish Detection technologies/controls in Microsoft Defender for Office 365.\r\n//The comment in the query excludes deliveries to the SecOps Mailbox and by the Phish Simulation system. Remove the \"//\" to apply the exclusion.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Phish\"\r\n| mv-expand Details = parse_json(DetectionMethods).Phish to typeof(string)\r\n| where isnotempty(Details)\r\n| summarize Count = count() by Details, Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct Details | extend d = 1) on d | project Timestamp, Details\r\n| join kind=leftouter (agg) on Timestamp, Details\r\n| project Timestamp, Details, Count = coalesce(Count, 0)\r\n| sort by Details asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "createOtherGroup": 15 + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "query - Phish DetTech Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b0b16329-e1a6-4138-871e-76d57a60b978" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections summarized by individual Phish detection technology/control in Microsoft Defender for Office 365.\r\n//Each detection technology is counted individually via mv-expand over DetectionMethods.Phish (matching the sibling trend line chart), so a message flagged by multiple techniques counts once per technique.\r\n//The where clause excludes deliveries to the SecOps Mailbox and by the Phish Simulation system.\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Phish\"\r\n| mv-expand Details = parse_json(DetectionMethods).Phish to typeof(string)\r\n| where isnotempty(Details)\r\n| summarize Count = count() by Details\r\n| sort by Count desc\r\n| project ['Detection Technology'] = Details, ['Detections'] = Count", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "query - Phish DetTech Pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "5270ba04-599f-4940-805b-687f7475bc70" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections by SenderIPv4 Geo Location
\r\n\r\n**Visualizes the email sending infrastructure sender IPv4 addresses associated with inbound emails detected as Phish, along with the IPv4 address geographic coordinates (latitude, longitude) and country information. Helps identify high-risk regions and sources for targeted threat mitigation.**" + }, + "name": "text - Phish Geo Header", + "id": "ddd0c12f-1bb1-4d7d-afb4-f28bcfcd7c4b" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections summarizing the data by email sender IP address (SenderIPv4).\r\n//The comment in the query excludes deliveries to the SecOps Mailbox and by the Phish Simulation system. Remove the \"//\" to apply the exclusion.\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\" \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where ThreatTypes has \"Phish\" and isnotempty(SenderIPv4)\r\n| summarize count() by SenderIPv4\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Latitude = tostring(GeoInfo.latitude), Longitude = tostring(GeoInfo.longitude)\r\n| project SenderIPv4, Latitude, Longitude, count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "map", + "mapSettings": { + "locInfo": "LatLong", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "none" + } + } + }, + "customWidth": "50", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "query - Phish Geo Map", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "85ea7223-7d77-43f5-b0d9-e0de7c898758" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections summarizing the data by email sender IP address and IP address country information (SenderIPv4).\r\nEmailEvents \r\n| where ThreatTypes has 'Phish' and isnotempty(SenderIPv4)\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Country = tostring(GeoInfo.country)\r\n| summarize count() by Country\r\n| project Country, ['Phish Emails'] = count_\r\n| sort by ['Phish Emails'] desc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Phish Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + }, + "mapSettings": { + "locInfo": "LatLong", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "heatmap", + "heatmapPalette": "red" + } + } + }, + "customWidth": "50", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "query - Phish Country Table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "f561209b-15a6-442e-af10-63e375088209" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "group - 25- Phish delivery locations-detecion tech-sender infra", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "10f3e3eb-b330-4955-952e-01eff69405e9" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Phish Detections Top attacked users and top senders\r\n
\r\n\r\nThis section consolidates key visuals that track and explain phish detections in inbound email as identified by Microsoft Defender for Office 365 focusing on top attacked users and top senders.

**Recommended action:** Enroll the most-targeted users in security awareness training and consider blocking persistent phishing sender domains." + }, + "name": "text - Phish Section3 Banner", + "id": "f46ed4a8-e2b5-4ccd-ae38-efc571bfc791" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections top attacked users\r\n**Displays the top 10 recipient email addresses that received inbound emails flagged as Phish. These users may be at higher risk and should be prioritised for targeted cybersecurity awareness training. Training should cover the specific threat types and techniques they are exposed to, and reinforce best practices for promptly reporting any suspicious messages that might bypass security controls and reach their inbox.**" + }, + "customWidth": "100", + "name": "text - Phish TopUsers Header", + "id": "96d9b543-070a-42d4-bbed-3f5cf79ca7ce" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total inbound emails with Phish detections summarizing the data by the top 15 recipient email address (RecipientEmailAddress).\r\n//The comment in the query excludes deliveries to the SecOps Mailbox and by the Phish Simulation system. Remove the \"//\" to apply the exclusion.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalEmailCount=count(),PhishEmailCount = countif(ThreatTypes has \"Phish\") by RecipientEmailAddress\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(PhishEmailCount / todouble(TotalEmailCount) * 100, 2))\r\n| where PhishEmailCount !=0\r\n| top 15 by PhishEmailCount\r\n| project ['Recipient'] = RecipientEmailAddress, ['Phish Emails'] = PhishEmailCount, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Phish Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "count_", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [] + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "query - Phish TopRecipients Table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "25100115-78d3-4144-b44e-613b44f02484" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Sender Domains with Phish Detections (Inbound)\r\n**Displays the top 10 sender domains sending inbound emails detected as Phish. Helps identify external sources most frequently associated with malicious content for prioritised threat monitoring and mitigation.**" + }, + "customWidth": "100", + "name": "text - Phish TopSenders Header", + "id": "e7fcb7fe-4bca-4153-a9b0-8ded135b1c64" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections summarizing the data by the top 15 email sender P2 domain (SenderFromDomain), now including the Phish confidence split (High/Normal) and the aggregated phish detection methods seen per domain. Adding additional insights for total inbound emails and bad traffic percentage for each sender domain.\r\n//The comment in the query excludes deliveries to the SecOps Mailbox and by the Phish Simulation system. Remove the \"//\" to apply the exclusion.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| where EmailDirection == \"Inbound\"\r\n| extend PhishConf = tostring(parse_json(ConfidenceLevel).Phish)\r\n| extend PhishMethods = parse_json(DetectionMethods).Phish\r\n| summarize TotalEmailCount = count(),\r\n PhishEmailCount = countif(ThreatTypes has \"Phish\"),\r\n Phish_High = countif(ThreatTypes has \"Phish\" and PhishConf == \"High\"),\r\n Phish_Normal = countif(ThreatTypes has \"Phish\" and PhishConf == \"Normal\"),\r\n PhishMethodSet = make_set_if(PhishMethods, ThreatTypes has \"Phish\") by SenderFromDomain\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(PhishEmailCount / todouble(TotalEmailCount) * 100, 2))\r\n| where PhishEmailCount != 0\r\n| top 15 by PhishEmailCount\r\n| mv-apply S = PhishMethodSet on ( mv-expand m = S to typeof(string) | summarize Methods = make_set(m) )\r\n| project ['Sender Domain'] = SenderFromDomain, ['Phish Emails'] = PhishEmailCount, ['Phish (High)'] = Phish_High, ['Phish (Normal)'] = Phish_Normal, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound, ['Detection Methods'] = strcat_array(Methods, \", \")", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Phish Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Phish (High)", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Phish (Normal)", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "BadEmailCount", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "count_", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [] + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "query - Phish TopSenders Table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "717bfce8-b5d4-4900-99db-4ba0c503591d" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "3" + }, + "name": "group - 26-PhishDetectionsTopattackedusers-topsenders", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "553afca2-caa1-45b1-bec0-dca426b5be46" + }, + { + "type": 1, + "content": { + "json": "# Spam Detection Insights\r\n\r\n---\r\nThis tab provides insights into email message **detections** by Microsoft Defender for Office 365 where the message contained a **Spam threat** within its **email content**, **URLs**, or **attachments**." + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "4" + }, + "name": "text - Spam Tab Intro", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "a693a05a-a772-4ac4-9863-07ad0d1b7092" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//KPI summary of inbound email spam detections for the selected period, with a per-period Trend series feeding each tile sparkline.\r\nlet gran = {Granularity};\r\nlet sp = EmailEvents | where EmailDirection == \"Inbound\" | where ThreatTypes has \"Spam\";\r\nlet junk = sp | where DeliveryLocation has \"Junk\";\r\nlet spTrend = toscalar(sp | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nlet junkTrend = toscalar(junk | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nunion\r\n(print Count = toscalar(sp | summarize count()), Details = \"Spam Emails\", Ord = 1, Trend = spTrend),\r\n(print Count = toscalar(sp | summarize dcount(RecipientEmailAddress)), Details = \"Users Targeted\", Ord = 2, Trend = spTrend),\r\n(print Count = toscalar(sp | summarize dcount(SenderFromDomain)), Details = \"Sender Domains\", Ord = 3, Trend = spTrend),\r\n(print Count = toscalar(junk | summarize count()), Details = \"Sent to Junk\", Ord = 4, Trend = junkTrend)\r\n| sort by Ord asc\r\n| project Count, Details, Trend", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "secondaryContent": { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "min": 0, + "palette": "blue" + } + }, + "showBorder": true, + "size": "auto" + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "4" + }, + "name": "spam kpi strip", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "cadd5331-1db8-4ac8-bc99-42cd5227ee51" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Spam Detection Effectiveness and Trends\r\n
\r\n\r\nThis section consolidates key visuals that track and explain Spam detections in inbound email as identified by Microsoft Defender for Office 365 focusing on Effectiveness and per-{Granularity} trend. For effectiveness, we consider messages reported by your admins and decisions made post-delivery.

**Recommended action:** If legitimate mail is marked as spam, review the Spam and Bulk thresholds; if spam is leaking through, tighten them." + }, + "name": "text - Spam Section1 Banner", + "id": "1093f3b6-cea7-4f54-9029-f9aadd79ca9f" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query calculates the effectiveness of spam detections without edge data.\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\n// baseQuery _FN_Admin_Submissions_SPM\r\nlet _FN_Admin_Submissions_SPM = toscalar(\r\nCloudAppEvents\r\n| where Timestamp between (minTime .. maxTime)\r\n| where ActionType == \"AdminSubmissionSubmitted\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType)\r\n| extend NetworkMessageId = tostring((parse_json(RawEventData)).ObjectId)\r\n| where SubmissionType in (\"0\")\r\n| summarize count()\r\n);\r\n// baseQuery _FN_ZAP_Successful_Spam\r\nlet _FN_ZAP_Successful_Spam = toscalar(\r\nEmailPostDeliveryEvents\r\n| where ActionTrigger == \"SpecialAction\" and ActionType == \"Spam ZAP\" and ActionResult == \"Success\" and Timestamp between (minTime .. maxTime)\r\n| summarize count()\r\n //Take all our Spam ZAP, and count how many messages we missed and successfully cleaned up.\r\n);\r\n// baseQuery _FN_ZAP_Unsuccessful_Spam\r\nlet _FN_ZAP_Unsuccessful_Spam = toscalar(\r\nEmailPostDeliveryEvents\r\n| where ActionTrigger == \"SpecialAction\" and ActionType == \"Spam ZAP\" and ActionResult != \"Success\" and Timestamp between (minTime .. maxTime)\r\n| summarize count()\r\n//Take all our Spam ZAP, and count how many messages we failed to clean up due to error or users/admins/API vendors getting to the message first.\r\n);\r\n// baseQuery _SPAM_ZAP_FP\r\nlet _SPAM_ZAP_FP = toscalar(\r\nEmailPostDeliveryEvents\r\n| where ActionTrigger == \"SpecialAction\" and Action has_any (\"Redelivery\",\"Reprocessed\") and Timestamp between (minTime .. maxTime)\r\n| join kind=leftsemi (\r\n EmailEvents\r\n | where Timestamp between (minTime ..maxTime )\r\n | where ThreatTypes contains \"Spam\"\r\n | project NetworkMessageId, ThreatTypes)\r\n on NetworkMessageId\r\n| summarize count()\r\n// count all the FPs which were originally Spam, and when we TT'd them were not so we can subtract that from our mailfow catch, and therefore the total true bad.\r\n);\r\n// baseQuery _Spam_Mailflow\r\nlet _Spam_Mailflow = toscalar(\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\" and ThreatTypes == \"Spam\" and Timestamp between (minTime .. maxTime)\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize count()\r\n// Get all the mailflow detected as SPM, then count all the NMIDs (not distinct)\r\n);\r\nprint\r\nEffectiveness_PostDelivery = abs(round(((toreal(toscalar(_FN_Admin_Submissions_SPM))+toreal(toscalar(_FN_ZAP_Unsuccessful_Spam)))/(toreal(toscalar(_Spam_Mailflow))+toreal(toscalar(_FN_ZAP_Successful_Spam))+toreal(toscalar(_FN_ZAP_Unsuccessful_Spam))+toreal(toscalar(_FN_Admin_Submissions_SPM))-toreal(toscalar(_SPAM_ZAP_FP)))*100-100),2))", + "size": 1, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "stat", + "statSettings": { + "valueAggregation": "None", + "colorSettings": { + "type": "thresholds", + "mode": "foreground", + "heatmapPalette": "greenRed", + "thresholdsGrid": [ + { + "operator": ">", + "thresholdValue": "95", + "representation": "green" + }, + { + "operator": "<=", + "thresholdValue": "95", + "representation": "orange" + }, + { + "operator": "<=", + "thresholdValue": "90", + "representation": "red" + } + ] + }, + "iconSettings": { + "thresholdsGrid": [] + }, + "numberFormatSettings": { + "unit": 1, + "options": { + "style": "decimal" + } + }, + "tagText": "Spam Effectiveness (without Edge data)", + "valueFontStyle": "superLarge", + "tagTextPosition": "bottom" + } + }, + "customWidth": "50", + "name": "query - Spam Effectiveness Stat", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "036851c1-489e-4fda-8059-850c161578b3" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\n// baseQuery _FN_Admin_Submissions_SPM\r\nlet _FN_Admin_Submissions_SPM = toscalar(\r\nCloudAppEvents\r\n| where Timestamp between (minTime .. maxTime)\r\n| where ActionType == \"AdminSubmissionSubmitted\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType)\r\n| extend NetworkMessageId = tostring((parse_json(RawEventData)).ObjectId)\r\n| where SubmissionType in (\"0\")\r\n| summarize count()\r\n);\r\n// baseQuery _FN_ZAP_Successful_Spam\r\nlet _FN_ZAP_Successful_Spam = toscalar(\r\nEmailPostDeliveryEvents\r\n| where ActionTrigger == \"SpecialAction\" and ActionType == \"Spam ZAP\" and ActionResult == \"Success\" and Timestamp between (minTime .. maxTime)\r\n| summarize count()\r\n //Take all our Spam ZAP, and count how many messages we missed and successfully cleaned up.\r\n);\r\n// baseQuery _FN_ZAP_Unsuccessful_Spam\r\nlet _FN_ZAP_Unsuccessful_Spam = toscalar(\r\nEmailPostDeliveryEvents\r\n| where ActionTrigger == \"SpecialAction\" and ActionType == \"Spam ZAP\" and ActionResult != \"Success\" and Timestamp between (minTime .. maxTime)\r\n| summarize count()\r\n//Take all our Spam ZAP, and count how many messages we failed to clean up due to error or users/admins/API vendors getting to the message first.\r\n);\r\n// baseQuery _SPAM_ZAP_FP\r\nlet _SPAM_ZAP_FP = toscalar(\r\nEmailPostDeliveryEvents\r\n| where ActionTrigger == \"SpecialAction\" and Action has_any (\"Redelivery\",\"Reprocessed\") and Timestamp between (minTime .. maxTime)\r\n| join kind=leftsemi (\r\n EmailEvents\r\n | where Timestamp between (minTime ..maxTime )\r\n | where ThreatTypes contains \"Spam\"\r\n | project NetworkMessageId, ThreatTypes)\r\n on NetworkMessageId\r\n| summarize count()\r\n// count all the FPs which were originally Spam, and when we TT'd them were not so we can subtract that from our mailfow catch, and therefore the total true bad.\r\n);\r\n// baseQuery _Spam_Mailflow\r\nlet _Spam_Mailflow = toscalar(\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\" and ThreatTypes == \"Spam\" and Timestamp between (minTime .. maxTime)\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize count()\r\n// Get all the mailflow detected as SPM, then count all the NMIDs (not distinct)\r\n);\r\nprint StatisticName=\"Spam Mailflow Minus FPs\", Value=toreal((toscalar(_Spam_Mailflow)) - toreal(toscalar(_SPAM_ZAP_FP)))\r\n| union (print StatisticName=\"Spam Admin FNs Submitted\", Value=toreal(toscalar(_FN_Admin_Submissions_SPM)))\r\n| union (print StatisticName=\"Spam FPs Reverse Zapped\", Value=toreal(toscalar(_SPAM_ZAP_FP)))\r\n| union (print StatisticName=\"Spam Zapped Successfully\", Value=toreal(toscalar(_FN_ZAP_Successful_Spam)))\r\n| union (print StatisticName=\"Spam NotZapped\", Value=toreal(toscalar(_FN_ZAP_Unsuccessful_Spam)))\r\n| union (print StatisticName=\"Spam Effectiveness Post Delivery %\", Value=abs(round(((toreal(toscalar(_FN_Admin_Submissions_SPM)) + toreal(toscalar(_FN_ZAP_Unsuccessful_Spam))) / (toreal(toscalar(_Spam_Mailflow)) + toreal(toscalar(_FN_ZAP_Successful_Spam)) + toreal(toscalar(_FN_ZAP_Unsuccessful_Spam)) + toreal(toscalar(_FN_Admin_Submissions_SPM)) - toreal(toscalar(_SPAM_ZAP_FP)))) * 100 - 100, 2)))\r\n| union (print StatisticName=\"Spam Effectiveness Pre-Delivery %\", Value=abs(round(((toreal(toscalar(_FN_Admin_Submissions_SPM)) + toreal(toscalar(_FN_ZAP_Unsuccessful_Spam)) + (toscalar(_FN_ZAP_Successful_Spam))) / (toreal(toscalar(_Spam_Mailflow)) + toreal(toscalar(_FN_ZAP_Successful_Spam)) + toreal(toscalar(_FN_ZAP_Unsuccessful_Spam)) + toreal(toscalar(_FN_Admin_Submissions_SPM)) - toreal(toscalar(_SPAM_ZAP_FP)))) * 100 - 100, 2 )))\r\n| project ['Statistic'] = StatisticName, Value", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "StatisticName", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Value", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + }, + "gridSettings": { + "formatters": [ + { + "columnMatch": "Value", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 2 + } + } + } + ] + } + }, + "customWidth": "50", + "name": "query - Spam Effectiveness Table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "8d456ea2-f04a-4d71-95c6-fbaad8c2d2f2" + } + ] + }, + "customWidth": "100", + "name": "Spam Effectiveness", + "id": "82812b88-e7f7-4be0-9d13-8e7a7d8c0c4e" + }, + { + "type": 1, + "content": { + "json": "### Spam Detection Trend
\r\n\r\n**This visual displays a per-{Granularity} trend of email Spam detections identified by Microsoft Defender for Office 365. The area chart summarises the number of messages flagged for Spam threats.**" + }, + "name": "text - Spam Trend Header", + "id": "b5574a88-430b-4cca-a76e-9a0b07e9da2e" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spam detections over time summarizing the data daily.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| where ThreatTypes has \"Spam\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize Count = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, SpamDetections = coalesce(Count, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "SpamDetections", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "name": "query - Spam Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "09b7d330-1683-45c4-ac0e-8141580d13b5" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "4" + }, + "name": "group - 6-Spam-detections-trend", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "25273f47-8201-4565-8815-1d059ee8abb6" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Spam Detections by Delivery location, Detection technology, Sender infrastructure and Bulk insights\r\n
\r\n\r\nThis section consolidates key visuals that track and explain Spam detections delivery locations, detection technologies used for detections, sender infrastructure and Bulk insights in inbound email identified by Microsoft Defender for Office 365 as Spam.

**Recommended action:** Raise the Bulk Complaint Level (BCL) threshold for noisy sender domains and consider blocking high-volume, low-value bulk senders where appropriate." + }, + "name": "text - Spam Section2 Banner", + "id": "b82f442b-a3a0-44f7-82df-2fd4a9594992" + }, + { + "type": 1, + "content": { + "json": "### Spam Detections by delivery location
\r\n\r\n**Visualizes counts (per {Granularity}) of Spam detections of inbound emails by various delivery locations Quarantine, Junk folder or Failed (rejected with or without NDR)**" + }, + "name": "text - Spam DeliveryLoc Header", + "id": "a6326d97-56cc-45fb-8019-e0c3346968f2" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spam detections over time summarizing the data daily by Delivery Location.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Spam\" and EmailDirection == \"Inbound\"\r\n| summarize TotalSpamDetections=count(), Quarantine=countif(DeliveryLocation == \"Quarantine\"), Junkfolder=countif(DeliveryLocation == \"Junk folder\"), Inbox=countif(DeliveryLocation == \"Inbox/folder\"), Failed=countif(DeliveryLocation == \"Failed\"), Dropped=countif(DeliveryLocation == \"Dropped\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, TotalSpamDetections=coalesce(TotalSpamDetections,0), Quarantine=coalesce(Quarantine,0), Junkfolder=coalesce(Junkfolder,0), Inbox=coalesce(Inbox,0), Failed=coalesce(Failed,0), Dropped=coalesce(Dropped,0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "TotalSpamDetections", + "color": "blue" + }, + { + "seriesName": "Quarantine", + "color": "greenDark" + }, + { + "seriesName": "Junkfolder", + "color": "orangeDark" + }, + { + "seriesName": "Inbox", + "color": "redBright" + }, + { + "seriesName": "Failed", + "color": "red" + }, + { + "seriesName": "Dropped", + "color": "redDark" + } + ] + } + }, + "customWidth": "100", + "name": "query - Spam DeliveryLoc Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "97f89032-34e3-40ff-bb88-42d195aea095" + }, + { + "type": 1, + "content": { + "json": "### Spam Detections Detection Technology
\r\n\r\n**Visualizes counts (per {Granularity}) of Spam detections of inbound emails by various Microsoft Defender for Office 365 detection technologies.**" + }, + "name": "text - Spam DetTech Header", + "id": "935ea90d-8430-49d5-b942-3a7b319a603e" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spam detections over time summarizing the data daily by various Spam Detection technologies/controls in Microsoft Defender for Office 365.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| where DetectionMethods has \"Spam\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| mv-expand Details = parse_json(DetectionMethods).Spam to typeof(string)\r\n| where isnotempty(Details)\r\n| summarize Count = count() by Details, Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct Details | extend d = 1) on d | project Timestamp, Details\r\n| join kind=leftouter (agg) on Timestamp, Details\r\n| project Timestamp, Details, Count = coalesce(Count, 0)\r\n| sort by Details asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "100", + "name": "query - Spam DetTech Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "f31ec0d1-04e1-4b2b-9b98-27289ca34b84" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spam detections summarized by individual Spam detection technology/control in Microsoft Defender for Office 365.\r\n//Each technique is counted individually via mv-expand over DetectionMethods.Spam (matching the sibling trend line chart), so a message flagged by multiple techniques counts once per technique.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Spam\"\r\n| mv-expand Details = parse_json(DetectionMethods).Spam to typeof(string)\r\n| where isnotempty(Details)\r\n| summarize Count = count() by Details\r\n| sort by Count desc\r\n| project ['Detection Technology'] = Details, ['Detections'] = Count", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "query - Spam DetTech Pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "95e40479-f0bc-41ff-8191-634b606d3632" + }, + { + "type": 1, + "content": { + "json": "### Spam Detections by SenderIPv4 Geo Location
\r\n\r\n**Visualizes the email sending infrastructure sender IPv4 addresses associated with inbound emails detected as Spam, along with the IPv4 address geographic coordinates (latitude, longitude) and country information. Helps identify high-risk regions and sources for targeted threat mitigation.**" + }, + "name": "text - Spam Geo Header", + "id": "614d1c3f-df6a-4659-b170-7b466c66d66f" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spam detections summarizing the data by email sender IP address (SenderIPv4).\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| where ThreatTypes has \"Spam\" and isnotempty(SenderIPv4)\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize count() by SenderIPv4\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Latitude = tostring(GeoInfo.latitude), Longitude = tostring(GeoInfo.longitude)\r\n| project SenderIPv4, Latitude, Longitude, count_ ", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "map", + "mapSettings": { + "locInfo": "LatLong", + "locInfoColumn": "SenderIPv4", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "none" + } + } + }, + "customWidth": "50", + "name": "query - Spam Geo Map", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "5519d715-dc79-45f8-8ed5-a63a253c45e3" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spam detections summarizing the data by email sender IP address and IP address country information (SenderIPv4).\r\nEmailEvents \r\n| where ThreatTypes has 'Spam' and isnotempty(SenderIPv4)\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Country = tostring(GeoInfo.country)\r\n| summarize count() by Country\r\n| project Country, ['Spam Emails'] = count_\r\n| sort by ['Spam Emails'] desc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Spam Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + }, + "mapSettings": { + "locInfo": "LatLong", + "locInfoColumn": "SenderIPv4", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "heatmap", + "heatmapPalette": "red" + } + } + }, + "customWidth": "50", + "name": "query - Spam Country Table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "5078dc24-e8be-4943-98fc-6527968e1e3d" + }, + { + "type": 1, + "content": { + "json": "### Spam Detections Bulk Insights
\r\n\r\n**Displays the distribution of inbound emails across different Bulk Complaint Levels together with Top 10 domains sending Bulk email (grey mail). Helps identify patterns in bulk email complaints and assess potential spam or unwanted message trends.**" + }, + "name": "text - Spam Bulk Header", + "id": "cd7b3cbe-a6c1-422c-ab37-4afc26002d5d" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total inbound emails which has any Bulk complaint level. It is summarizing the data by the various Bulk Complaint levels to understand how many messages are detected with each Bulk Complaint level.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where EmailDirection == \"Inbound\" and isnotnull(BulkComplaintLevel)\r\n| summarize count() by BulkComplaintLevel\r\n| sort by BulkComplaintLevel desc\r\n| project ['Bulk Complaint Level'] = BulkComplaintLevel, Emails=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "blueDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + } + }, + "customWidth": "50", + "name": "query - Spam Bulk By Level", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "021c022b-aa67-427d-9e1a-688af7aed5d4" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total inbound emails which has any Bulk complaint level. It is summarizing the data by the various Bulk Complaint levels and SenderFromDomain of the email sender. It provides insights how many messages are detected with each Bulk Complaint level for each sender domain.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where EmailDirection == \"Inbound\" and isnotnull(BulkComplaintLevel)\r\n| summarize count() by BulkComplaintLevel, SenderFromDomain\r\n| top 10 by count_ desc\r\n| project ['Sender Domain'] = SenderFromDomain, ['Bulk Complaint Level'] = BulkComplaintLevel, Emails=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "query - Spam Bulk By Domain", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b1835e0f-f9ad-44c3-bba4-cf9a9546d09a" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "4" + }, + "name": "group - 28-Spam-Delivery location-Detection technology-Sender infrastructure insights", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "307d3d03-93ae-4c8f-b68b-f833ee7d38e8" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n\r\n
Spam Detections Top attacked users and top senders\r\n
\r\n\r\nThis section consolidates key visuals that track and explain spam detections in inbound email as identified by Microsoft Defender for Office 365 focusing on top attacked users and top senders.

**Recommended action:** Review the most-affected users and the top spam sender domains as possible block-list candidates." + }, + "name": "text - Spam Section3 Banner", + "id": "4c34ed7b-86da-4ee1-8a69-f96c213a4340" + }, + { + "type": 1, + "content": { + "json": "### Spam Detections top attacked users
\r\n\r\n**Displays the top 10 recipient email addresses that received inbound emails flagged as Spam. These users may be at higher risk and should be prioritised for targeted cybersecurity awareness training. Training should cover the specific threat types and techniques they are exposed to, and reinforce best practices for promptly reporting any suspicious messages that might bypass security controls and reach their inbox.**" + }, + "customWidth": "100", + "name": "text - Spam TopUsers Header", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "be708ad5-51fd-4a54-b1bc-f912e12b4a01" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total inbound emails with Spam detections summarizing the data by the top 15 recipient email address (RecipientEmailAddress).\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| where EmailDirection ==\"Inbound\" \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalEmailCount=count(),SpamEmailCount = countif(ThreatTypes has \"Spam\") by RecipientEmailAddress\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(SpamEmailCount / todouble(TotalEmailCount)* 100, 2))\r\n| where SpamEmailCount !=0\r\n| top 15 by SpamEmailCount\r\n| project ['Recipient'] = RecipientEmailAddress, ['Spam Emails'] = SpamEmailCount, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Spam Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "40ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal", + "useGrouping": false + } + } + }, + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "count_", + "formatter": 3, + "formatOptions": { + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [] + }, + "customWidth": "100", + "name": "query - Spam TopRecipients Table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "6e7b357d-6792-41c5-83fc-efae31afe2ee" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Sender Domains with Spam Detections (Inbound)
\r\n\r\n**Displays the top 10 sender domains sending inbound emails detected as Spam. Helps identify external sources most frequently associated with spam content for prioritised monitoring and mitigation.**" + }, + "customWidth": "100", + "name": "text - Spam TopSenders Header", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "1d1bdb8d-9619-488b-935a-3791ad73f096" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total inbound emails with Spam detections summarizing the data by the top 15 email sender P2 domain (SenderFromDomain). Adding additional insights for total inbound emails and bad traffic percentage for each sender domain.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| where EmailDirection == \"Inbound\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalEmailCount = count(),\r\n SpamEmailCount = countif(ThreatTypes has \"Spam\") by SenderFromDomain\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(SpamEmailCount / todouble(TotalEmailCount) * 100, 2))\r\n| where SpamEmailCount !=0\r\n| top 15 by SpamEmailCount\r\n| project ['Sender Domain'] = SenderFromDomain, ['Spam Emails'] = SpamEmailCount, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Spam Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "40ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "count_", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [] + }, + "customWidth": "100", + "name": "query - Spam TopSenders Table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "253efada-ca89-49c5-b1e3-e42ac005b938" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "4" + }, + "name": "group - 29-Spam Detections Top attacked users and top senders", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "d4cc057f-c9b7-40b9-85d3-52f90767d1f5" + }, + { + "type": 1, + "content": { + "json": "# Email Impersonation & BEC Insights\r\n\r\n---\r\nThis tab focuses on the highest-value email threat class: **impersonation and Business Email Compromise (BEC)**. It brings together impersonation and spoof detections, sender authentication (DMARC, DKIM, SPF, CompAuth), supply-chain and partner-compromise correlation, and first-contact / new-vendor senders - the signals that precede targeted financial and credential attacks. It is the email-side companion to the impersonation insights on the **Teams & Collaboration** tab." + }, + "name": "text - impersonation bec description", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "15" + }, + "id": "fda8ccd5-fafc-457a-a6a2-05b504be1023" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//KPI summary of inbound email impersonation and spoof (BEC) detections for the selected period, with a per-period Trend series feeding each tile sparkline.\r\nlet gran = {Granularity};\r\nlet bec = EmailEvents | where EmailDirection == \"Inbound\" | where DetectionMethods has \"Impersonation\" or DetectionMethods has \"Spoof\";\r\nlet inbox = bec | where DeliveryLocation has \"Inbox\";\r\nlet becTrend = toscalar(bec | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nlet inboxTrend = toscalar(inbox | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nunion\r\n(print Count = toscalar(bec | summarize count()), Details = \"Impersonation / Spoof Emails\", Ord = 1, Trend = becTrend),\r\n(print Count = toscalar(bec | summarize dcount(RecipientEmailAddress)), Details = \"Users Targeted\", Ord = 2, Trend = becTrend),\r\n(print Count = toscalar(bec | summarize dcount(SenderFromDomain)), Details = \"Spoofed Sender Domains\", Ord = 3, Trend = becTrend),\r\n(print Count = toscalar(inbox | summarize count()), Details = \"Delivered to Inbox\", Ord = 4, Trend = inboxTrend)\r\n| sort by Ord asc\r\n| project Count, Details, Trend", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "secondaryContent": { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "min": 0, + "palette": "blue" + } + }, + "showBorder": true, + "size": "auto" + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "15" + }, + "name": "bec kpi strip", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "91fdd28f-31c4-4f94-b60a-12cd97d44ddf" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Phish Detections Business Email Compromise (BEC) detections\r\n
\r\n\r\nThis section consolidates key visuals that track and explain phish detections in inbound email as identified by Microsoft Defender for Office 365 focusing on Business Email Compromise (BEC) detections Impersonation and Spoof.

**Recommended action:** Enable mailbox intelligence and impersonation protection for frequently-impersonated users and domains; consider adding confirmed look-alike domains to the Tenant Block List." + }, + "name": "text - Phish BEC Banner", + "id": "e3b2232c-8056-4913-a652-64f70e228750" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections - Impersonation detections Trend\r\n**Displays counts (per {Granularity}) of inbound emails flagged for Business Email Compromise (BEC) using Impersonation detection methods by Microsoft Defender for Office 365. Helps track impersonation attack patterns over time.**" + }, + "customWidth": "100", + "name": "text - Phish BEC Imp Trend Header", + "id": "e95667df-3bcd-4023-9e8f-99ed05bc4bf0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish – Business Email Compromise (BEC) – Impersonation detections over time summarizing the data daily.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has 'Impersonation'\r\n| summarize Count = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ImpersonationDetections = coalesce(Count, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "ImpersonationDetections", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "name": "query - Phish BEC Imp Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "61fa166d-f300-42a6-a324-de18b3fdf4c1" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections - Impersonation detections by Detection Technology\r\n**Visualizes counts (per {Granularity}) of Phish detections of inbound emails by various Microsoft Defender for Office 365 detection technologies used for detecting Impersonations.**" + }, + "customWidth": "100", + "name": "text - Phish BEC Imp Tech Header", + "id": "09e1a866-f344-4a92-a3bd-8c3c3c5d598d" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish – Business Email Compromise (BEC) – Impersonation detections over time summarizing the data daily by various Impersonation Detection technologies/controls in Microsoft Defender for Office 365.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Phish\"\r\n| mv-expand Details = parse_json(DetectionMethods).Phish to typeof(string)\r\n| where Details has \"Impersonation\"\r\n| summarize Count = count() by Details, Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct Details | extend d = 1) on d | project Timestamp, Details\r\n| join kind=leftouter (agg) on Timestamp, Details\r\n| project Timestamp, Details, Count = coalesce(Count, 0)\r\n| sort by Details asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "100", + "name": "query - Phish BEC Imp Tech Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "6cd5662f-13b4-4a9b-afe7-0a6343e3ab5c" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish - Business Email Compromise (BEC) - Impersonation detections summarized by individual detection technology/control in Microsoft Defender for Office 365.\r\n//Each technique is counted individually via mv-expand over DetectionMethods.Phish (matching the sibling trend line chart), so a message flagged by multiple techniques counts once per technique.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Phish\"\r\n| mv-expand Details = parse_json(DetectionMethods).Phish to typeof(string)\r\n| where Details has \"Impersonation\"\r\n| summarize Count = count() by Details\r\n| sort by Count desc\r\n| project ['Detection Technology'] = Details, ['Detections'] = Count", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "graphSettings": { + "type": 0 + }, + "gridSettings": { + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "query - Phish BEC Imp Tech Pie", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "73499618-e842-440e-a555-cd8849093884" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections - Impersonation detections by SenderIPv4 Geo Location\r\n**Visualizes the email sending infrastructure sender IPv4 addresses associated with inbound emails detected as Phish - Impersonation, along with the IPv4 address geographic coordinates (latitude, longitude) and country information. Helps identify high-risk regions and sources for targeted threat mitigation.**" + }, + "customWidth": "100", + "name": "text - Phish BEC Imp Geo Header", + "id": "189a1ac1-f275-4697-880b-7ffae1e5d263" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish – Business Email Compromise (BEC) – Impersonation detections summarizing the data by email sender IP address (SenderIPv4).\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Impersonation\" and isnotempty(SenderIPv4)\r\n//| project Timestamp, EmailDirection, SenderFromAddress, AdditionalFields, SenderIPv4 \r\n| summarize count()by SenderIPv4\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Latitude = tostring(GeoInfo.latitude), Longitude = tostring(GeoInfo.longitude)\r\n| project SenderIPv4, Latitude, Longitude, count_ ", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "map", + "mapSettings": { + "locInfo": "LatLong", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "none" + } + } + }, + "customWidth": "50", + "name": "query - Phish BEC Imp Geo Map", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "574b61ad-ec2d-4517-93c5-d0e9bd14f2e9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections summarizing the data by email sender IP address and IP address country information (SenderIPv4).\r\nEmailEvents \r\n| where DetectionMethods has \"Impersonation\" and isnotempty(SenderIPv4)\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Country = tostring(GeoInfo.country)\r\n| summarize count() by Country\r\n| project Country, ['Impersonation Emails'] = count_\r\n| sort by ['Impersonation Emails'] desc", + "size": 0, + "showAnalytics": true, + "title": "Impersonation Detections-Sender Heatmap (IPv4)", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Impersonation Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + }, + "mapSettings": { + "locInfo": "LatLong", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "heatmap", + "heatmapPalette": "red" + } + } + }, + "customWidth": "50", + "name": "query - Phish BEC Imp Country", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "e53b7dbc-4683-4309-b879-c7be68599159" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections - Spoof detections Trend\r\n**Displays counts (per {Granularity}) of inbound emails flagged for Business Email Compromise (BEC) using Spoof detection methods by Microsoft Defender for Office 365. Helps track Spoofing based attack patterns over time.**" + }, + "customWidth": "100", + "name": "text - Phish BEC Spoof Trend Header", + "id": "8db0f1b0-49bf-43a2-9f9f-164eb9530629" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish – Business Email Compromise (BEC) – Spoof detections over time summarizing the data daily.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has 'Spoof'\r\n| summarize Count = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, SpoofDetections = coalesce(Count, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "SpoofDetections", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "name": "query - Phish BEC Spoof Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "9a308cd9-bf05-4287-b0d5-54636d081a82" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections - Spoof detections Trend by Detection Technology\r\n**Visualizes counts (per {Granularity}) of Phish detections of inbound emails by various Microsoft Defender for Office 365 detection technologies used for detecting Spoofing.**" + }, + "customWidth": "100", + "name": "text - Phish BEC Spoof Tech Header", + "id": "28c9c15d-d22f-4412-9efc-868b95082668" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish – Business Email Compromise (BEC) – Spoof detections over time summarizing the data daily by various Spoof Detection technologies/controls in Microsoft Defender for Office 365.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Phish\"\r\n| mv-expand Details = parse_json(DetectionMethods).Phish to typeof(string)\r\n| where Details has \"Spoof\"\r\n| summarize Count = count() by Details, Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct Details | extend d = 1) on d | project Timestamp, Details\r\n| join kind=leftouter (agg) on Timestamp, Details\r\n| project Timestamp, Details, Count = coalesce(Count, 0)\r\n| sort by Details asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "yAxis": [ + "Count" + ], + "seriesLabelSettings": [ + { + "seriesName": "[[\"Spoof external domain\"]", + "color": "redDark" + }, + { + "seriesName": "[[\"Spoof intra-org\"]", + "color": "orangeDark" + }, + { + "seriesName": "[[\"Spoof DMARC\"]", + "color": "yellowDark" + } + ] + } + }, + "customWidth": "100", + "name": "query - Phish BEC Spoof Tech Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "1a1328fc-5404-4dff-99ed-3a30082a4cbe" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish - Business Email Compromise (BEC) - Spoof detections summarized by individual detection technology/control in Microsoft Defender for Office 365.\r\n//Each technique is counted individually via mv-expand over DetectionMethods.Phish (matching the sibling trend line chart), so a message flagged by multiple techniques counts once per technique.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Phish\"\r\n| mv-expand Details = parse_json(DetectionMethods).Phish to typeof(string)\r\n| where Details has \"Spoof\"\r\n| summarize Count = count() by Details\r\n| sort by Count desc\r\n| project ['Detection Technology'] = Details, ['Detections'] = Count", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "query - Phish BEC Spoof Tech Pie", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "f7df9892-85b4-49c3-8739-873b745183a3" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections - Spoof detections by SenderIPv4 Geo Location\r\n**Visualizes the email sending infrastructure sender IPv4 addresses associated with inbound emails detected as Phish - Spoofing, along with the IPv4 address geographic coordinates (latitude, longitude) and country information. Helps identify high-risk regions and sources for targeted threat mitigation.**" + }, + "customWidth": "100", + "name": "text - Phish BEC Spoof Geo Header", + "id": "3c83e7f0-5391-4b1a-bb5b-de0d17488efd" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish – Business Email Compromise (BEC) – Spoof detections summarizing the data by email sender IP address (SenderIPv4).\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where DetectionMethods has \"Spoof\" and isnotempty(SenderIPv4)\r\n//| project Timestamp, EmailDirection, SenderFromAddress, AdditionalFields, SenderIPv4 \r\n| summarize count()by SenderIPv4\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Latitude = tostring(GeoInfo.latitude), Longitude = tostring(GeoInfo.longitude)\r\n| project SenderIPv4, Latitude, Longitude, count_ ", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "map", + "mapSettings": { + "locInfo": "LatLong", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "none" + } + } + }, + "customWidth": "50", + "name": "query - Phish BEC Spoof Geo Map", + "styleSettings": { + "margin": "15px", + "padding": "15px" + }, + "id": "122d860c-ab0d-475e-b29e-2955020680c7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish detections summarizing the data by email sender IP address and IP address country information (SenderIPv4).\r\nEmailEvents \r\n| where DetectionMethods has \"Spoof\" and isnotempty(SenderIPv4)\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\r\n| extend Country = tostring(GeoInfo.country)\r\n| summarize count() by Country\r\n| project Country, ['Spoof Emails'] = count_\r\n| sort by ['Spoof Emails'] desc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Spoof Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + }, + "mapSettings": { + "locInfo": "LatLong", + "latitude": "Latitude", + "longitude": "Longitude", + "sizeSettings": "count_", + "sizeAggregation": "Sum", + "labelSettings": "SenderIPv4", + "legendMetric": "count_", + "legendAggregation": "Sum", + "itemColorSettings": { + "nodeColorField": "count_", + "colorAggregation": "Sum", + "type": "heatmap", + "heatmapPalette": "red" + } + } + }, + "customWidth": "50", + "name": "query - Phish BEC Spoof Country", + "styleSettings": { + "margin": "15px", + "padding": "15px" + }, + "id": "9d0111bc-8d01-4a99-9009-645dc02c3bed" + }, + { + "type": 1, + "content": { + "json": "### Supply-Chain & Partner Risk (Possible Partner Compromise)\r\n**Correlates the external domains your organization emails most with inbound emails from those same domains that carried threats. A trusted partner or supplier domain suddenly sending threats is a strong signal that the partner may be compromised - a common supply-chain and business email compromise (BEC) vector.**

**Recommended action:** Verify any flagged partner through a trusted channel before acting on their recent messages, alert them to a possible compromise, and consider tightening inbound policy for that domain until confirmed clean." + }, + "customWidth": "100", + "name": "text - Phish Partner Compromise Header", + "id": "2c62c576-3b05-4663-ae2e-4f961d7409c6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises top outbound recipient domains by outbound email volume and shows total number of inbound emails with Threats from the same domains (as inbound senders) \r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where EmailDirection == \"Outbound\"\r\n| project RecipientDomain = tostring(split(RecipientEmailAddress, \"@\")[1])\r\n| summarize count() by RecipientDomain\r\n| project OutboundCount=count_, RecipientDomain, SenderFromDomain=RecipientDomain\r\n| join (EmailEvents | where EmailDirection == \"Inbound\" and isempty(ThreatTypes)==false) on SenderFromDomain\r\n| summarize max(OutboundCount),count() by SenderFromDomain\r\n| project SenderFromDomain, OutboundEmails=max_OutboundCount, IncomingEmailsWithThreats=count_\r\n| extend Bad_Traffic_Percentage = todouble(round(IncomingEmailsWithThreats / todouble(OutboundEmails) * 100, 2))\r\n| top 15 by OutboundEmails\r\n| project ['Sender Domain'] = SenderFromDomain, ['Outbound Emails'] = OutboundEmails, ['Inbound w/ Threats'] = IncomingEmailsWithThreats, ['Bad Traffic %'] = Bad_Traffic_Percentage", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Outbound Emails", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Inbound w/ Threats", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "60ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + }, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20 + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "query - Phish Partner Compromise", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "1aaa047c-1108-4288-833e-61ca35b5495a" + }, + { + "type": 1, + "content": { + "json": "### Top Recipients Targeted by Impersonation / BEC\r\n**Lists the recipients most frequently targeted by impersonation and Business Email Compromise (BEC) attempts, showing the number of impersonation emails, how many distinct senders were involved, the top spoofed sender domains, and how many of those messages were delivered to the inbox. Helps identify high-risk users (often executives or finance staff) who may need extra protection or awareness.**" + }, + "customWidth": "100", + "name": "text - impersonation targets", + "id": "b1e7c2a4-9f3d-4a6b-8c12-7d5e9f0a1b23" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Top recipients targeted by impersonation / BEC, with distinct senders, spoofed domains and how many landed in the inbox.\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| where OrgLevelPolicy !in (\"Phishing simulation\", \"SecOps Mailbox\")\r\n| where DetectionMethods has \"Impersonation\"\r\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize ImpersonationEmails = count(),\r\n DistinctSenders = dcount(SenderFromAddress),\r\n TopSpoofedDomains = make_set(SenderFromDomain, 5),\r\n DeliveredToInbox = countif(DeliveryLocation has \"Inbox\")\r\n by RecipientEmailAddress\r\n| top 20 by ImpersonationEmails\r\n| project ['Recipient'] = RecipientEmailAddress, ['Impersonation Emails'] = ImpersonationEmails, ['Distinct Senders'] = DistinctSenders, ['Top Spoofed Domains'] = strcat_array(TopSpoofedDomains, \", \"), ['Delivered to Inbox'] = DeliveredToInbox", + "size": 0, + "title": "Top Recipients Targeted by Impersonation / BEC", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "showAnalytics": true, + "gridSettings": { + "formatters": [ + { + "columnMatch": "Impersonation Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "15" + }, + "name": "newviz - impersonation targets", + "id": "afe28369-af82-47ae-846d-179bd86b660e" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "15" + }, + "name": "group - 7 - Phish-BEC-Insights", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "b7971cd9-d086-47c7-8f66-50956b9c56c3" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Phish Detections Sender Authentication details (DMARC, DKIM, SPF, CompAuth)\r\n
\r\n\r\nThis section consolidates key visuals that track and explain Sender Authentication checks details in inbound email by Microsoft Defender for Office 365 focusing on the various Sender Authentication standards: DMARC, DKIM, SPF, CompAuth.

**Recommended action:** For domains failing DMARC/DKIM/SPF, verify your own outbound authentication is published and enforced (p=reject), and treat persistent external spoofers as possible block candidates." + }, + "name": "text - Phish Section5 Banner", + "id": "90d7a338-d943-4398-b788-bfd4f93007d4" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections Sender Authentication Trend (DMARC, DKIM, SPF, CompAuth)\r\n**Shows counts (per {Granularity}) of sender authentication check outcomes (DMARC, DKIM, SPF, CompAuth) performed by Microsoft Defender for Office 365 on inbound emails. Useful for monitoring authentication success and failure patterns over time to identify anomalies or potential phishing risks.**" + }, + "customWidth": "100", + "name": "text - Phish SenderAuth Trend Header", + "id": "4a0ab90e-55dd-4fa6-82c3-0edc57ce0966" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spoof- DMARC fails summarizing the data daily.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend DMARCFail = (tostring(parse_json(AuthenticationDetails).DMARC) == \"fail\") \r\n| summarize DMARCFail = sum(DMARCFail) by bin (Timestamp,{Granularity})", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "DMARCFail", + "color": "orangeDark" + } + ] + } + }, + "customWidth": "50", + "name": "query - Phish Auth DMARC Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "79920d30-01d4-4412-b994-853e50c9d7d8" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spoof- DKIM fails summarizing the data daily.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend DKIMFail = (tostring(parse_json(AuthenticationDetails).DKIM) == \"fail\") \r\n| summarize DKIMFail = sum(DKIMFail) by bin (Timestamp,{Granularity})", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "DKIMFail", + "color": "yellowDark" + } + ] + } + }, + "customWidth": "50", + "name": "query - Phish Auth DKIM Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "bf09ffd4-eee0-42f7-a507-1cf54d9c365a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spoof- SPF fails summarizing the data daily.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend SPFFail = (tostring(parse_json(AuthenticationDetails).SPF) == \"fail\") \r\n| summarize SPFFail = sum(SPFFail) by bin (Timestamp,{Granularity})", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "SPFFail", + "color": "purpleDark" + } + ] + } + }, + "customWidth": "50", + "name": "query - Phish Auth SPF Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "4d66fe13-9904-45cf-8783-f3ee984f3a66" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spoof- Composite Authentication fails summarizing the data daily.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend CompAuthFail = (tostring(parse_json(AuthenticationDetails).CompAuth) == \"fail\") \r\n| summarize CompAuthFail = sum(CompAuthFail) by bin (Timestamp,{Granularity})", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "CompAuthFail", + "color": "blueDark" + } + ] + } + }, + "customWidth": "50", + "name": "query - Phish Auth CompAuth Trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "0968b828-23fe-4fa2-a5ea-8ab39362457f" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections Top Sender Domains with DMARC Failures (Inbound)\r\n**Displays the top 10 sender domains (P1 and P2) for inbound emails where Spoof-DMARC detection triggered. Includes total inbound email volume and calculates DMARC fail traffic percentage per domain to highlight high-risk sources.**" + }, + "customWidth": "100", + "name": "text - Phish Auth DMARC Domains Header", + "id": "24d4689a-eb6d-49f5-85a8-fcadca409f7a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Spoof-DMARC fails detections summarizing the data by the top 10 email sender P2 domain (SenderFromDomain) and sender P1 domain (SenderMailFromDomain). Adding additional insights for total inbound emails and DMARC fail traffic percentage for each sender domain.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where EmailDirection == \"Inbound\"\r\n| summarize TotalEmailCount = count(),\r\n DMARCFailCount = countif(set_has_element(parse_json(DetectionMethods).Phish, \"Spoof DMARC\")) by P1Sender=SenderMailFromDomain, P2Sender=SenderFromDomain\r\n| extend DMARCFail_Traffic_Percentage = todouble(round(DMARCFailCount / todouble(TotalEmailCount) * 100, 2))\r\n| where DMARCFailCount !=0\r\n| top 10 by DMARCFailCount\r\n| project ['P1 Sender'] = P1Sender, ['P2 Sender'] = P2Sender, ['DMARC Failures'] = DMARCFailCount, ['Total Inbound'] = TotalEmailCount, ['DMARC Fail %'] = DMARCFail_Traffic_Percentage", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "DMARCFail", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "DMARC Fail %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "40ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "query - Phish Auth DMARC Domains", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "642814ad-9d24-4be9-ae10-3578e89da05b" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections Top Sender Domains with Spoof External Domain Detections (Inbound)\r\n**Displays the top 10 sender domains (P1 and P2) for inbound emails flagged for Spoof External Domain detection. Includes total inbound email volume and calculates spoof traffic percentage per domain to highlight high-risk sources.**" + }, + "customWidth": "100", + "name": "text - Phish Auth SpoofExt Domains Header", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "993fdc34-354b-412e-be39-facbde4f4f0e" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish-Spoof-external domain detections summarizing the data by the top 10 email sender P2 domain (SenderFromDomain) and sender P1 domain (SenderMailFromDomain). Adding additional insights for total inbound emails and Spoof external domain detection traffic percentage for each sender domain.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where EmailDirection == \"Inbound\"\r\n| summarize TotalEmailCount = count(),\r\n SpoofExternalCount = countif(set_has_element(parse_json(DetectionMethods).Phish, \"Spoof external domain\")) by P1Sender=SenderMailFromDomain, P2Sender=SenderFromDomain\r\n| extend SpoofExternal_Traffic_Percentage = todouble(round(SpoofExternalCount / todouble(TotalEmailCount) * 100, 2))\r\n| where SpoofExternalCount !=0\r\n| top 10 by SpoofExternalCount\r\n| project ['P1 Sender'] = P1Sender, ['P2 Sender'] = P2Sender, ['Spoof External'] = SpoofExternalCount, ['Total Inbound'] = TotalEmailCount, ['Spoof External %'] = SpoofExternal_Traffic_Percentage", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Spoof External", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Spoof External %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "40ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "SpoofExternalFail", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true, + "sortBy": [ + { + "itemKey": "Spoof External %", + "sortOrder": 2 + } + ] + } + }, + "customWidth": "100", + "name": "query - Phish Auth SpoofExt Domains", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "69ca3799-d2d5-4896-b3a5-1eeba46f0b46" + }, + { + "type": 1, + "content": { + "json": "### Phish Detections Top Sender Domains with Spoof Internal Domain Detections (Inbound)\r\n**Displays the top 10 sender domains (P1 and P2) for inbound emails flagged for Spoof Internal Domain detection. Includes total inbound email volume and calculates spoof traffic percentage per domain to highlight high-risk sources.**" + }, + "customWidth": "100", + "name": "text - Phish Auth SpoofInt Domains Header", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "3fa33c5d-0eba-471f-b47f-0c12c1f770d6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phish-Spoof-internal domain detections summarizing the data by the top 10 email sender P2 domain (SenderFromDomain) and sender P1 domain (SenderMailFromDomain). Adding additional insights for total inbound emails and Spoof internal domain detection traffic percentage for each sender domain.\r\nEmailEvents\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where EmailDirection == \"Inbound\"\r\n| summarize TotalEmailCount = count(),\r\n SpoofInternalCount = countif(set_has_element(parse_json(DetectionMethods).Phish, \"Spoof intra-org\")) by P1Sender=SenderMailFromDomain, P2Sender=SenderFromDomain\r\n| extend SpoofInternal_Traffic_Percentage = todouble(round(SpoofInternalCount / todouble(TotalEmailCount) * 100, 2))\r\n| where SpoofInternalCount !=0\r\n| top 10 by SpoofInternalCount\r\n| project ['P1 Sender'] = P1Sender, ['P2 Sender'] = P2Sender, ['Spoof Internal'] = SpoofInternalCount, ['Total Inbound'] = TotalEmailCount, ['Spoof Internal %'] = SpoofInternal_Traffic_Percentage", + "size": 3, + "showAnalytics": true, + "title": "Top 10 Spoof intra-org detections by Sender domain (P1/P2)", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Spoof Internal", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Spoof Internal %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "40ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "SpoofIntraorgFail", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "query - Phish Auth SpoofInt Domains", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "ae0c65c7-68ea-4d50-b177-1effeaf1c045" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "15" + }, + "name": "group - 8-Phish-SenderAuth", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "8077779a-4da8-46be-8032-626bd8c36dbd" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
First-Contact & New-Vendor Senders\r\n
\r\n\r\nExternal email senders and domains seen for the first time in the selected period. New/first-contact relationships - especially ones already carrying threats - are a common precursor to phishing, business email compromise (BEC), and supply-chain attacks.

**Recommended action:** Treat brand-new domains sending threats as high-priority review; verify any that claim to be a known brand or partner before trusting their messages." + }, + "name": "phish fc banner", + "id": "05b83435-c7ed-48a3-919e-388b2e599726" + }, + { + "type": 1, + "content": { + "json": "### First-contact external senders
\r\n\r\n**External email senders ordered by when they were first seen in the period (most recent first). In tenants with longer history this highlights genuinely new senders.**" + }, + "customWidth": "100", + "name": "phish fc senders header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "c57dffb4-dfdb-4a1e-93be-16fa9e856a0d" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists external email senders seen for the first time in the selected period (most recent first), surfacing new/first-contact senders. In tenants with longer history this highlights genuinely new relationships - a common precursor to BEC and supply-chain attacks.\r\n// TIP: to hide your own accepted domains, uncomment the ExcludeDomains line and the matching where-clause.\r\n//let ExcludeDomains = dynamic([\"contoso.com\",\"fabrikam.com\"]);\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| extend SenderDomain = tostring(split(SenderFromAddress, \"@\")[1])\r\n| where isnotempty(SenderFromAddress)\r\n//| where SenderDomain !in~ (ExcludeDomains)\r\n| summarize FirstSeen=min(Timestamp), Messages=count(), ThreatMessages=countif(isnotempty(ThreatTypes)) by SenderFromAddress, SenderDomain\r\n| top 20 by FirstSeen desc\r\n| project ['Sender']=SenderFromAddress, ['Sender Domain']=SenderDomain, ['First Seen']=FirstSeen, Messages, ['Threat Messages']=ThreatMessages", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Messages", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Threat Messages", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "name": "phish fc senders table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "d1ceb0ac-2dad-49af-b416-a3376a7b8513" + }, + { + "type": 1, + "content": { + "json": "### New sender domains carrying threats
\r\n\r\n**External sender domains seen for the first time in the period that already carried threats, most-recent first. A brand-new domain sending threats to your users is a strong early-warning signal.**" + }, + "customWidth": "100", + "name": "phish fc domains header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "bd29bbe4-cde2-499c-a1d0-e2cc51f7733d" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists external sender domains seen for the first time in the selected period that already carried threats, ranked by most-recently first seen. A brand-new domain sending threats to your users is a strong early-warning signal for phishing and BEC.\r\n// TIP: to hide your own accepted domains, uncomment the ExcludeDomains line and the matching where-clause.\r\n//let ExcludeDomains = dynamic([\"contoso.com\",\"fabrikam.com\"]);\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| extend SenderDomain = tostring(split(SenderFromAddress, \"@\")[1])\r\n| where isnotempty(SenderDomain)\r\n//| where SenderDomain !in~ (ExcludeDomains)\r\n| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp), Messages=count(), Senders=dcount(SenderFromAddress), Recipients=dcount(RecipientEmailAddress), ThreatMessages=countif(isnotempty(ThreatTypes)) by SenderDomain\r\n| where ThreatMessages > 0\r\n| top 20 by FirstSeen desc\r\n| project ['Sender Domain']=SenderDomain, ['First Seen']=FirstSeen, Messages, Senders, Recipients, ['Threat Messages']=ThreatMessages, ['Last Seen']=LastSeen", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Messages", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Senders", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Recipients", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Threat Messages", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "name": "phish fc domains table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "7da952d5-5ae2-4b2e-a5cf-c78b11bda4f8" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "15" + }, + "customWidth": "100", + "name": "group - Phish First Contact", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "90e5248a-2c35-48f3-869c-c45c631c6fbf" + }, + { + "type": 1, + "content": { + "json": "# URL Detections and URL Click Insights\r\n\r\n---\r\nThis tab provides insights into **URL-based detections** in email messages and details about URL clicks performed by end users on URLs identified as **malicious**." + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "5" + }, + "name": "text - 24 - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "2156430d-fec6-48bb-a9a8-3166182f6993" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//KPI summary of URL threat protection (Safe Links clicks and URLs seen in email) for the selected period, with a per-period Trend series feeding each tile sparkline.\r\nlet gran = {Granularity};\r\nlet clicks = UrlClickEvents;\r\nlet blocked = clicks | where ActionType in (\"ClickBlocked\",\"ClickBlockedByTenantPolicy\");\r\nlet allowed = clicks | where ActionType == \"ClickAllowed\";\r\nlet blockedTrend = toscalar(blocked | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nlet allowedTrend = toscalar(allowed | make-series Trend = count() default = 0 on Timestamp step gran | project Trend);\r\nlet usersTrend = toscalar(clicks | make-series Trend = dcount(AccountUpn) default = 0 on Timestamp step gran | project Trend);\r\nlet urlsTrend = toscalar(EmailUrlInfo | make-series Trend = dcount(Url) default = 0 on Timestamp step gran | project Trend);\r\nunion\r\n(print Count = toscalar(blocked | summarize count()), Details = \"Malicious Clicks Blocked\", Ord = 1, Trend = blockedTrend),\r\n(print Count = toscalar(allowed | summarize count()), Details = \"Clicks Allowed Through\", Ord = 2, Trend = allowedTrend),\r\n(print Count = toscalar(clicks | summarize dcount(AccountUpn)), Details = \"Users Clicking Links\", Ord = 3, Trend = usersTrend),\r\n(print Count = toscalar(EmailUrlInfo | summarize dcount(Url)), Details = \"Distinct URLs in Email\", Ord = 4, Trend = urlsTrend)\r\n| sort by Ord asc\r\n| project Count, Details, Trend", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "secondaryContent": { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "min": 0, + "palette": "blue" + } + }, + "showBorder": true, + "size": "auto" + } + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "5" + }, + "name": "url kpi strip", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "d5e2326a-a5dd-4217-bb75-0e337d75d306" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Insights on URL-Based Threat Detections\r\n
\r\n\r\nThis section consolidates key visuals that track and explain URL based threat detections in inbound email as identified by Microsoft Defender for Office 365 focusing on per-{Granularity} trends of URL-based threat detections, QR code detections, and URL scans activity by locations.

**Recommended action:** Confirm Safe Links is enabled for email and Teams; investigate QR-code and URL detection spikes for emerging campaigns." + }, + "name": "text - 13 - Copy", + "id": "ed3468e7-1936-45fd-9168-93010a662302" + }, + { + "type": 1, + "content": { + "json": "### Trend of URL-Based Malware Threat Detections
\r\n\r\n**This visual displays a per-{Granularity} trend of emails with URL based Malware threat detections identified by Microsoft Defender for Office 365. The line chart summarises the number of messages flagged for malware threats.**" + }, + "name": "text - 13 - Copy - Copy", + "id": "77e7bbac-d752-478b-bce9-06bb1bd12bfe" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Malware detections over time summarizing the data daily by various Malware URL threat based detection technologies/controls in Microsoft Defender for Office 365.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where DetectionMethods has 'Malware'\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ParsedMethods = parse_json(DetectionMethods)\r\n| mv-expand MalwareMethod = ParsedMethods.Malware\r\n| where MalwareMethod contains \"URL\"\r\n| summarize Count = count() by MalwareMethod = tostring(MalwareMethod), Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct MalwareMethod | extend d = 1) on d | project Timestamp, MalwareMethod\r\n| join kind=leftouter (agg) on Timestamp, MalwareMethod\r\n| project Timestamp, MalwareMethod, Count = coalesce(Count, 0)\r\n| sort by MalwareMethod asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "100", + "name": "query - 8 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "79ef5e7b-57a6-4519-9899-18fd8cae5e68" + }, + { + "type": 1, + "content": { + "json": "### Trend of URL-Based Phish Threat Detections
\r\n\r\n**This visual displays a per-{Granularity} trend of emails with URL based Phish threat detections identified by Microsoft Defender for Office 365. The line chart summarises the number of messages flagged for Phish threats.**" + }, + "name": "text - 13 - Copy - Copy - Copy", + "id": "48923812-5440-4f47-8881-273f14cbfb8e" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total emails with Phishing detections over time summarizing the data daily by various Phishing URL threat based detection technologies/controls in Microsoft Defender for Office 365.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where DetectionMethods has 'Phish'\r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ParsedMethods = parse_json(DetectionMethods)\r\n| mv-expand PhishMethod = ParsedMethods.Phish\r\n| where PhishMethod contains \"URL\"\r\n| summarize Count = count() by PhishMethod = tostring(PhishMethod), Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct PhishMethod | extend d = 1) on d | project Timestamp, PhishMethod\r\n| join kind=leftouter (agg) on Timestamp, PhishMethod\r\n| project Timestamp, PhishMethod, Count = coalesce(Count, 0)\r\n| sort by PhishMethod asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "100", + "name": "query - 8 - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b983b361-6c2e-47d5-b2c5-edd9caa6a55d" + }, + { + "type": 1, + "content": { + "json": "### Trend (per {Granularity}) of QR Code-Based Threat Detections
\r\n\r\n**Displays counts (per {Granularity}) of inbound emails containing QR codes flagged for Phish, Malware, or Spam via URL-based detection methods. Helps track QR code abuse patterns over time.**" + }, + "customWidth": "50", + "name": "text - 13 - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "3d8b75e1-6e1d-44eb-b1fc-78d3db7feb71" + }, + { + "type": 1, + "content": { + "json": "### URL Scan activity by Location (per {Granularity})
\r\n\r\n**Displays counts (per {Granularity}) of URLs scanned from various locations within emails (e.g., body, attachments, QR codes). Helps identify where malicious URLs are most commonly embedded.**" + }, + "customWidth": "50", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b275b28c-e441-4c19-9055-256d5d45c69c" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailEvents\r\n| where EmailDirection == \"Inbound\" \r\n| where DetectionMethods has \"Url\"\r\n| join EmailUrlInfo on NetworkMessageId\r\n| where UrlLocation == \"QRCode\"\r\n| summarize [\"Phish QR Detection\"]=countif(parse_json(DetectionMethods).Phish has \"URL\"), [\"Malware QR Detection\"]=countif(parse_json(DetectionMethods).Malware has \"URL\"), [\"Spam QR Detection\"]=countif(parse_json(DetectionMethods).Spam has \"URL\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, [\"Phish QR Detection\"]=coalesce([\"Phish QR Detection\"],0), [\"Malware QR Detection\"]=coalesce([\"Malware QR Detection\"],0), [\"Spam QR Detection\"]=coalesce([\"Spam QR Detection\"],0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "graphSettings": { + "type": 0 + }, + "chartSettings": { + "xAxis": "Timestamp", + "xSettings": { + "dateFormatSettings": { + "formatName": "shortDatePattern", + "showUtcTime": false + } + } + } + }, + "customWidth": "50", + "name": "query - 6", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "6c2a7724-d3c2-42b2-b8da-7acbcd0666c6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises where URL's have been scanned identified from various locations in emails\r\nEmailUrlInfo\r\n| summarize count() by UrlLocation", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "query - 5", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "5640dbd5-4085-4f2a-8fb9-e4112233e99e" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "5" + }, + "name": "group - 9-URL detections", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "b572d79b-17a0-48ac-9a43-4f20324cf998" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Insights on URL Click-Based Threat Detections\r\n
\r\n\r\nThis section consolidates key visuals that track and explain URL click based threat detections in emails as identified by Microsoft Defender for Office 365 focusing on per-{Granularity} trend of blocked URL clicks, time-of-click URL scans by workload, malicious clicks allowed, top clicks on malicious URLs, and more.

**Recommended action:** For blocked-click spikes, verify Safe Links is set to not allow click-through; investigate workloads with high click-through activity." + }, + "name": "text - 13 - Copy - Copy", + "id": "6d37617e-911e-4ce6-a10d-4749486738ea" + }, + { + "type": 1, + "content": { + "json": "### Trend (per {Granularity}) of Blocked URL Click Events
\r\n\r\n**Shows the count (per {Granularity}) of blocked URL click attempts and click attempts on URLs with detections, grouped by threat types (e.g., Phish, Malware, Spam). Helps track user interaction with malicious links over time across various threat types.**" + }, + "name": "text - 13 - Copy - Copy - Copy", + "id": "9e477950-bedc-4cc0-9863-df07d124806c" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// Generates a time-series analysis for blocked URL click events from the 'UrlClickEvents' table\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(UrlClickEvents\r\n| where isnotempty(ActionType)\r\n| where ActionType has_any(\"ClickBlocked\")\r\n| summarize Count = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, BlockedClicks = coalesce(Count, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "BlockedClicks", + "color": "blueDark" + } + ] + } + }, + "customWidth": "66", + "name": "query - 4", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "366e80d9-f6ed-43af-91e5-3d04cdcf692d" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of click attempts on URL's with detections split by the different threat types identified\r\nUrlClickEvents\r\n| where isnotempty(ThreatTypes)\r\n| summarize count() by ThreatTypes", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "33", + "name": "query - 4", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "a356eac3-62c2-4fc9-a4d9-3b05b13848df" + }, + { + "type": 1, + "content": { + "json": "### Trend (per {Granularity}) of URL Click Actions by Type
\r\n\r\n**Displays counts (per {Granularity}) of URL click events categorised by action type: Blocked, Allowed, Pending Verdict, Error Page, and Clicked Through. Helps identify risky user behaviour and policy gaps.**" + }, + "customWidth": "66", + "name": "text - 13 - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "a91fe7a6-f507-48f7-bbcc-61dc4f998ba6" + }, + { + "type": 1, + "content": { + "json": "### URL Clicks by Workload
\r\n\r\n**Displays counts (per {Granularity}) of URL click events grouped by Workload (e.g., Outlook, Teams, Copilot, Office Apps: Word, Excel, PowerPoint) Helps identify which applications are most frequently used for URL interactions and potential risk exposure.**" + }, + "customWidth": "33", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "ce05fa08-6e68-4c02-a0bf-2be6cdfae935" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises different URL click event types by action (e.g., blocked, allowed, pending verdict, error pages, and clicked through), summarizing the data daily\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(UrlClickEvents\r\n| where isnotempty(ActionType)\r\n| summarize ClickBlocked=countif(ActionType has_any(\"ClickBlocked\")), ClickAllowed=countif(ActionType has_any(\"ClickAllowed\")), PendingVerdict=countif(ActionType has_any(\"UrlScanInProgress\")), ErrorPage=countif(ActionType has_any(\"UrlErrorPage\")), ClickedThrough=countif(IsClickedThrough == true) by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ClickBlocked=coalesce(ClickBlocked,0), ClickAllowed=coalesce(ClickAllowed,0), PendingVerdict=coalesce(PendingVerdict,0), ErrorPage=coalesce(ErrorPage,0), ClickedThrough=coalesce(ClickedThrough,0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "xAxis": "Timestamp" + } + }, + "customWidth": "66", + "name": "query - 1", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "a12b4c78-7d18-4adc-86e0-54395d6a996a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises where URL clicks scanned by the Workload the click happened from\r\nUrlClickEvents\r\n| summarize count() by Workload", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "33", + "name": "query - 5 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "3237cd55-1d5c-41a9-a8f2-1d46c61a709e" + }, + { + "type": 1, + "content": { + "json": "### Blocked URL Clicks by Workload (per {Granularity})
\r\n\r\n**Displays counts (per {Granularity}) of blocked URL click attempts grouped by Workload (Email, Teams, Office, Microsoft 365 Copilot). Helps identify which platforms are most exposed to malicious link interactions and where user awareness or policy enforcement should be strengthened.**" + }, + "customWidth": "66", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "1f209a83-3d50-4bb8-9a79-a365a50a4142" + }, + { + "type": 1, + "content": { + "json": "### Click-Through Activity on Detected URLs by Workload
\r\n\r\n**Displays counts of click‑through actions on URLs already identified with detections, grouped by Workload where the click happened. Helps identify clients/platforms where users are most likely to proceed to risky URLs and prioritise awareness training or policy tuning for those workloads**" + }, + "customWidth": "33", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "33592db8-0ff5-4d8e-bd8f-0201b81a4584" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises blocked URL click event types by Workload (e.g., Email, Teams, Office, Microsoft 365 Copilot), summarizing the data daily\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(UrlClickEvents\r\n| where ActionType ==\"ClickBlocked\"\r\n| summarize Teams=countif(Workload==\"Teams\"), Office=countif(Workload==\"Office\"), Email=countif(Workload==\"Email\"), Copilot=countif(Workload==\"Copilot\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, Teams=coalesce(Teams,0), Office=coalesce(Office,0), Email=coalesce(Email,0), Copilot=coalesce(Copilot,0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "66", + "name": "query - 3", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "80241767-0f69-4e2e-9889-3bf1f48e4f02" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of click-through activities on URL's with detections split by the source client\r\nUrlClickEvents \r\n| where IsClickedThrough !=\"0\"\r\n| where isnotempty(ThreatTypes) \r\n| summarize count() by Workload", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "33", + "name": "query - 2", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "fde29b46-2896-4bfc-bb61-09436696d738" + }, + { + "type": 1, + "content": { + "json": "### Top clicks on Malicious URLs
\r\n\r\n**Displays the top 20 URLs associated with detections that registered the highest number of clicks. Includes ThreatTypes, ActionType, and Workload to provide context on the nature of the threat and where user interaction occurred.**" + }, + "customWidth": "100", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "22bda63a-626c-47de-9a76-ad665ef87862" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows the top 20 URL's that have a detection associated with the most ammount of clicks registered \r\nUrlClickEvents\r\n| where ThreatTypes !=\"\"\r\n| summarize count() by Url, ThreatTypes, ActionType, Workload\r\n| top 20 by count_\r\n| project ['URL']=Url, ['Threat Types']=ThreatTypes, ['Action Type']=ActionType, Workload, ['Click Count']=count_", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Click Count", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "query - 10 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "a044fd4e-7be6-4a11-974c-b54e417c2a81" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "5" + }, + "name": "group - 31-URL clicks", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "75e543f6-08c0-42ed-9869-ecd61b721d34" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Top Risky Users Clicking on URLs with Threats\r\n
\r\n\r\nThis section consolidates key visuals that track and identify users who have clicked on malicious URLs detected by Microsoft Defender for Office 365.

**Recommended action:** Enroll these users in security awareness training and verify Safe Links policy coverage for their mailboxes." + }, + "name": "text - 13 - Copy - Copy - Copy", + "id": "19487811-a94b-4537-877e-61ac7e287c21" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Users Clicking on URLs with Malware Threat
\r\n\r\n**Displays the top 10 user accounts with the highest number of click attempts on URLs flagged as Malware. Helps identify individuals at greater risk and prioritise targeted security awareness training.**" + }, + "customWidth": "100", + "name": "text - 13 - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "78e10621-0e98-44c4-8399-810c19f138c2" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the top 10 users with click attempts on URL's with malware detections\r\nUrlClickEvents\r\n| summarize TotalClickCount=count(),MalwareClickCount = countif(ThreatTypes has \"Malware\") by AccountUpn\r\n| extend Bad_Click_Percentage = todouble(round(MalwareClickCount / todouble(TotalClickCount) *100, 2))\r\n| where MalwareClickCount !=0\r\n| sort by MalwareClickCount desc\r\n| top 15 by MalwareClickCount\r\n| project ['User']=AccountUpn, ['Malware Clicks']=MalwareClickCount, ['Total Clicks']=TotalClickCount, ['Bad Click %']=Bad_Click_Percentage", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Malware Clicks", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "25ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Clicks", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "20ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Click %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "25ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "MalwareEmailCount", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "TotalEmailCount", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad_Traffic_Percentage_Inbound", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "count_", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [] + }, + "customWidth": "100", + "name": "query - 18 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "a7ae8a75-ca7f-49be-8cad-d1451a3bd396" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Users Clicking on URLs with Phish Threat
\r\n\r\n**Displays the top 10 user accounts with the highest number of click attempts on URLs flagged as Phish. Helps identify individuals at greater risk and prioritise targeted security awareness training.**" + }, + "customWidth": "100", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "90d9a0c3-970a-4998-be62-3b3b84bb0f37" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the top 10 users with click attempts on URL's with Phish detections\r\nUrlClickEvents\r\n| summarize TotalClickCount=count(),PhishClickCount = countif(ThreatTypes has \"Phish\") by AccountUpn\r\n| extend Bad_Click_Percentage = todouble(round(PhishClickCount / todouble(TotalClickCount) *100, 2))\r\n| where PhishClickCount !=0\r\n| sort by PhishClickCount desc\r\n| top 15 by PhishClickCount\r\n| project ['User']=AccountUpn, ['Phish Clicks']=PhishClickCount, ['Total Clicks']=TotalClickCount, ['Bad Click %']=Bad_Click_Percentage", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Phish Clicks", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "25ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Clicks", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "20ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Click %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "25ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "MalwareClickCount", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "MalwareEmailCount", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "TotalEmailCount", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad_Traffic_Percentage_Inbound", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "count_", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [] + }, + "customWidth": "100", + "name": "query - 18 - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "d46877d9-03af-463a-b406-bb4c601dffeb" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Users Clicking on URLs with Spam Threat
\r\n\r\n**Displays the top 10 user accounts with the highest number of click attempts on URLs flagged as Spam. Helps identify individuals at greater risk and prioritise targeted security awareness training.**" + }, + "customWidth": "100", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "dc66e020-0932-4346-8e20-6a2dc78de7a9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the top 10 users with click attempts on URL's with Spam detections\r\nUrlClickEvents\r\n| summarize TotalClickCount=count(),SpamClickCount = countif(ThreatTypes has \"Spam\") by AccountUpn\r\n| extend Bad_Click_Percentage = todouble(round(SpamClickCount / todouble(TotalClickCount) *100, 2))\r\n| where SpamClickCount !=0\r\n| sort by SpamClickCount desc\r\n| top 15 by SpamClickCount\r\n| project ['User']=AccountUpn, ['Spam Clicks']=SpamClickCount, ['Total Clicks']=TotalClickCount, ['Bad Click %']=Bad_Click_Percentage", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Spam Clicks", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "25ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Clicks", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "20ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Click %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "25ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "PhishClickCount", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "MalwareClickCount", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "MalwareEmailCount", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "TotalEmailCount", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad_Traffic_Percentage_Inbound", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "count_", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "50ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "sortBy": [] + }, + "customWidth": "100", + "name": "query - 18 - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "734ee45e-4dff-4ca1-b17d-02389086b17b" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "5" + }, + "name": "group - 32-Top clickers", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "ee6c3413-28be-49a1-a89d-bf5fce7acfa4" + }, + { + "type": 1, + "content": { + "json": "# Microsoft Teams Collaboration Protection\r\n\r\n---\r\nAs email defenses mature, attackers are shifting into **Microsoft Teams**, where messages bypass secure email gateways and carry the implicit trust of a colleague chat. Microsoft Threat Intelligence reports Teams-based phishing and voice phishing (vishing) rising steadily through 2026, most often as **IT help desk or technical-support impersonation** from external or newly-created tenants, used to steer users toward remote-access tools and credential theft.\r\n\r\nThis tab shows **Microsoft Defender for Office 365** protection for Microsoft Teams: threat detections and impersonation, suspicious external senders, malicious URLs and clicks, malicious files, post-delivery ZAP removals, and user and admin submissions across chats and channels.\r\n\r\n**Recommended action:** Treat unsolicited external help desk or IT support contact as suspicious. Restrict inbound chat from unmanaged and consumer tenants, allowlist trusted external domains, remove or restrict remote-support tools such as Quick Assist where they are not required, and enforce phishing-resistant MFA for all users (Conditional Access with authentication strength), prioritizing privileged and administrator accounts first.\r\n\r\n[

Disrupting threats targeting Microsoft Teams

](https://www.microsoft.com/en-us/security/blog/2025/10/07/disrupting-threats-targeting-microsoft-teams/)[

Cross-tenant helpdesk impersonation to data exfiltration: a human-operated intrusion playbook

](https://www.microsoft.com/en-us/security/blog/2026/04/18/crosstenant-helpdesk-impersonation-data-exfiltration-human-operated-intrusion-playbook/)[

Help on the line: how a Microsoft Teams support call led to compromise

](https://www.microsoft.com/en-us/security/blog/2026/03/16/help-on-the-line-how-a-microsoft-teams-support-call-led-to-compromise/)[

Email threat landscape: Q2 2026 trends and insights

](https://www.microsoft.com/en-us/security/blog/2026/07/23/email-threat-landscape-q2-2026-trends-and-insights/)" + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "text - teams description", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "5c0f0100-0a11-4b22-9c33-000000000100" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Headline Microsoft Teams protection metrics for the selected period, with per-interval sparklines. Messages are de-duplicated to the latest record per Teams message.\r\nlet gran = {Granularity};\r\nlet msgs = materialize(MessageEvents | summarize arg_max(Timestamp, *) by TeamsMessageId);\r\nlet zap = materialize(MessagePostDeliveryEvents);\r\nunion\r\n(msgs | summarize Count = count() | extend Details = \"Teams Messages Scanned\", Ord = 1, Trend = toscalar(msgs | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(msgs | where isnotempty(ThreatTypes) | summarize Count = count() | extend Details = \"Messages with Threats\", Ord = 2, Trend = toscalar(msgs | where isnotempty(ThreatTypes) | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(msgs | where ThreatTypes has \"Phish\" | summarize Count = count() | extend Details = \"Phish Detections\", Ord = 3, Trend = toscalar(msgs | where ThreatTypes has \"Phish\" | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(msgs | where ThreatTypes has \"Malware\" | summarize Count = count() | extend Details = \"Malware Detections\", Ord = 4, Trend = toscalar(msgs | where ThreatTypes has \"Malware\" | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(msgs | where ThreatTypes has \"Spam\" | summarize Count = count() | extend Details = \"Spam Detections\", Ord = 5, Trend = toscalar(msgs | where ThreatTypes has \"Spam\" | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(msgs | where SafetyTip == \"URLMessageWarning\" | summarize Count = count() | extend Details = \"Messages with URL Warning\", Ord = 6, Trend = toscalar(msgs | where SafetyTip == \"URLMessageWarning\" | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(zap | summarize Count = count() | extend Details = \"Post-Delivery ZAP Actions\", Ord = 7, Trend = toscalar(zap | make-series S = count() default = 0 on Timestamp step gran | project S))\r\n| sort by Ord asc\r\n| project Details, Count, Trend", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "secondaryContent": { + "columnMatch": "Trend", + "formatter": 21 + }, + "showBorder": true, + "size": "auto" + } + }, + "customWidth": "100", + "name": "teams kpi tiles", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b2c476ca-4141-43b4-9d4e-98470aa432fc", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject11').analyticRuleId11,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 11", - "parentId": "[variables('analyticRuleObject11').analyticRuleId11]", - "contentId": "[variables('analyticRuleObject11')._analyticRulecontentId11]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject11').analyticRuleVersion11]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject11')._analyticRulecontentId11]", - "contentKind": "AnalyticsRule", - "displayName": "Deimos Component Execution", - "contentProductId": "[variables('analyticRuleObject11')._analyticRulecontentProductId11]", - "id": "[variables('analyticRuleObject11')._analyticRulecontentProductId11]", - "version": "[variables('analyticRuleObject11').analyticRuleVersion11]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject12').analyticRuleTemplateSpecName12]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "ImminentRansomware_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject12').analyticRuleVersion12]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject12')._analyticRulecontentId12]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query checks for a series of commands that are commonly used by attackers to disable security tools and system recovery tools before deploying Macaw ransomware in an organization.", - "displayName": "Imminent Ransomware", - "enabled": false, - "query": "_ASim_ProcessEvent \n// Pivot on specific commands \n| where CommandLine has_any(\"-ExclusionPath\", \"Set-MpPreference\", \"advfirewall\", \"-ExclusionExtension\", \n\"-EnableControlledFolderAccess\", \"windefend\", \"onstart\", \"bcdedit\", \"Startup\") \n// Making list of found commands \n| summarize CommandLine = make_set(CommandLine, 10000) by DvcId, Dvc, bin(TimeGenerated, 6h) \n// Extending columns for later aggregration, based on TTP\n| extend StartUpExclusionPath = iff(CommandLine has_all(\"-ExclusionPath\", \"Startup\"), 1, 0) \n| extend DefenderTamp = iff(CommandLine has \"Set-MpPreference\" \nand CommandLine has_any( \n\"-SevereThreatDefaultAction 6\" \n\"-HighThreatDefaultAction 6\", \n\"-ModerateThreatDefaultAction 6\", \n\"-LowThreatDefaultAction 6\" \n\"-ScanScheduleDay 8\"), 1, 0) \n| extend NetshFirewallTampering = iff(CommandLine has_all( \"netsh\", \"advfirewall\", \"allprofiles state off\"), 1, 0) \n| extend BatExclusion = iff(CommandLine has_all(\"-ExclusionExtension\", \".bat\"), 1, 0) \n| extend ExeExclusion = iff(CommandLine has_all(\"-ExclusionExtension\", \".exe\"), 1, 0) \n| extend DisableControlledFolderAccess = iff(CommandLine has_all(\"-EnableControlledFolderAccess\", \"Disabled\"), 1, 0) \n| extend ScDeleteDefend = iff(CommandLine has_all(\"sc\", \"delete\", \"windefend\"), 1, 0) \n| extend BootTampering = iff(CommandLine has_all(\"bcdedit\", \"default\") and CommandLine has_any (\"recoveryenabled No\", \"bootstatuspolicy ignoreallfailures\"), 1, 0) \n| extend SchTasks = iff(CommandLine has_all(\"/sc\", \"onstart\", \"system\", \"/create\", \"/delay\"), 1, 0) \n// Summarizing found commands \n| summarize by NetshFirewallTampering ,BatExclusion, ExeExclusion, DisableControlledFolderAccess, ScDeleteDefend, SchTasks, BootTampering, DefenderTamp, StartUpExclusionPath, DvcId, Dvc, TimeGenerated \n// Adding up each piece of evidence \n| extend EvidenceCount = NetshFirewallTampering + BatExclusion + ExeExclusion + DisableControlledFolderAccess + ScDeleteDefend + SchTasks + BootTampering + DefenderTamp + StartUpExclusionPath \n| where EvidenceCount > 4\n| extend HostName = iff(Dvc has '.', substring(Dvc, 0, indexof(Dvc, '.')), Dvc)\n| extend DnsDomain = iff(Dvc has '.', substring(Dvc, indexof(Dvc, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": "[variables('TemplateEmptyArray')]", - "tactics": [ - "DefenseEvasion", - "Persistence" - ], - "techniques": [ - "T1562", - "T1547" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "Dvc" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Microsoft Teams - Collaboration Protection Overview\r\n
\r\n\r\nMicrosoft Defender for Office 365 extends its protection to **Microsoft Teams**, detecting malicious messages, URLs, and files shared through chats and channels. This tab summarizes Teams message detections, link-safety warnings, post-delivery ZAP, file scanning, and user/admin submissions.

*Scope note: the Teams message tables surface metadata for external-conversation messages plus internal messages that contain URLs, so counts reflect that scope rather than the full volume of Teams messages.*" + }, + "name": "teams overview banner", + "id": "2f71360f-1673-480f-8361-5afc83aee67d" + }, + { + "type": 1, + "content": { + "json": "### Teams threat detections over time
\r\n\r\n**Volume (per selected interval) of Microsoft Teams messages detected with a threat by Microsoft Defender for Office 365. Spikes may indicate a targeted Teams-based campaign.**" + }, + "customWidth": "100", + "name": "teams trend header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "0ac71d4e-8ecb-4d17-9fd3-10754007ec07" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the number of Microsoft Teams messages detected with a threat over time, de-duplicated to the latest record per message and summarized per selected interval.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(MessageEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(MessageEvents | summarize max(Timestamp));\r\nlet agg = materialize(MessageEvents | where isnotempty(ThreatTypes) | summarize arg_max(Timestamp, *) by TeamsMessageId | summarize ThreatDetections = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ThreatDetections = coalesce(ThreatDetections, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "xAxis": "Timestamp", + "seriesLabelSettings": [ + { + "seriesName": "ThreatDetections", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "name": "teams detection trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "937f3bc6-21f5-4f4c-ab72-78f08f32c5bd" + }, + { + "type": 1, + "content": { + "json": "### Threat type breakdown
\r\n\r\n**Split of Microsoft Teams threat detections across Phish, Malware, and Spam.**" + }, + "customWidth": "50", + "name": "teams threat pie header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "645a39ae-843a-47db-8016-6082ef37744d" + }, + { + "type": 1, + "content": { + "json": "### Thread exposure
\r\n\r\n**De-duplicated Microsoft Teams messages split by whether the conversation includes external participants.**" + }, + "customWidth": "50", + "name": "teams thread header", + "id": "a1a48f9a-8593-4ab5-8824-5998c643e844" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query breaks down Microsoft Teams threat detections by threat type for the selected period, de-duplicated to the latest record per message. A message flagged for more than one threat type is counted under each, so the split can exceed the distinct message count.\r\nlet msgs = MessageEvents | where isnotempty(ThreatTypes) | summarize arg_max(Timestamp, *) by TeamsMessageId;\r\nunion\r\n(msgs | where ThreatTypes has \"Phish\" | summarize Count = count() | extend ThreatType = \"Phish\"),\r\n(msgs | where ThreatTypes has \"Malware\" | summarize Count = count() | extend ThreatType = \"Malware\"),\r\n(msgs | where ThreatTypes has \"Spam\" | summarize Count = count() | extend ThreatType = \"Spam\")\r\n| project ThreatType, Count", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "teams threat type pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "029b4ecc-cd95-4385-a251-8ab194add8f4" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows de-duplicated Microsoft Teams messages split by whether the thread includes external participants.\r\nMessageEvents\r\n| summarize arg_max(Timestamp, *) by TeamsMessageId\r\n| extend Thread = iif(IsExternalThread == true, \"External Thread\", \"Internal Thread\")\r\n| summarize Count = count() by Thread", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "teams thread pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "1581f447-9b3e-4857-84b8-e78b5df65ac5" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "group - Teams Overview", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "283f36b2-5c54-4afe-9a87-33d4796bd5b7" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Teams Calls and Vishing (Voice Phishing)\r\n
\r\n\r\n**Voice phishing (vishing) over Microsoft Teams is the fastest-growing collaboration threat of 2026. Attackers impersonate IT help desk or support and call users directly, often after a chat lure, to talk them into granting remote access or entering credentials. Because a target must be online to answer, malicious calls cluster in working hours. This section surfaces Teams call activity, when calls happen, and callers using support or brand-impersonation identities.**

*Interim data source: Teams call activity is currently read from Microsoft Defender for Cloud Apps call telemetry (CloudAppEvents). It will move to the dedicated CallActivityEvents table once that table is available to stream into Microsoft Sentinel.*

**Recommended action:** Treat unsolicited help desk or support calls as suspicious. Confirm any request through a known internal channel, and never grant remote access such as Quick Assist on the strength of an inbound Teams call. Restrict inbound calls and chat from unmanaged and consumer tenants." + }, + "customWidth": "100", + "name": "teams calls banner", + "id": "9815bdc9-9e10-4e84-9164-783092b4ccb0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Teams call and vishing headline metrics for the selected period, with per-interval sparklines. Interim source: Defender for Cloud Apps call telemetry (CloudAppEvents / CallParticipantDetail).\r\nlet gran = {Granularity};\r\nlet calls = materialize(CloudAppEvents | where ActionType == \"CallParticipantDetail\" | extend R = parse_json(RawEventData) | extend CallId = tostring(R.CallId), UId = tolower(tostring(R.UserId)));\r\nlet susp = calls | extend Local = tostring(split(UId, \"@\")[0]), Dom = tostring(split(UId, \"@\")[1]) | where Local matches regex @\"(?i)help ?desk|helpdesk|it ?support|service ?desk|sys ?admin|administrator|security|microsoft|google|apple|amazon|paypal|support|update|verif|account|password|mfa|maintenance\" or Dom endswith \".onmicrosoft.com\";\r\nlet reported = CloudAppEvents | where ActionType == \"CallReported\";\r\nunion\r\n(calls | summarize Count = dcount(CallId) | extend Details = \"Teams Calls\", Ord = 1, Trend = toscalar(calls | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(susp | summarize Count = dcount(UId) | extend Details = \"Impersonation-style Callers\", Ord = 2, Trend = toscalar(susp | make-series S = count() default = 0 on Timestamp step gran | project S)),\r\n(reported | summarize Count = count() | extend Details = \"Reported Suspicious Calls\", Ord = 3, Trend = toscalar(reported | make-series S = count() default = 0 on Timestamp step gran | project S))\r\n| sort by Ord asc\r\n| project Details, Count, Trend", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "secondaryContent": { + "columnMatch": "Trend", + "formatter": 21 + }, + "showBorder": true, + "size": "auto" + }, + "showAnalytics": true + }, + "customWidth": "100", + "name": "teams calls kpi", + "id": "be8946d9-1eae-405c-b8df-cee2242cb44d" + }, + { + "type": 1, + "content": { + "json": "### Teams call activity over time
\r\n**Distinct Microsoft Teams calls per selected interval. A sudden rise, or calls outside normal working hours, can indicate a vishing campaign in progress.**" + }, + "customWidth": "100", + "name": "teams calls trend header", + "id": "1b49c98f-e5d9-457c-b058-a195e89eac0e" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Distinct Teams calls per interval (interim source: CloudAppEvents / CallParticipantDetail).\r\nCloudAppEvents\r\n| where ActionType == \"CallParticipantDetail\"\r\n| extend R = parse_json(RawEventData)\r\n| extend CallId = tostring(R.CallId)\r\n| summarize ['Teams Calls'] = dcount(CallId) by Timestamp = bin(Timestamp, {Granularity})\r\n| sort by Timestamp asc", + "size": 0, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "xAxis": "Timestamp", + "seriesLabelSettings": [ + { + "seriesName": "Teams Calls", + "color": "blueDark" + } + ] + }, + "showAnalytics": true + }, + "customWidth": "100", + "name": "teams calls trend", + "id": "7538b3ca-b96d-421a-9cdc-69b8aef4b185" + }, + { + "type": 1, + "content": { + "json": "### When calls happen (hour of day, UTC)
\r\n**Microsoft Teams calls by the hour of day they started (UTC), listed 00:00 through 23:00. The bar length is the number of calls that started in that hour across the selected period. Vishing calls cluster in working hours because the target must be online to answer, with the heaviest malicious-call activity between 14:00 and 20:00 UTC, Monday to Friday, according to Microsoft Threat Intelligence. Use this to baseline normal call timing and spot unusual off-hours spikes.**" + }, + "customWidth": "100", + "name": "teams calls hour header", + "id": "6bc095e9-fe0d-4f6f-81bd-f3374d758229" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Teams calls by start hour of day (UTC), all 24 hours 00:00..23:00 in order (interim source: CloudAppEvents / CallParticipantDetail).\r\nlet data = CloudAppEvents\r\n| where ActionType == \"CallParticipantDetail\"\r\n| extend R = parse_json(RawEventData)\r\n| extend JoinTime = todatetime(R.JoinTime), CallId = tostring(R.CallId)\r\n| where isnotempty(JoinTime) and isnotempty(CallId)\r\n| summarize CallStart = min(JoinTime) by CallId\r\n| extend HourUTC = hourofday(CallStart)\r\n| summarize Calls = count() by HourUTC;\r\nrange HourUTC from 0 to 23 step 1\r\n| join kind=leftouter (data) on HourUTC\r\n| extend Calls = coalesce(Calls, 0)\r\n| extend HourLabel = strcat(iif(HourUTC < 10, strcat(\"0\", tostring(HourUTC)), tostring(HourUTC)), \":00\")\r\n| order by HourUTC asc\r\n| project ['Hour of Day (UTC)'] = HourLabel, ['Teams Calls'] = Calls", + "size": 0, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Teams Calls", + "formatter": 3, + "formatOptions": { + "palette": "blueDark", + "customColumnWidthSetting": "360px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + }, + "showAnalytics": true + }, + "customWidth": "100", + "name": "teams calls hour", + "id": "c36a9909-5570-4fe7-8efc-1b9b4745713a" + }, + { + "type": 1, + "content": { + "json": "### Suspicious callers (support and helpdesk impersonation)
\r\n**Teams call participants whose display name or address looks like IT support, help desk, or a well-known brand (for example \"Microsoft IT support\", \"Help Desk\", \"Office 365 Support\"), or who dial in from a throwaway `.onmicrosoft.com` tenant. Origin shows whether the caller is external, an external throwaway tenant, or inside your own tenant. External and throwaway-tenant callers are the primary vishing risk; own-tenant matches are frequently a legitimate internal help desk and should be confirmed rather than assumed malicious.**

**Recommended action:** Prioritise External and `.onmicrosoft` callers, confirm none are legitimate, and warn the users they called. Genuine IT support does not cold-call staff over Teams to request remote access." + }, + "customWidth": "100", + "name": "teams calls susp header", + "id": "aa420b5f-efd2-4da5-ab41-192031f62ed1" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Suspicious Teams callers by impersonation-style DISPLAY NAME or address (Attendees[].DisplayName / UPN), with Origin from the org's own accepted (EmailEvents inbound) domains - no tenant-id anchor. Interim source: CloudAppEvents / CallParticipantDetail.\r\nlet suspRegex = @\"(?i)help ?desk|helpdesk|it ?support|service ?desk|sys ?admin|administrator|security|microsoft|google|apple|amazon|paypal|support|update|verif|account|password|mfa|maintenance\";\r\nlet ownDomains = toscalar(EmailEvents | where EmailDirection == \"Inbound\" | extend RD = tolower(tostring(split(RecipientEmailAddress, \"@\")[1])) | where isnotempty(RD) | summarize make_set(RD, 200));\r\nlet calls = CloudAppEvents\r\n| where ActionType == \"CallParticipantDetail\"\r\n| extend R = parse_json(RawEventData)\r\n| extend CallId = tostring(R.CallId), JoinTime = todatetime(R.JoinTime), Attendees = R.Attendees\r\n| where isnotempty(CallId);\r\nlet callAtt = calls | summarize Attendees = take_any(Attendees), JoinTime = min(JoinTime) by CallId;\r\ncallAtt\r\n| mv-expand Att = Attendees\r\n| extend Caller = tolower(tostring(Att.UPN)), CallerName = tostring(Att.DisplayName)\r\n| extend CallerDom = tostring(split(Caller, \"@\")[1])\r\n| where isnotempty(Caller)\r\n| extend SuspName = CallerName matches regex suspRegex or Caller matches regex suspRegex\r\n| where SuspName or CallerDom endswith \".onmicrosoft.com\"\r\n| extend Origin = case(CallerDom endswith \".onmicrosoft.com\", \"External (.onmicrosoft throwaway)\", set_has_element(ownDomains, CallerDom), \"Own tenant\", \"External\")\r\n| summarize CallsPlaced = dcount(CallId), FirstSeen = min(JoinTime), LastSeen = max(JoinTime) by CallerName, Caller, Origin\r\n| extend OriginRank = case(Origin == \"External (.onmicrosoft throwaway)\", 0, Origin == \"External\", 1, 2)\r\n| sort by OriginRank asc, CallsPlaced desc\r\n| take 10\r\n| project ['Caller Display Name'] = CallerName, ['Caller Address'] = Caller, ['Origin'] = Origin, ['Calls Placed'] = CallsPlaced, ['First Seen'] = FirstSeen, ['Last Seen'] = LastSeen", + "size": 0, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Calls Placed", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + }, + "showAnalytics": true + }, + "customWidth": "100", + "name": "teams calls susp table", + "id": "d1c4df7b-db07-4c4c-bc71-dfd8623cd704" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "group - Teams Calls and Vishing", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "1d133411-9b5c-4ede-8502-68b3b02262e4" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Teams Impersonation & Identity Deception\r\n
\r\n\r\nMicrosoft Defender for Office 365 flags Teams messages where a sender impersonates a brand, a specific person, or a trusted domain. Impersonation is the entry point for most Teams social-engineering: attackers pose as IT, executives, or Microsoft to build trust before delivering a malicious link or request. These visuals expose who is being impersonated, who is being targeted, and the infrastructure (display names, look-alike domains, and URLs) behind the campaigns so you can hunt IOCs and coach at-risk users.

**Recommended action:** Treat the impersonated display names and look-alike domains below as IOCs to hunt, and prioritize the Microsoft Defender alert *Microsoft Teams chat initiated by a suspicious external user*. Teach users that a Teams display name is not proof of identity: verify the real sender domain, and confirm any help desk, executive, or Microsoft support request through a known internal channel before acting." + }, + "name": "teams imp banner", + "id": "7ff04ff3-9f2d-4a49-8383-2b542d78fe9b" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let imp = CloudAppEvents\r\n| where ActionType == \"TeamsImpersonationDetected\"\r\n| extend RD = parse_json(RawEventData)\r\n| extend ImpersonationType = tostring(RD.ImpersonationType),\r\n FakeDisplayName = tostring(RD.Sender.DisplayName),\r\n FakeSenderAddress = tostring(RD.Sender.UPN),\r\n ChatThreadId = tostring(RD.ChatThreadId),\r\n TargetUser = tostring(RD.UserId)\r\n| extend FakeSenderDomain = tostring(split(FakeSenderAddress, \"@\")[1]);\r\nunion\r\n(imp | summarize Count=count() | extend Details=\"Impersonation Detections\", Ord=1),\r\n(imp | summarize Count=dcount(FakeSenderAddress) | extend Details=\"Distinct Fake Senders\", Ord=2),\r\n(imp | summarize Count=dcount(TargetUser) | extend Details=\"Targeted Users\", Ord=3),\r\n(imp | summarize Count=dcount(ImpersonationType) | extend Details=\"Impersonation Types\", Ord=4)\r\n| sort by Ord asc | project Count, Details", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full" + } + }, + "customWidth": "100", + "name": "teams imp tiles", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "e37f94d5-9bcc-432e-aa66-25831603c228" + }, + { + "type": 1, + "content": { + "json": "### Impersonation over time, by type
\r\n\r\n**Trend of Brand, User, and Domain impersonation detections. A spike in a single type often marks the start of a targeted campaign.**" + }, + "customWidth": "100", + "name": "teams imp trend header", + "id": "09907f5b-5c20-4a7e-86d3-c89153c4df98" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let imp = CloudAppEvents\r\n| where ActionType == \"TeamsImpersonationDetected\"\r\n| extend RD = parse_json(RawEventData)\r\n| extend ImpersonationType = tostring(RD.ImpersonationType),\r\n FakeDisplayName = tostring(RD.Sender.DisplayName),\r\n FakeSenderAddress = tostring(RD.Sender.UPN),\r\n ChatThreadId = tostring(RD.ChatThreadId),\r\n TargetUser = tostring(RD.UserId)\r\n| extend FakeSenderDomain = tostring(split(FakeSenderAddress, \"@\")[1]);\r\nimp | summarize Count=count() by ImpersonationType, Timestamp=bin(Timestamp, {Granularity}) | sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "xAxis": "Timestamp" + } + }, + "customWidth": "100", + "name": "teams imp trend", + "id": "757204b1-e900-4217-a2ff-2224a033fdcc" + }, + { + "type": 1, + "content": { + "json": "### Suspicious external senders (impersonation and throwaway tenants)
\r\n**External Microsoft Teams senders flagged as likely impersonation: throwaway `.onmicrosoft.com` tenants and/or help desk, IT support, security, admin, or account/update-themed display names. Attackers rotate through many such identities (for example numbered `ithelpdesk@...` addresses) from newly-created or consumer tenants to pose as internal support, frequently before the Defender impersonation detector assigns a verdict. This heuristic complements that detector.**

**Recommended action:** Review high threat-rate senders, block the sending domains, and remind users that genuine IT support does not cold-contact them from an external tenant; verify any such request through a known internal channel." + }, + "customWidth": "100", + "name": "teams susp senders header", + "id": "5df4af86-49e9-4fc7-b6ad-76d3ef3f7da6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//External Teams senders flagged as likely impersonation: throwaway .onmicrosoft.com tenants and/or help desk / IT / admin / update-themed display names, ranked by messages carrying a threat.\r\nMessageEvents\r\n| where IsExternalThread == true\r\n| extend SenderDomain = tolower(tostring(split(SenderEmailAddress, \"@\")[1]))\r\n| extend IsOnMicrosoft = SenderDomain endswith \".onmicrosoft.com\"\r\n| extend SuspName = SenderDisplayName matches regex @\"(?i)help ?desk|helpdesk|it ?support|service ?desk|it team|administrator|sys ?admin|security|microsoft|maintenance|support|update|verif|account|password|mfa\"\r\n| where IsOnMicrosoft or SuspName\r\n| summarize TeamsMessages = count(), ThreatMessages = countif(isnotempty(ThreatTypes)), FirstSeen = min(Timestamp), LastSeen = max(Timestamp) by SenderDisplayName, SenderEmailAddress, SenderDomain, IsOnMicrosoft, SuspName\r\n| extend WhyFlagged = case(IsOnMicrosoft and SuspName, \"Throwaway .onmicrosoft tenant + helpdesk-style name\", IsOnMicrosoft, \"Throwaway .onmicrosoft tenant\", \"Helpdesk / IT-style display name\")\r\n| extend ThreatPct = round(todouble(ThreatMessages) * 100 / TeamsMessages, 1)\r\n| project ['Sender Display Name']=SenderDisplayName, ['Sender Address']=SenderEmailAddress, ['Why Flagged']=WhyFlagged, ['Teams Messages']=TeamsMessages, ['Threat Messages']=ThreatMessages, ['Threat %']=ThreatPct, ['First Seen']=FirstSeen, ['Last Seen']=LastSeen\r\n| sort by ['Threat Messages'] desc, ['Teams Messages'] desc\r\n| take 10", + "size": 0, + "title": "", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Teams Messages", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Threat Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Threat %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 100 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + }, + "showAnalytics": true + }, + "customWidth": "100", + "name": "teams susp senders table", + "id": "dd1d79d8-f591-4aae-bd44-6ad23a3e0ae4" + }, + { + "type": 1, + "content": { + "json": "### Who is being targeted
\r\n\r\n**Internal users receiving the most impersonation attempts. Concentrated targeting of a few users is a strong signal of a deliberate campaign - prioritize these users for security awareness training.**" + }, + "customWidth": "100", + "name": "teams imp targets header", + "id": "43112ad1-ebc9-42fb-9ebd-0dbaa862ed45" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let imp = CloudAppEvents\r\n| where ActionType == \"TeamsImpersonationDetected\"\r\n| extend RD = parse_json(RawEventData)\r\n| extend ImpersonationType = tostring(RD.ImpersonationType),\r\n FakeDisplayName = tostring(RD.Sender.DisplayName),\r\n FakeSenderAddress = tostring(RD.Sender.UPN),\r\n ChatThreadId = tostring(RD.ChatThreadId),\r\n TargetUser = tostring(RD.UserId)\r\n| extend FakeSenderDomain = tostring(split(FakeSenderAddress, \"@\")[1]);\r\nimp | summarize Detections=count(), ['Distinct Fake Senders']=dcount(FakeSenderAddress), Types=make_set(ImpersonationType,3), ['Last Seen']=max(Timestamp) by ['Targeted User']=TargetUser | top 10 by Detections", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true + } + }, + "customWidth": "100", + "name": "teams imp targets", + "id": "cc4b3f98-bfcb-4741-9abb-9ff099eb946f" + }, + { + "type": 1, + "content": { + "json": "### Impersonating senders
\r\n\r\n**The identities behind the impersonation, grouped by fake display name, sender domain, and type. Attackers rotate through many sending addresses under a single display name - Distinct Sender Addresses exposes that rotation, and a high count is itself a strong bulk-campaign signal. Use First/Last Seen to scope the campaign window.**" + }, + "customWidth": "100", + "name": "teams imp senders header", + "id": "99859796-7b69-42e7-a27a-541e0ba86cb2" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the identities behind Teams impersonation, grouped by the fake display name, sender domain, and impersonation type. Attackers rotate through many sending addresses under one display name, so Distinct Sender Addresses reveals bulk campaigns that per-address ranking would hide.\r\nlet imp = CloudAppEvents\r\n| where ActionType == \"TeamsImpersonationDetected\"\r\n| extend RD = parse_json(RawEventData)\r\n| extend ImpersonationType = tostring(RD.ImpersonationType),\r\n FakeDisplayName = tostring(RD.Sender.DisplayName),\r\n FakeSenderAddress = tostring(RD.Sender.UPN),\r\n TargetUser = tostring(RD.UserId)\r\n| extend FakeSenderDomain = tostring(split(FakeSenderAddress, \"@\")[1]);\r\nimp\r\n| summarize Detections=count(), SenderAddresses=dcount(FakeSenderAddress), Targets=dcount(TargetUser), FirstSeen=min(Timestamp), LastSeen=max(Timestamp) by FakeDisplayName, FakeSenderDomain, ImpersonationType\r\n| top 10 by Detections\r\n| project ['Fake Display Name']=FakeDisplayName, ['Sender Domain']=FakeSenderDomain, ['Impersonation Type']=ImpersonationType, ['Distinct Sender Addresses']=SenderAddresses, Detections, ['Targeted Users']=Targets, ['First Seen']=FirstSeen, ['Last Seen']=LastSeen", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Distinct Sender Addresses", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "name": "teams imp senders", + "id": "209439a0-5be3-4e41-abe9-695552730dc8" + }, + { + "type": 1, + "content": { + "json": "### Display names abused
\r\n\r\n**The identities attackers pretend to be (for example \"IT HelpDesk\", \"Microsoft Support\"). These are the trust anchors of the social-engineering lure.**" + }, + "customWidth": "100", + "name": "teams imp names header", + "id": "e645578b-7a52-4d38-9d83-f5c500bbfe1a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let imp = CloudAppEvents\r\n| where ActionType == \"TeamsImpersonationDetected\"\r\n| extend RD = parse_json(RawEventData)\r\n| extend ImpersonationType = tostring(RD.ImpersonationType),\r\n FakeDisplayName = tostring(RD.Sender.DisplayName),\r\n FakeSenderAddress = tostring(RD.Sender.UPN),\r\n ChatThreadId = tostring(RD.ChatThreadId),\r\n TargetUser = tostring(RD.UserId)\r\n| extend FakeSenderDomain = tostring(split(FakeSenderAddress, \"@\")[1]);\r\nimp | summarize Detections=count(), ['Targeted Users']=dcount(TargetUser), ['Distinct Senders']=dcount(FakeSenderAddress) by ['Fake Display Name']=FakeDisplayName | top 10 by Detections", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Distinct Senders", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "name": "teams imp names", + "id": "d723d72b-4e7c-431b-ae7b-980879c8bd75" + }, + { + "type": 1, + "content": { + "json": "### Look-alike sender domains
\r\n\r\n**Sending domains used for impersonation - watch for typosquats (for example rnicrosoft.com for m→rn). Add confirmed domains to your Tenant Allow/Block List.**" + }, + "customWidth": "100", + "name": "teams imp domains header", + "id": "98040a5a-bbd5-4c95-b976-5630ce48b282" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "let imp = CloudAppEvents\r\n| where ActionType == \"TeamsImpersonationDetected\"\r\n| extend RD = parse_json(RawEventData)\r\n| extend ImpersonationType = tostring(RD.ImpersonationType),\r\n FakeDisplayName = tostring(RD.Sender.DisplayName),\r\n FakeSenderAddress = tostring(RD.Sender.UPN),\r\n ChatThreadId = tostring(RD.ChatThreadId),\r\n TargetUser = tostring(RD.UserId)\r\n| extend FakeSenderDomain = tostring(split(FakeSenderAddress, \"@\")[1]);\r\nimp | summarize Detections=count(), ['Targeted Users']=dcount(TargetUser), ['Display Names Used']=dcount(FakeDisplayName) by ['Sender Domain']=FakeSenderDomain | top 10 by Detections", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Display Names Used", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "name": "teams imp domains", + "id": "94b9fa45-c889-46a7-8b80-92e5d280ad3b" + }, + { + "type": 1, + "content": { + "json": "### URL IOCs from impersonation messages
\r\n\r\n**URL domains that appeared in messages sent by impersonating senders. Threat actors deliberately mix legitimate domains (for example microsoft.com or google.com) with their malicious ones to make the lure look trustworthy, so treat this as a review list - not a blocklist. Investigate the unfamiliar or look-alike domains and block only those you confirm malicious; never block a well-known legitimate domain from this list.**" + }, + "customWidth": "100", + "name": "teams imp ioc header", + "id": "d5f4886c-7c7e-4c6f-94ca-569cabda5ede" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists URL domains that appeared in messages sent by impersonating senders, with a breakdown of how many carried Malware, Phish, or Spam verdicts. Threat actors mix legitimate and malicious domains in a single lure, so review the unfamiliar or look-alike domains and block only confirmed-malicious ones.\r\nlet imp = CloudAppEvents\r\n| where ActionType == \"TeamsImpersonationDetected\"\r\n| extend RD = parse_json(RawEventData)\r\n| extend ChatThreadId = tostring(RD.ChatThreadId);\r\nlet impThreads = imp | distinct ChatThreadId;\r\nlet impMsgs = MessageEvents\r\n | where ThreadId in (impThreads)\r\n | summarize arg_max(Timestamp, *) by TeamsMessageId\r\n | project TeamsMessageId, ThreatTypes;\r\nMessageUrlInfo\r\n| where isnotempty(UrlDomain)\r\n| join kind=inner (impMsgs) on TeamsMessageId\r\n| summarize ['URL Count']=count(), Messages=dcount(TeamsMessageId), Malware=countif(ThreatTypes has \"Malware\"), Phish=countif(ThreatTypes has \"Phish\"), Spam=countif(ThreatTypes has \"Spam\") by ['URL Domain']=UrlDomain\r\n| top 10 by ['URL Count']", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "URL Count", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Messages", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Malware", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Phish", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Spam", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "name": "teams imp ioc", + "id": "958ac65c-d56d-4a80-ba83-2ab33e8b1e2e" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "group - Teams Impersonation", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "c49582db-6318-423f-b806-91cbeb625ea2" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Malicious URLs and Link Warnings in Teams\r\n
\r\n\r\nTracks URLs shared through Microsoft Teams, messages that triggered a Microsoft Defender for Office 365 URL safety-tip warning, and the outcome of Teams URL clicks (allowed versus blocked) captured in UrlClickEvents.

**Recommended action:** Enable Safe Links for Microsoft Teams so links are checked at click time, and prioritize *User clicked a malicious link in Teams chat* alerts for investigation. Treat a blocked click as an attempted compromise: check whether the user went on to share credentials or run a file, and reset credentials where warranted." + }, + "name": "teams url banner", + "id": "e3ec4d65-8d1f-4303-bd8f-eb1ae521da41" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query surfaces Microsoft Teams URL-sharing and link-warning metrics for the selected period. URL-warning messages carry the Microsoft Defender for Office 365 URL safety tip.\r\nlet msgs = materialize(MessageEvents | summarize arg_max(Timestamp, *) by TeamsMessageId);\r\nunion\r\n(msgs | where SafetyTip == \"URLMessageWarning\" | summarize Count = count() | extend Details = \"Messages with URL Warning\", Ord = 1),\r\n(MessageUrlInfo | summarize Count = count() | extend Details = \"URLs Shared in Messages\", Ord = 2),\r\n(MessageUrlInfo | summarize Count = dcount(TeamsMessageId) | extend Details = \"Messages Containing URLs\", Ord = 3),\r\n(MessageUrlInfo | summarize Count = dcount(UrlDomain) | extend Details = \"Distinct URL Domains\", Ord = 4)\r\n| sort by Ord asc\r\n| project Count, Details", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full" + } + }, + "customWidth": "100", + "name": "teams url tiles", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b71382c7-c0f7-4f9d-9d21-e0a8bf9504ff" + }, + { + "type": 1, + "content": { + "json": "### Teams URL click outcomes over time
\r\n\r\n**Allowed versus blocked Microsoft Teams URL clicks (per selected interval) from UrlClickEvents where the click happened in the Teams workload.**" + }, + "customWidth": "66", + "name": "teams click trend header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "30818e0d-6c4b-4868-896a-ac48cb3cef86" + }, + { + "type": 1, + "content": { + "json": "### Click outcomes
\r\n\r\n**Distribution of Microsoft Teams URL click actions by type.**" + }, + "customWidth": "33", + "name": "teams click pie header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "5a882138-2241-4527-80b8-9983c5807050" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises Microsoft Teams URL click outcomes over time (allowed vs blocked) using the UrlClickEvents workload filter, summarizing the data per selected interval.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(UrlClickEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(UrlClickEvents | summarize max(Timestamp));\r\nlet agg = materialize(UrlClickEvents\r\n| where Workload == \"Teams\"\r\n| summarize ClickAllowed = countif(ActionType has \"ClickAllowed\"), ClickBlocked = countif(ActionType has \"ClickBlocked\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ClickAllowed = coalesce(ClickAllowed, 0), ClickBlocked = coalesce(ClickBlocked, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "xAxis": "Timestamp" + } + }, + "customWidth": "66", + "name": "teams click trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "7a2f5559-1e3e-412a-addf-c3bf6be98502" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows Microsoft Teams URL click outcomes by action type for the selected period.\r\nUrlClickEvents\r\n| where Workload == \"Teams\"\r\n| where isnotempty(ActionType)\r\n| summarize Count = count() by ActionType", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "33", + "name": "teams click pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "889c6bb3-438b-4575-84f2-084c1b5fd1f4" + }, + { + "type": 1, + "content": { + "json": "### Top domains shared in Teams messages
\r\n\r\n**The 10 most-shared URL domains in Microsoft Teams messages, with the number of messages each appeared in.**" + }, + "customWidth": "100", + "name": "teams top domains header", + "id": "dcb8c87c-087e-4d69-b7b7-0329296293ff" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the top 10 URL domains shared in Microsoft Teams messages by volume for the selected period.\r\nMessageUrlInfo\r\n| where isnotempty(UrlDomain)\r\n| summarize UrlCount = count(), Messages = dcount(TeamsMessageId) by UrlDomain\r\n| top 10 by UrlCount\r\n| project ['URL Domain']=UrlDomain, ['URLs Shared']=UrlCount, ['Messages']=Messages", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "URLs Shared", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "teams top domains table", + "id": "7561adb0-1fbe-41ce-a924-a27bcd4c5c12" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "group - Teams Malicious URLs", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "6d47c309-be9e-4b21-940e-7c7b282e5dc2" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Targeted Users & Risky Senders\r\n
\r\n\r\nIdentifies who is most targeted in Microsoft Teams, and profiles the external senders and domains behind risky messages - URL safety-tip warnings, first-contact senders, threat-carrying domains, and low-reputation link infrastructure - so you can spot anomalous senders before they succeed.

**Recommended action:** Prioritize the most-targeted users for phishing-resistant MFA and awareness coaching, and treat first-contact external senders and low-reputation domains as IOCs. Restrict inbound chat from unmanaged and consumer tenants, and allowlist only trusted external domains so unsolicited outsiders cannot start a conversation." + }, + "name": "teams risky banner", + "id": "0aa13d73-2e13-487c-a7c4-d90464a554d4" + }, + { + "type": 1, + "content": { + "json": "### Top targeted users (messages with threats)
\r\n\r\n**The 10 users receiving the most Microsoft Teams messages that contained a threat, expanded from each message recipient list.**" + }, + "customWidth": "100", + "name": "teams targeted header", + "id": "827dc0f6-2bb2-49b9-acf8-d7b400238594" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the top 10 users receiving Microsoft Teams messages that contained a threat, expanded from the message recipient list, with each user's total Teams messages received and the share that carried a threat. Messages are de-duplicated to the latest record per message.\r\nlet expanded = MessageEvents\r\n | summarize arg_max(Timestamp, *) by TeamsMessageId\r\n | mv-expand rd = parse_json(RecipientDetails)\r\n | extend Recipient = tostring(rd.RecipientSmtpAddress)\r\n | where isnotempty(Recipient);\r\nlet totals = expanded | summarize TotalMessages = count() by Recipient;\r\nexpanded\r\n| where isnotempty(ThreatTypes)\r\n| summarize ThreatMessages = count() by Recipient\r\n| join kind=leftouter (totals) on Recipient\r\n| extend ThreatPct = round(100.0 * ThreatMessages / TotalMessages, 1)\r\n| top 10 by ThreatMessages\r\n| project ['Recipient']=Recipient, ['Threat Messages']=ThreatMessages, ['Total Messages']=TotalMessages, ['Threat %']=ThreatPct", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Threat Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "teams targeted users table", + "id": "79481d1b-617e-46df-b555-9f7240932dd0" + }, + { + "type": 1, + "content": { + "json": "### Top senders of URL-warning messages
\r\n\r\n**Senders whose Microsoft Teams messages most often triggered a URL safety-tip warning.**" + }, + "customWidth": "50", + "name": "teams warn senders header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "ef71d7dd-4442-4992-977d-d550aad4533c" + }, + { + "type": 1, + "content": { + "json": "### Top domains in URL-warning messages
\r\n\r\n**URL domains most frequently present in Microsoft Teams messages that triggered a URL safety-tip warning.**" + }, + "customWidth": "50", + "name": "teams warn domains header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "6f41a4ba-f832-4947-ad27-cd6b8015bd63" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the top 10 senders whose Microsoft Teams messages triggered a URL safety-tip warning for the selected period, with each sender's total Teams messages and the share that carried a warning. Messages are de-duplicated to the latest record per message.\r\nlet dedup = MessageEvents | summarize arg_max(Timestamp, *) by TeamsMessageId;\r\nlet totals = dedup | summarize TotalMessages = count() by SenderEmailAddress;\r\ndedup\r\n| where SafetyTip == \"URLMessageWarning\"\r\n| summarize WarningMessages = count() by SenderEmailAddress\r\n| join kind=leftouter (totals) on SenderEmailAddress\r\n| extend WarningPct = round(100.0 * WarningMessages / TotalMessages, 1)\r\n| top 10 by WarningMessages\r\n| project ['Sender']=SenderEmailAddress, ['Warning Messages']=WarningMessages, ['Total Messages']=TotalMessages, ['Warning %']=WarningPct", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Warning Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "teams warn senders table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "3fa023af-79e3-407f-ac20-b0aa6e3ba511" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the top 10 URL domains appearing in Microsoft Teams messages that triggered a URL safety-tip warning, with the domain's total message appearances and the share that carried a warning.\r\nlet warned = MessageEvents | where SafetyTip == \"URLMessageWarning\" | distinct TeamsMessageId;\r\nlet totals = MessageUrlInfo | where isnotempty(UrlDomain) | summarize TotalMessages = dcount(TeamsMessageId) by UrlDomain;\r\nMessageUrlInfo\r\n| where TeamsMessageId in (warned)\r\n| summarize WarningMessages = dcount(TeamsMessageId) by UrlDomain\r\n| join kind=leftouter (totals) on UrlDomain\r\n| extend WarningPct = round(100.0 * WarningMessages / TotalMessages, 1)\r\n| top 10 by WarningMessages\r\n| project ['URL Domain']=UrlDomain, ['Warning Messages']=WarningMessages, ['Total Messages']=TotalMessages, ['Warning %']=WarningPct", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Warning Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "teams warn domains table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "68811015-1383-48ad-86da-4f8f9d39e4c4" + }, + { + "type": 1, + "content": { + "json": "### First-contact external senders
\r\n\r\n**External Microsoft Teams senders ordered by when they were first seen in the period (most recent first). Note: some flows tag internal-domain senders as external - to hide your own tenant domains, edit the query and uncomment the ExcludeDomains filter.**" + }, + "customWidth": "100", + "name": "teams fc senders header", + "id": "0f131ff3-d6b2-4187-b86c-ca3493594b54" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists external Microsoft Teams senders by the date they were first seen in the selected period, surfacing recent first-contact senders. Messages are de-duplicated to the latest record per message. In tenants with longer history this highlights genuinely new senders.\r\n// TIP: IsExternalThread may still surface senders from your own accepted domains. To hide them,\r\n// uncomment the ExcludeDomains line below (add your tenant domains) and the matching where-clause.\r\n//let ExcludeDomains = dynamic([\"contoso.com\",\"contoso.com\"]);\r\nMessageEvents\r\n| summarize arg_max(Timestamp, *) by TeamsMessageId\r\n| where IsExternalThread == true\r\n//| where tostring(split(SenderEmailAddress, \"@\")[1]) !in~ (ExcludeDomains)\r\n| summarize FirstSeen = min(Timestamp), Messages = count(), ThreatMessages = countif(isnotempty(ThreatTypes)) by SenderEmailAddress\r\n| top 10 by FirstSeen desc\r\n| project ['Sender']=SenderEmailAddress, ['First Seen']=FirstSeen, ['Messages']=Messages, ['Threat Messages']=ThreatMessages", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Threat Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true, + "sortBy": [ + { + "itemKey": "Threat Messages", + "sortOrder": 2 + } + ] + } + }, + "customWidth": "100", + "name": "teams fc senders table", + "id": "4e10a78d-8858-4dbb-9db0-e7b7d7e7636c" + }, + { + "type": 1, + "content": { + "json": "### External sender-domain risk
\r\n\r\n**External sending domains ranked by threat volume, with the mix of conversation types (1:1 chat, group chat, channel), threat breakdown, threat rate, count of messages carrying low-reputation URLs (domains on commonly-abused TLDs such as .xyz, .top, .click, .shop, .zip), and first/last-seen. A domain that is new in the period, skews toward 1:1 chats, or shows a high threat rate is anomalous and warrants review. Note: to exclude your own tenant domains, edit the query and uncomment the ExcludeDomains filter.**" + }, + "customWidth": "100", + "name": "teams anomaly header", + "id": "a91295db-8192-4828-93c5-408436e4b0e1" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query ranks external sender domains in Microsoft Teams by threat volume for the selected period, split by conversation type (1:1 chat, group chat, channel), with threat-type breakdown, threat rate, and a count of messages carrying low-reputation URL TLDs. Messages are de-duplicated to the latest record per message. New, 1:1-skewed, or high-threat-rate domains are the anomalies to review.\r\n// TIP: IsExternalThread may still surface your own accepted domains. To hide them, uncomment the\r\n// ExcludeDomains line below (add your tenant domains) and the matching where-clause.\r\n//let ExcludeDomains = dynamic([\"contoso.com\",\"contoso.com\"]);\r\nlet suspTlds = dynamic([\"top\",\"xyz\",\"click\",\"link\",\"shop\",\"online\",\"site\",\"live\",\"icu\",\"cyou\",\"sbs\",\"rest\",\"quest\",\"cfd\",\"bond\",\"buzz\",\"fun\",\"space\",\"monster\",\"work\",\"tk\",\"ml\",\"ga\",\"cf\",\"gq\",\"dev\",\"app\",\"zip\",\"mov\",\"info\",\"win\",\"loan\",\"men\",\"stream\",\"country\"]);\r\nlet suspUrlMsgs = MessageUrlInfo\r\n | where isnotempty(UrlDomain)\r\n | extend Tld = tostring(split(UrlDomain, \".\")[-1])\r\n | where Tld in (suspTlds)\r\n | distinct TeamsMessageId;\r\nMessageEvents\r\n| summarize arg_max(Timestamp, *) by TeamsMessageId\r\n| where IsExternalThread == true\r\n| extend SenderDomain = tostring(split(SenderEmailAddress, \"@\")[1])\r\n| where isnotempty(SenderDomain)\r\n//| where SenderDomain !in~ (ExcludeDomains)\r\n| extend ConvType = case(isnotempty(GroupId), \"Channel\", array_length(todynamic(RecipientDetails)) > 1, \"Group chat\", \"1:1 chat\")\r\n| extend HasSuspUrl = TeamsMessageId in (suspUrlMsgs)\r\n| summarize Messages=count(), Senders=dcount(SenderEmailAddress), OneToOne=countif(ConvType==\"1:1 chat\"), GroupChat=countif(ConvType==\"Group chat\"), ChannelMsgs=countif(ConvType==\"Channel\"), ThreatMessages=countif(isnotempty(ThreatTypes)), Malware=countif(ThreatTypes has \"Malware\"), Phish=countif(ThreatTypes has \"Phish\"), Spam=countif(ThreatTypes has \"Spam\"), SuspUrlMsgs=countif(HasSuspUrl), FirstSeen=min(Timestamp), LastSeen=max(Timestamp) by SenderDomain\r\n| where ThreatMessages > 0\r\n| extend ThreatRatePct = round(100.0 * ThreatMessages / Messages, 1)\r\n| top 10 by ThreatMessages desc\r\n| project ['Sender Domain']=SenderDomain, Messages, Senders, ['1:1']=OneToOne, ['Group']=GroupChat, ['Channel']=ChannelMsgs, ['Threat Msgs']=ThreatMessages, Malware, Phish, Spam, ['Threat Rate %']=ThreatRatePct, ['Low-Rep URL Msgs']=SuspUrlMsgs, ['First Seen']=FirstSeen, ['Last Seen']=LastSeen", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Threat Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "teams anomaly table", + "id": "bcd6746d-8298-495d-9d6c-2fadc6cba569" + }, + { + "type": 1, + "content": { + "json": "### Suspicious new senders (no threat verdict yet)
\r\n\r\n**External sending domains with no threat verdict yet, but that are either sending low-reputation-URL messages or showing unusual volume. These slip past threat filters - watch for new domains skewing toward 1:1 chats, an early social-engineering signal. Note: to exclude your own tenant domains, edit the query and uncomment the ExcludeDomains filter.**" + }, + "customWidth": "100", + "name": "teams newdom header", + "id": "9e3844f4-befc-4b76-a8cd-ca53fdf51d41" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query surfaces external sender domains in Microsoft Teams that have NO threat verdict yet but are sending messages with low-reputation URL TLDs or unusual volume, split by conversation type. These are early-warning senders that have not tripped a detection. Messages are de-duplicated to the latest record per message.\r\n// TIP: IsExternalThread may still surface your own accepted domains. To hide them, uncomment the\r\n// ExcludeDomains line below (add your tenant domains) and the matching where-clause.\r\n//let ExcludeDomains = dynamic([\"contoso.com\",\"contoso.com\"]);\r\nlet suspTlds = dynamic([\"top\",\"xyz\",\"click\",\"link\",\"shop\",\"online\",\"site\",\"live\",\"icu\",\"cyou\",\"sbs\",\"rest\",\"quest\",\"cfd\",\"bond\",\"buzz\",\"fun\",\"space\",\"monster\",\"work\",\"tk\",\"ml\",\"ga\",\"cf\",\"gq\",\"dev\",\"app\",\"zip\",\"mov\",\"info\",\"win\",\"loan\",\"men\",\"stream\",\"country\"]);\r\nlet suspUrlMsgs = MessageUrlInfo\r\n | where isnotempty(UrlDomain)\r\n | extend Tld = tostring(split(UrlDomain, \".\")[-1])\r\n | where Tld in (suspTlds)\r\n | distinct TeamsMessageId;\r\nMessageEvents\r\n| summarize arg_max(Timestamp, *) by TeamsMessageId\r\n| where IsExternalThread == true\r\n| extend SenderDomain = tostring(split(SenderEmailAddress, \"@\")[1])\r\n| where isnotempty(SenderDomain)\r\n//| where SenderDomain !in~ (ExcludeDomains)\r\n| extend ConvType = case(isnotempty(GroupId), \"Channel\", array_length(todynamic(RecipientDetails)) > 1, \"Group chat\", \"1:1 chat\")\r\n| extend HasSuspUrl = TeamsMessageId in (suspUrlMsgs)\r\n| summarize Messages=count(), Senders=dcount(SenderEmailAddress), OneToOne=countif(ConvType==\"1:1 chat\"), GroupChat=countif(ConvType==\"Group chat\"), ChannelMsgs=countif(ConvType==\"Channel\"), ThreatMessages=countif(isnotempty(ThreatTypes)), SuspUrlMsgs=countif(HasSuspUrl), FirstSeen=min(Timestamp), LastSeen=max(Timestamp) by SenderDomain\r\n| where ThreatMessages == 0\r\n| where SuspUrlMsgs > 0 or Messages >= 5\r\n| order by SuspUrlMsgs desc, Messages desc\r\n| take 10\r\n| project ['Sender Domain']=SenderDomain, Messages, Senders, ['1:1']=OneToOne, ['Group']=GroupChat, ['Channel']=ChannelMsgs, ['Low-Rep URL Msgs']=SuspUrlMsgs, ['First Seen']=FirstSeen, ['Last Seen']=LastSeen", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true + } + }, + "customWidth": "100", + "name": "teams newdom table", + "id": "8036a5b7-b5b3-4af4-912f-bb092bb01b89" + }, + { + "type": 1, + "content": { + "json": "### Low-reputation link domains in Teams (IOC radar)
\r\n\r\n**URL domains shared in Teams that use TLDs commonly abused for phishing and malware (for example .xyz, .top, .click, .zip, .shop). Ranked by message reach, with first/last-seen. Review these domains as potential indicators - .zip and .mov are especially deceptive because links read like file names.**" + }, + "customWidth": "100", + "name": "teams tld header", + "id": "d48921f4-233c-4e0f-a97b-83e1bcaed399" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists URL domains shared in Microsoft Teams that use low-reputation TLDs commonly abused for phishing and malware, ranked by the number of Teams messages they appeared in, with first- and last-seen. Treat high-reach or newly-seen domains as candidate indicators of compromise.\r\nlet suspTlds = dynamic([\"top\",\"xyz\",\"click\",\"link\",\"shop\",\"online\",\"site\",\"live\",\"icu\",\"cyou\",\"sbs\",\"rest\",\"quest\",\"cfd\",\"bond\",\"buzz\",\"fun\",\"space\",\"monster\",\"work\",\"tk\",\"ml\",\"ga\",\"cf\",\"gq\",\"dev\",\"app\",\"zip\",\"mov\",\"info\",\"win\",\"loan\",\"men\",\"stream\",\"country\"]);\r\nMessageUrlInfo\r\n| where isnotempty(UrlDomain)\r\n| extend Tld = tostring(split(UrlDomain, \".\")[-1])\r\n| where Tld in (suspTlds)\r\n| summarize Messages=dcount(TeamsMessageId), FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated) by ['URL Domain']=UrlDomain, ['TLD']=Tld\r\n| top 10 by Messages desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Messages", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "100", + "name": "teams tld table", + "id": "30d5588e-010c-474a-9c53-74b73dcc9676" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "group - Teams Targeted Users & Risky Senders", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "6fef737b-cb4e-4a51-9ced-bf11754a6b33" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Teams File Protection\r\n
\r\n\r\nMicrosoft Defender for Office 365 scans files shared in Microsoft Teams. These visuals show files scanned versus malware detected, and list the malicious files found.

**Recommended action:** Investigate each malicious file below and confirm it was quarantined and removed from the SharePoint or OneDrive location backing the chat. Enable Safe Attachments for SharePoint, OneDrive, and Microsoft Teams, and use attack surface reduction rules to block executable content delivered through collaboration." + }, + "name": "teams file banner", + "id": "2f01c905-dd65-4a13-9f67-c70402b2c175" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query summarizes Microsoft Teams file protection by Microsoft Defender for Office 365 - files scanned, files with malware detected, and files scanned with no detection - for the selected period.\r\nlet base = FileMaliciousContentInfo | where Workload == \"MicrosoftTeams\";\r\nunion\r\n(base | summarize Count = count() | extend Details = \"Teams Files Scanned\", Ord = 1),\r\n(base | where isnotempty(ThreatTypes) | summarize Count = count() | extend Details = \"Files with Malware Detected\", Ord = 2),\r\n(base | where isempty(ThreatTypes) | summarize Count = count() | extend Details = \"Files Scanned - No Detection\", Ord = 3)\r\n| sort by Ord asc\r\n| project Count, Details", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full" + } + }, + "customWidth": "100", + "name": "teams file tiles", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "9f555c51-1680-47ef-94d4-b1f8cf9dce3b" + }, + { + "type": 1, + "content": { + "json": "### Malicious files shared in Teams
\r\n\r\n**Files shared in Microsoft Teams that were detected with malware, with owner and file details.**" + }, + "customWidth": "100", + "name": "teams file table header", + "id": "4cd3274e-0c61-4722-83b7-1fccf8a94a57" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists Microsoft Teams files detected with malware by Microsoft Defender for Office 365 for the selected period.\r\nFileMaliciousContentInfo\r\n| where Workload == \"MicrosoftTeams\"\r\n| where isnotempty(ThreatTypes)\r\n| top 10 by Timestamp desc\r\n| project ['Time']=Timestamp, ['File Name']=FileName, ['Threat Type']=tostring(ThreatTypes), ['Threat Names']=ThreatNames, ['File Location']=FolderPath, ['File Owner']=FileOwnerUpn, SHA256", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true + } + }, + "customWidth": "100", + "name": "teams file table", + "id": "135e0e7d-7110-40ee-a377-1a5992b2ef9d" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "group - Teams File Protection", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "8ecc1bae-4a06-4b1c-8952-59fb434b7cbc" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Post-Delivery ZAP Insights (Teams)\r\n
\r\n\r\nZero-hour auto purge (ZAP) removes malicious Microsoft Teams messages after delivery. These visuals summarize ZAP volume, type, result, and the senders whose messages were most often removed.

**Recommended action:** Confirm zero-hour auto purge is enabled for Microsoft Teams so newly-weaponized messages are pulled after delivery. Investigate senders with repeated ZAP removals as likely compromised or malicious accounts and block or restrict them. A rising ZAP trend can signal an active campaign that slipped past delivery-time filtering." + }, + "name": "teams zap banner", + "id": "136cfb4e-d2a5-4db0-9771-6b6380011ba0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query summarizes Microsoft Teams post-delivery ZAP (zero-hour auto purge) activity by Microsoft Defender for Office 365 for the selected period.\r\nlet zap = materialize(MessagePostDeliveryEvents);\r\nunion\r\n(zap | summarize Count = count() | extend Details = \"Total ZAP Actions\", Ord = 1),\r\n(zap | where ActionType == \"Malware ZAP\" | summarize Count = count() | extend Details = \"Malware ZAP\", Ord = 2),\r\n(zap | where ActionType == \"Phish ZAP\" | summarize Count = count() | extend Details = \"Phish ZAP\", Ord = 3),\r\n(zap | where ActionResult == \"Success\" | summarize Count = count() | extend Details = \"Successful Actions\", Ord = 4),\r\n(zap | where ActionResult == \"Failed\" | summarize Count = count() | extend Details = \"Failed Actions\", Ord = 5),\r\n(zap | where Action == \"Moved to quarantine\" | summarize Count = count() | extend Details = \"Moved to Quarantine\", Ord = 6)\r\n| sort by Ord asc\r\n| project Count, Details", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full" + } + }, + "customWidth": "100", + "name": "teams zap tiles", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "06980411-5e6b-4aa4-a746-351cd2b12dae" + }, + { + "type": 1, + "content": { + "json": "### ZAP actions over time
\r\n\r\n**Microsoft Teams post-delivery ZAP actions (per selected interval) split by Malware ZAP and Phish ZAP.**" + }, + "customWidth": "66", + "name": "teams zap trend header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "7fc1cfcd-3a9f-45b1-9f39-3820fce23c03" + }, + { + "type": 1, + "content": { + "json": "### ZAP by action type
\r\n\r\n**Distribution of Microsoft Teams post-delivery ZAP actions by type.**" + }, + "customWidth": "33", + "name": "teams zap pie header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "9bc0d0a3-876a-49d7-9046-31764511ca38" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises Microsoft Teams post-delivery ZAP actions over time by ZAP type, summarizing the data per selected interval.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(MessagePostDeliveryEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(MessagePostDeliveryEvents | summarize max(Timestamp));\r\nlet agg = materialize(MessagePostDeliveryEvents\r\n| summarize MalwareZAP = countif(ActionType == \"Malware ZAP\"), PhishZAP = countif(ActionType == \"Phish ZAP\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, MalwareZAP = coalesce(MalwareZAP, 0), PhishZAP = coalesce(PhishZAP, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "xAxis": "Timestamp" + } + }, + "customWidth": "66", + "name": "teams zap trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "c78a509e-324f-4a8c-b2e7-bce3e0d20667" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows Microsoft Teams post-delivery ZAP actions by type for the selected period.\r\nMessagePostDeliveryEvents\r\n| summarize Count = count() by ActionType", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "33", + "name": "teams zap pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "cfc94695-fb02-4b6c-a223-f79f7b947379" + }, + { + "type": 1, + "content": { + "json": "### Top senders whose messages were removed by ZAP
\r\n\r\n**Senders whose Microsoft Teams messages were most often removed by post-delivery ZAP.**" + }, + "customWidth": "100", + "name": "teams zap senders header", + "id": "f8677ffe-007a-41ca-81de-1ae5dd19d06a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the top 10 senders whose Microsoft Teams messages were removed by post-delivery ZAP for the selected period.\r\nMessagePostDeliveryEvents\r\n| where isnotempty(SenderEmailAddress)\r\n| summarize ZapActions = count(), MalwareZAP = countif(ActionType == \"Malware ZAP\"), PhishZAP = countif(ActionType == \"Phish ZAP\") by SenderEmailAddress\r\n| top 10 by ZapActions\r\n| project ['Sender']=SenderEmailAddress, ['ZAP Actions']=ZapActions, ['Malware ZAP']=MalwareZAP, ['Phish ZAP']=PhishZAP", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "ZAP Actions", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "teams zap senders table", + "id": "50c9a883-6442-40dc-b84f-57adfbb46a38" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "group - Teams ZAP", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "f5cc2425-e5ae-4520-9a97-2e4c2c447dcd" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Teams Message and Call Submissions\r\n
\r\n\r\nMicrosoft Teams messages and calls reported by users, and messages submitted by admins, for review by Microsoft. Sourced from the submission records in CloudAppEvents.

**Recommended action:** Encourage users to report suspicious Teams messages and calls so Microsoft can tune protection, and triage admin submissions promptly. A cluster of reports naming the same sender, display name, or call identity is an early signal of a targeted campaign: pivot those identities into the impersonation and risky-sender views above to scope it." + }, + "name": "teams sub banner", + "id": "54cbfb29-2626-4b65-8cb5-a42ff4b41e63" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query summarizes Microsoft Teams message and call submissions reported to Microsoft for the selected period, split by user and admin reports. Only completed submissions are counted (submission triage/timeout lifecycle records are excluded).\r\nlet sub = materialize(CloudAppEvents\r\n| extend RD = parse_json(RawEventData)\r\n| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)\r\n| where RecordType == \"29\" and SubmissionContentType in (\"ChatMessage\", \"TeamsCall\"));\r\nunion\r\n(sub | where SubmissionContentType == \"ChatMessage\" and ActionType == \"UserSubmission\" | summarize Count = count() | extend Details = \"Messages Reported by Users\", Ord = 1),\r\n(sub | where SubmissionContentType == \"TeamsCall\" and ActionType == \"UserSubmission\" | summarize Count = count() | extend Details = \"Calls Reported by Users\", Ord = 2),\r\n(sub | where SubmissionContentType == \"ChatMessage\" and ActionType == \"AdminSubmission\" | summarize Count = count() | extend Details = \"Messages Submitted by Admins\", Ord = 3)\r\n| sort by Ord asc\r\n| project Count, Details", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "secondaryContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "showBorder": true, + "size": "full" + } + }, + "customWidth": "100", + "name": "teams sub tiles", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "419ed645-ebc1-4df1-b9f0-c744403ab494" + }, + { + "type": 1, + "content": { + "json": "### Submissions over time
\r\n\r\n**Microsoft Teams user and admin submissions (per selected interval).**" + }, + "customWidth": "66", + "name": "teams sub trend header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "6a795b0a-82e2-427a-8ac0-abfb5bb5e447" + }, + { + "type": 1, + "content": { + "json": "### Submission mix
\r\n\r\n**Microsoft Teams submissions split by content type (message or call) and reporter (user or admin).**" + }, + "customWidth": "33", + "name": "teams sub pie header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "1f4c55f8-7290-4b6f-b02a-e3134568b9ff" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises Microsoft Teams message and call submissions over time, summarizing the data per selected interval. Only completed submissions are counted (submission triage/timeout lifecycle records are excluded).\r\nlet gran = {Granularity};\r\nlet sub = materialize(CloudAppEvents\r\n| extend RD = parse_json(RawEventData)\r\n| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)\r\n| where RecordType == \"29\" and SubmissionContentType in (\"ChatMessage\", \"TeamsCall\"));\r\nlet minTime = toscalar(sub | summarize min(Timestamp));\r\nlet maxTime = toscalar(sub | summarize max(Timestamp));\r\nlet agg = materialize(sub\r\n| summarize UserReports = countif(ActionType == \"UserSubmission\"), AdminReports = countif(ActionType == \"AdminSubmission\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, UserReports = coalesce(UserReports, 0), AdminReports = coalesce(AdminReports, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "xAxis": "Timestamp" + } + }, + "customWidth": "66", + "name": "teams sub trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "7dcb03da-de96-4388-90a4-0a3f3ca98dc6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows the mix of Microsoft Teams submissions by content type and reporter for the selected period. Only completed user submissions (chat and call) and admin submissions (chat) are counted; submission triage/timeout lifecycle records are excluded.\r\nCloudAppEvents\r\n| extend RD = parse_json(RawEventData)\r\n| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)\r\n| where RecordType == \"29\"\r\n| where (SubmissionContentType == \"ChatMessage\" and ActionType == \"UserSubmission\")\r\n or (SubmissionContentType == \"TeamsCall\" and ActionType == \"UserSubmission\")\r\n or (SubmissionContentType == \"ChatMessage\" and ActionType == \"AdminSubmission\")\r\n| extend Reporter = iif(ActionType == \"AdminSubmission\", \"Admin\", \"User\")\r\n| summarize Count = count() by SubmissionType = strcat(SubmissionContentType, \" (\", Reporter, \")\")", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "33", + "name": "teams sub pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "84a0141e-51de-4423-acb0-3c4342a49bf2" + }, + { + "type": 1, + "content": { + "json": "### False Negative (FN) User Submissions by submission State
\r\n\r\n**Microsoft Teams messages reported by users as missed detections, broken down by submission state (for example Rescaned, Graded). Tracks the processing status of user reports.**" + }, + "customWidth": "50", + "name": "teams sub state header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "1b2bdffd-69b0-41b0-bdda-b242b7faaec0" + }, + { + "type": 1, + "content": { + "json": "### False Negative (FN) User Submissions by Triage Verdict
\r\n\r\n**Microsoft Teams user submissions grouped by the verdict assigned during grading (for example Phishing, NotSpam, Spam). Shows how reported messages were graded and highlights detection gaps.**" + }, + "customWidth": "50", + "name": "teams sub verdict header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "bdb97e09-44d2-41ad-a99f-931e4a8169cc" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows Microsoft Teams user (false negative) message submissions by submission state (for example Rescaned, Graded), to track processing status.\r\nCloudAppEvents\r\n| extend RD = parse_json(RawEventData)\r\n| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)\r\n| where RecordType == \"29\" and SubmissionContentType == \"ChatMessage\"| where ActionType startswith \"UserSubmission\"\r\n| extend SubmissionState = tostring(RD.SubmissionState)\r\n| summarize Count = count() by tostring(SubmissionState)", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "teams sub state pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "139ce840-5fc2-44d1-9872-91b37a74f0e7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows Microsoft Teams user (false negative) message submissions by the triage verdict assigned during grading (for example Phishing, NotSpam, Spam).\r\nCloudAppEvents\r\n| extend RD = parse_json(RawEventData)\r\n| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)\r\n| where RecordType == \"29\" and SubmissionContentType == \"ChatMessage\"| where ActionType startswith \"UserSubmission\"\r\n| extend TriageVerdict = tostring(parse_json(tostring(RD.GradingResult)).TriageVerdict)\r\n| where isnotempty(TriageVerdict)\r\n| summarize Count = count() by TriageVerdict", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "teams sub verdict pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "538ce4a3-a1ff-4b8d-a466-2173edbb2cd7" + }, + { + "type": 1, + "content": { + "json": "### Top 10 P2 sender domains in FN User Submissions
\r\n\r\n**The sender domains most often reported by users as missed Microsoft Teams threats. High-volume domains are candidate sources of malicious messaging.**" + }, + "customWidth": "50", + "name": "teams sub domains header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "9b8db0c7-2bf2-4077-ae20-60146001bf23" + }, + { + "type": 1, + "content": { + "json": "### Top 10 individual P2 senders in FN User Submissions
\r\n\r\n**The individual senders most often reported by users as missed Microsoft Teams threats.**" + }, + "customWidth": "50", + "name": "teams sub senders header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "ffbe90ab-129c-47fa-9dac-50cab528ad55" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the top 10 P2 (envelope) sender domains of Microsoft Teams messages reported by users as false negatives (missed detections).\r\nCloudAppEvents\r\n| extend RD = parse_json(RawEventData)\r\n| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)\r\n| where RecordType == \"29\" and SubmissionContentType == \"ChatMessage\"| where ActionType startswith \"UserSubmission\"\r\n| extend P2SenderDomain = tostring(RD.P2SenderDomain)\r\n| where isnotempty(P2SenderDomain)\r\n| summarize Submissions = count() by ['P2 Sender Domain']=P2SenderDomain\r\n| top 10 by Submissions", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Submissions", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "50", + "name": "teams sub domains table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b18192fb-26a8-4bd1-9b07-7aeab496eae3" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the top 10 individual P2 (envelope) senders of Microsoft Teams messages reported by users as false negatives (missed detections).\r\nCloudAppEvents\r\n| extend RD = parse_json(RawEventData)\r\n| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)\r\n| where RecordType == \"29\" and SubmissionContentType == \"ChatMessage\"| where ActionType startswith \"UserSubmission\"\r\n| extend P2Sender = tostring(RD.P2Sender)\r\n| where isnotempty(P2Sender)\r\n| summarize Submissions = count() by ['P2 Sender']=P2Sender\r\n| top 10 by Submissions", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Submissions", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "customWidth": "50", + "name": "teams sub senders table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "7ead0a01-2b56-4225-b625-554b09350013" + }, + { + "type": 1, + "content": { + "json": "### Top 10 users performing the most FN User Submissions
\r\n\r\n**The users who report the most Microsoft Teams messages as missed detections - useful for recognising engaged reporters and spotting over-reporting.**" + }, + "customWidth": "50", + "name": "teams sub topusers header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "fb893cdd-d6d3-431a-a1d2-87652571a10d" + }, + { + "type": 1, + "content": { + "json": "### Top 10 admins performing the most FN Admin Submissions
\r\n\r\n**The admins who submit the most Microsoft Teams messages as missed detections.**" + }, + "customWidth": "50", + "name": "teams sub topadmins header", + "styleSettings": { + "margin": "10px", + "padding": "0px" + }, + "id": "14fca69b-e152-4a5d-bd2c-020c34c2226a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the top 10 users who reported the most Microsoft Teams messages as false negatives (missed detections), with each submitter's email (from the submission record) to disambiguate users with similar names.\r\nCloudAppEvents\r\n| extend RD = parse_json(RawEventData)\r\n| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)\r\n| where RecordType == \"29\" and SubmissionContentType == \"ChatMessage\"| where ActionType startswith \"UserSubmission\"\r\n| extend Submitter = tostring(RD.SubmitterDisplayName), SubmitterEmail = tostring(RD.UserId)\r\n| where isnotempty(Submitter) and SubmitterEmail has \"@\"\r\n| summarize Submissions = count() by ['Submitter']=Submitter, ['Email']=SubmitterEmail\r\n| top 10 by Submissions", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true + } + }, + "customWidth": "50", + "name": "teams sub topusers table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "a171a35b-35b0-46ce-a916-052a54101126" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the top 10 admins who submitted the most Microsoft Teams messages as false negatives (missed detections). The admin's own email is not present in the submission record (that would require the Identity table), so the Submitter ID (object GUID) is shown to disambiguate admins with similar names.\r\nCloudAppEvents\r\n| extend RD = parse_json(RawEventData)\r\n| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)\r\n| where RecordType == \"29\" and SubmissionContentType == \"ChatMessage\"| where ActionType startswith \"AdminSubmission\"\r\n| extend Submitter = tostring(RD.SubmitterDisplayName), SubmitterId = tostring(RD.SubmitterId)\r\n| where isnotempty(Submitter)\r\n| summarize Submissions = count() by ['Admin']=Submitter, ['Submitter ID']=SubmitterId\r\n| top 10 by Submissions", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true + } + }, + "customWidth": "50", + "name": "teams sub topadmins table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "8bf37c2b-067a-4341-a192-2aa45699c3f7" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "group - Teams Submissions", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "eeea53a4-69d9-426e-bf9f-1789cd73bfed" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Recent Threat Detail\r\n
\r\n\r\nThe most recent Microsoft Teams phishing and malware messages, de-duplicated to the latest record per message, for investigation." + }, + "name": "teams detail banner", + "id": "4bdd917c-721f-450b-b455-45cbd5f59cc5" + }, + { + "type": 1, + "content": { + "json": "### Last 10 Teams phishing messages
\r\n\r\n**Most recent Microsoft Teams messages detected as phishing, with sender, delivery action, safety tip, team/group, and subject. TeamsMessageId is included to pivot to Advanced Hunting.**" + }, + "customWidth": "100", + "name": "teams detail phish header", + "id": "9bcf96c1-a958-4515-b171-10ec2f3ba660" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the 10 most recent Microsoft Teams messages detected as phishing by Microsoft Defender for Office 365, de-duplicated to the latest record per message. TeamsMessageId is included so analysts can pivot to Advanced Hunting.\r\nMessageEvents\r\n| where ThreatTypes has \"Phish\"\r\n| summarize arg_max(Timestamp, *) by TeamsMessageId\r\n| top 10 by Timestamp desc\r\n| project ['Time']=Timestamp, ['Sender']=SenderEmailAddress, ['Threat Types']=ThreatTypes, ['Delivery Action']=DeliveryAction, ['Safety Tip']=SafetyTip, ['Team / Group']=GroupName, ['External Thread']=IsExternalThread, ['Subject']=MessageSubject, TeamsMessageId", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true + } + }, + "customWidth": "100", + "name": "teams detail phish table", + "id": "3675d08f-1165-4f47-a633-e432cf96e3d5" + }, + { + "type": 1, + "content": { + "json": "### Last 10 Teams malware messages
\r\n\r\n**Most recent Microsoft Teams messages detected as malware, with sender, delivery action, safety tip, team/group, and subject. TeamsMessageId is included to pivot to Advanced Hunting.**" + }, + "customWidth": "100", + "name": "teams detail mal header", + "id": "6b9d66d2-8d89-47b0-a72a-5ee8623082dc" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists the 10 most recent Microsoft Teams messages detected as malware by Microsoft Defender for Office 365, de-duplicated to the latest record per message. TeamsMessageId is included so analysts can pivot to Advanced Hunting.\r\nMessageEvents\r\n| where ThreatTypes has \"Malware\"\r\n| summarize arg_max(Timestamp, *) by TeamsMessageId\r\n| top 10 by Timestamp desc\r\n| project ['Time']=Timestamp, ['Sender']=SenderEmailAddress, ['Threat Types']=ThreatTypes, ['Delivery Action']=DeliveryAction, ['Safety Tip']=SafetyTip, ['Team / Group']=GroupName, ['External Thread']=IsExternalThread, ['Subject']=MessageSubject, TeamsMessageId", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true + } + }, + "customWidth": "100", + "name": "teams detail mal table", + "id": "d6e76d0a-7eee-4c05-8e92-10f9622b5ab3" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "14" + }, + "name": "group - Teams Detail", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "1e9c879b-d6be-4d36-9068-b5438abf7dd2" + }, + { + "type": 1, + "content": { + "json": "# Top Attacked Users, Top Senders, and Automatic External Email Forwarding\r\n\r\n---\r\nThis tab provides insights into **Top attacked users, Top Senders** in inbound email messages and details about **automatic external email forwarding**." + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "6" + }, + "name": "text - 24 - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "f1a60054-44b1-432e-be7a-9d7d114ff5c7" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Top Attacked Users and Top Senders Insights\r\n
\r\n\r\nThis section provides key visuals that highlight top attacked users – individuals most frequently targeted by inbound email threats as detected by Microsoft Defender for Office 365. Offers insights into top email senders and sender domains across inbound email traffic, helping identify patterns and potential risk sources.

**Recommended action:** Apply the Strict preset to the most-attacked users and review the top sender domains as possible block-list candidates." + }, + "name": "text - 13 - Copy - Copy", + "id": "ff220902-30b8-4aef-9b79-14c913a1b2d2" + }, + { + "type": 1, + "content": { + "json": "### Top Attacked Users
\r\n\r\n**Displays the top 10 recipient email addresses that received inbound emails flagged as Spam, Phishing, or Malware. Helps identify high-risk users for targeted security awareness and policy enforcement.**" + }, + "name": "text - 13 - Copy - Copy - Copy", + "id": "58f34b9f-824d-4fcf-b2aa-d7d380aa08d5" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 users that are receiving Spam, Phishing or Malware emails\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\" and EmailDirection ==\"Inbound\"\r\n| extend MDO_detection = parse_json(DetectionMethods) \r\n| extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0])) \r\n| extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\") \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalEmailCount=count(),MalwareEmailCount = countif(FirstDetection == \"Malware\"),PhishEmailCount = countif(FirstDetection == \"Phish\"),SpamEmailCount = countif(FirstDetection == \"Spam\") by RecipientEmailAddress\r\n| extend ThreatEmailCount=(MalwareEmailCount+PhishEmailCount+SpamEmailCount)\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(ThreatEmailCount / todouble(TotalEmailCount) *100, 2))\r\n| top 15 by ThreatEmailCount\r\n| project ['Recipient']=RecipientEmailAddress, ['Total Emails']=TotalEmailCount, ['Threat Emails']=ThreatEmailCount, ['Malware']=MalwareEmailCount, ['Phish']=PhishEmailCount, ['Spam']=SpamEmailCount, ['Bad Traffic %']=Bad_Traffic_Percentage_Inbound", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Total Emails", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Threat Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Malware", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Phish", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Spam", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + }, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20 + } + } + ], + "filter": true, + "sortBy": [ + { + "itemKey": "$gen_bar_Threat Emails_2", + "sortOrder": 2 + } + ] + }, + "sortBy": [ + { + "itemKey": "$gen_bar_Threat Emails_2", + "sortOrder": 2 + } + ], + "chartSettings": { + "createOtherGroup": 10 + } + }, + "customWidth": "100", + "name": "query - 28", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "e9459e78-6b43-4ef2-9596-32169d95c610" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Senders of Inbound Emails
\r\n\r\n**Displays the top 10 sender email addresses from external sources delivering inbound emails. Helps identify high-volume external senders for monitoring and policy enforcement.**" + }, + "name": "text - 13 - Copy - Copy - Copy - Copy", + "id": "eb4590a7-57c7-4728-af62-3d798afe6f2d" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 senders by inbound email sending volume\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\" and EmailDirection ==\"Inbound\"\r\n| extend MDO_detection = parse_json(DetectionMethods) \r\n| extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0])) \r\n| extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\") \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalEmailCount=count(),MalwareEmailCount = countif(FirstDetection == \"Malware\"),PhishEmailCount = countif(FirstDetection == \"Phish\"),SpamEmailCount = countif(FirstDetection == \"Spam\") by SenderFromAddress\r\n| extend ThreatEmailCount=(MalwareEmailCount+PhishEmailCount+SpamEmailCount)\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(ThreatEmailCount / todouble(TotalEmailCount) *100, 2))\r\n| top 15 by TotalEmailCount\r\n| project ['Sender']=SenderFromAddress, ['Total Emails']=TotalEmailCount, ['Threat Emails']=ThreatEmailCount, ['Malware']=MalwareEmailCount, ['Phish']=PhishEmailCount, ['Spam']=SpamEmailCount, ['Bad Traffic %']=Bad_Traffic_Percentage_Inbound", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Total Emails", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Threat Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Malware", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Phish", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Spam", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + }, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20 + } + } + ], + "filter": true + }, + "chartSettings": { + "createOtherGroup": 10 + } + }, + "customWidth": "100", + "name": "query - 28 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "e4272979-1073-4c1e-9b1b-b971bc3efc33" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Sender Domains of Inbound Emails
\r\n\r\n**Displays the top 10 sender domains from external sources delivering inbound emails. Helps identify high-volume external sender domains for monitoring and policy enforcement.**" + }, + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy", + "id": "7ab63415-17ce-47f1-a614-e5e6edbe472e" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 senders by inbound email sending volume\r\nEmailEvents \r\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\" and EmailDirection ==\"Inbound\"\r\n| extend MDO_detection = parse_json(DetectionMethods) \r\n| extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0])) \r\n| extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\") \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalEmailCount=count(),MalwareEmailCount = countif(FirstDetection == \"Malware\"),PhishEmailCount = countif(FirstDetection == \"Phish\"),SpamEmailCount = countif(FirstDetection == \"Spam\") by SenderFromDomain\r\n| extend ThreatEmailCount=(MalwareEmailCount+PhishEmailCount+SpamEmailCount)\r\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(ThreatEmailCount / todouble(TotalEmailCount) *100, 2))\r\n| top 15 by TotalEmailCount\r\n| project ['Sender Domain']=SenderFromDomain, ['Total Emails']=TotalEmailCount, ['Threat Emails']=ThreatEmailCount, ['Malware']=MalwareEmailCount, ['Phish']=PhishEmailCount, ['Spam']=SpamEmailCount, ['Bad Traffic %']=Bad_Traffic_Percentage_Inbound", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Total Emails", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Threat Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Malware", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Phish", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Spam", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Bad Traffic %", + "formatter": 4, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + }, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20 + } + } + ], + "filter": true + }, + "chartSettings": { + "createOtherGroup": 10 + } + }, + "customWidth": "100", + "name": "query - 28 - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b593da94-b735-4fe3-a82d-18c90156e506" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "6" + }, + "name": "group - 10-Top attacked users and top senders", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "3e41cc1a-166e-4094-bc66-7e26a918b2e9" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Automatic External Email Forwarding Insights\r\n
\r\n\r\n**Email forwarding can be useful, but can also pose a security risk due to the potential disclosure of information.**\r\n
\r\n\r\nUsers can configure [Inbox rules](https://support.microsoft.com/en-US/Outlook/mail/use-rules-to-automatically-forward-messages) in Outlook or set up [SMTP forwarding](https://support.microsoft.com/en-us/office/turn-on-automatic-forwarding-in-outlook-7f2670a1-7fff-4475-8a3c-5822d63b0c8e) to automatically forward messages to external recipients. You can control automatic external email forwarding from cloud mailboxes using [Outbound spam policies](https://learn.microsoft.com/en-us/defender-office-365/outbound-spam-policies-external-email-forwarding) in Microsoft Defender for Office 365. \r\n**Attackers might exploit this capability to compromise your organization or its partners.**

**Recommended action:** Investigate external auto-forwarding - it is a common data-exfiltration path. Consider disabling auto-forwarding via the outbound spam policy unless a business case is documented." + }, + "name": "text - 8", + "id": "b04d1590-98e3-4650-9172-33e75561e1e5" + }, + { + "type": 1, + "content": { + "json": "### Automatic Email Forwarding by Type
\r\n\r\n**Displays counts of outbound emails automatically forwarded to external addresses, grouped by forwarding type (e.g., SMTP forwarding, inbox rules). Helps identify forwarding behaviors that may pose data exfiltration risks.**" + }, + "customWidth": "50", + "name": "text - 13 - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "c7cb7917-eaf4-4a1e-989a-75f4b6182851" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Internal Users Forwarding Emails Externally
\r\n\r\n**Displays the top 10 internal user accounts that have automatically forwarded emails to external addresses (regardless of the forwarding type used). Helps identify potential data exfiltration risks and enforce forwarding policies.**" + }, + "customWidth": "50", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "5a5d5a8c-c195-45db-a878-e6ac908cc919" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises automatic email forwarding to external email addresses by forwarding type\r\nEmailEvents \r\n| where EmailDirection == \"Outbound\" and ForwardingInformation !=\"\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ForwardingType = tostring((parse_json(ForwardingInformation)).ForwardingType),ForwardingUser=tostring((parse_json(ForwardingInformation)).ForwardingUser)\r\n| summarize count() by ForwardingType\r\n| sort by count_ desc \r\n", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "chartSettings": { + "yAxis": [ + "count_" + ], + "createOtherGroup": 10 + } + }, + "customWidth": "50", + "name": "query - 30 - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "15094d98-add2-4b50-a0df-ee91fd34c6fb" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 internal senders who are automatically forwarding emails to external email addresses\r\nEmailEvents \r\n| where EmailDirection == \"Outbound\" and ForwardingInformation !=\"\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ForwardingType = tostring((parse_json(ForwardingInformation)).ForwardingType),ForwardingUser=tostring((parse_json(ForwardingInformation)).ForwardingUser)\r\n| summarize TotalForwardedMessages = count() by ForwardingUser\r\n| sort by TotalForwardedMessages desc \r\n| top 10 by TotalForwardedMessages\r\n| project ['Forwarding User']=ForwardingUser, ['Forwarded Messages']=TotalForwardedMessages\r\n\r\n", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Forwarded Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "chartSettings": { + "yAxis": [ + "TotalForwardedMessages" + ] + } + }, + "customWidth": "50", + "name": "query - 30 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "73d66038-2ea0-449d-9aeb-a1bd4b207d7f" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Internal Users Forwarding Emails Using Mailbox Rules
\r\n\r\n**Displays the top 10 internal user accounts that have automatically forwarded outbound emails to external addresses using Mailbox Rules. Helps identify potential data exfiltration risks and enforce forwarding restrictions.**" + }, + "customWidth": "100", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "9a7b5fc3-da23-4e95-87df-542a5e3f6320" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 internal senders who are automatically forwarding emails to external email addresses using Mailbox Rules\r\nEmailEvents \r\n| where EmailDirection == \"Outbound\" and ForwardingInformation !=\"\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ForwardingType = tostring((parse_json(ForwardingInformation)).ForwardingType),ForwardingUser=tostring((parse_json(ForwardingInformation)).ForwardingUser)\r\n| where ForwardingType ==\"MbxRule\"\r\n| summarize TotalForwardedMessages = count() by ForwardingUser\r\n| top 10 by TotalForwardedMessages desc\r\n| project ['Forwarding User']=ForwardingUser, ['Forwarded Messages']=TotalForwardedMessages", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Forwarded Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "chartSettings": { + "yAxis": [ + "TotalForwardedMessages" + ] + } + }, + "customWidth": "100", + "name": "query - 30 - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "f8d7b85d-944a-493f-a143-7e18277846c9" + }, + { + "type": 1, + "content": { + "json": "### Top 10 External domains Receiving Auto-Forwarded Emails (Mailbox Rules)
\r\n\r\n**Displays the top 10 external recipient email domains that received automatically forwarded emails from internal users via Mailbox Rules. Helps identify potential data exfiltration risks and enforce forwarding restrictions.**" + }, + "customWidth": "50", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "cda99a50-b7c4-4d95-ac61-7231080a3f5d" + }, + { + "type": 1, + "content": { + "json": "### Top 10 External Recipients Receiving Auto-Forwarded Emails (Mailbox Rules)
\r\n\r\n**Displays the top 10 external recipient email addresses that received automatically forwarded emails from internal users via Mailbox Rules. Helps identify potential data exfiltration risks and enforce forwarding restrictions.**" + }, + "customWidth": "50", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "72b01575-c33e-457c-98db-ea755c003bf0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 external domains who are recieving automatically forwarded emails using Mailbox Rules\r\nEmailEvents \r\n| where EmailDirection == \"Outbound\" and ForwardingInformation !=\"\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ForwardingType = tostring((parse_json(ForwardingInformation)).ForwardingType),ForwardingUser=tostring((parse_json(ForwardingInformation)).ForwardingUser),RecipientDomain = tostring(split(RecipientEmailAddress, \"@\")[1])\r\n| where ForwardingType ==\"MbxRule\"\r\n| summarize TotalForwardedMessages = count() by RecipientDomain\r\n| top 10 by TotalForwardedMessages desc\r\n| project ['Recipient Domain']=RecipientDomain, ['Forwarded Messages']=TotalForwardedMessages", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Forwarded Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "chartSettings": { + "yAxis": [ + "count_" + ], + "createOtherGroup": 10 + } + }, + "customWidth": "50", + "name": "query - 30 - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "823dec28-48b5-4be3-8e68-04301a952a62" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 external recipients who are recieving automatically forwarded emails using Mailbox Rules\r\nEmailEvents \r\n| where EmailDirection == \"Outbound\" and ForwardingInformation !=\"\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ForwardingType = tostring((parse_json(ForwardingInformation)).ForwardingType),ForwardingUser=tostring((parse_json(ForwardingInformation)).ForwardingUser)\r\n| where ForwardingType ==\"MbxRule\"\r\n| summarize TotalForwardedMessages = count() by RecipientEmailAddress\r\n| top 10 by TotalForwardedMessages desc\r\n| project ['Recipient']=RecipientEmailAddress, ['Forwarded Messages']=TotalForwardedMessages", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Forwarded Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "chartSettings": { + "yAxis": [ + "count_" + ], + "createOtherGroup": 10 + } + }, + "customWidth": "50", + "name": "query - 30 - Copy - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "14804990-bfc9-43b7-8c8d-95c2cf32ee56" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Internal Users Forwarding Emails via SMTP Forwarding
\r\n\r\n**Displays the top 10 internal user accounts that have automatically forwarded outbound emails to external addresses using SMTP Forwarding. Helps identify potential data exfiltration risks and enforce forwarding restrictions.**" + }, + "customWidth": "100", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "fa04b313-5756-4ff7-9ee8-ec61e6b382cc" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 internal senders who are automatically forwarding emails to external email addresses using SmtpForwarding\r\nEmailEvents \r\n| where EmailDirection == \"Outbound\" and ForwardingInformation !=\"\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ForwardingType = tostring((parse_json(ForwardingInformation)).ForwardingType),ForwardingUser=tostring((parse_json(ForwardingInformation)).ForwardingUser)\r\n| where ForwardingType ==\"SmtpForwarding\"\r\n| summarize count() by ForwardingUser\r\n| top 10 by count_ desc\r\n| project ['Forwarding User']=ForwardingUser, ['Forwarded Messages']=count_", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "chartSettings": { + "yAxis": [ + "count_" + ], + "createOtherGroup": 10 + }, + "gridSettings": { + "formatters": [ + { + "columnMatch": "Forwarded Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "query - 30 - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "bed8e717-4ea7-4f71-aaa7-b70a31f4dc88" + }, + { + "type": 1, + "content": { + "json": "### Top 10 External domains receiving Auto-Forwarded Emails (SMTP Forwarding)
\r\n\r\n**Displays the top 10 external recipient email domains that received automatically forwarded emails from internal users using SMTP Forwarding. Helps identify potential data exfiltration risks and enforce forwarding restrictions.**" + }, + "customWidth": "50", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "f76bc717-3cf8-4d8d-92fa-3f2024065f8f" + }, + { + "type": 1, + "content": { + "json": "### Top 10 External Recipients Receiving Auto-Forwarded Emails (SMTP Forwarding)
\r\n\r\n**Displays the top 10 external recipient email addresses that received automatically forwarded emails from internal users using SMTP Forwarding. Helps identify potential data exfiltration risks and enforce forwarding restrictions.**" + }, + "customWidth": "50", + "name": "text - 13 - Copy - Copy - Copy - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "2190c799-ab4f-4bd8-87e1-f9c5c224cca4" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 external recipients who are recieving automatically forwarded emails using SmtpForwarding\r\nEmailEvents \r\n| where EmailDirection == \"Outbound\" and ForwardingInformation !=\"\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ForwardingType = tostring((parse_json(ForwardingInformation)).ForwardingType),ForwardingUser=tostring((parse_json(ForwardingInformation)).ForwardingUser),RecipientDomain = tostring(split(RecipientEmailAddress, \"@\")[1])\r\n| where ForwardingType ==\"SmtpForwarding\"\r\n| summarize TotalForwardedMessages = count() by RecipientDomain\r\n| top 10 by TotalForwardedMessages desc\r\n| project ['Recipient Domain']=RecipientDomain, ['Forwarded Messages']=TotalForwardedMessages", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Forwarded Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "chartSettings": { + "yAxis": [ + "count_" + ], + "createOtherGroup": 10 + } + }, + "customWidth": "50", + "name": "query - 30 - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "c3be87b3-8ce8-40f2-ad92-0651bed71117" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// This query visualises the top 10 external recipients who are recieving automatically forwarded emails using SmtpForwarding\r\nEmailEvents \r\n| where EmailDirection == \"Outbound\" and ForwardingInformation !=\"\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ForwardingType = tostring((parse_json(ForwardingInformation)).ForwardingType),ForwardingUser=tostring((parse_json(ForwardingInformation)).ForwardingUser)\r\n| where ForwardingType ==\"SmtpForwarding\"\r\n| summarize TotalForwardedMessages = count() by RecipientEmailAddress\r\n| top 10 by TotalForwardedMessages desc\r\n| project ['Recipient']=RecipientEmailAddress, ['Forwarded Messages']=TotalForwardedMessages", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Forwarded Messages", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + }, + "chartSettings": { + "yAxis": [ + "count_" + ], + "createOtherGroup": 10 + } + }, + "customWidth": "50", + "name": "query - 30 - Copy - Copy - Copy - Copy - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "fb6b0113-f5bb-46a7-994b-92ebc3c7881d" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "6" + }, + "name": "group - 34 - Automatic email forwarding", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "02c91ebb-4f92-4843-a73b-6dea7a6ac2bd" + }, + { + "type": 1, + "content": { + "json": "# Email detection action overrides\r\n\r\n---\r\n\r\nThis tab provides insights into admin or end-user configured **detection overrides** where the message was detected as a threat by Microsoft Defender for Office 365, however an admin-configured policy or end-user setting overrode the detection action.[

Learn more

](https://learn.microsoft.com/en-us/defender-office-365/step-by-step-guides/understand-overrides-in-email-entity) " + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "7" + }, + "name": "text - 13 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "ae594968-00b9-40b8-b5dd-052a27440afb" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Admin configured Detection Overrides (Allow)\r\n
\r\n\r\nThis section consolidates key visuals that track emails subject to administrator policies (e.g., Transport Rules, Tenant Allow/Block List) with an \"Allow\" action, overriding Microsoft Defender for Office 365 detections (excluding SecOps Mailbox overrides).

**Recommended action:** Review Allow overrides that later carried threats and remove stale or overly broad allow entries - they weaken protection." + }, + "name": "text - AdminOverridesAllowHeader", + "id": "3d70a304-c590-4156-a6d4-da147fe106ab" + }, + { + "type": 1, + "content": { + "json": "### Admin Overrides (Allow) Trend\r\n**Displays the count (per {Granularity}) of emails where an administrator policy with an \"Allow\" action overrode detections (excluding SecOps Mailbox). Helps track the frequency of admin overrides over time.**" + }, + "name": "text - AdminOverridesAllowTrend", + "id": "a4ee104a-a0a1-4725-a60f-deedcc91af70" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails subject to an admin policy with action of allow independent of action taken, summarizing the data daily\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where isnotempty(OrgLevelPolicy) and OrgLevelPolicy!=\"SecOps Mailbox\" and OrgLevelAction == \"Allow\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalAdminOverrides = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['Admin Overrides'] = coalesce(TotalAdminOverrides, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "Admin Overrides", + "color": "blueDark" + } + ] + } + }, + "name": "query - 3", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "79928e9e-48ed-4d08-8ff7-c21fe027550e" + }, + { + "type": 1, + "content": { + "json": "### Total Emails by Admin Override type (Allow)\r\n**Summarizes the total count of emails subject to administrator policies with an \"Allow\" action, grouped by the type of override. Helps identify which policies are most frequently allowing emails.**" + }, + "customWidth": "50", + "name": "text - AdminOverridesAllowByType", + "id": "855fce09-2000-4d16-8521-8b4eeddfae00" + }, + { + "type": 1, + "content": { + "json": "### Admin Overrides (Allow) by Override Type and Threat Type\r\n**Details the count of emails allowed by administrator policies, categorized by the override type and the detected threat type. Helps assess the risk associated with allowed emails.**" + }, + "customWidth": "50", + "name": "text - AdminOverridesAllowByTypeAndThreat", + "id": "a2613078-b427-4b23-aca0-21989b1944db" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of emails subject to an admin policy with action of allow, independent of action taken, summarizing the data by type of override\r\nEmailEvents \r\n| where isnotempty(OrgLevelPolicy) and OrgLevelPolicy!=\"SecOps Mailbox\" and OrgLevelAction == \"Allow\" \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize count() by OrgLevelPolicy", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "query - 16", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b21a0329-8f52-45c2-81f2-6df65c134673" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails subject to an admin policy with action of allow, independent of action taken, summarizing the data by type of override and threats type found\r\nEmailEvents \r\n| where isnotempty(OrgLevelPolicy) and OrgLevelPolicy!=\"SecOps Mailbox\" and OrgLevelAction == \"Allow\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ThreatTypes = case(ThreatTypes has \"Malware\", \"Malware\", ThreatTypes has \"Phish\", \"Phish\", ThreatTypes has \"Spam\", \"Spam\", ThreatTypes)\r\n| summarize TotalEmails=count() by OrgLevelAction,OrgLevelPolicy,ThreatTypes\r\n| sort by TotalEmails\r\n| project ['Override Action']=OrgLevelAction, ['Override Policy']=OrgLevelPolicy, ['Threat Type']=ThreatTypes, ['Total Emails']=TotalEmails", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Total Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + } + }, + "customWidth": "50", + "name": "query - 2", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "0bf4cbe6-7c84-49d4-801c-d955762b5699" + }, + { + "type": 1, + "content": { + "json": "### SecOps Mailbox Overrides (Allow)\r\nThis section focuses on emails allowed specifically due to the SecOps Mailbox override policy, typically used for investigation and analysis.[

Learn more

](https://learn.microsoft.com/en-us/defender-office-365/advanced-delivery-policy-configure) " + }, + "name": "text - SecOpsOverridesHeader", + "id": "f582dc86-4c40-4cdd-ba0b-ec6ef8820a27" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of emails subject to the \r\nEmailEvents \r\n| where OrgLevelPolicy==\"SecOps Mailbox\" and OrgLevelAction == \"Allow\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize count() by OrgLevelPolicy", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "stat", + "statSettings": { + "valueAggregation": "None", + "colorSettings": { + "type": "static", + "mode": "background", + "heatmapPalette": "greenRed", + "thresholdsGrid": [] + }, + "iconSettings": { + "thresholdsGrid": [] + }, + "tagText": "", + "valueFontStyle": "auto", + "tagTextPosition": "bottom" + } + }, + "customWidth": "50", + "name": "query - 1", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "8ad2fea4-dcd0-454e-a4d4-b5275c86fd9b" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails delivered to the SecOps Mailbox by threat type\r\nEmailEvents \r\n| where isnotempty(OrgLevelPolicy) and OrgLevelPolicy==\"SecOps Mailbox\" and OrgLevelAction == \"Allow\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ThreatTypes = case(ThreatTypes has \"Malware\", \"Malware\", ThreatTypes has \"Phish\", \"Phish\", ThreatTypes has \"Spam\", \"Spam\", ThreatTypes)\r\n| summarize TotalEmails=count() by OrgLevelAction,OrgLevelPolicy,ThreatTypes\r\n| sort by TotalEmails\r\n| project ['Override Action']=OrgLevelAction, ['Override Policy']=OrgLevelPolicy, ['Threat Type']=ThreatTypes, ['Total Emails']=TotalEmails", + "size": 1, + "showAnalytics": true, + "title": " ", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Total Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + } + }, + "customWidth": "50", + "name": "query - 4", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "52c04df2-69b5-46e4-a000-7c6d212a132a" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "7" + }, + "name": "group - 15 - Admin Detection Overrides - Allow", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "9b9baf2f-fd5f-41b6-8368-b515f8de4fd4" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Admin configured Detection Overrides (Block)\r\n
\r\n\r\nThis section provides insights into email messages blocked by administrative policies (e.g. Tenant allow/block list, Antimalware policy file type block), overriding detection actions defined by Microsoft Defender for Office 365.

**Recommended action:** Confirm these blocks are still needed and consolidate them into the Tenant Allow/Block List where appropriate." + }, + "name": "text - AdminOverridesBlockHeader", + "id": "6157683b-cce7-4165-886f-0da73e25ce86" + }, + { + "type": 1, + "content": { + "json": "### Admin Overrides (Block) Trend\r\n**Displays the count (per {Granularity}) of emails where an administrator policy with a \"Block\" action overrode detections. Helps track the frequency of admin blocks over time.**" + }, + "name": "text - AdminOverridesBlockTrend", + "id": "699820b4-a984-45cc-ab2f-607c3c8569d4" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails subject to an admin policy with action of block, summarizing the data daily\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where isnotempty(OrgLevelPolicy) and OrgLevelAction == \"Block\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalAdminOverrides = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['Admin Overrides'] = coalesce(TotalAdminOverrides, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "Admin Overrides", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "name": "query - 5", + "styleSettings": { + "margin": "10", + "padding": "10" + }, + "id": "9ef5e7fb-843e-439b-b4f3-9b0bb149e74b" + }, + { + "type": 1, + "content": { + "json": "### Total Emails by Admin Override Type (Block)\r\n**Summarizes the total count of emails subject to administrator policies with a \"Block\" action, grouped by the type of override.**" + }, + "customWidth": "50", + "name": "text - AdminOverridesBlockByType", + "id": "5694a7c0-1ee5-40b4-ae2b-263d189c4b4e" + }, + { + "type": 1, + "content": { + "json": "### Admin Overrides (Block) by Override Type and Threat Type\r\n**Details the count of emails blocked by administrator policies, categorized by the override type and the detected threat type.**" + }, + "customWidth": "50", + "name": "text - AdminOverridesBlockByTypeAndThreat", + "id": "6e309742-37c0-4ad5-9b9a-63643059bfaf" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of emails subject to an admin policy with action of block, summarizing the data by type of override\r\nEmailEvents \r\n| where isnotempty(OrgLevelPolicy) and OrgLevelAction == \"Block\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize count() by OrgLevelPolicy", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "query - 6", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "eabc80ed-d0e9-43d2-ab13-a5af478f11c8" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails subject to an admin policy with action of block, summarizing the data by type of override and threats type found\r\nEmailEvents \r\n| where isnotempty(OrgLevelPolicy) and OrgLevelAction == \"Block\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ThreatTypes = case(ThreatTypes has \"Malware\", \"Malware\", ThreatTypes has \"Phish\", \"Phish\", ThreatTypes has \"Spam\", \"Spam\", ThreatTypes)\r\n| summarize TotalEmails=count() by OrgLevelAction,OrgLevelPolicy,ThreatTypes\r\n| sort by TotalEmails\r\n| project ['Override Action']=OrgLevelAction, ['Override Policy']=OrgLevelPolicy, ['Threat Type']=ThreatTypes, ['Total Emails']=TotalEmails", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Total Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + } + }, + "customWidth": "50", + "name": "query - 7", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "1661bfa6-d8fd-4387-a334-1bc027a3f6d1" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "7" + }, + "name": "group - 36-Admin Detection Overrides - Block", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "7d514e9a-f67f-45a6-ba1b-6492348cc18b" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
User configured Detection Overrides (Allow)\r\n
\r\n\r\nThis section consolidates key visuals that track email messages subject to user policies (e.g. [Safe Senders list defined in Outlook](https://learn.microsoft.com/en-us/defender-office-365/create-safe-sender-lists-in-office-365#use-outlook-safe-senders)) with an \"Allow\" action, overriding Microsoft Defender for Office 365 detections.

**Recommended action:** Educate users that safe-sender allows can bypass protection; review high-risk user allow entries." + }, + "name": "text - UserOverridesAllowHeader", + "id": "4d41c560-0e73-40c5-b610-33e9500e88c4" + }, + { + "type": 1, + "content": { + "json": "### User Overrides (Allow) Trend\r\n**Displays the count (per {Granularity}) of emails where a user policy with an \"Allow\" action overrode detections. Helps track the frequency of user overrides over time.**" + }, + "name": "text - UserOverridesAllowTrend", + "id": "9432efff-9f03-4d74-8781-02be8b2d07fa" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails subject to a user type policy with action of allow, summarizing the data daily\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where isnotempty(UserLevelPolicy) and UserLevelAction == \"Allow\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalUserOverrides = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['User Overrides'] = coalesce(TotalUserOverrides, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "User Overrides", + "color": "blueDark" + } + ] + } + }, + "name": "query - 3", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "02da1d33-e477-479d-bdd3-95ab1ad7c75c" + }, + { + "type": 1, + "content": { + "json": "### Total Emails by User Override Type (Allow)\r\n**Summarizes the total count of emails subject to user policies with an \"Allow\" action, grouped by the type of override.**" + }, + "customWidth": "50", + "name": "text - UserOverridesAllowByType", + "id": "006a2e87-b1b6-4cc3-a763-ceebaa86b340" + }, + { + "type": 1, + "content": { + "json": "### User Overrides (Allow) by Override Type and Threat Type\r\n**Details the count of emails allowed by user policies, categorized by the override type and the detected threat type. Helps assess the risk associated with user-allowed emails.**" + }, + "customWidth": "50", + "name": "text - UserOverridesAllowByTypeAndThreat", + "id": "7c34bb4b-46c0-4054-9596-3dfd010bb036" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of emails subject to a user type policy with action of allow, summarizing the data by type of override\r\nEmailEvents \r\n| where isnotempty(UserLevelPolicy) and UserLevelAction == \"Allow\" \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize count() by UserLevelPolicy", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "query - 16", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "d1d9021d-e6bf-47b1-bdd2-438a212d2767" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails subject to a user type policy with action of allow, summarizing the data by type of override and threats type found\r\nEmailEvents \r\n| where isnotempty(UserLevelPolicy) and UserLevelAction == \"Allow\" \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ThreatTypes = case(ThreatTypes has \"Malware\", \"Malware\", ThreatTypes has \"Phish\", \"Phish\", ThreatTypes has \"Spam\", \"Spam\", ThreatTypes)\r\n| summarize TotalEmails=count() by UserLevelAction,UserLevelPolicy,ThreatTypes\r\n| sort by TotalEmails\r\n| project ['Override Action']=UserLevelAction, ['Override Policy']=UserLevelPolicy, ['Threat Type']=ThreatTypes, ['Total Emails']=TotalEmails", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Total Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + }, + "sortBy": [] + }, + "customWidth": "50", + "name": "query - 2", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "1acd913c-c945-4a58-b04e-d008ca53ffe3" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "7" + }, + "name": "group - 15 - User Detection Overrides - Allow", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "c939060e-6a8b-49ff-951b-a3abddbd9fb4" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
User configured Detection Overrides (Block)\r\n
\r\n\r\nThis section provides insights into emails blocked by user-configured policies (e.g., [Blocked Senders list in Outlook](https://support.microsoft.com/en-us/office/block-or-unblock-senders-in-outlook-9bf812d4-6995-4d19-901a-76d6e26939b0)).

**Recommended action:** Use user block trends to identify unwanted senders that may warrant tenant-wide blocking." + }, + "name": "text - UserOverridesBlockHeader", + "id": "be6c6a3e-08ee-47c5-b8e7-6a1078dd17d1" + }, + { + "type": 1, + "content": { + "json": "### User Overrides (Block) Trend\r\n**Displays the count (per {Granularity}) of emails where a user policy with a \"Block\" action overrode detections. Helps track the frequency of user blocks over time.**" + }, + "name": "text - UserOverridesBlockTrend", + "id": "7cd77d54-2e2b-4d23-a6a9-4bd6bca2642a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails subject to a user type policy with action of block, summarizing the data daily\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailEvents\r\n| where isnotempty(UserLevelPolicy) and UserLevelAction == \"Block\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize TotalUserOverrides = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['User Overrides'] = coalesce(TotalUserOverrides, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "User Overrides", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "name": "query - 5", + "styleSettings": { + "margin": "10", + "padding": "10" + }, + "id": "0b21b66c-001d-4b3d-b47f-f3a420ccaaf8" + }, + { + "type": 1, + "content": { + "json": "### Total Emails by User Override Type (Block)\r\n**Summarizes the total count of emails subject to user policies with a \"Block\" action, grouped by the type of override.**" + }, + "customWidth": "50", + "name": "text - UserOverridesBlockByType", + "id": "fd513501-5e9d-45d9-9d0d-cd546002b8cf" + }, + { + "type": 1, + "content": { + "json": "### User Overrides (Block) by Override Type and Threat Type\r\n**Details the count of emails blocked by user policies, categorized by the override type and the detected threat type.**" + }, + "customWidth": "50", + "name": "text - UserOverridesBlockByTypeAndThreat", + "id": "4fbfa876-47ed-4c3b-81ee-1c40b982cecd" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of emails subject to a user type policy with action of block, summarizing the data by type of override\r\nEmailEvents \r\n| where isnotempty(UserLevelPolicy) and UserLevelAction == \"Block\" \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize count() by UserLevelPolicy", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "query - 6", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "d3fccaa6-80fd-419d-bb37-aedf67263419" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails subject to a user type policy with action of block, summarizing the data by type of override and threats type found\r\nEmailEvents \r\n| where isnotempty(UserLevelPolicy) and UserLevelAction == \"Block\" \r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend ThreatTypes = case(ThreatTypes has \"Malware\", \"Malware\", ThreatTypes has \"Phish\", \"Phish\", ThreatTypes has \"Spam\", \"Spam\", ThreatTypes)\r\n| summarize TotalEmails=count() by UserLevelAction,UserLevelPolicy,ThreatTypes\r\n| sort by TotalEmails\r\n| project ['Override Action']=UserLevelAction, ['Override Policy']=UserLevelPolicy, ['Threat Type']=ThreatTypes, ['Total Emails']=TotalEmails", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Total Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ] + } + }, + "customWidth": "50", + "name": "query - 7", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "e5e74ce1-fa67-45ea-bc80-97237342e370" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "7" + }, + "name": "group - 37-User Detection Overrides - Block", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "0c1d327a-c2f1-4b9b-b210-53c808b53b48" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
User & Sender Override Detail (Allow)\r\n
\r\n\r\nInbound messages that Microsoft Defender for Office 365 **detected as threats but delivered anyway** because of an admin- or user-configured **Allow** override (phishing-simulation and SecOps Mailbox traffic excluded). **Total Threats** is all detected threats to that recipient / sender domain in the selected range; **Overridden Threats** and **Override %** are the portion delivered due to an Allow override, and **Override Types** names the specific overrides responsible. **User-configured** overrides come from the recipient's own mailbox junk-email settings in Outlook / Outlook on the web (the mailbox \"safelist collection\") — the **Safe Senders** and **Safe Recipients** lists and **trusted contacts** (\"Also trust email from my Contacts\"). **Admin-configured** overrides come from the **Tenant Allow/Block List, Exchange mail flow (transport) rules, the IP Allow List, or allowed sender/domain lists in anti-spam policies**. Use this to spot users or domains where overrides are letting threats through — candidates for policy review or a Tenant Allow/Block List (TABL) block.

**Recommended action:** Focus on the users and sender domains with the most allow overrides - these are the biggest protection gaps." + }, + "name": "Overrides - User Detail Header", + "id": "3b0e83f3-f340-4b95-85c5-831783e8abc2" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Top recipients receiving threats that were delivered due to an admin or user override, with the share of their threats that were overridden and a breakdown of which override types caused them.\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\" and isnotempty(ThreatTypes) and OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend OverrideType = case(\r\n OrgLevelAction == \"Allow\" and OrgLevelPolicy != \"\" and OrgLevelPolicy != \"SecOps Mailbox\", OrgLevelPolicy,\r\n UserLevelAction == \"Allow\", strcat(\"User: \", UserLevelPolicy),\r\n \"(none)\")\r\n| summarize PerType = count() by RecipientEmailAddress, OverrideType\r\n| summarize TotalThreats = sum(PerType),\r\n OverriddenThreats = sumif(PerType, OverrideType != \"(none)\"),\r\n OverrideTypes = strcat_array(make_set_if(strcat(OverrideType, \" (\", PerType, \")\"), OverrideType != \"(none)\"), \"; \")\r\n by RecipientEmailAddress\r\n| where OverriddenThreats > 0\r\n| extend OverridePercent = round(OverriddenThreats * 100.0 / TotalThreats, 1)\r\n| top 15 by OverriddenThreats\r\n| project ['Recipient']=RecipientEmailAddress, ['Total Threats']=TotalThreats, ['Overridden Threats']=OverriddenThreats, ['Override %']=OverridePercent, ['Override Types']=OverrideTypes", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Overridden Threats", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Override %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ] + }, + "graphSettings": { + "type": 2, + "topContent": { + "columnMatch": "StatisticName", + "formatter": 1 + }, + "centerContent": { + "columnMatch": "Value", + "formatter": 1, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + }, + "nodeIdField": "StatisticName", + "sourceIdField": "Value", + "targetIdField": "Value", + "graphOrientation": 3, + "showOrientationToggles": false, + "nodeSize": null, + "staticNodeSize": 100, + "colorSettings": null, + "hivesMargin": 5, + "edgeColorSettings": null + } + }, + "name": "Overrides - Top Users", + "id": "d7e169a2-808a-4bbf-86ee-5be561c690f7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Top sender domains sending threats to users, with the share of those threats that were delivered because of an admin or user override and a breakdown of which override types caused them. High override rates are strong candidates for policy review or a Tenant Allow/Block List (TABL) block.\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\" and isnotempty(ThreatTypes) and OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\r\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| extend OverrideType = case(\r\n OrgLevelAction == \"Allow\" and OrgLevelPolicy != \"\" and OrgLevelPolicy != \"SecOps Mailbox\", OrgLevelPolicy,\r\n UserLevelAction == \"Allow\", strcat(\"User: \", UserLevelPolicy),\r\n \"(none)\")\r\n| summarize PerType = count() by SenderFromDomain, OverrideType\r\n| summarize TotalThreats = sum(PerType),\r\n OverriddenThreats = sumif(PerType, OverrideType != \"(none)\"),\r\n OverrideTypes = strcat_array(make_set_if(strcat(OverrideType, \" (\", PerType, \")\"), OverrideType != \"(none)\"), \"; \")\r\n by SenderFromDomain\r\n| where OverriddenThreats > 0\r\n| extend OverridePercent = round(OverriddenThreats * 100.0 / TotalThreats, 1)\r\n| top 10 by OverriddenThreats\r\n| project ['Sender Domain']=SenderFromDomain, ['Total Threats']=TotalThreats, ['Overridden Threats']=OverriddenThreats, ['Override %']=OverridePercent, ['Override Types']=OverrideTypes", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Overridden Threats", + "formatter": 3, + "formatOptions": { + "palette": "redDark" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Override %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ] + }, + "graphSettings": { + "type": 2, + "topContent": { + "columnMatch": "StatisticName", + "formatter": 1 + }, + "centerContent": { + "columnMatch": "Value", + "formatter": 1, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + }, + "nodeIdField": "StatisticName", + "sourceIdField": "Value", + "targetIdField": "Value", + "graphOrientation": 3, + "showOrientationToggles": false, + "nodeSize": null, + "staticNodeSize": 100, + "colorSettings": null, + "hivesMargin": 5, + "edgeColorSettings": null + } + }, + "name": "Overrides - Top Sender Domains", + "id": "0eda3153-10ea-4d4e-80ca-7e5ad99e9883" + } + ] + }, + "customWidth": "100", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "7" + }, + "name": "Overrides - User & Sender Detail", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "d5f38e54-a3c7-4df6-b569-bbabe85e1a36" + }, + { + "type": 1, + "content": { + "json": "# False Negative(FN) Submissions insights\r\n\r\n---\r\n\r\nThis tab provides insights into email message **False Negative(FN) Submissions** performed by users or administrators in Microsoft Defender for Office 365 where the message reported to have **Malware, Phish or Spam threat** within its **content, URLs or attachments**." + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "8" + }, + "name": "text - 13 - Copy", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "3b243dca-89ce-41e6-bccb-9ceb0953aa2e" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
False Negative(FN) Admin submissions\r\n
\r\n\r\nThis section provides insights into email message **False Negative(FN) Submissions performed by administrators** in Microsoft Defender for Office 365 where the message reported to have Malware, Phish or Spam threat within its content, URLs or attachments.

**Recommended action:** Prioritise admin-submitted misses for policy tuning; recurring sender domains may be block-list candidates." + }, + "name": "fn admin - section header", + "id": "64420254-0dae-4495-bd55-fc49e5bc1ed0" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) Admin Submissions per-{Granularity} trend by submission types \r\n**Displays counts (per {Granularity}) of False Negative(FN) Admin Submissions grouped by submission type (Spam, Phish, Malware) and content type (Mail, URL, Attachment). Helps to monitor where detections were missed and later submitted by admins as false negatives to Microsoft.**" + }, + "name": "fn admin - trend heading", + "id": "5f2de929-6f32-4079-a031-cbf689c15b29" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the daily ammount of admin false negative submission by submission type.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(CloudAppEvents\r\n| where ActionType contains \"Submission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| summarize Admin_Malware_FN=countif(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\"), Admin_Phish_FN=countif(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\"), Admin_Spam_FN=countif(SubmissionType == \"0\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\"), Admin_Malware_URL_FN=countif(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\"), Admin_Malware_Attach_FN=countif(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\"), Admin_Phish_URL_FN=countif(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\"), Admin_Phish_Attach_FN=countif(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['Malware (Mail)']=coalesce(Admin_Malware_FN,0), ['Phish (Mail)']=coalesce(Admin_Phish_FN,0), ['Spam (Mail)']=coalesce(Admin_Spam_FN,0), ['Malware (URL)']=coalesce(Admin_Malware_URL_FN,0), ['Malware (Attachment)']=coalesce(Admin_Malware_Attach_FN,0), ['Phish (URL)']=coalesce(Admin_Phish_URL_FN,0), ['Phish (Attachment)']=coalesce(Admin_Phish_Attach_FN,0) | sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "TotalAdminSubmissions", + "color": "redDark" + }, + { + "seriesName": "Phish (Mail)", + "color": "redBright" + }, + { + "seriesName": "Spam (Mail)", + "color": "orange" + }, + { + "seriesName": "Malware (Mail)", + "color": "redDark" + }, + { + "seriesName": "Phish (URL)", + "color": "purple" + }, + { + "seriesName": "Malware (Attachment)", + "color": "yellowDark" + }, + { + "seriesName": "Phish (Attachment)", + "color": "purpleDark" + }, + { + "seriesName": "Malware (URL)", + "color": "yellow" + } + ] + } + }, + "name": "fn admin - submissions trend", + "id": "1b61155b-92a1-4533-9561-2e85e9a4dbf8" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) Admin Submissions by submission types \r\n**Displays counts (per {Granularity}) of False Negative(FN) Admin Submissions grouped by submission type (Spam, Phish, Malware) and content type (Mail, URL, Attachment).**" + }, + "customWidth": "50", + "name": "fn admin - by-type heading", + "id": "bbaa9ff9-a95d-495a-a44c-6b4cae888a24" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) Admin Submissions by submission State\r\n**Displays the total count of False Negative(FN) Admin Submissions by submission State (e.g., Pending, Completed, Failed). Helps track the processing status of admin submissions and identify bottlenecks or errors.**" + }, + "customWidth": "50", + "name": "fn admin - by-state heading", + "id": "b060c706-342a-4b2e-b81a-920bf4d8c5d9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of admin false negative submission by submission type.\r\nCloudAppEvents \r\n| where ActionType contains \"Submission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| extend Admin_SubmissionType=\r\niff(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Malware (Mail)\",\r\niff(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Phish (Mail)\",\r\niff(SubmissionType == \"0\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Spam (Mail)\",\r\niff(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\",\"Malware (URL)\",\r\niff(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\",\"Malware (Attachment)\",\r\niff(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\",\"Phish (URL)\",\r\niff(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\",\"Phish (Attachment)\",\r\n\"Other\")))))))\r\n| where Admin_SubmissionType!=\"Other\"\r\n| summarize count() by Admin_SubmissionType", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "chartSettings": { + "createOtherGroup": 10 + } + }, + "customWidth": "50", + "name": "fn admin - by-type pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "9d9d714a-357b-4ac3-bcb7-33601d3c3108" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of admin false negative submissions by the state of the submission.\r\nCloudAppEvents \r\n| where ActionType contains \"AdminSubmission\" \r\n| extend Record = (parse_json(RawEventData)).RecordType,SubmissionState = parse_json(RawEventData).SubmissionState,SubmissionId=parse_json(RawEventData).SubmissionId,SubmissionType = parse_json(RawEventData).SubmissionType,SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| where Record == 29 and SubmissionType in (\"0\",\"1\",\"2\")\r\n| summarize count() by tostring(SubmissionState)", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "fn admin - by-state pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "169f0f1c-1f1e-44fb-965e-850733f01879" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN)/False Positive(FP) Admin Submissions by Triage Verdict\r\n**Displays the total count of False Negative(FN)/False Positive(FP) Admin Submissions grouped by TriageVerdict (e.g., Malware, Spam, Phish, Clean). Helps assess how submissions were graded during triage and identify detection gaps.**" + }, + "customWidth": "50", + "name": "fn admin - triage-verdict heading", + "id": "3df841be-c1b0-4d61-8e38-316a34a48bd1" + }, + { + "type": 1, + "content": { + "json": "### Top Admins Submitting False Negatives \r\n**Displays the top 15 admin accounts that submitted the highest number of false negative messages (missed detections) via AdminSubmission. Helps identify key contributors to threat remediation and potential patterns in detection gaps.**" + }, + "customWidth": "50", + "name": "fn admin - top-admins heading", + "id": "e1e966f4-1f4d-4377-97c6-e2077fc0b8fa" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of admin false negative or false positive submissions by the verdict of the submission grading.\r\nCloudAppEvents \r\n| where ActionType contains \"AdminSubmissionTriage\" \r\n| extend UserKey = (parse_json(RawEventData)).UserKey, SubmissionState = (parse_json(RawEventData)).SubmissionState, SubmissionId=(parse_json(RawEventData)).SubmissionId, TriageVerdict=(parse_json(RawEventData)).GradingResult.TriageVerdict \r\n| summarize count() by tostring(TriageVerdict)", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "fn admin - triage-verdict pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "6df0db72-f9db-444e-856a-4369921d199b" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the top admins performing false negative submissions\r\nCloudAppEvents \r\n| where ActionType == \"AdminSubmissionSubmitted\" \r\n| extend Record= (parse_json(RawEventData)).RecordType,SubmissionState = (parse_json(RawEventData)).SubmissionState, UserId = (parse_json(RawEventData)).UserId,SubmissionType = parse_json(RawEventData).SubmissionType \r\n| where Record == 29 and SubmissionType in (\"0\",\"1\",\"2\")\r\n| summarize ['Submissions']=count() by ['Admin']=tostring(UserId)\r\n| top 15 by ['Submissions'] desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "16ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "fn admin - top-admins pie", + "id": "b5ccb4a1-9783-47cf-bf21-ded924f1a200" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) Admin Submissions by Top Sender Domains\r\n**For each top sender domain that admins reported missed threats for, shows the domain's MDO-detected threat profile (emails with threats and the Malware/Phish/Spam breakdown), the count of admin FN submissions, and the submission rate (Admin Submission % = admin submissions / total inbound from the domain). A high rate can flag a domain whose mail is frequently reported as missed.**" + }, + "customWidth": "100", + "name": "fn admin - top-sender-domains heading", + "id": "1a481c97-ac85-4b62-a86d-51b33b5a8e68" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Top 10 sender domains that admins reported false negatives (missed threats) for, with each domain's MDO-detected threat profile for context.\r\nlet subs = CloudAppEvents\r\n| where ActionType == \"AdminSubmissionSubmitted\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType), SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), P2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain)\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"2\",\"1\",\"0\")\r\n| summarize AdminSubmissions=count() by P2SenderDomain;\r\nlet domainProfile = EmailEvents\r\n| where EmailDirection == \"Inbound\"\r\n| summarize TotalInbound=count(), EmailsWithThreats=countif(isnotempty(ThreatTypes)), Malware=countif(ThreatTypes has \"Malware\"), Phish=countif(ThreatTypes has \"Phish\"), Spam=countif(ThreatTypes has \"Spam\") by SenderFromDomain;\r\nsubs\r\n| join kind=leftouter (domainProfile) on $left.P2SenderDomain == $right.SenderFromDomain\r\n| extend AdminSubmissionPct = round(AdminSubmissions * 100.0 / todouble(coalesce(TotalInbound, AdminSubmissions)), 2)\r\n| top 10 by AdminSubmissions desc\r\n| project ['Sender Domain']=P2SenderDomain, ['Emails With Threats']=coalesce(EmailsWithThreats,0), ['Malware']=coalesce(Malware,0), ['Phish']=coalesce(Phish,0), ['Spam']=coalesce(Spam,0), ['Admin Submissions']=AdminSubmissions, ['Admin Submission %']=AdminSubmissionPct", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Emails With Threats", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Malware", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "90px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Phish", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "90px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Spam", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "90px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Admin Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "120px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Admin Submission %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "110px" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn admin - top-sender-domains table", + "id": "e56bed92-b0fb-4b76-90f3-169f4206418b" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) Admin Submissions by admin Detection override types\r\n**Displays the top 10 cases where emails were submitted as false negatives by admins, even though they were initially detected by Microsoft Defender for Office 365 but delivered due to an admin policy override. Includes details on PolicyOverride, PolicySource, and DetectionVerdict for deeper insight into override behaviour.**" + }, + "customWidth": "100", + "name": "fn admin - override-types heading", + "id": "293c174c-0197-4cf8-bbce-36fe42e5cf1b" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises emails submitted as false negatives by admins where emails where already detected by MDO but there was a admin policy override\r\nCloudAppEvents \r\n| where ActionType == \"AdminSubmissionSubmitted\" \r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| extend Admin_SubmissionType=\r\niff(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Malware (Mail)\",\r\niff(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Phish (Mail)\",\r\niff(SubmissionType == \"0\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Spam (Mail)\",\"Other\"))),\r\nP2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain),NetworkMessageId=tostring((parse_json(RawEventData).ObjectId)),DetectionVerdict=tostring((parse_json(RawEventData)).DeliveryMessageInfo.FinalFilterVerdict),PolicyOverride=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicyOverride),PolicyPolicyOverrideType=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicySource)\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"2\",\"1\",\"0\") and PolicyOverride !=\"NoOverride\"\r\n| summarize count() by PolicyOverride, PolicyPolicyOverrideType,DetectionVerdict,Admin_SubmissionType\r\n| top 10 by count_ desc\r\n| project ['Policy Override']=PolicyOverride, ['Override Source']=PolicyPolicyOverrideType, ['Detection Verdict']=DetectionVerdict, ['Submission Type']=Admin_SubmissionType, ['Emails']=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn admin - override-types table", + "id": "97799422-53e0-4e3b-8103-297fd1c744eb" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "8" + }, + "name": "group - 11-Fn Admin Submissions", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "45a1c185-4fbf-4e83-832e-1f20af427796" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
False Negative(FN) User submissions\r\n
\r\n\r\nThis section provides insights into email message **False Negative(FN) Submissions performed by end users** in Microsoft Defender for Office 365 where the message reported as having Phish, Spam threat within its content, URLs or attachments.

**Recommended action:** Recognise engaged reporters, coach over-reporters, and use graded phishing verdicts to tune anti-phishing policy." + }, + "name": "fn user - section header", + "id": "ca0b48e6-8bd8-4f99-956a-f9c72cc870db" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) User Submissions per-{Granularity} trend by submission types \r\n**Displays counts (per {Granularity}) of False Negative(FN) User Submissions grouped by submission type (Spam, Phish and Attack simulations) . Helps to monitor where detections were missed and later submitted by users as false negatives.**" + }, + "name": "fn user - trend heading", + "id": "60ac8608-7875-45e6-8c83-e6bd0c34af8b" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the daily ammount of users false negative submission by submission type, including phish simulations reported by users.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(CloudAppEvents\r\n| where ActionType contains \"UserSubmission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| summarize User_Phish_FN=countif(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\"), User_Spam_FN=countif(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\"), User_AttackSim_Submission=countif(ActionType == \"AttackSimUserSubmission\" and SubmissionContentType==\"Mail\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['Phish (Mail)']=coalesce(User_Phish_FN,0), ['Spam (Mail)']=coalesce(User_Spam_FN,0), ['Attack simulation reported']=coalesce(User_AttackSim_Submission,0) | sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "TotalAdminSubmissions", + "color": "redDark" + }, + { + "seriesName": "Phish (Mail)", + "color": "redDark" + }, + { + "seriesName": "Attack simulation reported", + "color": "green" + }, + { + "seriesName": "Spam (Mail)", + "color": "orangeDark" + } + ] + } + }, + "name": "fn user - submissions trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "29355816-6cba-4264-938e-b0b27afdcb12" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) User Submissions by submission State\r\n**Displays the total count of False Negative(FN) User Submissions by submission State (e.g., Pending, Completed, Failed). Helps track the processing status of user submissions and identify bottlenecks or errors.**" + }, + "customWidth": "50", + "name": "fn user - by-state heading", + "id": "6a4b32cc-b7e4-47bb-b1b9-f415df7e629c" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) User Submissions by Triage Verdict\r\n**Displays the total count of False Negative(FN)/False Positive(FP) User Submissions grouped by TriageVerdict (e.g., Malware, Spam, Phish, Clean). Helps assess how submissions were graded during triage and identify detection gaps.**" + }, + "customWidth": "50", + "name": "fn user - triage-verdict heading", + "id": "1427e34f-be44-4517-ae73-cc4776a49fe7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of user false negative submissions by the state of the submission.\r\nCloudAppEvents \r\n| where ActionType contains \"UserSubmission\" \r\n| extend Record = (parse_json(RawEventData)).RecordType,SubmissionState = parse_json(RawEventData).SubmissionState,SubmissionId=parse_json(RawEventData).SubmissionId,SubmissionType = parse_json(RawEventData).SubmissionType,SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| where Record == 29 and SubmissionType in (\"0\",\"1\")\r\n| summarize count() by tostring(SubmissionState)", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "fn user - by-state pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "a6151271-e925-4804-a3c1-06afee27c026" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of user false negative or false positive submissions by the verdict of the submission grading.\r\nCloudAppEvents \r\n| where ActionType contains \"UserSubmissionTriage\" \r\n| extend UserKey = (parse_json(RawEventData)).UserKey, SubmissionState = (parse_json(RawEventData)).SubmissionState, SubmissionId=(parse_json(RawEventData)).SubmissionId, TriageVerdict=(parse_json(RawEventData)).GradingResult.TriageVerdict \r\n| summarize count() by tostring(TriageVerdict)", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "fn user - triage-verdict pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "6ff319ea-b5c5-4e33-9e5c-065aadbf465d" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) User Submissions of already detected Emails (from Junk folder)\r\n**Displays the total count of False Negative(FN) User Submissions where the email message was already detected by Microsoft Defender for Office 365 and the detection action was configured to deliver the message into the Junk folder of the user mailbox. It breaks down the result based on the original detection verdict determined by Microsoft Defender for Office 365. Helps track the user submissions of messages that already had a detection. Consider changing the detection action to Quarantine to avoid these submissions.**" + }, + "name": "fn user - junk-folder heading", + "id": "d6338907-489d-4c88-b82f-260fc0f9d302" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of user false negative submissions that are already detected by MDO and already delivered in the junk folder\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId\r\n| extend User_SubmissionType=\r\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Phish (Mail)\",\r\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Spam (Mail)\",\"Other\")),\r\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where DeliveryLocation == \"Junk folder\"\r\n| summarize count() by ThreatTypes,User_SubmissionType\r\n| project ThreatTypes,User_SubmissionType, Emails = count_", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "fn user - junk-folder pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "c13452cb-e864-4f01-8623-51f3ea13bbbc" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of user false negative submissions that are already detected by MDO and already delivered in the junk folder\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId,UserId = (parse_json(RawEventData)).UserId\r\n| extend User_SubmissionType=\r\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Phish (Mail)\",\r\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Spam (Mail)\",\"Other\")),\r\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where DeliveryLocation == \"Junk folder\"\r\n| extend MDO_detection = parse_json(DetectionMethods) \r\n| extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0])) \r\n| extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\") \r\n| summarize TotalJunkSubmittedEmailCount=count(),PhishEmailCount = countif(FirstDetection == \"Phish\"),SpamEmailCount = countif(FirstDetection == \"Spam\") by tostring(UserId)\r\n| top 15 by TotalJunkSubmittedEmailCount desc\r\n| project ['User']=UserId, ['Junk Submissions']=TotalJunkSubmittedEmailCount, ['Phish']=PhishEmailCount, ['Spam']=SpamEmailCount", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Junk Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Phish", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Spam", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "fn user - junk-folder table", + "id": "b242f301-c9f7-41f9-aa73-03848bd58eae" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) User Submissions - Admin review status (Mark and Notify)\r\n**Displays counts of False Negative(FN) User Submissions that were reviewed by admins and marked with a notify action. The Mark and Notify action also can be taken automatically with Automated investigation and response (AIR). Helps track cases where admins confirmed user reports and communicated the outcome, supporting transparency and user trust.**" + }, + "customWidth": "50", + "name": "fn user - mark-notify heading", + "id": "784bf171-53ae-4907-b2b0-7fc5039df231" + }, + { + "type": 1, + "content": { + "json": "### False Negative(FN) User Submissions accuracy vs Admin review verdict\r\n**Displays counts of False Negative(FN) User Submissions (Phish, Junk, NotJunk) compared to admin review results. Highlights whether submissions were Correct, Not Correct, or misclassified comparing user submission type with the Admin decision using Mark and Notify action in Microsoft Defender for Office 365 (e.g., “Phish reported as Junk”, “Reported but not malicious”).**" + }, + "customWidth": "50", + "name": "fn user - accuracy heading", + "id": "3d137383-6436-4213-9824-72f424b67290" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises user submissions where admin also performed 'mark and notify' action on the submission\r\nlet ReviewResults = CloudAppEvents | where ActionType == \"SubmissionNotification\" \r\n| extend SubmissionId = tostring(parse_json(RawEventData).SubmissionId)\r\n| extend Properties = parse_json(RawEventData.ExtendedProperties)\r\n| mv-expand element = Properties\r\n| where element.Name == \"AdminReviewResult\"\r\n| project SubmissionId, AdminReviewResult = element.Value;\r\nCloudAppEvents\r\n| where ActionType == \"UserSubmission\"\r\n| extend SubmissionId = tostring(parse_json(RawEventData).SubmissionId), SubmissionType = parse_json(RawEventData).SubmissionType\r\n| join kind=leftouter ReviewResults on SubmissionId\r\n| extend UserReportedAs=iif(SubmissionType == 1, \"Phish\",iif(SubmissionType == 2, \"Junk\",iif(SubmissionType == 3, \"NotJunk\",\"\")))\r\n| extend ReviewedAccuracy=iif(UserReportedAs==AdminReviewResult, 1,0)\r\n| extend Reviewed=iif(isempty(AdminReviewResult),\"Not Reviewed\",\"Reviewed\")\r\n| project SubmissionId,UserReportedAs,Reviewed,AdminReviewResult, ReviewedAccuracy\r\n| summarize count() by Reviewed", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "fn user - mark-notify pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "7bb7d116-bd61-4e46-81dd-d634a31e7369" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises user submissions type compared to admin review verdict. \r\n//Eg. User reporting a phish but admin review is 'not threat found'\r\nlet ReviewResults = CloudAppEvents | where ActionType == \"SubmissionNotification\" \r\n| extend SubmissionId = tostring(parse_json(RawEventData).SubmissionId)\r\n| extend Properties = parse_json(RawEventData.ExtendedProperties)\r\n| mv-expand element = Properties\r\n| where element.Name == \"AdminReviewResult\"\r\n| project SubmissionId, AdminReviewResult = element.Value;\r\nCloudAppEvents\r\n| where ActionType == \"UserSubmission\"\r\n| extend SubmissionId = tostring(parse_json(RawEventData).SubmissionId), SubmissionType = parse_json(RawEventData).SubmissionType\r\n| join kind=leftouter ReviewResults on SubmissionId\r\n| extend UserReportedAs=iif(SubmissionType == 1, \"Phish\",iif(SubmissionType == 2, \"Junk\",iif(SubmissionType == 3, \"NotJunk\",\"\")))\r\n| extend ReviewedAccuracy=iif(AdminReviewResult==UserReportedAs, \"Correct\", iif(AdminReviewResult==\"Phish\" and UserReportedAs == \"Junk\", \"Phish reported as junk\",iif(AdminReviewResult==\"Junk\" and UserReportedAs == \"Phish\",\"Junk reported as Phish\",iif(AdminReviewResult==\"NotJunk\",\"Reported but not malicious or spam\",iif(isempty(AdminReviewResult),\"Not Reviewed\",\"Not correct\")))))\r\n| extend Reviewed=iif(isempty(AdminReviewResult),\"Not Reviewed\",\"Reviewed\")\r\n| project SubmissionId,UserReportedAs,Reviewed,AdminReviewResult, ReviewedAccuracy\r\n| where Reviewed==\"Reviewed\"\r\n| summarize count() by ReviewedAccuracy", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "fn user - accuracy pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "8af1b9f0-995c-4c58-9960-8e69c6960987" + }, + { + "type": 1, + "content": { + "json": "### Top 10 P2 Email Senders domains in False Negative(FN) User Submissions \r\n**Displays the top 10 P2 email sender domains of inbound emails reported by users as false negatives (missed detections). Includes total inbound email volume and calculates the percentage of user submissions per domain to highlight high-risk sources.**" + }, + "customWidth": "100", + "name": "fn user - top-p2-domains heading", + "id": "78dab1f9-09ec-46e2-aee4-f256e368cdd5" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises top 10 sender domains of inbound emails submitted as false negatives by users.\r\nlet TotalInboundbySender=\r\nEmailEvents\r\n| where EmailDirection ==\"Inbound\"\r\n| summarize count() by SenderFromDomain;\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\" \r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),RecipientObjectId=AccountObjectId,NetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Inbound\"\r\n| summarize UserSubmissions=count() by SenderFromDomain\r\n| join TotalInboundbySender on SenderFromDomain\r\n| extend UserSubmissions_Percentage = todouble(round(UserSubmissions / todouble(count_) * 100, 2))\r\n| top 10 by UserSubmissions desc\r\n| project ['Sender Domain']=SenderFromDomain, ['User Submissions']=UserSubmissions, ['Total Inbound']=count_, ['User Submission %']=UserSubmissions_Percentage", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "User Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "14ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "User Submission %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "12ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn user - top-p2-domains table", + "id": "6e6a59d4-70e1-4d85-bebb-6bb23d25d2d9" + }, + { + "type": 1, + "content": { + "json": "### Top 10 P2 Individual Email Senders in False Negative(FN) User Submissions \r\n**Displays the top 10 P2 individual email sender addresses of inbound emails reported by users as false negatives (missed detections). Includes total inbound email volume and calculates the percentage of user submissions per sender to highlight high-risk sources.**" + }, + "customWidth": "100", + "name": "fn user - top-p2-senders heading", + "id": "a6e8fda5-dd05-49ed-87e2-16443495396e" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises top 10 sender email addresses of inbound emails submitted as false negatives by users.\r\nlet TotalInboundbySender=\r\nEmailEvents\r\n| where EmailDirection ==\"Inbound\"\r\n| summarize count() by SenderFromAddress;\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\" \r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain),RecipientObjectId=AccountObjectId,NetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Inbound\"\r\n| summarize UserSubmissions=count() by SenderFromAddress\r\n| join TotalInboundbySender on SenderFromAddress\r\n| extend UserSubmissions_Percentage = todouble(round(UserSubmissions / todouble(count_) * 100, 2))\r\n| top 10 by UserSubmissions desc\r\n| project ['Sender Address']=SenderFromAddress, ['User Submissions']=UserSubmissions, ['Total Inbound']=count_, ['User Submission %']=UserSubmissions_Percentage", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "User Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "14ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "User Submission %", + "formatter": 4, + "formatOptions": { + "customColumnWidthSetting": "12ch", + "palette": "red", + "min": 0, + "max": 20 + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn user - top-p2-senders table", + "id": "878fd15f-2607-4d6d-b919-0b4bea6a1850" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Intra-org Email Senders in False Negative(FN) User Submissions \r\n**Displays the top 10 email senders of intra-org emails reported by users as false negatives (missed detections). Includes total intra-org email volume and calculates the percentage of user submissions per sender to highlight high-risk sources.**" + }, + "customWidth": "100", + "name": "fn user - intraorg-senders heading", + "id": "87a51814-7f01-42e3-aea2-4136c869d39d" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises top 10 sender email address of intra-org emails submitted as false negatives by users.\r\nlet TotalInboundbySender=\r\nEmailEvents\r\n| where EmailDirection ==\"Intra-org\"\r\n| summarize count() by SenderFromAddress;\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\" \r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain),RecipientObjectId=AccountObjectId,NetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Intra-org\"\r\n| summarize UserSubmissions=count() by SenderFromAddress\r\n| join TotalInboundbySender on SenderFromAddress\r\n| extend UserSubmissions_Percentage = todouble(round(UserSubmissions / todouble(count_) * 100, 2))\r\n| top 10 by UserSubmissions desc\r\n| project ['Sender Address']=SenderFromAddress, ['User Submissions']=UserSubmissions, ['Total Intra-org']=count_, ['User Submission %']=UserSubmissions_Percentage", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "User Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "14ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Intra-org", + "formatter": 0, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "User Submission %", + "formatter": 4, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + }, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "12ch" + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn user - intraorg-senders table", + "id": "38edca4b-a403-41e8-8c2b-7c0595e93b7a" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Intra-org Email Subjects in False Negative(FN) User Submissions \r\n**Displays the top 10 Email Subjects of intra-org emails reported by users as false negatives (missed detections). Helps to highlight high-risk intra-org email sources.**" + }, + "customWidth": "100", + "name": "fn user - intraorg-subjects heading", + "id": "52b0bc5b-7e54-4a5b-a487-8a736a8c2397" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises top 10 subjects of intra-org emails submitted as false negatives by users.\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId\r\n| extend User_SubmissionType=\r\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Phish (Mail)\",\r\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Spam (Mail)\",\"Other\")),\r\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Intra-org\"\r\n| summarize count() by Subject\r\n| top 10 by count_ desc\r\n| project ['Subject']=Subject, ['User Submissions']=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Subject", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "70ch" + } + }, + { + "columnMatch": "User Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn user - intraorg-subjects table", + "id": "ee2c1d2e-3d4e-4024-8422-985b22cb7475" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Detection Overrides defined by Admins in False Negative(FN) User Submissions \r\n**Displays the top 10 use cases where users submitted emails as false negatives (Spam or Phish) that were already detected by Microsoft Defender for Office 365 but delivered due to an admin-defined policy override. Includes details on OrgLevelAction, OrgLevelPolicy, and ThreatTypes for deeper insight into override behaviour.**" + }, + "customWidth": "100", + "name": "fn user - admin-override heading", + "id": "0dd9b3ce-9716-42bb-93de-495f0af2d075" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises emails submitted as false negatives by users where emails where already detected by MDO but there was an admin definded policy override.\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId\r\n| extend User_SubmissionType=\r\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Phish (Mail)\",\r\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Spam (Mail)\",\"Other\")),\r\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where ThreatTypes !=\"\"and OrgLevelAction!=\"\"\r\n| summarize count() by OrgLevelAction, OrgLevelPolicy,ThreatTypes,User_SubmissionType\r\n| top 10 by count_ desc\r\n| project ['Override Action']=OrgLevelAction, ['Override Policy']=OrgLevelPolicy, ['Threat Type']=ThreatTypes, ['Submission Type']=User_SubmissionType, ['User Submissions']=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Override Policy", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "48ch" + } + }, + { + "columnMatch": "User Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn user - admin-override table", + "id": "100de6ca-beb0-44d7-a715-449a389e9e8a" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Detection Overrides defined by Users in False Negative(FN) User Submissions \r\n**Displays the top 10 use cases where users submitted emails as false negatives (Spam or Phish) that were already detected by Microsoft Defender for Office 365 but delivered due to a user-defined override. Includes details on UserLevelAction, UserLevelPolicy, and ThreatTypes for deeper insight into override behaviour.**" + }, + "customWidth": "100", + "name": "fn user - user-override heading", + "id": "67057c7d-c0af-4373-b23a-4001fbced888" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises emails submitted as false negatives by users where emails where already detected by MDO but there was an policy override.\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId\r\n| extend User_SubmissionType=\r\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Phish (Mail)\",\r\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"Spam (Mail)\",\"Other\")),\r\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\r\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where ThreatTypes !=\"\"and UserLevelAction!=\"\"\r\n| summarize count() by UserLevelAction, UserLevelPolicy,ThreatTypes,User_SubmissionType\r\n| top 10 by count_ desc\r\n| project ['Override Action']=UserLevelAction, ['Override Policy']=UserLevelPolicy, ['Threat Type']=ThreatTypes, ['Submission Type']=User_SubmissionType, ['User Submissions']=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Override Policy", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "48ch" + } + }, + { + "columnMatch": "User Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn user - user-override table", + "id": "1b97f7d2-152d-4eb0-bfac-e161fbfa4046" + }, + { + "type": 1, + "content": { + "json": "### Top 10 users performing the most False Negative(FN) User Submissions\r\n**Displays the Top 10 user accounts that performed the highest number of False Negative(FN) User Submissions (missed detections). Helps identify individuals most engaged in reporting suspicious, malicious messages and potential patterns in detection gaps.**" + }, + "customWidth": "100", + "name": "fn user - top-users heading", + "id": "7799a0a0-a835-4080-b59a-736b08ad809e" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the top 10 users performing false negative submissions\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\" \r\n| extend Record = (parse_json(RawEventData)).RecordType,SubmissionState = parse_json(RawEventData).SubmissionState,SubmissionId=parse_json(RawEventData).SubmissionId,SubmissionType = parse_json(RawEventData).SubmissionType,SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| where Record == 29 and SubmissionType in (\"0\",\"1\")\r\n| extend UserId = (parse_json(RawEventData)).UserId\r\n| summarize ['Submissions']=count() by ['User']=tostring(UserId)\r\n| top 10 by ['Submissions'] desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "16ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn user - top-users pie", + "id": "44838734-43a0-4301-9ddb-a644c7ec509a" + }, + { + "type": 1, + "content": { + "json": "### Top 10 users performing the most User Submissions of Attack simulation messages\r\n**Displays the top 10 user accounts that reported phishing simulation emails during cyber security awareness campaigns. Supports evaluation of cyber security awareness programme effectiveness and identifies highly engaged users.**" + }, + "customWidth": "100", + "name": "fn user - attacksim-users heading", + "id": "8a96e90f-765f-40c0-8476-30c97d43c328" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the top users reporting the phishing simulation emails.\r\nCloudAppEvents \r\n| extend Record= (parse_json(RawEventData)).RecordType \r\n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState \r\n| extend UserId = (parse_json(RawEventData)).UserId\r\n| where Record == 29\r\n| where ActionType == \"AttackSimUserSubmission\" \r\n| summarize ['Submissions']=count() by ['User']=tostring(UserId)\r\n| top 10 by ['Submissions'] desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "16ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fn user - attacksim-users pie", + "id": "ab648c4a-4c46-4c73-96f0-784c9bcef961" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "8" + }, + "name": "group - 11 - FN User submissions", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "348ce24a-7cbc-4b66-a471-dfe3827bed2d" + }, + { + "type": 1, + "content": { + "json": "# False Positive(FP) Submissions insights\r\n\r\n---\r\n\r\nThis tab provides insights into email message **False Positive(FP) Submissions** performed by users or administrators in Microsoft Defender for Office 365 where the message was flagged as a threat by Microsoft Defender for Office 365 but was later reported as No Threat by administrators or users." + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "10" + }, + "name": "fp - tab description", + "id": "78e2df52-a0d2-499a-95fe-708f67db5ad6" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
False Positive(FP) Admin Submissions\r\n
\r\n\r\nAdministrator submissions represent escalated false positive reports submitted by security team members rather than end users. These typically involve more complex cases requiring expert review, such as recurring issues affecting multiple users, business-critical communications being blocked, or suspected policy misconfigurations. Admin submissions carry higher priority and can result in actions as allow-list additions or global policy changes to prevent widespread user impact.

**Recommended action:** Review recurring false-positive sender domains and consider allow entries or policy tuning to reduce business disruption." + }, + "name": "fp admin - section header", + "id": "02d54e9c-e989-4cde-a128-68a6381ed9d7" + }, + { + "type": 1, + "content": { + "json": "### Admin Submission Volume and Type Breakdown\r\n\r\n**These charts track the volume and composition of administrator-initiated false positive submissions. The trend chart shows submission patterns (per {Granularity}) across Email, URL, and Attachment types, while the pie chart reveals the distribution among these categories. Spikes in admin submissions often signal systemic issues requiring immediate policy review, as admins typically escalate only the most impactful or recurring problems.**" + }, + "name": "fp admin - volume/type heading", + "id": "103b8362-a10f-4b46-a757-8290c4269a5c" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the daily ammount of admin false positive submission by submission type.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(CloudAppEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(CloudAppEvents | summarize max(Timestamp));\r\nlet agg = materialize(CloudAppEvents\r\n| where ActionType contains \"Submission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| summarize Admin_Email_FP=countif(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\"), Admin_URL_FP=countif(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\"), Admin_Attach_FP=countif(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\") by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['Email']=coalesce(Admin_Email_FP,0), ['URL']=coalesce(Admin_URL_FP,0), ['Attachment']=coalesce(Admin_Attach_FP,0) | sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "TotalAdminSubmissions", + "color": "redDark" + }, + { + "seriesName": "Admin_Phish_FN", + "color": "redBright" + }, + { + "seriesName": "Admin_Spam_FN", + "color": "orange" + }, + { + "seriesName": "Admin_Malware_FN", + "color": "redDark" + }, + { + "seriesName": "Admin_Phish_URL_FN", + "color": "purple" + }, + { + "seriesName": "Admin_Malware_Attach_FN", + "color": "yellowDark" + }, + { + "seriesName": "Admin_Phish_Attach_FN", + "color": "purpleDark" + }, + { + "seriesName": "Admin_Malware_URL_FN", + "color": "yellow" + }, + { + "seriesName": "Admin_Email_FP", + "color": "redDark" + }, + { + "seriesName": "Admin_URL_FP", + "color": "orangeDark" + }, + { + "seriesName": "Admin_Attach_FP", + "color": "yellow" + } + ] + } + }, + "customWidth": "66", + "name": "fp admin - submissions trend", + "id": "326762ca-1f2b-48e9-90d6-ff2aa6a75e95" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of admin false positive submission by submission type.\r\nCloudAppEvents \r\n| where ActionType contains \"Submission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| extend Admin_SubmissionType=\r\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Email\",\r\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\",\"URL\",\r\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\",\"Attachment\",\r\n\"Other\")))\r\n| where Admin_SubmissionType!=\"Other\"\r\n| summarize count() by Admin_SubmissionType", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart", + "chartSettings": { + "createOtherGroup": 10 + } + }, + "customWidth": "33", + "name": "fp admin - by-type pie", + "id": "be925c4c-5718-4385-8e82-59c57b975ac5" + }, + { + "type": 1, + "content": { + "json": "### False Positive(FP) Admin Submissions by submission state
\r\n\r\n**Displays the total count of False Positive(FP) Admin Submissions by submission State (e.g., Pending, Completed, Failed). Helps track the processing status of admin submissions and identify bottlenecks or errors.**" + }, + "customWidth": "50", + "name": "fp admin - by-state heading", + "id": "2b2acb67-c070-48bd-acf1-025c05aae8b5" + }, + { + "type": 1, + "content": { + "json": "### Top Admins Submitting False Positives
\r\n\r\n**Displays the top 15 admin accounts that submitted the highest number of false positive messages via AdminSubmission.**" + }, + "customWidth": "50", + "name": "fp admin - top-admins heading", + "id": "52206f40-fae9-460f-97b8-2cf9b633098f" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of admin false positive submissions by the state of the submission.\r\nCloudAppEvents \r\n| where ActionType contains \"AdminSubmission\" \r\n| extend Record = (parse_json(RawEventData)).RecordType,SubmissionState = parse_json(RawEventData).SubmissionState,SubmissionId=parse_json(RawEventData).SubmissionId,SubmissionType = parse_json(RawEventData).SubmissionType,SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| where Record == 29 and SubmissionType == \"3\"\r\n| summarize count() by tostring(SubmissionState)", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "fp admin - by-state pie", + "id": "96133d9e-24fb-417e-a3cd-df98dda4c60a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the top admins performing false positive submissions.\r\nCloudAppEvents \r\n| where ActionType == \"AdminSubmissionSubmitted\" \r\n| extend Record= (parse_json(RawEventData)).RecordType,SubmissionState = (parse_json(RawEventData)).SubmissionState, UserId = (parse_json(RawEventData)).UserId,SubmissionType = parse_json(RawEventData).SubmissionType \r\n| where Record == 29 and SubmissionType ==\"3\"\r\n| summarize ['Submissions']=count() by ['Admin']=tostring(UserId)\r\n| top 15 by ['Submissions'] desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "16ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "fp admin - top-admins pie", + "id": "da7b4c89-904d-4917-b6cd-04b32e02d4a1" + }, + { + "type": 1, + "content": { + "json": "### Admin Submission False Positive Malware Detection Breakdown\r\n**Shows the count of administrator-submitted false positive reports (legitimate emails flagged as malware) grouped by the detection method that flagged them. Helps identify which filtering technologies most often misclassify valid messages as malware.**" + }, + "customWidth": "100", + "name": "fp admin - malware-detection heading", + "id": "69d649e0-86fd-4c08-afd4-e6c200b11c86" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Admin false positive submissions whose original verdict was Malware, grouped by the detection method that flagged them. A high count means that method most often misclassifies legitimate mail as Malware.\r\nlet total = toscalar(CloudAppEvents\r\n | where ActionType == \"AdminSubmissionSubmitted\"\r\n | extend R = parse_json(RawEventData)\r\n | where tostring(R.SubmissionContentType) == \"Mail\" and tostring(R.SubmissionType) == \"3\" and tostring(R.DeliveryMessageInfo.FinalFilterVerdict) == \"Malware\"\r\n | count);\r\nCloudAppEvents\r\n| where ActionType == \"AdminSubmissionSubmitted\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), DetectionMethod = tostring(R.DeliveryMessageInfo.FinalFilterVerdictControlSource), DetectionVerdict = tostring(R.DeliveryMessageInfo.FinalFilterVerdict), P2SenderDomain = tostring(R.P2SenderDomain)\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\" and DetectionVerdict == \"Malware\"\r\n| extend DetectionMethod = iif(isempty(DetectionMethod), \"Not specified\", DetectionMethod)\r\n| summarize FPSubmissions = count(), DistinctDomains = dcount(P2SenderDomain) by DetectionMethod\r\n| extend Pct = iif(total == 0, 0.0, round(FPSubmissions * 100.0 / total, 1))\r\n| sort by FPSubmissions desc\r\n| project ['Detection Method'] = DetectionMethod, ['FP Submissions'] = FPSubmissions, ['Distinct Sender Domains'] = DistinctDomains, ['% of Malware FPs'] = Pct", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Distinct Sender Domains", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "20ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "% of", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "14ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp admin - malware-detection table", + "id": "607eb19b-1ded-488d-98db-8b23f9e90967" + }, + { + "type": 1, + "content": { + "json": "### Admin Submission False Positive Phish Detection Breakdown\r\n**Shows the count of administrator-submitted false positive reports (legitimate emails flagged as phishing) grouped by the detection method that flagged them. Helps identify which filtering technologies most often misclassify valid messages as phishing.**" + }, + "customWidth": "100", + "name": "fp admin - phish-detection heading", + "id": "c1f1e12f-d0aa-4023-9172-8182772b3331" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Admin false positive submissions whose original verdict was Phish, grouped by the detection method that flagged them. A high count means that method most often misclassifies legitimate mail as Phish.\r\nlet total = toscalar(CloudAppEvents\r\n | where ActionType == \"AdminSubmissionSubmitted\"\r\n | extend R = parse_json(RawEventData)\r\n | where tostring(R.SubmissionContentType) == \"Mail\" and tostring(R.SubmissionType) == \"3\" and tostring(R.DeliveryMessageInfo.FinalFilterVerdict) == \"Phish\"\r\n | count);\r\nCloudAppEvents\r\n| where ActionType == \"AdminSubmissionSubmitted\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), DetectionMethod = tostring(R.DeliveryMessageInfo.FinalFilterVerdictControlSource), DetectionVerdict = tostring(R.DeliveryMessageInfo.FinalFilterVerdict), P2SenderDomain = tostring(R.P2SenderDomain)\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\" and DetectionVerdict == \"Phish\"\r\n| extend DetectionMethod = iif(isempty(DetectionMethod), \"Not specified\", DetectionMethod)\r\n| summarize FPSubmissions = count(), DistinctDomains = dcount(P2SenderDomain) by DetectionMethod\r\n| extend Pct = iif(total == 0, 0.0, round(FPSubmissions * 100.0 / total, 1))\r\n| sort by FPSubmissions desc\r\n| project ['Detection Method'] = DetectionMethod, ['FP Submissions'] = FPSubmissions, ['Distinct Sender Domains'] = DistinctDomains, ['% of Phish FPs'] = Pct", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Distinct Sender Domains", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "20ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "% of", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "14ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp admin - phish-detection pie", + "id": "b6c074f9-affa-41a3-802a-53541394ae73" + }, + { + "type": 1, + "content": { + "json": "### Admin Submission False Positive Spam Detection Breakdown\r\n**Shows the count of administrator-submitted false positive reports (legitimate emails flagged as spam) grouped by the detection method that flagged them. Helps identify which filtering technologies most often misclassify valid messages as spam.**" + }, + "customWidth": "100", + "name": "fp admin - spam-detection heading", + "id": "f0f2adb9-34af-4df0-90e6-087a265bedf6" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Admin false positive submissions whose original verdict was Spam, grouped by the detection method that flagged them. A high count means that method most often misclassifies legitimate mail as Spam.\r\nlet total = toscalar(CloudAppEvents\r\n | where ActionType == \"AdminSubmissionSubmitted\"\r\n | extend R = parse_json(RawEventData)\r\n | where tostring(R.SubmissionContentType) == \"Mail\" and tostring(R.SubmissionType) == \"3\" and tostring(R.DeliveryMessageInfo.FinalFilterVerdict) == \"Spam\"\r\n | count);\r\nCloudAppEvents\r\n| where ActionType == \"AdminSubmissionSubmitted\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), DetectionMethod = tostring(R.DeliveryMessageInfo.FinalFilterVerdictControlSource), DetectionVerdict = tostring(R.DeliveryMessageInfo.FinalFilterVerdict), P2SenderDomain = tostring(R.P2SenderDomain)\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\" and DetectionVerdict == \"Spam\"\r\n| extend DetectionMethod = iif(isempty(DetectionMethod), \"Not specified\", DetectionMethod)\r\n| summarize FPSubmissions = count(), DistinctDomains = dcount(P2SenderDomain) by DetectionMethod\r\n| extend Pct = iif(total == 0, 0.0, round(FPSubmissions * 100.0 / total, 1))\r\n| sort by FPSubmissions desc\r\n| project ['Detection Method'] = DetectionMethod, ['FP Submissions'] = FPSubmissions, ['Distinct Sender Domains'] = DistinctDomains, ['% of Spam FPs'] = Pct", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Distinct Sender Domains", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "20ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "% of", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "14ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp admin - spam-detection pie", + "id": "e877d9c9-3bd3-4368-997e-945f18ffcf5f" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Sender Domains for Admin False Positive Submissions
\r\n\r\n**Lists the top 10 sender domains of emails reported as false positives by administrators (legitimate messages incorrectly flagged as spam or phishing). Helps identify domains frequently misclassified.**" + }, + "customWidth": "50", + "name": "fp admin - top-sender-domains heading", + "id": "37680101-7e4b-4bcc-9e7e-0ccd2d914881" + }, + { + "type": 1, + "content": { + "json": "### Admin False Positive Submissions by Original Threat Verdict
\r\n\r\n**Displays all administrator-submitted false positive emails by their original filter verdict (e.g., spam, phishing) and policy override details. Helps identify which threat categories are most often misclassified.**" + }, + "customWidth": "50", + "name": "fp admin - by-verdict heading", + "id": "879e81ad-00a6-4a10-bcb6-56879133bb9f" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the top 10 sender domains of emails which are submitted as false positive by admins\r\nCloudAppEvents \r\n| where ActionType == \"AdminSubmissionSubmitted\" \r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain)\r\n| where SubmissionContentType == \"Mail\" and SubmissionType ==\"3\"\r\n| summarize count() by P2SenderDomain\r\n| top 10 by count_ desc\r\n| project ['Sender Domain']=P2SenderDomain, ['Emails']=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "fp admin - top-sender-domains table", + "id": "42844dc9-4418-487b-a5ad-31e1f6b4b487" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises all emails submitted as false positive by admins summarizing by the original filter verdict threat type\r\nCloudAppEvents \r\n| where ActionType == \"AdminSubmissionSubmitted\" \r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| extend Admin_SubmissionType=\r\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\" ,\"Email\",\r\n\"Other\"),\r\nP2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain),NetworkMessageId=tostring((parse_json(RawEventData).ObjectId)),DetectionVerdict=tostring((parse_json(RawEventData)).DeliveryMessageInfo.FinalFilterVerdict),PolicyOverride=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicyOverride),PolicyPolicyOverrideType=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicySource)\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\"\r\n| summarize count() by PolicyOverride,DetectionVerdict,Admin_SubmissionType\r\n| top 10 by count_ desc\r\n| project ['Policy Override']=PolicyOverride, ['Detection Verdict']=DetectionVerdict, ['Submission Type']=Admin_SubmissionType, ['Emails']=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Emails", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "40ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "fp admin - by-verdict table", + "id": "3ebbd402-06ef-45a7-b4ee-c5938b98b540" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "10" + }, + "name": "fp admin - group", + "styleSettings": { + "showBorder": true + }, + "id": "b6215b53-c181-4693-a14f-441809f65f38" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
False Positive (FP) User Submissions\r\n
\r\n\r\nThis section provides insights into email message False Postive(FP) Submissions performed by end users in Microsoft Defender for Office 365 where the message was flagged as a threat by Microsoft Defender for Office 365 but was later reported as No Threat by users. User submissions are critical feedback mechanisms that help security teams identify overly aggressive detection rules, refine security policies, and reduce user friction. High false positive rates can erode user trust and lead to security fatigue, so monitoring these metrics helps balance protection with productivity.

**Recommended action:** High user false-positive volume suggests over-aggressive filtering - review the affected senders and adjust policy." + }, + "name": "fp user - section header", + "id": "0d93d7ee-a61e-43b7-bdcd-172bd79ad050" + }, + { + "type": 1, + "content": { + "json": "### User Submission Trend\r\n\r\n**Displays the volume (per {Granularity}) of false positive submissions from end users. A sudden spike may indicate a new detection rule causing widespread misclassification, while a declining trend suggests improving detection accuracy. Monitoring this trend helps security teams respond quickly to detection issues before they impact user productivity.**" + }, + "name": "fp user - trend heading", + "id": "c3f8ae45-0498-4fa8-b9d1-35e926932639" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the daily ammount of user false positive submission by submission type.\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(CloudAppEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(CloudAppEvents | summarize max(Timestamp));\r\nlet agg = materialize(CloudAppEvents\r\n| where ActionType contains \"UserSubmission\"\r\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| where SubmissionType == \"3\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\"\r\n| summarize Count = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['User FP Submissions'] = coalesce(Count, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "User FP Submissions", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "name": "fp user - submissions trend", + "id": "847032f5-56a8-4681-9665-9e917c7c9355" + }, + { + "type": 1, + "content": { + "json": "### User False Positive Submissions by State
\r\n\r\n**Displays the total number of user-reported false positive email submissions grouped by their processing state (e.g., pending, completed). Helps track submission workflow and resolution progress.**" + }, + "customWidth": "50", + "name": "fp user - by-state heading", + "id": "7bd03278-7734-4fbf-a502-95b42e90160e" + }, + { + "type": 1, + "content": { + "json": "### Top Users Performing False Positive Submissions
\r\n\r\n**Lists the top 15 users who reported emails as false positives (legitimate messages incorrectly flagged as threats). Helps identify frequent reporters and potential training or policy adjustment needs.**" + }, + "customWidth": "50", + "name": "fp user - top-users heading", + "id": "7e2b987b-325d-4f69-8d6b-fafd6676a03a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of user false positive submission by submission state.\r\nCloudAppEvents \r\n| where ActionType contains \"UserSubmission\" \r\n| extend Record = (parse_json(RawEventData)).RecordType,SubmissionState = parse_json(RawEventData).SubmissionState,SubmissionId=parse_json(RawEventData).SubmissionId,SubmissionType = parse_json(RawEventData).SubmissionType,SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| where Record == 29 and SubmissionType == \"3\"\r\n| summarize count() by tostring(SubmissionState)", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "fp user - by-state pie", + "id": "df79d08b-3eac-4101-a3f2-3a4a3bf450ce" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the top users performing false positive submissions.\r\nCloudAppEvents \r\n| where ActionType == \"UserSubmission\" \r\n| extend Record = (parse_json(RawEventData)).RecordType,SubmissionState = parse_json(RawEventData).SubmissionState,SubmissionId=parse_json(RawEventData).SubmissionId,SubmissionType = parse_json(RawEventData).SubmissionType,SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\r\n| where Record == 29 and SubmissionType == \"3\"\r\n| extend UserId = (parse_json(RawEventData)).UserId\r\n| summarize ['Submissions']=count() by ['User']=tostring(UserId)\r\n| top 15 by ['Submissions'] desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "16ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "fp user - top-users pie", + "id": "ec7505d8-3a70-4bde-a985-baf5a0c4ec34" + }, + { + "type": 1, + "content": { + "json": "### User Submission False Positive Malware Detection Breakdown\r\n**Shows the count of user-submitted false positive reports (legitimate emails flagged as malware) grouped by the detection technique that flagged them. Malware quarantine is admin-only by default, so this table only populates when a custom quarantine policy lets users view and report their own malware detections - it is usually empty.**" + }, + "customWidth": "100", + "name": "fp user - malware-verdict heading", + "id": "693b1072-5ddd-49d0-a0f5-2bba4c287edf" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//User false positive submissions whose email was originally flagged as Malware, by the detection technique that flagged it. A high count means that technique most often misclassifies legitimate mail as Malware.\r\nCloudAppEvents\r\n| where ActionType == \"UserSubmission\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), NetworkMessageId = tostring(R.ObjectId), RecipientObjectId = AccountObjectId\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\"\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Inbound\" and DetectionMethods has \"Malware\"\r\n| mv-expand Technique = parse_json(DetectionMethods).Malware to typeof(string)\r\n| where isnotempty(Technique)\r\n| summarize FPSubmissions = count(), DistinctDomains = dcount(SenderFromDomain) by Technique\r\n| sort by FPSubmissions desc\r\n| project ['Detection Technique'] = Technique, ['FP Submissions'] = FPSubmissions, ['Distinct Sender Domains'] = DistinctDomains", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Distinct Sender Domains", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "22ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp user - malware-verdict table", + "id": "10ea55bd-937e-454d-b6cc-a9dccfdf3417" + }, + { + "type": 1, + "content": { + "json": "### User Submission False Positive Phish Detection Breakdown\r\n**Shows the count of user-submitted false positive reports (legitimate emails flagged as phishing) grouped by the detection technique that flagged them. Helps identify which filtering technologies most often misclassify valid messages as phishing.**" + }, + "customWidth": "100", + "name": "fp user - phish-verdict heading", + "id": "6dd14abb-2772-4271-89d8-8c0dcdbfd9e5" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//User false positive submissions whose email was originally flagged as Phish, by the detection technique that flagged it. A high count means that technique most often misclassifies legitimate mail as Phish.\r\nCloudAppEvents\r\n| where ActionType == \"UserSubmission\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), NetworkMessageId = tostring(R.ObjectId), RecipientObjectId = AccountObjectId\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\"\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Inbound\" and DetectionMethods has \"Phish\"\r\n| mv-expand Technique = parse_json(DetectionMethods).Phish to typeof(string)\r\n| where isnotempty(Technique)\r\n| summarize FPSubmissions = count(), DistinctDomains = dcount(SenderFromDomain) by Technique\r\n| sort by FPSubmissions desc\r\n| project ['Detection Technique'] = Technique, ['FP Submissions'] = FPSubmissions, ['Distinct Sender Domains'] = DistinctDomains", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Distinct Sender Domains", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "22ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp user - phish-verdict pie", + "id": "57049aad-eb17-4e65-a8a4-b5d05b0501cd" + }, + { + "type": 1, + "content": { + "json": "### User Submission False Positive Spam Detection Breakdown\r\n**Shows the count of user-submitted false positive reports (legitimate emails flagged as spam) grouped by the detection technique that flagged them. Helps identify which filtering technologies most often misclassify valid messages as spam.**" + }, + "customWidth": "100", + "name": "fp user - spam-verdict heading", + "id": "5479b2ed-b629-41e7-9857-c91191b09c8f" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//User false positive submissions whose email was originally flagged as Spam, by the detection technique that flagged it. A high count means that technique most often misclassifies legitimate mail as Spam.\r\nCloudAppEvents\r\n| where ActionType == \"UserSubmission\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), NetworkMessageId = tostring(R.ObjectId), RecipientObjectId = AccountObjectId\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\"\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Inbound\" and DetectionMethods has \"Spam\"\r\n| mv-expand Technique = parse_json(DetectionMethods).Spam to typeof(string)\r\n| where isnotempty(Technique)\r\n| summarize FPSubmissions = count(), DistinctDomains = dcount(SenderFromDomain) by Technique\r\n| sort by FPSubmissions desc\r\n| project ['Detection Technique'] = Technique, ['FP Submissions'] = FPSubmissions, ['Distinct Sender Domains'] = DistinctDomains", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Distinct Sender Domains", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "22ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp user - spam-verdict pie", + "id": "45a2122e-0281-4602-906d-a0406ed20d54" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Sender Domains for User False Positive Submissions
\r\n\r\n**Lists the top 10 sender domains of emails reported as false positives by users (legitimate messages incorrectly flagged as threats). Helps identify domains frequently misclassified.**" + }, + "customWidth": "100", + "name": "fp user - top-sender-domains heading", + "id": "2751fca4-3ac5-45fe-a965-8c811018926a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Top 10 sender domains reported as false positives by users, with each domain's total inbound volume and the share of it reported as FP (a high rate flags a domain whose legitimate mail is most often misclassified).\r\nlet totalByDomain = EmailEvents | where EmailDirection == \"Inbound\" | summarize TotalInbound = count() by SenderFromDomain;\r\nCloudAppEvents\r\n| where ActionType == \"UserSubmission\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), P2SenderDomain = tostring(R.P2SenderDomain)\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\"\r\n| summarize FPSubmissions = count() by P2SenderDomain\r\n| join kind=leftouter (totalByDomain) on $left.P2SenderDomain == $right.SenderFromDomain\r\n| extend FPPct = iif(isnull(TotalInbound) or TotalInbound == 0, 0.0, round(FPSubmissions * 100.0 / TotalInbound, 2))\r\n| top 10 by FPSubmissions desc\r\n| project ['Sender Domain'] = P2SenderDomain, ['FP Submissions'] = FPSubmissions, ['Total Inbound'] = coalesce(TotalInbound, 0), ['FP Submission %'] = FPPct", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "18ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "FP Submission %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "16ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp user - top-sender-domains table", + "id": "c69b126d-9f25-44a0-b96d-601d89a563f1" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Senders in User False Positive Submissions
\r\n\r\n**Displays the top 10 email senders whose messages were reported as false positives by users (legitimate emails incorrectly flagged as threats). Helps identify senders frequently misclassified.**" + }, + "customWidth": "100", + "name": "fp user - top-senders heading", + "id": "b39966ad-2b40-4144-ae3f-c7ac6b9fb97c" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Top 10 email senders reported as false positives by users, with each sender's total inbound volume and the share reported as FP.\r\nlet totalBySender = EmailEvents | where EmailDirection == \"Inbound\" | summarize TotalInbound = count() by SenderMailFromAddress;\r\nCloudAppEvents\r\n| where ActionType == \"UserSubmission\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), NetworkMessageId = tostring(R.ObjectId), RecipientObjectId = AccountObjectId\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\"\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Inbound\"\r\n| summarize FPSubmissions = count() by SenderMailFromAddress\r\n| join kind=leftouter (totalBySender) on SenderMailFromAddress\r\n| extend FPPct = iif(isnull(TotalInbound) or TotalInbound == 0, 0.0, round(FPSubmissions * 100.0 / TotalInbound, 2))\r\n| top 10 by FPSubmissions desc\r\n| project ['Sender Address'] = SenderMailFromAddress, ['FP Submissions'] = FPSubmissions, ['Total Inbound'] = coalesce(TotalInbound, 0), ['FP Submission %'] = FPPct", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Inbound", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "18ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "FP Submission %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "16ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp user - top-senders table", + "id": "077ab610-58ed-4d23-886c-dbf912cef2d7" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Subjects in User False Positive Submissions
\r\n\r\n**Displays the top 10 email subjects reported as false positives by users (legitimate messages incorrectly flagged as threats). Helps identify common patterns in misclassified emails.**" + }, + "customWidth": "100", + "name": "fp user - top-subjects heading", + "id": "a5b939e1-0fbf-4ee1-a6a3-01fa7639af3a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Top 10 email subjects reported as false positives by users, with how many distinct recipients reported each (a subject reported by many users is a broad misclassification pattern).\r\nCloudAppEvents\r\n| where ActionType == \"UserSubmission\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), NetworkMessageId = tostring(R.ObjectId), RecipientObjectId = AccountObjectId\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\"\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Inbound\"\r\n| summarize FPSubmissions = count(), DistinctRecipients = dcount(RecipientObjectId) by Subject\r\n| top 10 by FPSubmissions desc\r\n| project ['Subject'] = Subject, ['FP Submissions'] = FPSubmissions, ['Distinct Recipients'] = DistinctRecipients", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Subject", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "70ch" + } + }, + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Distinct Recipients", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "18ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp user - top-subjects table", + "id": "71d5c290-f5d0-493c-b821-b5345dbe7312" + }, + { + "type": 1, + "content": { + "json": "### Top 10 Intra-Org Senders in User False Positive Submissions
\r\n\r\n**Displays the top 10 internal senders whose emails were reported as false positives by users (legitimate intra-org messages incorrectly flagged as threats). Helps identify internal communication patterns causing misclassification.**" + }, + "customWidth": "100", + "name": "fp user - intraorg-senders heading", + "id": "1d38f458-dfde-4608-ad7d-ee8628e85ee7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Top 10 internal senders whose emails were reported as false positives by users, with total intra-org volume and the share reported as FP.\r\nlet totalBySender = EmailEvents | where EmailDirection == \"Intra-org\" | summarize TotalIntraOrg = count() by SenderMailFromAddress;\r\nCloudAppEvents\r\n| where ActionType == \"UserSubmission\"\r\n| extend R = parse_json(RawEventData)\r\n| extend SubmissionType = tostring(R.SubmissionType), SubmissionContentType = tostring(R.SubmissionContentType), NetworkMessageId = tostring(R.ObjectId), RecipientObjectId = AccountObjectId\r\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\"\r\n| join EmailEvents on NetworkMessageId, RecipientObjectId\r\n| where EmailDirection == \"Intra-org\"\r\n| summarize FPSubmissions = count() by SenderMailFromAddress\r\n| join kind=leftouter (totalBySender) on SenderMailFromAddress\r\n| extend FPPct = iif(isnull(TotalIntraOrg) or TotalIntraOrg == 0, 0.0, round(FPSubmissions * 100.0 / TotalIntraOrg, 2))\r\n| top 10 by FPSubmissions desc\r\n| project ['Sender Address'] = SenderMailFromAddress, ['FP Submissions'] = FPSubmissions, ['Total Intra-org'] = coalesce(TotalIntraOrg, 0), ['FP Submission %'] = FPPct", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "FP Submissions", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "Total Intra-org", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "18ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "FP Submission %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "16ch" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "fp user - intraorg-senders table", + "id": "b6699a7f-897a-4016-ae2c-d816f3a9492b" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "10" + }, + "name": "fp user - group", + "styleSettings": { + "showBorder": true + }, + "id": "2ad3311e-e92b-4a49-bdd0-775f085c4587" + }, + { + "type": 1, + "content": { + "json": "# File Malware Detections (SharePoint, Teams and OneDrive)\r\n\r\n---\r\n\r\nThis tab provides insights into malicious file detections across Microsoft collaboration platforms such as SharePoint, OneDrive, and Teams.\r\n\r\n[

Safe Attachments for SharePoint, OneDrive, and Microsoft Teams

](https://learn.microsoft.com/en-us/defender-office-365/safe-attachments-for-spo-odfb-teams-about)\r\n[

Built-in virus protection in SharePoint, SharePoint Embedded, OneDrive, and Microsoft Teams

](https://learn.microsoft.com/en-us/defender-office-365/anti-malware-protection-for-spo-odfb-teams-about) " + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "9" + }, + "name": "filemal - tab description", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "cefcac88-f373-4748-b0ea-e7600f63edd7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Microsoft Defender for Office 365 value for files in SharePoint / OneDrive / Teams: total files processed, how many had a malware detection, and how many were scanned with no detection. A per-period Trend series feeds the tile sparkline.\r\nlet gran = {Granularity};\r\nlet base = FileMaliciousContentInfo;\r\nlet counts = union\r\n(base | summarize Count = count() | extend Cat = \"Total Files Processed (SPO/ODB/Teams)\", Ord = 1),\r\n(base | where isnotempty(ThreatTypes) | summarize Count = count() | extend Cat = \"Files with Malware Detected\", Ord = 2),\r\n(base | where isempty(ThreatTypes) | summarize Count = count() | extend Cat = \"Files Scanned - No Detection\", Ord = 3);\r\nlet tagged = union\r\n(base | extend Cat = \"Total Files Processed (SPO/ODB/Teams)\"),\r\n(base | where isnotempty(ThreatTypes) | extend Cat = \"Files with Malware Detected\"),\r\n(base | where isempty(ThreatTypes) | extend Cat = \"Files Scanned - No Detection\");\r\nlet trends = tagged | make-series Trend = count() default = 0 on Timestamp step gran by Cat;\r\ncounts\r\n| join kind=leftouter (trends) on Cat\r\n| sort by Ord asc\r\n| project Count, Details = Cat, Trend", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "tiles", + "tileSettings": { + "titleContent": { + "columnMatch": "Details", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "Count", + "formatter": 12, + "formatOptions": { + "min": 0, + "palette": "blue" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + "secondaryContent": { + "columnMatch": "Trend", + "formatter": 21, + "formatOptions": { + "min": 0, + "palette": "blue" + } + }, + "showBorder": true, + "size": "auto" + } + }, + "customWidth": "100", + "name": "filemal - MDO value tiles", + "id": "843e58a9-6324-4a90-a652-bfb0549e79dc", + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "9" + } + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
File Malware Detection (SharePoint, OneDrive, and Teams)\r\n
\r\n\r\nThis section monitors malware detections in files stored across Microsoft 365 collaboration platforms. Microsoft Defender for Office 365 and built-in SharePoint Online antivirus work together to scan files uploaded to SharePoint, OneDrive, and Teams. Understanding file-based malware patterns helps protect collaborative workspaces and identify potential security risks in shared content.

**Recommended action:** For repeat file owners or sites, investigate possible compromise and confirm Safe Attachments for SharePoint, OneDrive and Teams is enabled." + }, + "name": "filemal - section header", + "id": "373fe4e5-fc90-49cf-93ba-c8b100efce57" + }, + { + "type": 1, + "content": { + "json": "### File Malware Detection Trend
\r\n\r\n**This visual tracks the volume (per {Granularity}) of malware detections in files across all Microsoft 365 workloads. Spikes in detection activity may indicate targeted attacks or emerging malware campaigns affecting collaborative platforms. Regular monitoring helps identify unusual patterns that require investigation.**" + }, + "name": "filemal - trend heading", + "id": "30145585-8998-443a-b6ec-062d136c621f" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total files located on SharePoint, OneDrive and Teams with Malware detections over time summarizing the data daily.\r\nlet gran = {Granularity};\r\nlet agg = materialize(FileMaliciousContentInfo\r\n| summarize Count = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['Files']=coalesce(Count, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "tileSettings": { + "showBorder": false + }, + "graphSettings": { + "type": 0 + }, + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "Files", + "color": "blueDark" + } + ], + "showDataPoints": true + } + }, + "customWidth": "100", + "name": "filemal - detection trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "d39cea9b-75a8-4c29-bfdb-2e0db855e98a" + }, + { + "type": 1, + "content": { + "json": "### Malware Family Analysis - Defender for Office 365\r\n**Provides a breakdown of malware detections in files scanned by Microsoft Defender for Office 365 (Safe Attachments detonation) across SharePoint, OneDrive, and Teams. The table lists each malware family with total detections, distinct files, affected locations and when it was last seen, helping identify dominant threats and their spread across collaboration platforms.**" + }, + "customWidth": "100", + "name": "filemal - family MDO heading", + "id": "4e330873-f732-4d37-a7b0-dced08b019b0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query summarizes File malware detections by Microsoft Defender for Office 365 (Safe Attachments detonation) into a per-family table: total detections, distinct files, affected locations (file owner or site) and when the family was last seen.\r\nFileMaliciousContentInfo\r\n| where tostring(DetectionMethods) contains \"detonation\"\r\n| extend Owner = iff(isnotempty(FileOwnerUpn), FileOwnerUpn, strcat(\"Site: \", tostring(split(FolderPath, \"/\")[4])))\r\n| summarize ['Files']=count(), ['Distinct Files']=dcount(SHA256), ['Affected Locations']=dcount(Owner), ['Last Seen']=max(Timestamp) by ThreatNames\r\n| sort by ['Files'] desc\r\n| project ['Threat Name']=ThreatNames, ['Files'], ['Distinct Files'], ['Affected Locations'], ['Last Seen']", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "tileSettings": { + "showBorder": false, + "titleContent": { + "columnMatch": "RawinfoVirusInfo", + "formatter": 1 + }, + "leftContent": { + "columnMatch": "count_", + "formatter": 12, + "formatOptions": { + "palette": "auto" + }, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + }, + "graphSettings": { + "type": 0, + "topContent": { + "columnMatch": "RawinfoVirusInfo", + "formatter": 1 + }, + "centerContent": { + "columnMatch": "count_", + "formatter": 1, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + }, + "chartSettings": { + "xAxis": "RawinfoVirusInfo", + "createOtherGroup": 15 + }, + "gridSettings": { + "formatters": [ + { + "columnMatch": "Files", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "filemal - family MDO table", + "id": "c3fbb1c9-be67-43b9-9a32-7fb265a84ffc" + }, + { + "type": 1, + "content": { + "json": "### Malware Family Analysis - SharePoint AV\r\n**Provides a breakdown of malware detections in files across SharePoint, OneDrive, and Teams caught by the built-in SharePoint antivirus (Antimalware engine). The table lists each malware family with total detections, distinct files, affected locations and when it was last seen, helping identify prevalent threats and their spread across collaboration environments.**" + }, + "customWidth": "100", + "name": "filemal - family SPO-AV heading", + "id": "331a8361-6e81-4615-b33a-97ebb3e31529" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query summarizes File malware detections by the built-in SharePoint antivirus (Antimalware engine) into a per-family table: total detections, distinct files, affected locations (file owner or site) and when the family was last seen.\r\nFileMaliciousContentInfo\r\n| where tostring(DetectionMethods) contains \"Antimalware engine\"\r\n| extend Owner = iff(isnotempty(FileOwnerUpn), FileOwnerUpn, strcat(\"Site: \", tostring(split(FolderPath, \"/\")[4])))\r\n| summarize ['Files']=count(), ['Distinct Files']=dcount(SHA256), ['Affected Locations']=dcount(Owner), ['Last Seen']=max(Timestamp) by ThreatNames\r\n| sort by ['Files'] desc\r\n| project ['Threat Name']=ThreatNames, ['Files'], ['Distinct Files'], ['Affected Locations'], ['Last Seen']", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "chartSettings": { + "xAxis": "RawinfoVirusInfo", + "createOtherGroup": 10 + }, + "gridSettings": { + "formatters": [ + { + "columnMatch": "Files", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "filemal - family SPO-AV table", + "id": "bbcdccd9-eedb-476a-a0e7-8504f8770229" + }, + { + "type": 1, + "content": { + "json": "### Malware Detections by Location
\r\n\r\n**Displays the number of malware detections grouped by specific SharePoint sites or OneDrive locations. Helps identify which sites have the highest volume of detected threats for targeted remediation and security hardening.**" + }, + "customWidth": "50", + "name": "filemal - by-location heading", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "c5668d6e-7c0e-4ce3-9509-ca93dda3efad" + }, + { + "type": 1, + "content": { + "json": "### Malware Detections by Application
\r\n\r\n**Summarizes malware detections across Microsoft collaboration apps, including SharePoint, OneDrive, and Teams. Helps identify which applications experience the highest volume of detected threats for targeted security measures.**" + }, + "customWidth": "50", + "name": "filemal - by-application heading", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "07e64ca9-04a2-44b2-a044-e927bc73ef1b" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query lists total Malware detections of files on SharePoint, OneDrive and Teams by the location (site or personal path) where the file resides.\r\nFileMaliciousContentInfo\r\n| extend ['Site / Location'] = tostring(split(FolderPath, '/')[4])\r\n| summarize ['Detections'] = count() by ['Site / Location']\r\n| sort by ['Detections'] desc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "50", + "name": "filemal - by-location table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "3ce3ea65-a4df-450f-871c-8956d59818a9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises total Malware detections of files located on SharePoint, OneDrive and Teams summarizing the data by the Microsoft collaboration application (workload).\r\nFileMaliciousContentInfo\r\n| summarize count() by Workload\r\n| sort by count_ desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "50", + "name": "filemal - by-application pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "003afc8e-0403-4aa9-9084-a3c2e435216a" + }, + { + "type": 1, + "content": { + "json": "### Top File Owners Holding Malware\r\n**Lists the users (or the SharePoint/Teams site, when a file has no individual owner) whose files in SharePoint, OneDrive or Teams were flagged as malware, with the count of malicious files, distinct files, affected workloads and sample threat names. Helps pinpoint the accounts and collaboration locations most affected by malicious content for targeted remediation.**" + }, + "customWidth": "100", + "name": "filemal - top-owners heading", + "id": "c2f8d3b5-0a4e-4b7c-9d23-8e6f0a1b2c34" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Top file owners (or the SharePoint/Teams site, when a file has no user owner) whose SharePoint/OneDrive/Teams files were flagged as malware, with distinct files, workloads and sample threat names.\r\nFileMaliciousContentInfo\r\n| extend Owner = iff(isnotempty(FileOwnerUpn), FileOwnerUpn, strcat(\"Site: \", tostring(split(FolderPath, \"/\")[4])))\r\n| summarize ['Malicious Files'] = count(),\n ['Distinct Files'] = dcount(SHA256),\n ['Workloads'] = make_set(Workload, 3),\n ['Sample Threats'] = make_set_if(ThreatNames, isnotempty(ThreatNames), 5),\n ['Last Seen'] = max(Timestamp)\n by ['Owner']=Owner\n| top 20 by ['Malicious Files']", + "size": 0, + "title": "Top File Owners Holding Malware", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Malicious Files", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Distinct Files", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "name": "filemal - top-owners table", + "id": "36d9a683-9f9d-4a70-84d9-ec351542f827" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "9" + }, + "name": "filemal - group", + "styleSettings": { + "showBorder": true + }, + "id": "50886cd9-87bf-4a84-bd80-d7f44441b3f7" + }, + { + "type": 1, + "content": { + "json": "# Post-Delivery & Quarantine Insights\r\n\r\n---\r\nThis tab covers what happens to threats **after delivery**: Zero-hour Auto Purge (ZAP) remediation of malicious messages already in mailboxes, and quarantine management - what is held, released, and by whom. Together they show how effectively post-delivery response contains threats that reached the inbox." + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "11" + }, + "name": "postdelivery - tab description", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "93371620-d968-4987-bddd-6c9b9e5a0344" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Post Delivery Protection offered by ZAP\r\n
\r\n\r\nThis section provides insights into Microsoft Defender for Office 365's post-delivery protection capabilities through Zero-Hour Auto Purge (ZAP). ZAP is a critical security feature that continuously monitors delivered emails and automatically removes messages that are later identified as malicious. These visuals help track ZAP effectiveness, response times, and remediation patterns.

**Recommended action:** High post-delivery ZAP volume means threats are reaching inboxes before being caught - review pre-delivery filtering and detection latency." + }, + "name": "postdelivery - section header", + "id": "b22ee5f1-a2dc-4509-92a3-1dbcad3a6ee7" + }, + { + "type": 1, + "content": { + "json": "### ZAP Post-Delivery Actions (per {Granularity})
\r\n\r\n**Shows the count (per {Granularity}) of emails that were remediated post-delivery by Zero-Hour Auto Purge (ZAP). Helps track how often threats are detected and removed after reaching user mailboxes.**" + }, + "customWidth": "50", + "name": "postdelivery - zap-actions heading", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "af1aa73f-d952-4827-bcc9-b97a19016829" + }, + { + "type": 1, + "content": { + "json": "### ZAP Actions by Detection Type (per {Granularity})
\r\n\r\n**Visualizes the count (per {Granularity}) of post-delivery remediation actions performed by Zero-Hour Auto Purge (ZAP), broken down by detection type (Spam ZAP, Phish ZAP, Malware ZAP). Helps track which threat categories are most frequently remediated after delivery.**" + }, + "customWidth": "50", + "name": "postdelivery - by-detection-type heading", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "8eb38cb1-4e2d-435a-81be-e661c9b89ff4" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the daily ammount of emails that had a post delivery action from zero-hour auto purge.\r\nlet gran = {Granularity};\r\nlet agg = materialize(EmailPostDeliveryEvents \r\n| where ActionType has \"ZAP\"\r\n| summarize Count = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['Zapped Emails'] = coalesce(Count, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "Zapped Emails", + "color": "blueDark" + } + ] + } + }, + "customWidth": "50", + "name": "postdelivery - zap-actions trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "dd60fd71-4e14-4b38-ad22-39f1e3e3f55a" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the daily ammount of emails that had a post delivery action from zero-hour auto purge, summarizing by phish,spam or malware detection action\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailPostDeliveryEvents\r\n| where ActionType has \"ZAP\"\r\n| summarize [\"Spam ZAP\"]=countif(ActionType has 'Spam ZAP'), [\"Phish ZAP\"]=countif(ActionType has 'Phish ZAP'), [\"Malware ZAP\"]=countif(ActionType has 'Malware ZAP') by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, [\"Spam ZAP\"]=coalesce([\"Spam ZAP\"],0), [\"Phish ZAP\"]=coalesce([\"Phish ZAP\"],0), [\"Malware ZAP\"]=coalesce([\"Malware ZAP\"],0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "50", + "name": "postdelivery - by-detection-type trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "511f4a43-9f56-48ad-a644-b72722af82d7" + }, + { + "type": 1, + "content": { + "json": "### ZAP Remediation by Destination
\r\n\r\n**This visual shows where ZAP moves malicious emails during remediation. Post-delivery actions can send emails to different locations: Quarantine (isolated for admin review), Deleted Items (soft delete), Junk Email folder, or back to Inbox (for false positive corrections). Understanding these patterns helps evaluate ZAP policy configurations and ensures malicious content is properly isolated from users.**" + }, + "name": "postdelivery - by-destination heading", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "dc7b9b6c-36fb-4ae4-a3e8-ff11da681c97" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of emails that had a post delivery action, summarizing the data daily by the final location as a result of the action\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailPostDeliveryEvents\r\n| where ActionType contains \"ZAP\"\r\n| summarize Quarantine=countif(DeliveryLocation has 'Quarantine'), ['Deleted Items']=countif(DeliveryLocation has 'Delete'), Junk=countif(DeliveryLocation has 'Junk'), Inbox=countif(DeliveryLocation has 'Inbox') by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, Quarantine=coalesce(Quarantine,0), ['Deleted Items']=coalesce(['Deleted Items'],0), Junk=coalesce(Junk,0), Inbox=coalesce(Inbox,0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "name": "postdelivery - by-destination trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "cbb737ef-1c7e-4b3e-af26-a553fe6147c9" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "11" + }, + "name": "postdelivery - group", + "styleSettings": { + "showBorder": true + }, + "id": "e436ecee-8886-4179-a578-9e4a42e75b9e" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Quarantine Management and Insights\r\n
\r\n\r\nThis section provides comprehensive insights into quarantine operations, including release patterns, detection methods, and threat categorization. It helps security teams understand what types of threats are being quarantined and monitor quarantine release activity to identify potential false positives or security policy effectiveness.

**Recommended action:** Investigate high release rates - they indicate false positives or risky user releases; review quarantine policies and release permissions." + }, + "name": "quarantine - section header", + "id": "c4862977-6670-4716-8109-252a361d7478" + }, + { + "type": 1, + "content": { + "json": "### Quarantine Release Trend
\r\n\r\n**This visual displays the per-{Granularity} trend of emails released from quarantine by administrators. Monitoring this metric helps identify patterns in quarantine management and potential areas where policy adjustments may be needed to reduce unnecessary quarantines.**" + }, + "name": "quarantine - release-trend heading", + "id": "8526a5e0-c6a4-44e3-b00a-5e135374f58e" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the daily ammount of emails released from quarantine\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailPostDeliveryEvents\r\n| where ActionTrigger has \"AdminAction\" and Action has 'Quarantine release'\r\n| summarize Count = count() by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, ['Quarantine Releases'] = coalesce(Count, 0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "Quarantine Releases", + "color": "blueDark" + } + ] + } + }, + "customWidth": "100", + "name": "quarantine - release trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "3625d1f1-f34a-4cbf-a78f-eb2e5506bad4" + }, + { + "type": 1, + "content": { + "json": "### Quarantine Release Percentage
\r\n\r\n**Calculates the percentage of quarantined emails that were successfully released compared to the total quarantined messages. This metric helps measure engagement with quarantine and assess the effectiveness of quarantine policies.**" + }, + "customWidth": "40", + "name": "quarantine - release-pct heading", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "e3a9502c-9030-4621-b248-55cdf69f81ae" + }, + { + "type": 1, + "content": { + "json": "### Quarantine Release Analysis by Detection Type
\r\n\r\n**For each detection technology, this shows the share of its quarantined emails that were later released from quarantine (Release % = released / quarantined). A high release rate flags a detector that may be over-flagging legitimate mail - a strong candidate for policy or rule tuning. The Released count shows the volume behind each rate.**" + }, + "customWidth": "60", + "name": "quarantine - release-by-detection heading", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "976fc90f-bf46-4315-b05e-4e501b37b869" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the percentage of emails released from quarantine out of the total ammount of quarantined emails\r\nlet Quarantine_Releases = toscalar(EmailPostDeliveryEvents\r\n| where Action == \"Quarantine release\"\r\n| join kind=leftouter (EmailEvents | where DeliveryLocation == \"Quarantine\") on NetworkMessageId\r\n| summarize count());\r\nlet Quarantined_Mailflow = toscalar(EmailEvents | where DeliveryLocation == \"Quarantine\"\r\n| summarize count());\r\nprint\r\nQuarantine_Releases = toreal(Quarantine_Releases),\r\nQuarantined_Mailflow = toreal(Quarantined_Mailflow),\r\nRelease_Percentage = abs(round(((toreal(Quarantine_Releases)/toreal(Quarantined_Mailflow))*100),2))", + "size": 0, + "showAnalytics": true, + "title": " ", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "stat", + "tileSettings": { + "titleContent": { + "columnMatch": "Release_Percentage", + "formatter": 12, + "formatOptions": { + "palette": "none" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + }, + "showBorder": true, + "sortCriteriaField": "Release_Percentage", + "size": "auto" + }, + "statSettings": { + "valueField": "Release_Percentage", + "valueAggregation": "None", + "colorSettings": { + "type": "thresholds", + "mode": "foreground", + "heatmapPalette": "greenRed", + "thresholdsGrid": [ + { + "operator": "<", + "thresholdValue": "5", + "representation": "green" + }, + { + "operator": ">", + "thresholdValue": "5", + "representation": "redDark" + } + ] + }, + "iconSettings": { + "thresholdsGrid": [] + }, + "numberFormatSettings": { + "unit": 1, + "options": { + "style": "decimal" + } + }, + "tagText": "Quarantine Release Percentage", + "valueFontStyle": "mega", + "tagTextPosition": "bottom" + } + }, + "customWidth": "40", + "name": "quarantine - release-pct stat", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "64e157ce-2f6a-423f-9ce5-eade8b6f41d5" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Per detection technology: the share of its quarantined emails that were later released from quarantine.\r\n//Release % = released / quarantined for that detection technology - a high rate flags a detector that may be over-flagging legitimate mail (potential false positives). Detectors with fewer than 10 quarantined emails are excluded so the rate is statistically meaningful.\r\nEmailEvents\r\n| where DeliveryLocation == \"Quarantine\"\r\n| extend MDO_detection = parse_json(DetectionMethods)\r\n| extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0]))\r\n| extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\")\r\n| where FirstSubcategory contains \"Malware\" or FirstSubcategory contains \"Phish\" or FirstSubcategory contains \"Spam\"\r\n| join kind=leftouter (\r\n EmailPostDeliveryEvents\r\n | where Action == \"Quarantine release\"\r\n | distinct NetworkMessageId\r\n | extend ReleasedFlag = \"yes\"\r\n ) on NetworkMessageId\r\n| summarize Quarantined = dcount(NetworkMessageId), Released = dcountif(NetworkMessageId, ReleasedFlag == \"yes\") by FirstSubcategory\r\n| where Quarantined >= 10 and Released > 0\r\n| extend ReleaseRate = round(Released * 100.0 / Quarantined, 2)\r\n| project ['Detection Type']=FirstSubcategory, ['Quarantined Emails']=Quarantined, ['Released']=Released, ['Release %']=ReleaseRate\r\n| order by ['Release %'] desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Quarantined Emails", + "formatter": 0, + "formatOptions": { + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Released", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "90px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Release %", + "formatter": 4, + "formatOptions": { + "palette": "red", + "min": 0, + "max": 20, + "customColumnWidthSetting": "90px" + }, + "numberFormat": { + "unit": 1, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "60", + "name": "quarantine - release-by-detection pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "9a6d21b7-7542-4ae5-8f3f-b18474b52a20" + }, + { + "type": 1, + "content": { + "json": "### Malware Email Quarantine Analysis
\r\n\r\n**These visuals break down quarantined malware emails by their specific detection methods. Microsoft Defender for Office 365 employs multiple malware detection techniques including file detonation, file reputation analysis, and advanced filters. Understanding which detection methods are most frequently triggered helps optimize anti-malware policies and identify emerging malware tactics.
The line chart shows per-{Granularity} trends across all malware detection methods, while the table provides an overall distribution of detection reasons.**" + }, + "name": "quarantine - malware heading", + "id": "59f84161-a010-44c2-aec1-b72ed98ccdff" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of malware emails that are quarantined, summarized daily by the detection method\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailEvents\r\n| where DetectionMethods has \"Malware\" and DeliveryLocation == \"Quarantine\"\r\n| mv-expand Details = parse_json(DetectionMethods).Malware to typeof(string)\r\n| where isnotempty(Details)\r\n| summarize Count = count() by Details, Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct Details | extend d = 1) on d | project Timestamp, Details\r\n| join kind=leftouter (agg) on Timestamp, Details\r\n| project Timestamp, Details, Count = coalesce(Count, 0)\r\n| sort by Details asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "100", + "name": "quarantine - malware trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "a54a8daf-0be2-4c0e-a8d7-4ff0e0879fd2" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of malware emails that are quarantined, summarized by the detection method\r\n//(QA 2026-07-14) mv-expand over DetectionMethods.Malware (matching the sibling line chart) so each slice is a clean single method name instead of a bracketed JSON array.\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\" and DetectionMethods has 'Malware' and DeliveryLocation == \"Quarantine\"\r\n| mv-expand Malware = parse_json(DetectionMethods).Malware to typeof(string)\r\n| where isnotempty(Malware)\r\n| summarize count() by Malware\r\n| sort by count_ desc\r\n| project ['Detection Technology']=Malware, ['Detections']=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "quarantine - malware table", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "b5d0d022-cf41-47e5-ae06-cf2176b47758" + }, + { + "type": 1, + "content": { + "json": "### Phishing Email Quarantine Analysis
\r\n\r\n**These visuals break down quarantined phishing emails by their specific detection methods. Microsoft Defender for Office 365 employs multiple phishing detection techniques including impersonation protection, URL detonation, spoof detection, and advanced filters. Understanding which detection methods are most frequently triggered helps optimize anti-phishing policies and identify emerging phishing tactics.
The line chart shows per-{Granularity} trends across all phishing detection methods, while the table provides an overall distribution of detection reasons.**" + }, + "name": "quarantine - phish heading", + "id": "aca50104-cb68-4a8f-82ee-ea8eee25fe14" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of phish emails that are quarantined, summarized daily by the detection method\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailEvents\r\n| where DetectionMethods has \"Phish\" and DeliveryLocation == \"Quarantine\"\r\n| mv-expand Details = parse_json(DetectionMethods).Phish to typeof(string)\r\n| where isnotempty(Details)\r\n| summarize Count = count() by Details, Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct Details | extend d = 1) on d | project Timestamp, Details\r\n| join kind=leftouter (agg) on Timestamp, Details\r\n| project Timestamp, Details, Count = coalesce(Count, 0)\r\n| sort by Details asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "100", + "name": "quarantine - phish trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "57151360-0577-45ce-8fc6-10a3790865ce" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of phish emails that are quarantined, summarized by the detection method\r\n//(QA 2026-07-14) mv-expand over DetectionMethods.Phish (matching the sibling line chart) so each slice is a clean single method name instead of a bracketed JSON array.\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\" and DetectionMethods has 'Phish' and DeliveryLocation == \"Quarantine\"\r\n| mv-expand Phish = parse_json(DetectionMethods).Phish to typeof(string)\r\n| where isnotempty(Phish)\r\n| summarize count() by Phish\r\n| sort by count_ desc\r\n| project ['Detection Technology']=Phish, ['Detections']=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "quarantine - phish pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "df78c64b-76f6-4980-80df-d0d432e780a5" + }, + { + "type": 1, + "content": { + "json": "### Spam Email Quarantine Analysis
\r\n\r\n**These visuals provide detailed insights into quarantined spam emails categorized by detection methods. Spam detection technologies include advanced filters, general filters, bulk email filtering, reputation-based systems (IP, domain, URL), and mixed analysis detection. Analyzing spam quarantine patterns helps fine-tune spam filtering policies to balance security with user productivity and reduce false positives.
The line chart displays per-{Granularity} trends for each spam detection method, while the table shows the overall distribution.**" + }, + "name": "quarantine - spam heading", + "id": "e131910f-0233-474a-a9b8-9f70a49246cf" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the ammount of spam emails that are quarantined, summarized daily by the detection method\r\nlet gran = {Granularity};\r\nlet baseQuery = EmailEvents\r\n| where DetectionMethods has \"Spam\" and DeliveryLocation == \"Quarantine\";\r\nlet agg = materialize(baseQuery\r\n| mv-expand Details = parse_json(DetectionMethods).Spam to typeof(string)\r\n| where isnotempty(Details)\r\n| summarize Count = count() by Details, Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from toscalar(agg | summarize min(Timestamp)) to toscalar(agg | summarize max(Timestamp)) step gran\r\n| extend d = 1 | join kind=inner (agg | distinct Details | extend d = 1) on d | project Timestamp, Details\r\n| join kind=leftouter (agg) on Timestamp, Details\r\n| project Timestamp, Details, Count = coalesce(Count, 0)\r\n| sort by Details asc, Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "100", + "name": "quarantine - spam trend", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "5762bcc7-bbda-4a3d-91cf-de18fbdd2775" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the total ammount of spam emails that are quarantined, summarized by the detection method\r\n//(QA 2026-07-14) mv-expand over DetectionMethods.Spam (matching the sibling line chart) so each slice is a clean single method name instead of a bracketed JSON array.\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\" and DetectionMethods has 'Spam' and DeliveryLocation == \"Quarantine\"\r\n| mv-expand Spam = parse_json(DetectionMethods).Spam to typeof(string)\r\n| where isnotempty(Spam)\r\n| summarize count() by Spam\r\n| sort by count_ desc\r\n| project ['Detection Technology']=Spam, ['Detections']=count_", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "formatters": [ + { + "columnMatch": "Detections", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "30ch" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal" + } + } + } + ], + "filter": true + } + }, + "customWidth": "100", + "name": "quarantine - spam pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "2995f55b-17f9-458b-8630-e0370d14522a" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "11" + }, + "name": "quarantine - group", + "id": "430294af-c68f-4427-8b55-d552a3d89d42", + "styleSettings": { + "showBorder": true } - ], - "entityType": "Host" + }, + { + "type": 1, + "content": { + "json": "# Security Operations Center (SOC) Insights \r\n\r\n---\r\n\r\nThis tab provides a view for security operations. Combines incident response metrics with investigation insights to evaluate the effectiveness of both automated systems and manual interventions." + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "13" + }, + "name": "soc - tab description", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "fd65243c-514c-4813-978f-fb908226d049" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Security Incident Response Metrics\r\n
\r\n\r\n**Operational efficiency insights.** Tracks incident volume, resolution speed, automation efficacy, and classification accuracy to evaluate SOC performance.

**Recommended action:** Track mean time to close by severity against your SLA and investigate any severity trending upward." + }, + "name": "soc - incident-metrics section header", + "id": "f92c3e24-3e0f-4f4c-8ee9-3ec60832f7b1" + }, + { + "type": 1, + "content": { + "json": "### Email Security Incidents
\r\n\r\n**These visuals display the per-{Granularity} trend of email-related security incidents, as well as the proportion of email incidents compared to the total number of incidents in Defender.**" + }, + "name": "soc - email-incidents heading", + "id": "c1cf6796-6071-4d2e-bf2c-c5e8d2a99a12" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// Filter for incidents that have at least one Email Security alert\r\nlet gran = {Granularity};\r\nlet OfficeEmailAlerts = SecurityAlert\r\n | where ProductName contains \"Office 365 Advanced Threat Protection\" or ProductName contains \"Microsoft 365 Defender\"\r\n | project SystemAlertId;\r\nlet agg = materialize(SecurityIncident\r\n| summarize arg_max(TimeGenerated, *) by IncidentNumber\r\n| mv-expand AlertIds\r\n| where isnotempty(AlertIds) and not(Title startswith \"CC_\")\r\n| extend AlertId = tostring(AlertIds) \r\n| join kind=inner\r\n (OfficeEmailAlerts | extend SystemAlertId = tostring(SystemAlertId))\r\n on $left.AlertId == $right.SystemAlertId\r\n| summarize arg_max(TimeGenerated, *), AlertCount = dcount(AlertId) by IncidentNumber\r\n| summarize Incidents_Number = count() by TimeGenerated = bin(TimeGenerated, gran));\r\nrange TimeGenerated from toscalar(agg | summarize min(TimeGenerated)) to toscalar(agg | summarize max(TimeGenerated)) step gran\r\n| join kind=leftouter (agg) on TimeGenerated\r\n| project TimeGenerated, ['Email Security Incidents'] = coalesce(Incidents_Number, 0)\r\n| sort by TimeGenerated asc", + "size": 0, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "chartSettings": { + "seriesLabelSettings": [ + { + "seriesName": "Email Security Incidents", + "color": "blueDark" + } + ] + } + }, + "customWidth": "75", + "name": "soc - email-incidents trend", + "id": "e23cfcda-1017-4fd0-ac71-8a861c450f71" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// Categorize incidents: Email Security vs Other\r\nlet AllAlerts = SecurityAlert\r\n | extend SystemAlertId = tostring(SystemAlertId)\r\n | project SystemAlertId, ProductName;\r\nSecurityIncident\r\n| summarize arg_max(TimeGenerated, *) by IncidentNumber\r\n| mv-expand AlertIds\r\n| where isnotempty(AlertIds) and not(Title startswith \"CC_\")\r\n| extend AlertId = tostring(AlertIds)\r\n| join kind=inner\r\n (AllAlerts)\r\n on $left.AlertId == $right.SystemAlertId\r\n| summarize AlertSystems = make_set(ProductName) by IncidentNumber\r\n| extend HasEmailSecurity = \r\n AlertSystems has \"Office 365 Advanced Threat Protection\" or \r\n AlertSystems has \"Microsoft 365 Defender\"\r\n| extend Category = iff(HasEmailSecurity, \"Email Security\", \"Other\")\r\n| summarize IncidentCount = count() by Category\r\n", + "size": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "25", + "name": "soc - incident-category pie", + "id": "baae2150-1b04-43b4-9713-48fd3cc6247f" + }, + { + "type": 1, + "content": { + "json": "### Average Incident Time To Close (minutes)\r\n**This visual displays the average time, in minutes, to close email-related security incidents (per {Granularity}), split by severity, so you can see how resolution speed changes over time. Reference SLA targets: High 60, Medium 120, Low 240, Informational 480 minutes.**" + }, + "name": "soc - time-to-close heading", + "id": "e23ccc6c-b0f0-407b-8e01-d8b69c40a745" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// SLA thresholds by severity for email-security (MDO) incidents\r\nlet SLA_Variables = datatable (Severity:string, TimeToResolve:int) [\r\n \"High\", 60,\r\n \"Medium\", 120,\r\n \"Low\", 240,\r\n \"Informational\", 480\r\n];\r\n\r\n// Identify MDO-related incidents via alert correlation\r\nlet EmailSecurityIncidents = \r\n SecurityIncident\r\n | mv-expand AlertIds\r\n | where isnotempty(AlertIds)\r\n | extend AlertId = tostring(AlertIds)\r\n | join kind=inner (\r\n SecurityAlert\r\n | where ProductName in (\"Office 365 Advanced Threat Protection\", \"Microsoft 365 Defender\")\r\n | extend AlertId = tostring(SystemAlertId)\r\n | project AlertId\r\n ) on AlertId\r\n | distinct ProviderIncidentId;\r\n\r\n// Get latest incident state for each MDO-related incident\r\nlet LatestMdoIncidents =\r\n SecurityIncident\r\n | summarize arg_max(TimeGenerated, Classification, Status, Severity, CreatedTime, ClosedTime, Title) by ProviderIncidentId\r\n | where ProviderIncidentId in (EmailSecurityIncidents)\r\n | where not(Title startswith \"CC_\"); // Exclude non-email incidents as needed\r\n\r\nLatestMdoIncidents\r\n| where Status == \"Closed\"\r\n| extend TimeToResolveIncident = datetime_diff('minute', ClosedTime, CreatedTime)\r\n| join kind=inner SLA_Variables on Severity\r\n| summarize\r\n ['Avg Time to Close (min)'] = avg(TimeToResolveIncident),\r\n CountIncidents = count(), Breached = countif(TimeToResolveIncident > TimeToResolve)\r\n by Day = bin(ClosedTime, 1d), Severity\r\n| order by Day asc, Severity asc", + "size": 0, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "chartSettings": { + "xAxis": "Day", + "yAxis": [ + "Avg Time to Close (min)" + ], + "group": "Severity", + "createOtherGroup": null + } + }, + "name": "soc - sla-by-severity trend", + "id": "3f7d1f17-8d2f-4a1b-a97e-17973812ca6f" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "### Closed Incident Classification (True Positive vs False Positive)\r\n\r\nThis visual shows the distribution of closed email-related incidents classified as True Positive versus False Positive. It helps assess detection accuracy and provides insight into validation trends." + }, + "customWidth": "33.3", + "name": "soc - classification heading", + "styleSettings": { + "margin": "10px" + }, + "id": "48db10ce-8246-4f5e-8b68-f618d9c7f77c" + }, + { + "type": 1, + "content": { + "json": "### True Positive Incident Classification Rate\r\n\r\nThis visual displays the percentage of email-related incidents confirmed as True Positive. It offers a clear measure of classification accuracy and highlights changes in detection effectiveness over time." + }, + "customWidth": "33.3", + "name": "soc - tp-rate heading", + "styleSettings": { + "margin": "10px" + }, + "id": "34a84dbf-609a-407f-afef-f1592eb4a92b" + }, + { + "type": 1, + "content": { + "json": "### Incidents Automated vs Manual Closure\r\n\r\nThis visual illustrates the proportion of email-related incidents closed automatically versus manually. It provides visibility into operational efficiency and the impact of automation on incident resolution.\r\n
⚠️ *You will have to review the underlying query and add any automation system specific to your organization.*" + }, + "customWidth": "33.3", + "name": "soc - auto-vs-manual-closure heading", + "styleSettings": { + "margin": "10px" + }, + "id": "a1fd9136-7a12-4d80-b3e1-e2704a84f734" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// Build a list of MDO-related incidents by cross-referencing SecurityAlert\r\nlet EmailSecurityIncidents = SecurityIncident\r\n | mv-expand AlertIds\r\n | where isnotempty(AlertIds)\r\n | extend AlertId = tostring(AlertIds)\r\n | join kind=inner (\r\n SecurityAlert\r\n | where ProductName in (\"Office 365 Advanced Threat Protection\", \"Microsoft 365 Defender\")\r\n | extend AlertId = tostring(SystemAlertId)\r\n | project AlertId\r\n ) on AlertId\r\n | distinct ProviderIncidentId;\r\n\r\n// Get only the most recent state of each incident, ensuring it's MDO-related\r\nlet LatestIncidents = SecurityIncident\r\n | summarize arg_max(TimeGenerated, Classification, Status, Title) by ProviderIncidentId\r\n | where ProviderIncidentId in (EmailSecurityIncidents)\r\n | where not(Title startswith \"CC_\"); // Exclude incidents unrelated to MDO (e.g., DSPM)\r\n\r\nLatestIncidents\r\n| where Status == 'Closed' // (Optional) Limit to closed/fully classified incidents\r\n| summarize Count = count() by Classification = iif(\r\n isnull(Classification) or trim(\" \", Classification) == \"\",\r\n \"Not Set\", \r\n Classification\r\n )\r\n| order by Count desc", + "size": 3, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "33.3", + "name": "soc - classification pie", + "styleSettings": { + "margin": "10px" + }, + "id": "cfa5b7c5-50cc-4b3b-8bba-1a93c57bff43" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// Identify MDO-related SecurityIncident IDs via alert correlation\r\nlet EmailSecurityIncidents = \r\n SecurityIncident\r\n | mv-expand AlertIds\r\n | where isnotempty(AlertIds)\r\n | extend AlertId = tostring(AlertIds)\r\n | join kind=inner (\r\n SecurityAlert\r\n | where ProductName in (\"Office 365 Advanced Threat Protection\", \"Microsoft 365 Defender\")\r\n | extend AlertId = tostring(SystemAlertId)\r\n | project AlertId\r\n ) on AlertId\r\n | distinct ProviderIncidentId;\r\n\r\n// Get latest incident state for MDO-related incidents\r\nlet LatestMdoIncidents =\r\n SecurityIncident\r\n | summarize arg_max(TimeGenerated, Classification, Status, IncidentName) by ProviderIncidentId\r\n | where ProviderIncidentId in (EmailSecurityIncidents)\r\n // Exclude other non-email incidents (e.g., DSPM with specific naming pattern)\r\n | where not(IncidentName startswith \"CC_\");\r\n\r\n// Compute true positive rate among closed MDO incidents\r\nLatestMdoIncidents\r\n| where Status == \"Closed\"\r\n| summarize\r\n TruePositiveCount = countif(Classification == \"TruePositive\"),\r\n TotalClosed = count()\r\n| extend TruePositiveRate = iff(\r\n TotalClosed > 0,\r\n TruePositiveCount * 100.0 / TotalClosed,\r\n real(null)\r\n)", + "size": 1, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "stat", + "statSettings": { + "valueField": "TruePositiveRate", + "valueAggregation": "None", + "colorSettings": { + "type": "static", + "mode": "background", + "heatmapPalette": "greenRed", + "thresholdsGrid": [] + }, + "iconSettings": { + "thresholdsGrid": [] + }, + "numberFormatSettings": { + "unit": 1, + "options": { + "style": "decimal", + "maximumFractionDigits": 2 + } + }, + "tagText": "True Positive Rate", + "valueFontStyle": "xxLarge", + "tagTextPosition": "bottom" + } + }, + "customWidth": "33.3", + "name": "soc - tp-rate stat", + "styleSettings": { + "margin": "10px" + }, + "id": "eca235aa-38aa-46dd-a569-74dd8f83b2f0" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This queries shows the last activity on the Incident and attempts to display auto resolved incidents vs manual interaction.\r\n//Add strings for your automations if you rely on any other application/system\r\n//Fewer human-closed incidents (and a higher automated closure rate) generally indicates greater SecOps efficiency, as automation is successfully handling more work.\r\n\r\n// Identify MDO-related incidents by joining SecurityIncident and SecurityAlert\r\nlet EmailSecurityIncidents = SecurityIncident\r\n | mv-expand AlertIds\r\n | where isnotempty(AlertIds)\r\n | extend AlertId = tostring(AlertIds)\r\n | join kind=inner (\r\n SecurityAlert\r\n | where ProductName in (\"Office 365 Advanced Threat Protection\", \"Microsoft 365 Defender\")\r\n | extend AlertId = tostring(SystemAlertId)\r\n | project AlertId\r\n ) on AlertId\r\n | distinct ProviderIncidentId;\r\n\r\n// Get latest status of each incident and count closed incidents by who closed them\r\nSecurityIncident\r\n| summarize arg_max(TimeGenerated, *) by ProviderIncidentId\r\n| where ProviderIncidentId in (EmailSecurityIncidents)\r\n| where Status == 'Closed'\r\n| where not(Title startswith \"CC_\") // Exclude non-MDO incidents from DSPM policies\r\n| extend ClosedBy = iff( // Add strings for your automation systems\r\n tolower(ModifiedBy) has_any (\"system\",\"azure\",\"automation\",\"playbook\",\"microsoft xdr\",\"microsoft defender xdr\",\"created from alert\"),\r\n \"Automated\",\r\n \"Human\"\r\n )\r\n| summarize ClosedCount = count() by ClosedBy", + "size": 3, + "showAnalytics": true, + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "33.3", + "name": "soc - closure pie", + "styleSettings": { + "margin": "10px" + }, + "id": "a4bc160f-1ba6-4779-86cd-ef44422f1e29" + } + ] + }, + "name": "soc - incident-insights group", + "id": "3083ac4d-0bdd-4db7-a5f0-0d41cb67a4eb" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "13" + }, + "name": "soc - incident-metrics group", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "18ff8970-e5f6-4c51-918a-aa693a45d18f" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Investigation & Response Actions\r\n
\r\n\r\n**Remediation efficacy analysis.** Compares automated (AIR) and manual admin actions to evaluate response times and investigation outcomes.\r\n

**Recommended action:** Reduce AIR pending-action latency by reviewing why approvals take long, and increase automation where it is safe to do so." + }, + "name": "soc - air section header", + "id": "5e0b06c8-7774-4eb4-8b7f-572b3732de84" + }, + { + "type": 1, + "content": { + "json": "### Automated Investigation and Response (AIR) Actions (per {Granularity})\r\n\r\nThis visual shows the per-{Granularity} trend of Automated Investigation and Response (AIR) actions, including the number of successful and failed attempts (because of prior remediation)." + }, + "customWidth": "100", + "name": "soc - air-actions heading", + "styleSettings": { + "margin": "10px" + }, + "id": "05f14dec-e76c-413c-83a0-31a05dce65e7" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query attempts to show AIR Efficiency Over Time by displaying the number of successes and failures over time\r\nEmailPostDeliveryEvents\r\n| where ActionType =~ \"Automated Remediation\"\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize Count = count() by bin(Timestamp, {Granularity}), ActionResult", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart", + "graphSettings": { + "type": 0, + "topContent": { + "columnMatch": "AlertId", + "formatter": 1 + }, + "centerContent": { + "columnMatch": "Count", + "formatter": 1, + "numberFormat": { + "unit": 17, + "options": { + "maximumSignificantDigits": 3, + "maximumFractionDigits": 2 + } + } + } + }, + "chartSettings": { + "xAxis": "Timestamp" + } + }, + "customWidth": "100", + "name": "soc - air-efficiency trend", + "styleSettings": { + "margin": "10px" + }, + "id": "ae2a1850-5b7e-49f7-bac4-d888053ab49b" + }, + { + "type": 1, + "content": { + "json": "### Automated Investigation and Response (AIR) Response Time After Email Delivery (per {Granularity})\r\n\r\nThis visual displays the average (per {Granularity}), 80th percentile (p80), 90th percentile (p90) and 99th percentile (p99) time needed, measured in minutes, from email delivery to AIR action. It serves as a SOC metric to monitor responsiveness (security team members reviewing and manually approving AIR Pending Actions) and identify potential latency in automated incident handling. If the latency is high focus on reviewing why reviwing AIR Pending Actions takes longer time for admins and consider auto-aproval of URL, Files and Email clusters. \r\n" + }, + "customWidth": "100", + "name": "soc - air-response-time heading", + "styleSettings": { + "margin": "10px" + }, + "id": "98c66d9e-efdf-40fc-b8b0-be35d7fd97a9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// SOC metric: Daily average/p75 delay (in minutes) from email delivery to AIR action\r\nlet deliveries = EmailEvents\r\n | where DeliveryAction == \"Delivered\"// delivered emails\r\n | extend MsgKey = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\r\n | summarize FirstDelivery = min(Timestamp) by MsgKey, Threat = tostring(ThreatTypes);\r\nlet remediations = EmailPostDeliveryEvents\r\n | where ActionType =~ \"Automated Remediation\"// automated remediation events\r\n | extend MsgKey = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\r\n | summarize FirstRemediation = min(Timestamp) by MsgKey;\r\ndeliveries\r\n| join kind=inner remediations on MsgKey\r\n| extend DelayMinutes = datetime_diff(\"minute\", FirstRemediation, FirstDelivery)\r\n| where DelayMinutes >= 0\r\n| summarize ['Avg (min)'] = avg(DelayMinutes),\r\n ['P80 (min)'] = percentile(DelayMinutes, 80),\r\n ['P90 (min)'] = percentile(DelayMinutes, 90),\r\n ['P99 (min)'] = percentile(DelayMinutes, 99),\r\n CountEmails = count()\r\n by bin(FirstRemediation, 1d) ", + "size": 0, + "aggregation": 3, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "areachart", + "gridSettings": { + "sortBy": [ + { + "itemKey": "FirstRemediation", + "sortOrder": 1 + } + ] + }, + "sortBy": [ + { + "itemKey": "FirstRemediation", + "sortOrder": 1 + } + ], + "chartSettings": { + "xAxis": "FirstRemediation", + "yAxis": [ + "P99 (min)", + "P90 (min)", + "P80 (min)", + "Avg (min)" + ], + "showLegend": true + } + }, + "customWidth": "100", + "name": "soc - air-latency area", + "styleSettings": { + "margin": "10px" + }, + "id": "900383f1-6443-4d50-b15d-26e4ac11b255" + }, + { + "type": 1, + "content": { + "json": "### Automated Investigation and Response (AIR) Investigation Results Trend\r\n\r\nThis visual displays the per-{Granularity} trend of AIR investigation outcomes, categorized as **Threat Detected** or **Clean**. It helps track the effectiveness of automated investigations over time and highlights patterns in threat detection." + }, + "customWidth": "67", + "name": "soc - air-outcomes heading", + "styleSettings": { + "margin": "10px" + }, + "id": "d1cabfbe-6040-4b6e-9ce5-f48e9973dfc9" + }, + { + "type": 1, + "content": { + "json": "### Investigation Actions Taken: Automated Investigation and Response (AIR) vs Manual (Human)\r\n\r\nThis visual shows whether actions taken after an Automated Investigation and Response (AIR) required manual approval by an administrator or were executed automatically. It provides insight into the level of automation versus human intervention in post-investigation remediation." + }, + "customWidth": "33", + "name": "soc - air-auto-vs-manual heading", + "styleSettings": { + "margin": "10px" + }, + "id": "2f98514b-0172-4c4e-ba25-9a5e4138c570" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "// AIR investigation outcomes by day: ThreatDetected vs. Clean\r\n\r\n// Step 1: Deduplicate automated remediation events by message and recipient\r\nlet AutoRemediations = \r\n EmailPostDeliveryEvents\r\n | where ActionType == \"Automated Remediation\"\r\n | summarize arg_max(Timestamp, ActionResult) by NetworkMessageId, RecipientEmailAddress\r\n | project NetworkMessageId, RecipientEmailAddress, Timestamp;\r\n\r\n// Step 2: Derive threat verdicts using AlertEvidence\r\nlet EvidenceVerdicts =\r\n AlertEvidence\r\n | where EntityType in (\"MailMessage\", \"MailCluster\")\r\n | extend extra = todynamic(AdditionalFields)\r\n // If this is a mail cluster, use provided NetworkMessageIds array; otherwise wrap NetworkMessageId as a single-item array\r\n | extend networkIds = iff(\r\n isnull(extra.NetworkMessageIds) or array_length(extra.NetworkMessageIds) == 0,\r\n pack_array(NetworkMessageId), // create a single-element array using pack_array\r\n extra.NetworkMessageIds // use the array as-is if it exists\r\n )\r\n | mv-expand nmID = networkIds // expand to individual message IDs\r\n // Derive verdict from LastVerdict, ThreatAnalysisSummary, and ThreatIntelligence\r\n | extend \r\n lastVerdict = tolower(tostring(extra.LastVerdict)),\r\n threatAIList = extra.ThreatAnalysisSummary,\r\n threatInt = extra.ThreatIntelligence\r\n | extend verdictFromAnalysis = iff(array_length(threatAIList) > 0, tolower(tostring(threatAIList[0].Verdict)), \"\"),\r\n verdictTI = iff(array_length(threatInt) > 0, \"malicious\", \"\") // any item in ThreatIntelligence indicates malicious\r\n // Mark as threat-detected if verdict is malicious/suspicious or threat evidence is present\r\n | extend ThreatDetectedFlag = \r\n case(\r\n lastVerdict in (\"malicious\",\"suspicious\") or verdictFromAnalysis in (\"malicious\",\"suspicious\")\r\n or verdictTI == \"malicious\",\r\n true,\r\n false\r\n )\r\n // Weight mail clusters by MailCount; default to 1 for single messages\r\n | extend MailCountInt = toint(extra.MailCount)\r\n | extend Weight = iff(EntityType == \"MailCluster\", \r\n coalesce(MailCountInt, 1), // default to 1 if MailCount is missing\r\n 1)\r\n | summarize IsThreatDetected = any(ThreatDetectedFlag), \r\n WeightSum = sum(Weight) \r\n by nmID = tostring(nmID);\r\n\r\n// Step 3: Join remediation events with verdicts and aggregate by day\r\nAutoRemediations\r\n| join kind=leftouter EvidenceVerdicts on $left.NetworkMessageId == $right.nmID\r\n| extend isThreat = coalesce(IsThreatDetected, false), \r\n effectiveWeight= coalesce(WeightSum, 1)\r\n| extend InvestigationOutcome = iif(isThreat, \"Threat Detected\", \"Clean\")\r\n| summarize PreventionCount = sum(effectiveWeight) by Day = bin(Timestamp, {Granularity}), InvestigationOutcome\r\n| order by Day asc, InvestigationOutcome asc", + "size": 0, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "customWidth": "67", + "name": "soc - air-outcomes trend", + "styleSettings": { + "margin": "10px" + }, + "id": "18552ccb-d8d4-45c4-a3cf-072203df9325" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query shows if the action taken after an Automated Investigation required manual approval by and admin or was automatically taken\r\nEmailPostDeliveryEvents\r\n| extend Key = strcat(NetworkMessageId , '-', RecipientEmailAddress) \r\n| summarize arg_max(Timestamp, *) by Key\r\n| where ActionType == \"Automated Remediation\"\r\n| summarize count() by ActionTrigger", + "size": 3, + "showAnalytics": true, + "queryType": "advancedHunting", + "visualization": "piechart" + }, + "customWidth": "33", + "name": "soc - air-auto-vs-manual pie", + "styleSettings": { + "margin": "10px", + "padding": "10px" + }, + "id": "03bc6e3c-05de-426d-91d8-b48a36b4ea74" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "### Post-Delivery Actions by Admin\r\n\r\nThis visual displays the number (per {Granularity}) of emails where an administrator performed a post-delivery action. Actions are summarized by type, including **Soft Delete**, **Hard Delete**, **Moved to Junk Folder**, **Moved to Inbox**, and **Quarantine Release**, providing insight into manual intervention trends after email delivery." + }, + "name": "soc - post-delivery-by-admin heading", + "styleSettings": { + "margin": "10px" + }, + "id": "a0961ca9-da58-49c4-9a1c-873c5569bed9" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//This query visualises the daily ammount of emails that had an admin post delivery action, summarizing the data by action type\r\nlet gran = {Granularity};\r\nlet minTime = toscalar(EmailEvents | summarize min(Timestamp));\r\nlet maxTime = toscalar(EmailEvents | summarize max(Timestamp));\r\nlet agg = materialize(EmailPostDeliveryEvents\r\n| where ActionTrigger has \"AdminAction\"\r\n| summarize [\"Soft Delete\"]=countif(Action has 'Soft Delete'), [\"Hard Delete\"]=countif(Action has 'Hard Delete'), [\"Moved to junk folder\"]=countif(Action has 'Moved to junk folder'), [\"Moved to inbox\"]=countif(Action has 'Moved to inbox'), [\"Quarantine release\"]=countif(Action has 'Quarantine release') by Timestamp = bin(Timestamp, gran));\r\nrange Timestamp from bin(minTime, gran) to bin(maxTime, gran) step gran\r\n| join kind=leftouter (agg) on Timestamp\r\n| project Timestamp, [\"Soft Delete\"]=coalesce([\"Soft Delete\"],0), [\"Hard Delete\"]=coalesce([\"Hard Delete\"],0), [\"Moved to junk folder\"]=coalesce([\"Moved to junk folder\"],0), [\"Moved to inbox\"]=coalesce([\"Moved to inbox\"],0), [\"Quarantine release\"]=coalesce([\"Quarantine release\"],0)\r\n| sort by Timestamp asc", + "size": 0, + "showAnalytics": true, + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "linechart" + }, + "name": "soc - post-delivery-by-admin trend", + "styleSettings": { + "margin": "10px" + }, + "id": "d2ea8eac-a3db-46b0-bcb4-3abbb95ba4ad" + } + ] + }, + "customWidth": "100", + "name": "soc - post-delivery group", + "id": "ebca14d5-954d-4e35-a225-cb0f8a3ea81b" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "13" + }, + "name": "soc - air group", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "0a05394d-f813-4408-ac4d-8f481ae34c0b" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Top Malicious Email Campaigns (Clustered)\r\n
\r\n\r\n**Groups malicious inbound emails into campaigns (attack waves) using the Email Cluster ID assigned by Microsoft Defender for Office 365, showing one row per campaign with the message count, distinct recipients, sender domains, threat mix and sample subjects. Helps the SOC understand the scale and shape of coordinated attacks rather than viewing individual messages in isolation.**

**Recommended action:** Pivot on the top campaign clusters to hunt related messages and consider blocking shared sender infrastructure." + }, + "name": "soc - campaigns heading", + "id": "d3a9e4c6-1b5f-4c8d-ae34-9f7a1b2c3d45" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Largest malicious inbound email campaigns clustered by EmailClusterId - one row per attack wave (messages, recipients, URL clicks, sender domains, threat mix, sample subjects).\r\n//URL Clicks = clicks by recipients on URLs within the campaign's messages (UrlClickEvents joined via NetworkMessageId).\r\nlet clicksByCluster = UrlClickEvents\r\n| join kind=inner (EmailEvents | where EmailClusterId > 0 | distinct NetworkMessageId, EmailClusterId) on NetworkMessageId\r\n| summarize UrlClicks = count() by EmailClusterId;\r\nlet qrClusters = EmailUrlInfo\r\n| where UrlLocation == \"QRCode\"\r\n| join kind=inner (EmailEvents | where EmailClusterId > 0 | distinct NetworkMessageId, EmailClusterId) on NetworkMessageId\r\n| summarize QrMessages = dcount(NetworkMessageId) by EmailClusterId;\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\" and isnotempty(ThreatTypes) and EmailClusterId > 0\r\n| where OrgLevelPolicy !in (\"Phishing simulation\", \"SecOps Mailbox\")\r\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize Messages = count(),\r\n Recipients = dcount(RecipientEmailAddress),\r\n SenderDomains = dcount(SenderFromDomain),\r\n SampleSenderDomains = make_set(SenderFromDomain, 5),\r\n ThreatTypesRaw = make_set(ThreatTypes, 50),\r\n SampleSubjects = make_set(Subject, 5),\r\n FirstSeen = min(Timestamp),\r\n LastSeen = max(Timestamp)\r\n by EmailClusterId\r\n| join kind=leftouter (clicksByCluster) on EmailClusterId\r\n| extend UrlClicks = coalesce(UrlClicks, 0)\r\n| join kind=leftouter (qrClusters) on EmailClusterId\r\n| extend ['QR Code'] = iif(coalesce(QrMessages, 0) > 0, \"QR code\", \"\")\r\n| extend ThreatMix = array_sort_asc(set_union(split(strcat_array(ThreatTypesRaw, \", \"), \", \"), dynamic([])))\r\n| top 20 by Messages\r\n| project ['Email Cluster ID']=EmailClusterId, ['Messages']=Messages, ['Recipients']=Recipients, ['URL Clicks']=UrlClicks, ['Sender Domains']=SenderDomains, ['Sample Sender Domains']=SampleSenderDomains, ['Threat Mix']=ThreatMix, ['QR Code']=['QR Code'], ['Sample Subjects']=SampleSubjects, ['First Seen']=FirstSeen, ['Last Seen']=LastSeen", + "size": 0, + "title": "", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "Messages", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Recipients", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "URL Clicks", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "name": "soc - campaigns table", + "id": "a2a391e1-0e26-4e0e-a8d3-26e3c7132079" + }, + { + "type": 1, + "content": { + "json": "\r\n\r\n\r\n\r\n
Most-Clicked Email Campaigns (Recipient Engagement)\r\n
\r\n\r\n**Ranks malicious inbound campaigns by recipient URL clicks, surfacing the attack waves that reached a mailbox and drew engagement regardless of raw message volume. The highest-volume campaigns are usually quarantined before delivery, so the clusters that draw clicks are often smaller, targeted waves. A non-zero URL Clicks count means a recipient opened a URL within the campaign's messages. Because attackers often mix legitimate URLs with malicious ones to build credibility, and a per-URL threat verdict is not available here, treat these as clicks on potentially malicious URLs that warrant review rather than confirmed malicious clicks.**

**Recommended action:** Focus on these clusters for user follow-up (awareness and, where credentials may be exposed, password reset) and hunt for related messages sharing sender infrastructure." + }, + "name": "soc - mostclicked heading", + "id": "e9e41b47-0434-42e5-8b04-4170ab061b81" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "//Malicious inbound campaigns ranked by recipient URL clicks - the attack waves that reached a mailbox and drew engagement, regardless of message volume.\r\n//URL Clicks = clicks by recipients on URLs within the campaign's messages (UrlClickEvents joined via NetworkMessageId).\r\nlet clicksByCluster = UrlClickEvents\r\n| join kind=inner (EmailEvents | where EmailClusterId > 0 | distinct NetworkMessageId, EmailClusterId) on NetworkMessageId\r\n| summarize UrlClicks = count() by EmailClusterId;\r\nlet qrClusters = EmailUrlInfo\r\n| where UrlLocation == \"QRCode\"\r\n| join kind=inner (EmailEvents | where EmailClusterId > 0 | distinct NetworkMessageId, EmailClusterId) on NetworkMessageId\r\n| summarize QrMessages = dcount(NetworkMessageId) by EmailClusterId;\r\nEmailEvents\r\n| where EmailDirection == \"Inbound\" and isnotempty(ThreatTypes) and EmailClusterId > 0\r\n| where OrgLevelPolicy !in (\"Phishing simulation\", \"SecOps Mailbox\")\r\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\r\n| summarize arg_max(Timestamp, *) by Key\r\n| summarize Messages = count(),\r\n Recipients = dcount(RecipientEmailAddress),\r\n SenderDomains = dcount(SenderFromDomain),\r\n SampleSenderDomains = make_set(SenderFromDomain, 5),\r\n ThreatTypesRaw = make_set(ThreatTypes, 50),\r\n SampleSubjects = make_set(Subject, 5),\r\n FirstSeen = min(Timestamp),\r\n LastSeen = max(Timestamp)\r\n by EmailClusterId\r\n| join kind=inner (clicksByCluster) on EmailClusterId\r\n| where UrlClicks > 0\r\n| join kind=leftouter (qrClusters) on EmailClusterId\r\n| extend ['QR Code'] = iif(coalesce(QrMessages, 0) > 0, \"QR code\", \"\")\r\n| extend ThreatMix = array_sort_asc(set_union(split(strcat_array(ThreatTypesRaw, \", \"), \", \"), dynamic([])))\r\n| top 20 by UrlClicks\r\n| project ['Email Cluster ID']=EmailClusterId, ['URL Clicks']=UrlClicks, ['Messages']=Messages, ['Recipients']=Recipients, ['Sender Domains']=SenderDomains, ['Sample Sender Domains']=SampleSenderDomains, ['Threat Mix']=ThreatMix, ['QR Code']=['QR Code'], ['Sample Subjects']=SampleSubjects, ['First Seen']=FirstSeen, ['Last Seen']=LastSeen", + "size": 0, + "title": "", + "timeContextFromParameter": "TimeRange", + "queryType": "advancedHunting", + "visualization": "table", + "gridSettings": { + "filter": true, + "formatters": [ + { + "columnMatch": "URL Clicks", + "formatter": 3, + "formatOptions": { + "palette": "redDark", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Messages", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + }, + { + "columnMatch": "Recipients", + "formatter": 3, + "formatOptions": { + "palette": "blue", + "customColumnWidthSetting": "130px" + }, + "numberFormat": { + "unit": 17, + "options": { + "style": "decimal", + "maximumFractionDigits": 1 + } + } + } + ] + } + }, + "name": "soc - mostclicked table", + "id": "1ffe8f97-ad79-47d9-9598-dd73ee54cd8d" + } + ] + }, + "conditionalVisibility": { + "parameterName": "Tab", + "comparison": "isEqualTo", + "value": "13" + }, + "name": "soc - campaigns group", + "styleSettings": { + "margin": "10px", + "padding": "10px", + "showBorder": true + }, + "id": "b8f2a1c4-5d6e-4a7b-9c8d-0e1f2a3b4c5d" + } + ], + "isLocked": true, + "fromTemplateId": "sentinel-MicrosoftDefenderForOffice365detectionsandinsights", + "contentProvenance": { + "packageId": "azuresentinel.azure-sentinel-solution-microsoft365defender", + "packageVersion": "3.2.1", + "contentId": "e39952df-ba60-50cf-80f6-76f7a2ebf57c", + "contentVersion": "3.2.1" } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject12').analyticRuleId12,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 12", - "parentId": "[variables('analyticRuleObject12').analyticRuleId12]", - "contentId": "[variables('analyticRuleObject12')._analyticRulecontentId12]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject12').analyticRuleVersion12]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" } } } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject12')._analyticRulecontentId12]", - "contentKind": "AnalyticsRule", - "displayName": "Imminent Ransomware", - "contentProductId": "[variables('analyticRuleObject12')._analyticRulecontentProductId12]", - "id": "[variables('analyticRuleObject12')._analyticRulecontentProductId12]", - "version": "[variables('analyticRuleObject12').analyticRuleVersion12]" - } + } + } + }, + "condition": "[parameters('DeployDefenderWorkbook')]" }, { "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject13').analyticRuleTemplateSpecName13]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-dwb-',uniqueString('e39952df-ba60-50cf-80f6-76f7a2ebf57c')))]", "location": "[parameters('workspace-location')]", "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', 'DefenderWorkbook-da2727e752b5d883c20387dfb93fc051')]", "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "MaliciousCMDExecutionByJava_AnalyticalRules Analytics Rule with template version 3.0.18", + "description": "Defender Workbook: MicrosoftDefenderForOffice365detectionsandinsights", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject13').analyticRuleVersion13]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject13')._analyticRulecontentId13]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query was originally published in the threat analytics report, Sysrv botnet evolution.\nSysrv is a Go-based botnet that targets both Windows and Linux servers, and steals resources to mine cryptocurrency.\nThe following query finds instances of the Java process being used to execute cmd.exe, and download and execute a PowerShell script.", - "displayName": "Java Executing cmd to run Powershell", - "enabled": false, - "query": "DeviceProcessEvents \n| where InitiatingProcessFileName == 'java.exe' and FileName == 'cmd.exe' \nand ProcessCommandLine has_all('powershell iex','DownloadString')\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "Execution" - ], - "techniques": [ - "T1059" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject13').analyticRuleId13,'/'))))]", + "languageVersion": "2.0", + "contentVersion": "1.0.0.0", + "imports": { + "MicrosoftSecurity": { + "provider": "MicrosoftSecurity", + "version": "1.0.0" + } + }, + "resources": { + "workbook": { + "import": "MicrosoftSecurity", + "type": "Microsoft.Security/workbooks@2026-06-01-preview", "properties": { - "description": "Microsoft Defender XDR Analytics Rule 13", - "parentId": "[variables('analyticRuleObject13').analyticRuleId13]", - "contentId": "[variables('analyticRuleObject13')._analyticRulecontentId13]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject13').analyticRuleVersion13]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject13')._analyticRulecontentId13]", - "contentKind": "AnalyticsRule", - "displayName": "Java Executing cmd to run Powershell", - "contentProductId": "[variables('analyticRuleObject13')._analyticRulecontentProductId13]", - "id": "[variables('analyticRuleObject13')._analyticRulecontentProductId13]", - "version": "[variables('analyticRuleObject13').analyticRuleVersion13]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject14').analyticRuleTemplateSpecName14]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "C2-NamedPipe_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject14').analyticRuleVersion14]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject14')._analyticRulecontentId14]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Detects the creation of a named pipe used by known APT malware.\nReference - https://docs.microsoft.com/openspecs/windows_protocols/ms-wpo/4de75e21-36fd-440a-859b-75accc74487c", - "displayName": "C2-NamedPipe", - "enabled": false, - "query": "// this is what should be constantly tweaked with default C2 framework names, search uses has_any (wildcard)\nlet badPipeNames = pack_array(\n '\\\\psexec', // PSexec default pipe\n '\\\\paexec', // PSexec default pipe\n '\\\\remcom', // PSexec default pipe\n '\\\\csexec', // PSexec default pipe\n '\\\\isapi_http', // Uroburos Malware Named Pipe\n '\\\\isapi_dg', // Uroburos Malware Named Pipe\n '\\\\isapi_dg2', // Uroburos Malware Named Pipe\n '\\\\sdlrpc', // Cobra Trojan Named Pipe http://goo.gl/8rOZUX\n '\\\\ahexec', // Sofacy group malware\n '\\\\winsession', // Wild Neutron APT malware https://goo.gl/pivRZJ\n '\\\\lsassw', // Wild Neutron APT malware https://goo.gl/pivRZJ\n '\\\\46a676ab7f179e511e30dd2dc41bd388', // Project Sauron https://goo.gl/eFoP4A\n '\\\\9f81f59bc58452127884ce513865ed20', // Project Sauron https://goo.gl/eFoP4A\n '\\\\e710f28d59aa529d6792ca6ff0ca1b34', // Project Sauron https://goo.gl/eFoP4A\n '\\\\rpchlp_3', // Project Sauron https://goo.gl/eFoP4A - Technical Analysis Input\n '\\\\NamePipe_MoreWindows', // US-CERT Alert - RedLeaves https://www.us-cert.gov/ncas/alerts/TA17-117A\n '\\\\pcheap_reuse', // Pipe used by Equation Group malware 77486bb828dba77099785feda0ca1d4f33ad0d39b672190079c508b3feb21fb0\n '\\\\gruntsvc', // Covenant default named pipe\n '\\\\583da945-62af-10e8-4902-a8f205c72b2e', // SolarWinds SUNBURST malware report https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n '\\\\bizkaz', // Snatch Ransomware https://thedfirreport.com/2020/06/21/snatch-ransomware/\n '\\\\atctl', // https://www.virustotal.com/#/file/a4ddb2664a6c87a1d3c5da5a5a32a5df9a0b0c8f2e951811bd1ec1d44d42ccf1/detection\n '\\\\userpipe', // ruag apt case\n '\\\\iehelper', // ruag apt case\n '\\\\sdlrpc', // project cobra https://www.gdatasoftware.com/blog/2015/01/23926-analysis-of-project-cobra\n '\\\\comnap', // https://www.gdatasoftware.com/blog/2015/01/23926-analysis-of-project-cobra\n '\\\\lsadump', // Cred Dump-Tools Named Pipes\n '\\\\cachedump', // Cred Dump-Tools Named Pipes\n '\\\\wceservicepipe', // Cred Dump-Tools Named Pipes\n '\\\\jaccdpqnvbrrxlaf', // PoshC2 default named pipe\n '\\\\svcctl', // CrackMapExec default named pipe\n '\\\\csexecsvc' // CSEXEC default named pipe\n '\\\\status_', // CS default named pipes https://github.com/Neo23x0/sigma/issues/253\n '\\\\MSSE-', // CobaltStrike default named pipe\n '\\\\status_', // CobaltStrike default named pipe\n '\\\\msagent_', // (target) CobaltStrike default named pipe\n '\\\\postex_ssh_', // CobaltStrike default named pipe\n '\\\\postex_', // CobaltStrike default named pipe\n '\\\\Posh' // PoshC2 default named pipe\n);\nDeviceEvents\n| where ActionType == \"NamedPipeEvent\"\n| extend ParsedFields=parse_json(AdditionalFields)\n| where ParsedFields.FileOperation == \"File created\"\n| where ParsedFields.PipeName has_any (badPipeNames)\n| project TimeGenerated, ActionType, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessFolderPath, InitiatingProcessCommandLine, ParsedFields.FileOperation, ParsedFields.PipeName\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceEvents" - ] - } - ], - "tactics": [ - "CommandAndControl" - ], - "techniques": [ - "T1105" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject14').analyticRuleId14,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 14", - "parentId": "[variables('analyticRuleObject14').analyticRuleId14]", - "contentId": "[variables('analyticRuleObject14')._analyticRulecontentId14]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject14').analyticRuleVersion14]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject14')._analyticRulecontentId14]", - "contentKind": "AnalyticsRule", - "displayName": "C2-NamedPipe", - "contentProductId": "[variables('analyticRuleObject14')._analyticRulecontentProductId14]", - "id": "[variables('analyticRuleObject14')._analyticRulecontentProductId14]", - "version": "[variables('analyticRuleObject14').analyticRuleVersion14]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject15').analyticRuleTemplateSpecName15]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DoppelPaymerProcDump_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject15').analyticRuleVersion15]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject15')._analyticRulecontentId15]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query was originally published in the threat analytics report, Doppelpaymer: More human-operated ransomware. There is also a related blog.\nDoppelPaymer is ransomware that is spread manually by human operators. These operators have exhibited extensive knowledge of system administration and common network security misconfigurations. For example, they use SysInternal utilities such as ProcDump to dump credentials from LSASS. They often use these stolen credentials to turn off security software, run malicious commands, and spread malware throughout an organization.\nThe following query detects ProcDump being used to dump credentials from LSASS.\nThe See also section below lists links to other queries associated with DoppelPaymer.\nReferences:\nhttps://msrc-blog.microsoft.com/2019/11/20/customer-guidance-for-the-dopplepaymer-ransomware/\nhttps://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/DoppelPaymer.KM!MTB\nhttps://docs.microsoft.com/sysinternals/downloads/procdump\nhttps://docs.microsoft.com/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection", - "displayName": "DopplePaymer Procdump", - "enabled": false, - "query": "// Dumping of LSASS memory using procdump\nDeviceProcessEvents\n// Command lines that include \"lsass\" and -accepteula or -ma flags used in procdump\n| where (ProcessCommandLine has \"lsass\" and (ProcessCommandLine has \"-accepteula\" or\nProcessCommandLine contains \"-ma\"))\n// Omits possible FPs where the full command is just \"procdump.exe lsass\"\nor (FileName in~ ('procdump.exe','procdump64.exe') and ProcessCommandLine has 'lsass')\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "CredentialAccess" - ], - "techniques": [ - "T1003" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject15').analyticRuleId15,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 15", - "parentId": "[variables('analyticRuleObject15').analyticRuleId15]", - "contentId": "[variables('analyticRuleObject15')._analyticRulecontentId15]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject15').analyticRuleVersion15]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject15')._analyticRulecontentId15]", - "contentKind": "AnalyticsRule", - "displayName": "DopplePaymer Procdump", - "contentProductId": "[variables('analyticRuleObject15')._analyticRulecontentProductId15]", - "id": "[variables('analyticRuleObject15')._analyticRulecontentProductId15]", - "version": "[variables('analyticRuleObject15').analyticRuleVersion15]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject16').analyticRuleTemplateSpecName16]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "LSASSCredDumpProcdump_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject16').analyticRuleVersion16]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject16')._analyticRulecontentId16]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\nIn early March 2021, Microsoft released patches for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n1. CVE-2021-26855\n2. CVE-2021-26857\n3. CVE-2021-26858\n4. CVE-2021-27065\nThe following query looks for evidence of Procdump being used to dump credentials from LSASS, the Local Security Authentication Server. This might indicate an attacker has compromised user accounts.\nMore queries related to this threat can be found under the See also section of this page.\nReference - https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/", - "displayName": "LSASS Credential Dumping with Procdump", - "enabled": false, - "query": "DeviceProcessEvents \n| where (FileName has_any (\"procdump.exe\", \"procdump64.exe\") and ProcessCommandLine has \"lsass\") or \n// Looking for Accepteula flag or Write a dump file with all process memory\n(ProcessCommandLine has \"lsass.exe\" and (ProcessCommandLine has \"-accepteula\" or ProcessCommandLine contains \"-ma\"))\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "CredentialAccess" - ], - "techniques": [ - "T1003" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject16').analyticRuleId16,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 16", - "parentId": "[variables('analyticRuleObject16').analyticRuleId16]", - "contentId": "[variables('analyticRuleObject16')._analyticRulecontentId16]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject16').analyticRuleVersion16]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject16')._analyticRulecontentId16]", - "contentKind": "AnalyticsRule", - "displayName": "LSASS Credential Dumping with Procdump", - "contentProductId": "[variables('analyticRuleObject16')._analyticRulecontentProductId16]", - "id": "[variables('analyticRuleObject16')._analyticRulecontentProductId16]", - "version": "[variables('analyticRuleObject16').analyticRuleVersion16]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject17').analyticRuleTemplateSpecName17]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DoppelpaymerStopService_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject17').analyticRuleVersion17]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject17')._analyticRulecontentId17]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query was originally published in the threat analytics report, Doppelpaymer: More human-operated ransomware. There is also a related blog.\nDoppelPaymer is ransomware that is spread manually by human operators. These operators have exhibited extensive knowledge of system administration and common network security misconfigurations. They often use stolen credentials from over-privileged service accounts to turn off security software, run malicious commands, and spread malware throughout an organization.\nThe following query detects attempts to stop security services.\nThe See also section below lists links to other queries associated with DoppelPaymer.\nReferences:\nhttps://msrc-blog.microsoft.com/2019/11/20/customer-guidance-for-the-dopplepaymer-ransomware/\nhttps://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/DoppelPaymer.KM!MTB", - "displayName": "Doppelpaymer Stop Services", - "enabled": false, - "query": "// Attempts to stop services and allow ransomware execution\nDeviceProcessEvents\n| where InitiatingProcessFileName startswith \"psexe\" and FileName =~ \"powershell.exe\" and\n ProcessCommandLine has \"stop-service\" and ProcessCommandLine has \"sql\" and ProcessCommandLine has \"msexchange\"\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "Execution", - "DefenseEvasion" - ], - "techniques": [ - "T1059", - "T1562" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject17').analyticRuleId17,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 17", - "parentId": "[variables('analyticRuleObject17').analyticRuleId17]", - "contentId": "[variables('analyticRuleObject17')._analyticRulecontentId17]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject17').analyticRuleVersion17]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject17')._analyticRulecontentId17]", - "contentKind": "AnalyticsRule", - "displayName": "Doppelpaymer Stop Services", - "contentProductId": "[variables('analyticRuleObject17')._analyticRulecontentProductId17]", - "id": "[variables('analyticRuleObject17')._analyticRulecontentProductId17]", - "version": "[variables('analyticRuleObject17').analyticRuleVersion17]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject18').analyticRuleTemplateSpecName18]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "QakbotCampaignSelfDeletion_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject18').analyticRuleVersion18]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject18')._analyticRulecontentId18]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query was originally published in the threat analytics report, Qakbot blight lingers, seeds ransomware\nQakbot is malware that steals login credentials from banking and financial services. It has been deployed against small businesses as well as major corporations. Some outbreaks have involved targeted ransomware campaigns that use a similar set of techniques. Links to related queries are listed under See also.\nThe following query detects if an instance of Qakbot has attempted to overwrite its original binary.\nReference - https://www.microsoft.com/security/blog/2017/11/06/mitigating-and-eliminating-info-stealing-qakbot-and-emotet-in-corporate-networks/", - "displayName": "Qakbot Campaign Self Deletion", - "enabled": false, - "query": "DeviceProcessEvents \n| where FileName =~ \"ping.exe\"\n| where InitiatingProcessFileName =~ \"cmd.exe\"\n| where (InitiatingProcessCommandLine has \"calc.exe\") and (InitiatingProcessCommandLine has \"-n 6\") and (InitiatingProcessCommandLine has \"127.0.0.1\")\n| project TimeGenerated, ProcessCommandLine, InitiatingProcessCommandLine, InitiatingProcessParentFileName, DeviceId, DeviceName\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "DefenseEvasion" - ], - "techniques": [ - "T1070" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject18').analyticRuleId18,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 18", - "parentId": "[variables('analyticRuleObject18').analyticRuleId18]", - "contentId": "[variables('analyticRuleObject18')._analyticRulecontentId18]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject18').analyticRuleVersion18]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject18')._analyticRulecontentId18]", - "contentKind": "AnalyticsRule", - "displayName": "Qakbot Campaign Self Deletion", - "contentProductId": "[variables('analyticRuleObject18')._analyticRulecontentProductId18]", - "id": "[variables('analyticRuleObject18')._analyticRulecontentProductId18]", - "version": "[variables('analyticRuleObject18').analyticRuleVersion18]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject19').analyticRuleTemplateSpecName19]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Regsvr32Rundll32ImageLoadsAbnormalExtension_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject19').analyticRuleVersion19]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject19')._analyticRulecontentId19]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query is looking for regsvr32.exe or rundll32.exe loading DLL images with other extensions than .dll.\nJoins the data to public network events.\nReferences:\nhttps://threathunt.blog/running-live-malware-for-threat-hunting-purposes/", - "displayName": "Regsvr32 Rundll32 Image Loads Abnormal Extension", - "enabled": false, - "query": "DeviceImageLoadEvents \n| where InitiatingProcessFileName has_any (\"rundll32.exe\",\"regsvr32.exe\")\n| where FileName !endswith \".dll\"\n| join (\nDeviceNetworkEvents\n| where InitiatingProcessFileName has_any (\"rundll32.exe\",\"regsvr32.exe\")\n| where RemoteIPType == \"Public\"\n) on InitiatingProcessFileName, InitiatingProcessId, InitiatingProcessCreationTime, InitiatingProcessCommandLine\n| project TimeGenerated, DeviceName, FileName, FolderPath, SHA1, InitiatingProcessFileName, InitiatingProcessCommandLine, LocalIP, LocalPort, RemoteIP, RemoteUrl, RemotePort, InitiatingProcessParentFileName\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents", - "DeviceNetworkEvents" - ] - } - ], - "tactics": [ - "DefenseEvasion" - ], - "subTechniques": [ - "T1218.010", - "T1218.011" - ], - "techniques": [ - "T1218", - "T1218" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "LocalIP" - } - ], - "entityType": "IP" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "RemoteIP" - } - ], - "entityType": "IP" - }, - { - "fieldMappings": [ - { - "identifier": "Url", - "columnName": "RemoteUrl" - } - ], - "entityType": "URL" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject19').analyticRuleId19,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 19", - "parentId": "[variables('analyticRuleObject19').analyticRuleId19]", - "contentId": "[variables('analyticRuleObject19')._analyticRulecontentId19]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject19').analyticRuleVersion19]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject19')._analyticRulecontentId19]", - "contentKind": "AnalyticsRule", - "displayName": "Regsvr32 Rundll32 Image Loads Abnormal Extension", - "contentProductId": "[variables('analyticRuleObject19')._analyticRulecontentProductId19]", - "id": "[variables('analyticRuleObject19')._analyticRulecontentProductId19]", - "version": "[variables('analyticRuleObject19').analyticRuleVersion19]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject20').analyticRuleTemplateSpecName20]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Regsvr32Rundll32WithAnomalousParentProcess_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject20').analyticRuleVersion20]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject20')._analyticRulecontentId20]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This analytical rule looks for rundll32.exe or regsvr32.exe being spawned by abnormal processes: wscript.exe, powershell.exe, cmd.exe, pwsh.exe, cscript.exe.\nBlog: https://threathunt.blog/running-live-malware-for-threat-hunting-purposes/", - "displayName": "Regsvr32 Rundll32 with Anomalous Parent Process", - "enabled": false, - "query": "DeviceProcessEvents\n| where FileName has_any (\"rundll32.exe\",\"regsvr32.exe\")\n| where InitiatingProcessFileName has_any (\"wscript.exe\",\"powershell.exe\",\"cmd.exe\",\"pwsh.exe\",\"cscript.exe\")\n| project TimeGenerated, DeviceName, InvestigatedProcessName=FileName, InvestigatedProcessCommandLine = ProcessCommandLine,InvestigatedProcessStartTime = ProcessCreationTime, InvestigatedProcessId = ProcessId, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessParentFileName\n| join (\nDeviceNetworkEvents\n| where InitiatingProcessFileName has_any (\"rundll32.exe\",\"regsvr32.exe\")\n| where RemoteIPType == \"Public\"\n| project DeviceName, InvestigatedProcessName=InitiatingProcessFileName, InvestigatedProcessCommandLine = InitiatingProcessCommandLine,InvestigatedProcessStartTime = InitiatingProcessCreationTime, InvestigatedProcessId = InitiatingProcessId, LocalIP, RemoteIP, RemoteUrl\n) on DeviceName, InvestigatedProcessCommandLine, InvestigatedProcessId, InvestigatedProcessName, InvestigatedProcessStartTime\n| project-away DeviceName1, InvestigatedProcessCommandLine1, InvestigatedProcessId1, InvestigatedProcessName1, InvestigatedProcessStartTime1\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents", - "DeviceNetworkEvents" - ] - } - ], - "tactics": [ - "DefenseEvasion" - ], - "subTechniques": [ - "T1218.010", - "T1218.011" - ], - "techniques": [ - "T1218", - "T1218" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "LocalIP" - } - ], - "entityType": "IP" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "RemoteIP" - } - ], - "entityType": "IP" - }, - { - "fieldMappings": [ - { - "identifier": "Url", - "columnName": "RemoteUrl" - } - ], - "entityType": "URL" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject20').analyticRuleId20,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 20", - "parentId": "[variables('analyticRuleObject20').analyticRuleId20]", - "contentId": "[variables('analyticRuleObject20')._analyticRulecontentId20]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject20').analyticRuleVersion20]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject20')._analyticRulecontentId20]", - "contentKind": "AnalyticsRule", - "displayName": "Regsvr32 Rundll32 with Anomalous Parent Process", - "contentProductId": "[variables('analyticRuleObject20')._analyticRulecontentProductId20]", - "id": "[variables('analyticRuleObject20')._analyticRulecontentProductId20]", - "version": "[variables('analyticRuleObject20').analyticRuleVersion20]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject21').analyticRuleTemplateSpecName21]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "SuspiciousCommandInitiatedByWebServerProcess_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject21').analyticRuleVersion21]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject21')._analyticRulecontentId21]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query was originally published in the threat analytics report, Operation Soft Cell.\nOperation Soft Cell is a series of campaigns targeting users' call logs at telecommunications providers throughout the world. These attacks date from as early as 2012.\nOperation Soft Cell operators sometimes use legitimate web server processes to launch commands, especially for network discovery and user/owner discovery. The following query detects activity of this kind.\nReference - https://www.cybereason.com/blog/operation-soft-cell-a-worldwide-campaign-against-telecommunications-providers", - "displayName": "Detect Suspicious Commands Initiated by Webserver Processes", - "enabled": false, - "query": "// Suspicious commands launched by web server processes\nDeviceProcessEvents \n| where (((InitiatingProcessParentFileName in(\"w3wp.exe\", \"beasvc.exe\",\n \"httpd.exe\") or InitiatingProcessParentFileName startswith \"tomcat\")\n or InitiatingProcessFileName in(\"w3wp.exe\", \"beasvc.exe\", \"httpd.exe\") or\n InitiatingProcessFileName startswith \"tomcat\"))\n and FileName in~('cmd.exe', 'powershell.exe')\n| where ProcessCommandLine contains '%temp%'\n or ProcessCommandLine has 'wget'\n or ProcessCommandLine has 'whoami'\n or ProcessCommandLine has 'certutil'\n or ProcessCommandLine has 'systeminfo'\n or ProcessCommandLine has 'ping'\n or ProcessCommandLine has 'ipconfig'\n or ProcessCommandLine has 'timeout'\n| summarize\n take_any(FileName),\n make_set(ProcessCommandLine, 100000),\n take_any(InitiatingProcessFileName),\n take_any(InitiatingProcessParentFileName)\n by DeviceId, DeviceName\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "Execution", - "DefenseEvasion", - "Discovery" - ], - "techniques": [ - "T1059", - "T1574", - "T1087", - "T1082" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject21').analyticRuleId21,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 21", - "parentId": "[variables('analyticRuleObject21').analyticRuleId21]", - "contentId": "[variables('analyticRuleObject21')._analyticRulecontentId21]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject21').analyticRuleVersion21]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject21')._analyticRulecontentId21]", - "contentKind": "AnalyticsRule", - "displayName": "Detect Suspicious Commands Initiated by Webserver Processes", - "contentProductId": "[variables('analyticRuleObject21')._analyticRulecontentProductId21]", - "id": "[variables('analyticRuleObject21')._analyticRulecontentProductId21]", - "version": "[variables('analyticRuleObject21').analyticRuleVersion21]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject22').analyticRuleTemplateSpecName22]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "BITSAdminActivity_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject22').analyticRuleVersion22]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject22')._analyticRulecontentId22]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Background Intelligent Transfer Service (BITS) is a way to reliably download files from webservers or SMB servers. \nThis service is commonly used for legitimate purposes, but can also be used as part of a malware downloader. \nAdditionally, bitsadmin can be used to upload files and therefore can be used for data exfiltration. This\nquery will identify use of bitsadmin.exe for either purpose and will identify directionality file transfer\ndirectionality.", - "displayName": "Bitsadmin Activity", - "enabled": false, - "query": "DeviceProcessEvents\n| where \n (FileName =~ \"bitsadmin.exe\" or column_ifexists('ProcessVersionInfoOriginalFileName','ColumnNotAvailable') =~ 'bitsadmin.exe')\n and ProcessCommandLine has_any ('/Transfer','/AddFile', '/AddFileSet','/AddFileWithRanges')\n| extend \n ParsedCommandLine = parse_command_line(ProcessCommandLine,'windows')\n| extend \n RemoteUrl = tostring(ParsedCommandLine[-2]),\n LocalFile= tostring(ParsedCommandLine[-1]),\n Direction = iff(ProcessCommandLine has \"/Upload\", 'Upload', 'Download')\n| project-reorder \n TimeGenerated,\n DeviceId,\n DeviceName,\n Direction,\n RemoteUrl,\n LocalFile,\n InitiatingProcessFolderPath,\n InitiatingProcessAccountDomain,\n InitiatingProcessAccountName,\n InitiatingProcessSHA256,\n ProcessId,\n ProcessCommandLine\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "Persistence", - "CommandAndControl", - "Exfiltration" - ], - "techniques": [ - "T1197", - "T1105", - "T1048" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "ProcessId", - "columnName": "ProcessId" - }, - { - "identifier": "CommandLine", - "columnName": "ProcessCommandLine" - } - ], - "entityType": "Process" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject22').analyticRuleId22,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 22", - "parentId": "[variables('analyticRuleObject22').analyticRuleId22]", - "contentId": "[variables('analyticRuleObject22')._analyticRulecontentId22]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject22').analyticRuleVersion22]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject22')._analyticRulecontentId22]", - "contentKind": "AnalyticsRule", - "displayName": "Bitsadmin Activity", - "contentProductId": "[variables('analyticRuleObject22')._analyticRulecontentProductId22]", - "id": "[variables('analyticRuleObject22')._analyticRulecontentProductId22]", - "version": "[variables('analyticRuleObject22').analyticRuleVersion22]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject23').analyticRuleTemplateSpecName23]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "OfficeAppsLaunchingWscript_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject23').analyticRuleVersion23]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject23')._analyticRulecontentId23]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query was originally published in the threat analytics report, Trickbot: Pervasive & underestimated.\nTrickbot is a very prevalent piece of malware with an array of malicious capabilities. Originally designed to steal banking credentials, it has since evolved into a modular trojan that can deploy other malware, disable security software, and perform command-and-control (C2) operations.\nTrickbot is frequently spread through email. An attacker will send a target a message with an attachment containing a malicious macro. If the target enables the macro, it will write a JScript Encoded (JSE) file to disk (JScript is a Microsoft dialect of ECMAScript). The JSE file will then be launched using wscript.exe to perform a variety of malicious tasks, particularly reconnaissance.\nThe following query detects when Office applications have launched wscript.exe to run a JSE file.\nSee Detect rundll.exe being used for reconnaissance and command-and-control for another query related to Trickbot activity.\nReference - https://attack.mitre.org/software/S0266/", - "displayName": "Office Apps Launching Wscipt", - "enabled": false, - "query": "DeviceProcessEvents \n| where InitiatingProcessFileName in~ ('winword.exe', 'excel.exe', 'outlook.exe') \n| where FileName =~ \"wscript.exe\" and ProcessCommandLine has \".jse\"\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "Execution", - "Collection", - "CommandAndControl" - ], - "techniques": [ - "T1059", - "T1105", - "T1203" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "ProcessId", - "columnName": "ProcessId" - }, - { - "identifier": "CommandLine", - "columnName": "ProcessCommandLine" - } - ], - "entityType": "Process" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject23').analyticRuleId23,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 23", - "parentId": "[variables('analyticRuleObject23').analyticRuleId23]", - "contentId": "[variables('analyticRuleObject23')._analyticRulecontentId23]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject23').analyticRuleVersion23]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject23')._analyticRulecontentId23]", - "contentKind": "AnalyticsRule", - "displayName": "Office Apps Launching Wscipt", - "contentProductId": "[variables('analyticRuleObject23')._analyticRulecontentProductId23]", - "id": "[variables('analyticRuleObject23')._analyticRulecontentProductId23]", - "version": "[variables('analyticRuleObject23').analyticRuleVersion23]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject24').analyticRuleTemplateSpecName24]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "PotentialKerberoastActivities_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject24').analyticRuleVersion24]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject24')._analyticRulecontentId24]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query aim to detect if someone requests service tickets (where count => maxcount)\nThe query requires trimming to set a baseline level for MaxCount \nMitre Technique: Kerberoasting (T1558.003)\n@MattiasBorg82", - "displayName": "Detect Potential Kerberoast Activities", - "enabled": false, - "query": "let MaxCount = 70; //Number of requests per 2 minute timeframe, depending on org size.\nIdentityLogonEvents\n| where ActionType == \"LogonSuccess\"\n| where Protocol == \"Kerberos\"\n| extend json = todynamic(parse_json(tostring(AdditionalFields)))\n| extend SPN = json.Spns,\n AttackTechniques = json.AttackTechniques\n | project-away json\n| where isnotempty(SPN)\n| where AttackTechniques has \"T1558.003\"\n| mv-expand SPN\n | extend SPNType = tostring(extract(@\"^\\w+\",0,tostring(SPN)))\n| distinct tostring(SPN), DeviceName, AccountUpn, AccountSid, bin(TimeGenerated, 2m), ReportId, tostring(AttackTechniques)\n| summarize count(), SPNS=(make_list(SPN, 100000)),ReportId=tostring((make_list(ReportId, 100000))[0]) by AccountUpn,AccountSid,DeviceName, bin(TimeGenerated, 2m), tostring(AttackTechniques)\n| extend SPNS = (replace_regex(tostring(SPNS), @'[^\\w+-\\/]+', '')) \n| where count_ >= MaxCount\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n| extend AccountDomain = tostring(split(AccountUpn, '@')[1]), AccountName = tostring(split(AccountUpn, '@')[0])\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "IdentityLogonEvents" - ] - } - ], - "tactics": [ - "CredentialAccess" - ], - "subTechniques": [ - "T1558.003" - ], - "techniques": [ - "T1558" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "AccountUpn" - }, - { - "identifier": "DnsDomain", - "columnName": "AccountDomain" - }, - { - "identifier": "Name", - "columnName": "AccountName" - } - ], - "entityType": "Account" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject24').analyticRuleId24,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 24", - "parentId": "[variables('analyticRuleObject24').analyticRuleId24]", - "contentId": "[variables('analyticRuleObject24')._analyticRulecontentId24]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject24').analyticRuleVersion24]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject24')._analyticRulecontentId24]", - "contentKind": "AnalyticsRule", - "displayName": "Detect Potential Kerberoast Activities", - "contentProductId": "[variables('analyticRuleObject24')._analyticRulecontentProductId24]", - "id": "[variables('analyticRuleObject24')._analyticRulecontentProductId24]", - "version": "[variables('analyticRuleObject24').analyticRuleVersion24]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject25').analyticRuleTemplateSpecName25]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "FilesCopiedToUSBDrives_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject25').analyticRuleVersion25]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject25')._analyticRulecontentId25]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query lists files copied to USB external drives with USB drive information based on FileCreated events associated with most recent USBDriveMount events befor file creations. But be aware that Advanced Hunting is not monitoring all the file types.", - "displayName": "Files Copied to USB Drives", - "enabled": false, - "query": "let UsbDriveMount = DeviceEvents\n| where ActionType==\"UsbDriveMounted\"\n| extend ParsedFields=parse_json(AdditionalFields)\n| project DeviceId, DeviceName, DriveLetter=ParsedFields.DriveLetter, MountTime=TimeGenerated,\nProductName=ParsedFields.ProductName,SerialNumber=ParsedFields.SerialNumber,Manufacturer=ParsedFields.Manufacturer\n| order by DeviceId asc, MountTime desc;\nlet FileCreation = DeviceFileEvents\n| where InitiatingProcessAccountName != \"system\"\n| where ActionType == \"FileCreated\"\n| where FolderPath !startswith \"C:\\\\\"\n| where FolderPath !startswith \"\\\\\"\n| project ReportId,DeviceId,InitiatingProcessAccountDomain,\nInitiatingProcessAccountName,InitiatingProcessAccountUpn,\nFileName, FolderPath, SHA256, TimeGenerated, SensitivityLabel, IsAzureInfoProtectionApplied\n| order by DeviceId asc, TimeGenerated desc;\nFileCreation | lookup kind=inner (UsbDriveMount) on DeviceId\n| where FolderPath startswith DriveLetter\n| where TimeGenerated >= MountTime\n| partition hint.strategy=native by ReportId ( top 1 by MountTime )\n| order by DeviceId asc, TimeGenerated desc\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n| extend FileHashAlgorithm = 'SHA256'\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceEvents", - "DeviceFileEvents" - ] - } - ], - "tactics": [ - "Exfiltration" - ], - "techniques": [ - "T1041" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "Name", - "columnName": "FileName" - }, - { - "identifier": "Directory", - "columnName": "FolderPath" - } - ], - "entityType": "File" - }, - { - "fieldMappings": [ - { - "identifier": "Algorithm", - "columnName": "FileHashAlgorithm" - }, - { - "identifier": "Value", - "columnName": "SHA256" - } - ], - "entityType": "FileHash" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject25').analyticRuleId25,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 25", - "parentId": "[variables('analyticRuleObject25').analyticRuleId25]", - "contentId": "[variables('analyticRuleObject25')._analyticRulecontentId25]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject25').analyticRuleVersion25]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject25')._analyticRulecontentId25]", - "contentKind": "AnalyticsRule", - "displayName": "Files Copied to USB Drives", - "contentProductId": "[variables('analyticRuleObject25')._analyticRulecontentProductId25]", - "id": "[variables('analyticRuleObject25')._analyticRulecontentProductId25]", - "version": "[variables('analyticRuleObject25').analyticRuleVersion25]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject26').analyticRuleTemplateSpecName26]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MosaicLoader_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject26').analyticRuleVersion26]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject26')._analyticRulecontentId26]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query looks Malware Hides Itself Among Windows Defender Exclusions to Evade Detection.", - "displayName": "MosaicLoader", - "enabled": false, - "query": "DeviceRegistryEvents \n| where ((ActionType == \"RegistryValueSet\") and (RegistryKey startswith @\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Windows Defender\\\\Exclusions\\\\Paths\" \nor RegistryKey startswith @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Defender\\Exclusions\\Extensions\"\nor RegistryKey startswith @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Defender\\Exclusions\\Processes\"))\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceRegistryEvents" - ] - } - ], - "tactics": [ - "DefenseEvasion" - ], - "techniques": [ - "T1562" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "Name", - "columnName": "RegistryValueName" - }, - { - "identifier": "Value", - "columnName": "RegistryValueData" - } - ], - "entityType": "RegistryValue" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject26').analyticRuleId26,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 26", - "parentId": "[variables('analyticRuleObject26').analyticRuleId26]", - "contentId": "[variables('analyticRuleObject26')._analyticRulecontentId26]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject26').analyticRuleVersion26]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject26')._analyticRulecontentId26]", - "contentKind": "AnalyticsRule", - "displayName": "MosaicLoader", - "contentProductId": "[variables('analyticRuleObject26')._analyticRulecontentProductId26]", - "id": "[variables('analyticRuleObject26')._analyticRulecontentProductId26]", - "version": "[variables('analyticRuleObject26').analyticRuleVersion26]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject27').analyticRuleTemplateSpecName27]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "AnomalousVoulmeOfFileDeletion_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject27').analyticRuleVersion27]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject27')._analyticRulecontentId27]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query looks for users performing file deletion activities. Spikes in file deletion observed from risky sign-in sessions are flagged here.\nThis applies to SharePoint and OneDrive users.\nAudit event and Cloud application identifier references.\nReference - https://learn.microsoft.com/microsoft-365/compliance/audit-log-activities?view=o365-worldwide\nReference - https://learn.microsoft.com/azure/sentinel/entities-reference#cloud-application-identifiers", - "displayName": "Unusual Volume of file deletion by users", - "enabled": false, - "query": "let relevantOperations = pack_array(\"FileDeleted\", \"FileRecycled\", \"FileDeletedFirstStageRecycleBin\", \"FileDeletedSecondStageRecycleBin\", \"FileVersionsAllMinorsRecycled\", \"FileVersionRecycled\", \"FileVersionsAllRecycled\");\nlet relevantAppIds = pack_array(int(20892), int(15600)); // App Ids for SharePoint and OneDrive\nlet timeWindow = 7d;\nlet timeNow = now();\n//\nlet riskyUsers= // Look for users with risky sign-ins\n SigninLogs \n | where CreatedDateTime between ((timeNow - timeWindow) .. (timeNow))\n | where isnotempty(UserId) and isnotempty(OriginalRequestId)\n | where ResultType == '0'\n | where RiskLevelDuringSignIn == 'high'\n | project UserId, RiskLevelDuringSignIn, CreatedDateTime, SessionId=OriginalRequestId\n ;\nlet hasUsers = isnotempty(toscalar(riskyUsers));\n//\nlet deleteEvents = // look for file deletion activity and scope it to risky users\n CloudAppEvents\n | where hasUsers\n | where TimeGenerated between ((timeNow - timeWindow) .. (timeNow))\n | where ApplicationId in (relevantAppIds)\n | where isnotempty(AccountObjectId)\n | where AccountObjectId in (riskyUsers)\n | where ActionType in (relevantOperations)\n | extend SessionId= tostring(RawEventData.AppAccessContext.AADSessionId)\n | where isnotempty(SessionId)\n | project UserId=AccountObjectId, AccountDisplayName, ApplicationId, SessionId, ActionType, TimeGenerated, ReportId\n ; \n //\ndeleteEvents \n| join kind=leftsemi riskyUsers on UserId, SessionId\n| summarize Count=count() , (Timestamp, ReportId)=arg_min(TimeGenerated, ReportId) by UserId, AccountDisplayName, ApplicationId, ActionType, Time=bin(TimeGenerated, 5m)\n// look for only those scoped users who have generated an increase in file deletion activity.\n| summarize TotalCount= countif(Count > 50), (Timestamp, ReportId)=arg_min(Timestamp, ReportId) by UserId, AccountDisplayName, ApplicationId \n| where TotalCount >= 3\n| project UserId, AccountDisplayName, ApplicationId, TotalCount, ReportId, Timestamp\n| extend NTDomain = tostring(split(AccountDisplayName,'\\\\',0)[0]), Name = tostring(split(AccountDisplayName,'\\\\',1)[0])\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "CloudAppEvents", - "AADSignInEventsBeta" - ] - }, - { - "connectorId": "AzureActiveDirectory", - "dataTypes": [ - "SigninLogs" - ] - } - ], - "tactics": [ - "Impact" - ], - "techniques": [ - "T1485" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "AadUserId", - "columnName": "UserId" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "Name", - "columnName": "Name" - }, - { - "identifier": "NTDomain", - "columnName": "NTDomain" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "AppId", - "columnName": "ApplicationId" - } - ], - "entityType": "CloudApplication" - } - ], - "customDetails": { - "Count": "TotalCount" - } - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject27').analyticRuleId27,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 27", - "parentId": "[variables('analyticRuleObject27').analyticRuleId27]", - "contentId": "[variables('analyticRuleObject27')._analyticRulecontentId27]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject27').analyticRuleVersion27]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject27')._analyticRulecontentId27]", - "contentKind": "AnalyticsRule", - "displayName": "Unusual Volume of file deletion by users", - "contentProductId": "[variables('analyticRuleObject27')._analyticRulecontentProductId27]", - "id": "[variables('analyticRuleObject27')._analyticRulecontentProductId27]", - "version": "[variables('analyticRuleObject27').analyticRuleVersion27]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject28').analyticRuleTemplateSpecName28]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "RemoteFileCreationWithPsExec_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject28').analyticRuleVersion28]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject28')._analyticRulecontentId28]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query was originally published in the threat analytics report, Ryuk ransomware. There is also a related blog.\nRyuk is human-operated ransomware. Much like DoppelPaymer ransomware, Ryuk is spread manually, often on networks that are already infected with Trickbot.\nRyuk operators use PsExec to manually spread the ransomware to other devices.\nThe following query detects remote file creation events that might indicate an active attack.\nThe See also section below lists links to other queries associated with Ryuk ransomware.\nReferences:\nhttps://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/\nhttps://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Ryuk.AA\nhttps://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/\nhttps://docs.microsoft.com/sysinternals/downloads/psexec", - "displayName": "Remote File Creation with PsExec", - "enabled": false, - "query": "// Find PsExec creating multiple files on remote machines in a 10-minute window\nDeviceFileEvents\n// Looking for PsExec by accepteula command flag\n| where InitiatingProcessCommandLine has \"accepteula\"\n// Remote machines and file is exe\n| where FolderPath has \"\\\\\\\\\" and FileName endswith \".exe\"\n| extend Exe = countof(InitiatingProcessCommandLine, \".exe\")\n// Checking to see if command line has 2 .exe or .bat\n| where InitiatingProcessCommandLine !has \".ps1\" and Exe > 1 or\nInitiatingProcessCommandLine has \".bat\"\n// Exclusions: Remove the following line to widen scope of AHQ\n| where not(InitiatingProcessCommandLine has_any(\"batch\", \"auditpol\",\n\"script\", \"scripts\", \"illusive\", \"rebootrequired\"))\n| summarize FileCount = dcount(FolderPath), make_set(SHA1, 100000), make_set(FolderPath, 100000),\nmake_set(FileName, 100000), make_set(InitiatingProcessCommandLine, 100000) by DeviceId, DeviceName,\nTimeWindow=bin(TimeGenerated, 10m), InitiatingProcessFileName\n| where FileCount > 4\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceFileEvents" - ] - } - ], - "tactics": [ - "LateralMovement" - ], - "techniques": [ - "T1570" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject28').analyticRuleId28,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 28", - "parentId": "[variables('analyticRuleObject28').analyticRuleId28]", - "contentId": "[variables('analyticRuleObject28')._analyticRulecontentId28]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject28').analyticRuleVersion28]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject28')._analyticRulecontentId28]", - "contentKind": "AnalyticsRule", - "displayName": "Remote File Creation with PsExec", - "contentProductId": "[variables('analyticRuleObject28')._analyticRulecontentProductId28]", - "id": "[variables('analyticRuleObject28')._analyticRulecontentProductId28]", - "version": "[variables('analyticRuleObject28').analyticRuleVersion28]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject29').analyticRuleTemplateSpecName29]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "ServiceAccountsPerformingRemotePS_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject29').analyticRuleVersion29]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject29')._analyticRulecontentId29]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Service Accounts Performing Remote PowerShell.\nThe purpose behind this detection is for finding service accounts that are performing remote powershell sessions.\nThere are two phases to the detection: Identify service accounts, Find remote PS cmdlets being ran by these accounts.\nTo accomplish this, we utilize DeviceLogonEvents and DeviceEvents to find cmdlets ran that meet the criteria.\nOne of the main advantages of this method is that only requires server telemetry, and not the attacking client.\nThe first phase relies on the DeviceLogonEvents to determine whether an account is a service account or not, consider the following accounts with logons:.\nRandom_user has DeviceLogonEvents with type 2, 3, 7, 10, 11 & 13.\nRandom_service_account 'should' only have DeviceLogonEvents with type 3,4 or 5.", - "displayName": "Service Accounts Performing Remote PS", - "enabled": false, - "query": "let InteractiveTypes = pack_array( // Declare Interactive logon type names\n 'Interactive',\n 'CachedInteractive',\n 'Unlock',\n 'RemoteInteractive',\n 'CachedRemoteInteractive',\n 'CachedUnlock'\n);\nlet WhitelistedCmdlets = pack_array( // List of whitelisted commands that don't provide a lot of value\n 'prompt',\n 'Out-Default',\n 'out-lineoutput',\n 'format-default',\n 'Set-StrictMode',\n 'TabExpansion2'\n);\nlet WhitelistedAccounts = pack_array('FakeWhitelistedAccount'); // List of accounts that are known to perform this activity in the environment and can be ignored\nDeviceLogonEvents // Get all logon events...\n| where AccountName !in~ (WhitelistedAccounts) // ...where it is not a whitelisted account...\n| where ActionType == \"LogonSuccess\" // ...and the logon was successful...\n| where AccountName !contains \"$\" // ...and not a machine logon.\n| where AccountName !has \"winrm va_\" // WinRM will have pseudo account names that match this if there is an explicit permission for an admin to run the cmdlet, so assume it is good.\n| extend IsInteractive=(LogonType in (InteractiveTypes)) // Determine if the logon is interactive (True=1,False=0)...\n| summarize HasInteractiveLogon=max(IsInteractive) // ...then bucket and get the maximum interactive value (0 or 1)...\n by AccountName // ... by the AccountNames\n| where HasInteractiveLogon == 0 // ...and filter out all accounts that had an interactive logon.\n// At this point, we have a list of accounts that we believe to be service accounts\n// Now we need to find RemotePS sessions that were spawned by those accounts\n// Note that we look at all powershell cmdlets executed to form a 29-day baseline to evaluate the data on today\n| join kind=rightsemi ( // Start by dropping the account name and only tracking the...\n\tDeviceEvents // ...\n\t| where ActionType == 'PowerShellCommand' // ...PowerShell commands seen...\n\t| where InitiatingProcessFileName =~ 'wsmprovhost.exe' // ...whose parent was wsmprovhost.exe (RemotePS Server)...\n | extend AccountName = InitiatingProcessAccountName // ...and add an AccountName field so the join is easier\n) on AccountName\n// At this point, we have all of the commands that were ran by service accounts\n| extend Command = tostring(extractjson('$.Command', tostring(AdditionalFields))) // Extract the actual PowerShell command that was executed\n| where Command !in (WhitelistedCmdlets) // Remove any values that match the whitelisted cmdlets\n| summarize (Timestamp, ReportId)=arg_max(TimeGenerated, ReportId), // Then group all of the cmdlets and calculate the min/max times of execution...\n make_set(Command, 100000), count(), min(TimeGenerated) by // ...as well as creating a list of cmdlets ran and the count..\n AccountName, AccountDomain, DeviceName, DeviceId // ...and have the commonality be the account, DeviceName and DeviceId\n// At this point, we have machine-account pairs along with the list of commands run as well as the first/last time the commands were ran\n| order by AccountName asc // Order the final list by AccountName just to make it easier to go through\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\") \n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceLogonEvents", - "DeviceEvents" - ] - } - ], - "tactics": [ - "LateralMovement" - ], - "techniques": [ - "T1210" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "AccountName" - }, - { - "identifier": "DnsDomain", - "columnName": "AccountDomain" - }, - { - "identifier": "Name", - "columnName": "AccountName" - } - ], - "entityType": "Account" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject29').analyticRuleId29,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 29", - "parentId": "[variables('analyticRuleObject29').analyticRuleId29]", - "contentId": "[variables('analyticRuleObject29')._analyticRulecontentId29]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject29').analyticRuleVersion29]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject29')._analyticRulecontentId29]", - "contentKind": "AnalyticsRule", - "displayName": "Service Accounts Performing Remote PS", - "contentProductId": "[variables('analyticRuleObject29')._analyticRulecontentProductId29]", - "id": "[variables('analyticRuleObject29')._analyticRulecontentProductId29]", - "version": "[variables('analyticRuleObject29').analyticRuleVersion29]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject30').analyticRuleTemplateSpecName30]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "AccountCreation_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject30').analyticRuleVersion30]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject30')._analyticRulecontentId30]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "User accounts may be created to achieve persistence on a machine.\nRead more here: https://attack.mitre.org/wiki/Technique/T1136.\nTags: #CreateAccount.\nQuery #1: Query for users being created using \"net user\" command.\n\"net user\" commands are noisy, so needs to be joined with another signal -.\nE.g. in this example we look for use of uncommon & undocumented commandline switches (e.g. /ad instead of /add).", - "displayName": "Account Creation", - "enabled": false, - "query": "DeviceProcessEvents\n// Pro-tip: \n// There are many different ways to run a process from a file - e.g. by using full path, env. variables, ~1 annotation, more...\n// So, to find executions of a known filename, better filter on the filename (and possibly on folder path) than on the commandline.\n| where FileName in~ (\"net.exe\", \"net1.exe\")\n// Parse the user name from the commandline.\n// To have case-insensitive parsing use the i flag, to have non-greedy match (e.g. CreatedUser as short as possible), specify U flag:\n// \"kind=regex flags=i\"\n| parse kind=regex flags=iU ProcessCommandLine with * \"user \" CreatedUser \" \" * \"/ad\"\n// Filter rows where user could not be parsed - e.g. because it was not a user command, or the /add commandline switch was not specified.\n| where isnotempty(CreatedUser)\n// Every net.exe executed will run net1.exe with the same commandline.\n// in this where clause we remove such rows, as they duplicate the number of results we have without adding any value.\n| where not (FileName =~ \"net1.exe\" and InitiatingProcessFileName =~ \"net.exe\" and replace(\"net\", \"net1\", InitiatingProcessCommandLine) =~ ProcessCommandLine)\n// If /domain is specified, so the user is created on the domain controller.\n// Also, any prefix that's longer than 1 char will also do the same, e.g. /do, /dom, /doma, ....\n| extend CreatedOnLocalMachine=(ProcessCommandLine !contains \"/do\")\n| where ProcessCommandLine !contains \"/add\" or (CreatedOnLocalMachine == 0 and ProcessCommandLine !contains \"/domain\")\n| summarize MachineCount=dcount(DeviceName) by CreatedUser, CreatedOnLocalMachine, InitiatingProcessFileName, FileName, ProcessId, ProcessCommandLine, InitiatingProcessCommandLine, DeviceId, DeviceName\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "Persistence" - ], - "techniques": [ - "T1136" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "ProcessId", - "columnName": "ProcessId" - }, - { - "identifier": "CommandLine", - "columnName": "ProcessCommandLine" - } - ], - "entityType": "Process" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject30').analyticRuleId30,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 30", - "parentId": "[variables('analyticRuleObject30').analyticRuleId30]", - "contentId": "[variables('analyticRuleObject30')._analyticRulecontentId30]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject30').analyticRuleVersion30]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject30')._analyticRulecontentId30]", - "contentKind": "AnalyticsRule", - "displayName": "Account Creation", - "contentProductId": "[variables('analyticRuleObject30')._analyticRulecontentProductId30]", - "id": "[variables('analyticRuleObject30')._analyticRulecontentProductId30]", - "version": "[variables('analyticRuleObject30').analyticRuleVersion30]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject31').analyticRuleTemplateSpecName31]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "LocalAdminGroupChanges_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject31').analyticRuleVersion31]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject31')._analyticRulecontentId31]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query searches for changes to the local administrators group.\nBlogpost: https://www.verboon.info/2020/09/hunting-for-local-group-membership-changes.", - "displayName": "Local Admin Group Changes", - "enabled": false, - "query": "let machineAccountSIDs = dynamic([\n \"S-1-5-18\",\n \"S-1-5-20\",\n \"S-1-5-19\"]);\nlet ADAZUsers = IdentityInfo \n| extend DirectoryDomain = AccountDomain \n| extend DirectoryAccount = AccountName \n| extend OnPremSid = AccountSID\n| distinct DirectoryDomain , DirectoryAccount , OnPremSid , AccountCloudSID, AccountUPN, GivenName, Surname;\n // check for any new created or modified local accounts \nlet NewUsers = DeviceEvents\n| where ActionType contains \"UserAccountCreated\" or ActionType contains \"UserAccountModified\"\n| extend lUserAdded = AccountName\n| extend NewUserSID = AccountSid\n| extend laccountdomain = AccountDomain\n| distinct NewUserSID, lUserAdded,laccountdomain;\n// Check for any local group changes and enrich the data with the account name obtained from the previous query\nDeviceEvents \n| where ActionType == 'UserAccountAddedToLocalGroup'\n// Exclude machine and wellknown SIDs \n| where (AccountSid !in (machineAccountSIDs)) and (AccountSid matches regex @\"S-\\d-\\d+-\\d+-(\\d+-){1,5}\\d+\")\n| extend LocalGroupSID = tostring(parse_json(AdditionalFields).GroupSid)\n| extend LocalGroup = tostring(parse_json(AdditionalFields).GroupName)\n| extend AddedAccountSID = AccountSid\n| extend Actor = trim(@\"[^\\w]+\",InitiatingProcessAccountName)\n// limit to local administrators group\n// | where LocalGroupSID contains \"S-1-5-32-544\"\n| join kind=leftouter (NewUsers)\non $left.AddedAccountSID == $right.NewUserSID\n| project TimeGenerated, DeviceName, LocalGroup,LocalGroupSID, AddedAccountSID, lUserAdded , Actor, ActionType , laccountdomain \n| join kind=innerunique (ADAZUsers)\non $left.AddedAccountSID == $right.OnPremSid\n| extend UserAdded = iff(isnotempty(lUserAdded),strcat(laccountdomain,\"\\\\\", lUserAdded), strcat(DirectoryDomain,\"\\\\\", DirectoryAccount))\n| extend AccountName = iff(isnotempty(lUserAdded), lUserAdded, DirectoryAccount)\n| project TimeGenerated, DeviceName, LocalGroup, LocalGroupSID, AddedAccountSID, UserAdded ,Actor, ActionType, AccountName, laccountdomain \n| where DeviceName !contains Actor\n// Provide details on actors that added users\n// | summarize count() by Actor \n// | join ADAZUsers\n// on $left.Actor == $right.DirectoryAccount \n// | render piechart\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "IdentityInfo", - "DeviceEvents" - ] - } - ], - "tactics": [ - "Persistence" - ], - "techniques": [ - "T1098" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "UserAdded" - }, - { - "identifier": "Name", - "columnName": "AccountName" - }, - { - "identifier": "NTDomain", - "columnName": "laccountdomain" - } - ], - "entityType": "Account" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject31').analyticRuleId31,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 31", - "parentId": "[variables('analyticRuleObject31').analyticRuleId31]", - "contentId": "[variables('analyticRuleObject31')._analyticRulecontentId31]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject31').analyticRuleVersion31]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject31')._analyticRulecontentId31]", - "contentKind": "AnalyticsRule", - "displayName": "Local Admin Group Changes", - "contentProductId": "[variables('analyticRuleObject31')._analyticRulecontentProductId31]", - "id": "[variables('analyticRuleObject31')._analyticRulecontentProductId31]", - "version": "[variables('analyticRuleObject31').analyticRuleVersion31]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject32').analyticRuleTemplateSpecName32]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "RareProcessAsService_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject32').analyticRuleVersion32]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject32')._analyticRulecontentId32]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query is looking for rarely seen processes which are launched as a service. Whiltelisted process list need to be updated based on the environment.\nAuthor: Jouni Mikkola\nMore info: https://threathunt.blog/rare-process-launch-as-a-service/", - "displayName": "Rare Process as a Service", - "enabled": false, - "query": "let LookupTime = 14d;\nlet WhiteList = pack_array(\n\"svchost.exe\",\n\"mssense.exe\",\n\"msmpeng.exe\",\n\"searchindexer.exe\",\n\"microsoftedgeupdate.exe\"\n);\nlet GetServices = materialize (\nDeviceProcessEvents\n| where TimeGenerated > ago(LookupTime)\n| where InitiatingProcessParentFileName contains \"services.exe\"\n| where InitiatingProcessFileName !in~(WhiteList)\n| project TimeGenerated, DeviceName, StartedChildProcess = FileName, StartedChildProcessSHA1 = SHA1, StartedChildProcessCmdline = ProcessCommandLine, ServiceProcessSHA1 = InitiatingProcessSHA1, ServiceProcess = InitiatingProcessFileName, ServiceProcessCmdline = InitiatingProcessCommandLine, ServiceProcessID = InitiatingProcessId, ServiceProcessCreationTime = InitiatingProcessCreationTime, ServiceProcessUser = InitiatingProcessAccountName\n);\nGetServices\n| summarize count() by ServiceProcess, DeviceName\n| where count_ < 6 \n| join kind = inner GetServices on ServiceProcess, DeviceName \n| join kind = leftouter ( \nDeviceNetworkEvents \n| where TimeGenerated > ago(LookupTime)\n| where InitiatingProcessParentFileName contains \"services.exe\"\n| where InitiatingProcessFileName !in~(WhiteList)\n| project TimeGenerated, DeviceName, ServiceProcessSHA1 = InitiatingProcessSHA1, ServiceProcess = InitiatingProcessFileName, ServiceProcessCmdline = InitiatingProcessCommandLine, ServiceProcessID = InitiatingProcessId, ServiceProcessCreationTime = InitiatingProcessCreationTime, ServiceProcessUser = InitiatingProcessAccountName, NetworkAction = ActionType, RemoteIP, RemoteUrl\n) on DeviceName, ServiceProcess, ServiceProcessCmdline, ServiceProcessCreationTime, ServiceProcessID, ServiceProcessUser, ServiceProcessSHA1\n| join kind = leftouter (\nDeviceFileEvents\n| where TimeGenerated > ago(LookupTime)\n| where InitiatingProcessParentFileName contains \"services.exe\"\n| where InitiatingProcessFileName !in~(WhiteList)\n| project TimeGenerated, DeviceName, ServiceProcessSHA1 = InitiatingProcessSHA1, ServiceProcess = InitiatingProcessFileName, ServiceProcessCmdline = InitiatingProcessCommandLine, ServiceProcessID = InitiatingProcessId, ServiceProcessCreationTime = InitiatingProcessCreationTime, ServiceProcessUser = InitiatingProcessAccountName, FileAction = ActionType, ModifiedFile = FileName, ModifiedFileSHA1 = SHA1, ModifiedFilePath = FolderPath\n) on DeviceName, ServiceProcess, ServiceProcessCmdline, ServiceProcessCreationTime, ServiceProcessID, ServiceProcessUser, ServiceProcessSHA1\n| join kind = leftouter (\nDeviceImageLoadEvents\n| where TimeGenerated > ago(LookupTime)\n| where InitiatingProcessParentFileName contains \"services.exe\"\n| where InitiatingProcessFileName !in~(WhiteList)\n| project TimeGenerated, DeviceName, ServiceProcessSHA1 = InitiatingProcessSHA1, ServiceProcess = InitiatingProcessFileName, ServiceProcessCmdline = InitiatingProcessCommandLine, ServiceProcessID = InitiatingProcessId, ServiceProcessCreationTime = InitiatingProcessCreationTime, ServiceProcessUser = InitiatingProcessAccountName, LoadedDLL = FileName, LoadedDLLSHA1 = SHA1, LoadedDLLPath = FolderPath\n) on DeviceName, ServiceProcess, ServiceProcessCmdline, ServiceProcessCreationTime, ServiceProcessID, ServiceProcessUser, ServiceProcessSHA1\n| summarize ConnectedAddresses = make_set(RemoteIP, 100000), ConnectedUrls = make_set(RemoteUrl, 100000), FilesModified = make_set(ModifiedFile, 100000),FileModFolderPath = make_set(ModifiedFilePath, 100000),FileModHA1s = make_set(ModifiedFileSHA1, 100000), ChildProcesses = make_set(StartedChildProcess, 100000), ChildCommandlines = make_set(StartedChildProcessCmdline, 100000), DLLsLoaded = make_set(LoadedDLL, 100000), DLLSHA1 = make_set(LoadedDLLSHA1, 100000) by DeviceName, ServiceProcess, ServiceProcessCmdline, ServiceProcessCreationTime, ServiceProcessID, ServiceProcessUser, ServiceProcessSHA1\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "P1D", - "queryPeriod": "P14D", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents", - "DeviceNetworkEvents", - "DeviceFileEvents", - "DeviceImageLoadEvents" - ] - } - ], - "tactics": [ - "Persistence" - ], - "subTechniques": [ - "T1543.003" - ], - "techniques": [ - "T1543", - "T1543" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "ProcessId", - "columnName": "ServiceProcessID" - }, - { - "identifier": "CommandLine", - "columnName": "ServiceProcessCmdline" - } - ], - "entityType": "Process" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject32').analyticRuleId32,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 32", - "parentId": "[variables('analyticRuleObject32').analyticRuleId32]", - "contentId": "[variables('analyticRuleObject32')._analyticRulecontentId32]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject32').analyticRuleVersion32]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject32')._analyticRulecontentId32]", - "contentKind": "AnalyticsRule", - "displayName": "Rare Process as a Service", - "contentProductId": "[variables('analyticRuleObject32')._analyticRulecontentProductId32]", - "id": "[variables('analyticRuleObject32')._analyticRulecontentProductId32]", - "version": "[variables('analyticRuleObject32').analyticRuleVersion32]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject33').analyticRuleTemplateSpecName33]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DisableSecurityServiceViaRegistry_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject33').analyticRuleVersion33]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject33')._analyticRulecontentId33]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query checks for processes modifying the registry to disable security features. This is a common technique used by threat actors for defence evasion.", - "displayName": "Disabling Security Services via Registry", - "enabled": false, - "query": "DeviceProcessEvents\n| where InitiatingProcessCommandLine has_all(@'\"reg\"', 'add', @'\"HKLM\\SOFTWARE\\Policies\\', '/v','/t', 'REG_DWORD', '/d', '/f')\n and InitiatingProcessCommandLine has_any('DisableRealtimeMonitoring', 'UseTPMKey', 'UseTPMKeyPIN', 'UseAdvancedStartup', \n 'EnableBDEWithNoTPM', 'RecoveryKeyMessageSource')\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "DefenseEvasion" - ], - "techniques": [ - "T1562" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "AccountUpn" - }, - { - "identifier": "Name", - "columnName": "AccountName" - }, - { - "identifier": "NTDomain", - "columnName": "AccountDomain" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "ProcessId", - "columnName": "ProcessId" - }, - { - "identifier": "CommandLine", - "columnName": "ProcessCommandLine" - } - ], - "entityType": "Process" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject33').analyticRuleId33,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 33", - "parentId": "[variables('analyticRuleObject33').analyticRuleId33]", - "contentId": "[variables('analyticRuleObject33')._analyticRulecontentId33]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject33').analyticRuleVersion33]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject33')._analyticRulecontentId33]", - "contentKind": "AnalyticsRule", - "displayName": "Disabling Security Services via Registry", - "contentProductId": "[variables('analyticRuleObject33')._analyticRulecontentProductId33]", - "id": "[variables('analyticRuleObject33')._analyticRulecontentProductId33]", - "version": "[variables('analyticRuleObject33').analyticRuleVersion33]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject34').analyticRuleTemplateSpecName34]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DataDeletionOnMulipleDrivesUsingCipherExe_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject34').analyticRuleVersion34]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject34')._analyticRulecontentId34]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query checks for attempts to delete data on multiple drives using cipher.exe. This activity is typically done by ransomware to prevent recovery of data after encryption.", - "displayName": "Deletion of data on multiple drives using cipher exe", - "enabled": false, - "query": "// Look for cipher.exe deleting data from multiple drives\nDeviceProcessEvents\n| where FileName =~ \"cipher.exe\" \n// cipher.exe /w flag used for deleting data \n| where ProcessCommandLine has \"/w\" \n| summarize CipherCount = dcount(ProcessCommandLine), CipherList = make_set(ProcessCommandLine, 1000) by DeviceId, DeviceName, bin(TimeGenerated, 1m) \n// cipher.exe accessing multiple drives in a short timeframe \n| where CipherCount > 1\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "Impact" - ], - "techniques": [ - "T1485" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject34').analyticRuleId34,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 34", - "parentId": "[variables('analyticRuleObject34').analyticRuleId34]", - "contentId": "[variables('analyticRuleObject34')._analyticRulecontentId34]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject34').analyticRuleVersion34]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject34')._analyticRulecontentId34]", - "contentKind": "AnalyticsRule", - "displayName": "Deletion of data on multiple drives using cipher exe", - "contentProductId": "[variables('analyticRuleObject34')._analyticRulecontentProductId34]", - "id": "[variables('analyticRuleObject34')._analyticRulecontentProductId34]", - "version": "[variables('analyticRuleObject34').analyticRuleVersion34]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject35').analyticRuleTemplateSpecName35]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "LaZagneCredTheft_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject35').analyticRuleVersion35]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject35')._analyticRulecontentId35]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "LaZagne is a popular open-source tool used to recover passwords stored on a local computer. It has been used in ransomware attacks to steal credentials and escalate privileges. This query looks for the execution of LaZagne.", - "displayName": "LaZagne Credential Theft", - "enabled": false, - "query": "DeviceProcessEvents \n| where FileName =~ 'reg.exe'\n| where ProcessCommandLine has_all('save','hklm','sam')\n| project DeviceId, DeviceName, TimeGenerated, InitiatingProcessId, InitiatingProcessFileName, ProcessId, FileName, ProcessCommandLine\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "CredentialAccess" - ], - "techniques": [ - "T1003" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "ProcessId", - "columnName": "ProcessId" - }, - { - "identifier": "CommandLine", - "columnName": "ProcessCommandLine" - } - ], - "entityType": "Process" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject35').analyticRuleId35,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 35", - "parentId": "[variables('analyticRuleObject35').analyticRuleId35]", - "contentId": "[variables('analyticRuleObject35')._analyticRulecontentId35]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject35').analyticRuleVersion35]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject35')._analyticRulecontentId35]", - "contentKind": "AnalyticsRule", - "displayName": "LaZagne Credential Theft", - "contentProductId": "[variables('analyticRuleObject35')._analyticRulecontentProductId35]", - "id": "[variables('analyticRuleObject35')._analyticRulecontentProductId35]", - "version": "[variables('analyticRuleObject35').analyticRuleVersion35]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject36').analyticRuleTemplateSpecName36]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "LogDeletionUsingWevtutil_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject36').analyticRuleVersion36]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject36')._analyticRulecontentId36]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query checks for attempts to clear at least 10 log entries from event logs using wevtutil. Clearing event logs can be a sign of ransomware activity, as ransomware often attempts to cover its tracks by deleting logs.", - "displayName": "Clearing of forensic evidence from event logs using wevtutil", - "enabled": false, - "query": "// Look for use of wevtutil to clear multiple logs\nDeviceProcessEvents\n| where ProcessCommandLine has \"WEVTUTIL\" and ProcessCommandLine has \"CL\"\n| summarize LogClearCount = dcount(tostring(ProcessCommandLine)), ClearedLogList = make_set(ProcessCommandLine, 100000) by DeviceId, DeviceName, bin(TimeGenerated, 5m)\n| where LogClearCount > 10\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "DefenseEvasion" - ], - "techniques": [ - "T1070" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject36').analyticRuleId36,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 36", - "parentId": "[variables('analyticRuleObject36').analyticRuleId36]", - "contentId": "[variables('analyticRuleObject36')._analyticRulecontentId36]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject36').analyticRuleVersion36]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject36')._analyticRulecontentId36]", - "contentKind": "AnalyticsRule", - "displayName": "Clearing of forensic evidence from event logs using wevtutil", - "contentProductId": "[variables('analyticRuleObject36')._analyticRulecontentProductId36]", - "id": "[variables('analyticRuleObject36')._analyticRulecontentProductId36]", - "version": "[variables('analyticRuleObject36').analyticRuleVersion36]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject37').analyticRuleTemplateSpecName37]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MultiProcessKillWithTaskKill_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject37').analyticRuleVersion37]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject37')._analyticRulecontentId37]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query checks for attempts to stop at least 10 separate processes using the taskkill.exe utility. This is a common technique used by ransomware to stop security products and other processes.", - "displayName": "Stopping multiple processes using taskkill", - "enabled": false, - "query": "// Find attempts to stop processes using taskkill.exe\nDeviceProcessEvents\n| where FileName =~ \"taskkill.exe\" \n| summarize taskKillCount = dcount(ProcessCommandLine), TaskKillList = make_set(ProcessCommandLine, 10000) by DeviceId, DeviceName, bin(TimeGenerated, 2m)\n| where taskKillCount > 10\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "DefenseEvasion" - ], - "techniques": [ - "T1562" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject37').analyticRuleId37,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 37", - "parentId": "[variables('analyticRuleObject37').analyticRuleId37]", - "contentId": "[variables('analyticRuleObject37')._analyticRulecontentId37]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject37').analyticRuleVersion37]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject37')._analyticRulecontentId37]", - "contentKind": "AnalyticsRule", - "displayName": "Stopping multiple processes using taskkill", - "contentProductId": "[variables('analyticRuleObject37')._analyticRulecontentProductId37]", - "id": "[variables('analyticRuleObject37')._analyticRulecontentProductId37]", - "version": "[variables('analyticRuleObject37').analyticRuleVersion37]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject38').analyticRuleTemplateSpecName38]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "PotentialCobaltStrikeRansomwareActivity_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject38').analyticRuleVersion38]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject38')._analyticRulecontentId38]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query searches for alerts related to suspected ransomware and Cobalt Strike activity, a tool used in numerous ransomware campaigns. It looks for alerts that indicate potential ransomware activity, such as attempts to clear security event logs, delete backup files, and execute Cobalt Strike malware.", - "displayName": "Potential Ransomware activity related to Cobalt Strike", - "enabled": false, - "query": "// Look for sc.exe disabling services\nAlertInfo \n// Attempts to clear security event logs. \n| where Title in(\"Event log was cleared\", \n// List alerts flagging attempts to delete backup files. \n\"File backups were deleted\", \n// Potential Cobalt Strike activity - Note that other threat activity can also \n// trigger alerts for suspicious decoded content \n\"Suspicious decoded content\", \n// Cobalt Strike activity \n\"\\'Atosev\\' malware was detected\", \n\"\\'Ploty\\' malware was detected\", \n\"\\'Bynoco\\' malware was detected\",\n\"\\'Cobaltstrike\\' malware was detected\",\n\"Echo command over pipe on localhost\",\n\"Known attack framework activity was observed\",\n\"An active \\'Cobaltstrike\\' malware was detected\",\n\"Suspicious \\'CobaltStrike\\' behavior was prevented\",\n\"Suspicious process launch by Rundll32.exe\") \n| extend AlertTime = TimeGenerated | distinct AlertTime, AlertId, Title \n| join AlertEvidence on $left.AlertId == $right.AlertId\n| summarize by DeviceId, AlertTime, Title, AlertId\n// Get device IDs\n| join DeviceLogonEvents on $left.DeviceId == $right.DeviceId \n// Creating 10 day Window surrounding alert activity \n| where TimeGenerated < AlertTime + 12h and TimeGenerated > AlertTime - 12h // Projecting specific columns \n| project Title, DeviceName, DeviceId, TimeGenerated, LogonType, AccountDomain, AccountName, AccountSid, AlertTime, AlertId, RemoteIP, RemoteDeviceName\n| extend AccountFullName = tostring(strcat(AccountDomain, \"\\\\\", AccountName))\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "P1D", - "queryPeriod": "P1D", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "AlertInfo", - "AlertEvidence", - "DeviceLogonEvents" - ] - } - ], - "tactics": [ - "Execution", - "Persistence", - "DefenseEvasion", - "Impact" - ], - "techniques": [ - "T1059", - "T1078", - "T1070", - "T1490" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "AccountFullName" - }, - { - "identifier": "Name", - "columnName": "AccountName" - }, - { - "identifier": "DnsDomain", - "columnName": "AccountDomain" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "Address", - "columnName": "RemoteIP" - } - ], - "entityType": "IP" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject38').analyticRuleId38,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 38", - "parentId": "[variables('analyticRuleObject38').analyticRuleId38]", - "contentId": "[variables('analyticRuleObject38')._analyticRulecontentId38]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject38').analyticRuleVersion38]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject38')._analyticRulecontentId38]", - "contentKind": "AnalyticsRule", - "displayName": "Potential Ransomware activity related to Cobalt Strike", - "contentProductId": "[variables('analyticRuleObject38')._analyticRulecontentProductId38]", - "id": "[variables('analyticRuleObject38')._analyticRulecontentProductId38]", - "version": "[variables('analyticRuleObject38').analyticRuleVersion38]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject39').analyticRuleTemplateSpecName39]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "QakbotDiscoveryActivities_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject39').analyticRuleVersion39]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject39')._analyticRulecontentId39]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This query searches for injected processes launching discovery activity. Qakbot has been observed leading to ransomware in numerous instances. It looks for discovery commands such as net.exe, whoami.exe, nslookup.exe, netstat.exe, arp.exe, and ping.exe.", - "displayName": "Qakbot Discovery Activies", - "enabled": false, - "query": "DeviceProcessEvents \n| where InitiatingProcessFileName in~('mobsync.exe','explorer.exe')\n| where (FileName =~ 'net.exe' and InitiatingProcessCommandLine has_all('view','/all'))\n or (FileName =~ 'whoami.exe' and InitiatingProcessCommandLine has '/all')\n or (FileName =~ 'nslookup.exe' and InitiatingProcessCommandLine has_all('querytype=ALL','timeout=10'))\n or (FileName =~ 'netstat.exe' and InitiatingProcessCommandLine has '-nao')\n or (FileName =~ 'arp.exe' and InitiatingProcessCommandLine has '-a')\n or (FileName =~ 'ping.exe' and InitiatingProcessCommandLine has '-t' and InitiatingProcessCommandLine endswith '127.0.0.1')\n| summarize DiscoveryCommands = dcount(InitiatingProcessCommandLine), make_set(InitiatingProcessFileName), make_set(FileName), make_set(InitiatingProcessCommandLine) by DeviceId, DeviceName, bin(TimeGenerated, 5m) \n| where DiscoveryCommands >= 3\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "DefenseEvasion", - "Discovery", - "Execution" - ], - "techniques": [ - "T1140", - "T1010", - "T1059" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject39').analyticRuleId39,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 39", - "parentId": "[variables('analyticRuleObject39').analyticRuleId39]", - "contentId": "[variables('analyticRuleObject39')._analyticRulecontentId39]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject39').analyticRuleVersion39]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject39')._analyticRulecontentId39]", - "contentKind": "AnalyticsRule", - "displayName": "Qakbot Discovery Activies", - "contentProductId": "[variables('analyticRuleObject39')._analyticRulecontentProductId39]", - "id": "[variables('analyticRuleObject39')._analyticRulecontentProductId39]", - "version": "[variables('analyticRuleObject39').analyticRuleVersion39]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('analyticRuleObject40').analyticRuleTemplateSpecName40]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "ShadowCopyDeletion_AnalyticalRules Analytics Rule with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleObject40').analyticRuleVersion40]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('analyticRuleObject40')._analyticRulecontentId40]", - "apiVersion": "2023-02-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "This rule detects when Shadow Copies are being deleted. This is a know actions that is performed by threat actors.\nThis query detects know commands that have been used by the ransomware actors.\nSome information from Mitre Attack: \nhttps://attack.mitre.org/techniques/T1490/", - "displayName": "Shadow Copy Deletions", - "enabled": false, - "query": "let CommonRansomwareExecutionCommands = dynamic([@'vssadmin.exe delete shadows /all /quiet', \n@'wmic.exe shadowcopy delete', @'wbadmin delete catalog -quiet', \n@'Get-WmiObject Win32_Shadowcopy | ForEach-Object {$_.Delete();}',\n@'del /s /f /q c:\\*.VHD c:\\*.bac c:\\*.bak c:\\*.wbcat c:\\*.bkf c:\\Backup*.* c:\\backup*.* c:\\*.set c:\\*.win c:\\*.dsk', \n@'wbadmin delete systemstatebackup -keepVersions:0', \n@'schtasks.exe /Change /TN \"\\Microsoft\\Windows\\SystemRestore\\SR\" /disable', \n@'schtasks.exe /Change /TN \"\\Microsoft\\Windows\\SystemRestore\\SR\" /enable >nul 2>&1', \n@'reg add \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\SystemRestore\" /v \"DisableConfig\" /t \"REG_DWORD\" /d \"1\" /f', \n@'reg add \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\SystemRestore\" /v \"DisableSR\" /t \"REG_DWORD\" /d \"1\" /f', \n@'reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" /v \"DisableConfig\" /t \"REG_DWORD\" /d \"1\" /f', \n@'reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" /v \"DisableSR\" /t \"REG_DWORD\" /d \"1\" /f', \n@'reg delete \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\SystemRestore\" /v \"DisableConfig\" /f >nul 2>&1', \n@'reg delete \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\SystemRestore\" /v \"DisableSR\" /f >nul 2>&1', \n@'reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" /v \"DisableConfig\" /f >nul 2>&1', \n@'reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" /v \"DisableSR\" /f >nul 2>&1']);\nDeviceProcessEvents\n| where ProcessCommandLine has_any (CommonRansomwareExecutionCommands)\n| project-reorder TimeGenerated, ProcessCommandLine, DeviceName, AccountName\n| extend HostName = iff(DeviceName has '.', substring(DeviceName, 0, indexof(DeviceName, '.')), DeviceName)\n| extend DnsDomain = iff(DeviceName has '.', substring(DeviceName, indexof(DeviceName, '.') + 1), \"\")\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "connectorId": "MicrosoftThreatProtection", - "dataTypes": [ - "DeviceProcessEvents" - ] - } - ], - "tactics": [ - "Impact" - ], - "techniques": [ - "T1490" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "DeviceName" - }, - { - "identifier": "HostName", - "columnName": "HostName" - }, - { - "identifier": "DnsDomain", - "columnName": "DnsDomain" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "identifier": "FullName", - "columnName": "AccountUpn" - }, - { - "identifier": "Name", - "columnName": "AccountName" - }, - { - "identifier": "DnsDomain", - "columnName": "AccountDomain" - } - ], - "entityType": "Account" - }, - { - "fieldMappings": [ - { - "identifier": "ProcessId", - "columnName": "ProcessId" - }, - { - "identifier": "CommandLine", - "columnName": "ProcessCommandLine" - } - ], - "entityType": "Process" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleObject40').analyticRuleId40,'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Analytics Rule 40", - "parentId": "[variables('analyticRuleObject40').analyticRuleId40]", - "contentId": "[variables('analyticRuleObject40')._analyticRulecontentId40]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleObject40').analyticRuleVersion40]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('analyticRuleObject40')._analyticRulecontentId40]", - "contentKind": "AnalyticsRule", - "displayName": "Shadow Copy Deletions", - "contentProductId": "[variables('analyticRuleObject40')._analyticRulecontentProductId40]", - "id": "[variables('analyticRuleObject40')._analyticRulecontentProductId40]", - "version": "[variables('analyticRuleObject40').analyticRuleVersion40]" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject1').huntingQueryTemplateSpecName1]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Appspot Phishing Abuse_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject1').huntingQueryVersion1]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_1", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Appspot Phishing Abuse", - "category": "Hunting Queries", - "query": "EmailUrlInfo\n// Detect URLs with a subdomain on appspot.com\n| where UrlDomain matches regex @'\\b[\\w\\-]+-dot-[\\w\\-\\.]+\\.appspot\\.com\\b'\n// Enrich results with sender and recipient data\n| join kind=inner EmailEvents on $left.NetworkMessageId==$right.NetworkMessageId\n// Phishing attempts from Appspot related campaigns typically contain the recipient's email address in the URI\n// Example 1: https://example-dot-example.appspot.com/#recipient@domain.com\n// Example 2: https://example-dot-example.appspot.com/index.html?user=recipient@domain.com\n| where Url has RecipientEmailAddress\n // Some phishing campaigns pass recipient email as a Base64 encoded string in the URI\n or Url has base64_encode_tostring(RecipientEmailAddress)\n| project-away NetworkMessageId1, ReportId1, Type1, TimeGenerated1, Timestamp1\n| extend Name = tostring(split(SenderFromAddress, '@', 0)[0]), UPNSuffix = tostring(split(SenderFromAddress, '@', 1)[0])\n| extend Account_0_Name = Name\n| extend Account_0_UPNSuffix = UPNSuffix\n| extend IP_0_Address = SenderIPv4\n| extend URL_0_Url = Url\n| extend MailBox_0_MailboxPrimaryAddress = RecipientEmailAddress\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps surface phishing campaigns associated with Appspot abuse.These emails frequently contain phishing links that utilize the recipients' own email address as a unique identifier in the URI.\nThis campaign was published on Twitter by @MsftSecIntel at this link: https://twitter.com/MsftSecIntel/status/1374148156301004800\nReference - https://twitter.com/MsftSecIntel/status/1374148156301004800" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject1')._huntingQuerycontentId1),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 1", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject1')._huntingQuerycontentId1)]", - "contentId": "[variables('huntingQueryObject1')._huntingQuerycontentId1]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject1').huntingQueryVersion1]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject1')._huntingQuerycontentId1]", - "contentKind": "HuntingQuery", - "displayName": "Appspot Phishing Abuse", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject1')._huntingQuerycontentId1,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject1')._huntingQuerycontentId1,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject2').huntingQueryTemplateSpecName2]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "PayloadDropUsingCertUtil_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject2').huntingQueryVersion2]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_2", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Dropping Payload via certutil", - "category": "Hunting Queries", - "query": "DeviceFileEvents\n| where InitiatingProcessFileName !~ \"certutil.exe\"\n| where InitiatingProcessFileName !~ \"cmd.exe\"\n| where InitiatingProcessCommandLine has_all(\"-urlcache\", \"split\", \"http\")\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "BazaCall campaign tricks users into calling a fake customer support center, and download a malicious Excel file which contains a macro to infect users' device with BazaLoader. This query searches for a copy of certutil.exe used by the macro." - }, - { - "name": "tactics", - "value": "InitialAccess,DefenseEvasion" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject2')._huntingQuerycontentId2),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 2", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject2')._huntingQuerycontentId2)]", - "contentId": "[variables('huntingQueryObject2')._huntingQuerycontentId2]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject2').huntingQueryVersion2]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject2')._huntingQuerycontentId2]", - "contentKind": "HuntingQuery", - "displayName": "Dropping Payload via certutil", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject2')._huntingQuerycontentId2,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject2')._huntingQuerycontentId2,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject3').huntingQueryTemplateSpecName3]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "JudgementPandaExfilActivity_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject3').huntingQueryVersion3]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_3", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Judgement Panda Exfil Activity", - "category": "Hunting Queries", - "query": "DeviceProcessEvents\n| where TimeGenerated > ago(7d)\n| where ProcessCommandLine has @\"\\ldifde.exe -f -n \"\n or ProcessCommandLine has @\"\\7za.exe a 1.7z \" \n or ProcessCommandLine endswith @\" eprod.ldf\" \n or ProcessCommandLine has @\"\\aaaa\\procdump64.exe\" \n or ProcessCommandLine has @\"\\aaaa\\netsess.exe\" \n or ProcessCommandLine has @\"\\aaaa\\7za.exe\" \n or ProcessCommandLine has @\"copy .\\1.7z \\\" \n or ProcessCommandLine has @\"copy \\client\\c$\\aaaa\\\" \n or FolderPath == @\"C:\\Users\\Public\\7za.exe\"\n| top 100 by TimeGenerated desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Original Sigma Rule: https://github.com/SigmaHQ/sigma/blob/master/rules-emerging-threats/2019/TA/APT31/proc_creation_win_apt_apt31_judgement_panda.yml.\nQuestions via Twitter: @janvonkirchheim." - }, - { - "name": "tactics", - "value": "Collection" - }, - { - "name": "techniques", - "value": "T1560" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject3')._huntingQuerycontentId3),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 3", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject3')._huntingQuerycontentId3)]", - "contentId": "[variables('huntingQueryObject3')._huntingQuerycontentId3]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject3').huntingQueryVersion3]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject3')._huntingQuerycontentId3]", - "contentKind": "HuntingQuery", - "displayName": "Judgement Panda Exfil Activity", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject3')._huntingQuerycontentId3,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject3')._huntingQuerycontentId3,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject4').huntingQueryTemplateSpecName4]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DeimosComponentExecution_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject4').huntingQueryVersion4]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_4", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Deimos Component Execution", - "category": "Hunting Queries", - "query": "DeviceEvents \n| where InitiatingProcessFileName =~ \"powershell.exe\"\n| where ActionType == \"AmsiScriptContent\"\n| where AdditionalFields endswith '[mArS.deiMos]::inteRaCt()\"}'\n| project InitiatingProcessParentFileName, InitiatingProcessFileName, InitiatingProcessCommandLine, ActionType, AdditionalFields\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Jupyter, otherwise known as SolarMarker, is a malware family and cluster of components known for its info-stealing and backdoor capabilities that mainly proliferates through search engine optimization manipulation and malicious advertising." - }, - { - "name": "tactics", - "value": "Execution,Collection,Exfiltration,Impact" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject4')._huntingQuerycontentId4),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 4", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject4')._huntingQuerycontentId4)]", - "contentId": "[variables('huntingQueryObject4')._huntingQuerycontentId4]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject4').huntingQueryVersion4]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject4')._huntingQuerycontentId4]", - "contentKind": "HuntingQuery", - "displayName": "Deimos Component Execution", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject4')._huntingQuerycontentId4,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject4')._huntingQuerycontentId4,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject5').huntingQueryTemplateSpecName5]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "LemonDuckRegistrationFunction_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject5').huntingQueryVersion5]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_5", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "LemonDuck Registration Function", - "category": "Hunting Queries", - "query": "DeviceEvents\n| where ActionType == \"PowerShellCommand\"\n| where AdditionalFields =~ \"{\\\"Command\\\":\\\"SIEX\\\"}\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "LemonDuck is a malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021." - }, - { - "name": "tactics", - "value": "Execution,Persistence,LateralMovement,CommandAndControl" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject5')._huntingQuerycontentId5),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 5", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject5')._huntingQuerycontentId5)]", - "contentId": "[variables('huntingQueryObject5')._huntingQuerycontentId5]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject5').huntingQueryVersion5]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject5')._huntingQuerycontentId5]", - "contentKind": "HuntingQuery", - "displayName": "LemonDuck Registration Function", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject5')._huntingQuerycontentId5,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject5')._huntingQuerycontentId5,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject6').huntingQueryTemplateSpecName6]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DeviceWithLog4jAlerts_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject6').huntingQueryVersion6]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_6", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Devices with Log4j vulnerability alerts and additional other alert related context", - "category": "Hunting Queries", - "query": "// Get any devices with Log4J related Alert Activity\nlet DevicesLog4JAlerts = AlertInfo\n| where Title in~('Suspicious script launched',\n'Exploitation attempt against Log4j (CVE-2021-44228)',\n'Suspicious process executed by a network service',\n'Possible target of Log4j exploitation (CVE-2021-44228)',\n'Possible target of Log4j exploitation',\n'Possible Log4j exploitation',\n'Network connection seen in CVE-2021-44228 exploitation',\n'Log4j exploitation detected',\n'Possible exploitation of CVE-2021-44228',\n'Possible target of Log4j vulnerability (CVE-2021-44228) scanning',\n'Possible source of Log4j exploitation'\n'Log4j exploitation attempt via cloud application', // Previously titled Exploitation attempt against Log4j\n'Log4j exploitation attempt via email' // Previously titled Log4j Exploitation Attempt\n)\n// Join in evidence information\n| join kind=innerunique AlertEvidence on AlertId\n| where DeviceId != \"\"\n| summarize by DeviceId, Title;\n// Get additional alert activity for each device\nAlertEvidence\n| where DeviceId in(DevicesLog4JAlerts)\n// Add additional info\n| join kind=leftouter AlertInfo on AlertId\n| summarize DeviceAlerts = make_set(Title, 100000), AlertIDs = make_set(AlertId, 100000) by DeviceId, bin(TimeGenerated, 1d)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Microsoft has observed threat actors exploiting vulnerabilities associated with Log4J." - }, - { - "name": "tactics", - "value": "InitialAccess,Execution" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject6')._huntingQuerycontentId6),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 6", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject6')._huntingQuerycontentId6)]", - "contentId": "[variables('huntingQueryObject6')._huntingQuerycontentId6]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject6').huntingQueryVersion6]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject6')._huntingQuerycontentId6]", - "contentKind": "HuntingQuery", - "displayName": "Devices with Log4j vulnerability alerts and additional other alert related context", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject6')._huntingQuerycontentId6,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject6')._huntingQuerycontentId6,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject7').huntingQueryTemplateSpecName7]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Log4jVulnRelatedAlerts_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject7').huntingQueryVersion7]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_7", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Alerts Related to Log4j Vulnerability", - "category": "Hunting Queries", - "query": "AlertInfo\n| where Title in~('Suspicious script launched',\n'Exploitation attempt against Log4j (CVE-2021-44228)',\n'Suspicious process executed by a network service',\n'Possible target of Log4j exploitation (CVE-2021-44228)',\n'Possible target of Log4j exploitation',\n'Possible Log4j exploitation',\n'Network connection seen in CVE-2021-44228 exploitation',\n'Log4j exploitation detected',\n'Possible exploitation of CVE-2021-44228',\n'Possible target of Log4j vulnerability (CVE-2021-44228) scanning',\n'Possible source of Log4j exploitation',\n'Log4j exploitation attempt via cloud application', // Previously titled Exploitation attempt against Log4j\n'Log4j exploitation attempt via email' // Previously titled Log4j Exploitation Attempt\n)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Microsoft has observed attackers exploiting vulnerabilities associated with Log4J." - }, - { - "name": "tactics", - "value": "InitialAccess" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject7')._huntingQuerycontentId7),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 7", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject7')._huntingQuerycontentId7)]", - "contentId": "[variables('huntingQueryObject7')._huntingQuerycontentId7]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject7').huntingQueryVersion7]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject7')._huntingQuerycontentId7]", - "contentKind": "HuntingQuery", - "displayName": "Alerts Related to Log4j Vulnerability", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject7')._huntingQuerycontentId7,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject7')._huntingQuerycontentId7,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject8').huntingQueryTemplateSpecName8]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "ImminentRansomware_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject8').huntingQueryVersion8]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_8", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Imminent Ransomware", - "category": "Hunting Queries", - "query": "DeviceProcessEvents \n// Pivot on specific commands \n| where ProcessCommandLine has_any(\"-ExclusionPath\", \"Set-MpPreference\", \"advfirewall\", \"-ExclusionExtension\", \n\"-EnableControlledFolderAccess\", \"windefend\", \"onstart\", \"bcdedit\", \"Startup\") \n// Making list of found commands \n| summarize ProcessCommandLine = make_set(ProcessCommandLine, 10000) by DeviceId, bin(TimeGenerated, 6h) \n// Extending columns for later aggregration, based on TTP \n| extend StartUpExclusionPath = iff(ProcessCommandLine has_all(\"-ExclusionPath\", \"Startup\"), 1, 0) \n| extend DefenderTamp = iff(ProcessCommandLine has \"Set-MpPreference\" \nand ProcessCommandLine has_any( \n\"-SevereThreatDefaultAction 6\" \n\"-HighThreatDefaultAction 6\", \n\"-ModerateThreatDefaultAction 6\", \n\"-LowThreatDefaultAction 6\" \n\"-ScanScheduleDay 8\"), 1, 0) \n| extend NetshFirewallTampering = iff(ProcessCommandLine has_all( \"netsh\", \"advfirewall\", \"allprofiles state off\"), 1, 0) \n| extend BatExclusion = iff(ProcessCommandLine has_all(\"-ExclusionExtension\", \".bat\"), 1, 0) \n| extend ExeExclusion = iff(ProcessCommandLine has_all(\"-ExclusionExtension\", \".exe\"), 1, 0) \n| extend DisableControlledFolderAccess = iff(ProcessCommandLine has_all(\"-EnableControlledFolderAccess\", \"Disabled\"), 1, 0) \n| extend ScDeleteDefend = iff(ProcessCommandLine has_all(\"sc\", \"delete\", \"windefend\"), 1, 0) \n| extend BootTampering = iff(ProcessCommandLine has_all(\"bcdedit\", \"default\") and ProcessCommandLine has_any (\"recoveryenabled No\", \"bootstatuspolicy ignoreallfailures\"), 1, 0) \n| extend SchTasks = iff(ProcessCommandLine has_all(\"/sc\", \"onstart\", \"system\", \"/create\", \"/delay\"), 1, 0) \n// Summarizing found commands \n| summarize by NetshFirewallTampering ,BatExclusion, ExeExclusion, DisableControlledFolderAccess, ScDeleteDefend, SchTasks, BootTampering, DefenderTamp, StartUpExclusionPath, DeviceId, TimeGenerated \n// Adding up each piece of evidence \n| extend EvidenceCount = NetshFirewallTampering + BatExclusion + ExeExclusion + DisableControlledFolderAccess + ScDeleteDefend + SchTasks + BootTampering + DefenderTamp + StartUpExclusionPath \n| where EvidenceCount > 4\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Before deploying Macaw ransomware in an organization, the attacker will run several commands designed to disable security tools and system recovery tools." - }, - { - "name": "tactics", - "value": "DefenseEvasion" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject8')._huntingQuerycontentId8),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 8", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject8')._huntingQuerycontentId8)]", - "contentId": "[variables('huntingQueryObject8')._huntingQuerycontentId8]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject8').huntingQueryVersion8]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject8')._huntingQuerycontentId8]", - "contentKind": "HuntingQuery", - "displayName": "Imminent Ransomware", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject8')._huntingQuerycontentId8,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject8')._huntingQuerycontentId8,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject9').huntingQueryTemplateSpecName9]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MaliciousUseOfMSBuildAsLoLBin_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject9').huntingQueryVersion9]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_9", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malicious Use of MSBuild as LOLBin", - "category": "Hunting Queries", - "query": "DeviceProcessEvents \n| where InitiatingProcessFileName =~ \"wmiprvse.exe\" \n| where FileName =~ \"msbuild.exe\" and ProcessCommandLine has \"programdata\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Prior to deploying Macaw ransomware in an organization, the adversary frequently uses MSBuild.exe as a LOLBin to communicate with the C2." - }, - { - "name": "tactics", - "value": "CommandAndControl" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject9')._huntingQuerycontentId9),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 9", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject9')._huntingQuerycontentId9)]", - "contentId": "[variables('huntingQueryObject9')._huntingQuerycontentId9]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject9').huntingQueryVersion9]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject9')._huntingQuerycontentId9]", - "contentKind": "HuntingQuery", - "displayName": "Malicious Use of MSBuild as LOLBin", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject9')._huntingQuerycontentId9,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject9')._huntingQuerycontentId9,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject10').huntingQueryTemplateSpecName10]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "QakbotReconActivities_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject10').huntingQueryVersion10]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_10", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Qakbot Reconnaissance Activities", - "category": "Hunting Queries", - "query": "DeviceProcessEvents\n| where InitiatingProcessFileName == InitiatingProcessCommandLine\n| where ProcessCommandLine has_any (\n\"whoami /all\",\"cmd /c set\",\"arp -a\",\"ipconfig /all\",\"net view /all\",\"nslookup -querytype=ALL -timeout=10\",\n\"net share\",\"route print\",\"netstat -nao\",\"net localgroup\")\n| summarize dcount(FileName), make_set(ProcessCommandLine, 10000) by DeviceId,bin(TimeGenerated, 1d), InitiatingProcessFileName, InitiatingProcessCommandLine\n| where dcount_FileName >= 8\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query searches for reconnaissance and beaconing activities after code injection occurs in Qakbot infections." - }, - { - "name": "tactics", - "value": "Discovery" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject10')._huntingQuerycontentId10),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 10", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject10')._huntingQuerycontentId10)]", - "contentId": "[variables('huntingQueryObject10')._huntingQuerycontentId10]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject10').huntingQueryVersion10]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject10')._huntingQuerycontentId10]", - "contentKind": "HuntingQuery", - "displayName": "Qakbot Reconnaissance Activities", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject10')._huntingQuerycontentId10,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject10')._huntingQuerycontentId10,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject11').huntingQueryTemplateSpecName11]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "RobbinhoodDriver_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject11').huntingQueryVersion11]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_11", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Robbinhood Driver", - "category": "Hunting Queries", - "query": "DeviceFileEvents\n| where TimeGenerated > ago(7d)\n| where SHA1 in('0b15b5cc64caf0c6ad9bd759eb35383b1f718edf3d7ab4cd912d0d8c1826edf8',\n'31f4cfb4c71da44120752721103a16512444c13c2ac2d857a7e6f13cb679b427')\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query detects the presence of the Robbinhood ransomware driver." - }, - { - "name": "tactics", - "value": "Execution,DefenseEvasion" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject11')._huntingQuerycontentId11),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 11", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject11')._huntingQuerycontentId11)]", - "contentId": "[variables('huntingQueryObject11')._huntingQuerycontentId11]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject11').huntingQueryVersion11]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject11')._huntingQuerycontentId11]", - "contentKind": "HuntingQuery", - "displayName": "Robbinhood Driver", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject11')._huntingQuerycontentId11,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject11')._huntingQuerycontentId11,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject12').huntingQueryTemplateSpecName12]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Snip3MaliciousNetworkConnectivity_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject12').huntingQueryVersion12]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_12", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Snip3 Malicious Network Connectivity", - "category": "Hunting Queries", - "query": "DeviceNetworkEvents \n| where InitiatingProcessFileName in~ (\"RegSvcs.exe\",\"RegAsm.exe\", \"InstallUtil.exe\") \n| where InitiatingProcessCommandLine in~ (\"\\\"RegAsm.exe\\\"\",\"\\\"RegSvcs.exe\\\"\",\"\\\"InstallUtil.exe\\\"\") \n| where InitiatingProcessParentFileName endswith \"powershell.exe\" \n or InitiatingProcessParentFileName endswith \"powershell_ise.exe\" \n or InitiatingProcessParentFileName endswith \"pwsh.exe\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This hunting query looks for potentially hollowed processes that may be used to facilitate command-and-control or exfiltration by Snip3 malware." - }, - { - "name": "tactics", - "value": "CommandAndControl,Exfiltration" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject12')._huntingQuerycontentId12),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 12", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject12')._huntingQuerycontentId12)]", - "contentId": "[variables('huntingQueryObject12')._huntingQuerycontentId12]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject12').huntingQueryVersion12]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject12')._huntingQuerycontentId12]", - "contentKind": "HuntingQuery", - "displayName": "Snip3 Malicious Network Connectivity", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject12')._huntingQuerycontentId12,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject12')._huntingQuerycontentId12,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject13').huntingQueryTemplateSpecName13]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MaliciousCMDExecutionByJava_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject13').huntingQueryVersion13]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_13", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Java Executing cmd to run Powershell", - "category": "Hunting Queries", - "query": "DeviceProcessEvents \n| where InitiatingProcessFileName == 'java.exe' and FileName == 'cmd.exe' \nand ProcessCommandLine has_all('powershell iex','DownloadString')\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query finds instances of the Java process being used to execute cmd.exe, and download and execute a PowerShell script." - }, - { - "name": "tactics", - "value": "Execution" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject13')._huntingQuerycontentId13),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 13", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject13')._huntingQuerycontentId13)]", - "contentId": "[variables('huntingQueryObject13')._huntingQuerycontentId13]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject13').huntingQueryVersion13]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject13')._huntingQuerycontentId13]", - "contentKind": "HuntingQuery", - "displayName": "Java Executing cmd to run Powershell", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject13')._huntingQuerycontentId13,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject13')._huntingQuerycontentId13,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject14').huntingQueryTemplateSpecName14]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Check for spoofing attempts on the domain with Authentication failures_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject14').huntingQueryVersion14]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_14", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spoofing attempts from Specific Domains", - "category": "Hunting Queries", - "query": "// Add the list of domains to search for.\nlet DomainList = dynamic([\"contoso.com\"]); \nEmailEvents \n| where TimeGenerated > ago (1d) and DetectionMethods has \"spoof\" and SenderFromDomain in~ (DomainList)\n| project TimeGenerated, AR=parse_json(AuthenticationDetails) , NetworkMessageId, EmailDirection, Subject, SenderFromAddress, SenderIPv4, ThreatTypes, DetectionMethods, ThreatNames \n| evaluate bag_unpack(AR) \n| where column_ifexists('SPF','') =~ \"fail\" or column_ifexists('DMARC','') =~ \"fail\" or column_ifexists('DKIM','') =~ \"fail\" or column_ifexists('CompAuth','') =~ \"fail\"\n| extend Name = tostring(split(SenderFromAddress, '@', 0)[0]), UPNSuffix = tostring(split(SenderFromAddress, '@', 1)[0])\n| extend Account_0_Name = Name\n| extend Account_0_UPNSuffix = UPNSuffix\n| extend IP_0_Address = SenderIPv4\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query identifies potential phishing or spoofing attempts originating from specific domains with authentication failures." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject14')._huntingQuerycontentId14),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 14", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject14')._huntingQuerycontentId14)]", - "contentId": "[variables('huntingQueryObject14')._huntingQuerycontentId14]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject14').huntingQueryVersion14]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject14')._huntingQuerycontentId14]", - "contentKind": "HuntingQuery", - "displayName": "Spoofing attempts from Specific Domains", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject14')._huntingQuerycontentId14,'-', '1.1.1')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject14')._huntingQuerycontentId14,'-', '1.1.1')))]", - "version": "1.1.1" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject15').huntingQueryTemplateSpecName15]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "C2-NamedPipe_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject15').huntingQueryVersion15]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_15", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "C2-NamedPipe", - "category": "Hunting Queries", - "query": "// maximum lookback time\nlet minTimeRange = ago(7d);\n// this is what should be constantly tweaked with default C2 framework names, search uses has_any (wildcard)\nlet badPipeNames = pack_array(\n '\\\\psexec', // PSexec default pipe\n '\\\\paexec', // PSexec default pipe\n '\\\\remcom', // PSexec default pipe\n '\\\\csexec', // PSexec default pipe\n '\\\\isapi_http', // Uroburos Malware Named Pipe\n '\\\\isapi_dg', // Uroburos Malware Named Pipe\n '\\\\isapi_dg2', // Uroburos Malware Named Pipe\n '\\\\sdlrpc', // Cobra Trojan Named Pipe http://goo.gl/8rOZUX\n '\\\\ahexec', // Sofacy group malware\n '\\\\winsession', // Wild Neutron APT malware https://goo.gl/pivRZJ\n '\\\\lsassw', // Wild Neutron APT malware https://goo.gl/pivRZJ\n '\\\\46a676ab7f179e511e30dd2dc41bd388', // Project Sauron https://goo.gl/eFoP4A\n '\\\\9f81f59bc58452127884ce513865ed20', // Project Sauron https://goo.gl/eFoP4A\n '\\\\e710f28d59aa529d6792ca6ff0ca1b34', // Project Sauron https://goo.gl/eFoP4A\n '\\\\rpchlp_3', // Project Sauron https://goo.gl/eFoP4A - Technical Analysis Input\n '\\\\NamePipe_MoreWindows', // Cloud Hopper Annex B https://www.pwc.co.uk/cyber-security/pdf/cloud-hopper-annex-b-final.pdf, US-CERT Alert - RedLeaves https://www.us-cert.gov/ncas/alerts/TA17-117A\n '\\\\pcheap_reuse', // Pipe used by Equation Group malware 77486bb828dba77099785feda0ca1d4f33ad0d39b672190079c508b3feb21fb0\n '\\\\gruntsvc', // Covenant default named pipe\n '\\\\583da945-62af-10e8-4902-a8f205c72b2e', // SolarWinds SUNBURST malware report https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n '\\\\bizkaz', // Snatch Ransomware https://thedfirreport.com/2020/06/21/snatch-ransomware/\n '\\\\atctl', // https://www.virustotal.com/#/file/a4ddb2664a6c87a1d3c5da5a5a32a5df9a0b0c8f2e951811bd1ec1d44d42ccf1/detection\n '\\\\userpipe', // ruag apt case\n '\\\\iehelper', // ruag apt case\n '\\\\sdlrpc', // project cobra https://www.gdatasoftware.com/blog/2015/01/23926-analysis-of-project-cobra\n '\\\\comnap', // https://www.gdatasoftware.com/blog/2015/01/23926-analysis-of-project-cobra\n '\\\\lsadump', // Cred Dump-Tools Named Pipes\n '\\\\cachedump', // Cred Dump-Tools Named Pipes\n '\\\\wceservicepipe', // Cred Dump-Tools Named Pipes\n '\\\\jaccdpqnvbrrxlaf', // PoshC2 default named pipe\n '\\\\svcctl', // CrackMapExec default named pipe\n '\\\\csexecsvc' // CSEXEC default named pipe\n '\\\\status_', // CS default named pipes https://github.com/Neo23x0/sigma/issues/253\n '\\\\MSSE-', // CobaltStrike default named pipe\n '\\\\status_', // CobaltStrike default named pipe\n '\\\\msagent_', // (target) CobaltStrike default named pipe\n '\\\\postex_ssh_', // CobaltStrike default named pipe\n '\\\\postex_', // CobaltStrike default named pipe\n '\\\\Posh' // PoshC2 default named pipe\n);\nDeviceEvents\n| where ActionType == \"NamedPipeEvent\" and Timestamp > minTimeRange\n| extend ParsedFields=parse_json(AdditionalFields)\n| where ParsedFields.FileOperation == \"File created\"\n| where ParsedFields.PipeName has_any (badPipeNames)\n| project TimeGenerated, ActionType, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessFolderPath, InitiatingProcessCommandLine, ParsedFields.FileOperation, ParsedFields.PipeName\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Detects the creation of a named pipe used by known APT malware.\nReference - https://docs.microsoft.com/openspecs/windows_protocols/ms-wpo/4de75e21-36fd-440a-859b-75accc74487c" - }, - { - "name": "tactics", - "value": "CommandAndControl" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject15')._huntingQuerycontentId15),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 15", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject15')._huntingQuerycontentId15)]", - "contentId": "[variables('huntingQueryObject15')._huntingQuerycontentId15]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject15').huntingQueryVersion15]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject15')._huntingQuerycontentId15]", - "contentKind": "HuntingQuery", - "displayName": "C2-NamedPipe", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject15')._huntingQuerycontentId15,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject15')._huntingQuerycontentId15,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject16').huntingQueryTemplateSpecName16]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "ReconWithRundll_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject16').huntingQueryVersion16]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_16", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Recon with Rundll", - "category": "Hunting Queries", - "query": "DeviceNetworkEvents\n| where InitiatingProcessFileName =~ \"rundll32.exe\"\n// Empty command line\n| where InitiatingProcessCommandLine has \"rundll32.exe\" and InitiatingProcessCommandLine !contains \" \" \nand InitiatingProcessCommandLine != \"\" \n| summarize DestinationIPCount = dcount(RemoteIP), make_set(RemoteIP, 100000), make_set(RemoteUrl, 100000), \nmake_set(RemotePort, 100000) by InitiatingProcessCommandLine, DeviceId, bin(TimeGenerated, 5m)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query detects suspicious rundll.exe activity associated with Trickbot campaigns." - }, - { - "name": "tactics", - "value": "Discovery,Collection,CommandAndControl" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject16')._huntingQuerycontentId16),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 16", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject16')._huntingQuerycontentId16)]", - "contentId": "[variables('huntingQueryObject16')._huntingQuerycontentId16]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject16').huntingQueryVersion16]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject16')._huntingQuerycontentId16]", - "contentKind": "HuntingQuery", - "displayName": "Recon with Rundll", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject16')._huntingQuerycontentId16,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject16')._huntingQuerycontentId16,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject17').huntingQueryTemplateSpecName17]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DoppelPaymerProcdump_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject17').huntingQueryVersion17]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_17", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "DopplePaymer Procdump", - "category": "Hunting Queries", - "query": "// Dumping of LSASS memory using procdump\nDeviceProcessEvents\n| where TimeGenerated > ago(7d)\n// Command lines that include \"lsass\" and -accepteula or -ma flags used in procdump\n| where (ProcessCommandLine has \"lsass\" and (ProcessCommandLine has \"-accepteula\" or\nProcessCommandLine contains \"-ma\"))\n// Omits possible FPs where the full command is just \"procdump.exe lsass\"\nor (FileName in~ ('procdump.exe','procdump64.exe') and ProcessCommandLine has 'lsass')\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Detects the use of ProcDump to dump credentials from LSASS memory by DoppelPaymer ransomware operators." - }, - { - "name": "tactics", - "value": "CredentialAccess" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject17')._huntingQuerycontentId17),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 17", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject17')._huntingQuerycontentId17)]", - "contentId": "[variables('huntingQueryObject17')._huntingQuerycontentId17]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject17').huntingQueryVersion17]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject17')._huntingQuerycontentId17]", - "contentKind": "HuntingQuery", - "displayName": "DopplePaymer Procdump", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject17')._huntingQuerycontentId17,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject17')._huntingQuerycontentId17,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject18').huntingQueryTemplateSpecName18]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "LaZagne_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject18').huntingQueryVersion18]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_18", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Credential Harvesting Using LaZagne", - "category": "Hunting Queries", - "query": "// Find credential theft via SAM database export by LaZagne\nDeviceProcessEvents\n| where TimeGenerated > ago(7d)\n| where FileName =~ 'reg.exe'\n and ProcessCommandLine has 'save'\n and ProcessCommandLine has 'hklm'\n and ProcessCommandLine has 'sam'\n| project DeviceId, TimeGenerated, InitiatingProcessId,\nInitiatingProcessFileName, ProcessId, FileName, ProcessCommandLine\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Detects the use of LaZagne to steal credentials from the SAM database by Ryuk ransomware operators." - }, - { - "name": "tactics", - "value": "CredentialAccess" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject18')._huntingQuerycontentId18),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 18", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject18')._huntingQuerycontentId18)]", - "contentId": "[variables('huntingQueryObject18')._huntingQuerycontentId18]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject18').huntingQueryVersion18]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject18')._huntingQuerycontentId18]", - "contentKind": "HuntingQuery", - "displayName": "Credential Harvesting Using LaZagne", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject18')._huntingQuerycontentId18,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject18')._huntingQuerycontentId18,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject19').huntingQueryTemplateSpecName19]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "LSASSCredDumpProcdump_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject19').huntingQueryVersion19]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_19", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "LSASS Credential Dumping with Procdump", - "category": "Hunting Queries", - "query": "DeviceProcessEvents \n| where (FileName has_any (\"procdump.exe\", \"procdump64.exe\") and ProcessCommandLine has \"lsass\") or \n// Looking for Accepteula flag or Write a dump file with all process memory\n(ProcessCommandLine has \"lsass.exe\" and (ProcessCommandLine has \"-accepteula\" or ProcessCommandLine contains \"-ma\"))\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Detects the use of Procdump to dump credentials from LSASS memory." - }, - { - "name": "tactics", - "value": "CredentialAccess" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject19')._huntingQuerycontentId19),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 19", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject19')._huntingQuerycontentId19)]", - "contentId": "[variables('huntingQueryObject19')._huntingQuerycontentId19]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject19').huntingQueryVersion19]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject19')._huntingQuerycontentId19]", - "contentKind": "HuntingQuery", - "displayName": "LSASS Credential Dumping with Procdump", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject19')._huntingQuerycontentId19,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject19')._huntingQuerycontentId19,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject20').huntingQueryTemplateSpecName20]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "ClearSystemLogs_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject20').huntingQueryVersion20]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_20", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Clear System Logs", - "category": "Hunting Queries", - "query": "DeviceProcessEvents\n| where TimeGenerated > ago(7d)\n| where FileName =~ \"fsutil.exe\"\nand ProcessCommandLine has \"usn\" and ProcessCommandLine has \"deletejournal\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This hunting query searches for attempts to use fsutil.exe to clear system logs and delete forensic artifacts." - }, - { - "name": "tactics", - "value": "DefenseEvasion" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject20')._huntingQuerycontentId20),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 20", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject20')._huntingQuerycontentId20)]", - "contentId": "[variables('huntingQueryObject20')._huntingQuerycontentId20]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject20').huntingQueryVersion20]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject20')._huntingQuerycontentId20]", - "contentKind": "HuntingQuery", - "displayName": "Clear System Logs", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject20')._huntingQuerycontentId20,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject20')._huntingQuerycontentId20,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject21').huntingQueryTemplateSpecName21]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DoppelpaymerStopServices_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject21').huntingQueryVersion21]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_21", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Doppelpaymer Stop Services", - "category": "Hunting Queries", - "query": "// Attempts to stop services and allow ransomware execution\nDeviceProcessEvents\n| where TimeGenerated > ago(7d)\n| where InitiatingProcessFileName startswith \"psexe\" and FileName =~ \"powershell.exe\" and\nProcessCommandLine has \"stop-service\"\nand ProcessCommandLine has \"sql\" and ProcessCommandLine has \"msexchange\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query searches for attempts to stop security services, which is a common tactic used by DoppelPaymer ransomware operators." - }, - { - "name": "tactics", - "value": "Execution,DefenseEvasion" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject21')._huntingQuerycontentId21),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 21", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject21')._huntingQuerycontentId21)]", - "contentId": "[variables('huntingQueryObject21')._huntingQuerycontentId21]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject21').huntingQueryVersion21]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject21')._huntingQuerycontentId21]", - "contentKind": "HuntingQuery", - "displayName": "Doppelpaymer Stop Services", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject21')._huntingQuerycontentId21,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject21')._huntingQuerycontentId21,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject22').huntingQueryTemplateSpecName22]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "QakbotCampaignSelfDeletion_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject22').huntingQueryVersion22]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_22", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Qakbot Campaign Self Deletion", - "category": "Hunting Queries", - "query": "DeviceProcessEvents \n| where FileName =~ \"ping.exe\"\n| where InitiatingProcessFileName =~ \"cmd.exe\"\n| where (InitiatingProcessCommandLine has \"calc.exe\") and (InitiatingProcessCommandLine has \"-n 6\") and (InitiatingProcessCommandLine has \"127.0.0.1\")\n| project TimeGenerated, ProcessCommandLine, InitiatingProcessCommandLine, InitiatingProcessParentFileName, DeviceId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query detects if an instance of Qakbot has attempted to overwrite its original binary." - }, - { - "name": "tactics", - "value": "DefenseEvasion" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject22')._huntingQuerycontentId22),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 22", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject22')._huntingQuerycontentId22)]", - "contentId": "[variables('huntingQueryObject22')._huntingQuerycontentId22]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject22').huntingQueryVersion22]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject22')._huntingQuerycontentId22]", - "contentKind": "HuntingQuery", - "displayName": "Qakbot Campaign Self Deletion", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject22')._huntingQuerycontentId22,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject22')._huntingQuerycontentId22,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject23').huntingQueryTemplateSpecName23]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Regsvr32Rundll32ImageLoadsAbnormalExtension_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject23').huntingQueryVersion23]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_23", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Regsvr32 Rundll32 Image Loads Abnormal Extension", - "category": "Hunting Queries", - "query": "DeviceImageLoadEvents \n| where TimeGenerated > ago(1d)\n| where InitiatingProcessFileName has_any (\"rundll32.exe\",\"regsvr32.exe\")\n| where FileName !endswith \".dll\"\n| join (\nDeviceNetworkEvents\n| where TimeGenerated > ago(30d)\n| where InitiatingProcessFileName has_any (\"rundll32.exe\",\"regsvr32.exe\")\n| where RemoteIPType == \"Public\"\n) on InitiatingProcessFileName, InitiatingProcessId, InitiatingProcessCreationTime, InitiatingProcessCommandLine\n| project TimeGenerated, DeviceName, FileName, FolderPath, SHA1, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, InitiatingProcessParentFileName\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query is looking for regsvr32.exe or rundll32.exe loading DLL images with other extensions than .dll." - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1218.010,T1218.011" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject23')._huntingQuerycontentId23),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 23", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject23')._huntingQuerycontentId23)]", - "contentId": "[variables('huntingQueryObject23')._huntingQuerycontentId23]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject23').huntingQueryVersion23]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject23')._huntingQuerycontentId23]", - "contentKind": "HuntingQuery", - "displayName": "Regsvr32 Rundll32 Image Loads Abnormal Extension", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject23')._huntingQuerycontentId23,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject23')._huntingQuerycontentId23,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject24').huntingQueryTemplateSpecName24]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Regsvr32Rundll32WithAnomalousParentProcess_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject24').huntingQueryVersion24]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_24", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Regsvr32 Rundll32 with Anomalous Parent Process", - "category": "Hunting Queries", - "query": "DeviceProcessEvents\n| where TimeGenerated > ago(30d)\n| where FileName has_any (\"rundll32.exe\",\"regsvr32.exe\")\n| where InitiatingProcessFileName has_any (\"wscript.exe\",\"powershell.exe\",\"cmd.exe\",\"pwsh.exe\",\"cscript.exe\")\n| project TimeGenerated,DeviceName, InvestigatedProcessName=FileName, InvestigatedProcessCommandLine = ProcessCommandLine,InvestigatedProcessStartTime = ProcessCreationTime, InvestigatedProcessId = ProcessId, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessParentFileName\n| join (\nDeviceNetworkEvents\n| where TimeGenerated > ago(30d)\n| where InitiatingProcessFileName has_any (\"rundll32.exe\",\"regsvr32.exe\")\n| where RemoteIPType == \"Public\"\n| project DeviceName, InvestigatedProcessName=InitiatingProcessFileName, InvestigatedProcessCommandLine = InitiatingProcessCommandLine,InvestigatedProcessStartTime = InitiatingProcessCreationTime, InvestigatedProcessId = InitiatingProcessId, RemoteIP, RemoteUrl\n) on DeviceName, InvestigatedProcessCommandLine, InvestigatedProcessId, InvestigatedProcessName, InvestigatedProcessStartTime\n| project-away DeviceName1, InvestigatedProcessCommandLine1, InvestigatedProcessId1, InvestigatedProcessName1, InvestigatedProcessStartTime1\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query searches for rundll32.exe or regsvr32.exe being spawned by abnormal processes such as wscript.exe, powershell.exe, cmd.exe, pwsh.exe, cscript.exe." - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1218.010,T1218.011" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject24')._huntingQuerycontentId24),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 24", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject24')._huntingQuerycontentId24)]", - "contentId": "[variables('huntingQueryObject24')._huntingQuerycontentId24]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject24').huntingQueryVersion24]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject24')._huntingQuerycontentId24]", - "contentKind": "HuntingQuery", - "displayName": "Regsvr32 Rundll32 with Anomalous Parent Process", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject24')._huntingQuerycontentId24,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject24')._huntingQuerycontentId24,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject25').huntingQueryTemplateSpecName25]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Delivered Bad Emails from Top bad IPv4 addresses_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject25').huntingQueryVersion25]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_25", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Determine Successfully Delivered Phishing Emails by top IP Addresses", - "category": "Hunting Queries", - "query": "// Adjust the cutoff as needed \nlet cutoff = 5;\nEmailEvents\n| where ThreatTypes has \"Malware\" or ThreatTypes has \"Phish\" \n| summarize count() by SenderIPv4 \n| where count_ > cutoff\n| join kind=inner EmailEvents on SenderIPv4 \n| where DeliveryAction =~ \"Delivered\"\n| extend Name = tostring(split(SenderFromAddress, '@', 0)[0]), UPNSuffix = tostring(split(SenderFromAddress, '@', 1)[0])\n| extend Account_0_Name = Name\n| extend Account_0_UPNSuffix = UPNSuffix\n| extend IP_0_Address = SenderIPv4\n| extend MailBox_0_MailboxPrimaryAddress = RecipientEmailAddress\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query identifies phishing emails sent that were successfully delivered, by top IP addressess. cutoff default value is 5, adjust the value as needed." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject25')._huntingQuerycontentId25),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 25", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject25')._huntingQuerycontentId25)]", - "contentId": "[variables('huntingQueryObject25')._huntingQuerycontentId25]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject25').huntingQueryVersion25]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject25')._huntingQuerycontentId25]", - "contentKind": "HuntingQuery", - "displayName": "Determine Successfully Delivered Phishing Emails by top IP Addresses", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject25')._huntingQuerycontentId25,'-', '1.0.2')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject25')._huntingQuerycontentId25,'-', '1.0.2')))]", - "version": "1.0.2" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject26').huntingQueryTemplateSpecName26]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "SuspiciousCommandInitiatedByWebServerProcess_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject26').huntingQueryVersion26]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_26", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Detect Suspicious Commands Initiated by Webserver Processes", - "category": "Hunting Queries", - "query": "// Suspicious commands launched by web server processes\nDeviceProcessEvents \n| where TimeGenerated > ago(7d)\n// Pivoting on parents or grand parents\nand (((InitiatingProcessParentFileName in(\"w3wp.exe\", \"beasvc.exe\",\n\"httpd.exe\") or InitiatingProcessParentFileName startswith \"tomcat\")\nor InitiatingProcessFileName in(\"w3wp.exe\", \"beasvc.exe\", \"httpd.exe\") or\nInitiatingProcessFileName startswith \"tomcat\"))\n and FileName in~('cmd.exe','powershell.exe')\n| where ProcessCommandLine contains '%temp%'\n or ProcessCommandLine has 'wget'\n or ProcessCommandLine has 'whoami'\n or ProcessCommandLine has 'certutil'\n or ProcessCommandLine has 'systeminfo'\n or ProcessCommandLine has 'ping'\n or ProcessCommandLine has 'ipconfig'\n or ProcessCommandLine has 'timeout'\n| summarize take_any(TimeGenerated), take_any(TimeGenerated), take_any(FileName),\nmake_set(ProcessCommandLine, 100000), take_any(InitiatingProcessFileName),\ntake_any(InitiatingProcessParentFileName) by DeviceId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Detect suspicious commands initiated by web server processes used for network discovery and user/owner discovery." - }, - { - "name": "tactics", - "value": "Execution,DefenseEvasion,Discovery" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject26')._huntingQuerycontentId26),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 26", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject26')._huntingQuerycontentId26)]", - "contentId": "[variables('huntingQueryObject26')._huntingQuerycontentId26]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject26').huntingQueryVersion26]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject26')._huntingQuerycontentId26]", - "contentKind": "HuntingQuery", - "displayName": "Detect Suspicious Commands Initiated by Webserver Processes", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject26')._huntingQuerycontentId26,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject26')._huntingQuerycontentId26,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject27').huntingQueryTemplateSpecName27]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User&GroupEnumWithNetCommand_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject27').huntingQueryVersion27]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_27", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Enumeration of Users & Groups for Lateral Movement", - "category": "Hunting Queries", - "query": "DeviceProcessEvents \n| where TimeGenerated > ago(7d) \n| where FileName == 'net.exe' and AccountName != \"\" and ProcessCommandLine !contains '\\\\' and ProcessCommandLine !contains '/add' \n| where (ProcessCommandLine contains ' user ' or ProcessCommandLine contains ' group ') and (ProcessCommandLine contains ' /do' or ProcessCommandLine contains ' /domain') \n| extend Target = extract(\"(?i)[user|group] (\\\"*[a-zA-Z0-9-_ ]+\\\"*)\", 1, ProcessCommandLine) | filter Target != '' \n| project AccountName, Target, ProcessCommandLine, DeviceName, TimeGenerated \n| sort by AccountName, Target\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query hunts for attempts to list users or groups using Net commands, which are commonly used for lateral movement." - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject27')._huntingQuerycontentId27),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 27", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject27')._huntingQuerycontentId27)]", - "contentId": "[variables('huntingQueryObject27')._huntingQuerycontentId27]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject27').huntingQueryVersion27]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject27')._huntingQuerycontentId27]", - "contentKind": "HuntingQuery", - "displayName": "Enumeration of Users & Groups for Lateral Movement", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject27')._huntingQuerycontentId27,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject27')._huntingQuerycontentId27,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject28').huntingQueryTemplateSpecName28]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "ATP policy status check_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject28').huntingQueryVersion28]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_28", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "ATP policy status check", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where Application == \"Microsoft Exchange Online\"\n| where ActionType == \"Set-AtpPolicyForO365\"\n| mv-expand ActivityObjects\n| extend Name = tostring(ActivityObjects.Name)\n| extend Value = tostring(ActivityObjects.Value)\n| where Name in (\"EnableATPForSPOTeamsODB\", \"EnableSafeDocs\", \"AllowSafeDocsOpen\")\n| extend packed = pack(Name, Value)\n| summarize PackedInfo = make_bag(packed), ActionType = any(ActionType) by Timestamp, AccountDisplayName\n| evaluate bag_unpack(PackedInfo)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query displays the configuration auditing for 'Safe Attachments for SharePoint, OneDrive, and Microsoft Teams' and 'Safe Documents' in Microsoft Defender for Office 365." - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject28')._huntingQuerycontentId28),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 28", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject28')._huntingQuerycontentId28)]", - "contentId": "[variables('huntingQueryObject28')._huntingQuerycontentId28]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject28').huntingQueryVersion28]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject28')._huntingQuerycontentId28]", - "contentKind": "HuntingQuery", - "displayName": "ATP policy status check", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject28')._huntingQuerycontentId28,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject28')._huntingQuerycontentId28,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject29').huntingQueryTemplateSpecName29]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "JNLP attachment_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject29').huntingQueryVersion29]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_29", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "JNLP-File-Attachment", - "category": "Hunting Queries", - "query": "EmailAttachmentInfo\n| where FileName endswith \".jnlp\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "JNLP file extensions are an uncommon file type often used to deliver malware." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject29')._huntingQuerycontentId29),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 29", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject29')._huntingQuerycontentId29)]", - "contentId": "[variables('huntingQueryObject29')._huntingQuerycontentId29]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject29').huntingQueryVersion29]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject29')._huntingQuerycontentId29]", - "contentKind": "HuntingQuery", - "displayName": "JNLP-File-Attachment", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject29')._huntingQuerycontentId29,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject29')._huntingQuerycontentId29,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject30').huntingQueryTemplateSpecName30]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Safe attachment detection_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject30').huntingQueryVersion30]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_30", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Safe Attachments detections", - "category": "Hunting Queries", - "query": "EmailEvents\n| where DetectionMethods != \"\" \n| extend detection= tostring(parse_json(DetectionMethods).Phish) \n| where detection has \"File detonation reputation\" or detection has \"File detonation\"\n| summarize total=count() by bin(Timestamp, 1d) \n| order by Timestamp asc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query provides insights on the detections done by Safe Attachment detections" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject30')._huntingQuerycontentId30),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 30", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject30')._huntingQuerycontentId30)]", - "contentId": "[variables('huntingQueryObject30')._huntingQuerycontentId30]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject30').huntingQueryVersion30]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject30')._huntingQuerycontentId30]", - "contentKind": "HuntingQuery", - "displayName": "Safe Attachments detections", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject30')._huntingQuerycontentId30,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject30')._huntingQuerycontentId30,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject31').huntingQueryTemplateSpecName31]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Authentication failures_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject31').huntingQueryVersion31]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_31", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Authentication failures by time and authentication type", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago (30d)\n| project Timestamp, AR=parse_json(AuthenticationDetails), NetworkMessageId, EmailDirection, SenderFromAddress, ThreatTypes, DetectionMethods\n| evaluate bag_unpack(AR)\n| where DMARC == \"fail\"\n| summarize count() by bin(Timestamp, 1d)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing authentication failure count by authentication type. Update the authentication type below as DMARC, DKIM, SPM, CompAuth" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject31')._huntingQuerycontentId31),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 31", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject31')._huntingQuerycontentId31)]", - "contentId": "[variables('huntingQueryObject31')._huntingQuerycontentId31]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject31').huntingQueryVersion31]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject31')._huntingQuerycontentId31]", - "contentKind": "HuntingQuery", - "displayName": "Authentication failures by time and authentication type", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject31')._huntingQuerycontentId31,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject31')._huntingQuerycontentId31,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject32').huntingQueryTemplateSpecName32]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "CompAuth Failure Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject32').huntingQueryVersion32]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_32", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "CompAuth Failure Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| extend CompAuthFail = AuthenticationDetails has_any ('CompAuth\":\"fail') \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spoof - Composite Authentication fails summarizing the data daily." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject32')._huntingQuerycontentId32),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 32", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject32')._huntingQuerycontentId32)]", - "contentId": "[variables('huntingQueryObject32')._huntingQuerycontentId32]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject32').huntingQueryVersion32]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject32')._huntingQuerycontentId32]", - "contentKind": "HuntingQuery", - "displayName": "CompAuth Failure Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject32')._huntingQuerycontentId32,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject32')._huntingQuerycontentId32,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject33').huntingQueryTemplateSpecName33]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DKIM Failure Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject33').huntingQueryVersion33]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_33", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "DKIM Failure Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| extend DMARCFail = AuthenticationDetails has_any ('DKIM\":\"fail') \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spoof - DKIM fails summarizing the data daily." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject33')._huntingQuerycontentId33),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 33", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject33')._huntingQuerycontentId33)]", - "contentId": "[variables('huntingQueryObject33')._huntingQuerycontentId33]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject33').huntingQueryVersion33]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject33')._huntingQuerycontentId33]", - "contentKind": "HuntingQuery", - "displayName": "DKIM Failure Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject33')._huntingQuerycontentId33,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject33')._huntingQuerycontentId33,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject34').huntingQueryTemplateSpecName34]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "DMARC Failure Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject34').huntingQueryVersion34]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_34", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "DMARC Failure Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| extend DMARCFail = AuthenticationDetails has_any ('DMARC\":\"fail') \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spoof - DMARC fails summarizing the data daily." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject34')._huntingQuerycontentId34),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 34", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject34')._huntingQuerycontentId34)]", - "contentId": "[variables('huntingQueryObject34')._huntingQuerycontentId34]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject34').huntingQueryVersion34]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject34')._huntingQuerycontentId34]", - "contentKind": "HuntingQuery", - "displayName": "DMARC Failure Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject34')._huntingQuerycontentId34,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject34')._huntingQuerycontentId34,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject35').huntingQueryTemplateSpecName35]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "SPF Failure Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject35').huntingQueryVersion35]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_35", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "SPF Failure Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| extend DMARCFail = AuthenticationDetails has_any ('SPF\":\"fail') \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spoof - SPF fails summarizing the data daily." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject35')._huntingQuerycontentId35),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 35", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject35')._huntingQuerycontentId35)]", - "contentId": "[variables('huntingQueryObject35')._huntingQuerycontentId35]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject35').huntingQueryVersion35]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject35')._huntingQuerycontentId35]", - "contentKind": "HuntingQuery", - "displayName": "SPF Failure Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject35')._huntingQuerycontentId35,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject35')._huntingQuerycontentId35,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject36').huntingQueryTemplateSpecName36]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spoof attempts with auth failure_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject36').huntingQueryVersion36]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_36", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spoof attempts with auth failure", - "category": "Hunting Queries", - "query": "EmailEvents \n| where Timestamp > ago (1d) and DetectionMethods contains \"spoof\" \n| project Timestamp, AR=parse_json(AuthenticationDetails) , NetworkMessageId, EmailDirection, Subject, SenderFromAddress, SenderIPv4,ThreatTypes, DetectionMethods, ThreatNames \n| evaluate bag_unpack(AR) \n| where SPF == \"fail\" or DMARC == \"fail\" or DKIM == \"fail\" or CompAuth == \"fail\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps in checking for spoofing attempts on the domain with Authentication failures" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject36')._huntingQuerycontentId36),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 36", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject36')._huntingQuerycontentId36)]", - "contentId": "[variables('huntingQueryObject36')._huntingQuerycontentId36]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject36').huntingQueryVersion36]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject36')._huntingQuerycontentId36]", - "contentKind": "HuntingQuery", - "displayName": "Spoof attempts with auth failure", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject36')._huntingQuerycontentId36,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject36')._huntingQuerycontentId36,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject37').huntingQueryTemplateSpecName37]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Spoof detections by Sender Domain_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject37').huntingQueryVersion37]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_37", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top Spoof external domain detections by Sender domain (P1/P2)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where EmailDirection == \"Inbound\"\n| summarize TotalEmailCount = count(),\n SpoofExternalCount = countif(set_has_element(parse_json(DetectionMethods).Phish, \"Spoof external domain\")) by P1Sender=SenderMailFromDomain, P2Sender=SenderFromDomain\n| extend SpoofExternal_Traffic_Percentage = todouble(round(SpoofExternalCount / todouble(TotalEmailCount) * 100, 2))\n| where SpoofExternalCount != 0\n| top 10 by SpoofExternalCount\n| project P1Sender, P2Sender, SpoofExternalCount, TotalEmailCount, SpoofExternal_Traffic_Percentage\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish-Spoof-external domain detections summarizing the data by the top 10 email sender P2 domain (SenderFromDomain) and sender P1 domain (SenderMailFromDomain)." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject37')._huntingQuerycontentId37),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 37", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject37')._huntingQuerycontentId37)]", - "contentId": "[variables('huntingQueryObject37')._huntingQuerycontentId37]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject37').huntingQueryVersion37]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject37')._huntingQuerycontentId37]", - "contentKind": "HuntingQuery", - "displayName": "Top Spoof external domain detections by Sender domain (P1/P2)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject37')._huntingQuerycontentId37,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject37')._huntingQuerycontentId37,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject38').huntingQueryTemplateSpecName38]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Spoof DMARC detections by Sender Domain_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject38').huntingQueryVersion38]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_38", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top Spoof DMARC detections by Sender domain (P1/P2)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where EmailDirection == \"Inbound\"\n| summarize TotalEmailCount = count(),\n DMARCFailCount = countif(set_has_element(parse_json(DetectionMethods).Phish, \"Spoof DMARC\")) by P1Sender=SenderMailFromDomain, P2Sender=SenderFromDomain\n| extend DMARCFail_Traffic_Percentage = todouble(round(DMARCFailCount / todouble(TotalEmailCount) * 100, 2))\n| where DMARCFailCount != 0\n| top 10 by DMARCFailCount\n| project P1Sender, P2Sender, DMARCFailCount, TotalEmailCount, DMARCFail_Traffic_Percentage\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spoof-DMARC fails detections summarizing the data by the top email sender P2 domain (SenderFromDomain) and sender P1 domain (SenderMailFromDomain)." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject38')._huntingQuerycontentId38),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 38", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject38')._huntingQuerycontentId38)]", - "contentId": "[variables('huntingQueryObject38')._huntingQuerycontentId38]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject38').huntingQueryVersion38]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject38')._huntingQuerycontentId38]", - "contentKind": "HuntingQuery", - "displayName": "Top Spoof DMARC detections by Sender domain (P1/P2)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject38')._huntingQuerycontentId38,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject38')._huntingQuerycontentId38,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject39').huntingQueryTemplateSpecName39]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Spoof Intra-Org detections by SenderDomain_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject39').huntingQueryVersion39]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_39", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top Spoof intra-org detections by Sender domain (P1/P2)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where EmailDirection == \"Inbound\"\n| summarize TotalEmailCount = count(),\n SpoofInternalCount = countif(set_has_element(parse_json(DetectionMethods).Phish, \"Spoof intra-org\")) by P1Sender=SenderMailFromDomain, P2Sender=SenderFromDomain\n| extend SpoofInternal_Traffic_Percentage = todouble(round(SpoofInternalCount / todouble(TotalEmailCount) * 100, 2))\n| where SpoofInternalCount != 0\n| top 10 by SpoofInternalCount\n| project P1Sender, P2Sender, SpoofInternalCount, TotalEmailCount, SpoofInternal_Traffic_Percentage\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish-Spoof-internal domain detections summarizing the data by the top 10 email sender P2 domain (SenderFromDomain) and sender P1 domain (SenderMailFromDomain)." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject39')._huntingQuerycontentId39),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 39", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject39')._huntingQuerycontentId39)]", - "contentId": "[variables('huntingQueryObject39')._huntingQuerycontentId39]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject39').huntingQueryVersion39]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject39')._huntingQuerycontentId39]", - "contentKind": "HuntingQuery", - "displayName": "Top Spoof intra-org detections by Sender domain (P1/P2)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject39')._huntingQuerycontentId39,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject39')._huntingQuerycontentId39,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject40').huntingQueryTemplateSpecName40]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Message from Accepted Domain with DMARC TempError_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject40').huntingQueryVersion40]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_40", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Message from an Accepted Domain with DMARC TempError", - "category": "Hunting Queries", - "query": "let SenderDomains = pack_array ('contoso.com','fabrikam.fr');\nEmailEvents\n| where EmailDirection == 'Inbound' and SenderMailFromDomain in (SenderDomains)\n| extend SPF= tostring(parse_json(AuthenticationDetails).SPF)\n| extend DMARC= tostring(parse_json(AuthenticationDetails).DMARC)\n| where DMARC == \"temperror\" or SPF == \"temperror\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious email appearing to come from an Accepted Domain but DMARC had a (transient) TempError result." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject40')._huntingQuerycontentId40),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 40", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject40')._huntingQuerycontentId40)]", - "contentId": "[variables('huntingQueryObject40')._huntingQuerycontentId40]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject40').huntingQueryVersion40]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject40')._huntingQuerycontentId40]", - "contentKind": "HuntingQuery", - "displayName": "Message from an Accepted Domain with DMARC TempError", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject40')._huntingQuerycontentId40,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject40')._huntingQuerycontentId40,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject41').huntingQueryTemplateSpecName41]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Message with URL listed on OpenPhish delivered into Inbox_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject41').huntingQueryVersion41]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_41", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Message with URL listed on OpenPhish delivered into Inbox", - "category": "Hunting Queries", - "query": "let PhishingURLs = externaldata(url: string)\n[\n \"https://raw.githubusercontent.com/openphish/public_feed/refs/heads/main/feed.txt\"\n]\nwith (format=\"txt\"); // CSV and JSON formats are also valid formats if using the premium feeds\nEmailUrlInfo\n| where Url in (PhishingURLs)\n| join EmailEvents on NetworkMessageId\n| where LatestDeliveryAction == \"Delivered\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious email with a URL from OpenPhish was delivered to Inbox" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject41')._huntingQuerycontentId41),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 41", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject41')._huntingQuerycontentId41)]", - "contentId": "[variables('huntingQueryObject41')._huntingQuerycontentId41]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject41').huntingQueryVersion41]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject41')._huntingQuerycontentId41]", - "contentKind": "HuntingQuery", - "displayName": "Message with URL listed on OpenPhish delivered into Inbox", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject41')._huntingQuerycontentId41,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject41')._huntingQuerycontentId41,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject42').huntingQueryTemplateSpecName42]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Potential OAuth phishing email delivered into Inbox_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject42').huntingQueryVersion42]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_42", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Potential OAuth phishing email delivered into Inbox", - "category": "Hunting Queries", - "query": "let LoginCom = strcat(\"login.\", \"microsoftonline.com\");\nlet LoginUs = strcat(\"login.\", \"microsoftonline.us\");\nlet ConsentUrls = pack_array(strcat(\"://\", LoginCom, \"/common/oauth2\"), strcat(\"://\", LoginCom, \"/consumers/oauth2\"), strcat(\"://\", LoginCom, \"/organizations/oauth2\"), strcat(\"://\", LoginUs, \"/common/oauth2\"), strcat(\"://\", LoginUs, \"/consumers/oauth2\"), strcat(\"://\", LoginUs, \"/organizations/oauth2\"));\nEmailUrlInfo\n| where Url has_any (ConsentUrls)\n| join EmailEvents on NetworkMessageId\n| where EmailDirection == \"Inbound\" and LatestDeliveryAction == \"Delivered\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious OAuth app URL has been delivered into an Inbox." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject42')._huntingQuerycontentId42),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 42", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject42')._huntingQuerycontentId42)]", - "contentId": "[variables('huntingQueryObject42')._huntingQuerycontentId42]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject42').huntingQueryVersion42]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject42')._huntingQuerycontentId42]", - "contentKind": "HuntingQuery", - "displayName": "Potential OAuth phishing email delivered into Inbox", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject42')._huntingQuerycontentId42,'-', '1.0.1')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject42')._huntingQuerycontentId42,'-', '1.0.1')))]", - "version": "1.0.1" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject43').huntingQueryTemplateSpecName43]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Potentially malicious SVG file delivered into Inbox_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject43').huntingQueryVersion43]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_43", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Potentially malicious svg file delivered to Inbox", - "category": "Hunting Queries", - "query": "let SuspiciousDisplayNames = pack_array(\"Help Desk\", \"Help Desk Team\", \"Help Desk IT\", \"Microsoft Security\", \"IT Support\", \"Helpdesk\");\nEmailAttachmentInfo\n| where FileName contains \".svg\" and FileType == \"html\" // SVG files which render as only an image will display FileType as Text, unless containing Javascript which displays FileType as Html\n| join EmailEvents on NetworkMessageId\n// | where SenderDisplayName has_any (SuspiciousDisplayNames) // Optionally remove comment to also evaluate and filter based on email display name\n| where LatestDeliveryLocation == \"Inbox/folder\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious .SVG file has been delivered into an Inbox." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject43')._huntingQuerycontentId43),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 43", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject43')._huntingQuerycontentId43)]", - "contentId": "[variables('huntingQueryObject43')._huntingQuerycontentId43]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject43').huntingQueryVersion43]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject43')._huntingQuerycontentId43]", - "contentKind": "HuntingQuery", - "displayName": "Potentially malicious svg file delivered to Inbox", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject43')._huntingQuerycontentId43,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject43')._huntingQuerycontentId43,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject44').huntingQueryTemplateSpecName44]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Audit Email Preview-Download action_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject44').huntingQueryVersion44]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_44", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Audit Email Preview-Download action", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| project Timestamp, ActionType, AccountDisplayName, AR=parse_json(RawEventData) \n| evaluate bag_unpack(AR)\n| where RecordType == \"38\" and ExtendedProperties contains \"DownloadEMail\" or ExtendedProperties contains \"GetMailPreviewUrl\"\n| serialize \n| extend RowNumber = row_number()\n| mv-expand ExtendedProperties\n| evaluate bag_unpack(ExtendedProperties, 'xp_')\n| extend DownloadEMail = iff(tostring(xp_Name) == 'DownloadEMail', xp_Value, ''), GetMailPreviewUrl = iff(tostring(xp_Name) == 'GetMailPreviewUrl', xp_Value, ''), MailboxId = iff(tostring(xp_Name) == 'MailboxId', xp_Value, ''), InternetMessageId = iff(tostring(xp_Name) == 'InternetMessageId', xp_Value, '')\n| summarize Timestamp = any(Timestamp), ActionType = any(ActionType), AccountDisplayName = any(AccountDisplayName), DownloadEmail = make_set_if(DownloadEMail, isnotempty( DownloadEMail)), GetMailPreviewUrl = make_set_if(GetMailPreviewUrl, isnotempty( GetMailPreviewUrl)), MailboxId = make_set_if(MailboxId, isnotempty( MailboxId)), InternetMessageId = make_set_if(InternetMessageId, isnotempty( InternetMessageId)) by RowNumber\n| extend DownloadEmail = tobool(DownloadEmail[0]), GetMailPreviewUrl = tobool(GetMailPreviewUrl[0]), MailboxId = tostring(MailboxId[0]), InternetMessageId = tostring(InternetMessageId[0])\n| project-away RowNumber\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps report on who Previewed/Downloaded email messages using the Email entity page in Defender for Office 365" - }, - { - "name": "tactics", - "value": "PrivilegeEscalation" - }, - { - "name": "techniques", - "value": "T1078" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject44')._huntingQuerycontentId44),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 44", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject44')._huntingQuerycontentId44)]", - "contentId": "[variables('huntingQueryObject44')._huntingQuerycontentId44]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject44').huntingQueryVersion44]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject44')._huntingQuerycontentId44]", - "contentKind": "HuntingQuery", - "displayName": "Audit Email Preview-Download action", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject44')._huntingQuerycontentId44,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject44')._huntingQuerycontentId44,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject45').huntingQueryTemplateSpecName45]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Bad email percentage - Inbound emails_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject45').huntingQueryVersion45]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_45", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Bad email percentage of Inbound emails", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Inbound\"\n| summarize TotalEmailCount = count(),\nBadEmailCount = countif(isnotempty(ThreatTypes)) by bin(Timestamp, 1d)\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(BadEmailCount / todouble(TotalEmailCount) * 100, 2))\n| project Timestamp,Bad_Traffic_Percentage_Inbound\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises bad traffic (% of emails with threats) compared to total inbound emails over time summarising the data daily." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject45')._huntingQuerycontentId45),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 45", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject45')._huntingQuerycontentId45)]", - "contentId": "[variables('huntingQueryObject45')._huntingQuerycontentId45]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject45').huntingQueryVersion45]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject45')._huntingQuerycontentId45]", - "contentKind": "HuntingQuery", - "displayName": "Bad email percentage of Inbound emails", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject45')._huntingQuerycontentId45,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject45')._huntingQuerycontentId45,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject46').huntingQueryTemplateSpecName46]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Calculate MDO Efficacy_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject46').huntingQueryVersion46]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_46", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Calculate overall MDO efficacy", - "category": "Hunting Queries", - "query": "let _startTime = ago(30d); \nlet _endTime = now(); \n// Get all mailflow detected as clean at time of delivery \nlet EmailEventsClean = materialize( \n EmailEvents \n | where Timestamp between (_startTime .. _endTime) and EmailDirection == \"Inbound\" \n | where ThreatTypes !contains \"Phish\" and ThreatTypes !contains \"Malware\" \n | project NetworkMessageId,ThreatTypes \n); \n// Get all mailflow detected as phish or malware at time of delivery \nlet EmailEventsThreats = materialize( \n EmailEvents \n | where Timestamp between (_startTime .. _endTime) and EmailDirection == \"Inbound\" \n | where ThreatTypes contains \"Phish\" or ThreatTypes contains \"Malware\" \n | extend MDO_detection = parse_json(DetectionMethods) \n | extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0])) \n | extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\") \n | project NetworkMessageId,FirstDetection,FirstSubcategory,MDO_detection,ThreatTypes \n); \n// Get all post delivery ZAP / Redelivery events, and arg_max them to ensure we have the latest verdict to work with for each\nlet EmailPostDeliveryFiltered = materialize( \n EmailPostDeliveryEvents \n | where Timestamp between (_startTime .. datetime_add('day', 7, _endTime)) \n | where ActionType in (\"Malware ZAP\",\"Phish ZAP\",\"Redelivery\") \n | extend Key = strcat(NetworkMessageId , \"-\", RecipientEmailAddress) \n | summarize arg_max(Timestamp, *) by Key \n | project Action,ActionType,ActionResult,ThreatTypes,NetworkMessageId \n); \n// Optional - Get all admin submissions for malware or phish, so we can also count these in the miss bucket. \nlet CloudAppEventsFiltered = materialize( \n CloudAppEvents \n | where Timestamp between (_startTime .. datetime_add('day', 7, _endTime)) \n | where ActionType == \"AdminSubmissionSubmitted\" \n | extend SubmissionType = tostring(parse_json(RawEventData).SubmissionType) \n | extend NetworkMessageId = tostring(parse_json(RawEventData).ObjectId) \n | where SubmissionType in (\"1\", \"2\") \n | project SubmissionType,NetworkMessageId \n); \n// Get the number of threats caught in mailflow \nlet Mal_Phish_Mailflow = toscalar( \n EmailEventsThreats \n | summarize count() \n); \n// Get the number of threats caught in mailflow which turned out to be false positives (FPs) so we can correct the calculation \nlet FP_ZAP = toscalar( \n EmailPostDeliveryFiltered \n | where ThreatTypes !contains \"Phish\" and ThreatTypes !contains \"Malware\" and ActionType == \"Redelivery\" \n | join kind=leftsemi (EmailEventsThreats) on NetworkMessageId \n | summarize count() \n); \n// Get the number of threats successfully cleaned up post delivery, ignoring where administrative policy stopped action \nlet FN_ZAP_Successful = toscalar( \n EmailPostDeliveryFiltered \n | where ActionType in (\"Malware ZAP\",\"Phish ZAP\") and ActionResult in (\"Success\",\"AdminPolicy\") \n | join kind=leftsemi (EmailEventsClean) on NetworkMessageId \n | summarize count() \n); \n// Get the number of threats unsuccessfully cleaned up post delivery. \nlet FN_ZAP_Unsuccessful = toscalar( \n EmailPostDeliveryFiltered \n | where ActionType in (\"Malware ZAP\",\"Phish ZAP\") and ActionResult !in (\"Success\",\"AdminPolicy\") \n | join kind=leftsemi (EmailEventsClean) on NetworkMessageId \n | summarize count() \n); \n// Join the admin submissions to clean mailflow to find the additional miss \nlet FN_Admin_Submissions = toscalar( \n CloudAppEventsFiltered \n | join kind=rightsemi (EmailEventsClean) on NetworkMessageId \n | summarize count() \n ); \n// Print each result, and run the formula to calculate effectiveness at time of delivery and post delivery. \nunion withsource=Table \n (print StatisticName=\"Mal/Phish Mailflow totals - Minus FPs\", Value=toreal(Mal_Phish_Mailflow) - toreal(FP_ZAP)), \n (print StatisticName=\"Admin Mal/Phish FNs Submitted\", Value=toreal(FN_Admin_Submissions)), \n (print StatisticName=\"Mal/Phish FPs Reverse Zapped\", Value=toreal(FP_ZAP)), \n (print StatisticName=\"Mal/Phish Successfully Zapped\", Value=toreal(FN_ZAP_Successful)), \n (print StatisticName=\"Mal/Phish UN-Successfully Zapped\", Value=toreal(FN_ZAP_Unsuccessful)), \n (print StatisticName=\"Effectiveness Post Delivery\", Value=abs(round(((toreal(FN_Admin_Submissions)+toreal(FN_ZAP_Unsuccessful))/(toreal(Mal_Phish_Mailflow)+toreal(FN_ZAP_Successful)+toreal(FN_ZAP_Unsuccessful)+toreal(FN_Admin_Submissions)-toreal(FP_ZAP))*100-100),2))), \n (print StatisticName=\"Effectiveness Pre-Delivery\", Value=abs(round(((toreal(FN_Admin_Submissions)+toreal(FN_ZAP_Unsuccessful)+toreal(FN_ZAP_Successful))/(toreal(Mal_Phish_Mailflow)+toreal(FN_ZAP_Successful)+toreal(FN_ZAP_Unsuccessful)+toreal(FN_Admin_Submissions)-toreal(FP_ZAP))*100-100),2)))\n| project StatisticName, Value\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps calculate overall efficacy of MDO based on threats blocked pre-delivery, post-delivery cleanups, or were uncaught." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject46')._huntingQuerycontentId46),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 46", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject46')._huntingQuerycontentId46)]", - "contentId": "[variables('huntingQueryObject46')._huntingQuerycontentId46]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject46').huntingQueryVersion46]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject46')._huntingQuerycontentId46]", - "contentKind": "HuntingQuery", - "displayName": "Calculate overall MDO efficacy", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject46')._huntingQuerycontentId46,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject46')._huntingQuerycontentId46,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject47').huntingQueryTemplateSpecName47]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Email sender IP address Geo location information_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject47').huntingQueryVersion47]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_47", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email sender IP address Geo location information", - "category": "Hunting Queries", - "query": "EmailEvents\n| where geo_info_from_ip_address(SenderIPv4) != \"\"\n| extend GeoIPInfo = geo_info_from_ip_address(SenderIPv4)\n| extend country = tostring(parse_json(GeoIPInfo).country)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps getting GeoIP information of emails SenderIPv4 addresses." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject47')._huntingQuerycontentId47),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 47", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject47')._huntingQuerycontentId47)]", - "contentId": "[variables('huntingQueryObject47')._huntingQuerycontentId47]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject47').huntingQueryVersion47]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject47')._huntingQuerycontentId47]", - "contentKind": "HuntingQuery", - "displayName": "Email sender IP address Geo location information", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject47')._huntingQuerycontentId47,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject47')._huntingQuerycontentId47,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject48').huntingQueryTemplateSpecName48]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Hunt for Admin email access_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject48').huntingQueryVersion48]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_48", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Hunt for Admin email access", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminMailAccess\"\n| extend data = RawEventData[\"ExtendedProperties\"]\n| extend OpenedMailbox = data[1].[\"Value\"]\n| extend OpenedEmail = url_decode(tostring(data[2].[\"Value\"]))\n| project AccountDisplayName, ActionType, OpenedMailbox, OpenedEmail\n| join EmailEvents on $left.OpenedEmail == $right.InternetMessageId\n| project Timestamp , Actor = AccountDisplayName, ActionType, OpenedMailbox, SenderFromAddress, RecipientEmailAddress, Subject\n| order by Timestamp desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps report on email access by administrators" - }, - { - "name": "tactics", - "value": "PrivilegeEscalation" - }, - { - "name": "techniques", - "value": "T1078" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject48')._huntingQuerycontentId48),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 48", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject48')._huntingQuerycontentId48)]", - "contentId": "[variables('huntingQueryObject48')._huntingQuerycontentId48]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject48').huntingQueryVersion48]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject48')._huntingQuerycontentId48]", - "contentKind": "HuntingQuery", - "displayName": "Hunt for Admin email access", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject48')._huntingQuerycontentId48,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject48')._huntingQuerycontentId48,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject49').huntingQueryTemplateSpecName49]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Hunt for TABL changes_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject49').huntingQueryVersion49]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_49", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Hunt for TABL changes", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType contains \"TenantAllowBlockListItems\"\n| order by Timestamp desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for Tenant allow/block list (TABL) changes in Defender for Office 365" - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject49')._huntingQuerycontentId49),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 49", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject49')._huntingQuerycontentId49)]", - "contentId": "[variables('huntingQueryObject49')._huntingQuerycontentId49]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject49').huntingQueryVersion49]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject49')._huntingQuerycontentId49]", - "contentKind": "HuntingQuery", - "displayName": "Hunt for TABL changes", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject49')._huntingQuerycontentId49,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject49')._huntingQuerycontentId49,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject50').huntingQueryTemplateSpecName50]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Local time to UTC time conversion_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject50').huntingQueryVersion50]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_50", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Local time to UTC time conversion", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp between (datetime_local_to_utc(datetime(2023-08-10T00:00:00Z),\"Europe/Madrid\") .. datetime_local_to_utc(datetime(2023-08-31T23:59:59Z),\"Europe/Madrid\"))\n| where DeliveryAction == \"Delivered\"\n| where LatestDeliveryLocation == \"Quarantine\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Advanced Hunting has default timezone as UTC time. Filters in Advanced Hunting also work in UTC by default whereas query results are shown in local time if user has selected local time zone in security center settings." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject50')._huntingQuerycontentId50),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 50", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject50')._huntingQuerycontentId50)]", - "contentId": "[variables('huntingQueryObject50')._huntingQuerycontentId50]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject50').huntingQueryVersion50]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject50')._huntingQuerycontentId50]", - "contentKind": "HuntingQuery", - "displayName": "Local time to UTC time conversion", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject50')._huntingQuerycontentId50,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject50')._huntingQuerycontentId50,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject51').huntingQueryTemplateSpecName51]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Mail item accessed_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject51').huntingQueryVersion51]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_51", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Mail item accessed", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where Timestamp > ago(30d)\n| extend Record= (parse_json(RawEventData)).RecordType\n| where Record == 50\n| take 10\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing emails accessed by end users using cloud app events data" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject51')._huntingQuerycontentId51),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 51", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject51')._huntingQuerycontentId51)]", - "contentId": "[variables('huntingQueryObject51')._huntingQuerycontentId51]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject51').huntingQueryVersion51]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject51')._huntingQuerycontentId51]", - "contentKind": "HuntingQuery", - "displayName": "Mail item accessed", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject51')._huntingQuerycontentId51,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject51')._huntingQuerycontentId51,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject52').huntingQueryTemplateSpecName52]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malicious email senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject52').huntingQueryVersion52]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_52", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malicious email senders", - "category": "Hunting Queries", - "query": "let SenderWithQuarantine = EmailEvents\n| where LatestDeliveryLocation == \"Quarantine\"\n| project SenderFromAddress;\nEmailEvents\n| where LatestDeliveryLocation == \"Inbox/folder\"\n| where SenderFromAddress in (SenderWithQuarantine)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for emails from a sender with at least one email in quarantine" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject52')._huntingQuerycontentId52),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 52", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject52')._huntingQuerycontentId52)]", - "contentId": "[variables('huntingQueryObject52')._huntingQuerycontentId52]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject52').huntingQueryVersion52]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject52')._huntingQuerycontentId52]", - "contentKind": "HuntingQuery", - "displayName": "Malicious email senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject52')._huntingQuerycontentId52,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject52')._huntingQuerycontentId52,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject53').huntingQueryTemplateSpecName53]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MDO daily detection summary report_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject53').huntingQueryVersion53]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_53", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "MDO daily detection summary report", - "category": "Hunting Queries", - "query": "let QueryTime = 30d;\nlet Reports = CloudAppEvents \n| where Timestamp > ago(QueryTime)\n| where ActionType == \"UserSubmission\" or ActionType == \"AdminSubmission\"\n| extend MessageDate = todatetime((parse_json(RawEventData)).MessageDate)\n| extend NetworkMessageID = tostring((parse_json(RawEventData)).ObjectId)\n| extend Date_value = tostring(format_datetime( MessageDate, \"yyyy-MM-dd\"))\n| distinct Date_value,NetworkMessageID\n| summarize count() by Date_value\n| project Date_value, MessagesGotReported=count_;\nlet ThreatByAutomation = (AlertEvidence | where Title == \"Email reported by user as malware or phish\")\n| extend LastVerdictfromAutomation = tostring((parse_json(AdditionalFields)).LastVerdict)\n| extend Date_value = tostring(format_datetime( Timestamp, \"yyyy-MM-dd\"))\n| extend DetectionFromAIR = iif(isempty(LastVerdictfromAutomation), \"NoThreatsFound\", tostring(LastVerdictfromAutomation))\n| summarize PostDeliveryTotalAIRInvestigations = count(),\n PostDeliveryAirNoThreatsFound = countif(DetectionFromAIR contains \"NoThreatsFound\"),\n PostDeliveryAirSuspicious = countif(DetectionFromAIR contains \"Suspicious\"),\n PostDeliveryAirMalicious = countif(DetectionFromAIR contains \"Malicious\")\n by Date_value //Date Reported from Message Submissions from CloudAppEvents does not match to the AIR Investigations from Alert playbooks\n| project Date_value, PostDeliveryTotalAIRInvestigations, PostDeliveryAirNoThreatsFound, PostDeliveryAirSuspicious, PostDeliveryAirMalicious;\nlet DeliveryInboundEvents = (EmailEvents | where EmailDirection == \"Inbound\" and Timestamp > ago(QueryTime)\n| extend Date_value = tostring(format_datetime( Timestamp, \"yyyy-MM-dd\"))\n| project Date_value, Timestamp, NetworkMessageId, DetectionMethods ,RecipientEmailAddress);\nlet PostDeliveryEvents = (EmailPostDeliveryEvents | where ActionType contains \"ZAP\" and ActionResult == \"Success\"| join DeliveryInboundEvents on RecipientEmailAddress, NetworkMessageId //Only successful ZAP Events, there could still be more, join on Recipient and NetID\n| extend Date_value = tostring(format_datetime( Timestamp, \"yyyy-MM-dd\")) //Zap Timestamp is used and not MessageDate received\n| summarize PostDeliveryZAP=count() by Date_value);\nlet DeliveryByThreat = (DeliveryInboundEvents\n| where Timestamp > ago(QueryTime)\n| extend Date_value = tostring(format_datetime( Timestamp, \"yyyy-MM-dd\"))\n| extend MDO_detection = parse_json(DetectionMethods)\n| extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0]))\n| extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\"))\n| summarize TotalEmails = count(),\n Clean = countif(FirstSubcategory contains \"Clean\"),\n Malware = countif(FirstSubcategory contains \"Malware\"),\n Phish = countif(FirstSubcategory contains \"Phish\"),\n Spam = countif(FirstSubcategory contains \"Spam\" and FirstSubcategory !contains \"Bulk\"),\n Bulk = countif(FirstSubcategory contains \"Bulk\") \n by Date_value;\nDeliveryByThreat\n| join kind=fullouter Reports on Date_value\n| join kind=fullouter PostDeliveryEvents on Date_value\n| join kind=fullouter ThreatByAutomation on Date_value\n| sort by Date_value asc\n| project Date_value, Clean, Malware, Phish, Spam, Bulk, MessagesGotReported, PostDeliveryZAP, PostDeliveryTotalAIRInvestigations, PostDeliveryAirNoThreatsFound, PostDeliveryAirMalicious, PostDeliveryAirSuspicious\n| where isnotempty(Date_value) // As Reports from CloudAppEvents Submissions could contain messages submitted before 30 days it is good to remove all > 30 days, otherwise EMailEvents wouldn't have a date\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps report daily on total number of emails, total number of emails detected aby Defender for Office 365" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject53')._huntingQuerycontentId53),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 53", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject53')._huntingQuerycontentId53)]", - "contentId": "[variables('huntingQueryObject53')._huntingQuerycontentId53]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject53').huntingQueryVersion53]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject53')._huntingQuerycontentId53]", - "contentKind": "HuntingQuery", - "displayName": "MDO daily detection summary report", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject53')._huntingQuerycontentId53,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject53')._huntingQuerycontentId53,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject54').huntingQueryTemplateSpecName54]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "New TABL Items_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject54').huntingQueryVersion54]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_54", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "New TABL Items", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"New-TenantAllowBlockListItems\"\n| extend Parameters = RawEventData.Parameters\n| mv-apply Parameters on ( \n extend Out=bag_pack(tostring(Parameters.Name), Parameters.Value)\n | summarize Parameters=make_bag(Out)\n )\n| extend Allow=Parameters.Allow, Block=Parameters.Block, Entry=Parameters.Entries, ExpirationDate=Parameters.ExpirationDate, ListType=Parameters.ListType,ListSubType=Parameters.ListSubType, ModifiedBy=Parameters.ModifiedBy, NoExpiration=Parameters.NoExpiration, SubmissionID=Parameters.SubmissionID, SubmissionUserId=Parameters.SubmissionUserId, Notes=Parameters.Notes\n| extend Action=iff(Allow == \"True\", \"Allow\", iff(Block == \"True\", \"Block\", \"Unknown\")), AccountUpn=tostring(coalesce(SubmissionUserId, ModifiedBy))\n| project Timestamp, Action, ListType, ListSubType, Entry, ExpirationDate, NoExpiration, AccountUpn, Notes, SubmissionID, ReportId\n| order by Timestamp desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps identifying when new items being added to the Tenant/Allow Block List (TABL) in Defender for Office 365." - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject54')._huntingQuerycontentId54),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 54", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject54')._huntingQuerycontentId54)]", - "contentId": "[variables('huntingQueryObject54')._huntingQuerycontentId54]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject54').huntingQueryVersion54]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject54')._huntingQuerycontentId54]", - "contentKind": "HuntingQuery", - "displayName": "New TABL Items", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject54')._huntingQuerycontentId54,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject54')._huntingQuerycontentId54,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject55').huntingQueryTemplateSpecName55]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 Domains sending Malicious Emails (Malware+Phish+Spam)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject55').huntingQueryVersion55]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_55", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 Domains sending Malicious Emails (Malware+Phish+Spam)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Inbound\"\n// Exclude phishing-simulation and SecOps mailbox traffic so they do not skew the ranking\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ThreatTypes has_any (\"Malware\", \"Phish\", \"Spam\")\n// Uncomment the line below to exclude your own organization's domains (including subdomains)\n// | where SenderFromDomain !contains \".yourdomain.com\"\n// De-duplicate each delivery (NetworkMessageId + recipient) before counting so re-scanned messages are counted once\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize count() by SenderFromDomain\n| sort by count_ desc\n| top 10 by count_\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Identifies the top 10 sender domains delivering inbound emails classified as malware, phishing, or spam.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject55')._huntingQuerycontentId55),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 55", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject55')._huntingQuerycontentId55)]", - "contentId": "[variables('huntingQueryObject55')._huntingQuerycontentId55]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject55').huntingQueryVersion55]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject55')._huntingQuerycontentId55]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 Domains sending Malicious Emails (Malware+Phish+Spam)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject55')._huntingQuerycontentId55,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject55')._huntingQuerycontentId55,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject56').huntingQueryTemplateSpecName56]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 External Senders (Malware)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject56').huntingQueryVersion56]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_56", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 External Senders (Malware)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Inbound\"\n// Exclude phishing-simulation and SecOps mailbox traffic so they do not skew the ranking\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ThreatTypes has \"Malware\"\n//| where SenderFromAddress !contains \".yourdomain.com\"\n// De-duplicate each delivery (NetworkMessageId + recipient) before counting so re-scanned messages are counted once\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize count() by SenderFromAddress\n| sort by count_ desc\n| top 10 by count_\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Identifies the top 10 external sender addresses delivering inbound emails classified as malware.\nIf you want to exclude your own organization's domains (including subdomains), add a filter after the malware filter, e.g.:\n | where SenderFromAddress !contains \".yourdomain.com\"\n(Replace \"yourdomain.com\" with your actual domain.)\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject56')._huntingQuerycontentId56),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 56", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject56')._huntingQuerycontentId56)]", - "contentId": "[variables('huntingQueryObject56')._huntingQuerycontentId56]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject56').huntingQueryVersion56]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject56')._huntingQuerycontentId56]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 External Senders (Malware)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject56')._huntingQuerycontentId56,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject56')._huntingQuerycontentId56,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject57').huntingQueryTemplateSpecName57]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 External Senders (Phish)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject57').huntingQueryVersion57]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_57", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 External Senders (Phish)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Inbound\"\n// Exclude phishing-simulation and SecOps mailbox traffic so they do not skew the ranking\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ThreatTypes has \"Phish\"\n//| where SenderFromAddress !contains \".yourdomain.com\"\n// De-duplicate each delivery (NetworkMessageId + recipient) before counting so re-scanned messages are counted once\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize count() by SenderFromAddress\n| sort by count_ desc\n| top 10 by count_\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Identifies the top 10 external sender addresses delivering inbound emails classified as phishing.\nIf you want to exclude your own organization's domains (including subdomains), add a filter after the phishing filter, e.g.:\n | where SenderFromAddress !contains \".yourdomain.com\"\n(Replace \"yourdomain.com\" with your actual domain.)\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject57')._huntingQuerycontentId57),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 57", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject57')._huntingQuerycontentId57)]", - "contentId": "[variables('huntingQueryObject57')._huntingQuerycontentId57]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject57').huntingQueryVersion57]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject57')._huntingQuerycontentId57]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 External Senders (Phish)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject57')._huntingQuerycontentId57,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject57')._huntingQuerycontentId57,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject58').huntingQueryTemplateSpecName58]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 External Senders (Spam)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject58').huntingQueryVersion58]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_58", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 External Senders (Spam)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Inbound\"\n| where ThreatTypes has \"Spam\"\n//| where SenderFromAddress !contains \".yourdomain.com\"\n| summarize count() by SenderFromAddress\n| sort by count_ desc\n| top 10 by count_\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Identifies the top 10 external sender addresses delivering inbound emails classified as spam.\nIf you want to exclude your own organization's domains (including subdomains), add a filter after the spam filter, e.g.:\n | where SenderFromAddress !contains \".yourdomain.com\"\n(Replace \"yourdomain.com\" with your actual domain.)\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject58')._huntingQuerycontentId58),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 58", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject58')._huntingQuerycontentId58)]", - "contentId": "[variables('huntingQueryObject58')._huntingQuerycontentId58]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject58').huntingQueryVersion58]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject58')._huntingQuerycontentId58]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 External Senders (Spam)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject58')._huntingQuerycontentId58,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject58')._huntingQuerycontentId58,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject59').huntingQueryTemplateSpecName59]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 External Senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject59').huntingQueryVersion59]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_59", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 External Senders (Spam)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Inbound\"\n| where ThreatTypes has \"Spam\"\n//| where SenderFromAddress !contains \".yourdomain.com\"\n| summarize count() by SenderFromAddress\n| sort by count_ desc\n| top 10 by count_\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Identifies the top 10 external sender addresses delivering inbound emails classified as spam.\nTo exclude your own organization's domains (including subdomains), add a filter after the spam filter, e.g.:\n | where SenderFromAddress !contains \".yourdomain.com\"\n(Replace \"yourdomain.com\" with your actual domain.)\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject59')._huntingQuerycontentId59),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 59", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject59')._huntingQuerycontentId59)]", - "contentId": "[variables('huntingQueryObject59')._huntingQuerycontentId59]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject59').huntingQueryVersion59]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject59')._huntingQuerycontentId59]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 External Senders (Spam)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject59')._huntingQuerycontentId59,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject59')._huntingQuerycontentId59,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject60').huntingQueryTemplateSpecName60]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 Targeted Users (Malware+Phish+Spam)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject60').huntingQueryVersion60]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_60", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 Targeted Users (Malware+Phish+Spam)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Inbound\"\n// Exclude phishing-simulation and SecOps mailbox traffic so they do not skew the ranking\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ThreatTypes has_any (\"Malware\", \"Phish\", \"Spam\")\n// De-duplicate each delivery (NetworkMessageId + recipient) before counting so re-scanned messages are counted once\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize count() by RecipientEmailAddress\n| top 10 by count_\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Identifies the top 10 users receiving inbound emails classified as malware, phishing, or spam.\nBased on concepts from the Defender for Office 365 solution in Sentinel: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject60')._huntingQuerycontentId60),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 60", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject60')._huntingQuerycontentId60)]", - "contentId": "[variables('huntingQueryObject60')._huntingQuerycontentId60]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject60').huntingQueryVersion60]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject60')._huntingQuerycontentId60]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 Targeted Users (Malware+Phish+Spam)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject60')._huntingQuerycontentId60,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject60')._huntingQuerycontentId60,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject61').huntingQueryTemplateSpecName61]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 Users clicking on Malicious URLs (Malware+Phish+Spam)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject61').huntingQueryVersion61]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_61", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 Users clicking on Malicious URLs (Malware+Phish+Spam)", - "category": "Hunting Queries", - "query": "UrlClickEvents\n| where ThreatTypes has_any (\"Malware\", \"Phish\", \"Spam\")\n| summarize count() by AccountUpn\n| top 10 by count_\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Visualises the top 10 users with click attempts on URLs in emails detected as malware, phishing, or spam, helping analysts identify risky user behaviour and potential targets.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject61')._huntingQuerycontentId61),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 61", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject61')._huntingQuerycontentId61)]", - "contentId": "[variables('huntingQueryObject61')._huntingQuerycontentId61]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject61').huntingQueryVersion61]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject61')._huntingQuerycontentId61]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 Users clicking on Malicious URLs (Malware+Phish+Spam)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject61')._huntingQuerycontentId61,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject61')._huntingQuerycontentId61,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject62').huntingQueryTemplateSpecName62]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Total number of detections by MDO over time_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject62').huntingQueryVersion62]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_62", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "MDO Threat Protection Detections trend over time", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet totalinbound = EmailEvents\n| where TimeGenerated >= TimeStart\n| where EmailDirection == \"Inbound\"\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Total Inbound Emails\";\nlet totalintraorg = EmailEvents\n| where TimeGenerated >= TimeStart\n| where EmailDirection == \"Intra-org\"\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Total Intra-org Emails\";\nlet totaloutbound = EmailEvents\n| where TimeGenerated >= TimeStart\n| where EmailDirection == \"Outbound\"\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Total Outbound Emails\";\nlet totalwiththreat = EmailEvents\n| where TimeGenerated >= TimeStart\n| where isnotempty(ThreatTypes)\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Total Emails with Threat\";\nlet phishingcount = EmailEvents\n| where TimeGenerated >= TimeStart\n| where ThreatTypes has ('Phish')\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Emails Detected as Phish\";\nlet malwarecount = EmailEvents\n| where TimeGenerated >= TimeStart\n| where ThreatTypes has ('Malware')\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Emails Detected as Malware\";\nlet spamcount = EmailEvents\n| where TimeGenerated >= TimeStart\n| where ThreatTypes has ('Spam')\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Emails Detected as Spam\";\nlet zapcount = EmailPostDeliveryEvents\n| where TimeGenerated >= TimeStart\n| where ActionResult == \"Success\"\n| where ActionType == \"Phish ZAP\" or ActionType == \"Malware ZAP\"\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Total Emails Removed by ZAP\";\nlet usersubmissioncount = CloudAppEvents\n| where TimeGenerated >= TimeStart\n| extend Record= (parse_json(RawEventData)).RecordType\n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState\n| where Record == 29 | where ActionType == \"UserSubmission\"\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Total Emails Reported by Users\";\nlet adminsubmissioncount = CloudAppEvents\n| where TimeGenerated >= TimeStart\n| extend Record= (parse_json(RawEventData)).RecordType\n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState\n| where Record == 29\n| where ActionType == \"AdminSubmission\"\n| make-series Count= count() on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Total Emails Reported by Admins\";\nunion totalinbound, totalintraorg, totaloutbound, totalwiththreat, phishingcount, malwarecount, spamcount, zapcount, usersubmissioncount, adminsubmissioncount\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Graph of MDO detections trended over time" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject62')._huntingQuerycontentId62),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 62", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject62')._huntingQuerycontentId62)]", - "contentId": "[variables('huntingQueryObject62')._huntingQuerycontentId62]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject62').huntingQueryVersion62]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject62')._huntingQuerycontentId62]", - "contentKind": "HuntingQuery", - "displayName": "MDO Threat Protection Detections trend over time", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject62')._huntingQuerycontentId62,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject62')._huntingQuerycontentId62,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject63').huntingQueryTemplateSpecName63]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Total number of detections by MDO_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject63').huntingQueryVersion63]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_63", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Total number of detections by MDO", - "category": "Hunting Queries", - "query": "let totalinbound = EmailEvents\n| where EmailDirection == \"Inbound\"\n| summarize Count = count()\n| extend Details = \"Total Inbound Emails\";\nlet totalintraorg = EmailEvents\n| where EmailDirection == \"Intra-org\"\n| summarize Count = count()\n| extend Details = \"Total Intra-org Emails\";\nlet totaloutbound = EmailEvents\n| where EmailDirection == \"Outbound\"\n| summarize Count = count()\n| extend Details = \"Total Outbound Emails\";\nlet totalwiththreat = EmailEvents\n| where isnotempty(ThreatTypes)\n| summarize Count = count()\n| extend Details = \"Total Emails with Threats\";\nlet phishingcount = EmailEvents\n| where ThreatTypes has ('Phish')\n| summarize Count= count()\n| extend Details = \"Emails Detected as Phish\";\nlet malwarecount = EmailEvents\n| where ThreatTypes has ('Malware')\n| summarize Count= count()\n| extend Details = \"Emails Detected as Malware\";\nlet spamcount = EmailEvents\n| where ThreatTypes has ('Spam')\n| summarize Count= count()\n| extend Details = \"Emails Detected as Spam\";\nlet usersubmissioncount = CloudAppEvents\n| extend Record= (parse_json(RawEventData)).RecordType\n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState\n| where Record == 29 | where ActionType == \"UserSubmission\"\n| summarize Count= count()\n| extend Details = \"Total Emails Reported by Users\";\nlet adminsubmissioncount = CloudAppEvents\n| extend Record= (parse_json(RawEventData)).RecordType\n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState\n| where Record == 29 | where ActionType == \"AdminSubmission\"\n| summarize Count= count()\n| extend Details = \"Total Emails Reported by Admins\";\nlet zapcount = EmailPostDeliveryEvents\n| where ActionResult == \"Success\"\n| where ActionType == \"Phish ZAP\" or ActionType == \"Malware ZAP\"\n| summarize Count= count()\n| extend Details = \"Total Emails Removed by ZAP\";\nunion totalinbound, phishingcount, malwarecount, spamcount, totalintraorg, totaloutbound, totalwiththreat, usersubmissioncount, zapcount, adminsubmissioncount\n| project Count, Details\n| order by Count desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Provides a summary of total number of detections" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject63')._huntingQuerycontentId63),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 63", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject63')._huntingQuerycontentId63)]", - "contentId": "[variables('huntingQueryObject63')._huntingQuerycontentId63]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject63').huntingQueryVersion63]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject63')._huntingQuerycontentId63]", - "contentKind": "HuntingQuery", - "displayName": "Total number of detections by MDO", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject63')._huntingQuerycontentId63,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject63')._huntingQuerycontentId63,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject64').huntingQueryTemplateSpecName64]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Automated email notifications and suspicious sign-in activity_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject64').huntingQueryVersion64]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_64", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Automated email notifications and suspicious sign-in activity", - "category": "Hunting Queries", - "query": "let usersWithSuspiciousEmails = EmailEvents\n| where SenderFromAddress in (\"no-reply@notify.microsoft.com\", \"no-reply@dropbox.com\") or InternetMessageId startswith \"= 20\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for BEC - File sharing tactics - Dropbox" - }, - { - "name": "tactics", - "value": "LateralMovement" - }, - { - "name": "techniques", - "value": "T1021" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject65')._huntingQuerycontentId65),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 65", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject65')._huntingQuerycontentId65)]", - "contentId": "[variables('huntingQueryObject65')._huntingQuerycontentId65]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject65').huntingQueryVersion65]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject65')._huntingQuerycontentId65]", - "contentKind": "HuntingQuery", - "displayName": "BEC - File sharing tactics - Dropbox", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject65')._huntingQuerycontentId65,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject65')._huntingQuerycontentId65,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject66').huntingQueryTemplateSpecName66]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "BEC - File sharing tactics - OneDrive or SharePoint_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject66').huntingQueryVersion66]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_66", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "BEC - File sharing tactics - OneDrive or SharePoint", - "category": "Hunting Queries", - "query": "let securelinkCreated = CloudAppEvents\n| where ActionType == \"SecureLinkCreated\"\n| project FileCreatedTime = Timestamp, AccountObjectId, ObjectName;\nlet filesCreated = securelinkCreated\n| where isnotempty(ObjectName)\n| distinct tostring(ObjectName);\nCloudAppEvents\n| where ActionType == \"AddedToSecureLink\"\n| where Application in (\"Microsoft SharePoint Online\", \"Microsoft OneDrive for Business\")\n| extend FileShared = tostring(RawEventData.ObjectId)\n| where FileShared in (filesCreated)\n| extend UserSharedWith = tostring(RawEventData.TargetUserOrGroupName)\n| extend TypeofUserSharedWith = RawEventData.TargetUserOrGroupType\n| where TypeofUserSharedWith == \"Guest\"\n| where isnotempty(FileShared) and isnotempty(UserSharedWith)\n| join kind=inner securelinkCreated on $left.FileShared==$right.ObjectName\n// Secure file created recently (in the last 1day)\n| where (Timestamp - FileCreatedTime) between (1d .. 0h)\n| summarize NumofUsersSharedWith = dcount(UserSharedWith) by FileShared\n| where NumofUsersSharedWith >= 20\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for BEC - File sharing tactics - OneDrive or SharePoint" - }, - { - "name": "tactics", - "value": "LateralMovement" - }, - { - "name": "techniques", - "value": "T1021" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject66')._huntingQuerycontentId66),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 66", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject66')._huntingQuerycontentId66)]", - "contentId": "[variables('huntingQueryObject66')._huntingQuerycontentId66]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject66').huntingQueryVersion66]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject66')._huntingQuerycontentId66]", - "contentKind": "HuntingQuery", - "displayName": "BEC - File sharing tactics - OneDrive or SharePoint", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject66')._huntingQuerycontentId66,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject66')._huntingQuerycontentId66,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject67').huntingQueryTemplateSpecName67]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Email bombing_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject67').huntingQueryVersion67]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_67", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email bombing attacks", - "category": "Hunting Queries", - "query": "// Find mail that is older than 4 hrs and establish if it is a reply/forward or not. Join that to recent mail where the User hadn't communicated previously. These are new first contact messages.\nlet Contact_Established = EmailEvents \n| where Timestamp <= ago(4hr)\n| where DeliveryLocation != \"Quarantine\"\nand EmailDirection == \"Inbound\"\nand OrgLevelAction != \"Block\"\nand UserLevelAction != \"Block\"\n| extend NewMsg = case(Subject startswith \"RE:\", false, Subject startswith \"FW:\", false, true )\n| where NewMsg == false\n| project Pair = strcat(SenderMailFromAddress,\"|\",RecipientEmailAddress);\n// Find new mail in the last 4hrs.\nEmailEvents\n| where Timestamp > ago(4hr)\nand DeliveryAction == \"Delivered\"\n| extend Pair = strcat(SenderMailFromAddress,\"|\",RecipientEmailAddress)\n| where Pair !in (Contact_Established)\n| summarize 5_Min_Count = dcount(NetworkMessageId) by RecipientEmailAddress, bin(Timestamp, 5m)\n| where 5_Min_Count > 5 // check if recipient has received more than 5 first contact emails in 5 mins\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing recipients who are potentially victim of email bombing attacks" - }, - { - "name": "tactics", - "value": "Initialaccess" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject67')._huntingQuerycontentId67),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 67", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject67')._huntingQuerycontentId67)]", - "contentId": "[variables('huntingQueryObject67')._huntingQuerycontentId67]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject67').huntingQueryVersion67]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject67')._huntingQuerycontentId67]", - "contentKind": "HuntingQuery", - "displayName": "Email bombing attacks", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject67')._huntingQuerycontentId67,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject67')._huntingQuerycontentId67,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject68').huntingQueryTemplateSpecName68]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Emails containing links to IP addresses_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject68').huntingQueryVersion68]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_68", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Emails containing links to IP addresses", - "category": "Hunting Queries", - "query": "EmailUrlInfo\n| where Url matches regex @\"file://(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for Emails containing links to IP addresses" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject68')._huntingQuerycontentId68),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 68", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject68')._huntingQuerycontentId68)]", - "contentId": "[variables('huntingQueryObject68')._huntingQuerycontentId68]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject68').huntingQueryVersion68]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject68')._huntingQuerycontentId68]", - "contentKind": "HuntingQuery", - "displayName": "Emails containing links to IP addresses", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject68')._huntingQuerycontentId68,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject68')._huntingQuerycontentId68,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject69').huntingQueryTemplateSpecName69]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Files share contents and suspicious sign-in activity_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject69').huntingQueryVersion69]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_69", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Files share contents and suspicious sign-in activity", - "category": "Hunting Queries", - "query": "let usersWithSuspiciousEmails = EmailEvents\n| where Subject has_all (\"shared\", \"with you\")\n| where Subject has_any (\"payment\", \"invoice\", \"urgent\", \"mandatory\", \"Payoff\", \"Wire\", \"Confirmation\", \"password\")\n| where isnotempty(RecipientObjectId)\n| summarize RecipientCount = dcount(RecipientObjectId), RecipientList = make_set(RecipientObjectId) by Subject\n| where RecipientCount >= 10\n| mv-expand RecipientList to typeof(string)\n| distinct RecipientList;\nAADSignInEventsBeta\n| where AccountObjectId in (usersWithSuspiciousEmails)\n| where RiskLevelDuringSignIn == 100\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for Files share contents and suspicious sign-in activity" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject69')._huntingQuerycontentId69),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 69", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject69')._huntingQuerycontentId69)]", - "contentId": "[variables('huntingQueryObject69')._huntingQuerycontentId69]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject69').huntingQueryVersion69]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject69')._huntingQuerycontentId69]", - "contentKind": "HuntingQuery", - "displayName": "Files share contents and suspicious sign-in activity", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject69')._huntingQuerycontentId69,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject69')._huntingQuerycontentId69,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject70').huntingQueryTemplateSpecName70]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Good emails from senders with bad patterns_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject70').huntingQueryVersion70]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_70", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Good emails from senders with bad patterns", - "category": "Hunting Queries", - "query": "//Good emails from senders with bad patterns\nlet PctPhishThreshold = 50;\nlet LookbackWindow = 1d;\n EmailEvents\n| where Timestamp > ago (LookbackWindow) and EmailDirection == \"Inbound\"\n| extend PhishMethods=tostring(parse_json(DetectionMethods).Phish)\n| where PhishMethods contains (\"File\") or PhishMethods contains (\"URL\") or PhishMethods contains (\"Filter\")\n| summarize PhishCount=count() by SenderMailFromAddress,AuthenticationDetails,PhishMethods\n| join kind=inner (EmailEvents | where Timestamp > ago (LookbackWindow) and EmailDirection == \"Inbound\"\n| summarize TotalCount=count() by SenderMailFromAddress,AuthenticationDetails) on SenderMailFromAddress,AuthenticationDetails\n| project-away SenderMailFromAddress1,AuthenticationDetails1\n| extend PctPhish = (PhishCount*100 / TotalCount)\n| where PctPhish < 100 and PctPhish>= PctPhishThreshold\n| join kind=inner (EmailEvents | where Timestamp > ago (LookbackWindow) and EmailDirection == \"Inbound\" and DeliveryLocation<> \"Quarantine\") on SenderMailFromAddress,AuthenticationDetails\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for good emails from senders with bad patterns" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject70')._huntingQuerycontentId70),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 70", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject70')._huntingQuerycontentId70)]", - "contentId": "[variables('huntingQueryObject70')._huntingQuerycontentId70]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject70').huntingQueryVersion70]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject70')._huntingQuerycontentId70]", - "contentKind": "HuntingQuery", - "displayName": "Good emails from senders with bad patterns", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject70')._huntingQuerycontentId70,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject70')._huntingQuerycontentId70,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject71').huntingQueryTemplateSpecName71]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Hunt for email bombing attacks_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject71').huntingQueryVersion71]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_71", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Hunt for email bombing attacks", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Inbound\"\n| make-series Emailcount = count()\n on Timestamp step 1h by RecipientObjectId\n| extend (Anomalies, AnomalyScore, ExpectedEmails) = series_decompose_anomalies(Emailcount)\n| mv-expand Emailcount, Anomalies, AnomalyScore, ExpectedEmails to typeof(double), Timestamp\n| where Anomalies != 0\n| where AnomalyScore >= 10\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps to hunt for possible email bombing attacks in Microsoft Defender for Office 365." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject71')._huntingQuerycontentId71),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 71", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject71')._huntingQuerycontentId71)]", - "contentId": "[variables('huntingQueryObject71')._huntingQuerycontentId71]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject71').huntingQueryVersion71]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject71')._huntingQuerycontentId71]", - "contentKind": "HuntingQuery", - "displayName": "Hunt for email bombing attacks", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject71')._huntingQuerycontentId71,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject71')._huntingQuerycontentId71,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject72').huntingQueryTemplateSpecName72]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Hunt for email conversation take over attempts_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject72').huntingQueryVersion72]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_72", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Hunt for email conversation take over attempts", - "category": "Hunting Queries", - "query": "let emailDelivered = EmailEvents\n| where Timestamp < ago(4hrs)\nand DeliveryAction == \"Delivered\"\n| extend Pair = strcat(SenderMailFromAddress,\"|\",RecipientEmailAddress)\n| distinct Pair;\nlet EmailDomains = EmailEvents\n| where Timestamp < ago(4hrs)\nand DeliveryAction == \"Delivered\"\n| distinct SenderFromDomain;\nEmailEvents\n| where Timestamp >= ago(4hrs)\n| where DeliveryLocation != \"Quarantine\"\nand EmailDirection == \"Inbound\"\nand OrgLevelAction != \"Block\"\nand UserLevelAction != \"Block\"\n| extend NewMsg = case(Subject contains \"RE:\", false, Subject contains \"FW:\", false, true )\n| project Pair = strcat(SenderMailFromAddress,\"|\",RecipientEmailAddress), NetworkMessageId, SenderFromDomain, SenderMailFromAddress, RecipientEmailAddress, DeliveryAction, ThreatTypes, DetectionMethods, NewMsg, Subject\n| join kind=leftouter ( emailDelivered ) on Pair\n| order by SenderMailFromAddress\n| where NewMsg == false\nand Pair1 == \"\"\n| join kind=leftouter (EmailDomains) on SenderFromDomain\n| where SenderFromDomain1 == \"\"\n| distinct Pair, NetworkMessageId, SenderFromDomain, SenderMailFromAddress, RecipientEmailAddress, DeliveryAction, ThreatTypes, DetectionMethods, NewMsg, Subject\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for email conversation take over attempts" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject72')._huntingQuerycontentId72),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 72", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject72')._huntingQuerycontentId72)]", - "contentId": "[variables('huntingQueryObject72')._huntingQuerycontentId72]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject72').huntingQueryVersion72]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject72')._huntingQuerycontentId72]", - "contentKind": "HuntingQuery", - "displayName": "Hunt for email conversation take over attempts", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject72')._huntingQuerycontentId72,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject72')._huntingQuerycontentId72,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject73').huntingQueryTemplateSpecName73]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Hunt for malicious attachments using external IOC source_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject73').huntingQueryVersion73]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_73", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Hunt for malicious attachments using external IOC source", - "category": "Hunting Queries", - "query": "let abuse_sha256 = (externaldata(sha256_hash: string)\n[@\"https://bazaar.abuse.ch/export/txt/sha256/recent/\"]\nwith (format=\"txt\"))\n| where sha256_hash !startswith \"#\"\n| project sha256_hash;\nabuse_sha256\n| join (EmailAttachmentInfo\n| where Timestamp > ago(1d)\n) on $left.sha256_hash == $right.SHA256\n| project Timestamp,SenderFromAddress,RecipientEmailAddress,FileName,FileType,SHA256,ThreatTypes,DetectionMethods,NetworkMessageId,ReportId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for emails with malicious attachments based on SH256 hash from external IOC source" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject73')._huntingQuerycontentId73),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 73", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject73')._huntingQuerycontentId73)]", - "contentId": "[variables('huntingQueryObject73')._huntingQuerycontentId73]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject73').huntingQueryVersion73]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject73')._huntingQuerycontentId73]", - "contentKind": "HuntingQuery", - "displayName": "Hunt for malicious attachments using external IOC source", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject73')._huntingQuerycontentId73,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject73')._huntingQuerycontentId73,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject74').huntingQueryTemplateSpecName74]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Hunt for malicious URLs using external IOC source_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject74').huntingQueryVersion74]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_74", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Hunt for malicious URLs using external IOC source", - "category": "Hunting Queries", - "query": "let url = (externaldata(url: string )\n[@\"https://urlhaus.abuse.ch/downloads/text_online/\"]\nwith (format=\"txt\"))\n| project url;\nurl\n| join (EmailUrlInfo\n| where Timestamp > ago(2h) \n) on $left.url == $right.Url\n|join EmailEvents on NetworkMessageId\n|project Timestamp, NetworkMessageId, Url, UrlLocation, UrlDomain, SenderFromAddress, SenderDisplayName, SenderIPv4, Subject,RecipientEmailAddress, RecipientObjectId, LatestDeliveryAction, ThreatNames, ThreatTypes, DetectionMethods, DeliveryAction,ReportId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for emails with malicious URLs based on external IOC source" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject74')._huntingQuerycontentId74),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 74", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject74')._huntingQuerycontentId74)]", - "contentId": "[variables('huntingQueryObject74')._huntingQuerycontentId74]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject74').huntingQueryVersion74]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject74')._huntingQuerycontentId74]", - "contentKind": "HuntingQuery", - "displayName": "Hunt for malicious URLs using external IOC source", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject74')._huntingQuerycontentId74,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject74')._huntingQuerycontentId74,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject75').huntingQueryTemplateSpecName75]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Inbox rule change which forward-redirect email_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject75').huntingQueryVersion75]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_75", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Inbox rule changes which forward-redirect email", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType contains \"Set-InboxRule\"\n|extend Parameters = tostring((parse_json(RawEventData)).Parameters)\n|where Parameters contains \"ForwardTo\" or Parameters contains \"RedirectTo\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for Inbox rule changes which forward-redirect email" - }, - { - "name": "tactics", - "value": "Persistence" - }, - { - "name": "techniques", - "value": "T1098" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject75')._huntingQuerycontentId75),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 75", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject75')._huntingQuerycontentId75)]", - "contentId": "[variables('huntingQueryObject75')._huntingQuerycontentId75]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject75').huntingQueryVersion75]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject75')._huntingQuerycontentId75]", - "contentKind": "HuntingQuery", - "displayName": "Inbox rule changes which forward-redirect email", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject75')._huntingQuerycontentId75,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject75')._huntingQuerycontentId75,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject76').huntingQueryTemplateSpecName76]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MDO_CountOfRecipientsEmailaddressbySubject_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject76').huntingQueryVersion76]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_76", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "MDO_CountOfRecipientsEmailaddressbySubject", - "category": "Hunting Queries", - "query": "//Count of recipient's email addresses by subject\nEmailEvents\n//Change the date for as far back as you want to go\n| where Timestamp > ago(10d)\n| summarize CountRecipientEmailAddress=count() by RecipientEmailAddress, Subject\n//Change the Count of how many times the email with the same subject has come in\n| where CountRecipientEmailAddress >= 15\n| project RecipientEmailAddress, CountRecipientEmailAddress, Subject\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Count of recipient's email addresses by subject" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject76')._huntingQuerycontentId76),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 76", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject76')._huntingQuerycontentId76)]", - "contentId": "[variables('huntingQueryObject76')._huntingQuerycontentId76]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject76').huntingQueryVersion76]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject76')._huntingQuerycontentId76]", - "contentKind": "HuntingQuery", - "displayName": "MDO_CountOfRecipientsEmailaddressbySubject", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject76')._huntingQuerycontentId76,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject76')._huntingQuerycontentId76,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject77').huntingQueryTemplateSpecName77]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MDO_Countofrecipientsemailaddressesbysubject_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject77').huntingQueryVersion77]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_77", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "MDO_Countofrecipientsemailaddressesbysubject", - "category": "Hunting Queries", - "query": "//Count of recipient's email addresses by subject\nEmailEvents\n//Change the date for as far back as you want to go\n| where Timestamp > ago(10d)\n| summarize CountRecipientEmailAddress=count() by RecipientEmailAddress, Subject\n//Change the Count of how many times the email with the same subject has come in\n| where CountRecipientEmailAddress >= 15\n| project RecipientEmailAddress, CountRecipientEmailAddress, Subject\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Count of recipient's email addresses by subject" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject77')._huntingQuerycontentId77),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 77", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject77')._huntingQuerycontentId77)]", - "contentId": "[variables('huntingQueryObject77')._huntingQuerycontentId77]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject77').huntingQueryVersion77]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject77')._huntingQuerycontentId77]", - "contentKind": "HuntingQuery", - "displayName": "MDO_Countofrecipientsemailaddressesbysubject", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject77')._huntingQuerycontentId77,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject77')._huntingQuerycontentId77,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject78').huntingQueryTemplateSpecName78]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MDO_CountOfSendersEmailaddressbySubject_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject78').huntingQueryVersion78]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_78", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "MDO_CountOfSendersEmailaddressbySubject", - "category": "Hunting Queries", - "query": "//Count of sender's email addresses by subject\nEmailEvents\n//Change the date for as far back as you want to go\n| where Timestamp > ago(10d)\n| summarize CountSenderFromAddress=count() by SenderFromAddress, Subject\n//Change the Count of how many times the email with the same subject has come in\n| where CountSenderFromAddress >= 10\n| project SenderFromAddress, CountSenderFromAddress, Subject\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Count of sender's email addresses by subject" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject78')._huntingQuerycontentId78),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 78", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject78')._huntingQuerycontentId78)]", - "contentId": "[variables('huntingQueryObject78')._huntingQuerycontentId78]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject78').huntingQueryVersion78]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject78')._huntingQuerycontentId78]", - "contentKind": "HuntingQuery", - "displayName": "MDO_CountOfSendersEmailaddressbySubject", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject78')._huntingQuerycontentId78,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject78')._huntingQuerycontentId78,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject79').huntingQueryTemplateSpecName79]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MDO_SummaryOfSenders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject79').huntingQueryVersion79]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_79", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "MDO_SummaryOfSenders", - "category": "Hunting Queries", - "query": "//Distinct Count\nEmailEvents\n| summarize QuaratineEmails = count_distinct(DeliveryLocation == \"Quarantine\"),\n Emails = count_distinct(DeliveryLocation == \"Inbox/folder\"),\n JunkEmails = count_distinct(DeliveryLocation == \"Junk folder\")by SenderFromAddress\n\n//Count of all Senders and where they were delivered\nEmailEvents\n| summarize QuaratineEmails = count(DeliveryLocation == \"Quarantine\"),\n Emails = count(DeliveryLocation == \"Inbox/folder\"),\n JunkEmails = count(DeliveryLocation == \"Junk folder\")by SenderFromAddress\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Count of all Senders and where they were delivered" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject79')._huntingQuerycontentId79),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 79", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject79')._huntingQuerycontentId79)]", - "contentId": "[variables('huntingQueryObject79')._huntingQuerycontentId79]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject79').huntingQueryVersion79]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject79')._huntingQuerycontentId79]", - "contentKind": "HuntingQuery", - "displayName": "MDO_SummaryOfSenders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject79')._huntingQuerycontentId79,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject79')._huntingQuerycontentId79,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject80').huntingQueryTemplateSpecName80]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MDO_URLClickedinEmail_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject80').huntingQueryVersion80]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_80", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "MDO_URLClickedinEmail", - "category": "Hunting Queries", - "query": "UrlClickEvents\n| where ActionType == \"ClickAllowed\"\n//| where ActionType <> \"ClickAllowed\"\n| project AccountUpn, ActionType, Url\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "URLs clicked in Email" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject80')._huntingQuerycontentId80),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 80", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject80')._huntingQuerycontentId80)]", - "contentId": "[variables('huntingQueryObject80')._huntingQuerycontentId80]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject80').huntingQueryVersion80]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject80')._huntingQuerycontentId80]", - "contentKind": "HuntingQuery", - "displayName": "MDO_URLClickedinEmail", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject80')._huntingQuerycontentId80,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject80')._huntingQuerycontentId80,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject81').huntingQueryTemplateSpecName81]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top outbound recipient domains sending inbound emails with threats_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject81').huntingQueryVersion81]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_81", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top outbound recipient domains sending inbound emails with threats", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Outbound\"\n| project RecipientDomain = tostring(split(RecipientEmailAddress, \"@\")[1])\n| summarize count() by RecipientDomain\n| project OutboundCount=count_, RecipientDomain, SenderFromDomain=RecipientDomain\n| join (EmailEvents | where EmailDirection == \"Inbound\" and isempty(ThreatTypes)==false) on SenderFromDomain\n| summarize max(OutboundCount),count() by SenderFromDomain\n| project SenderFromDomain, OutboundEmails=max_OutboundCount, IncomingEmailsWithThreats=count_\n| sort by OutboundEmails\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for top outbound recipient domains which are sending inbound emails with threats" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject81')._huntingQuerycontentId81),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 81", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject81')._huntingQuerycontentId81)]", - "contentId": "[variables('huntingQueryObject81')._huntingQuerycontentId81]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject81').huntingQueryVersion81]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject81')._huntingQuerycontentId81]", - "contentKind": "HuntingQuery", - "displayName": "Top outbound recipient domains sending inbound emails with threats", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject81')._huntingQuerycontentId81,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject81')._huntingQuerycontentId81,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject82').huntingQueryTemplateSpecName82]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Detections by detection methods_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject82').huntingQueryVersion82]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_82", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Detections by detection methods", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(7d)\n| where isnotempty(DetectionMethods)\n| extend MDO_detection = parse_json(DetectionMethods)\n| summarize TotalEmailCount = count(),\n Phish_detection = countif(isnotempty(MDO_detection.Phish)),\n Malware_detection = countif(isnotempty(MDO_detection.Malware)),\n Spam_detection = countif(isnotempty( MDO_detection.Spam)),\n URL_malicious_reputation = countif(MDO_detection.Phish == @'[\"URL malicious reputation\"]' or MDO_detection.Malware == @'[\"URL malicious reputation\"]'),\n URL_detonation_reputation = countif(MDO_detection.Phish == @'[\"URL detonation reputation\"]' or MDO_detection.Malware == @'[\"URL detonation reputation\"]'),\n URL_detonation = countif(MDO_detection.Phish == @'[\"URL detonation\"]' or MDO_detection.Malware == @'[\"URL detonation\"]'),\n Advanced_filter = countif(MDO_detection.Phish == @'[\"Advanced filter\"]'),\n General_filter = countif(MDO_detection.Phish == @'[\"General filter\"]'),\n Spoof_intra_org = countif(MDO_detection.Phish == @'[\"Spoof intra-org\"]'),\n Spoof_external_domain = countif(MDO_detection.Phish == @'[\"Spoof external domain\"]'),\n Spoof_DMARC = countif(MDO_detection.Phish == @'[\"Spoof DMARC\"]'),\n Impersonation_brand = countif(MDO_detection.Phish == @'[\"Impersonation brand\"]'),\n Impersonation_user = countif(MDO_detection.Phish == @'[\"Impersonation user\"]'),\n Impersonation_domain = countif(MDO_detection.Phish == @'[\"Impersonation domain\"]'),\n Mixed_analysis_detection= countif(MDO_detection.Phish == @'[\"Mixed analysis detection\"]'),\n File_reputation = countif(MDO_detection.Phish == @'[\"File reputation\"]' or MDO_detection.Malware == @'[\"File reputation\"]'),\n File_detonation = countif(MDO_detection.Phish == @'[\"File detonation\"]' or MDO_detection.Malware == @'[\"File detonation\"]'),\n File_detonation_reputation = countif(MDO_detection.Phish == @'[\"File detonation reputation\"]' or MDO_detection.Malware == @'[\"File detonation reputation\"]'),\n Antimalware_engine = countif(MDO_detection.Malware == @'[\"Antimalware engine\"]'),\n Fingerprint_matching = countif(MDO_detection.Phish == @'[\"Fingerprint matching\"]'), \n Mailbox_intelligence_impersonation = countif(MDO_detection.Phish == @'[\"Mailbox intelligence impersonation\"]'),\n Campaign = countif(MDO_detection.Phish == @'[\"Campaign\"]' or MDO_detection.Malware == @'[\"Campaign\"]') by bin(Timestamp, 1d)\n| project Timestamp, TotalEmailCount, Phish_detection, Malware_detection, Spam_detection,URL_malicious_reputation,URL_detonation_reputation ,URL_detonation,Advanced_filter, General_filter,Spoof_intra_org,Spoof_external_domain,Spoof_DMARC,Impersonation_brand,Impersonation_user,Impersonation_domain,\nMixed_analysis_detection,File_reputation,File_detonation,File_detonation_reputation,Antimalware_engine,Fingerprint_matching,Mailbox_intelligence_impersonation,Campaign\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing malicious email detections by detection methods" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject82')._huntingQuerycontentId82),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 82", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject82')._huntingQuerycontentId82)]", - "contentId": "[variables('huntingQueryObject82')._huntingQuerycontentId82]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject82').huntingQueryVersion82]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject82')._huntingQuerycontentId82]", - "contentKind": "HuntingQuery", - "displayName": "Detections by detection methods", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject82')._huntingQuerycontentId82,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject82')._huntingQuerycontentId82,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject83').huntingQueryTemplateSpecName83]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Mail reply to new domain_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject83').huntingQueryVersion83]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_83", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Mail reply to new domain", - "category": "Hunting Queries", - "query": "let emailDelivered = EmailEvents\n| where Timestamp < ago(4hrs)\nand DeliveryAction == \"Delivered\"\n| extend Pair = strcat(SenderMailFromAddress,\"|\",RecipientEmailAddress)\n| distinct Pair;\nlet EmailDomains = EmailEvents\n| where Timestamp < ago(4hrs)\nand DeliveryAction == \"Delivered\"\n| distinct SenderFromDomain;\nEmailEvents \n| where Timestamp >= ago(4hrs)\n| where DeliveryLocation != \"Quarantine\"\n and EmailDirection == \"Inbound\" \n and OrgLevelAction != \"Block\"\n and UserLevelAction != \"Block\"\n| extend NewMsg = case(Subject contains \"RE:\", false, Subject contains \"FW:\", false, true )\n| project Pair = strcat(SenderMailFromAddress,\"|\",RecipientEmailAddress), NetworkMessageId, SenderFromDomain, SenderMailFromAddress, RecipientEmailAddress, DeliveryAction, ThreatTypes, DetectionMethods, NewMsg, Subject \n| join kind=leftouter ( emailDelivered ) on Pair\n| order by SenderMailFromAddress\n| where NewMsg == false\nand Pair1 == \"\"\n| join kind=leftouter (EmailDomains) on SenderFromDomain\n| where SenderFromDomain1 == \"\"\n| distinct Pair, NetworkMessageId, SenderFromDomain, SenderMailFromAddress, RecipientEmailAddress, DeliveryAction, ThreatTypes, DetectionMethods, NewMsg, Subject\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing mail that is likely a reply but there is no history of the people chatting and the domain is new" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject83')._huntingQuerycontentId83),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 83", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject83')._huntingQuerycontentId83)]", - "contentId": "[variables('huntingQueryObject83')._huntingQuerycontentId83]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject83').huntingQueryVersion83]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject83')._huntingQuerycontentId83]", - "contentKind": "HuntingQuery", - "displayName": "Mail reply to new domain", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject83')._huntingQuerycontentId83,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject83')._huntingQuerycontentId83,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject84').huntingQueryTemplateSpecName84]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Mailflow by directionality_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject84').huntingQueryVersion84]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_84", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Mailflow by directionality", - "category": "Hunting Queries", - "query": "EmailEvents \n| where Timestamp > ago(30d)\n| extend domain = substring(RecipientEmailAddress, indexof(RecipientEmailAddress, \"@\")+1) \n| summarize total=count() by EmailDirection, domain, bin(Timestamp, 1d) \n| order by Timestamp asc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing inbound / outbound / intra-org emails by domain per day" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject84')._huntingQuerycontentId84),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 84", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject84')._huntingQuerycontentId84)]", - "contentId": "[variables('huntingQueryObject84')._huntingQuerycontentId84]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject84').huntingQueryVersion84]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject84')._huntingQuerycontentId84]", - "contentKind": "HuntingQuery", - "displayName": "Mailflow by directionality", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject84')._huntingQuerycontentId84,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject84')._huntingQuerycontentId84,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject85').huntingQueryTemplateSpecName85]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malicious emails detected per day_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject85').huntingQueryVersion85]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_85", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malicious emails detected per day", - "category": "Hunting Queries", - "query": "EmailEvents\n| where DetectionMethods != \"\" \n| extend detection= parse_json(DetectionMethods) \n| extend Spam = tostring(detection.Spam) \n| extend Phish = tostring(detection.Phish) \n| extend Malware = tostring(detection.Malware) \n| where Spam != '' or Phish != '' or Malware != '' \n| extend detection = case( \n Malware != \"\", 'Malware', \n Phish != \"\", 'Phish', \n 'Spam') \n| summarize total=count() by detection, bin(Timestamp, 1d) \n| order by Timestamp asc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing Malware, Phishing, Spam emails caught per day" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject85')._huntingQuerycontentId85),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 85", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject85')._huntingQuerycontentId85)]", - "contentId": "[variables('huntingQueryObject85')._huntingQuerycontentId85]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject85').huntingQueryVersion85]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject85')._huntingQuerycontentId85]", - "contentKind": "HuntingQuery", - "displayName": "Malicious emails detected per day", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject85')._huntingQuerycontentId85,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject85')._huntingQuerycontentId85,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject86').huntingQueryTemplateSpecName86]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Sender recipient contact establishment_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject86').huntingQueryVersion86]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_86", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Sender recipient contact establishment", - "category": "Hunting Queries", - "query": "let emailDelivered = EmailEvents\n| where Timestamp < ago(30d)\nand DeliveryAction == \"Delivered\"\nand SenderDisplayName contains \"Microsoft\"\n| summarize count() by SenderFromAddress\n| where count_ > 3 // ensuring that some level of communications has occured.\n| project SenderFromAddress;\nEmailEvents \n| where Timestamp > ago(24hrs)\n| where DeliveryAction == \"Delivered\"\n and EmailDirection == \"Inbound\" \n and OrgLevelAction != \"Block\"\n and UserLevelAction != \"Block\"\n and SenderDisplayName contains \"Microsoft\" //Change the name here\n| extend NewMsg = case(Subject contains \"RE:\", false, Subject contains \"FW:\", false, true )\n| project SenderDisplayName, SenderFromAddress, NetworkMessageId, SenderMailFromAddress, RecipientEmailAddress, DeliveryAction, DeliveryLocation, ThreatTypes, DetectionMethods, NewMsg, Subject \n| join kind=leftanti ( emailDelivered ) on SenderFromAddress\n| order by SenderMailFromAddress\n| summarize count() by SenderDisplayName, SenderFromAddress, NetworkMessageId, SenderMailFromAddress, RecipientEmailAddress, DeliveryAction, DeliveryLocation, ThreatTypes, DetectionMethods, NewMsg, Subject\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps in checking the sender-recipient contact establishment status" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject86')._huntingQuerycontentId86),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 86", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject86')._huntingQuerycontentId86)]", - "contentId": "[variables('huntingQueryObject86')._huntingQuerycontentId86]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject86').huntingQueryVersion86]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject86')._huntingQuerycontentId86]", - "contentKind": "HuntingQuery", - "displayName": "Sender recipient contact establishment", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject86')._huntingQuerycontentId86,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject86')._huntingQuerycontentId86,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject87').huntingQueryTemplateSpecName87]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detections by Delivery Location - High_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject87').huntingQueryVersion87]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_87", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spam Detections (High) by delivery location", - "category": "Hunting Queries", - "query": "EmailEvents\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ConfidenceLevel has_any ('Spam\":\"High')\n| summarize count() by LatestDeliveryLocation\n| sort by count_ desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails with Spam detections (High confidence) summarizing the data by Delivery Location." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject87')._huntingQuerycontentId87),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 87", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject87')._huntingQuerycontentId87)]", - "contentId": "[variables('huntingQueryObject87')._huntingQuerycontentId87]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject87').huntingQueryVersion87]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject87')._huntingQuerycontentId87]", - "contentKind": "HuntingQuery", - "displayName": "Spam Detections (High) by delivery location", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject87')._huntingQuerycontentId87,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject87')._huntingQuerycontentId87,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject88').huntingQueryTemplateSpecName88]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detections by Delivery Location - Medium_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject88').huntingQueryVersion88]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_88", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spam Detections (Normal) by delivery location", - "category": "Hunting Queries", - "query": "EmailEvents\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ConfidenceLevel has_any ('Spam\":\"Normal')\n| summarize count() by LatestDeliveryLocation\n| sort by count_ desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails with Spam detections (Normal confidence) summarizing the data by Delivery Location." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject88')._huntingQuerycontentId88),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 88", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject88')._huntingQuerycontentId88)]", - "contentId": "[variables('huntingQueryObject88')._huntingQuerycontentId88]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject88').huntingQueryVersion88]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject88')._huntingQuerycontentId88]", - "contentKind": "HuntingQuery", - "displayName": "Spam Detections (Normal) by delivery location", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject88')._huntingQuerycontentId88,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject88')._huntingQuerycontentId88,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject89').huntingQueryTemplateSpecName89]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 100 malicious email senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject89').huntingQueryVersion89]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_89", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 100 malicious email senders", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where ThreatTypes has \"Phish\" or ThreatTypes has \"Malware\" \n| summarize total=count() by SenderMailFromAddress \n| top 100 by total\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing top 100 malicious senders" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject89')._huntingQuerycontentId89),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 89", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject89')._huntingQuerycontentId89)]", - "contentId": "[variables('huntingQueryObject89')._huntingQuerycontentId89]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject89').huntingQueryVersion89]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject89')._huntingQuerycontentId89]", - "contentKind": "HuntingQuery", - "displayName": "Top 100 malicious email senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject89')._huntingQuerycontentId89,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject89')._huntingQuerycontentId89,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject90').huntingQueryTemplateSpecName90]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 100 senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject90').huntingQueryVersion90]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_90", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 100 senders", - "category": "Hunting Queries", - "query": "EmailEvents \n| where Timestamp > ago(30d)\n| summarize mailCountBySender = count() by SenderMailFromAddress \n| top 100 by mailCountBySender\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing top 100 senders in your organization in last 30 days" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject90')._huntingQuerycontentId90),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 90", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject90')._huntingQuerycontentId90)]", - "contentId": "[variables('huntingQueryObject90')._huntingQuerycontentId90]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject90').huntingQueryVersion90]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject90')._huntingQuerycontentId90]", - "contentKind": "HuntingQuery", - "displayName": "Top 100 senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject90')._huntingQuerycontentId90,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject90')._huntingQuerycontentId90,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject91').huntingQueryTemplateSpecName91]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Zero day threats_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject91').huntingQueryVersion91]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_91", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Zero day threats", - "category": "Hunting Queries", - "query": "EmailEvents \n| where Timestamp > ago(30d) \n| where DetectionMethods has \"URL Detonation\" or DetectionMethods has \"File Detonation\" \n| count\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing zero day threats via URL and file detonations" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject91')._huntingQuerycontentId91),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 91", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject91')._huntingQuerycontentId91)]", - "contentId": "[variables('huntingQueryObject91')._huntingQuerycontentId91]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject91').huntingQueryVersion91]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject91')._huntingQuerycontentId91]", - "contentKind": "HuntingQuery", - "displayName": "Zero day threats", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject91')._huntingQuerycontentId91,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject91')._huntingQuerycontentId91,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject92').huntingQueryTemplateSpecName92]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Email containing malware accessed on a unmanaged device_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject92').huntingQueryVersion92]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_92", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email containing malware accessed on a unmanaged device", - "category": "Hunting Queries", - "query": "EmailPostDeliveryEvents\n| where ActionType == \"Malware ZAP\"\n| project NetworkMessageId,InternetMessageId,ActionType,ThreatTypes,DetectionMethods,ZAPReportId=ReportId,ZAPTimestamp=Timestamp\n| join (CloudAppEvents | where ActionType == \"MailItemsAccessed\"\n| extend RawEvent=parse_json(RawEventData)\n| mv-expand RawEvent.Folders\n| mv-expand RawEvent_Folders.FolderItems\n| project SessionId=tostring(RawEvent.SessionId),InternetMessageId=tostring(parse_json(RawEvent_Folders_FolderItems).InternetMessageId),ActionTimestamp=Timestamp,ActionReportId=ReportId\n) on InternetMessageId\n| where isnotempty(SessionId)\n| join (AADSignInEventsBeta | where isempty(DeviceName) | distinct AccountUpn,SessionId) on SessionId\n| project AccountUpn,NetworkMessageId,InternetMessageId,ActionType,ThreatTypes,DetectionMethods,SessionId,ReportId=ActionReportId,Timestamp=ActionTimestamp\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this query, we are looking for emails containing malware accessed on a unmanaged device" - }, - { - "name": "tactics", - "value": "Execution" - }, - { - "name": "techniques", - "value": "T1204" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject92')._huntingQuerycontentId92),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 92", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject92')._huntingQuerycontentId92)]", - "contentId": "[variables('huntingQueryObject92')._huntingQuerycontentId92]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject92').huntingQueryVersion92]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject92')._huntingQuerycontentId92]", - "contentKind": "HuntingQuery", - "displayName": "Email containing malware accessed on a unmanaged device", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject92')._huntingQuerycontentId92,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject92')._huntingQuerycontentId92,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject93').huntingQueryTemplateSpecName93]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Email containing malware sent by an internal sender_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject93').huntingQueryVersion93]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_93", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email containing malware sent by an internal sender", - "category": "Hunting Queries", - "query": "EmailEvents\n| where EmailDirection == \"Intra-org\" or EmailDirection == \"Outbound\"\n| where ThreatTypes == \"Malware\" and SenderFromAddress !startswith \"postmaster@\" and SenderFromAddress !startswith \"microsoftexchange\"\n| join (EmailAttachmentInfo | where isnotempty(ThreatTypes)) on NetworkMessageId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this query, we are looking for emails containing malware attachment sent by an internal sender" - }, - { - "name": "tactics", - "value": "LateralMovement" - }, - { - "name": "techniques", - "value": "T1534" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject93')._huntingQuerycontentId93),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 93", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject93')._huntingQuerycontentId93)]", - "contentId": "[variables('huntingQueryObject93')._huntingQuerycontentId93]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject93').huntingQueryVersion93]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject93')._huntingQuerycontentId93]", - "contentKind": "HuntingQuery", - "displayName": "Email containing malware sent by an internal sender", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject93')._huntingQuerycontentId93,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject93')._huntingQuerycontentId93,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject94').huntingQueryTemplateSpecName94]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Email malware detection report_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject94').huntingQueryVersion94]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_94", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email malware detection report", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where isnotempty(ThreatNames)\n| join kind=inner EmailAttachmentInfo on NetworkMessageId \n| extend ThreatFamilyAttachment = strcat(format_datetime(Timestamp,'yyyy-M-dd H:mm:ss'), \" /\", ThreatNames, \" /\", FileName, \" /\", NetworkMessageId)\n| summarize ThreatFamily_wih_Attachment= make_list(ThreatFamilyAttachment) by RecipientEmailAddress\n| extend Case = array_length(ThreatFamily_wih_Attachment)\n| project RecipientEmailAddress, Case, ThreatFamily_wih_Attachment \n| sort by Case desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing email malware detection cases" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject94')._huntingQuerycontentId94),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 94", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject94')._huntingQuerycontentId94)]", - "contentId": "[variables('huntingQueryObject94')._huntingQuerycontentId94]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject94').huntingQueryVersion94]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject94')._huntingQuerycontentId94]", - "contentKind": "HuntingQuery", - "displayName": "Email malware detection report", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject94')._huntingQuerycontentId94,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject94')._huntingQuerycontentId94,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject95').huntingQueryTemplateSpecName95]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "File Malware Detection Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject95').huntingQueryVersion95]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_95", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "File Malware Detection Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nCloudAppEvents\n| where TimeGenerated >= TimeStart\n| where ActionType == 'FileMalwareDetected'\n| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total files located on SharePoint, OneDrive and Teams with Malware detections over time summarizing the data daily." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject95')._huntingQuerycontentId95),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 95", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject95')._huntingQuerycontentId95)]", - "contentId": "[variables('huntingQueryObject95')._huntingQuerycontentId95]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject95').huntingQueryVersion95]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject95')._huntingQuerycontentId95]", - "contentKind": "HuntingQuery", - "displayName": "File Malware Detection Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject95')._huntingQuerycontentId95,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject95')._huntingQuerycontentId95,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject96').huntingQueryTemplateSpecName96]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "File Malware Top Families by AV_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject96').huntingQueryVersion96]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_96", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "File Malware by Top Malware Families (Anti Virus)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == 'FileMalwareDetected' and isempty(UserAgent)\n| project ObjectName, UserAgent, RawinfoVirusInfo = RawEventData.VirusInfo\n| summarize count() by tostring(RawinfoVirusInfo) | sort by count_\n| render piechart\n// | render columnchart // Uncomment to change the graph type\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total Malware detections of files located on SharePoint, OneDrive and Teams over time summarizing the data by the various Malware families detected focusing on built-in SharePoint AV detections" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject96')._huntingQuerycontentId96),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 96", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject96')._huntingQuerycontentId96)]", - "contentId": "[variables('huntingQueryObject96')._huntingQuerycontentId96]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject96').huntingQueryVersion96]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject96')._huntingQuerycontentId96]", - "contentKind": "HuntingQuery", - "displayName": "File Malware by Top Malware Families (Anti Virus)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject96')._huntingQuerycontentId96,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject96')._huntingQuerycontentId96,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject97').huntingQueryTemplateSpecName97]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "File Malware Top Families by Safe Attachments_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject97').huntingQueryVersion97]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_97", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "File Malware by Top Malware Families (Safe Attachments)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == 'FileMalwareDetected' and UserAgent =~ 'MS Scanner ATP'\n| project ObjectName, UserAgent, RawinfoVirusInfo = RawEventData.VirusInfo\n| summarize count() by tostring(RawinfoVirusInfo) | sort by count_\n| render piechart\n// | render columnchart // Uncomment to change the graph type\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total Malware detections of files located on SharePoint, OneDrive and Teams over time summarizing the data by the various Malware families detected focusing on Defender for Office 365 detections (detonations)" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject97')._huntingQuerycontentId97),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 97", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject97')._huntingQuerycontentId97)]", - "contentId": "[variables('huntingQueryObject97')._huntingQuerycontentId97]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject97').huntingQueryVersion97]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject97')._huntingQuerycontentId97]", - "contentKind": "HuntingQuery", - "displayName": "File Malware by Top Malware Families (Safe Attachments)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject97')._huntingQuerycontentId97,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject97')._huntingQuerycontentId97,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject98').huntingQueryTemplateSpecName98]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malware Detection Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject98').huntingQueryVersion98]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_98", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malware Detections Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where ThreatTypes has \"Malware\"\n| make-series MalwareDetections = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Malware detections over time summarizing the data daily." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject98')._huntingQuerycontentId98),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 98", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject98')._huntingQuerycontentId98)]", - "contentId": "[variables('huntingQueryObject98')._huntingQuerycontentId98]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject98').huntingQueryVersion98]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject98')._huntingQuerycontentId98]", - "contentKind": "HuntingQuery", - "displayName": "Malware Detections Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject98')._huntingQuerycontentId98,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject98')._huntingQuerycontentId98,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject99').huntingQueryTemplateSpecName99]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malware Detections by Delivery Location_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject99').huntingQueryVersion99]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_99", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malware Detections by delivery location", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has \"Malware\" and EmailDirection == \"Inbound\"\n| make-series TotalMalwareDetections = count(), Quarantine = countif(DeliveryLocation == \"Quarantine\"), Failed = countif(DeliveryLocation == \"Failed\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Malware detections over time summarizing the data daily by Delivery Location." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject99')._huntingQuerycontentId99),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 99", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject99')._huntingQuerycontentId99)]", - "contentId": "[variables('huntingQueryObject99')._huntingQuerycontentId99]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject99').huntingQueryVersion99]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject99')._huntingQuerycontentId99]", - "contentKind": "HuntingQuery", - "displayName": "Malware Detections by delivery location", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject99')._huntingQuerycontentId99,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject99')._huntingQuerycontentId99,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject100').huntingQueryTemplateSpecName100]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malware Detections by Detection Technology Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject100').huntingQueryVersion100]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_100", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malware Detections by Detection technology Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has \"Malware\"\n| mv-expand MalwareMethod = parse_json(DetectionMethods).Malware to typeof(string)\n| where isnotempty(MalwareMethod)\n| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d by MalwareMethod\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Malware detections over time summarizing the data daily by various Malware detection technologies/controls." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject100')._huntingQuerycontentId100),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 100", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject100')._huntingQuerycontentId100)]", - "contentId": "[variables('huntingQueryObject100')._huntingQuerycontentId100]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject100').huntingQueryVersion100]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject100')._huntingQuerycontentId100]", - "contentKind": "HuntingQuery", - "displayName": "Malware Detections by Detection technology Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject100')._huntingQuerycontentId100,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject100')._huntingQuerycontentId100,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject101').huntingQueryTemplateSpecName101]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malware Detections by Detection Technology_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject101').huntingQueryVersion101]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_101", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malware Detections by Detection technology", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has \"Malware\"\n| mv-expand MalwareMethod = parse_json(DetectionMethods).Malware to typeof(string)\n| where isnotempty(MalwareMethod)\n| summarize Count = count() by MalwareMethod\n| sort by Count desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Malware detections summarizing the data by various Malware detection technologies/controls." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject101')._huntingQuerycontentId101),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 101", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject101')._huntingQuerycontentId101)]", - "contentId": "[variables('huntingQueryObject101')._huntingQuerycontentId101]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject101').huntingQueryVersion101]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject101')._huntingQuerycontentId101]", - "contentKind": "HuntingQuery", - "displayName": "Malware Detections by Detection technology", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject101')._huntingQuerycontentId101,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject101')._huntingQuerycontentId101,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject102').huntingQueryTemplateSpecName102]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malware detections by Workload Locations_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject102').huntingQueryVersion102]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_102", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malware detections by Workload Locations", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == 'FileMalwareDetected'\n| project location=(split(RawEventData.SiteUrl, '/')[4])\n| summarize count() by tostring(location)\n| sort by count_ desc\n| render columnchart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the amount of total Malware detections of files located on SharePoint, OneDrive and Teams, summarizing by the locations they are stored" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject102')._huntingQuerycontentId102),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 102", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject102')._huntingQuerycontentId102)]", - "contentId": "[variables('huntingQueryObject102')._huntingQuerycontentId102]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject102').huntingQueryVersion102]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject102')._huntingQuerycontentId102]", - "contentKind": "HuntingQuery", - "displayName": "Malware detections by Workload Locations", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject102')._huntingQuerycontentId102,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject102')._huntingQuerycontentId102,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject103').huntingQueryTemplateSpecName103]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malware detections by Workload Type_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject103').huntingQueryVersion103]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_103", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malware detections by Workload Type", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == 'FileMalwareDetected'\n| extend Appwithteams = iff(Application =~ 'Microsoft SharePoint Online',strcat(Application,' / Teams Files'),Application)\n| extend Appwithteams = trim_start('Microsoft',Appwithteams) | summarize count() by Appwithteams\n| sort by count_ desc\n| render piechart\n// | render columnchart // Uncomment to change the graph type\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the amount of total Malware detections of files located on SharePoint, OneDrive and Teams, summarizing by the workload in which they are stored" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject103')._huntingQuerycontentId103),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 103", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject103')._huntingQuerycontentId103)]", - "contentId": "[variables('huntingQueryObject103')._huntingQuerycontentId103]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject103').huntingQueryVersion103]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject103')._huntingQuerycontentId103]", - "contentKind": "HuntingQuery", - "displayName": "Malware detections by Workload Type", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject103')._huntingQuerycontentId103,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject103')._huntingQuerycontentId103,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject104').huntingQueryTemplateSpecName104]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Domains sending Malware_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject104').huntingQueryVersion104]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_104", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email Top Domains sending Malware", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where EmailDirection == \"Inbound\"\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize TotalEmailCount = count(), MalwareEmailCount = countif(ThreatTypes has \"Malware\") by SenderFromDomain\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(MalwareEmailCount / todouble(TotalEmailCount) * 100, 2))\n| where MalwareEmailCount != 0\n| top 15 by MalwareEmailCount\n| project ['Sender Domain'] = SenderFromDomain, ['Malware Emails'] = MalwareEmailCount, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total inbound emails with Malware detections summarizing the data by the top email sender P2 domain (SenderFromDomain)" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject104')._huntingQuerycontentId104),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 104", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject104')._huntingQuerycontentId104)]", - "contentId": "[variables('huntingQueryObject104')._huntingQuerycontentId104]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject104').huntingQueryVersion104]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject104')._huntingQuerycontentId104]", - "contentKind": "HuntingQuery", - "displayName": "Email Top Domains sending Malware", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject104')._huntingQuerycontentId104,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject104')._huntingQuerycontentId104,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject105').huntingQueryTemplateSpecName105]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Email Malware Families_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject105').huntingQueryVersion105]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_105", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top Malware Families", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where isnotempty(ThreatNames) and ThreatTypes has \"Malware\"\n| mv-expand ThreatName = split(ThreatNames, \",\") to typeof(string)\n| where isnotempty(ThreatName)\n| distinct Key, ThreatName\n| summarize Count = count() by ThreatName\n| top 15 by Count\n| project ['Threat Name'] = ThreatName, Count\n| render columnchart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Malware detections summarizing the data by ThreatNames of the malware detected." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject105')._huntingQuerycontentId105),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 105", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject105')._huntingQuerycontentId105)]", - "contentId": "[variables('huntingQueryObject105')._huntingQuerycontentId105]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject105').huntingQueryVersion105]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject105')._huntingQuerycontentId105]", - "contentKind": "HuntingQuery", - "displayName": "Top Malware Families", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject105')._huntingQuerycontentId105,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject105')._huntingQuerycontentId105,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject106').huntingQueryTemplateSpecName106]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Users receiving Malware_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject106').huntingQueryVersion106]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_106", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top Users receiving Malware", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where EmailDirection == \"Inbound\"\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize TotalEmailCount = count(), MalwareEmailCount = countif(ThreatTypes has \"Malware\") by RecipientEmailAddress\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(MalwareEmailCount / todouble(TotalEmailCount) * 100, 2))\n| where MalwareEmailCount != 0\n| top 15 by MalwareEmailCount\n| project ['Recipient'] = RecipientEmailAddress, ['Malware Emails'] = MalwareEmailCount, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total inbound emails with Malware detections summarizing the data by the top recipient email address (RecipientEmailAddress)" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject106')._huntingQuerycontentId106),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 106", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject106')._huntingQuerycontentId106)]", - "contentId": "[variables('huntingQueryObject106')._huntingQuerycontentId106]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject106').huntingQueryVersion106]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject106')._huntingQuerycontentId106]", - "contentKind": "HuntingQuery", - "displayName": "Top Users receiving Malware", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject106')._huntingQuerycontentId106,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject106')._huntingQuerycontentId106,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject107').huntingQueryTemplateSpecName107]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Zero-day Malware Detections Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject107').huntingQueryVersion107]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_107", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Zero-day Malware Detections Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has \"Malware\"\n| mv-expand MalwareMethod = parse_json(DetectionMethods).Malware to typeof(string)\n| where MalwareMethod in ('File detonation', 'URL detonation')\n| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d by MalwareMethod\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Malware detections over time summarizing the data daily by Malware detection technologies/controls used for detecting unknown-unique malware." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject107')._huntingQuerycontentId107),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 107", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject107')._huntingQuerycontentId107)]", - "contentId": "[variables('huntingQueryObject107')._huntingQuerycontentId107]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject107').huntingQueryVersion107]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject107')._huntingQuerycontentId107]", - "contentKind": "HuntingQuery", - "displayName": "Zero-day Malware Detections Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject107')._huntingQuerycontentId107,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject107')._huntingQuerycontentId107,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject108').huntingQueryTemplateSpecName108]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Communication from suspicious external users_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject108').huntingQueryVersion108]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_108", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams communication from suspicious external users", - "category": "Hunting Queries", - "query": "//This query uses MessageEvents to detect communication from suspicious external Help Desk\\Support representatives\nMessageEvents \n| where Timestamp > ago(30d) \n| where (SenderDisplayName contains \"help\" and SenderDisplayName contains \"desk\") \n or (SenderDisplayName contains \"it\" and SenderDisplayName contains \"support\") \n or (SenderDisplayName contains \"working\" and SenderDisplayName contains \"home\") \n| where IsExternalThread == true \n| project Timestamp, SenderDisplayName, SenderEmailAddress, RecipientDetails, IsOwnedThread, ThreadType\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for communication from suspicious external users." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject108')._huntingQuerycontentId108),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 108", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject108')._huntingQuerycontentId108)]", - "contentId": "[variables('huntingQueryObject108')._huntingQuerycontentId108]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject108').huntingQueryVersion108]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject108')._huntingQuerycontentId108]", - "contentKind": "HuntingQuery", - "displayName": "Teams communication from suspicious external users", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject108')._huntingQuerycontentId108,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject108')._huntingQuerycontentId108,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject109').huntingQueryTemplateSpecName109]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Communication to suspicious external users_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject109').huntingQueryVersion109]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_109", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams communication to suspicious external users", - "category": "Hunting Queries", - "query": "//This query uses MessageEvents to detect bi-directional outbound communication to suspicious external Help Desk\\Support representatives\nMessageEvents \n| where Timestamp > ago(30d) \n| where (RecipientDetails contains \"help\" and RecipientDetails contains \"desk\") \n or (RecipientDetails contains \"it\" and RecipientDetails contains \"support\") \n or (RecipientDetails contains \"working\" and RecipientDetails contains \"home\") \n| where IsExternalThread == true \n| project Timestamp, SenderDisplayName, SenderEmailAddress, RecipientDetails, IsOwnedThread, ThreadType\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for communication with suspicious external users." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject109')._huntingQuerycontentId109),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 109", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject109')._huntingQuerycontentId109)]", - "contentId": "[variables('huntingQueryObject109')._huntingQuerycontentId109]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject109').huntingQueryVersion109]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject109')._huntingQuerycontentId109]", - "contentKind": "HuntingQuery", - "displayName": "Teams communication to suspicious external users", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject109')._huntingQuerycontentId109,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject109')._huntingQuerycontentId109,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject110').huntingQueryTemplateSpecName110]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Expanding recipients into separate rows_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject110').huntingQueryVersion110]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_110", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Expanding recipients into separate rows", - "category": "Hunting Queries", - "query": "//Analyzing recipient details with a separate row for each recipient\nMessageEvents\n| mv-expand Recipients = RecipientDetails\n| extend RecipientSmtpAddress = Recipients.RecipientSmtpAddress, RecipientDisplayName = Recipients.RecipientDisplayName, RecipientObjectId = Recipients.RecipientObjectId, RecipientType = Recipients.RecipientType\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for recipients of Teams messages." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject110')._huntingQuerycontentId110),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 110", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject110')._huntingQuerycontentId110)]", - "contentId": "[variables('huntingQueryObject110')._huntingQuerycontentId110]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject110').huntingQueryVersion110]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject110')._huntingQuerycontentId110]", - "contentKind": "HuntingQuery", - "displayName": "Expanding recipients into separate rows", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject110')._huntingQuerycontentId110,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject110')._huntingQuerycontentId110,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject111').huntingQueryTemplateSpecName111]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "External malicious Teams messages sent from internal senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject111').huntingQueryVersion111]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_111", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "External malicious Teams messages sent from internal senders", - "category": "Hunting Queries", - "query": "//This query helps hunt for Teams messages from internal senders with Threats in them (Spam, Phish, Malware)\nMessageEvents \n| where Timestamp > ago(30d)\n| where IsExternalThread==1 and IsOwnedThread==1\n| where ThreatTypes has_any (\"Phish\",\"Malware\",\"Spam\") \n| project Timestamp,TeamsMessageId, SenderDisplayName, SenderEmailAddress, RecipientDetails, IsOwnedThread, ThreadType, IsExternalThread, ReportId, ThreatTypes, DetectionMethods\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for external malicious Teams messages sent from internal senders" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject111')._huntingQuerycontentId111),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 111", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject111')._huntingQuerycontentId111)]", - "contentId": "[variables('huntingQueryObject111')._huntingQuerycontentId111]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject111').huntingQueryVersion111]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject111')._huntingQuerycontentId111]", - "contentKind": "HuntingQuery", - "displayName": "External malicious Teams messages sent from internal senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject111')._huntingQuerycontentId111,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject111')._huntingQuerycontentId111,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject112').huntingQueryTemplateSpecName112]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Hunt for malicious messages using External Threat Intelligence_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject112').huntingQueryVersion112]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_112", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Hunt for malicious messages using External Threat Intelligence", - "category": "Hunting Queries", - "query": "// This query helps hunt for Teams messages with malicious URLs based on external IOC source\nlet url = (externaldata(url: string )\n[@\"https://urlhaus.abuse.ch/downloads/text_online/\"]\nwith (format=\"txt\"))\n| project url;\nurl\n| join (MessageUrlInfo\n| where Timestamp > ago(14d) \n) on $left.url == $right.Url\n|join MessageEvents on TeamsMessageId\n//|join UrlClickEvents on Url\n|project Timestamp, TeamsMessageId, Url, UrlDomain, SenderEmailAddress, SenderDisplayName, RecipientDetails,ThreatTypes, DetectionMethods, DeliveryAction,IsExternalThread, IsOwnedThread//, AccountUpn, ActionType, AppName, AppVersion, Workload\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for Teams messages with malicious URLs based on external Threat Intelligence source" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject112')._huntingQuerycontentId112),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 112", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject112')._huntingQuerycontentId112)]", - "contentId": "[variables('huntingQueryObject112')._huntingQuerycontentId112]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject112').huntingQueryVersion112]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject112')._huntingQuerycontentId112]", - "contentKind": "HuntingQuery", - "displayName": "Hunt for malicious messages using External Threat Intelligence", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject112')._huntingQuerycontentId112,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject112')._huntingQuerycontentId112,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject113').huntingQueryTemplateSpecName113]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Inbound Teams messages by sender domains_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject113').huntingQueryVersion113]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_113", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Inbound Teams messages by sender domains", - "category": "Hunting Queries", - "query": "//This query helps reviewing volume of inbound external Teams message by sender domains\n MessageEvents \n | where IsExternalThread==1 and IsOwnedThread==1\n | mv-expand Recipients = RecipientDetails\n | extend RecipientEmailAddress = Recipients.RecipientSmtpAddress, RecipientDisplayName = Recipients.RecipientDisplayName, RecipientObjectId = Recipients.RecipientObjectId, RecipientType = Recipients.RecipientType\n | extend Domain = substring(RecipientEmailAddress, indexof(RecipientEmailAddress, \"@\")+1)\n | summarize total=count() by Domain, bin(Timestamp, 1d) \n | order by Timestamp asc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing volume of inbound external Teams message by sender domains" - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject113')._huntingQuerycontentId113),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 113", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject113')._huntingQuerycontentId113)]", - "contentId": "[variables('huntingQueryObject113')._huntingQuerycontentId113]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject113').huntingQueryVersion113]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject113')._huntingQuerycontentId113]", - "contentKind": "HuntingQuery", - "displayName": "Inbound Teams messages by sender domains", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject113')._huntingQuerycontentId113,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject113')._huntingQuerycontentId113,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject114').huntingQueryTemplateSpecName114]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malicious Teams messages by URL detection methods_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject114').huntingQueryVersion114]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_114", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malicious Teams messages by URL detection methods", - "category": "Hunting Queries", - "query": "//This query helps reviewing malicious Teams message detections by URL detection methods\nMessageEvents\n| where isnotempty(DetectionMethods)\n| extend MDO_detection = parse_json(DetectionMethods)\n| summarize TotalMessageCount = count(),\n Phish_detection = countif(isnotempty(MDO_detection.Phish)),\n Malware_detection = countif(isnotempty(MDO_detection.Malware)),\n URL_malicious_reputation = countif(MDO_detection.Phish == @'[\"URL malicious reputation\"]' or MDO_detection.Malware == @'[\"URL malicious reputation\"]'),\n URL_detonation_reputation = countif(MDO_detection.Phish == @'[\"URL detonation reputation\"]' or MDO_detection.Malware == @'[\"URL detonation reputation\"]')\n by bin(Timestamp, 1d)\n| project Timestamp, Phish_detection, Malware_detection,URL_malicious_reputation,URL_detonation_reputation\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing malicious Teams message detections by URL detection methods" - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject114')._huntingQuerycontentId114),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 114", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject114')._huntingQuerycontentId114)]", - "contentId": "[variables('huntingQueryObject114')._huntingQuerycontentId114]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject114').huntingQueryVersion114]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject114')._huntingQuerycontentId114]", - "contentKind": "HuntingQuery", - "displayName": "Malicious Teams messages by URL detection methods", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject114')._huntingQuerycontentId114,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject114')._huntingQuerycontentId114,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject115').huntingQueryTemplateSpecName115]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malicious Teams messages received from external senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject115').huntingQueryVersion115]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_115", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malicious Teams messages received from external senders", - "category": "Hunting Queries", - "query": "//This query helps hunt for Teams messages from external senders with Threats (Spam, Phish, Malware)\nMessageEvents \n| where Timestamp > ago(30d)\n| where IsExternalThread==1 and IsOwnedThread==0\n| where ThreatTypes has_any (\"Phish\",\"Malware\",\"Spam\") \n| project Timestamp,TeamsMessageId, SenderDisplayName, SenderEmailAddress, RecipientDetails, IsOwnedThread, ThreadType, IsExternalThread, ReportId, ThreatTypes, DetectionMethods\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for malicious Teams messages received from external senders." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject115')._huntingQuerycontentId115),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 115", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject115')._huntingQuerycontentId115)]", - "contentId": "[variables('huntingQueryObject115')._huntingQuerycontentId115]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject115').huntingQueryVersion115]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject115')._huntingQuerycontentId115]", - "contentKind": "HuntingQuery", - "displayName": "Malicious Teams messages received from external senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject115')._huntingQuerycontentId115,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject115')._huntingQuerycontentId115,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject116').huntingQueryTemplateSpecName116]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Microsoft Teams chat initiated by a suspicious external user_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject116').huntingQueryVersion116]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_116", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Microsoft Teams chat initiated by a suspicious external user", - "category": "Hunting Queries", - "query": "//Use AlertInfo and AlertEvidence to collect general information and clickable links to more IOCs about suspicious external Teams messages\nAlertInfo \n| where Timestamp >= ago(30d) \n| where Title == \"Microsoft Teams chat initiated by a suspicious external user\" \n| join AlertEvidence on AlertId\n| top 100 by Timestamp\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Use AlertInfo and AlertEvidence to collect general information and clickable links to more IOCs about suspicious external Teams messages." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject116')._huntingQuerycontentId116),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 116", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject116')._huntingQuerycontentId116)]", - "contentId": "[variables('huntingQueryObject116')._huntingQuerycontentId116]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject116').huntingQueryVersion116]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject116')._huntingQuerycontentId116]", - "contentKind": "HuntingQuery", - "displayName": "Microsoft Teams chat initiated by a suspicious external user", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject116')._huntingQuerycontentId116,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject116')._huntingQuerycontentId116,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject117').huntingQueryTemplateSpecName117]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Number of unique accounts performing Teams message Admin submissions_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject117').huntingQueryVersion117]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_117", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Number of unique accounts performing Teams message Admin submissions", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),SubmittedBy=tostring((parse_json(RawEventData)).UserId)\n| where SubmissionContentType == \"ChatMessage\" and SubmissionType in (\"1\",\"2\",\"3\")\n| summarize dcount(SubmittedBy) \n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises number of unqiue accounts performing Teams message admin submissions as false negatives or false positives" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject117')._huntingQuerycontentId117),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 117", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject117')._huntingQuerycontentId117)]", - "contentId": "[variables('huntingQueryObject117')._huntingQuerycontentId117]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject117').huntingQueryVersion117]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject117')._huntingQuerycontentId117]", - "contentKind": "HuntingQuery", - "displayName": "Number of unique accounts performing Teams message Admin submissions", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject117')._huntingQuerycontentId117,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject117')._huntingQuerycontentId117,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject118').huntingQueryTemplateSpecName118]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Number of unique accounts performing Teams message User submissions_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject118').huntingQueryVersion118]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_118", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Number of unique accounts performing Teams message User submissions", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),SubmittedBy=tostring((parse_json(RawEventData)).UserId)\n| where SubmissionContentType == \"ChatMessage\"\n| summarize dcount(SubmittedBy) \n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises number of unqiue accounts performing Teams message user submissions as false negatives or false positives" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject118')._huntingQuerycontentId118),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 118", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject118')._huntingQuerycontentId118)]", - "contentId": "[variables('huntingQueryObject118')._huntingQuerycontentId118]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject118').huntingQueryVersion118]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject118')._huntingQuerycontentId118]", - "contentKind": "HuntingQuery", - "displayName": "Number of unique accounts performing Teams message User submissions", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject118')._huntingQuerycontentId118,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject118')._huntingQuerycontentId118,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject119').huntingQueryTemplateSpecName119]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Possible partner impersonation in external Team messages_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject119').huntingQueryVersion119]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_119", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Possible partner impersonation in external Team messages", - "category": "Hunting Queries", - "query": "//This query can be used as a Custom Detection Rule (CDR) to trigger when a partner email domain or email address is used in a Sender display name part of an inbound external Teams message\n MessageEvents \n | where IsOwnedThread==0 and IsExternalThread==1 and SenderDisplayName contains \"@contoso.com\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query can be used as a Custom Detection Rule (CDR) to trigger when a partner email domain or email address is used in a Sender display name part of an inbound external Teams message" - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject119')._huntingQuerycontentId119),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 119", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject119')._huntingQuerycontentId119)]", - "contentId": "[variables('huntingQueryObject119')._huntingQuerycontentId119]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject119').huntingQueryVersion119]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject119')._huntingQuerycontentId119]", - "contentKind": "HuntingQuery", - "displayName": "Possible partner impersonation in external Team messages", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject119')._huntingQuerycontentId119,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject119')._huntingQuerycontentId119,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject120').huntingQueryTemplateSpecName120]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Possible Teams phishing activity_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject120').huntingQueryVersion120]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_120", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Possible Teams phishing activity", - "category": "Hunting Queries", - "query": "let suspiciousUpns = DeviceProcessEvents\n| where DeviceId == \"alertedMachine\"\n| where isnotempty(InitiatingProcessAccountUpn)\n| project InitiatingProcessAccountUpn;\nCloudAppEvents\n| where Application == \"Microsoft Teams\"\n| where ActionType == \"ChatCreated\"\n| where isempty(AccountObjectId)\n| where RawEventData.ParticipantInfo.HasForeignTenantUsers == true\n| where RawEventData.CommunicationType == \"OneonOne\"\n| where RawEventData.ParticipantInfo.HasGuestUsers == false\n| where RawEventData.ParticipantInfo.HasOtherGuestUsers == false\n| where RawEventData.Members[0].DisplayName in (\"Microsoft Security\", \"Help Desk\", \"Help Desk Team\", \"Help Desk IT\", \"Microsoft Security\", \"office\")\n| where AccountId has \"@\"\n| extend TargetUPN = tolower(tostring(RawEventData.Members[1].UPN))\n| where TargetUPN in (suspiciousUpns)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query looks for possible Teams phishing activity." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject120')._huntingQuerycontentId120),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 120", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject120')._huntingQuerycontentId120)]", - "contentId": "[variables('huntingQueryObject120')._huntingQuerycontentId120]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject120').huntingQueryVersion120]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject120')._huntingQuerycontentId120]", - "contentKind": "HuntingQuery", - "displayName": "Possible Teams phishing activity", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject120')._huntingQuerycontentId120,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject120')._huntingQuerycontentId120,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject121').huntingQueryTemplateSpecName121]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Potentially malicious URL click in Teams_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject121').huntingQueryVersion121]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_121", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Potentially malicious URL click in Teams", - "category": "Hunting Queries", - "query": "//This query provides insights on a potentially malicious URL click in Teams\nMessagePostDeliveryEvents\n| join MessageUrlInfo on TeamsMessageId\n| join UrlClickEvents on Url\n| where Workload == \"Teams\" and ActionType1==\"ClickAllowed\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query provides insights on a potentially malicious URL click in Teams" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject121')._huntingQuerycontentId121),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 121", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject121')._huntingQuerycontentId121)]", - "contentId": "[variables('huntingQueryObject121')._huntingQuerycontentId121]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject121').huntingQueryVersion121]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject121')._huntingQuerycontentId121]", - "contentKind": "HuntingQuery", - "displayName": "Potentially malicious URL click in Teams", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject121')._huntingQuerycontentId121,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject121')._huntingQuerycontentId121,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject122').huntingQueryTemplateSpecName122]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Rare Domains in External Teams Messages_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject122').huntingQueryVersion122]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_122", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Rare Domains in External Teams Messages", - "category": "Hunting Queries", - "query": "let lookback = 1d;\n// External Teams messages \nlet externalMsgs =\n MessageEvents\n | where Timestamp > ago(lookback) and IsExternalThread == true\n | project MsgTime = Timestamp, TeamsMessageId, SenderEmailAddress, ME_ReportId = ReportId;\n// URLs found in Teams messages \nlet urlsInMsgs =\n MessageUrlInfo\n | where Timestamp > ago(lookback)\n | project MUI_Time = Timestamp, TeamsMessageId, Url, UrlDomain, MUI_ReportId = ReportId;\n// Clicks coming from Teams \nlet clicks =\n UrlClickEvents\n | where Timestamp > ago(lookback) and Workload == \"Teams\"\n | project ClickTime = Timestamp, Url, Clicker = AccountUpn, ClickAction = ActionType, UCE_ReportId = ReportId;\n// Define \"rare\" domains in the period \nlet rareDomains =\n urlsInMsgs\n | summarize msgCount = dcount(TeamsMessageId) by UrlDomain\n | where msgCount < 3;\nrareDomains\n | join kind=inner (urlsInMsgs) on UrlDomain\n | join kind=leftouter (externalMsgs) on TeamsMessageId\n | join kind=leftouter (clicks) on Url\n | project\n Timestamp = coalesce(ClickTime, MUI_Time, MsgTime),\n UrlDomain,\n Url,\n SenderEmailAddress,\n Clicker,\n ClickTime,\n ClickAction,\n TeamsMessageId,\n ReportId = coalesce(UCE_ReportId, MUI_ReportId, ME_ReportId)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Detects rare domains (seen in fewer than 3 Teams messages) appearing in external Microsoft Teams threads within the last 24 hours." - }, - { - "name": "tactics", - "value": "InitialAccess,Execution" - }, - { - "name": "techniques", - "value": "T1566,T1204" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject122')._huntingQuerycontentId122),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 122", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject122')._huntingQuerycontentId122)]", - "contentId": "[variables('huntingQueryObject122')._huntingQuerycontentId122]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject122').huntingQueryVersion122]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject122')._huntingQuerycontentId122]", - "contentKind": "HuntingQuery", - "displayName": "Rare Domains in External Teams Messages", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject122')._huntingQuerycontentId122,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject122')._huntingQuerycontentId122,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject123').huntingQueryTemplateSpecName123]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Suspicious Teams Display Name_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject123').huntingQueryVersion123]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_123", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Suspicious Teams Display Name", - "category": "Hunting Queries", - "query": "let SuspiciousDisplayNames = pack_array(\"Microsoft Security\", \"Help Desk\", \"Help Desk Team\", \"Help Desk IT\", \"Microsoft Security\", \"IT Support\", \"Helpdesk\");\nMessageEvents\n| where IsExternalThread == 1 and IsOwnedThread == 0\n| where SenderDisplayName has_any (SuspiciousDisplayNames)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query looks for Teams messages from an external user with a suspicious display name." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject123')._huntingQuerycontentId123),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 123", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject123')._huntingQuerycontentId123)]", - "contentId": "[variables('huntingQueryObject123')._huntingQuerycontentId123]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject123').huntingQueryVersion123]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject123')._huntingQuerycontentId123]", - "contentKind": "HuntingQuery", - "displayName": "Suspicious Teams Display Name", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject123')._huntingQuerycontentId123,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject123')._huntingQuerycontentId123,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject124').huntingQueryTemplateSpecName124]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams Admin submission of Malware and Phish daily trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject124').huntingQueryVersion124]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_124", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams Admin submission of Malware and Phish daily trend", - "category": "Hunting Queries", - "query": "//Admin submission of false negative Teams message detections with Malware and Phish threat daily trend\nlet TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery=CloudAppEvents\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| where ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType == \"ChatMessage\";\nlet Admin_Malware_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"2\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Malware_FN\";\nlet Admin_Phish_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"1\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Phish_FN\";\nunion Admin_Malware_FN,Admin_Phish_FN\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the daily amount of admin false negative Teams message submissions by submission type of Phish or Malware" - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject124')._huntingQuerycontentId124),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 124", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject124')._huntingQuerycontentId124)]", - "contentId": "[variables('huntingQueryObject124')._huntingQuerycontentId124]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject124').huntingQueryVersion124]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject124')._huntingQuerycontentId124]", - "contentKind": "HuntingQuery", - "displayName": "Teams Admin submission of Malware and Phish daily trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject124')._huntingQuerycontentId124,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject124')._huntingQuerycontentId124,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject125').huntingQueryTemplateSpecName125]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams Admin submission of No Threats daily trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject125').huntingQueryVersion125]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_125", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams Admin submission of No Threats daily trend", - "category": "Hunting Queries", - "query": "//Admin submission of false positive Teams message detections daily trend\nlet TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery=CloudAppEvents\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| where ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType == \"ChatMessage\";\nlet Admin_Teams_FP=baseQuery\n| make-series Count= countif(SubmissionType == \"3\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Teams_FP\";\nunion Admin_Teams_FP\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the daily amount of admin false positive Teams message submissions" - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject125')._huntingQuerycontentId125),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 125", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject125')._huntingQuerycontentId125)]", - "contentId": "[variables('huntingQueryObject125')._huntingQuerycontentId125]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject125').huntingQueryVersion125]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject125')._huntingQuerycontentId125]", - "contentKind": "HuntingQuery", - "displayName": "Teams Admin submission of No Threats daily trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject125')._huntingQuerycontentId125,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject125')._huntingQuerycontentId125,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject126').huntingQueryTemplateSpecName126]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams Admin-User Submissions Grading Verdicts_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject126').huntingQueryVersion126]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_126", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams Admin-User Submissions Grading Verdicts", - "category": "Hunting Queries", - "query": "//This query visualizes Teams messages submitted by users or admins then graded in the submission process, summarizing the data by the various submission garde results\nCloudAppEvents\n| where ActionType == \"AdminSubmissionTriage\" or ActionType == \"UserSubmissionTriage\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),SubmissionState=tostring((parse_json(RawEventData)).SubmissionState),TriageVerdict=tostring((parse_json(RawEventData)).GradingResult.TriageVerdict)\n| where SubmissionContentType == \"ChatMessage\" and SubmissionState == \"Graded\"\n| summarize count() by TriageVerdict\n| project TriageVerdict, TeamsMessages = count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualizes Teams messages submitted by users or admins then graded in the submission process." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject126')._huntingQuerycontentId126),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 126", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject126')._huntingQuerycontentId126)]", - "contentId": "[variables('huntingQueryObject126')._huntingQuerycontentId126]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject126').huntingQueryVersion126]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject126')._huntingQuerycontentId126]", - "contentKind": "HuntingQuery", - "displayName": "Teams Admin-User Submissions Grading Verdicts", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject126')._huntingQuerycontentId126,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject126')._huntingQuerycontentId126,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject127').huntingQueryTemplateSpecName127]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams blocked URL clicks daily trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject127').huntingQueryVersion127]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_127", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams blocked URL clicks daily trend", - "category": "Hunting Queries", - "query": "//This query visualizes the daily amount of blocked Url clicks performed by users on Urls in Teams messages summarizing the data by various Teams app names.\nlet TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nUrlClickEvents\n| where Timestamp >= TimeStart\n| where ActionType == \"ClickBlocked\" and Workload ==\"Teams\"\n| make-series TeamsBlockedClicks = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d by AppName\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualizes the daily amount of blocked Url clicks performed by users on Urls in Teams messages." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject127')._huntingQuerycontentId127),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 127", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject127')._huntingQuerycontentId127)]", - "contentId": "[variables('huntingQueryObject127')._huntingQuerycontentId127]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject127').huntingQueryVersion127]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject127')._huntingQuerycontentId127]", - "contentKind": "HuntingQuery", - "displayName": "Teams blocked URL clicks daily trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject127')._huntingQuerycontentId127,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject127')._huntingQuerycontentId127,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject128').huntingQueryTemplateSpecName128]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams Malware ZAP _HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject128').huntingQueryVersion128]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_128", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams Malware ZAP", - "category": "Hunting Queries", - "query": "//Zero-hour auto purge (ZAP) took action on Teams messages containing Malware after delivery.\nMessagePostDeliveryEvents\n| where ActionType == 'Malware ZAP' \n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for Teams messages with Malware threats that have been ZAPed." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject128')._huntingQuerycontentId128),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 128", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject128')._huntingQuerycontentId128)]", - "contentId": "[variables('huntingQueryObject128')._huntingQuerycontentId128]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject128').huntingQueryVersion128]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject128')._huntingQuerycontentId128]", - "contentKind": "HuntingQuery", - "displayName": "Teams Malware ZAP", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject128')._huntingQuerycontentId128,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject128')._huntingQuerycontentId128,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject129').huntingQueryTemplateSpecName129]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams Message with URL listed on OpenPhish_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject129').huntingQueryVersion129]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_129", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams Message with URL listed on OpenPhish", - "category": "Hunting Queries", - "query": "//This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious Teams message with a URL from OpenPhish.\nlet PhishingURLs = externaldata(url: string)\n[\n\"https://raw.githubusercontent.com/openphish/public_feed/refs/heads/main/feed.txt\"\n]\nwith (format=\"txt\"); // CSV and JSON formats are also valid formats if using the premium feeds\nMessageUrlInfo\n| where Url in (PhishingURLs)\n| join MessageEvents on TeamsMessageId\n//| where IsOwnedThread==0 and IsExternalThread==1\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query can be used as a Custom Detection Rule (CDR) to trigger when a potentially malicious Teams message with a URL from OpenPhish was delivered." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject129')._huntingQuerycontentId129),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 129", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject129')._huntingQuerycontentId129)]", - "contentId": "[variables('huntingQueryObject129')._huntingQuerycontentId129]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject129').huntingQueryVersion129]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject129')._huntingQuerycontentId129]", - "contentKind": "HuntingQuery", - "displayName": "Teams Message with URL listed on OpenPhish", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject129')._huntingQuerycontentId129,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject129')._huntingQuerycontentId129,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject130').huntingQueryTemplateSpecName130]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams message ZAPed with the same URL in Email_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject130').huntingQueryVersion130]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_130", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams message ZAPed with the same URL in Email", - "category": "Hunting Queries", - "query": "//This query provides insights on Teams messages ZAPed with the same malicious URLs in Email messages\nMessagePostDeliveryEvents\n| join MessageUrlInfo on TeamsMessageId\n| join EmailUrlInfo on Url\n| join EmailEvents on NetworkMessageId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for Teams messages that have been ZAPed with the same URL in Email." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject130')._huntingQuerycontentId130),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 130", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject130')._huntingQuerycontentId130)]", - "contentId": "[variables('huntingQueryObject130')._huntingQuerycontentId130]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject130').huntingQueryVersion130]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject130')._huntingQuerycontentId130]", - "contentKind": "HuntingQuery", - "displayName": "Teams message ZAPed with the same URL in Email", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject130')._huntingQuerycontentId130,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject130')._huntingQuerycontentId130,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject131').huntingQueryTemplateSpecName131]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams messages from a specific sender by ThreadType_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject131').huntingQueryVersion131]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_131", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams messages from a specific sender by ThreadType", - "category": "Hunting Queries", - "query": "//This query gets the count of messages from a sender across all types of conversations\nlet Sender = \"norpely@contoso.com\";\nMessageEvents\n| where SenderEmailAddress == Sender\n| summarize Count = count() by ThreadType\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for Teams messages from a specific sender by ThreadType." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject131')._huntingQuerycontentId131),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 131", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject131')._huntingQuerycontentId131)]", - "contentId": "[variables('huntingQueryObject131')._huntingQuerycontentId131]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject131').huntingQueryVersion131]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject131')._huntingQuerycontentId131]", - "contentKind": "HuntingQuery", - "displayName": "Teams messages from a specific sender by ThreadType", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject131')._huntingQuerycontentId131,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject131')._huntingQuerycontentId131,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject132').huntingQueryTemplateSpecName132]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams messages with suspicious URL domains_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject132').huntingQueryVersion132]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_132", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams messages with suspicious URL domains", - "category": "Hunting Queries", - "query": "//This Query uses MessageUrlInfo to find external Teams messages with suspicious low reputation URL doamins (e.g .xyz etc)\nMessageUrlInfo\n| extend Domain = extract(@\"^(?:https?://)?([^/]+)\", 1, Url)\n| extend TLD = tostring(split(Domain, \".\")[-1])\n| where TLD has_any (\"dev\",\"app\",\"zip\",\"solutions\",\"io\",\"top\",\"xyz\")\n| project Timestamp,Url,UrlDomain,TLD,TeamsMessageId, ReportId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for Teams messages with suspicious URL domains." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject132')._huntingQuerycontentId132),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 132", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject132')._huntingQuerycontentId132)]", - "contentId": "[variables('huntingQueryObject132')._huntingQuerycontentId132]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject132').huntingQueryVersion132]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject132')._huntingQuerycontentId132]", - "contentKind": "HuntingQuery", - "displayName": "Teams messages with suspicious URL domains", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject132')._huntingQuerycontentId132,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject132')._huntingQuerycontentId132,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject133').huntingQueryTemplateSpecName133]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams Phish ZAP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject133').huntingQueryVersion133]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_133", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams Phish ZAP", - "category": "Hunting Queries", - "query": "//Zero-hour auto purge (ZAP) took action on Teams messages containing Phish after delivery\nMessagePostDeliveryEvents\n| where ActionType == 'Phish ZAP' \n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for Teams messages with Phish threats that have been ZAPed." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject133')._huntingQuerycontentId133),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 133", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject133')._huntingQuerycontentId133)]", - "contentId": "[variables('huntingQueryObject133')._huntingQuerycontentId133]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject133').huntingQueryVersion133]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject133')._huntingQuerycontentId133]", - "contentKind": "HuntingQuery", - "displayName": "Teams Phish ZAP", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject133')._huntingQuerycontentId133,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject133')._huntingQuerycontentId133,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject134').huntingQueryTemplateSpecName134]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams post delivery events daily trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject134').huntingQueryVersion134]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_134", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams post delivery events daily trend", - "category": "Hunting Queries", - "query": "//Teams post delivery ZAP events daily trend\nlet TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nMessagePostDeliveryEvents\n| where Timestamp >= TimeStart\n| where ActionType has \"ZAP\"\n| make-series ZappedTeamsMessages = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualizes the daily amount of post delivery events on Teams messages." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject134')._huntingQuerycontentId134),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 134", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject134')._huntingQuerycontentId134)]", - "contentId": "[variables('huntingQueryObject134')._huntingQuerycontentId134]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject134').huntingQueryVersion134]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject134')._huntingQuerycontentId134]", - "contentKind": "HuntingQuery", - "displayName": "Teams post delivery events daily trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject134')._huntingQuerycontentId134,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject134')._huntingQuerycontentId134,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject135').huntingQueryTemplateSpecName135]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams Spam ZAP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject135').huntingQueryVersion135]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_135", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams Spam ZAP", - "category": "Hunting Queries", - "query": "//Zero-hour auto purge (ZAP) took action on Teams messages containing Spam after delivery\nMessagePostDeliveryEvents\n| where ActionType == 'Spam ZAP' \n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for Teams messages with Spam threats that have been ZAPed." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject135')._huntingQuerycontentId135),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 135", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject135')._huntingQuerycontentId135)]", - "contentId": "[variables('huntingQueryObject135')._huntingQuerycontentId135]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject135').huntingQueryVersion135]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject135')._huntingQuerycontentId135]", - "contentKind": "HuntingQuery", - "displayName": "Teams Spam ZAP", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject135')._huntingQuerycontentId135,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject135')._huntingQuerycontentId135,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject136').huntingQueryTemplateSpecName136]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams URL clicks actions summarized by URLs clicked on_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject136').huntingQueryVersion136]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_136", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams URL clicks actions summarized by URLs clicked on", - "category": "Hunting Queries", - "query": "//Teams URL clicks actions summarized by URLs clicked on\nUrlClickEvents\n| extend UrlBlocked = ActionType has_any(\"ClickBlocked\")\n| extend UrlAllowed = ActionType has_any('ClickAllowed')\n| extend UrlPendingVerdict = ActionType has_any('UrlScanInProgress')\n| extend ErrorPage = ActionType has_any('UrlErrorPage')\n| where Workload == \"Teams\"\n| summarize Blocked = countif(UrlBlocked), Allowed = countif(UrlAllowed), PendingVerdict = countif(UrlPendingVerdict), Error = countif(ErrorPage), ClickedThrough = countif(IsClickedThrough) by Url\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualizes user clicks in Teams summarizing the data by the various URLs and Click actions on them." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject136')._huntingQuerycontentId136),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 136", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject136')._huntingQuerycontentId136)]", - "contentId": "[variables('huntingQueryObject136')._huntingQuerycontentId136]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject136').huntingQueryVersion136]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject136')._huntingQuerycontentId136]", - "contentKind": "HuntingQuery", - "displayName": "Teams URL clicks actions summarized by URLs clicked on", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject136')._huntingQuerycontentId136,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject136')._huntingQuerycontentId136,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject137').huntingQueryTemplateSpecName137]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams URL clicks through actions on Phish or Malware URLs summarized by URLs_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject137').huntingQueryVersion137]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_137", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams URL clicks through actions on Phish or Malware URLs summarized by URLs", - "category": "Hunting Queries", - "query": "//Teams URL clicks through actions on Phish or Malware URLs summarized by URLs\nUrlClickEvents \n| where IsClickedThrough !=\"0\" and Workload ==\"Teams\"\n| where ThreatTypes in (\"Phish\",\"Malware\") \n| summarize by Url,ThreatTypes, IsClickedThrough, ActionType\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualizes clicks through actions on Phish or Malware URLs in Teams, summarizing the data by Urls." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject137')._huntingQuerycontentId137),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 137", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject137')._huntingQuerycontentId137)]", - "contentId": "[variables('huntingQueryObject137')._huntingQuerycontentId137]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject137').huntingQueryVersion137]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject137')._huntingQuerycontentId137]", - "contentKind": "HuntingQuery", - "displayName": "Teams URL clicks through actions on Phish or Malware URLs summarized by URLs", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject137')._huntingQuerycontentId137,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject137')._huntingQuerycontentId137,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject138').huntingQueryTemplateSpecName138]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams User submissions daily trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject138').huntingQueryVersion138]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_138", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams User submissions daily trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery=CloudAppEvents\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| where ActionType == \"UserSubmission\" and SubmissionContentType == \"ChatMessage\";\nlet User_TeamsSubmission_FN_FP=baseQuery\n| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"User_TeamsSubmission_FN_FP\";\nunion User_TeamsSubmission_FN_FP\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the daily amount of user false negative and false postive Teams message submissions" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject138')._huntingQuerycontentId138),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 138", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject138')._huntingQuerycontentId138)]", - "contentId": "[variables('huntingQueryObject138')._huntingQuerycontentId138]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject138').huntingQueryVersion138]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject138')._huntingQuerycontentId138]", - "contentKind": "HuntingQuery", - "displayName": "Teams User submissions daily trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject138')._huntingQuerycontentId138,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject138')._huntingQuerycontentId138,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject139').huntingQueryTemplateSpecName139]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Teams users clicking on suspicious URL domains_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject139').huntingQueryVersion139]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_139", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Teams users clicking on suspicious URL domains", - "category": "Hunting Queries", - "query": "//This Query uses MessageUrlInfo, MessageEvents and UrlClickEvents to find external Teams messages with low reputation URL doamins (.xyz) and identify the top 10 users clicking on them. \nMessageUrlInfo\n| extend Domain = extract(@\"^(?:https?://)?([^/]+)\", 1, Url)\n| extend TLD = tostring(split(Domain, \".\")[-1])\n| where TLD has_any (\"dev\",\"app\",\"zip\",\"solutions\",\"io\",\"top\")\n| join MessageEvents on TeamsMessageId\n| join UrlClickEvents on Url\n| project Timestamp,Url,UrlDomain,TLD,TeamsMessageId, ReportId, Timestamp2,ActionType,AccountUpn,Workload, SenderDisplayName, SenderEmailAddress, ThreatTypes, DetectionMethods, RecipientDetails\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for Teams users clicking on suspicious URL domains." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject139')._huntingQuerycontentId139),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 139", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject139')._huntingQuerycontentId139)]", - "contentId": "[variables('huntingQueryObject139')._huntingQuerycontentId139]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject139').huntingQueryVersion139]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject139')._huntingQuerycontentId139]", - "contentKind": "HuntingQuery", - "displayName": "Teams users clicking on suspicious URL domains", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject139')._huntingQuerycontentId139,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject139')._huntingQuerycontentId139,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject140').huntingQueryTemplateSpecName140]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 Attacked user by Phish messages_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject140').huntingQueryVersion140]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_140", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 Attacked user by Phish messages", - "category": "Hunting Queries", - "query": "//Top 10 attacked users by Phish messages from external senders using Teams. Replace contoso.com with your own recipient domain.\nMessageEvents\n| where ThreatTypes has 'Phish' and IsOwnedThread==0 and IsExternalThread==1\n| mv-expand Recipients = RecipientDetails\n| extend RecipientEmailAddress = Recipients.RecipientSmtpAddress, RecipientDisplayName = Recipients.RecipientDisplayName, RecipientObjectId = Recipients.RecipientObjectId, RecipientType = Recipients.RecipientType\n| where RecipientEmailAddress contains ('contoso.com')\n| summarize count() by tostring(RecipientEmailAddress)\n| sort by count_\n| top 10 by count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Top 10 attacked users by Phish messages from external senders using Teams" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject140')._huntingQuerycontentId140),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 140", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject140')._huntingQuerycontentId140)]", - "contentId": "[variables('huntingQueryObject140')._huntingQuerycontentId140]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject140').huntingQueryVersion140]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject140')._huntingQuerycontentId140]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 Attacked user by Phish messages", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject140')._huntingQuerycontentId140,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject140')._huntingQuerycontentId140,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject141').huntingQueryTemplateSpecName141]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 external senders sending Teams messages_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject141').huntingQueryVersion141]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_141", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 external senders sending Teams messages", - "category": "Hunting Queries", - "query": "//Top 10 external senders sending Teams messages\nMessageEvents \n| where IsOwnedThread==0 and IsExternalThread==1\n| summarize count() by SenderEmailAddress\n| sort by count_ desc\n| top 10 by count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visulises all up Top 10 external senders sending Teams messages" - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject141')._huntingQuerycontentId141),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 141", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject141')._huntingQuerycontentId141)]", - "contentId": "[variables('huntingQueryObject141')._huntingQuerycontentId141]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject141').huntingQueryVersion141]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject141')._huntingQuerycontentId141]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 external senders sending Teams messages", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject141')._huntingQuerycontentId141,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject141')._huntingQuerycontentId141,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject142').huntingQueryTemplateSpecName142]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 External senders sending Teams phishing messsages_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject142').huntingQueryVersion142]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_142", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 External senders sending Teams phishing messsages", - "category": "Hunting Queries", - "query": "//This query looking for top 10 External senders sending Team phishing messsages\nMessageEvents\n| where IsOwnedThread==0 and IsExternalThread==1\n| where ThreatTypes has \"Phish\"\n| summarize Count = count() by SenderEmailAddress\n| top 10 by Count\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query looking for top 10 External senders sending Team phishing messsages." - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject142')._huntingQuerycontentId142),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 142", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject142')._huntingQuerycontentId142)]", - "contentId": "[variables('huntingQueryObject142')._huntingQuerycontentId142]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject142').huntingQueryVersion142]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject142')._huntingQuerycontentId142]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 External senders sending Teams phishing messsages", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject142')._huntingQuerycontentId142,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject142')._huntingQuerycontentId142,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject143').huntingQueryTemplateSpecName143]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 sender domains - Admin Teams message submissions FN_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject143').huntingQueryVersion143]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_143", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 sender domains - Admin Teams message submissions FN", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain)\n| where SubmissionContentType == \"ChatMessage\" and SubmissionType in (\"2\",\"1\")\n| summarize count() by P2SenderDomain\n| project P2SenderDomain, TeamsMessages = count_\n| top 10 by TeamsMessages desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises Teams messages submitted by admins as false negatives, summarizing the data by top 10 sender domains of those messages" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject143')._huntingQuerycontentId143),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 143", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject143')._huntingQuerycontentId143)]", - "contentId": "[variables('huntingQueryObject143')._huntingQuerycontentId143]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject143').huntingQueryVersion143]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject143')._huntingQuerycontentId143]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 sender domains - Admin Teams message submissions FN", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject143')._huntingQuerycontentId143,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject143')._huntingQuerycontentId143,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject144').huntingQueryTemplateSpecName144]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 sender domains - Teams user submissions FN or FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject144').huntingQueryVersion144]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_144", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 sender domains - Teams user submissions FN or FP", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain)\n| where SubmissionContentType == \"ChatMessage\"\n| summarize count() by P2SenderDomain\n| project P2SenderDomain, TeamsMessages = count_\n| top 10 by TeamsMessages desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises Teams messages submitted by users as false negatives or false positives, summarizing the data by top 10 sender domains of those messages" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject144')._huntingQuerycontentId144),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 144", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject144')._huntingQuerycontentId144)]", - "contentId": "[variables('huntingQueryObject144')._huntingQuerycontentId144]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject144').huntingQueryVersion144]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject144')._huntingQuerycontentId144]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 sender domains - Teams user submissions FN or FP", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject144')._huntingQuerycontentId144,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject144')._huntingQuerycontentId144,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject145').huntingQueryTemplateSpecName145]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 senders - Teams users submissions FN or FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject145').huntingQueryVersion145]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_145", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 senders - Teams users submissions FN or FP", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2Sender=tostring((parse_json(RawEventData)).P2Sender)\n| where SubmissionContentType == \"ChatMessage\"\n| summarize count() by P2Sender\n| project P2Sender, TeamsMessages = count_\n| top 10 by TeamsMessages desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises Teams messages submitted by user as false negatives or false positives, summarizing the data by top 10 indidvidual senders of those messages" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject145')._huntingQuerycontentId145),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 145", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject145')._huntingQuerycontentId145)]", - "contentId": "[variables('huntingQueryObject145')._huntingQuerycontentId145]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject145').huntingQueryVersion145]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject145')._huntingQuerycontentId145]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 senders - Teams users submissions FN or FP", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject145')._huntingQuerycontentId145,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject145')._huntingQuerycontentId145,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject146').huntingQueryTemplateSpecName146]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 senders of Admin Teams message submissions FN_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject146').huntingQueryVersion146]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_146", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 senders of Admin Teams message submissions FN", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2Sender=tostring((parse_json(RawEventData)).P2Sender)\n| where SubmissionContentType == \"ChatMessage\" and SubmissionType in (\"2\",\"1\")\n| summarize count() by P2Sender\n| project P2Sender, TeamsMessages = count_\n| top 10 by TeamsMessages desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises Teams messages submitted by admins as false negatives, summarizing the data by top 10 indidvidual senders of those messages" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject146')._huntingQuerycontentId146),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 146", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject146')._huntingQuerycontentId146)]", - "contentId": "[variables('huntingQueryObject146')._huntingQuerycontentId146]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject146').huntingQueryVersion146]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject146')._huntingQuerycontentId146]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 senders of Admin Teams message submissions FN", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject146')._huntingQuerycontentId146,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject146')._huntingQuerycontentId146,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject147').huntingQueryTemplateSpecName147]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 senders of Admin Teams message submissions FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject147').huntingQueryVersion147]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_147", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 senders of Admin Teams message submissions FP", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2Sender=tostring((parse_json(RawEventData)).P2Sender)\n| where SubmissionContentType == \"ChatMessage\" and SubmissionType in (\"3\")\n| summarize count() by P2Sender\n| project P2Sender, TeamsMessages = count_\n| top 10 by TeamsMessages desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises Teams messages submitted by admins as false positives, summarizing the data by top 10 indidvidual senders of those messages" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject147')._huntingQuerycontentId147),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 147", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject147')._huntingQuerycontentId147)]", - "contentId": "[variables('huntingQueryObject147')._huntingQuerycontentId147]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject147').huntingQueryVersion147]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject147')._huntingQuerycontentId147]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 senders of Admin Teams message submissions FP", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject147')._huntingQuerycontentId147,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject147')._huntingQuerycontentId147,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject148').huntingQueryTemplateSpecName148]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 Users clicking on malicious URLs in Teams_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject148').huntingQueryVersion148]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_148", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 Users clicking on malicious URLs in Teams", - "category": "Hunting Queries", - "query": "//Top 10 Users clicking on malicious URLs in Teams\nUrlClickEvents \n| where Workload ==\"Teams\" and ThreatTypes in (\"Phish\",\"Malware\") \n| summarize Blocked = countif(ActionType ==\"ClickBlocked\"), Allowed = countif(ActionType ==\"ClickAllowed\"), PendingVerdict = countif(ActionType ==\"UrlScanInProgress\"), Error = countif(ActionType ==\"UrlErrorPage\"), ClickedThrough = countif(IsClickedThrough)by AccountUpn\n| top 10 by Blocked desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualizes Top 10 Users clicking on malicious Phish or Malware URLs in Teams." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject148')._huntingQuerycontentId148),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 148", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject148')._huntingQuerycontentId148)]", - "contentId": "[variables('huntingQueryObject148')._huntingQuerycontentId148]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject148').huntingQueryVersion148]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject148')._huntingQuerycontentId148]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 Users clicking on malicious URLs in Teams", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject148')._huntingQuerycontentId148,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject148')._huntingQuerycontentId148,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject149').huntingQueryTemplateSpecName149]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top accounts performing Teams admin submissions FN or FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject149').huntingQueryVersion149]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_149", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top accounts performing Teams admin submissions FN or FP", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),SubmittedBy=tostring((parse_json(RawEventData)).UserId)\n| where SubmissionContentType == \"ChatMessage\" and SubmissionType in (\"1\",\"2\",\"3\")\n| summarize count() by SubmittedBy\n| project SubmittedBy, TeamsMessages = count_\n|top 10 by TeamsMessages desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the top admins performing false negative or false positive admin submissions of Teams messages" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject149')._huntingQuerycontentId149),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 149", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject149')._huntingQuerycontentId149)]", - "contentId": "[variables('huntingQueryObject149')._huntingQuerycontentId149]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject149').huntingQueryVersion149]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject149')._huntingQuerycontentId149]", - "contentKind": "HuntingQuery", - "displayName": "Top accounts performing Teams admin submissions FN or FP", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject149')._huntingQuerycontentId149,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject149')._huntingQuerycontentId149,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject150').huntingQueryTemplateSpecName150]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top accounts performing Teams user submissions FN or FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject150').huntingQueryVersion150]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_150", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top accounts performing Teams user submissions FN or FP", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),SubmittedBy=tostring((parse_json(RawEventData)).UserId)\n| where SubmissionContentType == \"ChatMessage\"\n| summarize count() by SubmittedBy\n| project SubmittedBy, TeamsMessages = count_\n|top 10 by TeamsMessages desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the top users performing false negative or false positive user submissions of Teams messages" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject150')._huntingQuerycontentId150),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 150", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject150')._huntingQuerycontentId150)]", - "contentId": "[variables('huntingQueryObject150')._huntingQuerycontentId150]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject150').huntingQueryVersion150]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject150')._huntingQuerycontentId150]", - "contentKind": "HuntingQuery", - "displayName": "Top accounts performing Teams user submissions FN or FP", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject150')._huntingQuerycontentId150,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject150')._huntingQuerycontentId150,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject151').huntingQueryTemplateSpecName151]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top domains outbound sending Malicious Teams messages inbound_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject151').huntingQueryVersion151]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_151", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top domains outbound sending Malicious Teams messages inbound", - "category": "Hunting Queries", - "query": "// This query provides insights of top outbound recipient domains of outbound Teams messages by volume and shows total number of inbound Teams messages with Threats from the same domains (as inbound senders) indicating potential partner user or organization compromise.\nMessageEvents\n| where IsExternalThread==1 and IsOwnedThread==1\n| mv-expand Recipients = RecipientDetails\n| extend RecipientEmailAddress = Recipients.RecipientSmtpAddress\n| extend RecipientDomain = tostring(split(RecipientEmailAddress, \"@\")[1])\n//| where RecipientDomain !=\"contoso.com\"\n| summarize count() by RecipientDomain\n| project OutboundCount=count_, RecipientDomain, SenderFromDomain=RecipientDomain\n| join (MessageEvents |mv-expand Recipients = RecipientDetails|extend RecipientEmailAddress = Recipients.RecipientSmtpAddress|extend SenderFromDomain = tostring(split(RecipientEmailAddress, \"@\")[1])| where IsExternalThread==1 and IsOwnedThread==0 and isempty(ThreatTypes)==false) on SenderFromDomain\n| summarize max(OutboundCount),count() by SenderFromDomain\n//| extend Bad_Traffic_Percentage = todouble(round(IncomingTeamsMessagesWithThreats=count_ / todouble(OutboundTeamsMessages=max_OutboundCount), 2))\n| project SenderFromDomain, OutboundTeamsMessages=max_OutboundCount, IncomingTeamsMessagesWithThreats=count_//, Bad_Traffic_Percentage\n| sort by OutboundTeamsMessages\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query looking for potential partner compromise via comparing outbound Teams message traffic per target domain and looking for malicious Teams messages from the same domains as inbound." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject151')._huntingQuerycontentId151),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 151", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject151')._huntingQuerycontentId151)]", - "contentId": "[variables('huntingQueryObject151')._huntingQuerycontentId151]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject151').huntingQueryVersion151]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject151')._huntingQuerycontentId151]", - "contentKind": "HuntingQuery", - "displayName": "Top domains outbound sending Malicious Teams messages inbound", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject151')._huntingQuerycontentId151,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject151')._huntingQuerycontentId151,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject152').huntingQueryTemplateSpecName152]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top external malicious senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject152').huntingQueryVersion152]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_152", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top External malicious Senders", - "category": "Hunting Queries", - "query": "//Top external senders sending malicious inbound Teams messages Spam, Phish, Malware\nMessageEvents \n| where IsOwnedThread==0 and IsExternalThread==1 and ThreatTypes !='' and Timestamp > ago(30d)\n| summarize count() by SenderEmailAddress, ThreatTypes \n| sort by count_ desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Top external senders sending malicious inbound Teams messages Spam, Phish, Malware" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject152')._huntingQuerycontentId152),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 152", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject152')._huntingQuerycontentId152)]", - "contentId": "[variables('huntingQueryObject152')._huntingQuerycontentId152]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject152').huntingQueryVersion152]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject152')._huntingQuerycontentId152]", - "contentKind": "HuntingQuery", - "displayName": "Top External malicious Senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject152')._huntingQuerycontentId152,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject152')._huntingQuerycontentId152,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject153').huntingQueryTemplateSpecName153]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top External Sender domains - Malware_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject153').huntingQueryVersion153]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_153", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top External Sender domains - Malware", - "category": "Hunting Queries", - "query": "//Top External Sender domains sending Teams message with Malware threats\nMessageEvents\n| where IsExternalThread==1 and IsOwnedThread==0\n| where ThreatTypes contains \"Malware\"\n| extend SenderDomain = tostring(split(SenderEmailAddress, \"@\")[1])\n| summarize count() by SenderDomain\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Top External Sender domains sending Teams message with Malware threats" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject153')._huntingQuerycontentId153),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 153", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject153')._huntingQuerycontentId153)]", - "contentId": "[variables('huntingQueryObject153')._huntingQuerycontentId153]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject153').huntingQueryVersion153]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject153')._huntingQuerycontentId153]", - "contentKind": "HuntingQuery", - "displayName": "Top External Sender domains - Malware", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject153')._huntingQuerycontentId153,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject153')._huntingQuerycontentId153,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject154').huntingQueryTemplateSpecName154]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top External Sender domains - Phish_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject154').huntingQueryVersion154]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_154", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top External Sender domains - Phish", - "category": "Hunting Queries", - "query": "//Top External Sender domains sending Teams message with Phish threats\nMessageEvents\n| where IsExternalThread==1 and IsOwnedThread==0\n| where ThreatTypes contains \"Phish\"\n| extend SenderDomain = tostring(split(SenderEmailAddress, \"@\")[1])\n| summarize count() by SenderDomain\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Top External Sender domains sending Teams message with Phish threats" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject154')._huntingQuerycontentId154),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 154", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject154')._huntingQuerycontentId154)]", - "contentId": "[variables('huntingQueryObject154')._huntingQuerycontentId154]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject154').huntingQueryVersion154]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject154')._huntingQuerycontentId154]", - "contentKind": "HuntingQuery", - "displayName": "Top External Sender domains - Phish", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject154')._huntingQuerycontentId154,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject154')._huntingQuerycontentId154,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject155').huntingQueryTemplateSpecName155]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top External Sender domains - Spam_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject155').huntingQueryVersion155]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_155", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top External Sender domains - Spam", - "category": "Hunting Queries", - "query": "//Top External Sender domains sending Teams message with Spam threats\nMessageEvents\n| where IsExternalThread==1 and IsOwnedThread==0\n| where ThreatTypes contains \"Spam\"\n| extend SenderDomain = tostring(split(SenderEmailAddress, \"@\")[1])\n| summarize count() by SenderDomain\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Top External Sender domains sending Teams message with Spam threats" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject155')._huntingQuerycontentId155),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 155", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject155')._huntingQuerycontentId155)]", - "contentId": "[variables('huntingQueryObject155')._huntingQuerycontentId155]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject155').huntingQueryVersion155]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject155')._huntingQuerycontentId155]", - "contentKind": "HuntingQuery", - "displayName": "Top External Sender domains - Spam", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject155')._huntingQuerycontentId155,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject155')._huntingQuerycontentId155,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject156').huntingQueryTemplateSpecName156]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top malicious URLs clicked by users in Teams_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject156').huntingQueryVersion156]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_156", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top malicious URLs clicked by users in Teams", - "category": "Hunting Queries", - "query": "//This query shows the top 20 URL's that have a detection associated with it and the most ammount of clicks registered from Microsoft Teams \nUrlClickEvents\n| where ThreatTypes !=\"\" and Workload ==\"Teams\"\n| summarize count() by Url, ThreatTypes, ActionType, Workload\n| project Url, ThreatTypes, ActionType, Workload, ClickCount=count_\n| top 20 by ClickCount\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunt for top malicious URLs clicked by users in Teams" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject156')._huntingQuerycontentId156),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 156", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject156')._huntingQuerycontentId156)]", - "contentId": "[variables('huntingQueryObject156')._huntingQuerycontentId156]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject156').huntingQueryVersion156]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject156')._huntingQuerycontentId156]", - "contentKind": "HuntingQuery", - "displayName": "Top malicious URLs clicked by users in Teams", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject156')._huntingQuerycontentId156,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject156')._huntingQuerycontentId156,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject157').huntingQueryTemplateSpecName157]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Total number of MDO Teams protection detections daily_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject157').huntingQueryVersion157]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_157", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Total number of MDO Teams protection detections daily", - "category": "Hunting Queries", - "query": "//Total number of MDO Teams protection detections daily \nlet minTime = toscalar(MessageEvents | summarize min(Timestamp));\nlet maxTime = toscalar(MessageEvents | summarize max(Timestamp));\nlet baseQuery = MessageEvents\n//| where IsOwnedThread==0 and IsExternalThread==1 \n| where isnotempty(Timestamp);\nlet totalwiththreat = baseQuery\n| where isnotempty(ThreatTypes) \n| make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d \n| extend Details = \"Total Teams messages with Threat\";\nlet totalwithphishthreat = baseQuery\n| where ThreatTypes has ('Phish')\n| make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d \n| extend Details = \"Total Teams messages with Phish Threat\";\nlet totalwithmalwarethreat = baseQuery\n| where ThreatTypes has ('Malware')\n| make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d \n| extend Details = \"Total Teams messages with Malware Threat\";\nunion totalwiththreat, totalwithphishthreat, totalwithmalwarethreat\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visulises Total number of MDO Teams protection detections daily" - }, - { - "name": "tactics", - "value": "DefenseEvasion" - }, - { - "name": "techniques", - "value": "T1562" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject157')._huntingQuerycontentId157),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 157", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject157')._huntingQuerycontentId157)]", - "contentId": "[variables('huntingQueryObject157')._huntingQuerycontentId157]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject157').huntingQueryVersion157]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject157')._huntingQuerycontentId157]", - "contentKind": "HuntingQuery", - "displayName": "Total number of MDO Teams protection detections daily", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject157')._huntingQuerycontentId157,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject157')._huntingQuerycontentId157,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject158').huntingQueryTemplateSpecName158]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "URL click on URLs in ZAP-d Teams messages_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject158').huntingQueryVersion158]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_158", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "URL click on URLs in ZAP-d Teams messages", - "category": "Hunting Queries", - "query": "//URL click on URLs in ZAP-d Teams messages\nMessagePostDeliveryEvents\n| join MessageUrlInfo on TeamsMessageId\n| join UrlClickEvents on Url\n| where ActionType !=\"\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualizes URL clicks on URLs in Teams messages which were acted by ZAP." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject158')._huntingQuerycontentId158),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 158", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject158')._huntingQuerycontentId158)]", - "contentId": "[variables('huntingQueryObject158')._huntingQuerycontentId158]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject158').huntingQueryVersion158]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject158')._huntingQuerycontentId158]", - "contentKind": "HuntingQuery", - "displayName": "URL click on URLs in ZAP-d Teams messages", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject158')._huntingQuerycontentId158,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject158')._huntingQuerycontentId158,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject159').huntingQueryTemplateSpecName159]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam and Phish delivered to Inbox due to Admin Overrides_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject159').huntingQueryVersion159]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_159", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spam and Phish allowed to inbox by Admin Overrides", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery = EmailEvents\n| where TimeGenerated >= TimeStart\n| where ConfidenceLevel != \"\" and OrgLevelPolicy!=\"\" and OrgLevelAction == \"Allow\" and DeliveryAction == \"Delivered\";\nlet spam=baseQuery\n| where ThreatTypes has 'Spam'\n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Allowed Spam\";\nlet phish=baseQuery\n| where ThreatTypes has 'Phish'\n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Allowed Phish\";\nunion spam,phish\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps in reviewing malicious emails allowed due to admin overrides" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject159')._huntingQuerycontentId159),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 159", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject159')._huntingQuerycontentId159)]", - "contentId": "[variables('huntingQueryObject159')._huntingQuerycontentId159]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject159').huntingQueryVersion159]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject159')._huntingQuerycontentId159]", - "contentKind": "HuntingQuery", - "displayName": "Spam and Phish allowed to inbox by Admin Overrides", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject159')._huntingQuerycontentId159,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject159')._huntingQuerycontentId159,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject160').huntingQueryTemplateSpecName160]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam and Phish delivered to Inbox due to User Overrides_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject160').huntingQueryVersion160]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_160", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spam and Phish allowed to inbox by User Overrides", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery = EmailEvents\n| where TimeGenerated >= TimeStart\n| where ConfidenceLevel != \"\" and UserLevelPolicy!=\"\" and UserLevelAction == \"Allow\" and DeliveryAction == \"Delivered\";\nlet spam=baseQuery\n| where ThreatTypes has 'Spam'\n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Allowed Spam\";\nlet phish=baseQuery\n| where ThreatTypes has 'Phish'\n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Allowed Phish\";\nunion spam,phish\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps in reviewing malicious emails allowed due to user overrides" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject160')._huntingQuerycontentId160),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 160", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject160')._huntingQuerycontentId160)]", - "contentId": "[variables('huntingQueryObject160')._huntingQuerycontentId160]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject160').huntingQueryVersion160]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject160')._huntingQuerycontentId160]", - "contentKind": "HuntingQuery", - "displayName": "Spam and Phish allowed to inbox by User Overrides", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject160')._huntingQuerycontentId160,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject160')._huntingQuerycontentId160,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject161').huntingQueryTemplateSpecName161]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top policies performing admin overrides_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject161').huntingQueryVersion161]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_161", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top policies performing admin overrides", - "category": "Hunting Queries", - "query": "EmailEvents \n| where OrgLevelPolicy!=\"\" and OrgLevelAction == \"Allow\" //\"Block\"\n| extend OrgPolicy = split(OrgLevelPolicy, \"(\", 0)\n| summarize count() by tostring(OrgPolicy)\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps in reviewing top policies for admin overrides (Allow/Block)" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject161')._huntingQuerycontentId161),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 161", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject161')._huntingQuerycontentId161)]", - "contentId": "[variables('huntingQueryObject161')._huntingQuerycontentId161]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject161').huntingQueryVersion161]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject161')._huntingQuerycontentId161]", - "contentKind": "HuntingQuery", - "displayName": "Top policies performing admin overrides", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject161')._huntingQuerycontentId161,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject161')._huntingQuerycontentId161,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject162').huntingQueryTemplateSpecName162]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top policies performing user overrides_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject162').huntingQueryVersion162]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_162", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top policies performing user overrides", - "category": "Hunting Queries", - "query": "EmailEvents \n| where UserLevelPolicy!=\"\" and UserLevelAction == \"Allow\" //\"Block\"\n| extend UserPolicy = split(UserLevelPolicy, \"(\", 0)\n| summarize count() by tostring(UserPolicy)\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps in reviewing top policies for user overrides (Allow/Block)" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject162')._huntingQuerycontentId162),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 162", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject162')._huntingQuerycontentId162)]", - "contentId": "[variables('huntingQueryObject162')._huntingQuerycontentId162]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject162').huntingQueryVersion162]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject162')._huntingQuerycontentId162]", - "contentKind": "HuntingQuery", - "displayName": "Top policies performing user overrides", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject162')._huntingQuerycontentId162,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject162')._huntingQuerycontentId162,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject163').huntingQueryTemplateSpecName163]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Total Emails with Admin Overrides - Allow_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject163').huntingQueryVersion163]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_163", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Total Emails with Admin Overrides (Allow)", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where OrgLevelPolicy != \"\" and OrgLevelAction == \"Allow\"\n| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d by OrgLevelPolicy\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total amount of emails subject to an admin policy with action of allow, independent of action taken, summarizing the data by type of override" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject163')._huntingQuerycontentId163),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 163", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject163')._huntingQuerycontentId163)]", - "contentId": "[variables('huntingQueryObject163')._huntingQuerycontentId163]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject163').huntingQueryVersion163]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject163')._huntingQuerycontentId163]", - "contentKind": "HuntingQuery", - "displayName": "Total Emails with Admin Overrides (Allow)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject163')._huntingQuerycontentId163,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject163')._huntingQuerycontentId163,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject164').huntingQueryTemplateSpecName164]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Total Emails with Admin Overrides - Block_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject164').huntingQueryVersion164]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_164", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Total Emails with Admin Overrides (Block)", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where OrgLevelPolicy != \"\" and OrgLevelAction == \"Block\"\n| make-series TotalAdminOverrides = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the amount of emails subject to an admin policy with action of block, summarizing the data daily" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject164')._huntingQuerycontentId164),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 164", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject164')._huntingQuerycontentId164)]", - "contentId": "[variables('huntingQueryObject164')._huntingQuerycontentId164]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject164').huntingQueryVersion164]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject164')._huntingQuerycontentId164]", - "contentKind": "HuntingQuery", - "displayName": "Total Emails with Admin Overrides (Block)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject164')._huntingQuerycontentId164,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject164')._huntingQuerycontentId164,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject165').huntingQueryTemplateSpecName165]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Total Emails with User Overrides - Allow_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject165').huntingQueryVersion165]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_165", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Total Emails with User Overrides (Allow)", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where UserLevelPolicy != \"\" and UserLevelAction == \"Allow\"\n| summarize Emails = count() by UserLevelAction, UserLevelPolicy, ThreatTypes\n| sort by Emails desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the amount of emails subject to a user type policy with action of allow, summarizing the data by type of override and threats type found" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject165')._huntingQuerycontentId165),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 165", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject165')._huntingQuerycontentId165)]", - "contentId": "[variables('huntingQueryObject165')._huntingQuerycontentId165]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject165').huntingQueryVersion165]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject165')._huntingQuerycontentId165]", - "contentKind": "HuntingQuery", - "displayName": "Total Emails with User Overrides (Allow)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject165')._huntingQuerycontentId165,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject165')._huntingQuerycontentId165,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject166').huntingQueryTemplateSpecName166]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Total Emails with User Overrides - Block_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject166').huntingQueryVersion166]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_166", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Total Emails with User Overrides (Block)", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where UserLevelPolicy != \"\" and UserLevelAction == \"Block\"\n| make-series TotalUserOverrides = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the amount of emails subject to a user type policy with action of block, summarizing the data daily" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject166')._huntingQuerycontentId166),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 166", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject166')._huntingQuerycontentId166)]", - "contentId": "[variables('huntingQueryObject166')._huntingQuerycontentId166]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject166').huntingQueryVersion166]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject166')._huntingQuerycontentId166]", - "contentKind": "HuntingQuery", - "displayName": "Total Emails with User Overrides (Block)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject166')._huntingQuerycontentId166,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject166')._huntingQuerycontentId166,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject167').huntingQueryTemplateSpecName167]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Phish Detection Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject167').huntingQueryVersion167]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_167", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Phish Detections Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where ThreatTypes has \"Phish\"\n| make-series PhishDetections = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish detections over time summarizing the data daily." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject167')._huntingQuerycontentId167),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 167", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject167')._huntingQuerycontentId167)]", - "contentId": "[variables('huntingQueryObject167')._huntingQuerycontentId167]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject167').huntingQueryVersion167]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject167')._huntingQuerycontentId167]", - "contentKind": "HuntingQuery", - "displayName": "Phish Detections Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject167')._huntingQuerycontentId167,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject167')._huntingQuerycontentId167,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject168').huntingQueryTemplateSpecName168]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Phish Detections by Delivery Location - High_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject168').huntingQueryVersion168]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_168", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Phish Detections (High) by delivery location", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where tostring(parse_json(ConfidenceLevel).Phish) == \"High\"\n| summarize count() by LatestDeliveryLocation\n| sort by count_ desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails with Phish detections (High confidence) summarizing the data by Delivery Location." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject168')._huntingQuerycontentId168),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 168", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject168')._huntingQuerycontentId168)]", - "contentId": "[variables('huntingQueryObject168')._huntingQuerycontentId168]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject168').huntingQueryVersion168]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject168')._huntingQuerycontentId168]", - "contentKind": "HuntingQuery", - "displayName": "Phish Detections (High) by delivery location", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject168')._huntingQuerycontentId168,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject168')._huntingQuerycontentId168,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject169').huntingQueryTemplateSpecName169]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Phish Detections by Delivery Location - Medium_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject169').huntingQueryVersion169]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_169", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Phish Detections (Normal) by delivery location", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where tostring(parse_json(ConfidenceLevel).Phish) == \"Normal\"\n| summarize count() by LatestDeliveryLocation\n| sort by count_ desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails with Phish detections (Normal confidence) summarizing the data by Delivery Location." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject169')._huntingQuerycontentId169),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 169", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject169')._huntingQuerycontentId169)]", - "contentId": "[variables('huntingQueryObject169')._huntingQuerycontentId169]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject169').huntingQueryVersion169]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject169')._huntingQuerycontentId169]", - "contentKind": "HuntingQuery", - "displayName": "Phish Detections (Normal) by delivery location", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject169')._huntingQuerycontentId169,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject169')._huntingQuerycontentId169,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject170').huntingQueryTemplateSpecName170]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Phish Detections by Delivery Location Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject170').huntingQueryVersion170]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_170", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Phish Detections by delivery location trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has \"Phish\" and EmailDirection == \"Inbound\"\n| make-series TotalPhishDetections = count(), Quarantine = countif(DeliveryLocation == \"Quarantine\"), Junkfolder = countif(DeliveryLocation == \"Junk folder\"), Inbox = countif(DeliveryLocation == \"Inbox/folder\"), Failed = countif(DeliveryLocation == \"Failed\"), Dropped = countif(DeliveryLocation == \"Dropped\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish detections over time summarizing the data daily by Delivery Location." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject170')._huntingQuerycontentId170),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 170", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject170')._huntingQuerycontentId170)]", - "contentId": "[variables('huntingQueryObject170')._huntingQuerycontentId170]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject170').huntingQueryVersion170]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject170')._huntingQuerycontentId170]", - "contentKind": "HuntingQuery", - "displayName": "Phish Detections by delivery location trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject170')._huntingQuerycontentId170,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject170')._huntingQuerycontentId170,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject171').huntingQueryTemplateSpecName171]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Phish Detections by Detection Technology Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject171').huntingQueryVersion171]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_171", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Phish Detections by Detection technology Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has \"Phish\"\n| mv-expand PhishMethod = parse_json(DetectionMethods).Phish to typeof(string)\n| where isnotempty(PhishMethod)\n| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d by PhishMethod\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish detections over time summarizing the data daily by various Phish Detection technologies/controls" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject171')._huntingQuerycontentId171),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 171", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject171')._huntingQuerycontentId171)]", - "contentId": "[variables('huntingQueryObject171')._huntingQuerycontentId171]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject171').huntingQueryVersion171]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject171')._huntingQuerycontentId171]", - "contentKind": "HuntingQuery", - "displayName": "Phish Detections by Detection technology Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject171')._huntingQuerycontentId171,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject171')._huntingQuerycontentId171,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject172').huntingQueryTemplateSpecName172]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Phish Detections by Detection Technology_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject172').huntingQueryVersion172]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_172", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Phish Detections by Detection technology", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has \"Phish\"\n| mv-expand PhishMethod = parse_json(DetectionMethods).Phish to typeof(string)\n| where isnotempty(PhishMethod)\n| summarize Count = count() by PhishMethod\n| sort by Count desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish detections summarizing the data by various Phish detection technologies/controls" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject172')._huntingQuerycontentId172),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 172", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject172')._huntingQuerycontentId172)]", - "contentId": "[variables('huntingQueryObject172')._huntingQuerycontentId172]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject172').huntingQueryVersion172]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject172')._huntingQuerycontentId172]", - "contentKind": "HuntingQuery", - "displayName": "Phish Detections by Detection technology", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject172')._huntingQuerycontentId172,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject172')._huntingQuerycontentId172,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject173').huntingQueryTemplateSpecName173]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Possible device code phishing attempts_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject173').huntingQueryVersion173]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_173", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Possible device code phishing attempts", - "category": "Hunting Queries", - "query": "let DeviceLoginUrls = pack_array(strcat(\"microsoft.\", \"com/devicelogin\"), strcat(\"login.\", \"microsoftonline.com/common/oauth2/deviceauth\"));\nlet suspiciousUserClicks = materialize(UrlClickEvents\n | where ActionType in (\"ClickAllowed\", \"UrlScanInProgress\", \"UrlErrorPage\") or IsClickedThrough != \"0\"\n | where UrlChain has_any (DeviceLoginUrls)\n | extend AccountUpn = tolower(AccountUpn)\n | project ClickTime = Timestamp, ActionType, UrlChain, NetworkMessageId, Url, AccountUpn);\n//Check for Risky Sign-In in the short time window\nlet interestedUsersUpn = suspiciousUserClicks\n | where isnotempty(AccountUpn)\n | distinct AccountUpn;\nlet suspiciousSignIns = materialize(AADSignInEventsBeta\n | where ErrorCode == 0\n | where AccountUpn in~ (interestedUsersUpn)\n | where RiskLevelDuringSignIn in (10, 50, 100)\n | extend AccountUpn = tolower(AccountUpn)\n | join kind=inner suspiciousUserClicks on AccountUpn\n | where (Timestamp - ClickTime) between (-2min .. 7min)\n | project Timestamp, ReportId, ClickTime, AccountUpn, RiskLevelDuringSignIn, SessionId, IPAddress, Url\n);\n//Validate errorCode 50199 followed by success in 5 minute time interval for the interested user, which suggests a pause to input the code from the phishing email\nlet interestedSessionUsers = suspiciousSignIns\n | where isnotempty(AccountUpn)\n | distinct AccountUpn;\nlet shortIntervalSignInAttemptUsers = materialize(AADSignInEventsBeta\n | where AccountUpn in~ (interestedSessionUsers)\n | where ErrorCode in (0, 50199)\n | summarize ErrorCodes = make_set(ErrorCode) by AccountUpn, CorrelationId, SessionId\n | where ErrorCodes has_all (0, 50199)\n | distinct AccountUpn);\nsuspiciousSignIns\n| where AccountUpn in (shortIntervalSignInAttemptUsers)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps hunting for possible device code Phishing attempts" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject173')._huntingQuerycontentId173),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 173", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject173')._huntingQuerycontentId173)]", - "contentId": "[variables('huntingQueryObject173')._huntingQuerycontentId173]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject173').huntingQueryVersion173]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject173')._huntingQuerycontentId173]", - "contentKind": "HuntingQuery", - "displayName": "Possible device code phishing attempts", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject173')._huntingQuerycontentId173,'-', '1.0.1')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject173')._huntingQuerycontentId173,'-', '1.0.1')))]", - "version": "1.0.1" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject174').huntingQueryTemplateSpecName174]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Domains sending Phish_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject174').huntingQueryVersion174]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_174", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email Top Domains sending Phish", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where EmailDirection == \"Inbound\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| extend PhishConf = tostring(parse_json(ConfidenceLevel).Phish)\n| summarize TotalEmailCount = count(), PhishEmailCount = countif(ThreatTypes has \"Phish\"), Phish_High = countif(ThreatTypes has \"Phish\" and PhishConf == \"High\"), Phish_Normal = countif(ThreatTypes has \"Phish\" and PhishConf == \"Normal\") by SenderFromDomain\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(PhishEmailCount / todouble(TotalEmailCount) * 100, 2))\n| where PhishEmailCount != 0\n| top 15 by PhishEmailCount\n| project ['Sender Domain'] = SenderFromDomain, ['Phish Emails'] = PhishEmailCount, ['Phish (High)'] = Phish_High, ['Phish (Normal)'] = Phish_Normal, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total inbound emails with Phish detections summarizing the data by the top email sender P2 domain (SenderFromDomain)." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject174')._huntingQuerycontentId174),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 174", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject174')._huntingQuerycontentId174)]", - "contentId": "[variables('huntingQueryObject174')._huntingQuerycontentId174]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject174').huntingQueryVersion174]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject174')._huntingQuerycontentId174]", - "contentKind": "HuntingQuery", - "displayName": "Email Top Domains sending Phish", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject174')._huntingQuerycontentId174,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject174')._huntingQuerycontentId174,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject175').huntingQueryTemplateSpecName175]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Users receiving Phish_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject175').huntingQueryVersion175]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_175", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top Users receiving Phish", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where EmailDirection == \"Inbound\"\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize TotalEmailCount = count(), PhishEmailCount = countif(ThreatTypes has \"Phish\") by RecipientEmailAddress\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(PhishEmailCount / todouble(TotalEmailCount) * 100, 2))\n| where PhishEmailCount != 0\n| top 15 by PhishEmailCount\n| project ['Recipient'] = RecipientEmailAddress, ['Phish Emails'] = PhishEmailCount, ['Total Inbound'] = TotalEmailCount, ['Bad Traffic %'] = Bad_Traffic_Percentage_Inbound\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total inbound emails with Phish detections summarizing the data by the top recipient email address (RecipientEmailAddress)" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject175')._huntingQuerycontentId175),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 175", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject175')._huntingQuerycontentId175)]", - "contentId": "[variables('huntingQueryObject175')._huntingQuerycontentId175]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject175').huntingQueryVersion175]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject175')._huntingQuerycontentId175]", - "contentKind": "HuntingQuery", - "displayName": "Top Users receiving Phish", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject175')._huntingQuerycontentId175,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject175')._huntingQuerycontentId175,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject176').huntingQueryTemplateSpecName176]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Zero-day Phish Detections Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject176').huntingQueryVersion176]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_176", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Zero-day Phish Detections Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents\n| where Timestamp >= TimeStart\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, \"-\", RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has \"Phish\"\n| mv-expand PhishMethod = parse_json(DetectionMethods).Phish to typeof(string)\n| where PhishMethod in ('File detonation', 'URL detonation')\n| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d by PhishMethod\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish detections over time summarizing the data daily by Phish detection technologies/controls used for detecting unknown-unique phish" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject176')._huntingQuerycontentId176),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 176", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject176')._huntingQuerycontentId176)]", - "contentId": "[variables('huntingQueryObject176')._huntingQuerycontentId176]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject176').huntingQueryVersion176]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject176')._huntingQuerycontentId176]", - "contentKind": "HuntingQuery", - "displayName": "Zero-day Phish Detections Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject176')._huntingQuerycontentId176,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject176')._huntingQuerycontentId176,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject177').huntingQueryTemplateSpecName177]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Campaign with randomly named attachments_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject177').huntingQueryVersion177]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_177", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Campaign with randomly named attachments", - "category": "Hunting Queries", - "query": "EmailAttachmentInfo\n| where Timestamp > ago(7d)\n| where FileType in (\"png\", \"jpg\", \"jpeg\", \"gif\", \"svg\")\n| where isnotempty(FileName)\n| extend firstFourFileName = substring(FileName, 0, 4)\n| summarize RecipientsCount = dcount(RecipientEmailAddress), FirstFourFilesCount = dcount(firstFourFileName), suspiciousEmails = make_set(NetworkMessageId, 10) by SenderFromAddress\n| where FirstFourFilesCount >= 10\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this detection,we hunt for emails with randomly named attachment names from the same sender to multiple recipients" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject177')._huntingQuerycontentId177),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 177", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject177')._huntingQuerycontentId177)]", - "contentId": "[variables('huntingQueryObject177')._huntingQuerycontentId177]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject177').huntingQueryVersion177]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject177')._huntingQuerycontentId177]", - "contentKind": "HuntingQuery", - "displayName": "Campaign with randomly named attachments", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject177')._huntingQuerycontentId177,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject177')._huntingQuerycontentId177,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject178').huntingQueryTemplateSpecName178]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Campaign with suspicious keywords_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject178').huntingQueryVersion178]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_178", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Campaign with suspicious keywords", - "category": "Hunting Queries", - "query": "let PhishingKeywords = ()\n{pack_array(\"account\", \"alert\", \"bank\", \"billing\", \"card\", \"change\", \"confirmation\",\"login\", \"password\", \"mfa\", \"authorize\", \"authenticate\", \"payment\", \"urgent\", \"verify\", \"blocked\");};\nEmailEvents\n| where Timestamp > ago(1d)\n| where EmailDirection == \"Inbound\"\n| where DeliveryAction == \"Delivered\"\n| where isempty(SenderObjectId)\n| where Subject has_any (PhishingKeywords())\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this detection, we track emails with suspicious keywords in subjects." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject178')._huntingQuerycontentId178),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 178", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject178')._huntingQuerycontentId178)]", - "contentId": "[variables('huntingQueryObject178')._huntingQuerycontentId178]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject178').huntingQueryVersion178]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject178')._huntingQuerycontentId178]", - "contentKind": "HuntingQuery", - "displayName": "Campaign with suspicious keywords", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject178')._huntingQuerycontentId178,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject178')._huntingQuerycontentId178,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject179').huntingQueryTemplateSpecName179]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Custom detection-Emails with QR from non-prevalent senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject179').huntingQueryVersion179]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_179", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Custom detection-Emails with QR from non-prevalent senders", - "category": "Hunting Queries", - "query": "let QRCode_emails = EmailUrlInfo\n| where Timestamp > ago (2d)\n| where UrlLocation == \"QRCode\"\n| distinct Url,NetworkMessageId;\nlet nMIDs = QRCode_emails | distinct NetworkMessageId;\n// Extracting sender of the email with QRCode:\nlet senders_NMIDs = EmailEvents\n| where Timestamp > ago (2d)\n| where DeliveryAction != \"Blocked\" // Only delivered or Junked emails are interesting\n| where isnotempty(NetworkMessageId)\n| where NetworkMessageId in (nMIDs)\n| distinct Timestamp, NetworkMessageId, RecipientEmailAddress, SenderFromAddress, InternetMessageId, RecipientObjectId, ReportId;\nlet senders = senders_NMIDs\n| distinct SenderFromAddress;\n// Checking sender prevalence in the organization\nlet senderprevalence = EmailEvents\n| where Timestamp between (ago(14d)..(now()-24h))\n| where isnotempty(SenderFromAddress)\n| where SenderFromAddress in (senders)\n| summarize TotalEmailCount = count() by SenderFromAddress\n| where TotalEmailCount > 1;\nlet prevalent_Sender = senderprevalence\n| where isnotempty (SenderFromAddress)\n| distinct SenderFromAddress;\n// Checking where email sender was not prevalent.\nlet nMIDs_from_non_prevalent_Senders = senders_NMIDs\n| where SenderFromAddress !in (prevalent_Sender)\n| distinct NetworkMessageId;\nlet QRCode_emails_from_non_prevalent_senders = QRCode_emails\n| where NetworkMessageId in (nMIDs_from_non_prevalent_Senders)\n| join kind=inner senders_NMIDs on NetworkMessageId\n| project Timestamp,Url,NetworkMessageId, InternetMessageId, RecipientObjectId,RecipientEmailAddress, ReportId;\nQRCode_emails_from_non_prevalent_senders\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this detection, we check the sender prevalence over the last 14 days and use the same to detect malicious activity via email containing QR code" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject179')._huntingQuerycontentId179),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 179", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject179')._huntingQuerycontentId179)]", - "contentId": "[variables('huntingQueryObject179')._huntingQuerycontentId179]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject179').huntingQueryVersion179]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject179')._huntingQuerycontentId179]", - "contentKind": "HuntingQuery", - "displayName": "Custom detection-Emails with QR from non-prevalent senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject179')._huntingQuerycontentId179,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject179')._huntingQuerycontentId179,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject180').huntingQueryTemplateSpecName180]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Emails delivered having URLs from QR codes_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject180').huntingQueryVersion180]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_180", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Emails delivered having URLs from QR codes", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where EmailDirection == \"Inbound\"\n| where DeliveryAction == \"Delivered\"\n| join EmailUrlInfo on NetworkMessageId\n| where UrlLocation == \"QRCode\"\n| project Timestamp, NetworkMessageId, SenderFromAddress, Subject, Url, UrlDomain, UrlLocation,RecipientEmailAddress\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this query, we hunt for inbound emails delivered having URLs from QR codes" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject180')._huntingQuerycontentId180),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 180", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject180')._huntingQuerycontentId180)]", - "contentId": "[variables('huntingQueryObject180')._huntingQuerycontentId180]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject180').huntingQueryVersion180]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject180')._huntingQuerycontentId180]", - "contentKind": "HuntingQuery", - "displayName": "Emails delivered having URLs from QR codes", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject180')._huntingQuerycontentId180,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject180')._huntingQuerycontentId180,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject181').huntingQueryTemplateSpecName181]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Emails with QR codes and suspicious keywords in subject_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject181').huntingQueryVersion181]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_181", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Emails with QR codes and suspicious keywords in subject", - "category": "Hunting Queries", - "query": "let SubjectKeywords = ()\n{pack_array(\"authorize\", \"authenticate\", \"account\", \"confirmation\", \"QR\", \"login\", \"password\", \"payment\", \"urgent\", \"verify\");};\nEmailEvents\n| where Timestamp > ago(30d)\n| where EmailDirection == \"Inbound\"\n| where DeliveryAction == \"Delivered\"\n| where Subject has_any (SubjectKeywords)\n| join EmailUrlInfo on NetworkMessageId\n| where UrlLocation == \"QRCode\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this query, we hunt for inbound emails having URLs from QR codes and suspicious keywords in subject" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject181')._huntingQuerycontentId181),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 181", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject181')._huntingQuerycontentId181)]", - "contentId": "[variables('huntingQueryObject181')._huntingQuerycontentId181]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject181').huntingQueryVersion181]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject181')._huntingQuerycontentId181]", - "contentKind": "HuntingQuery", - "displayName": "Emails with QR codes and suspicious keywords in subject", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject181')._huntingQuerycontentId181,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject181')._huntingQuerycontentId181,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject182').huntingQueryTemplateSpecName182]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Emails with QR codes from non-prevalent sender_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject182').huntingQueryVersion182]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_182", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Emails with QR codes from non-prevalent sender", - "category": "Hunting Queries", - "query": "let senderprevalence =\nEmailEvents\n| where Timestamp between (ago(7d)..(now()-24h))\n| where isnotempty(SenderFromAddress)\n| summarize TotalEmailCount = dcount(NetworkMessageId) by SenderFromAddress\n| where TotalEmailCount > 1;\nlet prevalent_Sender = senderprevalence\n| where isnotempty (SenderFromAddress)\n| distinct SenderFromAddress;\nlet QR_from_non_prevalent =\nEmailEvents\n| where EmailDirection == \"Inbound\"\n| where Timestamp > ago(1d)\n| where SenderFromAddress !in (prevalent_Sender)\n| join EmailUrlInfo on NetworkMessageId\n| where UrlLocation == \"QRCode\"\n| distinct SenderFromAddress,Url,NetworkMessageId;\nQR_from_non_prevalent\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this query, we hunt for inbound emails having URLs from QR codes and send by non-prevalent senders" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject182')._huntingQuerycontentId182),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 182", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject182')._huntingQuerycontentId182)]", - "contentId": "[variables('huntingQueryObject182')._huntingQuerycontentId182]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject182').huntingQueryVersion182]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject182')._huntingQuerycontentId182]", - "contentKind": "HuntingQuery", - "displayName": "Emails with QR codes from non-prevalent sender", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject182')._huntingQuerycontentId182,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject182')._huntingQuerycontentId182,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject183').huntingQueryTemplateSpecName183]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Hunting for sender patterns_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject183').huntingQueryVersion183]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_183", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Hunting for sender patterns", - "category": "Hunting Queries", - "query": "let PhishingSenderDisplayNames = ()\n{\npack_array(\"IT\", \"support\", \"Payroll\", \"HR\", \"admin\", \"2FA\", \"notification\", \"sign\", \"reminder\", \"consent\", \"workplace\",\n\"administrator\", \"administration\", \"benefits\", \"employee\", \"update\", \"on behalf\");\n};\nlet suspiciousEmails = EmailEvents\n| where Timestamp > ago(1d)\n| where isnotempty(RecipientObjectId)\n| where isnotempty(SenderFromAddress)\n| where EmailDirection == \"Inbound\"\n| where DeliveryAction == \"Delivered\"\n| join kind=inner (EmailAttachmentInfo\n| where Timestamp > ago(1d)\n| where isempty(SenderObjectId)\n| where FileType has_any (\"png\", \"jpg\", \"jpeg\", \"bmp\", \"gif\")\n ) on NetworkMessageId\n| where SenderDisplayName has_any (PhishingSenderDisplayNames())\n| project Timestamp, Subject, FileName, SenderFromDomain, RecipientObjectId, NetworkMessageId;\nlet suspiciousSenders = suspiciousEmails | distinct SenderFromDomain;\nlet prevalentSenders = materialize(EmailEvents\n| where Timestamp between (ago(7d) .. ago(1d))\n| where isnotempty(RecipientObjectId)\n| where isnotempty(SenderFromAddress)\n| where SenderFromDomain in (suspiciousSenders)\n| where EmailDirection == \"Inbound\"\n| where DeliveryAction == \"Delivered\"\n| distinct SenderFromDomain);\nsuspiciousEmails\n| where SenderFromDomain !in (prevalentSenders)\n| project Timestamp, Subject, FileName, SenderFromDomain, RecipientObjectId, NetworkMessageId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this detection approach, we correlate email from non-prevalent senders in the organization with impersonation intents" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject183')._huntingQuerycontentId183),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 183", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject183')._huntingQuerycontentId183)]", - "contentId": "[variables('huntingQueryObject183')._huntingQuerycontentId183]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject183').huntingQueryVersion183]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject183')._huntingQuerycontentId183]", - "contentKind": "HuntingQuery", - "displayName": "Hunting for sender patterns", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject183')._huntingQuerycontentId183,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject183')._huntingQuerycontentId183,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject184').huntingQueryTemplateSpecName184]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Hunting for user signals-clusters_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject184').huntingQueryVersion184]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_184", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Hunting for user signals-clusters", - "category": "Hunting Queries", - "query": "let suspiciousClusters = EmailEvents\n| where Timestamp > ago(7d)\n| where EmailDirection == \"Inbound\"\n| where NetworkMessageId in (\"5ff15b1f-d731-4625-4c1c-08dc8615943f\",\"00ff0916-1263-428c-a558-08dc86a6d3cd\") //\n| distinct EmailClusterId;\nEmailEvents\n| where Timestamp > ago(7d)\n| where EmailDirection == \"Inbound\"\n| where EmailClusterId in (suspiciousClusters)\n| summarize make_set(Subject), make_set(SenderFromDomain), dcount(RecipientObjectId),dcount(SenderDisplayName) by EmailClusterId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this detection,we use Email reported by user as malware or phish MDO alert as a starting point to identify the scope of a campaign." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject184')._huntingQuerycontentId184),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 184", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject184')._huntingQuerycontentId184)]", - "contentId": "[variables('huntingQueryObject184')._huntingQuerycontentId184]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject184').huntingQueryVersion184]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject184')._huntingQuerycontentId184]", - "contentKind": "HuntingQuery", - "displayName": "Hunting for user signals-clusters", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject184')._huntingQuerycontentId184,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject184')._huntingQuerycontentId184,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject185').huntingQueryTemplateSpecName185]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Inbound emails with QR code URLs_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject185').huntingQueryVersion185]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_185", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Inbound emails with QR code URLs", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where EmailDirection == \"Inbound\"\n| join EmailUrlInfo on NetworkMessageId\n| where UrlLocation == \"QRCode\"\n| summarize dcount(NetworkMessageId) by bin(Timestamp, 1d)\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this query, we summarize volume of inbound emails with QR code URLs in last 30 days" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject185')._huntingQuerycontentId185),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 185", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject185')._huntingQuerycontentId185)]", - "contentId": "[variables('huntingQueryObject185')._huntingQuerycontentId185]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject185').huntingQueryVersion185]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject185')._huntingQuerycontentId185]", - "contentKind": "HuntingQuery", - "displayName": "Inbound emails with QR code URLs", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject185')._huntingQuerycontentId185,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject185')._huntingQuerycontentId185,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject186').huntingQueryTemplateSpecName186]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Personalized campaigns based on the first few keywords_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject186').huntingQueryVersion186]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_186", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Personalized campaigns based on the first few keywords", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(1d)\n| where EmailDirection == \"Inbound\"\n| where DeliveryAction == \"Delivered\"\n| where isempty(SenderObjectId)\n| extend words = split(Subject,\" \")\n| project firstWord = tostring(words[0]), secondWord = tostring(words[1]), thirdWord = tostring(words[2]), Subject, SenderFromAddress, RecipientEmailAddress, NetworkMessageId\n| summarize SubjectsCount = dcount(Subject), RecipientsCount = dcount(RecipientEmailAddress), suspiciousEmails = make_set(NetworkMessageId, 10) by firstWord, secondWord, thirdWord, SenderFromAddress\n| where SubjectsCount >= 10\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this detection, we track emails with personalized subjects." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject186')._huntingQuerycontentId186),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 186", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject186')._huntingQuerycontentId186)]", - "contentId": "[variables('huntingQueryObject186')._huntingQuerycontentId186]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject186').huntingQueryVersion186]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject186')._huntingQuerycontentId186]", - "contentKind": "HuntingQuery", - "displayName": "Personalized campaigns based on the first few keywords", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject186')._huntingQuerycontentId186,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject186')._huntingQuerycontentId186,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject187').huntingQueryTemplateSpecName187]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Personalized campaigns based on the last few keywords_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject187').huntingQueryVersion187]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_187", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Personalized campaigns based on the last few keywords", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(1d)\n| where EmailDirection == \"Inbound\"\n| where DeliveryAction == \"Delivered\"\n| where isempty(SenderObjectId)\n| extend words = split(Subject,\" \")\n| project firstLastWord = tostring(words[-1]), secondLastWord = tostring(words[-2]), thirdLastWord = tostring(words[-3]), Subject, SenderFromAddress, RecipientEmailAddress, NetworkMessageId\n| summarize SubjectsCount = dcount(Subject), RecipientsCount = dcount(RecipientEmailAddress), suspiciousEmails = make_set(NetworkMessageId, 10) by firstLastWord, secondLastWord, thirdLastWord, SenderFromAddress\n| where SubjectsCount >= 10\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this detection, we track emails with personalized subjects." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject187')._huntingQuerycontentId187),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 187", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject187')._huntingQuerycontentId187)]", - "contentId": "[variables('huntingQueryObject187')._huntingQuerycontentId187]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject187').huntingQueryVersion187]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject187')._huntingQuerycontentId187]", - "contentKind": "HuntingQuery", - "displayName": "Personalized campaigns based on the last few keywords", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject187')._huntingQuerycontentId187,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject187')._huntingQuerycontentId187,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject188').huntingQueryTemplateSpecName188]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Risky sign-in attempt from a non-managed device_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject188').huntingQueryVersion188]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_188", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Risky sign-in attempt from a non-managed device", - "category": "Hunting Queries", - "query": "AADSignInEventsBeta\n| where Timestamp > ago(7d)\n| where IsManaged != 1\n| where IsCompliant != 1\n//Filtering only for medium and high risk sign-in\n| where RiskLevelDuringSignIn in (50, 100)\n| where ClientAppUsed == \"Browser\"\n| where isempty(DeviceTrustType)\n| where isnotempty(State) or isnotempty(Country) or isnotempty(City)\n| where isnotempty(IPAddress)\n| where isnotempty(AccountObjectId)\n| where isempty(DeviceName)\n| where isempty(AadDeviceId)\n| project Timestamp,IPAddress, AccountObjectId, ApplicationId, SessionId, RiskLevelDuringSignIn\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this detection,we hunt for any sign-in attempt from a non-managed, non-compliant, untrusted device." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject188')._huntingQuerycontentId188),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 188", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject188')._huntingQuerycontentId188)]", - "contentId": "[variables('huntingQueryObject188')._huntingQuerycontentId188]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject188').huntingQueryVersion188]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject188')._huntingQuerycontentId188]", - "contentKind": "HuntingQuery", - "displayName": "Risky sign-in attempt from a non-managed device", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject188')._huntingQuerycontentId188,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject188')._huntingQuerycontentId188,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject189').huntingQueryTemplateSpecName189]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Suspicious sign-in attempts from QR code phishing campaigns_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject189').huntingQueryVersion189]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_189", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Suspicious sign-in attempts from QR code phishing campaigns", - "category": "Hunting Queries", - "query": "let successfulRiskySignIn = materialize(AADSignInEventsBeta\n| where Timestamp > ago(1d)\n| where isempty(DeviceTrustType)\n| where IsManaged != 1\n| where IsCompliant != 1\n| where RiskLevelDuringSignIn in (50, 100)\n| project Timestamp, ReportId, IPAddress, AccountUpn, AccountObjectId, SessionId, Country, State, City\n);\nlet suspiciousSignInUsers = successfulRiskySignIn\n| distinct AccountObjectId;\nlet suspiciousSignInIPs = successfulRiskySignIn\n| distinct IPAddress;\nlet suspiciousSignInCities = successfulRiskySignIn\n| distinct City;\nCloudAppEvents\n| where Timestamp > ago(1d)\n| where ActionType == \"MailItemsAccessed\"\n| where AccountObjectId in (suspiciousSignInUsers)\n| where IPAddress !in (suspiciousSignInIPs)\n| where City !in (suspiciousSignInCities)\n| join kind=inner successfulRiskySignIn on AccountObjectId\n| where AccountObjectId in (suspiciousSignInUsers)\n| where (Timestamp - Timestamp1) between (-5min .. 5min)\n| extend folders = RawEventData.Folders\n| mv-expand folders\n| extend items = folders.FolderItems\n| mv-expand items\n| extend InternetMessageId = tostring(items.InternetMessageId)\n| project Timestamp, ReportId, IPAddress, InternetMessageId, AccountObjectId, SessionId, Country, State, City\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This detection approach correlates a user accessing an email with image/document attachments and a risky sign-in attempt from non-trusted devices." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject189')._huntingQuerycontentId189),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 189", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject189')._huntingQuerycontentId189)]", - "contentId": "[variables('huntingQueryObject189')._huntingQuerycontentId189]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject189').huntingQueryVersion189]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject189')._huntingQuerycontentId189]", - "contentKind": "HuntingQuery", - "displayName": "Suspicious sign-in attempts from QR code phishing campaigns", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject189')._huntingQuerycontentId189,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject189')._huntingQuerycontentId189,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject190').huntingQueryTemplateSpecName190]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Group quarantine release_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject190').huntingQueryVersion190]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_190", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Group quarantine release", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType == \"QuarantineReleaseMessage\"\n| extend parsed=parse_json(RawEventData)\n| extend NetworkMessageId = tostring(parsed.NetworkMessageId)\n| join EmailEvents on NetworkMessageId\n| summarize count() by DetectionMethods\n| order by count_ desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps in reviewing group Quarantine released messages by detection type. Useful to see what is leading to the largest number of messages being released." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject190')._huntingQuerycontentId190),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 190", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject190')._huntingQuerycontentId190)]", - "contentId": "[variables('huntingQueryObject190')._huntingQuerycontentId190]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject190').huntingQueryVersion190]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject190')._huntingQuerycontentId190]", - "contentKind": "HuntingQuery", - "displayName": "Group quarantine release", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject190')._huntingQuerycontentId190,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject190')._huntingQuerycontentId190,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject191').huntingQueryTemplateSpecName191]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "High Confidence Phish Released_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject191').huntingQueryVersion191]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_191", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "High Confidence Phish Released", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType == \"QuarantineReleaseMessage\"\n| project ReleaseTime = Timestamp, ResultStatus = RawEventData.ResultStatus, ActionType, ReleasedBy = tostring(RawEventData.UserId), NetworkMessageId = tostring(RawEventData.NetworkMessageId), ReleaseTo = RawEventData.ReleaseTo\n| join kind=inner (\n EmailEvents\n | where todynamic(ConfidenceLevel).Phish == \"High\"\n | project-rename EmailTime = Timestamp\n ) on NetworkMessageId\n| project-away NetworkMessageId1\n| order by ReleaseTime asc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query shows information about high confidence phish email that has been released from the Quarantine." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject191')._huntingQuerycontentId191),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 191", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject191')._huntingQuerycontentId191)]", - "contentId": "[variables('huntingQueryObject191')._huntingQuerycontentId191]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject191').huntingQueryVersion191]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject191')._huntingQuerycontentId191]", - "contentKind": "HuntingQuery", - "displayName": "High Confidence Phish Released", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject191')._huntingQuerycontentId191,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject191')._huntingQuerycontentId191,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject192').huntingQueryTemplateSpecName192]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Quarantine Phish reason trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject192').huntingQueryVersion192]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_192", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Quarantine Phish Reason trend", - "category": "Hunting Queries", - "query": "let minTime = startofday(ago(30d));\nlet maxTime = startofday(now());\nEmailEvents\n| where Timestamp >= minTime\n| where EmailDirection == \"Inbound\" and DetectionMethods has \"Phish\" and DeliveryLocation == \"Quarantine\"\n| mv-expand Details = parse_json(DetectionMethods).Phish to typeof(string)\n| where isnotempty(Details)\n| where Timestamp < maxTime\n| make-series Count = count() default = 0 on Timestamp from minTime to maxTime step 1d by Details\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the amount of phish emails that are quarantined, summarized daily by the detection method" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject192')._huntingQuerycontentId192),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 192", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject192')._huntingQuerycontentId192)]", - "contentId": "[variables('huntingQueryObject192')._huntingQuerycontentId192]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject192').huntingQueryVersion192]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject192')._huntingQuerycontentId192]", - "contentKind": "HuntingQuery", - "displayName": "Quarantine Phish Reason trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject192')._huntingQuerycontentId192,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject192')._huntingQuerycontentId192,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject193').huntingQueryTemplateSpecName193]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Quarantine Phish reason_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject193').huntingQueryVersion193]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_193", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Quarantine Phish Reason", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where EmailDirection == \"Inbound\" and DetectionMethods has 'Phish' and DeliveryLocation == \"Quarantine\"\n| mv-expand Phish = parse_json(DetectionMethods).Phish to typeof(string)\n| where isnotempty(Phish)\n| summarize count() by Phish\n| sort by count_ desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total amount of phish emails that are quarantined, summarized by the detection method" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject193')._huntingQuerycontentId193),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 193", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject193')._huntingQuerycontentId193)]", - "contentId": "[variables('huntingQueryObject193')._huntingQuerycontentId193]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject193').huntingQueryVersion193]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject193')._huntingQuerycontentId193]", - "contentKind": "HuntingQuery", - "displayName": "Quarantine Phish Reason", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject193')._huntingQuerycontentId193,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject193')._huntingQuerycontentId193,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject194').huntingQueryTemplateSpecName194]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Quarantine Release Email Details_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject194').huntingQueryVersion194]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_194", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Quarantine Release Email Details", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType == \"QuarantineReleaseMessage\"\n| project ReleaseTime = Timestamp, ResultStatus = RawEventData.ResultStatus, ActionType, ReleasedBy = tostring(RawEventData.UserId), NetworkMessageId = tostring(RawEventData.NetworkMessageId), ReleaseTo = RawEventData.ReleaseTo\n| join kind=inner (\n EmailEvents\n | project-rename EmailTime = Timestamp\n ) on NetworkMessageId\n| project-away NetworkMessageId1\n| order by ReleaseTime asc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query shows information about email that has been released from the Quarantine in Defender for Office 365." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject194')._huntingQuerycontentId194),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 194", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject194')._huntingQuerycontentId194)]", - "contentId": "[variables('huntingQueryObject194')._huntingQuerycontentId194]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject194').huntingQueryVersion194]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject194')._huntingQuerycontentId194]", - "contentKind": "HuntingQuery", - "displayName": "Quarantine Release Email Details", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject194')._huntingQuerycontentId194,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject194')._huntingQuerycontentId194,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject195').huntingQueryTemplateSpecName195]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Quarantine release trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject195').huntingQueryVersion195]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_195", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Quarantine release trend", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"QuarantineReleaseMessage\"\n| summarize count() by bin(Timestamp, 1d)\n| project-rename Releases = count_\n| render timechart with (title=\"Quarantine Releases by Day\")\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing quarantine release trend in Defender for Office 365" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject195')._huntingQuerycontentId195),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 195", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject195')._huntingQuerycontentId195)]", - "contentId": "[variables('huntingQueryObject195')._huntingQuerycontentId195]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject195').huntingQueryVersion195]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject195')._huntingQuerycontentId195]", - "contentKind": "HuntingQuery", - "displayName": "Quarantine release trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject195')._huntingQuerycontentId195,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject195')._huntingQuerycontentId195,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject196').huntingQueryTemplateSpecName196]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Quarantine releases by Detection types_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject196').huntingQueryVersion196]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_196", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Quarantine releases by Detection Types", - "category": "Hunting Queries", - "query": "let totalQuery = EmailPostDeliveryEvents\n| where Action == \"Quarantine release\"\n| join kind=inner (EmailEvents | where DeliveryLocation == \"Quarantine\") on NetworkMessageId\n| extend MDO_detection = parse_json(DetectionMethods1)\n| extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0]))\n| extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\")\n| where FirstSubcategory contains \"Malware\" or FirstSubcategory contains \"Phish\" or FirstSubcategory contains \"Spam\"\n| count;\nEmailPostDeliveryEvents\n| where Action == \"Quarantine release\"\n| join kind=inner (EmailEvents | where DeliveryLocation == \"Quarantine\") on NetworkMessageId\n| extend MDO_detection = parse_json(DetectionMethods1)\n| extend FirstDetection = iif(isempty(MDO_detection), \"Clean\", tostring(bag_keys(MDO_detection)[0]))\n| extend FirstSubcategory = iif(FirstDetection != \"Clean\" and array_length(MDO_detection[FirstDetection]) > 0, strcat(FirstDetection, \": \", tostring(MDO_detection[FirstDetection][0])), \"No Detection (clean)\")\n| where FirstSubcategory contains \"Malware\" or FirstSubcategory contains \"Phish\" or FirstSubcategory contains \"Spam\"\n| summarize count_messages = count() by FirstSubcategory\n| project FirstSubcategory, count_messages\n| order by count_messages desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails released from quarantine and summarizing the result by the original filter verdict" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject196')._huntingQuerycontentId196),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 196", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject196')._huntingQuerycontentId196)]", - "contentId": "[variables('huntingQueryObject196')._huntingQuerycontentId196]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject196').huntingQueryVersion196]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject196')._huntingQuerycontentId196]", - "contentKind": "HuntingQuery", - "displayName": "Quarantine releases by Detection Types", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject196')._huntingQuerycontentId196,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject196')._huntingQuerycontentId196,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject197').huntingQueryTemplateSpecName197]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Quarantine Spam reason trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject197').huntingQueryVersion197]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_197", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Quarantine Spam Reason trend", - "category": "Hunting Queries", - "query": "let minTime = startofday(ago(30d));\nlet maxTime = startofday(now());\nEmailEvents\n| where Timestamp >= minTime\n| where EmailDirection == \"Inbound\" and DetectionMethods has \"Spam\" and DeliveryLocation == \"Quarantine\"\n| mv-expand Details = parse_json(DetectionMethods).Spam to typeof(string)\n| where isnotempty(Details)\n| where Timestamp < maxTime\n| make-series Count = count() default = 0 on Timestamp from minTime to maxTime step 1d by Details\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the amount of spam emails that are quarantined, summarized daily by the detection method" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject197')._huntingQuerycontentId197),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 197", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject197')._huntingQuerycontentId197)]", - "contentId": "[variables('huntingQueryObject197')._huntingQuerycontentId197]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject197').huntingQueryVersion197]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject197')._huntingQuerycontentId197]", - "contentKind": "HuntingQuery", - "displayName": "Quarantine Spam Reason trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject197')._huntingQuerycontentId197,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject197')._huntingQuerycontentId197,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject198').huntingQueryTemplateSpecName198]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Quarantine Spam reason_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject198').huntingQueryVersion198]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_198", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Quarantine Spam Reason", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where EmailDirection == \"Inbound\" and DetectionMethods has 'Spam' and DeliveryLocation == \"Quarantine\"\n| mv-expand Spam = parse_json(DetectionMethods).Spam to typeof(string)\n| where isnotempty(Spam)\n| summarize count() by Spam\n| sort by count_ desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total amount of spam emails that are quarantined, summarized by the detection method" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject198')._huntingQuerycontentId198),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 198", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject198')._huntingQuerycontentId198)]", - "contentId": "[variables('huntingQueryObject198')._huntingQuerycontentId198]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject198').huntingQueryVersion198]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject198')._huntingQuerycontentId198]", - "contentKind": "HuntingQuery", - "displayName": "Quarantine Spam Reason", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject198')._huntingQuerycontentId198,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject198')._huntingQuerycontentId198,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject199').huntingQueryTemplateSpecName199]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "AIR investigation actions insight_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject199').huntingQueryVersion199]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_199", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "AIR investigation actions insight", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AirInvestigationData\"\n| project Timestamp, RawEventData\n| extend EventData = parse_json(RawEventData)\n| extend Data = parse_json(tostring(EventData.Data))\n| extend InvestigationType = EventData.InvestigationType\n| extend InvestigationId = RawEventData.InvestigationId\n| extend Status = tostring(Data.Status)\n| where Status == \"Resolved\"\n| extend ActionRaw = parse_json(tostring(EventData.Actions))\n| mv-expand ActionRaw\n| extend Action = parse_json(tostring(ActionRaw))\n| extend ActionType=Action.ActionType, ActionApproval=Action.ActionApproval, ApprovedBy=Action.ApprovedBy, ApproverComment=Action.ApproverComment, ActionStatus=Action.ActionStatus\n| mv-expand Action.Entities\n| extend EntityQuery = Action_Entities.Query\n| mv-expand Action_Entities.Urls, Action_Entities.NetworkMessageIds\n| sort by Timestamp\n| project Timestamp, InvestigationType, InvestigationId, ActionType, ActionApproval, ApprovedBy, ApproverComment, ActionStatus, EntityQuery, Action_Entities_Urls, Action_Entities_NetworkMessageIds\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query provides insights into AIR investigation actions in Microsoft Defender for Office 365." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject199')._huntingQuerycontentId199),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 199", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject199')._huntingQuerycontentId199)]", - "contentId": "[variables('huntingQueryObject199')._huntingQuerycontentId199]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject199').huntingQueryVersion199]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject199')._huntingQuerycontentId199]", - "contentKind": "HuntingQuery", - "displayName": "AIR investigation actions insight", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject199')._huntingQuerycontentId199,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject199')._huntingQuerycontentId199,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject200').huntingQueryTemplateSpecName200]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Email remediation action list_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject200').huntingQueryVersion200]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_200", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Listing Email Remediation Actions via Explorer", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where LatestDeliveryAction in (\"Hard delete\", \"Soft delete\", \"Moved to junk folder\", \"Moved to deleted items\")\n| summarize HardDelete_NetworkID = make_list_if(strcat(NetworkMessageId, @\"\\\", Timestamp,@\"\\\", Subject), LatestDeliveryAction == \"Hard delete\"), \n SoftDelete_NetworkID = make_list_if(strcat(NetworkMessageId, @\"\\\", Timestamp,@\"\\\", Subject), LatestDeliveryAction == \"Soft delete\"),\n MoveToJunk_NetworkID = make_list_if(strcat(NetworkMessageId, @\"\\\", Timestamp,@\"\\\", Subject), LatestDeliveryAction == \"Moved to junk folder\"),\n MoveToDelete_NetworkID = make_list_if(strcat(NetworkMessageId, @\"\\\", Timestamp,@\"\\\", Subject), LatestDeliveryAction == \"Moved to deleted items\") by RecipientEmailAddress\n| extend HardDelete_case = array_length(HardDelete_NetworkID)\n| extend SoftDelete_case = array_length(SoftDelete_NetworkID)\n| extend MoveToJunk_case = array_length(MoveToJunk_NetworkID)\n| extend MoveToDelete_case = array_length(MoveToDelete_NetworkID)\n| extend Sum_case = HardDelete_case + SoftDelete_case + MoveToJunk_case + MoveToDelete_case\n| project RecipientEmailAddress, Sum_case, HardDelete_case, SoftDelete_case, MoveToJunk_case, MoveToDelete_case, HardDelete_NetworkID, SoftDelete_NetworkID, MoveToJunk_NetworkID, MoveToDelete_NetworkID\n| order by Sum_case desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Listing Email Remediation Actions performed via Explorer in Defender for Office 365" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject200')._huntingQuerycontentId200),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 200", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject200')._huntingQuerycontentId200)]", - "contentId": "[variables('huntingQueryObject200')._huntingQuerycontentId200]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject200').huntingQueryVersion200]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject200')._huntingQuerycontentId200]", - "contentKind": "HuntingQuery", - "displayName": "Listing Email Remediation Actions via Explorer", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject200')._huntingQuerycontentId200,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject200')._huntingQuerycontentId200,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject201').huntingQueryTemplateSpecName201]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Bulk Detection Top10 Domains_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject201').huntingQueryVersion201]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_201", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 domains sending Bulk email", - "category": "Hunting Queries", - "query": "//This query visualises total inbound emails which has any Bulk complaint level. It is summarizing the data by the various Bulk Complaint levels and SenderFromDomain of the email sender. It provides insights how many messages are detected with each Bulk Complaint level for each sender domain.\nEmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where EmailDirection == \"Inbound\" and isnotempty(BulkComplaintLevel)\n| summarize count() by BulkComplaintLevel, SenderFromDomain\n| top 10 by count_\n| project SenderFromDomain, BulkComplaintLevel, Emails = count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total inbound emails which has any Bulk complaint level." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject201')._huntingQuerycontentId201),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 201", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject201')._huntingQuerycontentId201)]", - "contentId": "[variables('huntingQueryObject201')._huntingQuerycontentId201]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject201').huntingQueryVersion201]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject201')._huntingQuerycontentId201]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 domains sending Bulk email", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject201')._huntingQuerycontentId201,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject201')._huntingQuerycontentId201,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject202').huntingQueryTemplateSpecName202]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detection Delivery Location_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject202').huntingQueryVersion202]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_202", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spam detection by delivery location", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where DetectionMethods has \"Spam\" and EmailDirection == \"Inbound\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| make-series TotalSpamDetections=count(),Quarantine = countif(DeliveryLocation == \"Quarantine\"),Junkfolder=countif(DeliveryLocation == \"Junk folder\"),Inbox=countif(DeliveryLocation == \"Inbox/folder\"),Failed=countif(DeliveryLocation == \"Failed\"),Dropped=countif(DeliveryLocation == \"Dropped\") default = 0 on Timestamp step 1d\n// | render timechart // Uncomment this line to render as a graph\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spam detections over time summarizing the data daily by Delivery Location." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject202')._huntingQuerycontentId202),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 202", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject202')._huntingQuerycontentId202)]", - "contentId": "[variables('huntingQueryObject202')._huntingQuerycontentId202]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject202').huntingQueryVersion202]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject202')._huntingQuerycontentId202]", - "contentKind": "HuntingQuery", - "displayName": "Spam detection by delivery location", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject202')._huntingQuerycontentId202,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject202')._huntingQuerycontentId202,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject203').huntingQueryTemplateSpecName203]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detection IP and Geo Position_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject203').huntingQueryVersion203]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_203", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spam detection by IP and its location", - "category": "Hunting Queries", - "query": "//This query visualises total emails with Spam detections summarizing the data by email sender IP address (SenderIPv4, SenderIPv6).\nlet ipv4position = EmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ThreatTypes has \"Spam\" and SenderIPv4 != \"\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize count() by SenderIPv4\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv4)\n| extend Latitude = tostring(GeoInfo.latitude), Longitude = tostring(GeoInfo.longitude), Country = tostring(GeoInfo.country)\n| project SenderIPv4, Country, Latitude, Longitude, count_;\nlet ipv6position = EmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ThreatTypes has \"Spam\" and SenderIPv6 != \"\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize count() by SenderIPv6\n| extend GeoInfo = geo_info_from_ip_address(SenderIPv6)\n| extend Latitude = tostring(GeoInfo.latitude), Longitude = tostring(GeoInfo.longitude), Country = tostring(GeoInfo.country)\n| project SenderIPv6, Country, Latitude, Longitude, count_;\nipv4position\n| union ipv6position\n| project SenderIPv6, SenderIPv4, Country, Latitude, Longitude, count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spam detections summarizing the data by email sender IP address (SenderIPv4, SenderIPv6)." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject203')._huntingQuerycontentId203),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 203", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject203')._huntingQuerycontentId203)]", - "contentId": "[variables('huntingQueryObject203')._huntingQuerycontentId203]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject203').huntingQueryVersion203]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject203')._huntingQuerycontentId203]", - "contentKind": "HuntingQuery", - "displayName": "Spam detection by IP and its location", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject203')._huntingQuerycontentId203,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject203')._huntingQuerycontentId203,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject204').huntingQueryTemplateSpecName204]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detection Mails with BCL_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject204').huntingQueryVersion204]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_204", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Bulk Emails by Sender Bulk Complaint level", - "category": "Hunting Queries", - "query": "//This query visualises total inbound emails which has any Bulk complaint level. It is summarizing the data by the various Bulk Complaint levels to understand how many messages are detected with each Bulk Complaint level.\nEmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where EmailDirection == \"Inbound\" and isnotempty(BulkComplaintLevel)\n| summarize count() by BulkComplaintLevel\n| sort by BulkComplaintLevel desc\n| project BulkComplaintLevel, Emails = count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total inbound emails which has any Bulk complaint level." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject204')._huntingQuerycontentId204),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 204", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject204')._huntingQuerycontentId204)]", - "contentId": "[variables('huntingQueryObject204')._huntingQuerycontentId204]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject204').huntingQueryVersion204]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject204')._huntingQuerycontentId204]", - "contentKind": "HuntingQuery", - "displayName": "Bulk Emails by Sender Bulk Complaint level", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject204')._huntingQuerycontentId204,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject204')._huntingQuerycontentId204,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject205').huntingQueryTemplateSpecName205]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detection Tech_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject205').huntingQueryVersion205]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_205", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spam detection technologies", - "category": "Hunting Queries", - "query": "//This query visualises total emails with Spam detections summarizing the data by various Spam detection technologies/controls in Microsoft Defender for Office 365.\nEmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where DetectionMethods has 'Spam'\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| project Timestamp, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) | summarize count() by Spam=tostring(column_ifexists('Spam', ''))\n| sort by count_\n// | render piechart // Uncomment this line to render as a graph\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spam detections summarizing the data by various Spam detection technologies/controls." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject205')._huntingQuerycontentId205),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 205", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject205')._huntingQuerycontentId205)]", - "contentId": "[variables('huntingQueryObject205')._huntingQuerycontentId205]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject205').huntingQueryVersion205]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject205')._huntingQuerycontentId205]", - "contentKind": "HuntingQuery", - "displayName": "Spam detection technologies", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject205')._huntingQuerycontentId205,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject205')._huntingQuerycontentId205,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject206').huntingQueryTemplateSpecName206]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detection Top10 Domains_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject206').huntingQueryVersion206]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_206", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email Top 10 Domains sending Spam", - "category": "Hunting Queries", - "query": "//This query visualises total inbound emails with Spam detections summarizing the data by the top 10 email sender P2 domain (SenderFromDomain).\nEmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where EmailDirection == \"Inbound\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize TotalEmailCount = count(), SpamEmailCount = countif(ThreatTypes has \"Spam\") by SenderFromDomain\n| extend Bad_Traffic_Percentage_Inbound = round(100.0 * SpamEmailCount / TotalEmailCount, 2)\n| where SpamEmailCount != 0\n| top 10 by SpamEmailCount\n| project SenderFromDomain, SpamEmailCount, TotalEmailCount, Bad_Traffic_Percentage_Inbound\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total inbound emails with Spam detections." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject206')._huntingQuerycontentId206),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 206", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject206')._huntingQuerycontentId206)]", - "contentId": "[variables('huntingQueryObject206')._huntingQuerycontentId206]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject206').huntingQueryVersion206]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject206')._huntingQuerycontentId206]", - "contentKind": "HuntingQuery", - "displayName": "Email Top 10 Domains sending Spam", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject206')._huntingQuerycontentId206,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject206')._huntingQuerycontentId206,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject207').huntingQueryTemplateSpecName207]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detection Top10 Users_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject207').huntingQueryVersion207]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_207", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email Top 10 Targeted Users (Spam)", - "category": "Hunting Queries", - "query": "//This query visualises total inbound emails with Spam detections summarizing the data by the top 10 recipient email address (RecipientEmailAddress).\nEmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ThreatTypes has \"Spam\" and EmailDirection == \"Inbound\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize count() by RecipientEmailAddress\n| top 10 by count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises top 10 users targeted with Spam." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject207')._huntingQuerycontentId207),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 207", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject207')._huntingQuerycontentId207)]", - "contentId": "[variables('huntingQueryObject207')._huntingQuerycontentId207]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject207').huntingQueryVersion207]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject207')._huntingQuerycontentId207]", - "contentKind": "HuntingQuery", - "displayName": "Email Top 10 Targeted Users (Spam)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject207')._huntingQuerycontentId207,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject207')._huntingQuerycontentId207,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject208').huntingQueryTemplateSpecName208]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detection Top15 Domains Details_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject208').huntingQueryVersion208]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_208", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email Top 15 Domains sending Spam with Additional Details", - "category": "Hunting Queries", - "query": "//This query visualises total inbound emails with Spam detections summarizing the data by the top 15 email sender P2 domain (SenderFromDomain). Adding additional insights for total inbound emails and bad traffic percentage for each sender domain.\nEmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where EmailDirection == \"Inbound\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize TotalEmailCount = count(),\n SpamEmailCount = countif(ThreatTypes has \"Spam\") by SenderFromDomain\n| extend Bad_Traffic_Percentage_Inbound = todouble(round(SpamEmailCount / todouble(TotalEmailCount) * 100, 2))\n| where SpamEmailCount != 0\n| top 15 by SpamEmailCount\n| project SenderFromDomain, SpamEmailCount, TotalEmailCount, Bad_Traffic_Percentage_Inbound\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total inbound emails with Spam detections summarizing the data by the top 15 email sender P2 domain (SenderFromDomain)." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject208')._huntingQuerycontentId208),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 208", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject208')._huntingQuerycontentId208)]", - "contentId": "[variables('huntingQueryObject208')._huntingQuerycontentId208]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject208').huntingQueryVersion208]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject208')._huntingQuerycontentId208]", - "contentKind": "HuntingQuery", - "displayName": "Email Top 15 Domains sending Spam with Additional Details", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject208')._huntingQuerycontentId208,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject208')._huntingQuerycontentId208,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject209').huntingQueryTemplateSpecName209]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detection Top15 Users Details_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject209').huntingQueryVersion209]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_209", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Email Top 15 Targeted Users (Spam) with Additional Details", - "category": "Hunting Queries", - "query": "//This query visualises total inbound emails with Spam detections summarizing the data by the top 15 recipient email address (RecipientEmailAddress).\nEmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where EmailDirection == \"Inbound\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| summarize TotalEmailCount = count(), SpamEmailCount = countif(ThreatTypes has \"Spam\") by RecipientEmailAddress\n| extend Bad_Traffic_Percentage_Inbound = round(100.0 * SpamEmailCount / TotalEmailCount, 2)\n| where SpamEmailCount != 0\n| top 15 by SpamEmailCount\n| project RecipientEmailAddress, SpamEmailCount, TotalEmailCount, Bad_Traffic_Percentage_Inbound\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises top 15 users targeted with Spam with summarized spam detections." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject209')._huntingQuerycontentId209),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 209", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject209')._huntingQuerycontentId209)]", - "contentId": "[variables('huntingQueryObject209')._huntingQuerycontentId209]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject209').huntingQueryVersion209]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject209')._huntingQuerycontentId209]", - "contentKind": "HuntingQuery", - "displayName": "Email Top 15 Targeted Users (Spam) with Additional Details", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject209')._huntingQuerycontentId209,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject209')._huntingQuerycontentId209,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject210').huntingQueryTemplateSpecName210]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detection Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject210').huntingQueryVersion210]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_210", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spam detection trend", - "category": "Hunting Queries", - "query": "//This query visualises total emails with Spam detections over time summarizing the data daily.\nEmailEvents\n| where Timestamp > ago(30d)\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where ThreatTypes has \"Spam\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| make-series Count = count() default = 0 on Timestamp step 1d\n// | render timechart // Uncomment this line to render as a graph\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spam detections over time summarizing the data daily" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject210')._huntingQuerycontentId210),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 210", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject210')._huntingQuerycontentId210)]", - "contentId": "[variables('huntingQueryObject210')._huntingQuerycontentId210]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject210').huntingQueryVersion210]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject210')._huntingQuerycontentId210]", - "contentKind": "HuntingQuery", - "displayName": "Spam detection trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject210')._huntingQuerycontentId210,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject210')._huntingQuerycontentId210,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject211').huntingQueryTemplateSpecName211]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spam Detections by Detection technology_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject211').huntingQueryVersion211]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_211", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spam Detections by Detection technology", - "category": "Hunting Queries", - "query": "//This query visualises total emails with Spam detections over time summarizing the data daily by various Spam Detection technologies/controls in Microsoft Defender for Office 365.\n//(v4) Single mv-expand over DetectionMethods.Spam replaces the previous 8-way union: less scan, and new spam techniques appear automatically.\nlet minTime = startofday(ago(30d));\nlet maxTime = startofday(now());\nEmailEvents\n| where Timestamp >= minTime\n| where OrgLevelPolicy != \"Phishing simulation\" and OrgLevelPolicy != \"SecOps Mailbox\"\n| where DetectionMethods has \"Spam\"\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| mv-expand Details = parse_json(DetectionMethods).Spam to typeof(string)\n| where Timestamp < maxTime\n| make-series Count = count() default = 0 on Timestamp from minTime to maxTime step 1d by Details\n// | render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Spam detections over time by various Spam Detection technologies/controls." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject211')._huntingQuerycontentId211),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 211", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject211')._huntingQuerycontentId211)]", - "contentId": "[variables('huntingQueryObject211')._huntingQuerycontentId211]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject211').huntingQueryVersion211]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject211')._huntingQuerycontentId211]", - "contentKind": "HuntingQuery", - "displayName": "Spam Detections by Detection technology", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject211')._huntingQuerycontentId211,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject211')._huntingQuerycontentId211,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject212').huntingQueryTemplateSpecName212]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Display Name - Spoof and Impersonation_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject212').huntingQueryVersion212]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_212", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Display Name - Spoof and Impersonation", - "category": "Hunting Queries", - "query": "let emailDelivered = EmailEvents\n| where Timestamp < ago(24hrs)\nand DeliveryAction == \"Delivered\"\nand SenderDisplayName contains \"Microsoft\"\n| summarize count() by SenderFromAddress\n| where count_ > 3 // ensuring that some level of communications has occurred.\n| project SenderFromAddress;\nEmailEvents\n| where Timestamp > ago(24hrs)\n| where DeliveryAction == \"Delivered\"\nand EmailDirection == \"Inbound\"\nand OrgLevelAction != \"Block\"\nand UserLevelAction != \"Block\"\nand SenderDisplayName contains \"Microsoft\"\n| extend NewMsg = case(Subject contains \"RE:\", false, Subject contains \"FW:\", false, true )\n| project SenderDisplayName, SenderFromAddress, NetworkMessageId, SenderMailFromAddress, RecipientEmailAddress, DeliveryAction, DeliveryLocation, ThreatTypes, DetectionMethods, NewMsg, Subject\n| join kind=leftanti ( emailDelivered ) on SenderFromAddress\n| order by SenderMailFromAddress\n| summarize count() by SenderDisplayName, SenderFromAddress, NetworkMessageId, SenderMailFromAddress, RecipientEmailAddress, DeliveryAction, DeliveryLocation, ThreatTypes, DetectionMethods, NewMsg, Subject\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing incoming email messages where the Display Name of the sender contains own or other partner company/brand name" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject212')._huntingQuerycontentId212),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 212", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject212')._huntingQuerycontentId212)]", - "contentId": "[variables('huntingQueryObject212')._huntingQuerycontentId212]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject212').huntingQueryVersion212]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject212')._huntingQuerycontentId212]", - "contentKind": "HuntingQuery", - "displayName": "Display Name - Spoof and Impersonation", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject212')._huntingQuerycontentId212,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject212')._huntingQuerycontentId212,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject213').huntingQueryTemplateSpecName213]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Impersonation Phishing detections by Detection Technology Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject213').huntingQueryVersion213]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_213", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Impersonation Detections by Detection Technology Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery = EmailEvents\n| where DetectionMethods has \"Phish\";\nlet bimp=baseQuery\n| project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) \n| where Phish has 'Impersonation brand' \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"Impersonation brand\";\nlet dimp=baseQuery\n| project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) \n| where Phish has 'Impersonation domain' \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"Impersonation domain\";\nlet uimp=baseQuery\n| project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) \n| where Phish has 'Impersonation user' \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"Impersonation user\";\nlet mimp=baseQuery\n| project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) \n| where Phish has 'Mailbox intelligence impersonation' \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"Mailbox intelligence impersonation\";\nunion bimp,dimp,uimp,mimp\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish (BEC) Impersonation detections by Detection Technology over time" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject213')._huntingQuerycontentId213),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 213", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject213')._huntingQuerycontentId213)]", - "contentId": "[variables('huntingQueryObject213')._huntingQuerycontentId213]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject213').huntingQueryVersion213]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject213')._huntingQuerycontentId213]", - "contentKind": "HuntingQuery", - "displayName": "Impersonation Detections by Detection Technology Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject213')._huntingQuerycontentId213,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject213')._huntingQuerycontentId213,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject214').huntingQueryTemplateSpecName214]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Impersonation Phishing detections by Detection Technology_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject214').huntingQueryVersion214]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_214", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Impersonation Detections by Detection Technology", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has 'Impersonation'\n| project Timestamp, DT=parse_json(DetectionMethods)\n| evaluate bag_unpack(DT)\n| summarize count() by Phish=tostring(column_ifexists('Phish', ''))\n| sort by count_ desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish (BEC) Impersonation detections by Detection Technology" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject214')._huntingQuerycontentId214),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 214", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject214')._huntingQuerycontentId214)]", - "contentId": "[variables('huntingQueryObject214')._huntingQuerycontentId214]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject214').huntingQueryVersion214]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject214')._huntingQuerycontentId214]", - "contentKind": "HuntingQuery", - "displayName": "Impersonation Detections by Detection Technology", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject214')._huntingQuerycontentId214,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject214')._huntingQuerycontentId214,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject215').huntingQueryTemplateSpecName215]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Impersonation Phishing detections trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject215').huntingQueryVersion215]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_215", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Impersonation Detections Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents \n| where DetectionMethods has 'Impersonation' \n| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"ImpersonatedEmails\"\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish (BEC) - Impersonation detections over time." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject215')._huntingQuerycontentId215),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 215", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject215')._huntingQuerycontentId215)]", - "contentId": "[variables('huntingQueryObject215')._huntingQuerycontentId215]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject215').huntingQueryVersion215]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject215')._huntingQuerycontentId215]", - "contentKind": "HuntingQuery", - "displayName": "Impersonation Detections Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject215')._huntingQuerycontentId215,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject215')._huntingQuerycontentId215,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject216').huntingQueryTemplateSpecName216]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Referral phish emails_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject216').huntingQueryVersion216]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_216", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "referral-phish-emails", - "category": "Hunting Queries", - "query": "let EmailAddresses = pack_array\n('zreffertalt.com.com','zreffesral.com.com','kzreffertal.com.com',\n'wzreffertal.com.com','refferal.comq','refferal.net','zreffertal.com.com',\n'zrefferal.com.com','refferasl.com.com','zreffesral.com','zrefsfertal.com.com',\n'irefferal.com','refferasl.co','zrefferal.com');\nEmailEvents\n| where SenderMailFromDomain in (EmailAddresses)\n| extend RecipientDomain = extract(\"[^@]+$\", 0, RecipientEmailAddress)\n| where SenderFromDomain == RecipientDomain\n| join EmailUrlInfo on $left.NetworkMessageId == $right.NetworkMessageId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Hunting for credential phishing using the \"Referral\" infrastructure using Defender for Office 365 data" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject216')._huntingQuerycontentId216),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 216", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject216')._huntingQuerycontentId216)]", - "contentId": "[variables('huntingQueryObject216')._huntingQuerycontentId216]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject216').huntingQueryVersion216]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject216')._huntingQuerycontentId216]", - "contentKind": "HuntingQuery", - "displayName": "referral-phish-emails", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject216')._huntingQuerycontentId216,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject216')._huntingQuerycontentId216,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject217').huntingQueryTemplateSpecName217]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spoof and impersonation detections by sender IP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject217').huntingQueryVersion217]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_217", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spoof and impersonation detections by sender IP", - "category": "Hunting Queries", - "query": "EmailEvents \n|where Timestamp > ago (30d) and (DetectionMethods contains 'spoof' or DetectionMethods contains \"impersonation\") \n| project Timestamp, EmailDirection, SenderFromAddress, AdditionalFields, SenderIPv4 \n| summarize count() by SenderIPv4\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing count of spoof and impersonation detections done per sender IP" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject217')._huntingQuerycontentId217),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 217", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject217')._huntingQuerycontentId217)]", - "contentId": "[variables('huntingQueryObject217')._huntingQuerycontentId217]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject217').huntingQueryVersion217]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject217')._huntingQuerycontentId217]", - "contentKind": "HuntingQuery", - "displayName": "Spoof and impersonation detections by sender IP", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject217')._huntingQuerycontentId217,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject217')._huntingQuerycontentId217,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject218').huntingQueryTemplateSpecName218]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spoof and impersonation phish detections_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject218').huntingQueryVersion218]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_218", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spoof and impersonation phish detections", - "category": "Hunting Queries", - "query": "EmailEvents\n|where Timestamp > ago (30d) and (DetectionMethods contains 'spoof' or DetectionMethods contains \"impersonation\")\n| project Timestamp, AR=parse_json(ThreatTypes) , DT=parse_json(DetectionMethods), EmailDirection, SenderFromAddress\n| evaluate bag_unpack(DT)\n| summarize count() by tostring(Phish)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing count of phish detections done by spoof detection methods" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject218')._huntingQuerycontentId218),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 218", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject218')._huntingQuerycontentId218)]", - "contentId": "[variables('huntingQueryObject218')._huntingQuerycontentId218]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject218').huntingQueryVersion218]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject218')._huntingQuerycontentId218]", - "contentKind": "HuntingQuery", - "displayName": "Spoof and impersonation phish detections", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject218')._huntingQuerycontentId218,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject218')._huntingQuerycontentId218,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject219').huntingQueryTemplateSpecName219]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spoof detections by Detection Technology Trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject219').huntingQueryVersion219]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_219", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spoof Detections by Detection Technology Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery = EmailEvents\n| where DetectionMethods has \"Phish\";\nlet sdmarc=baseQuery\n| project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) \n| where Phish has 'Spoof DMARC' \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"Spoof DMARC\";\nlet spoofe=baseQuery\n| project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) \n| where Phish has 'Spoof external domain' \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"Spoof external domain\";\nlet spoofi=baseQuery\n| project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) \n| where Phish has 'Spoof intra-org' \n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"Spoof intra-org\";\nunion sdmarc, spoofe, spoofi\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish (BEC) Spoof detections by Detection Technology over time" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject219')._huntingQuerycontentId219),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 219", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject219')._huntingQuerycontentId219)]", - "contentId": "[variables('huntingQueryObject219')._huntingQuerycontentId219]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject219').huntingQueryVersion219]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject219')._huntingQuerycontentId219]", - "contentKind": "HuntingQuery", - "displayName": "Spoof Detections by Detection Technology Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject219')._huntingQuerycontentId219,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject219')._huntingQuerycontentId219,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject220').huntingQueryTemplateSpecName220]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spoof detections by Detection Technology_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject220').huntingQueryVersion220]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_220", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spoof Detections by Detection Technology", - "category": "Hunting Queries", - "query": "EmailEvents\n| where Timestamp > ago(30d)\n| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n| summarize arg_max(Timestamp, *) by Key\n| where DetectionMethods has 'Spoof'\n| project Timestamp, DT=parse_json(DetectionMethods)\n| evaluate bag_unpack(DT)\n| summarize count() by Phish=tostring(column_ifexists('Phish', ''))\n| sort by count_ desc\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails with Phish (BEC) Spoof detections by Detection Technology" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject220')._huntingQuerycontentId220),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 220", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject220')._huntingQuerycontentId220)]", - "contentId": "[variables('huntingQueryObject220')._huntingQuerycontentId220]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject220').huntingQueryVersion220]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject220')._huntingQuerycontentId220]", - "contentKind": "HuntingQuery", - "displayName": "Spoof Detections by Detection Technology", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject220')._huntingQuerycontentId220,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject220')._huntingQuerycontentId220,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject221').huntingQueryTemplateSpecName221]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Spoof detections trend_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject221').huntingQueryVersion221]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_221", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Spoof Detections Trend", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailEvents \n| where DetectionMethods has 'Spoof' \n| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"SpoofEmails\"\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises total emails Business Email Compromise (BEC) Spoofing detections over time summarizing the data daily." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject221')._huntingQuerycontentId221),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 221", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject221')._huntingQuerycontentId221)]", - "contentId": "[variables('huntingQueryObject221')._huntingQuerycontentId221]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject221').huntingQueryVersion221]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject221')._huntingQuerycontentId221]", - "contentKind": "HuntingQuery", - "displayName": "Spoof Detections Trend", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject221')._huntingQuerycontentId221,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject221')._huntingQuerycontentId221,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject222').huntingQueryTemplateSpecName222]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Domains with BEC Threats inbound_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject222').huntingQueryVersion222]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_222", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top Domains Outbound with Emails with Threats Inbound (Partner BEC)", - "category": "Hunting Queries", - "query": "// Partner BEC: domains we email heavily (outbound volume) that also send us threats (inbound).\n// The ratio is inbound threat emails per 100 outbound emails to the domain, so it can exceed 100.\nlet EmailDeduped = EmailEvents\n | where Timestamp > ago(30d)\n | extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)\n | summarize arg_max(Timestamp, *) by Key;\nEmailDeduped\n| where EmailDirection == \"Outbound\"\n| project RecipientDomain = tostring(split(RecipientEmailAddress, \"@\")[1])\n| summarize count() by RecipientDomain\n| project OutboundCount=count_, RecipientDomain, SenderFromDomain=RecipientDomain\n| join (\n EmailDeduped\n | where EmailDirection == \"Inbound\" and isnotempty(ThreatTypes)\n ) on SenderFromDomain\n| summarize max(OutboundCount), count() by SenderFromDomain\n| project SenderFromDomain, OutboundEmails=max_OutboundCount, IncomingEmailsWithThreats=count_\n| extend InboundThreatsPer100Outbound = round(100.0 * IncomingEmailsWithThreats / OutboundEmails, 2)\n| top 15 by OutboundEmails\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises top outbound recipient domains by outbound email volume and shows total number of inbound emails with Threats from the same domains (as inbound senders)" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject222')._huntingQuerycontentId222),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 222", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject222')._huntingQuerycontentId222)]", - "contentId": "[variables('huntingQueryObject222')._huntingQuerycontentId222]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject222').huntingQueryVersion222]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject222')._huntingQuerycontentId222]", - "contentKind": "HuntingQuery", - "displayName": "Top Domains Outbound with Emails with Threats Inbound (Partner BEC)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject222')._huntingQuerycontentId222,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject222')._huntingQuerycontentId222,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject223').huntingQueryTemplateSpecName223]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User not covered under display name impersonation_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject223').huntingQueryVersion223]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_223", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User not covered under display name impersonation", - "category": "Hunting Queries", - "query": "let display_names = \nIdentityInfo \n | summarize by AccountDisplayName \n | project-rename SenderDisplayName = AccountDisplayName; \nEmailEvents \n | where EmailDirection == \"Inbound\" \n | where ThreatNames != \"\" \n | where ThreatNames !contains \"Impersonation User\" \n | lookup kind=inner (display_names) on SenderDisplayName, $left.SenderDisplayName == $right.SenderDisplayName \n | where SenderDisplayName != \"\" \n | summarize by SenderDisplayName\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps to find threats using display name impersonation for users not already protected with User Impersonation" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject223')._huntingQuerycontentId223),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 223", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject223')._huntingQuerycontentId223)]", - "contentId": "[variables('huntingQueryObject223')._huntingQuerycontentId223]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject223').huntingQueryVersion223]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject223')._huntingQuerycontentId223]", - "contentKind": "HuntingQuery", - "displayName": "User not covered under display name impersonation", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject223')._huntingQuerycontentId223,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject223')._huntingQuerycontentId223,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject224').huntingQueryTemplateSpecName224]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submission Trend - FN_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject224').huntingQueryVersion224]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_224", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submission Trend (FN)", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery = CloudAppEvents\n| where TimeGenerated >= TimeStart\n| where ActionType contains \"Submission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType);\nlet Admin_Malware_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\" ) default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Malware_FN\";\nlet Admin_Phish_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\" ) default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Phish_FN\";\nlet Admin_Spam_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"0\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Spam_FN\";\nlet Admin_Malware_URL_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Malware_URL_FN\";\nlet Admin_Malware_Attach_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Malware_Attach_FN\";\nlet Admin_Phish_URL_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Phish_URL_FN\";\nlet Admin_Phish_Attach_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Phish_Attach_FN\";\nunion Admin_Malware_FN,Admin_Phish_FN,Admin_Spam_FN,Admin_Malware_URL_FN,Admin_Malware_Attach_FN,Admin_Phish_URL_FN,Admin_Phish_Attach_FN\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the daily amount of admin false negative submission by submission type." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject224')._huntingQuerycontentId224),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 224", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject224')._huntingQuerycontentId224)]", - "contentId": "[variables('huntingQueryObject224')._huntingQuerycontentId224]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject224').huntingQueryVersion224]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject224')._huntingQuerycontentId224]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submission Trend (FN)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject224')._huntingQuerycontentId224,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject224')._huntingQuerycontentId224,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject225').huntingQueryTemplateSpecName225]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submission Trend - FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject225').huntingQueryVersion225]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_225", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submission Trend (FP)", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery = CloudAppEvents\n| where TimeGenerated >= TimeStart\n| where ActionType contains \"Submission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType);\nlet Admin_Email_FP=baseQuery\n| make-series Count= countif(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\" ) default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Email_FP\";\nlet Admin_URL_FP=baseQuery\n| make-series Count= countif(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_URL_FP\";\nlet Admin_Attach_FP=baseQuery\n| make-series Count= countif(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\") default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Admin_Attach_FP\";\nunion Admin_Email_FP,Admin_URL_FP,Admin_Attach_FP\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the daily amount of admin false positive submission by submission type." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject225')._huntingQuerycontentId225),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 225", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject225')._huntingQuerycontentId225)]", - "contentId": "[variables('huntingQueryObject225')._huntingQuerycontentId225]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject225').huntingQueryVersion225]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject225')._huntingQuerycontentId225]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submission Trend (FP)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject225')._huntingQuerycontentId225,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject225')._huntingQuerycontentId225,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject226').huntingQueryTemplateSpecName226]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submissions by Detection Method - Phish FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject226').huntingQueryVersion226]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_226", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submissions by DetectionMethod (Phish FP)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| extend Admin_SubmissionType=\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\" ,\"Admin_Email_FP\",\n\"Other\"),DetectionMethod=tostring((parse_json(RawEventData)).DeliveryMessageInfo.FinalFilterVerdictControlSource),\nP2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain),NetworkMessageId=tostring((parse_json(RawEventData).ObjectId)),DetectionVerdict=tostring((parse_json(RawEventData)).DeliveryMessageInfo.FinalFilterVerdict),PolicyOverride=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicyOverride),PolicyPolicyOverrideType=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicySource)\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\" and DetectionVerdict ==\"Phish\"\n| summarize count() by DetectionMethod\n| project DetectionMethod,Emails = count_\n// | render piechart // Uncomment this line to render as a graph\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the original detection technology of emails submitted as phish false positive by admins" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject226')._huntingQuerycontentId226),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 226", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject226')._huntingQuerycontentId226)]", - "contentId": "[variables('huntingQueryObject226')._huntingQuerycontentId226]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject226').huntingQueryVersion226]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject226')._huntingQuerycontentId226]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submissions by DetectionMethod (Phish FP)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject226')._huntingQuerycontentId226,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject226')._huntingQuerycontentId226,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject227').huntingQueryTemplateSpecName227]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submissions by Detection Method - Spam FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject227').huntingQueryVersion227]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_227", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submissions by DetectionMethod (Spam FP)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| extend Admin_SubmissionType=\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\" ,\"Admin_Email_FP\",\n\"Other\"),DetectionMethod=tostring((parse_json(RawEventData)).DeliveryMessageInfo.FinalFilterVerdictControlSource),\nP2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain),NetworkMessageId=tostring((parse_json(RawEventData).ObjectId)),DetectionVerdict=tostring((parse_json(RawEventData)).DeliveryMessageInfo.FinalFilterVerdict),PolicyOverride=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicyOverride),PolicyPolicyOverrideType=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicySource)\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\" and DetectionVerdict ==\"Spam\" \n| summarize count() by DetectionMethod\n| project DetectionMethod,Emails = count_\n// | render piechart // Uncomment this line to render as a graph\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the original detection technology of emails submitted as spam false positive by admins" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject227')._huntingQuerycontentId227),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 227", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject227')._huntingQuerycontentId227)]", - "contentId": "[variables('huntingQueryObject227')._huntingQuerycontentId227]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject227').huntingQueryVersion227]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject227')._huntingQuerycontentId227]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submissions by DetectionMethod (Spam FP)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject227')._huntingQuerycontentId227,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject227')._huntingQuerycontentId227,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject228').huntingQueryTemplateSpecName228]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submissions by Detection Type_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject228').huntingQueryVersion228]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_228", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submissions by Detection Type", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| extend Admin_SubmissionType=\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\" ,\"Admin_Email_FP\",\n\"Other\"),\nP2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain),NetworkMessageId=tostring((parse_json(RawEventData).ObjectId)),DetectionVerdict=tostring((parse_json(RawEventData)).DeliveryMessageInfo.FinalFilterVerdict),PolicyOverride=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicyOverride),PolicyPolicyOverrideType=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicySource)\n| where SubmissionContentType == \"Mail\" and SubmissionType == \"3\"\n| summarize count() by PolicyOverride,DetectionVerdict,Admin_SubmissionType\n| project PolicyOverride, DetectionVerdict,Admin_SubmissionType, Emails = count_\n| top 10 by Emails desc\n// | render piechart // Uncomment this line to render as a graph\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises all emails submitted as false positive by admins summarizing by the original filter verdict threat type" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject228')._huntingQuerycontentId228),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 228", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject228')._huntingQuerycontentId228)]", - "contentId": "[variables('huntingQueryObject228')._huntingQuerycontentId228]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject228').huntingQueryVersion228]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject228')._huntingQuerycontentId228]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submissions by Detection Type", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject228')._huntingQuerycontentId228,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject228')._huntingQuerycontentId228,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject229').huntingQueryTemplateSpecName229]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submissions by Grading Verdict - FN-FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject229').huntingQueryVersion229]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_229", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submissions by Grading verdict (FN-FP)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType contains \"AdminSubmissionTriage\"\n| extend UserKey = (parse_json(RawEventData)).UserKey, SubmissionState = (parse_json(RawEventData)).SubmissionState, SubmissionId=(parse_json(RawEventData)).SubmissionId, TriageVerdict=(parse_json(RawEventData)).GradingResult.TriageVerdict\n| summarize count() by tostring(TriageVerdict)\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total amount of admin false negative or false positive submissions by the verdict of the submission grading." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject229')._huntingQuerycontentId229),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 229", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject229')._huntingQuerycontentId229)]", - "contentId": "[variables('huntingQueryObject229')._huntingQuerycontentId229]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject229').huntingQueryVersion229]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject229')._huntingQuerycontentId229]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submissions by Grading verdict (FN-FP)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject229')._huntingQuerycontentId229,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject229')._huntingQuerycontentId229,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject230').huntingQueryTemplateSpecName230]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submissions by Submission State - FN_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject230').huntingQueryVersion230]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_230", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submissions by Submission State (FN)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType contains \"AdminSubmission\"\n| extend Record = (parse_json(RawEventData)).RecordType,SubmissionState = parse_json(RawEventData).SubmissionState,SubmissionId=parse_json(RawEventData).SubmissionId,SubmissionType = parse_json(RawEventData).SubmissionType,SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| where Record == 29 and SubmissionType in (\"0\",\"1\",\"2\")\n| summarize count() by tostring(SubmissionState)\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total amount of admin false negative submissions by the state of the submission." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject230')._huntingQuerycontentId230),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 230", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject230')._huntingQuerycontentId230)]", - "contentId": "[variables('huntingQueryObject230')._huntingQuerycontentId230]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject230').huntingQueryVersion230]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject230')._huntingQuerycontentId230]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submissions by Submission State (FN)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject230')._huntingQuerycontentId230,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject230')._huntingQuerycontentId230,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject231').huntingQueryTemplateSpecName231]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submissions by Submission State - FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject231').huntingQueryVersion231]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_231", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submissions by Submission State (FP)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType contains \"AdminSubmission\"\n| extend Record = (parse_json(RawEventData)).RecordType,SubmissionState = parse_json(RawEventData).SubmissionState,SubmissionId=parse_json(RawEventData).SubmissionId,SubmissionType = parse_json(RawEventData).SubmissionType,SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| where Record == 29 and SubmissionType == \"3\"\n| summarize count() by tostring(SubmissionState)\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total amount of admin false positive submissions by the state of the submission." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject231')._huntingQuerycontentId231),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 231", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject231')._huntingQuerycontentId231)]", - "contentId": "[variables('huntingQueryObject231')._huntingQuerycontentId231]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject231').huntingQueryVersion231]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject231')._huntingQuerycontentId231]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submissions by Submission State (FP)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject231')._huntingQuerycontentId231,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject231')._huntingQuerycontentId231,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject232').huntingQueryTemplateSpecName232]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submissions by Submission Type - FN_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject232').huntingQueryVersion232]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_232", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submissions by Submission Type (FN)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType contains \"Submission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| extend Admin_SubmissionType=\niff(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Admin_Malware_FN\",\niff(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Admin_Phish_FN\",\niff(SubmissionType == \"0\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Admin_Spam_FN\",\niff(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\",\"Admin_Malware_URL_FN\",\niff(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\",\"Admin_Malware_Attach_FN\",\niff(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\",\"Admin_Phish_URL_FN\",\niff(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\",\"Admin_Phish_Attach_FN\",\n\"Other\")))))))\n| where Admin_SubmissionType!=\"Other\"\n| summarize count() by Admin_SubmissionType\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing admin reported email submissions" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject232')._huntingQuerycontentId232),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 232", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject232')._huntingQuerycontentId232)]", - "contentId": "[variables('huntingQueryObject232')._huntingQuerycontentId232]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject232').huntingQueryVersion232]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject232')._huntingQuerycontentId232]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submissions by Submission Type (FN)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject232')._huntingQuerycontentId232,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject232')._huntingQuerycontentId232,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject233').huntingQueryTemplateSpecName233]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Admin Submissions by Submission Type - FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject233').huntingQueryVersion233]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_233", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Admin Submissions by Submission Type (FP)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType contains \"Submission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| extend Admin_SubmissionType=\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Admin_Email_FP\",\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"URL\",\"Admin_URL_FP\",\niff(SubmissionType == \"3\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Attachment\",\"Admin_Attach_FP\",\n\"Other\")))\n| where Admin_SubmissionType!=\"Other\"\n| summarize count() by Admin_SubmissionType\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total amount of admin false positive submission by submission type." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject233')._huntingQuerycontentId233),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 233", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject233')._huntingQuerycontentId233)]", - "contentId": "[variables('huntingQueryObject233')._huntingQuerycontentId233]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject233').huntingQueryVersion233]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject233')._huntingQuerycontentId233]", - "contentKind": "HuntingQuery", - "displayName": "Admin Submissions by Submission Type (FP)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject233')._huntingQuerycontentId233,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject233')._huntingQuerycontentId233,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject234').huntingQueryTemplateSpecName234]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top accounts performing admin submissions - FN_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject234').huntingQueryVersion234]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_234", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top accounts performing admin submissions (FN)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend Record= (parse_json(RawEventData)).RecordType,SubmissionState = (parse_json(RawEventData)).SubmissionState, UserId = (parse_json(RawEventData)).UserId,SubmissionType = parse_json(RawEventData).SubmissionType\n| where Record == 29 and SubmissionType in (\"0\",\"1\",\"2\")\n| summarize count() by tostring(UserId) | sort by count_\n| top 15 by count_\n| render columnchart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the top admins performing false negative submissions" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject234')._huntingQuerycontentId234),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 234", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject234')._huntingQuerycontentId234)]", - "contentId": "[variables('huntingQueryObject234')._huntingQuerycontentId234]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject234').huntingQueryVersion234]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject234')._huntingQuerycontentId234]", - "contentKind": "HuntingQuery", - "displayName": "Top accounts performing admin submissions (FN)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject234')._huntingQuerycontentId234,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject234')._huntingQuerycontentId234,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject235').huntingQueryTemplateSpecName235]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top accounts performing admin submissions - FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject235').huntingQueryVersion235]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_235", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top accounts performing admin submissions (FP)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend Record= (parse_json(RawEventData)).RecordType,SubmissionState = (parse_json(RawEventData)).SubmissionState, UserId = (parse_json(RawEventData)).UserId,SubmissionType = parse_json(RawEventData).SubmissionType\n| where Record == 29 and SubmissionType ==\"3\"\n| summarize count() by tostring(UserId) | sort by count_\n| top 15 by count_\n| render columnchart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the top admins performing false positive submissions" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject235')._huntingQuerycontentId235),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 235", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject235')._huntingQuerycontentId235)]", - "contentId": "[variables('huntingQueryObject235')._huntingQuerycontentId235]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject235').huntingQueryVersion235]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject235')._huntingQuerycontentId235]", - "contentKind": "HuntingQuery", - "displayName": "Top accounts performing admin submissions (FP)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject235')._huntingQuerycontentId235,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject235')._huntingQuerycontentId235,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject236').huntingQueryTemplateSpecName236]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top accounts performing user submissions_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject236').huntingQueryVersion236]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_236", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top accounts performing user submissions", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where Timestamp > ago(30d) \n| extend Record= (parse_json(RawEventData)).RecordType \n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState \n| extend UserId = (parse_json(RawEventData)).UserId\n| where Record == 29 \n| where ActionType == \"UserSubmission\" \n| summarize count() by tostring(UserId) | sort by count_ //| top 50 by count_\n| render columnchart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query graphs top accounts performing user submissions" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject236')._huntingQuerycontentId236),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 236", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject236')._huntingQuerycontentId236)]", - "contentId": "[variables('huntingQueryObject236')._huntingQuerycontentId236]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject236').huntingQueryVersion236]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject236')._huntingQuerycontentId236]", - "contentKind": "HuntingQuery", - "displayName": "Top accounts performing user submissions", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject236')._huntingQuerycontentId236,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject236')._huntingQuerycontentId236,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject237').huntingQueryTemplateSpecName237]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Detection Overrides - Admin Submissions_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject237').huntingQueryVersion237]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_237", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 Detection Overrides - Admin Email Submissions (FN)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| extend Admin_SubmissionType=\niff(SubmissionType == \"2\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Admin_Malware_FN\",\niff(SubmissionType == \"1\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Admin_Phish_FN\",\niff(SubmissionType == \"0\" and ActionType == \"AdminSubmissionSubmitted\" and SubmissionContentType==\"Mail\",\"Admin_Spam_FN\",\"Other\"))),\nP2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain),NetworkMessageId=tostring((parse_json(RawEventData).ObjectId)),DetectionVerdict=tostring((parse_json(RawEventData)).DeliveryMessageInfo.FinalFilterVerdict),PolicyOverride=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicyOverride),PolicyPolicyOverrideType=tostring((parse_json(RawEventData)).DeliveryMessageInfo.PolicySource)\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"2\",\"1\",\"0\") and PolicyOverride !=\"NoOverride\"\n| summarize count() by PolicyOverride, PolicyPolicyOverrideType,DetectionVerdict,Admin_SubmissionType\n| project PolicyOverride, PolicyPolicyOverrideType,DetectionVerdict,Admin_SubmissionType, Emails = count_\n| top 10 by Emails desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails submitted as false negatives by admins where emails where already detected by MDO but there was an admin policy override" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject237')._huntingQuerycontentId237),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 237", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject237')._huntingQuerycontentId237)]", - "contentId": "[variables('huntingQueryObject237')._huntingQuerycontentId237]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject237').huntingQueryVersion237]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject237')._huntingQuerycontentId237]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 Detection Overrides - Admin Email Submissions (FN)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject237')._huntingQuerycontentId237,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject237')._huntingQuerycontentId237,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject238').huntingQueryTemplateSpecName238]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Sender Domains - Admin Submissions FN_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject238').huntingQueryVersion238]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_238", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 sender domains - Admin email submissions (FN)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain)\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"2\",\"1\",\"0\")\n| summarize count() by P2SenderDomain\n| project P2SenderDomain, Emails = count_\n| top 10 by Emails desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails submitted by admins as false negatives, summarizing the data by top 10 sender domains of those emails" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject238')._huntingQuerycontentId238),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 238", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject238')._huntingQuerycontentId238)]", - "contentId": "[variables('huntingQueryObject238')._huntingQuerycontentId238]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject238').huntingQueryVersion238]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject238')._huntingQuerycontentId238]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 sender domains - Admin email submissions (FN)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject238')._huntingQuerycontentId238,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject238')._huntingQuerycontentId238,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject239').huntingQueryTemplateSpecName239]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top Sender Domains - Admin Submissions FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject239').huntingQueryVersion239]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_239", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 sender domains - Admin email submissions (FP)", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType == \"AdminSubmissionSubmitted\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain)\n| where SubmissionContentType == \"Mail\" and SubmissionType ==\"3\"\n| summarize count() by P2SenderDomain\n| project P2SenderDomain, Emails = count_\n| top 10 by Emails desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails submitted by admins as false positives, summarizing the data by top 10 sender domains of those emails" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject239')._huntingQuerycontentId239),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 239", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject239')._huntingQuerycontentId239)]", - "contentId": "[variables('huntingQueryObject239')._huntingQuerycontentId239]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject239').huntingQueryVersion239]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject239')._huntingQuerycontentId239]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 sender domains - Admin email submissions (FP)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject239')._huntingQuerycontentId239,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject239')._huntingQuerycontentId239,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject240').huntingQueryTemplateSpecName240]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Total Submissions by Submission Status_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject240').huntingQueryVersion240]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_240", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Total Submissions by Submission Type", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where Timestamp > ago(30d) \n| extend Record= (parse_json(RawEventData)).RecordType \n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState \n| extend UserKey = (parse_json(RawEventData)).UserKey \n| where Record == 29 \n| where ActionType == \"UserSubmission\" or ActionType == \"AdminSubmission\" \n| summarize count() by tostring(SubmissionState) | sort by count_\n// | render piechart // Uncomment this line to render as a graph\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Total Submissions by Submission Status" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject240')._huntingQuerycontentId240),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 240", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject240')._huntingQuerycontentId240)]", - "contentId": "[variables('huntingQueryObject240')._huntingQuerycontentId240]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject240').huntingQueryVersion240]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject240')._huntingQuerycontentId240]", - "contentKind": "HuntingQuery", - "displayName": "Total Submissions by Submission Type", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject240')._huntingQuerycontentId240,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject240')._huntingQuerycontentId240,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject241').huntingQueryTemplateSpecName241]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Total Submissions by Submission Type_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject241').huntingQueryVersion241]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_241", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Total Submissions by Submission Type", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType == \"UserSubmission\" or ActionType == \"AdminSubmission\"\n| summarize count() by ActionType\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Total Submissions by Submission Type" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject241')._huntingQuerycontentId241),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 241", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject241')._huntingQuerycontentId241)]", - "contentId": "[variables('huntingQueryObject241')._huntingQuerycontentId241]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject241').huntingQueryVersion241]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject241')._huntingQuerycontentId241]", - "contentKind": "HuntingQuery", - "displayName": "Total Submissions by Submission Type", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject241')._huntingQuerycontentId241,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject241')._huntingQuerycontentId241,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject242').huntingQueryTemplateSpecName242]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User reported submissions_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject242').huntingQueryVersion242]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_242", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User reported submissions", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where Timestamp > ago(30d) \n| extend Record= (parse_json(RawEventData)).RecordType \n| extend SubmissionState = (parse_json(RawEventData)).SubmissionState \n| where Record == 29 \n| where ActionType == \"UserSubmission\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing user reported email submissions" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject242')._huntingQuerycontentId242),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 242", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject242')._huntingQuerycontentId242)]", - "contentId": "[variables('huntingQueryObject242')._huntingQuerycontentId242]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject242').huntingQueryVersion242]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject242')._huntingQuerycontentId242]", - "contentKind": "HuntingQuery", - "displayName": "User reported submissions", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject242')._huntingQuerycontentId242,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject242')._huntingQuerycontentId242,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject243').huntingQueryTemplateSpecName243]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submission Accuracy versus Admin Verdicts_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject243').huntingQueryVersion243]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_243", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions accuracy vs Admin review verdict", - "category": "Hunting Queries", - "query": "let ReviewResults = CloudAppEvents | where ActionType == \"SubmissionNotification\" \n| extend SubmissionId = tostring(parse_json(RawEventData).SubmissionId)\n| extend Properties = parse_json(RawEventData.ExtendedProperties)\n| mv-expand element = Properties\n| where element.Name == \"AdminReviewResult\"\n| project SubmissionId, AdminReviewResult = element.Value;\nCloudAppEvents\n| where ActionType == \"UserSubmission\"\n| extend SubmissionId = tostring(parse_json(RawEventData).SubmissionId), SubmissionType = parse_json(RawEventData).SubmissionType\n| join kind=leftouter ReviewResults on SubmissionId\n| extend UserReportedAs=iif(SubmissionType == 1, \"Phish\",iif(SubmissionType == 2, \"Junk\",iif(SubmissionType == 3, \"NotJunk\",\"\")))\n| extend ReviewedAccuracy=iif(AdminReviewResult==UserReportedAs, \"Correct\", iif(AdminReviewResult==\"Phish\" and UserReportedAs == \"Junk\", \"Phish reported as junk\",iif(AdminReviewResult==\"Junk\" and UserReportedAs == \"Phish\",\"Junk reported as Phish\",iif(AdminReviewResult==\"NotJunk\",\"Reported but not malicious or spam\",iif(isempty(AdminReviewResult),\"Not Reviewed\",\"Not correct\")))))\n| extend Reviewed=iif(isempty(AdminReviewResult),\"Not Reviewed\",\"Reviewed\")\n| project SubmissionId,UserReportedAs,Reviewed,AdminReviewResult, ReviewedAccuracy\n| where Reviewed==\"Reviewed\"\n| summarize count() by ReviewedAccuracy\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises user submissions type compared to admin review verdict" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject243')._huntingQuerycontentId243),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 243", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject243')._huntingQuerycontentId243)]", - "contentId": "[variables('huntingQueryObject243')._huntingQuerycontentId243]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject243').huntingQueryVersion243]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject243')._huntingQuerycontentId243]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions accuracy vs Admin review verdict", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject243')._huntingQuerycontentId243,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject243')._huntingQuerycontentId243,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject244').huntingQueryTemplateSpecName244]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions - Top detection overrides by Admins_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject244').huntingQueryVersion244]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_244", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions (FN) - Top Detection Overrides by Admins", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType == \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId\n| extend User_SubmissionType=\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Phish_FN\",\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Spam_FN\",\"Other\")),\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\n| join EmailEvents on NetworkMessageId, RecipientObjectId\n| where ThreatTypes !=\"\"and OrgLevelAction!=\"\"\n| summarize count() by OrgLevelAction, OrgLevelPolicy,ThreatTypes,User_SubmissionType\n| project OrgLevelAction, OrgLevelPolicy,ThreatTypes,User_SubmissionType, UserSubmissions = count_\n| top 10 by UserSubmissions desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails submitted as false negatives by users where emails were already detected by MDO but there was an admin definded policy override" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject244')._huntingQuerycontentId244),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 244", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject244')._huntingQuerycontentId244)]", - "contentId": "[variables('huntingQueryObject244')._huntingQuerycontentId244]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject244').huntingQueryVersion244]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject244')._huntingQuerycontentId244]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions (FN) - Top Detection Overrides by Admins", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject244')._huntingQuerycontentId244,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject244')._huntingQuerycontentId244,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject245').huntingQueryTemplateSpecName245]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions - Top detection overrides by Users_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject245').huntingQueryVersion245]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_245", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions (FN) - Top Detection Overrides by Users", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType == \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId\n| extend User_SubmissionType=\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Phish_FN\",\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Spam_FN\",\"Other\")),\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\n| join EmailEvents on NetworkMessageId, RecipientObjectId\n| where ThreatTypes !=\"\"and UserLevelAction!=\"\"\n| summarize count() by UserLevelAction, UserLevelPolicy,ThreatTypes,User_SubmissionType\n| project UserLevelAction, UserLevelPolicy,ThreatTypes,User_SubmissionType, UserSubmissions = count_\n| top 10 by UserSubmissions desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises emails submitted as false negatives by users where emails were already detected by MDO but there was a policy override." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject245')._huntingQuerycontentId245),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 245", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject245')._huntingQuerycontentId245)]", - "contentId": "[variables('huntingQueryObject245')._huntingQuerycontentId245]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject245').huntingQueryVersion245]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject245')._huntingQuerycontentId245]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions (FN) - Top Detection Overrides by Users", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject245')._huntingQuerycontentId245,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject245')._huntingQuerycontentId245,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject246').huntingQueryTemplateSpecName246]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions - Top email (P2) senders domains_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject246').huntingQueryVersion246]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_246", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions (FN) - Top Inbound P2 Senders domains", - "category": "Hunting Queries", - "query": "let TotalInboundbySender = EmailEvents\n| where EmailDirection ==\"Inbound\"\n| summarize count() by SenderFromDomain;\nCloudAppEvents \n| where ActionType == \"UserSubmission\" \n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),RecipientObjectId=AccountObjectId,NetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\n| join EmailEvents on NetworkMessageId, RecipientObjectId\n| where EmailDirection == \"Inbound\"\n| summarize UserSubmissions=count() by SenderFromDomain\n| join TotalInboundbySender on SenderFromDomain\n| extend UserSubmissions_Percentage = todouble(round(UserSubmissions / todouble(count_) * 100, 2))\n| project SenderFromDomain, UserSubmissions, TotalInboundEmail=count_,UserSubmissions_Percentage\n| top 10 by UserSubmissions desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises top sender domains of inbound emails submitted as false negatives by users." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject246')._huntingQuerycontentId246),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 246", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject246')._huntingQuerycontentId246)]", - "contentId": "[variables('huntingQueryObject246')._huntingQuerycontentId246]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject246').huntingQueryVersion246]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject246')._huntingQuerycontentId246]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions (FN) - Top Inbound P2 Senders domains", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject246')._huntingQuerycontentId246,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject246')._huntingQuerycontentId246,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject247').huntingQueryTemplateSpecName247]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions - Top email (P2) senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject247').huntingQueryVersion247]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_247", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions (FN) - Top Inbound P2 Senders", - "category": "Hunting Queries", - "query": "let TotalInboundbySender = EmailEvents\n| where EmailDirection ==\"Inbound\"\n| summarize count() by SenderFromAddress;\nCloudAppEvents \n| where ActionType == \"UserSubmission\" \n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType),P2SenderDomain=tostring((parse_json(RawEventData)).P2SenderDomain),RecipientObjectId=AccountObjectId,NetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\n| join EmailEvents on NetworkMessageId, RecipientObjectId\n| where EmailDirection == \"Inbound\"\n| summarize UserSubmissions=count() by SenderFromAddress\n| join TotalInboundbySender on SenderFromAddress\n| extend UserSubmissions_Percentage = todouble(round(UserSubmissions / todouble(count_) * 100, 2))\n| project SenderFromAddress, UserSubmissions, TotalInboundEmail=count_,UserSubmissions_Percentage\n| top 10 by UserSubmissions desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises top sender email addresses of inbound emails submitted as false negatives by users." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject247')._huntingQuerycontentId247),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 247", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject247')._huntingQuerycontentId247)]", - "contentId": "[variables('huntingQueryObject247')._huntingQuerycontentId247]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject247').huntingQueryVersion247]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject247')._huntingQuerycontentId247]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions (FN) - Top Inbound P2 Senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject247')._huntingQuerycontentId247,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject247')._huntingQuerycontentId247,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject248').huntingQueryTemplateSpecName248]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions - Top Intra-Org P2 senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject248').huntingQueryVersion248]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_248", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions (FN) - Top Intra-Org P2 Senders", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType == \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId\n| extend User_SubmissionType=\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Phish_FN\",\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Spam_FN\",\"Other\")),\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\n| join EmailEvents on NetworkMessageId, RecipientObjectId\n| where EmailDirection == \"Intra-org\"\n| summarize count() by SenderMailFromAddress\n| project SenderMailFromAddress,UserSubmissions = count_\n| top 10 by UserSubmissions desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises top sender email addresses of intra-org emails submitted as false negatives by users." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject248')._huntingQuerycontentId248),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 248", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject248')._huntingQuerycontentId248)]", - "contentId": "[variables('huntingQueryObject248')._huntingQuerycontentId248]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject248').huntingQueryVersion248]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject248')._huntingQuerycontentId248]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions (FN) - Top Intra-Org P2 Senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject248')._huntingQuerycontentId248,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject248')._huntingQuerycontentId248,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject249').huntingQueryTemplateSpecName249]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions - Top Intra-Org Subjects_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject249').huntingQueryVersion249]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_249", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions (FN) - Top Intra-Org Subjects", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType == \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId\n| extend User_SubmissionType=\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Phish_FN\",\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Spam_FN\",\"Other\")),\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\n| join EmailEvents on NetworkMessageId, RecipientObjectId\n| where EmailDirection == \"Intra-org\"\n| summarize count() by Subject\n| project Subject,UserSubmissions = count_\n| top 10 by UserSubmissions desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises top 10 subjects of intra-org emails submitted as false negatives by users." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject249')._huntingQuerycontentId249),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 249", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject249')._huntingQuerycontentId249)]", - "contentId": "[variables('huntingQueryObject249')._huntingQuerycontentId249]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject249').huntingQueryVersion249]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject249')._huntingQuerycontentId249]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions (FN) - Top Intra-Org Subjects", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject249')._huntingQuerycontentId249,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject249')._huntingQuerycontentId249,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject250').huntingQueryTemplateSpecName250]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions by Admin review status_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject250').huntingQueryVersion250]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_250", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions by Admin review status (Mark and Notify)", - "category": "Hunting Queries", - "query": "let ReviewResults = CloudAppEvents | where ActionType == \"SubmissionNotification\" \n| extend SubmissionId = tostring(parse_json(RawEventData).SubmissionId)\n| extend Properties = parse_json(RawEventData.ExtendedProperties)\n| mv-expand element = Properties\n| where element.Name == \"AdminReviewResult\"\n| project SubmissionId, AdminReviewResult = element.Value;\nCloudAppEvents\n| where ActionType == \"UserSubmission\"\n| extend SubmissionId = tostring(parse_json(RawEventData).SubmissionId), SubmissionType = parse_json(RawEventData).SubmissionType\n| join kind=leftouter ReviewResults on SubmissionId\n| extend UserReportedAs=iif(SubmissionType == 1, \"Phish\",iif(SubmissionType == 2, \"Junk\",iif(SubmissionType == 3, \"NotJunk\",\"\")))\n| extend ReviewedAccuracy=iif(UserReportedAs==AdminReviewResult, 1,0)\n| extend Reviewed=iif(isempty(AdminReviewResult),\"Not Reviewed\",\"Reviewed\")\n| project SubmissionId,UserReportedAs,Reviewed,AdminReviewResult, ReviewedAccuracy\n| summarize count() by Reviewed\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises user submissions where admin also performed 'mark and notify' action on the submission" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject250')._huntingQuerycontentId250),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 250", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject250')._huntingQuerycontentId250)]", - "contentId": "[variables('huntingQueryObject250')._huntingQuerycontentId250]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject250').huntingQueryVersion250]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject250')._huntingQuerycontentId250]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions by Admin review status (Mark and Notify)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject250')._huntingQuerycontentId250,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject250')._huntingQuerycontentId250,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject251').huntingQueryTemplateSpecName251]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions by Grading Verdict - FN-FP_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject251').huntingQueryVersion251]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_251", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions (FN-FP) by Grading verdict", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType contains \"UserSubmissionTriage\" \n| extend UserKey = (parse_json(RawEventData)).UserKey, SubmissionState = (parse_json(RawEventData)).SubmissionState, SubmissionId=(parse_json(RawEventData)).SubmissionId, TriageVerdict=(parse_json(RawEventData)).GradingResult.TriageVerdict \n| summarize count() by tostring(TriageVerdict)\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total ammount of user false negative or false positive submissions by the verdict of the submission grading." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject251')._huntingQuerycontentId251),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 251", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject251')._huntingQuerycontentId251)]", - "contentId": "[variables('huntingQueryObject251')._huntingQuerycontentId251]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject251').huntingQueryVersion251]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject251')._huntingQuerycontentId251]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions (FN-FP) by Grading verdict", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject251')._huntingQuerycontentId251,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject251')._huntingQuerycontentId251,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject252').huntingQueryTemplateSpecName252]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions by Submission Type_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject252').huntingQueryVersion252]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_252", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submissions (FN) by Submission Type", - "category": "Hunting Queries", - "query": "CloudAppEvents\n| where ActionType contains \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType)\n| extend User_SubmissionType=\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Phish_FN\",\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Spam_FN\",\niff(ActionType == \"AttackSimUserSubmission\" and SubmissionContentType==\"Mail\",\"User_AttackSim_Submission\",\n\"Other\")))\n| where User_SubmissionType!=\"Other\"\n| summarize count() by User_SubmissionType\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total ammount of user false negative submission by submission type, including the phish simulations reported emails" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject252')._huntingQuerycontentId252),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 252", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject252')._huntingQuerycontentId252)]", - "contentId": "[variables('huntingQueryObject252')._huntingQuerycontentId252]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject252').huntingQueryVersion252]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject252')._huntingQuerycontentId252]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submissions (FN) by Submission Type", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject252')._huntingQuerycontentId252,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject252')._huntingQuerycontentId252,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject253').huntingQueryTemplateSpecName253]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions from Junk Folder_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject253').huntingQueryVersion253]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_253", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User email submissions (FN) from Junk Folder", - "category": "Hunting Queries", - "query": "CloudAppEvents \n| where ActionType == \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType), RecipientObjectId=AccountObjectId\n| extend User_SubmissionType=\niff(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Phish_FN\",\niff(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\",\"User_Spam_FN\",\"Other\")),\nNetworkMessageId=tostring((parse_json(RawEventData).ObjectId))\n| where SubmissionContentType == \"Mail\" and SubmissionType in (\"1\",\"0\")\n| join EmailEvents on NetworkMessageId, RecipientObjectId\n| where DeliveryLocation == \"Junk folder\"\n| summarize count() by ThreatTypes,User_SubmissionType\n| project ThreatTypes,User_SubmissionType, Emails = count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the total ammount of user false negative submissions from the junk folder" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject253')._huntingQuerycontentId253),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 253", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject253')._huntingQuerycontentId253)]", - "contentId": "[variables('huntingQueryObject253')._huntingQuerycontentId253]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject253').huntingQueryVersion253]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject253')._huntingQuerycontentId253]", - "contentKind": "HuntingQuery", - "displayName": "User email submissions (FN) from Junk Folder", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject253')._huntingQuerycontentId253,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject253')._huntingQuerycontentId253,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject254').huntingQueryTemplateSpecName254]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User Submissions Trend - FN_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject254').huntingQueryVersion254]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_254", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User Email Submission Trend (FN)", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet baseQuery = CloudAppEvents\n| where ActionType contains \"UserSubmission\"\n| extend SubmissionType = tostring((parse_json(RawEventData)).SubmissionType),SubmissionContentType=tostring((parse_json(RawEventData)).SubmissionContentType);\nlet User_Phish_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"1\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\" ) default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"User_Phish_FN\";\nlet User_Spam_FN=baseQuery\n| make-series Count= countif(SubmissionType == \"0\" and ActionType == \"UserSubmission\" and SubmissionContentType==\"Mail\" ) default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"User_Spam_FN\";\nlet User_AttackSim_Submission=baseQuery\n| make-series Count= countif(ActionType == \"AttackSimUserSubmission\" and SubmissionContentType==\"Mail\" ) default = 0 on Timestamp from TimeStart to TimeEnd step 1d \n| extend Details = \"User_AttackSim_Submission\";\nunion User_Phish_FN,User_Spam_FN,User_AttackSim_Submission\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the daily ammount of users false negative submission by submission type, including phish simulations reported by users." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject254')._huntingQuerycontentId254),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 254", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject254')._huntingQuerycontentId254)]", - "contentId": "[variables('huntingQueryObject254')._huntingQuerycontentId254]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject254').huntingQueryVersion254]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject254')._huntingQuerycontentId254]", - "contentKind": "HuntingQuery", - "displayName": "User Email Submission Trend (FN)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject254')._huntingQuerycontentId254,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject254')._huntingQuerycontentId254,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject255').huntingQueryTemplateSpecName255]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Attacked more than x times average_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject255').huntingQueryVersion255]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_255", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Attacked more than x times average", - "category": "Hunting Queries", - "query": "let AverageThreatPerRecipient = toscalar(EmailEvents \n| where DetectionMethods != \"\" \n| summarize total=count() by RecipientEmailAddress \n| summarize avg(total)); \nEmailEvents \n| where DetectionMethods != \"\" \n| summarize total=count() by RecipientEmailAddress \n| where tolong(total) >= 1*AverageThreatPerRecipient // update \"1\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing count of users attacked more than x times average." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject255')._huntingQuerycontentId255),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 255", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject255')._huntingQuerycontentId255)]", - "contentId": "[variables('huntingQueryObject255')._huntingQuerycontentId255]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject255').huntingQueryVersion255]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject255')._huntingQuerycontentId255]", - "contentKind": "HuntingQuery", - "displayName": "Attacked more than x times average", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject255')._huntingQuerycontentId255,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject255')._huntingQuerycontentId255,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject256').huntingQueryTemplateSpecName256]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malicious mails by sender IPs_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject256').huntingQueryVersion256]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_256", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malicious mails by sender IPs", - "category": "Hunting Queries", - "query": "EmailEvents \n| where Timestamp > ago(30d) \n| where ThreatTypes has \"Phish\" or ThreatTypes has \"Malware\"\n| summarize count() by SenderIPv4 //SenderIPv6\n| sort by count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing sender IPs sending malicious email of type Malware or Phish" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject256')._huntingQuerycontentId256),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 256", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject256')._huntingQuerycontentId256)]", - "contentId": "[variables('huntingQueryObject256')._huntingQuerycontentId256]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject256').huntingQueryVersion256]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject256')._huntingQuerycontentId256]", - "contentKind": "HuntingQuery", - "displayName": "Malicious mails by sender IPs", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject256')._huntingQuerycontentId256,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject256')._huntingQuerycontentId256,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject257').huntingQueryTemplateSpecName257]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 percent of most attacked users_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject257').huntingQueryVersion257]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_257", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10% of most attacked users", - "category": "Hunting Queries", - "query": "let topTargeted = toscalar( EmailEvents \n| where DetectionMethods != \"\" \n| summarize total=count() by RecipientEmailAddress \n| summarize percentiles(total,90)); \nEmailEvents \n| where DetectionMethods != \"\" \n| summarize total=count() by RecipientEmailAddress \n| where total >= topTargeted \n| order by total desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing the list of top 10% of most attacked users" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject257')._huntingQuerycontentId257),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 257", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject257')._huntingQuerycontentId257)]", - "contentId": "[variables('huntingQueryObject257')._huntingQuerycontentId257]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject257').huntingQueryVersion257]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject257')._huntingQuerycontentId257]", - "contentKind": "HuntingQuery", - "displayName": "Top 10% of most attacked users", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject257')._huntingQuerycontentId257,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject257')._huntingQuerycontentId257,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject258').huntingQueryTemplateSpecName258]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 URL domains attacking organization_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject258').huntingQueryVersion258]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_258", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 URL domains attacking organization", - "category": "Hunting Queries", - "query": "EmailEvents \n| where ThreatTypes != \"\" \n| extend detection= parse_json(DetectionMethods) \n| extend Spam = tostring(detection.Spam) \n| extend Phish = tostring(detection.Phish) \n| where (Spam == '[\"URL malicious reputation\"]') or (Phish == '[\"URL malicious reputation\"]') or (Phish == '[\"URL detonation reputation\"]') or (Phish == '[\"URL detonation\"]') \n| join EmailUrlInfo on NetworkMessageId\n| summarize total=count() by UrlDomain \n| top 10 by total \n| render columnchart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing list of top 10 URL domains attacking the organization" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject258')._huntingQuerycontentId258),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 258", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject258')._huntingQuerycontentId258)]", - "contentId": "[variables('huntingQueryObject258')._huntingQuerycontentId258]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject258').huntingQueryVersion258]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject258')._huntingQuerycontentId258]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 URL domains attacking organization", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject258')._huntingQuerycontentId258,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject258')._huntingQuerycontentId258,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject259').huntingQueryTemplateSpecName259]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top external malicious senders_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject259').huntingQueryVersion259]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_259", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top external malicious senders", - "category": "Hunting Queries", - "query": "EmailEvents \n| where Timestamp > ago(30d) \n| where EmailDirection == \"Inbound\" \n| summarize count() by SenderFromAddress \n| sort by count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing external top malicious email sender with malware or phishing emails in an organization in last 30 days" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject259')._huntingQuerycontentId259),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 259", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject259')._huntingQuerycontentId259)]", - "contentId": "[variables('huntingQueryObject259')._huntingQuerycontentId259]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject259').huntingQueryVersion259]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject259')._huntingQuerycontentId259]", - "contentKind": "HuntingQuery", - "displayName": "Top external malicious senders", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject259')._huntingQuerycontentId259,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject259')._huntingQuerycontentId259,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject260').huntingQueryTemplateSpecName260]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top targeted users_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject260').huntingQueryVersion260]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_260", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top targeted users", - "category": "Hunting Queries", - "query": "EmailEvents \n| where Timestamp > ago(30d) \n| where ThreatTypes has \"Malware\" or ThreatTypes has \"Phish\" \n| summarize count() by RecipientEmailAddress \n| sort by count_\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing top targeted users with malware or phishing emails in an organization in last 30 days" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject260')._huntingQuerycontentId260),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 260", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject260')._huntingQuerycontentId260)]", - "contentId": "[variables('huntingQueryObject260')._huntingQuerycontentId260]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject260').huntingQueryVersion260]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject260')._huntingQuerycontentId260]", - "contentKind": "HuntingQuery", - "displayName": "Top targeted users", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject260')._huntingQuerycontentId260,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject260')._huntingQuerycontentId260,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject261').huntingQueryTemplateSpecName261]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "End user malicious clicks_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject261').huntingQueryVersion261]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_261", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "End user malicious clicks", - "category": "Hunting Queries", - "query": "UrlClickEvents\n| where ThreatTypes contains \"Phish\"\n| extend UrlBlocked = ActionType has_any(\"ClickBlocked\")\n| extend UrlAllowed = ActionType has_any('ClickAllowed')\n| extend UrlPendingVerdict = ActionType has_any('UrlScanInProgress')\n| extend ErrorPage = ActionType has_any('UrlErrorPage')\n| summarize Blocked = countif(UrlBlocked), Allowed = countif(UrlAllowed), PendingVerdict = countif(UrlPendingVerdict), Error = countif(ErrorPage), ClickedThrough = countif(IsClickedThrough) by AccountUpn\n| sort by Blocked desc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing list of top users click on Phis URLs" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject261')._huntingQuerycontentId261),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 261", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject261')._huntingQuerycontentId261)]", - "contentId": "[variables('huntingQueryObject261')._huntingQuerycontentId261]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject261').huntingQueryVersion261]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject261')._huntingQuerycontentId261]", - "contentKind": "HuntingQuery", - "displayName": "End user malicious clicks", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject261')._huntingQuerycontentId261,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject261')._huntingQuerycontentId261,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject262').huntingQueryTemplateSpecName262]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "URL click count by click action_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject262').huntingQueryVersion262]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_262", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "URL click count by click action", - "category": "Hunting Queries", - "query": "UrlClickEvents \n| extend UrlBlocked = ActionType has_any(\"ClickBlocked\") \n| extend UrlAllowed = ActionType has_any('ClickAllowed') \n| extend UrlPendingVerdict = ActionType has_any('UrlScanInProgress') \n| extend ErrorPage = ActionType has_any('UrlErrorPage') \n| summarize Blocked = countif(UrlBlocked), Allowed = countif(UrlAllowed), PendingVerdict = countif(UrlPendingVerdict), Error = countif(ErrorPage), ClickedThrough = countif(IsClickedThrough)\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing URL click count by ClickAction" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject262')._huntingQuerycontentId262),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 262", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject262')._huntingQuerycontentId262)]", - "contentId": "[variables('huntingQueryObject262')._huntingQuerycontentId262]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject262').huntingQueryVersion262]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject262')._huntingQuerycontentId262]", - "contentKind": "HuntingQuery", - "displayName": "URL click count by click action", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject262')._huntingQuerycontentId262,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject262')._huntingQuerycontentId262,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject263').huntingQueryTemplateSpecName263]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "URL click on ZAP Email_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject263').huntingQueryVersion263]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_263", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "URL click on ZAP email", - "category": "Hunting Queries", - "query": "AlertInfo\n| where Title contains \"Email messages containing malicious URL removed after delivery\" and Timestamp > ago (7d)\n| join kind=inner (AlertEvidence| where EntityType == \"MailMessage\") on AlertId \n| join UrlClickEvents on NetworkMessageId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this query, we are looking for Url clicks on emails which get actioned by Zerohour auto purge" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject263')._huntingQuerycontentId263),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 263", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject263')._huntingQuerycontentId263)]", - "contentId": "[variables('huntingQueryObject263')._huntingQuerycontentId263]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject263').huntingQueryVersion263]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject263')._huntingQuerycontentId263]", - "contentKind": "HuntingQuery", - "displayName": "URL click on ZAP email", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject263')._huntingQuerycontentId263,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject263')._huntingQuerycontentId263,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject264').huntingQueryTemplateSpecName264]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "URL clicks actions by URL_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject264').huntingQueryVersion264]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_264", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "URL clicks actions by URL", - "category": "Hunting Queries", - "query": "UrlClickEvents\n| extend UrlBlocked = ActionType has_any(\"ClickBlocked\")\n| extend UrlAllowed = ActionType has_any('ClickAllowed')\n| extend UrlPendingVerdict = ActionType has_any('UrlScanInProgress')\n| extend ErrorPage = ActionType has_any('UrlErrorPage')\n| summarize Blocked = countif(UrlBlocked), Allowed = countif(UrlAllowed), PendingVerdict = countif(UrlPendingVerdict), Error = countif(ErrorPage), ClickedThrough = countif(IsClickedThrough) by Url\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this query, we are looking URL click actions by URL in the last 7 days" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject264')._huntingQuerycontentId264),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 264", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject264')._huntingQuerycontentId264)]", - "contentId": "[variables('huntingQueryObject264')._huntingQuerycontentId264]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject264').huntingQueryVersion264]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject264')._huntingQuerycontentId264]", - "contentKind": "HuntingQuery", - "displayName": "URL clicks actions by URL", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject264')._huntingQuerycontentId264,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject264')._huntingQuerycontentId264,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject265').huntingQueryTemplateSpecName265]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "URLClick details based on malicious URL click alert_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject265').huntingQueryVersion265]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_265", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "URLClick details based on malicious URL click alert", - "category": "Hunting Queries", - "query": "AlertInfo\n| where Title contains \"Potentially malicious\" and Timestamp > ago (30d)\n| join kind=inner (AlertEvidence| where EntityType == \"MailMessage\") on AlertId \n| join UrlClickEvents on NetworkMessageId\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "In this query, we are looking for Url clicks on emails which are generated the alert-A potentially malicious URL click was detected" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject265')._huntingQuerycontentId265),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 265", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject265')._huntingQuerycontentId265)]", - "contentId": "[variables('huntingQueryObject265')._huntingQuerycontentId265]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject265').huntingQueryVersion265]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject265')._huntingQuerycontentId265]", - "contentKind": "HuntingQuery", - "displayName": "URLClick details based on malicious URL click alert", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject265')._huntingQuerycontentId265,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject265')._huntingQuerycontentId265,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject266').huntingQueryTemplateSpecName266]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User clicked through events_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject266').huntingQueryVersion266]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_266", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User clicked through events", - "category": "Hunting Queries", - "query": "UrlClickEvents \n| where ActionType == \"ClickAllowed\" or IsClickedThrough !=\"0\" \n| where ThreatTypes has \"Phish\" \n| summarize by ReportId, IsClickedThrough, AccountUpn, NetworkMessageId, ThreatTypes\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps reviewing malicious clicks where user was allowed to proceed through malicious URL page." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject266')._huntingQuerycontentId266),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 266", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject266')._huntingQuerycontentId266)]", - "contentId": "[variables('huntingQueryObject266')._huntingQuerycontentId266]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject266').huntingQueryVersion266]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject266')._huntingQuerycontentId266]", - "contentKind": "HuntingQuery", - "displayName": "User clicked through events", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject266')._huntingQuerycontentId266,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject266')._huntingQuerycontentId266,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject267').huntingQueryTemplateSpecName267]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User clicks on malicious inbound emails_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject267').huntingQueryVersion267]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_267", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User clicks on malicious inbound emails", - "category": "Hunting Queries", - "query": "let UrlClicked = (UrlClickEvents\n| where ActionType == \"ClickAllowed\" or IsClickedThrough !=\"0\"\n| extend Device_IPv4 = IPAddress\n| project ActionType, Device_IPv4, Url, UrlChain, IPAddress, NetworkMessageId);\nEmailEvents\n| where Timestamp > ago(30d)\n| where isnotempty(ThreatTypes) and EmailDirection == \"Inbound\"\n| where ThreatTypes has_any (\"Malware\", \"Phish\")\n| extend SenderFromAddress_IPv4 = strcat(SenderFromAddress, \", \", SenderIPv4)\n| join kind = inner UrlClicked on NetworkMessageId\n| project Timestamp,NetworkMessageId, Subject, SenderFromAddress_IPv4, RecipientEmailAddress, ThreatTypes, ActionType, Url, UrlChain, Device_IPv4, LatestDeliveryLocation, LatestDeliveryAction, EmailAction, EmailActionPolicy\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query provides insights on users who clicked on a suspicious URL" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject267')._huntingQuerycontentId267),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 267", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject267')._huntingQuerycontentId267)]", - "contentId": "[variables('huntingQueryObject267')._huntingQuerycontentId267]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject267').huntingQueryVersion267]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject267')._huntingQuerycontentId267]", - "contentKind": "HuntingQuery", - "displayName": "User clicks on malicious inbound emails", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject267')._huntingQuerycontentId267,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject267')._huntingQuerycontentId267,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject268').huntingQueryTemplateSpecName268]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "User clicks on phishing URLs in emails_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject268').huntingQueryVersion268]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_268", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "User clicks on phishing URLs in emails", - "category": "Hunting Queries", - "query": "UrlClickEvents \n| where ThreatTypes has \"Phish\" \n| join EmailEvents on NetworkMessageId, $left.AccountUpn == $right.RecipientEmailAddress \n| project Timestamp, Url, ActionType, AccountUpn, ReportId, NetworkMessageId, ThreatTypes, IsClickedThrough, DeliveryLocation, OrgLevelAction, UserLevelAction\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query helps in determining clickthroughs when email delivered because of detection overrides." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject268')._huntingQuerycontentId268),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 268", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject268')._huntingQuerycontentId268)]", - "contentId": "[variables('huntingQueryObject268')._huntingQuerycontentId268]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject268').huntingQueryVersion268]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject268')._huntingQuerycontentId268]", - "contentKind": "HuntingQuery", - "displayName": "User clicks on phishing URLs in emails", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject268')._huntingQuerycontentId268,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject268')._huntingQuerycontentId268,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject269').huntingQueryTemplateSpecName269]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malicious Clicks allowed (click-through)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject269').huntingQueryVersion269]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_269", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malicious Clicks allowed (click-through)", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nUrlClickEvents\n| where TimeGenerated >= TimeStart\n| where IsClickedThrough == 1\n| where isnotempty(ThreatTypes)\n| make-series Count = count() default = 0 on TimeGenerated from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Visualises malicious URL clicks that were allowed through Safe Links over time, helping analysts identify when users bypass security controls and click on malicious content.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject269')._huntingQuerycontentId269),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 269", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject269')._huntingQuerycontentId269)]", - "contentId": "[variables('huntingQueryObject269')._huntingQuerycontentId269]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject269').huntingQueryVersion269]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject269')._huntingQuerycontentId269]", - "contentKind": "HuntingQuery", - "displayName": "Malicious Clicks allowed (click-through)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject269')._huntingQuerycontentId269,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject269')._huntingQuerycontentId269,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject270').huntingQueryTemplateSpecName270]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Malicious Emails with QR code Urls_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject270').huntingQueryVersion270]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_270", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Malicious Emails with QR code Urls", - "category": "Hunting Queries", - "query": "EmailUrlInfo\n| where UrlLocation == \"QRCode\"\n| join kind=inner (\n EmailEvents\n | where isnotempty(ThreatTypes)\n | project NetworkMessageId, ThreatTypes\n) on NetworkMessageId\n| summarize count() by ThreatTypes\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Visualises emails containing QR code URLs that have been detected as malicious, helping analysts identify QR code-based attack campaigns.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject270')._huntingQuerycontentId270),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 270", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject270')._huntingQuerycontentId270)]", - "contentId": "[variables('huntingQueryObject270')._huntingQuerycontentId270]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject270').huntingQueryVersion270]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject270')._huntingQuerycontentId270]", - "contentKind": "HuntingQuery", - "displayName": "Malicious Emails with QR code Urls", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject270')._huntingQuerycontentId270,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject270')._huntingQuerycontentId270,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject271').huntingQueryTemplateSpecName271]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Phishing Email Url Redirector_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject271').huntingQueryVersion271]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_271", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "PhishingEmailUrlRedirector (1)", - "category": "Hunting Queries", - "query": "EmailUrlInfo\n//This regex identifies emails containing the \"T-Dot\" redirector pattern in the URL\n| where Url matches regex @\"s?\\:\\/\\/(?:www\\.)?t\\.(?:[\\w\\-\\.]+\\/+)+(?:r|redirect)\\/?\\?\" \n //This regex narrows in on emails that contain the known malicious domain pattern in the URL from the most recent campaigns\n and Url matches regex @\"[a-zA-Z]\\-[a-zA-Z]{2}\\.(xyz|club|shop)\"\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "The query helps detect emails associated with the open redirector URL campaign using Defender for Office 365 data." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject271')._huntingQuerycontentId271),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 271", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject271')._huntingQuerycontentId271)]", - "contentId": "[variables('huntingQueryObject271')._huntingQuerycontentId271]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject271').huntingQueryVersion271]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject271')._huntingQuerycontentId271]", - "contentKind": "HuntingQuery", - "displayName": "PhishingEmailUrlRedirector (1)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject271')._huntingQuerycontentId271,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject271')._huntingQuerycontentId271,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject272').huntingQueryTemplateSpecName272]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "SafeLinks URL detections_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject272').huntingQueryVersion272]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_272", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "SafeLinks URL detections", - "category": "Hunting Queries", - "query": "EmailEvents \n| where DetectionMethods != \"\" \n| extend detection= tostring(parse_json(DetectionMethods).Phish) \n| where detection == '[\"URL detonation reputation\"]' or detection == '[\"URL detonation\"]' \n| summarize total=count() by bin(Timestamp, 1d) \n| order by Timestamp asc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query provides insights on the detections done by SafeLinks protection in Defender for Office 365" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject272')._huntingQuerycontentId272),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 272", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject272')._huntingQuerycontentId272)]", - "contentId": "[variables('huntingQueryObject272')._huntingQuerycontentId272]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject272').huntingQueryVersion272]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject272')._huntingQuerycontentId272]", - "contentKind": "HuntingQuery", - "displayName": "SafeLinks URL detections", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject272')._huntingQuerycontentId272,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject272')._huntingQuerycontentId272,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject273').huntingQueryTemplateSpecName273]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 Users clicking on Malicious URLs (Malware)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject273').huntingQueryVersion273]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_273", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 Users clicking on Malicious URLs (Malware)", - "category": "Hunting Queries", - "query": "UrlClickEvents\n| where Timestamp > ago(30d)\n| summarize TotalClickCount = count(), MalwareClickCount = countif(ThreatTypes has \"Malware\") by AccountUpn\n| extend Bad_Click_Percentage = round(100.0 * MalwareClickCount / TotalClickCount, 2)\n| where MalwareClickCount != 0\n| top 10 by MalwareClickCount\n| project User = AccountUpn, MalwareClicks = MalwareClickCount, TotalClicks = TotalClickCount, Bad_Click_Percentage\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Visualises the top 10 users with click attempts on URLs in emails detected as malware, helping analysts identify risky user behaviour and potential targets.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject273')._huntingQuerycontentId273),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 273", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject273')._huntingQuerycontentId273)]", - "contentId": "[variables('huntingQueryObject273')._huntingQuerycontentId273]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject273').huntingQueryVersion273]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject273')._huntingQuerycontentId273]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 Users clicking on Malicious URLs (Malware)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject273')._huntingQuerycontentId273,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject273')._huntingQuerycontentId273,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject274').huntingQueryTemplateSpecName274]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 Users clicking on Malicious URLs (Phish)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject274').huntingQueryVersion274]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_274", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 Users clicking on Malicious URLs (Phish)", - "category": "Hunting Queries", - "query": "UrlClickEvents\n| where Timestamp > ago(30d)\n| summarize TotalClickCount = count(), PhishClickCount = countif(ThreatTypes has \"Phish\") by AccountUpn\n| extend Bad_Click_Percentage = round(100.0 * PhishClickCount / TotalClickCount, 2)\n| where PhishClickCount != 0\n| top 10 by PhishClickCount\n| project User = AccountUpn, PhishClicks = PhishClickCount, TotalClicks = TotalClickCount, Bad_Click_Percentage\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Visualises the top 10 users with click attempts on URLs in emails detected as phishing, helping analysts identify risky user behaviour and potential targets.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject274')._huntingQuerycontentId274),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 274", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject274')._huntingQuerycontentId274)]", - "contentId": "[variables('huntingQueryObject274')._huntingQuerycontentId274]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject274').huntingQueryVersion274]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject274')._huntingQuerycontentId274]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 Users clicking on Malicious URLs (Phish)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject274')._huntingQuerycontentId274,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject274')._huntingQuerycontentId274,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject275').huntingQueryTemplateSpecName275]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Top 10 Users clicking on Malicious URLs (Spam)_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject275').huntingQueryVersion275]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_275", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Top 10 Users clicking on Malicious URLs (Spam)", - "category": "Hunting Queries", - "query": "UrlClickEvents\n| where Timestamp > ago(30d)\n| summarize TotalClickCount = count(), SpamClickCount = countif(ThreatTypes has \"Spam\") by AccountUpn\n| extend Bad_Click_Percentage = round(100.0 * SpamClickCount / TotalClickCount, 2)\n| where SpamClickCount != 0\n| top 10 by SpamClickCount\n| project User = AccountUpn, SpamClicks = SpamClickCount, TotalClicks = TotalClickCount, Bad_Click_Percentage\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Visualises the top 10 users with click attempts on URLs in emails detected as spam, helping analysts identify risky user behaviour and potential targets.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject275')._huntingQuerycontentId275),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 275", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject275')._huntingQuerycontentId275)]", - "contentId": "[variables('huntingQueryObject275')._huntingQuerycontentId275]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject275').huntingQueryVersion275]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject275')._huntingQuerycontentId275]", - "contentKind": "HuntingQuery", - "displayName": "Top 10 Users clicking on Malicious URLs (Spam)", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject275')._huntingQuerycontentId275,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject275')._huntingQuerycontentId275,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject276').huntingQueryTemplateSpecName276]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "URL Click attempts by threat type_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject276').huntingQueryVersion276]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_276", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "URL Click attempts by threat type", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nUrlClickEvents\n| where TimeGenerated >= TimeStart\n| where isnotempty(ThreatTypes)\n| summarize Count = count() by ThreatTypes, bin(TimeGenerated, 1d)\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Visualises the total amount of click attempts on URLs with detections, split by the different threat types identified.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject276')._huntingQuerycontentId276),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 276", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject276')._huntingQuerycontentId276)]", - "contentId": "[variables('huntingQueryObject276')._huntingQuerycontentId276]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject276').huntingQueryVersion276]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject276')._huntingQuerycontentId276]", - "contentKind": "HuntingQuery", - "displayName": "URL Click attempts by threat type", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject276')._huntingQuerycontentId276,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject276')._huntingQuerycontentId276,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject277').huntingQueryTemplateSpecName277]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "URL Clicks by Action_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject277').huntingQueryVersion277]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_277", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "URL Clicks by Action", - "category": "Hunting Queries", - "query": "UrlClickEvents\n| summarize Count = count() by ActionType\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Summarizes URL click events by action type to help analysts understand user click behavior and policy effectiveness.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject277')._huntingQuerycontentId277),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 277", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject277')._huntingQuerycontentId277)]", - "contentId": "[variables('huntingQueryObject277')._huntingQuerycontentId277]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject277').huntingQueryVersion277]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject277')._huntingQuerycontentId277]", - "contentKind": "HuntingQuery", - "displayName": "URL Clicks by Action", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject277')._huntingQuerycontentId277,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject277')._huntingQuerycontentId277,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject278').huntingQueryTemplateSpecName278]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "URLs by location_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject278').huntingQueryVersion278]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_278", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "URLs by location", - "category": "Hunting Queries", - "query": "EmailUrlInfo\n| summarize Count = count() by UrlLocation\n| render piechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "Visualises where URLs have been identified in emails, summarizing by location (for example: Attachment, header, body) to help analysts understand distribution and risk.\nBased on Defender for Office 365 workbook: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-2-build-custom-email-security-reports-and-dashboards-with-workbooks-in-micr/4411303" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject278')._huntingQuerycontentId278),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 278", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject278')._huntingQuerycontentId278)]", - "contentId": "[variables('huntingQueryObject278')._huntingQuerycontentId278]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject278').huntingQueryVersion278]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject278')._huntingQuerycontentId278]", - "contentKind": "HuntingQuery", - "displayName": "URLs by location", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject278')._huntingQuerycontentId278,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject278')._huntingQuerycontentId278,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject279').huntingQueryTemplateSpecName279]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Post Delivery Events by Admin_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject279').huntingQueryVersion279]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_279", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Post Delivery Events by Admin", - "category": "Hunting Queries", - "query": "let gran = 1d;\nlet minTime = startofday(ago(30d));\nlet maxTime = startofday(now());\nlet agg = materialize(EmailPostDeliveryEvents\n | where Timestamp >= minTime and Timestamp < maxTime\n | where ActionTrigger has \"AdminAction\"\n | summarize [\"Soft Delete\"] = countif(Action has 'Soft Delete'), [\"Hard Delete\"] = countif(Action has 'Hard Delete'), [\"Moved to junk folder\"] = countif(Action has 'Moved to junk folder'), [\"Moved to inbox\"] = countif(Action has 'Moved to inbox'), [\"Quarantine release\"] = countif(Action has 'Quarantine release') by Timestamp = bin(Timestamp, gran));\nrange Timestamp from minTime to maxTime - 1d step gran\n| join kind=leftouter (agg) on Timestamp\n| project Timestamp, [\"Soft Delete\"] = coalesce([\"Soft Delete\"], 0), [\"Hard Delete\"] = coalesce([\"Hard Delete\"], 0), [\"Moved to junk folder\"] = coalesce([\"Moved to junk folder\"], 0), [\"Moved to inbox\"] = coalesce([\"Moved to inbox\"], 0), [\"Quarantine release\"] = coalesce([\"Quarantine release\"], 0)\n| sort by Timestamp asc\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the daily amount of emails that had an admin post delivery action, summarizing the data by action type" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject279')._huntingQuerycontentId279),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 279", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject279')._huntingQuerycontentId279)]", - "contentId": "[variables('huntingQueryObject279')._huntingQuerycontentId279]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject279').huntingQueryVersion279]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject279')._huntingQuerycontentId279]", - "contentKind": "HuntingQuery", - "displayName": "Post Delivery Events by Admin", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject279')._huntingQuerycontentId279,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject279')._huntingQuerycontentId279,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject280').huntingQueryTemplateSpecName280]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Post Delivery Events by Location_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject280').huntingQueryVersion280]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_280", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Post Delivery Events by Location", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nlet quarantine=EmailPostDeliveryEvents\n| where TimeGenerated >= TimeStart\n| where DeliveryLocation has 'Quarantine'\n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Quarantine\";\nlet delete=EmailPostDeliveryEvents\n| where TimeGenerated >= TimeStart\n| where DeliveryLocation has 'Delete'\n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Delete\";\nlet junk=EmailPostDeliveryEvents\n| where TimeGenerated >= TimeStart\n| where DeliveryLocation has 'Junk'\n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Junk\";\nlet inbox=EmailPostDeliveryEvents\n| where TimeGenerated >= TimeStart\n| where DeliveryLocation has 'Inbox'\n| make-series Count= count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| extend Details = \"Inbox\";\nunion quarantine,delete,junk,inbox\n| project Count, Details, Timestamp\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the amount of emails that had a post delivery action, summarizing the data daily by the final location as a result of the action" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject280')._huntingQuerycontentId280),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 280", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject280')._huntingQuerycontentId280)]", - "contentId": "[variables('huntingQueryObject280')._huntingQuerycontentId280]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject280').huntingQueryVersion280]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject280')._huntingQuerycontentId280]", - "contentKind": "HuntingQuery", - "displayName": "Post Delivery Events by Location", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject280')._huntingQuerycontentId280,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject280')._huntingQuerycontentId280,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject281').huntingQueryTemplateSpecName281]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Post Delivery Events by ZAP type_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject281').huntingQueryVersion281]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_281", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Post Delivery Events by ZAP type", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailPostDeliveryEvents\n| where Timestamp >= TimeStart\n| where ActionType has \"ZAP\"\n| where Timestamp < TimeEnd\n| make-series ['Spam ZAP'] = countif(ActionType has 'Spam ZAP'), ['Phish ZAP'] = countif(ActionType has 'Phish ZAP'), ['Malware ZAP'] = countif(ActionType has 'Malware ZAP') default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the daily amount of emails that had a post delivery action from zero-hour auto purge, summarizing by phish,spam or malware detection action" - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject281')._huntingQuerycontentId281),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 281", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject281')._huntingQuerycontentId281)]", - "contentId": "[variables('huntingQueryObject281')._huntingQuerycontentId281]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject281').huntingQueryVersion281]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject281')._huntingQuerycontentId281]", - "contentKind": "HuntingQuery", - "displayName": "Post Delivery Events by ZAP type", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject281')._huntingQuerycontentId281,'-', '1.1.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject281')._huntingQuerycontentId281,'-', '1.1.0')))]", - "version": "1.1.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject282').huntingQueryTemplateSpecName282]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "Post Delivery Events over time_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject282').huntingQueryVersion282]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_282", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Post Delivery Events over time", - "category": "Hunting Queries", - "query": "let TimeStart = startofday(ago(30d));\nlet TimeEnd = startofday(now());\nEmailPostDeliveryEvents\n| where TimeGenerated >= TimeStart\n| where ActionType has \"ZAP\"\n| make-series ZappedEmails = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d\n| render timechart\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query visualises the daily amount of emails that had a post delivery action from zero-hour auto purge." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject282')._huntingQuerycontentId282),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 282", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject282')._huntingQuerycontentId282)]", - "contentId": "[variables('huntingQueryObject282')._huntingQuerycontentId282]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject282').huntingQueryVersion282]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject282')._huntingQuerycontentId282]", - "contentKind": "HuntingQuery", - "displayName": "Post Delivery Events over time", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject282')._huntingQuerycontentId282,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject282')._huntingQuerycontentId282,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject283').huntingQueryTemplateSpecName283]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "EmailDelivered-ToInbox_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject283').huntingQueryVersion283]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_283", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Determine Successfully Delivered Phishing Emails to Inbox/Junk folder.", - "category": "Hunting Queries", - "query": "EmailEvents\n| where isnotempty(ThreatTypes) and DeliveryLocation in~ (\"Inbox/folder\",\"Junk folder\")\n| extend Name = tostring(split(SenderFromAddress, '@', 0)[0]), UPNSuffix = tostring(split(SenderFromAddress, '@', 1)[0])\n| extend Account_0_Name = Name\n| extend Account_0_UPNSuffix = UPNSuffix\n| extend IP_0_Address = SenderIPv4\n| extend MailBox_0_MailboxPrimaryAddress = RecipientEmailAddress\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query identifies threats which got successfully delivered to Inbox/Junk folder." - }, - { - "name": "tactics", - "value": "InitialAccess" - }, - { - "name": "techniques", - "value": "T1566" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject283')._huntingQuerycontentId283),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 283", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject283')._huntingQuerycontentId283)]", - "contentId": "[variables('huntingQueryObject283')._huntingQuerycontentId283]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject283').huntingQueryVersion283]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject283')._huntingQuerycontentId283]", - "contentKind": "HuntingQuery", - "displayName": "Determine Successfully Delivered Phishing Emails to Inbox/Junk folder.", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject283')._huntingQuerycontentId283,'-', '1.0.2')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject283')._huntingQuerycontentId283,'-', '1.0.2')))]", - "version": "1.0.2" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject284').huntingQueryTemplateSpecName284]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "AnomalousPayloadDeliveredWithISOFile_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject284').huntingQueryVersion284]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_284", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Anomalous Payload Delivered from ISO files", - "category": "Hunting Queries", - "query": "DeviceEvents\n| where TimeGenerated > ago(30d) \n| where ActionType == 'BrowserLaunchedToOpenUrl' \n| where RemoteUrl endswith \".lnk\"\n| where RemoteUrl !startswith \"C:\"\n| project LNKLaunchTimestamp = TimeGenerated, DeviceName, RemoteUrl\n| parse RemoteUrl with Drive '\\\\' *\n| extend Drive= tostring(Drive)\n| where isnotempty(Drive)\n| join kind=innerunique (\nDeviceProcessEvents\n| where TimeGenerated > ago(30d)\n| where FolderPath !startswith \"C:\"\n| parse FolderPath with Drive '\\\\' *\n| project Drive= tostring(Drive), StartedProcessTimestamp = TimeGenerated, StartedProcessName = FileName, StartedProcessSHA1 = SHA1, StartedProcessCommandline = ProcessCommandLine, StartedProcessPath = FolderPath, DeviceName, StartedProcessParentName = InitiatingProcessFileName, StartedProcessParentCmdline = InitiatingProcessCommandLine, StartedParentProcessFolderPath = InitiatingProcessFolderPath, StartedProcessGrandParent = InitiatingProcessParentFileName, TimeGenerated\n) on DeviceName, Drive\n| where StartedProcessTimestamp between (LNKLaunchTimestamp ..(LNKLaunchTimestamp+1m))\n| project-away Drive1, DeviceName1\n| project-reorder LNKLaunchTimestamp, StartedProcessTimestamp, DeviceName, RemoteUrl, Drive, StartedProcessName, StartedProcessSHA1, StartedProcessPath,StartedProcessCommandline, StartedProcessParentName, StartedProcessParentCmdline, StartedParentProcessFolderPath, StartedProcessGrandParent, TimeGenerated\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query searches for lnk file executions from other locations than C: drive, which can relate to mounted ISO-files." - }, - { - "name": "tactics", - "value": "Execution" - }, - { - "name": "techniques", - "value": "T1204" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject284')._huntingQuerycontentId284),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 284", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject284')._huntingQuerycontentId284)]", - "contentId": "[variables('huntingQueryObject284')._huntingQuerycontentId284]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject284').huntingQueryVersion284]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject284')._huntingQuerycontentId284]", - "contentKind": "HuntingQuery", - "displayName": "Anomalous Payload Delivered from ISO files", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject284')._huntingQuerycontentId284,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject284')._huntingQuerycontentId284,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject285').huntingQueryTemplateSpecName285]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "BitsadminActivity_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject285').huntingQueryVersion285]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_285", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Bitsadmin Activity", - "category": "Hunting Queries", - "query": "DeviceProcessEvents\n| where \n (FileName =~ \"bitsadmin.exe\" or column_ifexists('ProcessVersionInfoOriginalFileName','ColumnNotAvailable') =~ 'bitsadmin.exe')\n and ProcessCommandLine has_any ('/Transfer','/AddFile', '/AddFileSet','/AddFileWithRanges')\n| extend \n ParsedCommandLine = parse_command_line(ProcessCommandLine,'windows')\n| extend \n RemoteUrl = tostring(ParsedCommandLine[-2]),\n LocalFile= tostring(ParsedCommandLine[-1]),\n Direction = iff(ProcessCommandLine has \"/Upload\", 'Upload', 'Download')\n| project-reorder \n TimeGenerated,\n DeviceId,\n DeviceName,\n Direction,\n RemoteUrl,\n LocalFile,\n InitiatingProcessFolderPath,\n InitiatingProcessAccountDomain,\n InitiatingProcessAccountName,\n InitiatingProcessSHA256,\n ProcessCommandLine\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query searches for use of bitsadmin.exe for file transfer, which can be used for legitimate purposes or as part of a malware downloader." - }, - { - "name": "tactics", - "value": "Persistence,CommandAndControl,Exfiltration" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject285')._huntingQuerycontentId285),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 285", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject285')._huntingQuerycontentId285)]", - "contentId": "[variables('huntingQueryObject285')._huntingQuerycontentId285]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject285').huntingQueryVersion285]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject285')._huntingQuerycontentId285]", - "contentKind": "HuntingQuery", - "displayName": "Bitsadmin Activity", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject285')._huntingQuerycontentId285,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject285')._huntingQuerycontentId285,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject286').huntingQueryTemplateSpecName286]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MaliciousUseOfMSIExec_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject286').huntingQueryVersion286]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_286", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Detect Malicious use of MSIExec", - "category": "Hunting Queries", - "query": "//Find possible download and execution using Msiexec\nDeviceProcessEvents\n| where TimeGenerated > ago(7d)\n//MSIExec\n| where FileName =~ \"msiexec.exe\" and \n//With domain in command line\n(ProcessCommandLine has \"http\" and ProcessCommandLine has \"return\")//Find PowerShell running files from the temp folder\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query detects possible download and execution using Msiexec." - }, - { - "name": "tactics", - "value": "Execution,PrivilegeEscalation,CredentialAccess" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject286')._huntingQuerycontentId286),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 286", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject286')._huntingQuerycontentId286)]", - "contentId": "[variables('huntingQueryObject286')._huntingQuerycontentId286]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject286').huntingQueryVersion286]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject286')._huntingQuerycontentId286]", - "contentKind": "HuntingQuery", - "displayName": "Detect Malicious use of MSIExec", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject286')._huntingQuerycontentId286,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject286')._huntingQuerycontentId286,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject287').huntingQueryTemplateSpecName287]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "MaliciousUseOfMsiExecMimikatz_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject287').huntingQueryVersion287]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_287", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Detect Malicious use of Msiexec Mimikatz", - "category": "Hunting Queries", - "query": "DeviceProcessEvents\n| where Timestamp > ago(7d)\n| where InitiatingProcessFileName =~ \"msiexec.exe\"\n//Mimikatz commands\nand (ProcessCommandLine contains \"privilege::\" \nor ProcessCommandLine has \"sekurlsa\" \nor ProcessCommandLine contains \"token::\")\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query searches for malicious use of msiexec.exe, particularly alongside mimikatz, a common credential dumper and privilege escalation tool." - }, - { - "name": "tactics", - "value": "Execution,CredentialAccess,PrivilegeEscalation" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject287')._huntingQuerycontentId287),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 287", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject287')._huntingQuerycontentId287)]", - "contentId": "[variables('huntingQueryObject287')._huntingQuerycontentId287]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject287').huntingQueryVersion287]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject287')._huntingQuerycontentId287]", - "contentKind": "HuntingQuery", - "displayName": "Detect Malicious use of Msiexec Mimikatz", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject287')._huntingQuerycontentId287,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject287')._huntingQuerycontentId287,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject288').huntingQueryTemplateSpecName288]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "OfficeAppsLaunchingWscript_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject288').huntingQueryVersion288]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_288", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Office Apps Launching Wscipt", - "category": "Hunting Queries", - "query": "DeviceProcessEvents \n| where InitiatingProcessFileName in~('winword.exe', 'excel.exe', 'outlook.exe') \n| where FileName =~ \"wscript.exe\" and ProcessCommandLine has \".jse\" \n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "The query searches for Office applications launching wscript.exe to run a JSE file." - }, - { - "name": "tactics", - "value": "LateralMovement,Collection,CommandAndControl" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject288')._huntingQuerycontentId288),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 288", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject288')._huntingQuerycontentId288)]", - "contentId": "[variables('huntingQueryObject288')._huntingQuerycontentId288]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject288').huntingQueryVersion288]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject288')._huntingQuerycontentId288]", - "contentKind": "HuntingQuery", - "displayName": "Office Apps Launching Wscipt", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject288')._huntingQuerycontentId288,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject288')._huntingQuerycontentId288,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject289').huntingQueryTemplateSpecName289]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "PotentialKerberoastActivities_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject289').huntingQueryVersion289]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_289", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Detect Potential kerberoast Activities", - "category": "Hunting Queries", - "query": "let MaxCount = 70; //Number of requests per 2 minute timeframe, depending on org size.\nIdentityLogonEvents\n| where TimeGenerated > ago(1d)\n| where ActionType == \"LogonSuccess\"\n| where Protocol == \"Kerberos\"\n| extend json = todynamic(parse_json(tostring(AdditionalFields)))\n| extend SPN = json.Spns,\n AttackTechniques = json.AttackTechniques\n | project-away json\n| where isnotempty(SPN)\n| where AttackTechniques has \"T1558.003\"\n| mv-expand SPN\n | extend SPNType = tostring(extract(@\"^\\w+\",0,tostring(SPN)))\n| distinct tostring(SPN),DeviceName,AccountUpn, AccountSid,bin(TimeGenerated,2m),ReportId, tostring(AttackTechniques)\n| summarize count(), SPNS=(make_list(SPN, 100000)),ReportId=tostring((make_list(ReportId, 100000))[0]) by AccountUpn,AccountSid,DeviceName, bin(TimeGenerated, 2m), tostring(AttackTechniques)\n| extend SPNS = (replace_regex(tostring(SPNS), @'[^\\w+-\\/]+', ''))\n| where count_ >= MaxCount\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query aim to detect if someone requests service tickets (where count => maxcount). The query requires trimming to set a baseline level for MaxCount." - }, - { - "name": "tactics", - "value": "LateralMovement" - }, - { - "name": "techniques", - "value": "T1558.003" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject289')._huntingQuerycontentId289),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 289", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject289')._huntingQuerycontentId289)]", - "contentId": "[variables('huntingQueryObject289')._huntingQuerycontentId289]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject289').huntingQueryVersion289]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject289')._huntingQuerycontentId289]", - "contentKind": "HuntingQuery", - "displayName": "Detect Potential kerberoast Activities", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject289')._huntingQuerycontentId289,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject289')._huntingQuerycontentId289,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject290').huntingQueryTemplateSpecName290]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "PowerShellDownloads_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject290').huntingQueryVersion290]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_290", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "PowerShell Downloads", - "category": "Hunting Queries", - "query": "DeviceProcessEvents\n| where TimeGenerated > ago(7d)\n| where FileName in~ (\"powershell.exe\", \"powershell_ise.exe\")\n| where ProcessCommandLine has \"Net.WebClient\"\n or ProcessCommandLine has \"DownloadFile\"\n or ProcessCommandLine has \"Invoke-WebRequest\"\n or ProcessCommandLine has \"Invoke-Shellcode\"\n or ProcessCommandLine has \"http\"\n or ProcessCommandLine has \"IEX\"\n or ProcessCommandLine has \"Start-BitsTransfer\"\n or ProcessCommandLine has \"mpcmdrun.exe\"\n| project TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine\n| top 100 by TimeGenerated\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "The query searches for PowerShell execution events that could involve a download." - }, - { - "name": "tactics", - "value": "Execution" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject290')._huntingQuerycontentId290),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 290", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject290')._huntingQuerycontentId290)]", - "contentId": "[variables('huntingQueryObject290')._huntingQuerycontentId290]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject290').huntingQueryVersion290]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject290')._huntingQuerycontentId290]", - "contentKind": "HuntingQuery", - "displayName": "PowerShell Downloads", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject290')._huntingQuerycontentId290,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject290')._huntingQuerycontentId290,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject291').huntingQueryTemplateSpecName291]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "SuspiciousAppExeutedByWebserver_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject291').huntingQueryVersion291]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_291", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Webserver Executing Suspicious Applications", - "category": "Hunting Queries", - "query": "DeviceProcessEvents\n| where TimeGenerated > ago(7d)\n| where InitiatingProcessFileName in~ ('w3wp.exe', 'httpd.exe') // 'sqlservr.exe')\n| where FileName in~ ('cmd.exe', 'powershell.exe', 'cscript.exe', 'wscript.exe', 'net.exe', 'net1.exe', 'ping.exe', 'whoami.exe')\n| summarize instances = count() by ProcessCommandLine, FolderPath, DeviceName, DeviceId \n| order by instances asc\n", - "version": 2, - "tags": [ - { - "name": "description", - "value": "This query looks for common webserver process names and identifies any processes launched using a scripting language (cmd, powershell, wscript, cscript)." - }, - { - "name": "tactics", - "value": "Execution" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject291')._huntingQuerycontentId291),'/'))))]", - "properties": { - "description": "Microsoft Defender XDR Hunting Query 291", - "parentId": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('huntingQueryObject291')._huntingQuerycontentId291)]", - "contentId": "[variables('huntingQueryObject291')._huntingQuerycontentId291]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryObject291').huntingQueryVersion291]", - "source": { - "kind": "Solution", - "name": "Microsoft Defender XDR", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - }, - "packageKind": "Solution", - "packageVersion": "[variables('_solutionVersion')]", - "packageName": "[variables('_solutionName')]", - "packageId": "[variables('_solutionId')]", - "contentSchemaVersion": "3.0.0", - "contentId": "[variables('huntingQueryObject291')._huntingQuerycontentId291]", - "contentKind": "HuntingQuery", - "displayName": "Webserver Executing Suspicious Applications", - "contentProductId": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject291')._huntingQuerycontentId291,'-', '1.0.0')))]", - "id": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('huntingQueryObject291')._huntingQuerycontentId291,'-', '1.0.0')))]", - "version": "1.0.0" - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", - "apiVersion": "2023-04-01-preview", - "name": "[variables('huntingQueryObject292').huntingQueryTemplateSpecName292]", - "location": "[parameters('workspace-location')]", - "dependsOn": [ - "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" - ], - "properties": { - "description": "SuspiciousMshtaUsage_HuntingQueries Hunting Query with template version 3.0.18", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryObject292').huntingQueryVersion292]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2025-07-01", - "name": "Microsoft_Defender_XDR_Hunting_Query_292", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Detect Suspicious Mshta Usage", - "category": "Hunting Queries", - "query": "// mshta.exe script launching processes\nDeviceProcessEvents \n| where Timestamp > ago(7d)\nand InitiatingProcessFileName =~ 'mshta.exe'\nand InitiatingProcessCommandLine contains '