Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
10e9eed
Update ProofpointPODMultipleProtectedEmailsToUnknownRecipient.yaml
samikroy Oct 27, 2021
f477e10
Update ProofpointPODEmailSenderIPinTIList.yaml
samikroy Oct 27, 2021
9b3047f
Update ProofpointPODEmailSenderInTIList.yaml
samikroy Oct 27, 2021
98ac97e
Update ProofpointPODEmailSenderIPinTIList.yaml
samikroy Oct 27, 2021
fdebf93
Update ProofpointPODEmailSenderInTIList.yaml
samikroy Oct 27, 2021
cfd2d1c
Update ProofpointPODEmailSenderIPinTIList.yaml
samikroy Oct 27, 2021
5d88559
Update ProofpointPODEmailSenderInTIList.yaml
samikroy Oct 27, 2021
a965547
Update ProofpointPODMultipleProtectedEmailsToUnknownRecipient.yaml
samikroy Oct 27, 2021
264e6f4
Update ProofpointPODMultipleProtectedEmailsToUnknownRecipient.yaml
samikroy Nov 25, 2021
1f1be8d
Update ProofpointPODEmailSenderInTIList.yaml
samikroy Nov 25, 2021
5d875d3
Update ProofpointPODEmailSenderIPinTIList.yaml
samikroy Nov 25, 2021
00381f1
Update ProofpointPODEmailSenderIPinTIList.yaml
samikroy Nov 30, 2021
f07c84e
Update ProofpointPODEmailSenderIPinTIList.yaml
samikroy Nov 30, 2021
795af62
Update ProofpointPODEmailSenderInTIList.yaml
samikroy Nov 30, 2021
d817b73
Update ProofpointPODEmailSenderIPinTIList.yaml
samikroy Nov 30, 2021
acf3d93
Update ProofpointPODEmailSenderIPinTIList.yaml
samikroy Nov 30, 2021
4ffd34d
Update ProofpointPODEmailSenderInTIList.yaml
samikroy Nov 30, 2021
295c227
Update ProofpointPODEmailSenderIPinTIList.yaml
samikroy Nov 30, 2021
db68581
Update ProofpointPODEmailSenderInTIList.yaml
samikroy Nov 30, 2021
37c3209
Update ProofpointPODEmailSenderInTIList.yaml
samikroy Nov 30, 2021
bd53f47
Update ProofpointPODEmailSenderInTIList.yaml
samikroy Nov 30, 2021
19eb24a
Update ProofpointPODEmailSenderIPinTIList.yaml
shainw Dec 2, 2021
d790e54
Update ProofpointPODEmailSenderIPinTIList.yaml
shainw Dec 2, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 32 additions & 17 deletions Detections/ProofpointPOD/ProofpointPODEmailSenderIPinTIList.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ description: |
'Email sender IP in TI list.'
severity: Medium
requiredDataConnectors:
- connectorId: ThreatIntelligence
dataTypes:
- ThreatIntelligenceIndicator
- connectorId: ThreatIntelligenceTaxii
dataTypes:
- ThreatIntelligenceIndicator
- connectorId: ProofpointPOD
dataTypes:
- ProofpointPOD_maillog_CL
Expand All @@ -15,28 +21,37 @@ tactics:
- Exfiltration
- InitialAccess
query: |
let ioc_lookBack = 30d;
let timeframe = 1h;
let TI_IP_List =
let dt_lookBack = 1h;
let ioc_lookBack = 14d;
ThreatIntelligenceIndicator
| where TimeGenerated > ago(ioc_lookBack)
| where isnotempty(NetworkIP)
| summarize make_list(NetworkIP);
ProofpointPOD
| where TimeGenerated > ago(timeframe)
| where isnotempty(SrcIpAddr)
| where SrcIpAddr in~ (TI_IP_List)
| extend Message = "Email sender IP in TI list"
| project Message, SrcUserUpn, DstUserUpn, SrcIpAddr
| extend AccountCustomEntity = SrcUserUpn, IpCustomEntity = SrcIpAddr
| where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()
| where isnotempty(NetworkIP) or isnotempty(EmailSourceIpAddress) or isnotempty(NetworkDestinationIP) or isnotempty(NetworkSourceIP)
| extend TI_ipEntity = iff(isnotempty(NetworkIP), NetworkIP, NetworkDestinationIP)
| extend TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(NetworkSourceIP), NetworkSourceIP, TI_ipEntity)
| extend TI_ipEntity = iff(isempty(TI_ipEntity) and isnotempty(EmailSourceIpAddress), EmailSourceIpAddress, TI_ipEntity)
| summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId
| where Active == true
// using innerunique to keep perf fast and result set low, we only need one match to indicate potential malicious activity that needs to be investigated
| join kind=innerunique (
ProofpointPOD
| where TimeGenerated >= ago(dt_lookBack)
| where isnotempty(SrcIpAddr)
| extend ProofpointPOD_TimeGenerated = TimeGenerated, ClientIP = SrcIpAddr
)
on $left.TI_ipEntity == $right.ClientIP
| where ProofpointPOD_TimeGenerated < ExpirationDateTime
| summarize ProofpointPOD_TimeGenerated = arg_max(ProofpointPOD_TimeGenerated, *) by IndicatorId, ClientIP
| project ProofpointPOD_TimeGenerated, SrcUserUpn, DstUserUpn, SrcIpAddr, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore,
TI_ipEntity, ClientIP
| extend timestamp = ProofpointPOD_TimeGenerated
entityMappings:
- entityType: Account
fieldMappings:
- identifier: FullName
columnName: AccountCustomEntity
columnName: SrcUserUpn
- entityType: IP
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
kind: Scheduled
columnName: ClientIP
version: 1.1.0
kind: Scheduled
42 changes: 27 additions & 15 deletions Detections/ProofpointPOD/ProofpointPODEmailSenderInTIList.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ description: |
'Email sender in TI list.'
severity: Medium
requiredDataConnectors:
- connectorId: ThreatIntelligence
dataTypes:
- ThreatIntelligenceIndicator
- connectorId: ThreatIntelligenceTaxii
dataTypes:
- ThreatIntelligenceIndicator
- connectorId: ProofpointPOD
dataTypes:
- ProofpointPOD_maillog_CL
Expand All @@ -15,24 +21,30 @@ tactics:
- Exfiltration
- InitialAccess
query: |
let ioc_lookBack = 30d;
let timeframe = 1h;
let TI_email_List =
let dt_lookBack = 1h;
let ioc_lookBack = 14d;
ThreatIntelligenceIndicator
| where TimeGenerated > ago(ioc_lookBack)
| where TimeGenerated >= ago(ioc_lookBack) and ExpirationDateTime > now()
| where Active == true
| where isnotempty(EmailSenderAddress)
| summarize make_list(EmailSenderAddress);
ProofpointPOD
| where TimeGenerated > ago(timeframe)
| where isnotempty(SrcUserUpn)
| where SrcUserUpn in~ (TI_email_List)
| extend Message = "Email sender in TI list"
| project Message, SrcUserUpn, DstUserUpn
| extend AccountCustomEntity = SrcUserUpn
| extend TI_emailEntity = EmailSenderAddress
// using innerunique to keep perf fast and result set low, we only need one match to indicate potential malicious activity that needs to be investigated
| join kind=innerunique (
ProofpointPOD
| where TimeGenerated >= ago(dt_lookBack)
| where isnotempty(SrcUserUpn)
| extend ProofpointPOD_TimeGenerated = TimeGenerated, ClientEmail = SrcUserUpn

)
on $left.TI_emailEntity == $right.ClientEmail
| where ProofpointPOD_TimeGenerated < ExpirationDateTime
| summarize ProofpointPOD_TimeGenerated = arg_max(ProofpointPOD_TimeGenerated, *) by IndicatorId, ClientEmail
| project ProofpointPOD_TimeGenerated, Description, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, ClientEmail
| extend timestamp = ProofpointPOD_TimeGenerated
entityMappings:
- entityType: Account
fieldMappings:
- identifier: FullName
columnName: AccountCustomEntity
version: 1.0.0
kind: Scheduled
columnName: ClientEmail
version: 1.1.0
kind: Scheduled
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ tactics:
- Exfiltration
query: |
let lbtime = 30m;
let lbperiod = 30d;
let lbperiod = 14d;
let knownrecipients = ProofpointPOD
| where TimeGenerated > ago(lbperiod)
| where EventType == 'message'
Expand All @@ -42,5 +42,5 @@ entityMappings:
fieldMappings:
- identifier: FullName
columnName: AccountCustomEntity
version: 1.0.0
kind: Scheduled
version: 1.1.0
kind: Scheduled