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")
relevantTechniques:
incidentConfiguration:
createIncident: true
groupingConfiguration:
lookbackDuration: PT5H
enabled: false
reopenClosedIncident: false
matchingMethod: AllEntities
name: Jamf Protect - Alerts
requiredDataConnectors:
- dataTypes:
- jamfprotect_CL
connectorId: JamfProtect
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
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")
id: 6098daa0-f05e-44d5-b5a0-913e63ba3179
tactics:
version: 1.0.5
customDetails:
Protect_Tags: Tags
Related_Binaries: TargetBinaryFilePath
TargetbinarySign: TargetbinarySignerType
Protect_Analytic: EventMessage
TargetBinarySigner: TargetBinarySigningTeamID
JamfPro_Status: JamfPro
TargetBinarySignMsg: TargetBinarySigningInfoMessage
Protect_Event_Type: EventType
Related_File_hash: TargetBinarySHA256
alertDetailsOverride:
alertDescriptionFormat: '{{EventDescription}} - Please investigate'
alertTacticsColumnName: Tactics
alertSeverityColumnName: EventSeverity
alertDynamicProperties:
- alertProperty: AlertLink
value: EventReportUrl
- alertProperty: ProviderName
value: EventVendor
- alertProperty: ProductName
value: EventProduct
- alertProperty: Techniques
value: Techniques
alertDisplayNameFormat: '{{EventMessage}} detected on {{DvcHostname}}'
kind: NRT
eventGroupingSettings:
aggregationKind: AlertPerResult
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Jamf Protect/Analytic Rules/JamfProtectAlerts.yaml
suppressionDuration: PT5H
severity: High
status: Available
suppressionEnabled: false
description: |
'Creates an incident based on Jamf Protect Alert data in Microsoft Sentinel'
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspace": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2024-01-01-preview",
"id": "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/6098daa0-f05e-44d5-b5a0-913e63ba3179')]",
"kind": "NRT",
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/6098daa0-f05e-44d5-b5a0-913e63ba3179')]",
"properties": {
"alertDetailsOverride": {
"alertDescriptionFormat": "{{EventDescription}} - Please investigate",
"alertDisplayNameFormat": "{{EventMessage}} detected on {{DvcHostname}}",
"alertDynamicProperties": [
{
"alertProperty": "AlertLink",
"value": "EventReportUrl"
},
{
"alertProperty": "ProviderName",
"value": "EventVendor"
},
{
"alertProperty": "ProductName",
"value": "EventProduct"
},
{
"alertProperty": "Techniques",
"value": "Techniques"
}
],
"alertSeverityColumnName": "EventSeverity",
"alertTacticsColumnName": "Tactics"
},
"alertRuleTemplateName": "6098daa0-f05e-44d5-b5a0-913e63ba3179",
"customDetails": {
"JamfPro_Status": "JamfPro",
"Protect_Analytic": "EventMessage",
"Protect_Event_Type": "EventType",
"Protect_Tags": "Tags",
"Related_Binaries": "TargetBinaryFilePath",
"Related_File_hash": "TargetBinarySHA256",
"TargetbinarySign": "TargetbinarySignerType",
"TargetBinarySigner": "TargetBinarySigningTeamID",
"TargetBinarySignMsg": "TargetBinarySigningInfoMessage"
},
"description": "'Creates an incident based on Jamf Protect Alert data in Microsoft Sentinel'\n",
"displayName": "Jamf Protect - Alerts",
"enabled": true,
"entityMappings": [
{
"entityType": "Host",
"fieldMappings": [
{
"columnName": "DvcHostname",
"identifier": "HostName"
},
{
"columnName": "DvcOs",
"identifier": "OSFamily"
},
{
"columnName": "DvcOsVersion",
"identifier": "OSVersion"
}
]
},
{
"entityType": "IP",
"fieldMappings": [
{
"columnName": "Host_IPs",
"identifier": "Address"
}
]
},
{
"entityType": "Account",
"fieldMappings": [
{
"columnName": "TargetUsername",
"identifier": "Name"
}
]
},
{
"entityType": "Process",
"fieldMappings": [
{
"columnName": "TargetProcessCurrentDirectory",
"identifier": "CommandLine"
},
{
"columnName": "TargetProcessId",
"identifier": "ProcessId"
}
]
},
{
"entityType": "FileHash",
"fieldMappings": [
{
"columnName": "algorithm",
"identifier": "Algorithm"
},
{
"columnName": "TargetBinarySHA256",
"identifier": "Value"
}
]
}
],
"eventGroupingSettings": {
"aggregationKind": "AlertPerResult"
},
"incidentConfiguration": {
"createIncident": true,
"groupingConfiguration": {
"enabled": false,
"lookbackDuration": "PT5H",
"matchingMethod": "AllEntities",
"reopenClosedIncident": false
}
},
"OriginalUri": "https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Jamf Protect/Analytic Rules/JamfProtectAlerts.yaml",
"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",
"severity": "High",
"status": "Available",
"subTechniques": [],
"suppressionDuration": "PT5H",
"suppressionEnabled": false,
"tactics": null,
"techniques": null,
"templateVersion": "1.0.5"
},
"type": "Microsoft.OperationalInsights/workspaces/providers/alertRules"
}
]
}