Rare Domains in External Teams Messages
Description
Detects rare domains (seen in fewer than 3 Teams messages) appearing in external Microsoft Teams threads within the last 24 hours.
Query · kql
let lookback = 1d;
// External Teams messages
let externalMsgs =
MessageEvents
| where Timestamp > ago(lookback) and IsExternalThread == true
| project MsgTime = Timestamp, TeamsMessageId, SenderEmailAddress, ME_ReportId = ReportId;
// URLs found in Teams messages
let urlsInMsgs =
MessageUrlInfo
| where Timestamp > ago(lookback)
| project MUI_Time = Timestamp, TeamsMessageId, Url, UrlDomain, MUI_ReportId = ReportId;
// Clicks coming from Teams
let clicks =
UrlClickEvents
| where Timestamp > ago(lookback) and Workload == "Teams"
| project ClickTime = Timestamp, Url, Clicker = AccountUpn, ClickAction = ActionType, UCE_ReportId = ReportId;
// Define "rare" domains in the period
let rareDomains =
urlsInMsgs
| summarize msgCount = dcount(TeamsMessageId) by UrlDomain
| where msgCount < 3;
rareDomains
| join kind=inner (urlsInMsgs) on UrlDomain
| join kind=leftouter (externalMsgs) on TeamsMessageId
| join kind=leftouter (clicks) on Url
| project
Timestamp = coalesce(ClickTime, MUI_Time, MsgTime),
UrlDomain,
Url,
SenderEmailAddress,
Clicker,
ClickTime,
ClickAction,
TeamsMessageId,
ReportId = coalesce(UCE_ReportId, MUI_ReportId, ME_ReportId)