Jamf Protect - Alerts
Id | 6098daa0-f05e-44d5-b5a0-913e63ba3179 |
Rulename | Jamf Protect - Alerts |
Description | Creates an incident based on Jamf Protect Alert data in Microsoft Sentinel |
Severity | High |
Required data connectors | JamfProtect |
Kind | NRT |
Source Uri | https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Jamf Protect/Analytic Rules/JamfProtectAlerts.yaml |
Version | 1.0.5 |
Arm template | 6098daa0-f05e-44d5-b5a0-913e63ba3179.json |
JamfProtect
| where EventProduct == "Jamf Protect - Alerts"
and isnotempty(EventSeverity)
| extend
algorithm = "SHA256",
Host_IPs = tostring(parse_json(DvcIpAddr)[0]),
Tags = tostring(Match_facts[0].tags),
Tactics = case(Match_tags has "Execution", "Execution", Match_tags has "Visibility", "Visibility", Match_tags has "Persistence", "Persistence", Match_tags has "LateralMovement", "LateralMovement", Match_tags has "CredentialAccess", "CredentialAcccess", Match_tags has "DefenseEvasion", "DefenseEvasion", Match_tags has "PrivilegeEscalation", "PrivilegeEscalation", Match_tags has "Impact", "Impact", Match_tags has "CommandAndControl", "CommandandControl", Match_tags has "Discovery", "Discovery", Match_tags has "InitialAccess", "InitialAccess", ""),
Techniques = pack_array(extract(@"[A-Za-z]\d{4}", 0, tostring(Match_tags))),
JamfPro = case(Match_actions has "SmartGroup", "Workflow with Jamf Pro", Match_actions has "Prevented", "No workflow, Prevented by Protect", "No workflow")
requiredDataConnectors:
- connectorId: JamfProtect
dataTypes:
- jamfprotect_CL
suppressionDuration: PT5H
name: Jamf Protect - Alerts
alertDetailsOverride:
alertDescriptionFormat: '{{EventDescription}} - Please investigate'
alertSeverityColumnName: EventSeverity
alertDynamicProperties:
- value: EventReportUrl
alertProperty: AlertLink
- value: EventVendor
alertProperty: ProviderName
- value: EventProduct
alertProperty: ProductName
- value: Techniques
alertProperty: Techniques
alertTacticsColumnName: Tactics
alertDisplayNameFormat: '{{EventMessage}} detected on {{DvcHostname}}'
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Jamf Protect/Analytic Rules/JamfProtectAlerts.yaml
id: 6098daa0-f05e-44d5-b5a0-913e63ba3179
suppressionEnabled: false
description: |
'Creates an incident based on Jamf Protect Alert data in Microsoft Sentinel'
version: 1.0.5
severity: High
customDetails:
Related_Binaries: TargetBinaryFilePath
Protect_Tags: Tags
TargetBinarySignMsg: TargetBinarySigningInfoMessage
Related_File_hash: TargetBinarySHA256
JamfPro_Status: JamfPro
Protect_Event_Type: EventType
Protect_Analytic: EventMessage
TargetBinarySigner: TargetBinarySigningTeamID
TargetbinarySign: TargetbinarySignerType
query: |
JamfProtect
| where EventProduct == "Jamf Protect - Alerts"
and isnotempty(EventSeverity)
| extend
algorithm = "SHA256",
Host_IPs = tostring(parse_json(DvcIpAddr)[0]),
Tags = tostring(Match_facts[0].tags),
Tactics = case(Match_tags has "Execution", "Execution", Match_tags has "Visibility", "Visibility", Match_tags has "Persistence", "Persistence", Match_tags has "LateralMovement", "LateralMovement", Match_tags has "CredentialAccess", "CredentialAcccess", Match_tags has "DefenseEvasion", "DefenseEvasion", Match_tags has "PrivilegeEscalation", "PrivilegeEscalation", Match_tags has "Impact", "Impact", Match_tags has "CommandAndControl", "CommandandControl", Match_tags has "Discovery", "Discovery", Match_tags has "InitialAccess", "InitialAccess", ""),
Techniques = pack_array(extract(@"[A-Za-z]\d{4}", 0, tostring(Match_tags))),
JamfPro = case(Match_actions has "SmartGroup", "Workflow with Jamf Pro", Match_actions has "Prevented", "No workflow, Prevented by Protect", "No workflow")
incidentConfiguration:
groupingConfiguration:
reopenClosedIncident: false
enabled: false
lookbackDuration: PT5H
matchingMethod: AllEntities
createIncident: true
kind: NRT
eventGroupingSettings:
aggregationKind: AlertPerResult
entityMappings:
- entityType: Host
fieldMappings:
- identifier: HostName
columnName: DvcHostname
- identifier: OSFamily
columnName: DvcOs
- identifier: OSVersion
columnName: DvcOsVersion
- entityType: IP
fieldMappings:
- identifier: Address
columnName: Host_IPs
- entityType: Account
fieldMappings:
- identifier: Name
columnName: TargetUsername
- entityType: Process
fieldMappings:
- identifier: CommandLine
columnName: TargetProcessCurrentDirectory
- identifier: ProcessId
columnName: TargetProcessId
- entityType: FileHash
fieldMappings:
- identifier: Algorithm
columnName: algorithm
- identifier: Value
columnName: TargetBinarySHA256
relevantTechniques:
tactics:
status: Available
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspace": {
"type": "String"
}
},
"resources": [
{
"id": "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/6098daa0-f05e-44d5-b5a0-913e63ba3179')]",
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/6098daa0-f05e-44d5-b5a0-913e63ba3179')]",
"type": "Microsoft.OperationalInsights/workspaces/providers/alertRules",
"kind": "NRT",
"apiVersion": "2022-11-01-preview",
"properties": {
"displayName": "Jamf Protect - Alerts",
"description": "'Creates an incident based on Jamf Protect Alert data in Microsoft Sentinel'\n",
"severity": "High",
"enabled": true,
"query": "JamfProtect\n| where EventProduct == \"Jamf Protect - Alerts\"\n and isnotempty(EventSeverity)\n| extend\n algorithm = \"SHA256\",\n Host_IPs = tostring(parse_json(DvcIpAddr)[0]),\n Tags = tostring(Match_facts[0].tags),\n Tactics = case(Match_tags has \"Execution\", \"Execution\", Match_tags has \"Visibility\", \"Visibility\", Match_tags has \"Persistence\", \"Persistence\", Match_tags has \"LateralMovement\", \"LateralMovement\", Match_tags has \"CredentialAccess\", \"CredentialAcccess\", Match_tags has \"DefenseEvasion\", \"DefenseEvasion\", Match_tags has \"PrivilegeEscalation\", \"PrivilegeEscalation\", Match_tags has \"Impact\", \"Impact\", Match_tags has \"CommandAndControl\", \"CommandandControl\", Match_tags has \"Discovery\", \"Discovery\", Match_tags has \"InitialAccess\", \"InitialAccess\", \"\"),\n Techniques = pack_array(extract(@\"[A-Za-z]\\d{4}\", 0, tostring(Match_tags))),\n JamfPro = case(Match_actions has \"SmartGroup\", \"Workflow with Jamf Pro\", Match_actions has \"Prevented\", \"No workflow, Prevented by Protect\", \"No workflow\")\n",
"suppressionDuration": "PT5H",
"suppressionEnabled": false,
"tactics": null,
"techniques": null,
"alertRuleTemplateName": "6098daa0-f05e-44d5-b5a0-913e63ba3179",
"incidentConfiguration": {
"createIncident": true,
"groupingConfiguration": {
"reopenClosedIncident": false,
"enabled": false,
"lookbackDuration": "PT5H",
"matchingMethod": "AllEntities"
}
},
"eventGroupingSettings": {
"aggregationKind": "AlertPerResult"
},
"alertDetailsOverride": {
"alertDescriptionFormat": "{{EventDescription}} - Please investigate",
"alertDynamicProperties": [
{
"alertProperty": "AlertLink",
"value": "EventReportUrl"
},
{
"alertProperty": "ProviderName",
"value": "EventVendor"
},
{
"alertProperty": "ProductName",
"value": "EventProduct"
},
{
"alertProperty": "Techniques",
"value": "Techniques"
}
],
"alertDisplayNameFormat": "{{EventMessage}} detected on {{DvcHostname}}",
"alertSeverityColumnName": "EventSeverity",
"alertTacticsColumnName": "Tactics"
},
"customDetails": {
"Protect_Analytic": "EventMessage",
"Related_Binaries": "TargetBinaryFilePath",
"Protect_Tags": "Tags",
"TargetBinarySignMsg": "TargetBinarySigningInfoMessage",
"Related_File_hash": "TargetBinarySHA256",
"Protect_Event_Type": "EventType",
"JamfPro_Status": "JamfPro",
"TargetBinarySigner": "TargetBinarySigningTeamID",
"TargetbinarySign": "TargetbinarySignerType"
},
"entityMappings": [
{
"fieldMappings": [
{
"identifier": "HostName",
"columnName": "DvcHostname"
},
{
"identifier": "OSFamily",
"columnName": "DvcOs"
},
{
"identifier": "OSVersion",
"columnName": "DvcOsVersion"
}
],
"entityType": "Host"
},
{
"fieldMappings": [
{
"identifier": "Address",
"columnName": "Host_IPs"
}
],
"entityType": "IP"
},
{
"fieldMappings": [
{
"identifier": "Name",
"columnName": "TargetUsername"
}
],
"entityType": "Account"
},
{
"fieldMappings": [
{
"identifier": "CommandLine",
"columnName": "TargetProcessCurrentDirectory"
},
{
"identifier": "ProcessId",
"columnName": "TargetProcessId"
}
],
"entityType": "Process"
},
{
"fieldMappings": [
{
"identifier": "Algorithm",
"columnName": "algorithm"
},
{
"identifier": "Value",
"columnName": "TargetBinarySHA256"
}
],
"entityType": "FileHash"
}
],
"status": "Available",
"templateVersion": "1.0.5",
"OriginalUri": "https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Jamf Protect/Analytic Rules/JamfProtectAlerts.yaml"
}
}
]
}