ProofPointTAPMessagesDeliveredV2_CL
| mv-expand todynamic(threatsInfoMap)
| mv-expand todynamic(messageParts)
| extend threatType = tostring(threatsInfoMap.threatType), classification = tostring(threatsInfoMap.classification)
| extend filename = tostring(messageParts.filename)
| where threatType =~ "attachment" and classification =~ "malware"
| summarize filenames = make_set(filename), StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), count() by TimeGenerated, Sender = sender, SenderIPAddress = senderIP, Recipient = tostring(recipient), threatType, classification, Subject = subject
| mv-expand todynamic(Recipient)
| extend RecipientName = tostring(split(Recipient, "@")[0]), RecipientUPNSuffix = tostring(split(Recipient, "@")[1])
| extend SenderName = tostring(split(Sender, "@")[0]), SenderUPNSuffix = tostring(split(Sender, "@")[1])
description: |
'This query identifies a message containing a malware attachment that was delivered.'
kind: Scheduled
tactics:
- InitialAccess
requiredDataConnectors:
- connectorId: ProofpointTAP
dataTypes:
- ProofPointTAPMessagesDeliveredV2_CL
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/ProofPointTap/Analytic Rules/MalwareAttachmentDelivered.yaml
severity: Medium
name: Malware attachment delivered
triggerThreshold: 0
queryPeriod: 1h
query: |
ProofPointTAPMessagesDeliveredV2_CL
| mv-expand todynamic(threatsInfoMap)
| mv-expand todynamic(messageParts)
| extend threatType = tostring(threatsInfoMap.threatType), classification = tostring(threatsInfoMap.classification)
| extend filename = tostring(messageParts.filename)
| where threatType =~ "attachment" and classification =~ "malware"
| summarize filenames = make_set(filename), StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), count() by TimeGenerated, Sender = sender, SenderIPAddress = senderIP, Recipient = tostring(recipient), threatType, classification, Subject = subject
| mv-expand todynamic(Recipient)
| extend RecipientName = tostring(split(Recipient, "@")[0]), RecipientUPNSuffix = tostring(split(Recipient, "@")[1])
| extend SenderName = tostring(split(Sender, "@")[0]), SenderUPNSuffix = tostring(split(Sender, "@")[1])
relevantTechniques:
- T1566.001
id: 0558155e-4556-447e-9a22-828f2a7de06b
queryFrequency: 1h
status: Available
triggerOperator: gt
version: 1.0.5
entityMappings:
- entityType: Account
fieldMappings:
- columnName: Recipient
identifier: FullName
- columnName: RecipientName
identifier: Name
- columnName: RecipientUPNSuffix
identifier: UPNSuffix
- entityType: Account
fieldMappings:
- columnName: Sender
identifier: FullName
- columnName: SenderName
identifier: Name
- columnName: SenderUPNSuffix
identifier: UPNSuffix
- entityType: IP
fieldMappings:
- columnName: SenderIPAddress
identifier: Address