Skip to content

Commit fe61a34

Browse files
authored
Merge pull request #11543 from MSJosh/patch-5
IPEntity_Workday.yaml Update for TI
2 parents 2addf2f + 0909ff6 commit fe61a34

File tree

5 files changed

+1167
-921
lines changed

5 files changed

+1167
-921
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
id: a924d317-03d2-4420-a71f-4d347bda4bd8
2+
name: TI map IP entity to Workday(ASimAuditEventLogs)
3+
description: |
4+
Detects a match in Workday activity from any IP Indicator of Compromise (IOC) provided by Threat Intelligence (TI).
5+
severity: Medium
6+
requiredDataConnectors:
7+
- connectorId: ThreatIntelligence
8+
dataTypes:
9+
- ThreatIntelligenceIndicator
10+
- connectorId: ThreatIntelligenceTaxii
11+
dataTypes:
12+
- ThreatIntelligenceIndicator
13+
- connectorId: Workday
14+
dataTypes:
15+
- Workday
16+
- connectorId: MicrosoftDefenderThreatIntelligence
17+
dataTypes:
18+
- ThreatIntelligenceIndicator
19+
queryFrequency: 1h
20+
queryPeriod: 14d
21+
triggerOperator: gt
22+
triggerThreshold: 0
23+
tactics:
24+
- CommandAndControl
25+
relevantTechniques:
26+
- T1071
27+
query: |
28+
let dtLookBack = 1h; // Define the lookback period for audit events
29+
let ioc_lookBack = 14d; // Define the lookback period for threat intelligence indicators
30+
ThreatIntelligenceIndicator
31+
| where TimeGenerated >= ago(ioc_lookBack) // Filter threat intelligence indicators within the lookback period
32+
| where isnotempty(NetworkIP)
33+
or isnotempty(EmailSourceIpAddress)
34+
or isnotempty(NetworkDestinationIP)
35+
or isnotempty(NetworkSourceIP) // Filter for indicators with relevant IP fields
36+
| summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by IndicatorId // Get the latest indicator time for each IndicatorId
37+
| extend TI_ipEntity = coalesce(NetworkIP, NetworkDestinationIP, NetworkSourceIP, EmailSourceIpAddress) // Combine IP fields into a single entity
38+
| where Active == true and ExpirationDateTime > now() // Filter for active indicators that have not expired
39+
| join kind=inner (
40+
ASimAuditEventLogs
41+
| where EventVendor == "Workday" // Filter for Workday events
42+
| where TimeGenerated >= ago(dtLookBack) // Filter events within the lookback period
43+
| where isnotempty(DvcIpAddr) // Filter for events with a device IP address
44+
| extend WD_TimeGenerated = EventStartTime // Rename the event start time column
45+
| project WD_TimeGenerated, ActorUsername, DvcIpAddr, Operation, Object // Select relevant columns
46+
)
47+
on $left.TI_ipEntity == $right.DvcIpAddr // Join on the IP entity
48+
| project
49+
LatestIndicatorTime,
50+
Description,
51+
ActivityGroupNames,
52+
IndicatorId,
53+
ThreatType,
54+
Url,
55+
ExpirationDateTime,
56+
ConfidenceScore,
57+
WD_TimeGenerated,
58+
ActorUsername,
59+
DvcIpAddr,
60+
Operation,
61+
Object // Select relevant columns after the join
62+
| extend
63+
timestamp = WD_TimeGenerated,
64+
Name = tostring(split(ActorUsername, '@', 0)),
65+
UPNSuffix = tostring(split(ActorUsername, '@', 1)) // Add additional fields for timestamp, name, and UPN suffix
66+
entityMappings:
67+
- entityType: Account
68+
fieldMappings:
69+
- identifier: FullName
70+
columnName: ActorUsername
71+
- identifier: Name
72+
columnName: Name
73+
- identifier: UPNSuffix
74+
columnName: UPNSuffix
75+
- entityType: IP
76+
fieldMappings:
77+
- identifier: Address
78+
columnName: DvcIpAddr
79+
version: 1.0.0
80+
kind: Scheduled

Solutions/Threat Intelligence/Data/Solution_ThreatIntelligenceTemplateSpec.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@
7272
"Analytic Rules/EmailEntity_CloudAppEvents.yaml",
7373
"Analytic Rules/FileHashEntity_CloudAppEvents.yaml",
7474
"Analytic Rules/IPEntity_CloudAppEvents.yaml",
75-
"Analytic Rules/URLEntity_CloudAppEvents.yaml"
75+
"Analytic Rules/URLEntity_CloudAppEvents.yaml",
76+
"Analytic Rules/IPEntity_Workday.yaml"
7677
],
7778
"Metadata": "SolutionMetadata.json",
7879
"BasePath": "C:\\GitHub\\Azure-Sentinel\\Solutions\\Threat Intelligence\\",
720 Bytes
Binary file not shown.

Solutions/Threat Intelligence/Package/createUiDefinition.json

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"config": {
77
"isWizard": false,
88
"basics": {
9-
"description": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/Azure_Sentinel.svg\"width=\"75px\" height=\"75px\">\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/Threat%20Intelligence/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 Threat Intelligence solution contains data connectors for import of supported STIX objects into Microsoft Sentinel, analytic rules for matching TI data with event data, workbook, and hunting queries. Threat indicators can be malicious IP's, URL's, filehashes, domains, email addresses etc.\n\n**Data Connectors:** 5, **Workbooks:** 1, **Analytic Rules:** 52, **Hunting Queries:** 5\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)",
9+
"description": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/Azure_Sentinel.svg\"width=\"75px\" height=\"75px\">\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/Threat%20Intelligence/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 Threat Intelligence solution contains data connectors for import of supported STIX objects into Microsoft Sentinel, analytic rules for matching TI data with event data, workbook, and hunting queries. Threat indicators can be malicious IP's, URL's, filehashes, domains, email addresses etc.\n\n**Data Connectors:** 5, **Workbooks:** 1, **Analytic Rules:** 53, **Hunting Queries:** 5\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)",
1010
"subscription": {
1111
"resourceProviders": [
1212
"Microsoft.OperationsManagement/solutions",
@@ -954,6 +954,20 @@
954954
}
955955
}
956956
]
957+
},
958+
{
959+
"name": "analytic53",
960+
"type": "Microsoft.Common.Section",
961+
"label": "TI map IP entity to Workday(ASimAuditEventLogs)",
962+
"elements": [
963+
{
964+
"name": "analytic53-text",
965+
"type": "Microsoft.Common.TextBlock",
966+
"options": {
967+
"text": "Detects a match in Workday activity from any IP Indicator of Compromise (IOC) provided by Threat Intelligence (TI)."
968+
}
969+
}
970+
]
957971
}
958972
]
959973
},
@@ -1058,4 +1072,4 @@
10581072
"workspace": "[basics('workspace')]"
10591073
}
10601074
}
1061-
}
1075+
}

0 commit comments

Comments
 (0)