Reported Microsoft Teams Calls
Description
This query lists Microsoft Teams calls that users reported to Microsoft, with the reporting user, to surface suspected voice phishing.
Query · kql
//This query lists Microsoft Teams calls that users reported to Microsoft over the last 30 days, with the reporting
//user, the reported calling party and the submission state.
//Reported calls matter because voice phishing is often layered onto Teams helpdesk impersonation so that malicious
//instructions never enter the chat log. Background: Microsoft Threat Intelligence, "Impersonating IT support: how threat
//actors turn a remote session into enterprise-wide access" (2 September 2026)
//https://www.microsoft.com/en-us/security/blog/2026/09/02/impersonating-it-support-threat-actors-turn-remote-session-into-enterprise-wide-access/
CloudAppEvents
| where Timestamp > ago(30d)
| extend RD = parse_json(RawEventData)
| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)
| where RecordType == "29" and SubmissionContentType == "TeamsCall"
//Exact match, because a graded submission also emits a UserSubmissionTriage record under the same SubmissionId.
| where ActionType in ("UserSubmission", "AdminSubmission")
| extend ReportedBy = tostring(RD.SubmitterDisplayName),
ReportedByEmail = tostring(RD.UserId),
ReportedCaller = tostring(RD.P2Sender),
ReportedCallerDomain = tostring(RD.P2SenderDomain),
SubmissionState = tostring(RD.SubmissionState),
Reporter = iif(ActionType == "AdminSubmission", "Admin", "User")
| project Timestamp,
['Teams Call Reported By']=ReportedBy,
['Reported By Email']=ReportedByEmail,
['Reported Caller']=ReportedCaller,
['Reported Caller Domain']=ReportedCallerDomain,
['Reporter Type']=Reporter,
['Teams Call Submission State']=SubmissionState
| sort by Timestamp desc