diff --git a/.script/tests/detectionTemplateSchemaValidation/ValidConnectorIds.json b/.script/tests/detectionTemplateSchemaValidation/ValidConnectorIds.json index 9302c890bf9..7140b77a29c 100644 --- a/.script/tests/detectionTemplateSchemaValidation/ValidConnectorIds.json +++ b/.script/tests/detectionTemplateSchemaValidation/ValidConnectorIds.json @@ -208,5 +208,6 @@ "ClarotyAma", "illusiveAttackManagementSystemAma", "TrendMicroApexOneAma", - "PaloAltoCDLAma" + "PaloAltoCDLAma", + "CiscoSEGAma" ] diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGDLPViolation.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGDLPViolation.yaml index a83ec1dfc98..f58fc70e58c 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGDLPViolation.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGDLPViolation.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 1h queryPeriod: 1h triggerOperator: gt @@ -28,5 +31,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMaliciousAttachmentNotBlocked.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMaliciousAttachmentNotBlocked.yaml index 820e49fa9c0..ecd0683431d 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMaliciousAttachmentNotBlocked.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMaliciousAttachmentNotBlocked.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 10m queryPeriod: 10m triggerOperator: gt @@ -29,5 +32,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMultipleLargeEmails.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMultipleLargeEmails.yaml index 49593c35408..d90b8ebb564 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMultipleLargeEmails.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMultipleLargeEmails.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 1h queryPeriod: 1h triggerOperator: gt @@ -33,5 +36,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMultipleSuspiciousEmails.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMultipleSuspiciousEmails.yaml index aa706536c53..cb6a6f7cf0b 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMultipleSuspiciousEmails.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGMultipleSuspiciousEmails.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 1h queryPeriod: 1h triggerOperator: gt @@ -30,5 +33,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGPossibleOutbreak.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGPossibleOutbreak.yaml index ea33c96a937..251b691ff24 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGPossibleOutbreak.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGPossibleOutbreak.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 1h queryPeriod: 1h triggerOperator: gt @@ -28,5 +31,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGPotentialLinkToMalwareDownload.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGPotentialLinkToMalwareDownload.yaml index 24d5689bdd4..ba6742ba684 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGPotentialLinkToMalwareDownload.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGPotentialLinkToMalwareDownload.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 1h queryPeriod: 1h triggerOperator: gt @@ -29,5 +32,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGSuspiciousLink.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGSuspiciousLink.yaml index 85e400ffa43..8ddfdf56bb0 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGSuspiciousLink.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGSuspiciousLink.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 15m queryPeriod: 15m triggerOperator: gt @@ -29,5 +32,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGSuspiciousSenderDomain.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGSuspiciousSenderDomain.yaml index d866d05594d..1786d313086 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGSuspiciousSenderDomain.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGSuspiciousSenderDomain.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 1h queryPeriod: 1h triggerOperator: gt @@ -35,5 +38,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnclassifiedLink.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnclassifiedLink.yaml index 75c84b6037a..9cd9e1897fc 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnclassifiedLink.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnclassifiedLink.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 1h queryPeriod: 1h triggerOperator: gt @@ -29,5 +32,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnexpextedAttachment.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnexpextedAttachment.yaml index 185df4739b5..de7ee9bfe69 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnexpextedAttachment.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnexpextedAttachment.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 1h queryPeriod: 1h triggerOperator: gt @@ -28,5 +31,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnscannableAttachment.yaml b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnscannableAttachment.yaml index f8516ef3d47..a75c3a32edd 100755 --- a/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnscannableAttachment.yaml +++ b/Solutions/CiscoSEG/Analytic Rules/CiscoSEGUnscannableAttachment.yaml @@ -8,6 +8,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent queryFrequency: 1h queryPeriod: 1h triggerOperator: gt @@ -28,5 +31,5 @@ entityMappings: fieldMappings: - identifier: Name columnName: AccountCustomEntity -version: 1.0.0 +version: 1.0.1 kind: Scheduled \ No newline at end of file diff --git a/Solutions/CiscoSEG/Data Connectors/Connector_Cisco_SEG_CEF.json b/Solutions/CiscoSEG/Data Connectors/Connector_Cisco_SEG_CEF.json index ffa305863f8..706d2233148 100644 --- a/Solutions/CiscoSEG/Data Connectors/Connector_Cisco_SEG_CEF.json +++ b/Solutions/CiscoSEG/Data Connectors/Connector_Cisco_SEG_CEF.json @@ -1,6 +1,6 @@ { "id": "CiscoSEG", - "title": "Cisco Secure Email Gateway", + "title": "[Deprecated] Cisco Secure Email Gateway via Legacy Agent", "publisher": "Cisco", "descriptionMarkdown": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) data connector provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.", "additionalRequirementBanner": "This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution.", diff --git a/Solutions/CiscoSEG/Data Connectors/template_CiscoSEGAMA.json b/Solutions/CiscoSEG/Data Connectors/template_CiscoSEGAMA.json new file mode 100644 index 00000000000..abb1b75c727 --- /dev/null +++ b/Solutions/CiscoSEG/Data Connectors/template_CiscoSEGAMA.json @@ -0,0 +1,116 @@ +{ + "id": "CiscoSEGAma", + "title": "[Recommended] Cisco Secure Email Gateway via AMA", + "publisher": "Cisco", + "descriptionMarkdown": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) data connector provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.", + "additionalRequirementBanner": "This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution.", + "graphQueries": [ + { + "metricName": "Total data received", + "legend": "CiscoSEG", + "baseQuery": "CommonSecurityLog\n |where DeviceVendor =~ 'Cisco'\n |where DeviceProduct =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n |extend sent_by_ama = column_ifexists('CollectorHostName','')\n |where isnotempty(sent_by_ama)" + } + ], + "sampleQueries": [ + { + "description" : "Top 10 Senders", + "query": "CiscoSEGEvent\n | where isnotempty(SrcUserName)\n | summarize count() by SrcUserName\n | top 10 by count_" + } + ], + "dataTypes": [ + { + "name": "CommonSecurityLog (CiscoSEG)", + "lastDataReceivedQuery": "CommonSecurityLog\n |where DeviceVendor =~ 'Cisco'\n |where DeviceProduct =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n |extend sent_by_ama = column_ifexists('CollectorHostName','')\n |where isnotempty(sent_by_ama)\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)" + } + ], + "connectivityCriterias": [ + { + "type": "IsConnectedQuery", + "value": [ + "CommonSecurityLog\n |where DeviceVendor =~ 'Cisco'\n |where DeviceProduct =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n |extend sent_by_ama = column_ifexists('CollectorHostName','')\n |where isnotempty(sent_by_ama)\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(30d)" + ] + } + ], + "availability": { + "status": 1, + "isPreview": false + }, + "permissions": { + "resourceProvider": [ + { + "provider": "Microsoft.OperationalInsights/workspaces", + "permissionsDisplayText": "read and write permissions are required.", + "providerDisplayName": "Workspace", + "scope": "Workspace", + "requiredPermissions": { + "write": true, + "read": true, + "delete": true + } + }, + { + "provider": "Microsoft.OperationalInsights/workspaces/sharedKeys", + "permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).", + "providerDisplayName": "Keys", + "scope": "Workspace", + "requiredPermissions": { + "action": true + } + } + ], + "customs": [ + { + "description": "To collect data from non-Azure VMs, they must have Azure Arc installed and enabled. [Learn more](https://docs.microsoft.com/azure/azure-monitor/agents/azure-monitor-agent-install?tabs=ARMAgentPowerShell,PowerShellWindows,PowerShellWindowsArc,CLIWindows,CLIWindowsArc)" + }, + { + "description": "Common Event Format (CEF) via AMA and Syslog via AMA data connectors must be installed [Learn more](https://learn.microsoft.com/azure/sentinel/connect-cef-ama#open-the-connector-page-and-create-the-dcr)" + } + ] + }, + "instructionSteps": [ + { + "title": "", + "description": ">**NOTE:** This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution.", + "instructions": [ + { + "parameters": { + "title": "1. Kindly follow the steps to configure the data connector", + "instructionSteps": [ + { + "title": "Step A. Configure the Common Event Format (CEF) via AMA data connector", + "description": "_Note:- CEF logs are collected only from Linux Agents_\n\n1. Navigate to Microsoft Sentinel workspace ---> configuration ---> Data connector blade .\n\n2. Search for 'Common Event Format (CEF) via AMA' data connector and open it.\n\n3. Check If there is no existing DCR configured to collect required facility of logs, Create a new DCR (Data Collection Rule)\n\n\t_Note:- It is recommended to install minimum 1.27 version of AMA agent [Learn more](https://learn.microsoft.com/azure/azure-monitor/agents/azure-monitor-agent-manage?tabs=azure-portal ) and ensure there is no duplicate DCR as it can cause log duplicacy_\n\n4. Run the command provided in the CEF via AMA data connector page to configure the CEF collector on the machine", + "instructions": [ + ] + }, + { + "title": "Step B. Forward Common Event Format (CEF) logs to Syslog agent", + "description": "Follow these steps to configure Cisco Secure Email Gateway to forward logs via syslog:\n\n Configure [Log Subscription](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1134718)\n\n>**NOTE:** Select **Consolidated Event Logs** in Log Type field.", + "instructions": [ + ] + }, + { + "title": "Step C. Validate connection", + "description": "Follow the instructions to validate your connectivity:\n\nOpen Log Analytics to check if the logs are received using the CommonSecurityLog schema.\n\nIt may take about 20 minutes until the connection streams data to your workspace.\n\nIf the logs are not received, run the following connectivity validation script:\n\n 1. Make sure that you have Python on your machine using the following command: python -version\n\n2. You must have elevated permissions (sudo) on your machine", + "instructions": [ + { + "parameters": { + "label": "Run the following command to validate your connectivity:", + "value": "sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --cef" + }, + "type": "CopyableLabel" + } + ] + } + ] + }, + "type": "InstructionStepsGroup" + } + ] + }, + + { + "title": "2. Secure your machine ", + "description": "2Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)" + } + ] +} diff --git a/Solutions/CiscoSEG/Data/Solution_CiscoSEG.json b/Solutions/CiscoSEG/Data/Solution_CiscoSEG.json index bcfce482be6..b9ff68f6b45 100644 --- a/Solutions/CiscoSEG/Data/Solution_CiscoSEG.json +++ b/Solutions/CiscoSEG/Data/Solution_CiscoSEG.json @@ -2,7 +2,7 @@ "Name": "CiscoSEG", "Author": "Microsoft - support@microsoft.com", "Logo": "", - "Description": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) solution provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel. \n\n**Underlying Microsoft Technologies used:**\n\nThis solution takes a dependency on the following technologies, and some of these dependencies either may be in [Preview](https://azure.microsoft.com/support/legal/preview-supplemental-terms/) state or might result in additional ingestion or operational costs\n\n a. [Agent-based log collection (CEF over Syslog)](https://docs.microsoft.com/azure/sentinel/connect-common-event-format)", + "Description": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) solution provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.\n\r\n1. **CiscoSEG via AMA** - This data connector helps in ingesting CiscoSEG logs into your Log Analytics Workspace using the new Azure Monitor Agent. Learn more about ingesting using the new Azure Monitor Agent [here](https://learn.microsoft.com/azure/sentinel/connect-cef-ama). **Microsoft recommends using this Data Connector**.\n\r\n2. **CiscoSEG via Legacy Agent** - This data connector helps in ingesting CiscoSEG logs into your Log Analytics Workspace using the legacy Log Analytics agent.\n\n**NOTE:** Microsoft recommends installation of CiscoSEG via AMA Connector. Legacy connector uses the Log Analytics agent which is about to be deprecated by **Aug 31, 2024,** and thus should only be installed where AMA is not supported. Using MMA and AMA on same machine can cause log duplication and extra ingestion cost [more details](https://learn.microsoft.com/en-us/azure/sentinel/ama-migrate).", "Analytic Rules" : [ "Analytic Rules/CiscoSEGDLPViolation.yaml", "Analytic Rules/CiscoSEGMaliciousAttachmentNotBlocked.yaml", @@ -29,17 +29,18 @@ "Hunting Queries/CiscoSEGUsersReceivedSpam.yaml" ], "Parsers": [ - "Parsers/CiscoSEGEvent.txt" + "Parsers/CiscoSEGEvent.yaml" ], "Data Connectors": [ - "Data Connectors/Connector_Cisco_SEG_CEF.json" + "Data Connectors/Connector_Cisco_SEG_CEF.json", + "Data Connectors/template_CiscoSEGAMA.json" ], "Workbooks" : [ "Workbooks/CiscoSEG.json" ], "Metadata": "SolutionMetadata.json", "BasePath": "C:\\GitHub\\azure-sentinel\\Solutions\\CiscoSEG", - "Version": "2.0.1", + "Version": "3.0.0", "TemplateSpec": true, "Is1PConnector": false } \ No newline at end of file diff --git a/Solutions/CiscoSEG/Data/system_generated_metadata.json b/Solutions/CiscoSEG/Data/system_generated_metadata.json new file mode 100644 index 00000000000..e50f8092a1e --- /dev/null +++ b/Solutions/CiscoSEG/Data/system_generated_metadata.json @@ -0,0 +1,33 @@ +{ + "Name": "CiscoSEG", + "Author": "Microsoft - support@microsoft.com", + "Logo": "", + "Description": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) solution provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.\n\r\n1. **CiscoSEG via AMA** - This data connector helps in ingesting CiscoSEG logs into your Log Analytics Workspace using the new Azure Monitor Agent. Learn more about ingesting using the new Azure Monitor Agent [here](https://learn.microsoft.com/azure/sentinel/connect-cef-ama). **Microsoft recommends using this Data Connector**.\n\r\n2. **CiscoSEG via Legacy Agent** - This data connector helps in ingesting CiscoSEG logs into your Log Analytics Workspace using the legacy Log Analytics agent.\n\n**NOTE:** Microsoft recommends installation of CiscoSEG via AMA Connector. Legacy connector uses the Log Analytics agent which is about to be deprecated by **Aug 31, 2024,** and thus should only be installed where AMA is not supported. Using MMA and AMA on same machine can cause log duplication and extra ingestion cost [more details](https://learn.microsoft.com/en-us/azure/sentinel/ama-migrate).", + "Metadata": "SolutionMetadata.json", + "BasePath": "C:\\GitHub\\azure-sentinel\\Solutions\\CiscoSEG", + "Version": "3.0.0", + "TemplateSpec": true, + "Is1PConnector": false, + "publisherId": "azuresentinel", + "offerId": "azure-sentinel-solution-ciscoseg", + "providers": [ + "Cisco" + ], + "categories": { + "domains": [ + "Security - Threat Protection" + ] + }, + "firstPublishDate": "2021-06-23", + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + }, + "Data Connectors": "[\n \"Data Connectors/Connector_Cisco_SEG_CEF.json\",\n \"Data Connectors/template_CiscoSEGAMA.json\"\n]", + "Parsers": "[\n \"CiscoSEGEvent.yaml\"\n]", + "Workbooks": "[\n \"Workbooks/CiscoSEG.json\"\n]", + "Analytic Rules": "[\n \"CiscoSEGDLPViolation.yaml\",\n \"CiscoSEGMaliciousAttachmentNotBlocked.yaml\",\n \"CiscoSEGMultipleLargeEmails.yaml\",\n \"CiscoSEGMultipleSuspiciousEmails.yaml\",\n \"CiscoSEGPossibleOutbreak.yaml\",\n \"CiscoSEGPotentialLinkToMalwareDownload.yaml\",\n \"CiscoSEGSuspiciousLink.yaml\",\n \"CiscoSEGSuspiciousSenderDomain.yaml\",\n \"CiscoSEGUnclassifiedLink.yaml\",\n \"CiscoSEGUnexpextedAttachment.yaml\",\n \"CiscoSEGUnscannableAttachment.yaml\"\n]", + "Hunting Queries": "[\n \"CiscoSEGDroppedInMails.yaml\",\n \"CiscoSEGDroppedOutMails.yaml\",\n \"CiscoSEGFailedDKIMFailure.yaml\",\n \"CiscoSEGFailedDMARKFailure.yaml\",\n \"CiscoSEGFailedSPFFailure.yaml\",\n \"CiscoSEGFailedTLSIn.yaml\",\n \"CiscoSEGFailedTLSOut.yaml\",\n \"CiscoSEGInsecureProtocol.yaml\",\n \"CiscoSEGSpamMails.yaml\",\n \"CiscoSEGUsersReceivedSpam.yaml\"\n]" +} diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGDroppedInMails.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGDroppedInMails.yaml index 7d6ece688c0..44bf34040b0 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGDroppedInMails.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGDroppedInMails.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - InitialAccess relevantTechniques: diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGDroppedOutMails.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGDroppedOutMails.yaml index 83ae00f16f6..f5402bf5a27 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGDroppedOutMails.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGDroppedOutMails.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - Exfiltration relevantTechniques: diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedDKIMFailure.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedDKIMFailure.yaml index 7692ac5d5d9..a2170d2001d 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedDKIMFailure.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedDKIMFailure.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - InitialAccess relevantTechniques: diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedDMARKFailure.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedDMARKFailure.yaml index 53a4963db1d..d2b3f8289ac 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedDMARKFailure.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedDMARKFailure.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - InitialAccess relevantTechniques: diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedSPFFailure.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedSPFFailure.yaml index a4d1c71aee2..b674824ce62 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedSPFFailure.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedSPFFailure.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - InitialAccess relevantTechniques: diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedTLSIn.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedTLSIn.yaml index 89e3b5ee38c..7db98b94678 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedTLSIn.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedTLSIn.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - InitialAccess relevantTechniques: diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedTLSOut.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedTLSOut.yaml index c4ff4c8fa05..38aa84db67b 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedTLSOut.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGFailedTLSOut.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - Impact relevantTechniques: diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGInsecureProtocol.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGInsecureProtocol.yaml index 8467f9223b3..9f51acdeb02 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGInsecureProtocol.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGInsecureProtocol.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - Impact relevantTechniques: diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGSpamMails.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGSpamMails.yaml index 743d14db18f..ff778c61b7b 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGSpamMails.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGSpamMails.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - InitialAccess relevantTechniques: diff --git a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGUsersReceivedSpam.yaml b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGUsersReceivedSpam.yaml index 35e3bac4692..0e9d5519176 100755 --- a/Solutions/CiscoSEG/Hunting Queries/CiscoSEGUsersReceivedSpam.yaml +++ b/Solutions/CiscoSEG/Hunting Queries/CiscoSEGUsersReceivedSpam.yaml @@ -7,6 +7,9 @@ requiredDataConnectors: - connectorId: CiscoSEG dataTypes: - CiscoSEGEvent + - connectorId: CiscoSEGAma + dataTypes: + - CiscoSEGEvent tactics: - InitialAccess relevantTechniques: diff --git a/Solutions/CiscoSEG/Package/3.0.0.zip b/Solutions/CiscoSEG/Package/3.0.0.zip new file mode 100644 index 00000000000..31302f5419b Binary files /dev/null and b/Solutions/CiscoSEG/Package/3.0.0.zip differ diff --git a/Solutions/CiscoSEG/Package/createUiDefinition.json b/Solutions/CiscoSEG/Package/createUiDefinition.json index 748abc141ae..32049b99f0a 100644 --- a/Solutions/CiscoSEG/Package/createUiDefinition.json +++ b/Solutions/CiscoSEG/Package/createUiDefinition.json @@ -6,7 +6,7 @@ "config": { "isWizard": false, "basics": { - "description": "\n\n**Note:** _There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing._\n\nThe [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) solution provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel. \n\n**Underlying Microsoft Technologies used:**\n\nThis solution takes a dependency on the following technologies, and some of these dependencies either may be in [Preview](https://azure.microsoft.com/support/legal/preview-supplemental-terms/) state or might result in additional ingestion or operational costs\n\n a. [Agent-based log collection (CEF over Syslog)](https://docs.microsoft.com/azure/sentinel/connect-common-event-format)\n\n**Data Connectors:** 1, **Parsers:** 1, **Workbooks:** 1, **Analytic Rules:** 11, **Hunting Queries:** 10\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)", + "description": "\n\n**Note:** Please refer to the following before installing the solution: \r \n • Review the solution [Release Notes](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/CiscoSEG/ReleaseNotes.md)\r \n • There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing.\n\nThe [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) solution provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.\n\r\n1. **CiscoSEG via AMA** - This data connector helps in ingesting CiscoSEG logs into your Log Analytics Workspace using the new Azure Monitor Agent. Learn more about ingesting using the new Azure Monitor Agent [here](https://learn.microsoft.com/azure/sentinel/connect-cef-ama). **Microsoft recommends using this Data Connector**.\n\r\n2. **CiscoSEG via Legacy Agent** - This data connector helps in ingesting CiscoSEG logs into your Log Analytics Workspace using the legacy Log Analytics agent.\n\n**NOTE:** Microsoft recommends installation of CiscoSEG via AMA Connector. Legacy connector uses the Log Analytics agent which is about to be deprecated by **Aug 31, 2024,** and thus should only be installed where AMA is not supported. Using MMA and AMA on same machine can cause log duplication and extra ingestion cost [more details](https://learn.microsoft.com/en-us/azure/sentinel/ama-migrate).\n\n**Data Connectors:** 2, **Parsers:** 1, **Workbooks:** 1, **Analytic Rules:** 11, **Hunting Queries:** 10\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)", "subscription": { "resourceProviders": [ "Microsoft.OperationsManagement/solutions", @@ -107,6 +107,20 @@ "uri": "https://docs.microsoft.com/azure/sentinel/tutorial-monitor-your-data" } } + }, + { + "name": "workbook1", + "type": "Microsoft.Common.Section", + "label": "Cisco Secure Email Gateway", + "elements": [ + { + "name": "workbook1-text", + "type": "Microsoft.Common.TextBlock", + "options": { + "text": "Sets the time name for analysis" + } + } + ] } ] }, @@ -123,7 +137,7 @@ "name": "analytics-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "This solution installs the following analytic rule templates. After installing the solution, create and enable analytic rules in Manage solution view. " + "text": "This solution installs the following analytic rule templates. After installing the solution, create and enable analytic rules in Manage solution view." } }, { @@ -323,7 +337,7 @@ "name": "huntingquery1-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches for dropped mails. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches for dropped mails. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] @@ -337,7 +351,7 @@ "name": "huntingquery2-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches for dropped outgoing mails. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches for dropped outgoing mails. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] @@ -351,7 +365,7 @@ "name": "huntingquery3-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches for mails with DKIM failure status. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches for mails with DKIM failure status. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] @@ -365,7 +379,7 @@ "name": "huntingquery4-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches for mails with DMARK failure status. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches for mails with DMARK failure status. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] @@ -379,7 +393,7 @@ "name": "huntingquery5-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches for mails with SPF failure status. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches for mails with SPF failure status. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] @@ -393,7 +407,7 @@ "name": "huntingquery6-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches failed TLS incoming connections. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches failed TLS incoming connections. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] @@ -407,7 +421,7 @@ "name": "huntingquery7-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches failed TLS outgoing connections. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches failed TLS outgoing connections. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] @@ -421,7 +435,7 @@ "name": "huntingquery8-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches for connections with insecure protocol. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches for connections with insecure protocol. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] @@ -435,7 +449,7 @@ "name": "huntingquery9-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches for sources of spam mails. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches for sources of spam mails. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] @@ -449,7 +463,7 @@ "name": "huntingquery10-text", "type": "Microsoft.Common.TextBlock", "options": { - "text": "Query searches for top users receiving spam mails. It depends on the CiscoSEG data connector and CiscoSEGEvent data type and CiscoSEG parser." + "text": "Query searches for top users receiving spam mails. This hunting query depends on CiscoSEG data connector (CiscoSEGEvent Parser or Table)" } } ] diff --git a/Solutions/CiscoSEG/Package/mainTemplate.json b/Solutions/CiscoSEG/Package/mainTemplate.json index 7ec3390c357..8ca623fd20a 100644 --- a/Solutions/CiscoSEG/Package/mainTemplate.json +++ b/Solutions/CiscoSEG/Package/mainTemplate.json @@ -42,222 +42,326 @@ "_solutionId": "[variables('solutionId')]", "email": "support@microsoft.com", "_email": "[variables('email')]", - "analyticRuleVersion1": "1.0.0", + "_solutionName": "CiscoSEG", + "_solutionVersion": "3.0.0", + "uiConfigId1": "CiscoSEG", + "_uiConfigId1": "[variables('uiConfigId1')]", + "dataConnectorContentId1": "CiscoSEG", + "_dataConnectorContentId1": "[variables('dataConnectorContentId1')]", + "dataConnectorId1": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId1'))]", + "_dataConnectorId1": "[variables('dataConnectorId1')]", + "dataConnectorTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-dc-',uniquestring(variables('_dataConnectorContentId1'))))]", + "dataConnectorVersion1": "1.0.0", + "_dataConnectorcontentProductId1": "[concat(take(variables('_solutionId'),50),'-','dc','-', uniqueString(concat(variables('_solutionId'),'-','DataConnector','-',variables('_dataConnectorContentId1'),'-', variables('dataConnectorVersion1'))))]", + "uiConfigId2": "CiscoSEGAma", + "_uiConfigId2": "[variables('uiConfigId2')]", + "dataConnectorContentId2": "CiscoSEGAma", + "_dataConnectorContentId2": "[variables('dataConnectorContentId2')]", + "dataConnectorId2": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId2'))]", + "_dataConnectorId2": "[variables('dataConnectorId2')]", + "dataConnectorTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-dc-',uniquestring(variables('_dataConnectorContentId2'))))]", + "dataConnectorVersion2": "1.0.0", + "_dataConnectorcontentProductId2": "[concat(take(variables('_solutionId'),50),'-','dc','-', uniqueString(concat(variables('_solutionId'),'-','DataConnector','-',variables('_dataConnectorContentId2'),'-', variables('dataConnectorVersion2'))))]", + "parserName1": "Cisco SEG Data Parser", + "_parserName1": "[concat(parameters('workspace'),'/',variables('parserName1'))]", + "parserId1": "[resourceId('Microsoft.OperationalInsights/workspaces/savedSearches', parameters('workspace'), variables('parserName1'))]", + "_parserId1": "[variables('parserId1')]", + "parserTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pr-',uniquestring(variables('_parserContentId1'))))]", + "parserVersion1": "1.0.0", + "parserContentId1": "CiscoSEGEvent-Parser", + "_parserContentId1": "[variables('parserContentId1')]", + "_parsercontentProductId1": "[concat(take(variables('_solutionId'),50),'-','pr','-', uniqueString(concat(variables('_solutionId'),'-','Parser','-',variables('_parserContentId1'),'-', variables('parserVersion1'))))]", + "workbookVersion1": "1.0.0", + "workbookContentId1": "CiscoSEGWorkbook", + "workbookId1": "[resourceId('Microsoft.Insights/workbooks', variables('workbookContentId1'))]", + "workbookTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-wb-',uniquestring(variables('_workbookContentId1'))))]", + "_workbookContentId1": "[variables('workbookContentId1')]", + "workspaceResourceId": "[resourceId('microsoft.OperationalInsights/Workspaces', parameters('workspace'))]", + "_workbookcontentProductId1": "[concat(take(variables('_solutionId'),50),'-','wb','-', uniqueString(concat(variables('_solutionId'),'-','Workbook','-',variables('_workbookContentId1'),'-', variables('workbookVersion1'))))]", + "analyticRuleVersion1": "1.0.1", "analyticRulecontentId1": "df5c34dd-e1e6-4e07-90b1-4309ebfe754c", "_analyticRulecontentId1": "[variables('analyticRulecontentId1')]", "analyticRuleId1": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId1'))]", - "analyticRuleTemplateSpecName1": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId1')))]", - "workspaceResourceId": "[resourceId('microsoft.OperationalInsights/Workspaces', parameters('workspace'))]", - "analyticRuleVersion2": "1.0.0", + "analyticRuleTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId1'))))]", + "_analyticRulecontentProductId1": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId1'),'-', variables('analyticRuleVersion1'))))]", + "analyticRuleVersion2": "1.0.1", "analyticRulecontentId2": "236e872c-31d1-4b45-ac2a-fda3af465c97", "_analyticRulecontentId2": "[variables('analyticRulecontentId2')]", "analyticRuleId2": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId2'))]", - "analyticRuleTemplateSpecName2": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId2')))]", - "analyticRuleVersion3": "1.0.0", + "analyticRuleTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId2'))))]", + "_analyticRulecontentProductId2": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId2'),'-', variables('analyticRuleVersion2'))))]", + "analyticRuleVersion3": "1.0.1", "analyticRulecontentId3": "1399a9a5-6200-411e-8c34-ca5658754cf7", "_analyticRulecontentId3": "[variables('analyticRulecontentId3')]", "analyticRuleId3": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId3'))]", - "analyticRuleTemplateSpecName3": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId3')))]", - "analyticRuleVersion4": "1.0.0", + "analyticRuleTemplateSpecName3": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId3'))))]", + "_analyticRulecontentProductId3": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId3'),'-', variables('analyticRuleVersion3'))))]", + "analyticRuleVersion4": "1.0.1", "analyticRulecontentId4": "dfdb9a73-4335-4bb4-b29b-eb713bce61a6", "_analyticRulecontentId4": "[variables('analyticRulecontentId4')]", "analyticRuleId4": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId4'))]", - "analyticRuleTemplateSpecName4": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId4')))]", - "analyticRuleVersion5": "1.0.0", + "analyticRuleTemplateSpecName4": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId4'))))]", + "_analyticRulecontentProductId4": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId4'),'-', variables('analyticRuleVersion4'))))]", + "analyticRuleVersion5": "1.0.1", "analyticRulecontentId5": "53242559-95ea-4d4c-b003-107e8f06304b", "_analyticRulecontentId5": "[variables('analyticRulecontentId5')]", "analyticRuleId5": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId5'))]", - "analyticRuleTemplateSpecName5": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId5')))]", - "analyticRuleVersion6": "1.0.0", + "analyticRuleTemplateSpecName5": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId5'))))]", + "_analyticRulecontentProductId5": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId5'),'-', variables('analyticRuleVersion5'))))]", + "analyticRuleVersion6": "1.0.1", "analyticRulecontentId6": "2e5158e1-9fc2-40ff-a909-c701a13a0405", "_analyticRulecontentId6": "[variables('analyticRulecontentId6')]", "analyticRuleId6": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId6'))]", - "analyticRuleTemplateSpecName6": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId6')))]", - "analyticRuleVersion7": "1.0.0", + "analyticRuleTemplateSpecName6": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId6'))))]", + "_analyticRulecontentProductId6": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId6'),'-', variables('analyticRuleVersion6'))))]", + "analyticRuleVersion7": "1.0.1", "analyticRulecontentId7": "506291dd-8050-4c98-a92f-58e376080a0a", "_analyticRulecontentId7": "[variables('analyticRulecontentId7')]", "analyticRuleId7": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId7'))]", - "analyticRuleTemplateSpecName7": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId7')))]", - "analyticRuleVersion8": "1.0.0", + "analyticRuleTemplateSpecName7": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId7'))))]", + "_analyticRulecontentProductId7": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId7'),'-', variables('analyticRuleVersion7'))))]", + "analyticRuleVersion8": "1.0.1", "analyticRulecontentId8": "ef0a253c-95b5-48e1-8ebc-dbeb073b9338", "_analyticRulecontentId8": "[variables('analyticRulecontentId8')]", "analyticRuleId8": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId8'))]", - "analyticRuleTemplateSpecName8": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId8')))]", - "analyticRuleVersion9": "1.0.0", + "analyticRuleTemplateSpecName8": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId8'))))]", + "_analyticRulecontentProductId8": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId8'),'-', variables('analyticRuleVersion8'))))]", + "analyticRuleVersion9": "1.0.1", "analyticRulecontentId9": "9cb4a02d-3708-42ba-b33b-0fdd360ce4b6", "_analyticRulecontentId9": "[variables('analyticRulecontentId9')]", "analyticRuleId9": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId9'))]", - "analyticRuleTemplateSpecName9": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId9')))]", - "analyticRuleVersion10": "1.0.0", + "analyticRuleTemplateSpecName9": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId9'))))]", + "_analyticRulecontentProductId9": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId9'),'-', variables('analyticRuleVersion9'))))]", + "analyticRuleVersion10": "1.0.1", "analyticRulecontentId10": "f8ba18c4-81e3-4db0-8f85-4989f2ed2ade", "_analyticRulecontentId10": "[variables('analyticRulecontentId10')]", "analyticRuleId10": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId10'))]", - "analyticRuleTemplateSpecName10": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId10')))]", - "analyticRuleVersion11": "1.0.0", + "analyticRuleTemplateSpecName10": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId10'))))]", + "_analyticRulecontentProductId10": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId10'),'-', variables('analyticRuleVersion10'))))]", + "analyticRuleVersion11": "1.0.1", "analyticRulecontentId11": "c66b8ced-8c76-415b-a0f3-08c7030a857d", "_analyticRulecontentId11": "[variables('analyticRulecontentId11')]", "analyticRuleId11": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId11'))]", - "analyticRuleTemplateSpecName11": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId11')))]", + "analyticRuleTemplateSpecName11": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId11'))))]", + "_analyticRulecontentProductId11": "[concat(take(variables('_solutionId'),50),'-','ar','-', uniqueString(concat(variables('_solutionId'),'-','AnalyticsRule','-',variables('_analyticRulecontentId11'),'-', variables('analyticRuleVersion11'))))]", "huntingQueryVersion1": "1.0.0", "huntingQuerycontentId1": "efb45608-3955-4915-8a46-ef5d7160cef7", "_huntingQuerycontentId1": "[variables('huntingQuerycontentId1')]", "huntingQueryId1": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId1'))]", - "huntingQueryTemplateSpecName1": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId1')))]", + "huntingQueryTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId1'))))]", + "_huntingQuerycontentProductId1": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId1'),'-', variables('huntingQueryVersion1'))))]", "huntingQueryVersion2": "1.0.0", "huntingQuerycontentId2": "805b5625-8a04-4ca5-bab5-7c8cb383b3e3", "_huntingQuerycontentId2": "[variables('huntingQuerycontentId2')]", "huntingQueryId2": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId2'))]", - "huntingQueryTemplateSpecName2": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId2')))]", + "huntingQueryTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId2'))))]", + "_huntingQuerycontentProductId2": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId2'),'-', variables('huntingQueryVersion2'))))]", "huntingQueryVersion3": "1.0.0", "huntingQuerycontentId3": "d7ea4577-1192-49da-96a2-b6d8219c6ac0", "_huntingQuerycontentId3": "[variables('huntingQuerycontentId3')]", "huntingQueryId3": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId3'))]", - "huntingQueryTemplateSpecName3": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId3')))]", + "huntingQueryTemplateSpecName3": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId3'))))]", + "_huntingQuerycontentProductId3": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId3'),'-', variables('huntingQueryVersion3'))))]", "huntingQueryVersion4": "1.0.0", "huntingQuerycontentId4": "8bd157d3-2613-4a36-83e2-ec55332ed7f7", "_huntingQuerycontentId4": "[variables('huntingQuerycontentId4')]", "huntingQueryId4": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId4'))]", - "huntingQueryTemplateSpecName4": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId4')))]", + "huntingQueryTemplateSpecName4": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId4'))))]", + "_huntingQuerycontentProductId4": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId4'),'-', variables('huntingQueryVersion4'))))]", "huntingQueryVersion5": "1.0.0", "huntingQuerycontentId5": "215a747d-5a5e-4596-b399-85ff5cc572bd", "_huntingQuerycontentId5": "[variables('huntingQuerycontentId5')]", "huntingQueryId5": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId5'))]", - "huntingQueryTemplateSpecName5": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId5')))]", + "huntingQueryTemplateSpecName5": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId5'))))]", + "_huntingQuerycontentProductId5": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId5'),'-', variables('huntingQueryVersion5'))))]", "huntingQueryVersion6": "1.0.0", "huntingQuerycontentId6": "4511f6a0-c174-4ccc-a851-24b14022e217", "_huntingQuerycontentId6": "[variables('huntingQuerycontentId6')]", "huntingQueryId6": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId6'))]", - "huntingQueryTemplateSpecName6": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId6')))]", + "huntingQueryTemplateSpecName6": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId6'))))]", + "_huntingQuerycontentProductId6": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId6'),'-', variables('huntingQueryVersion6'))))]", "huntingQueryVersion7": "1.0.0", "huntingQuerycontentId7": "aeb733e3-34e9-4724-97c7-c6ad31ea39e5", "_huntingQuerycontentId7": "[variables('huntingQuerycontentId7')]", "huntingQueryId7": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId7'))]", - "huntingQueryTemplateSpecName7": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId7')))]", + "huntingQueryTemplateSpecName7": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId7'))))]", + "_huntingQuerycontentProductId7": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId7'),'-', variables('huntingQueryVersion7'))))]", "huntingQueryVersion8": "1.0.0", "huntingQuerycontentId8": "2389de0a-f53f-4a11-b01b-1adce5f26287", "_huntingQuerycontentId8": "[variables('huntingQuerycontentId8')]", "huntingQueryId8": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId8'))]", - "huntingQueryTemplateSpecName8": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId8')))]", + "huntingQueryTemplateSpecName8": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId8'))))]", + "_huntingQuerycontentProductId8": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId8'),'-', variables('huntingQueryVersion8'))))]", "huntingQueryVersion9": "1.0.0", "huntingQuerycontentId9": "7895ffa5-cd61-43cf-89e5-9630e79685fd", "_huntingQuerycontentId9": "[variables('huntingQuerycontentId9')]", "huntingQueryId9": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId9'))]", - "huntingQueryTemplateSpecName9": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId9')))]", + "huntingQueryTemplateSpecName9": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId9'))))]", + "_huntingQuerycontentProductId9": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId9'),'-', variables('huntingQueryVersion9'))))]", "huntingQueryVersion10": "1.0.0", "huntingQuerycontentId10": "064b1051-d8ac-4ef2-a537-30d32b4c27d9", "_huntingQuerycontentId10": "[variables('huntingQuerycontentId10')]", "huntingQueryId10": "[resourceId('Microsoft.OperationalInsights/savedSearches', variables('_huntingQuerycontentId10'))]", - "huntingQueryTemplateSpecName10": "[concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId10')))]", - "parserVersion1": "1.0.0", - "parserContentId1": "CiscoSEGEvent-Parser", - "_parserContentId1": "[variables('parserContentId1')]", - "parserName1": "Cisco SEG Data Parser", - "_parserName1": "[concat(parameters('workspace'),'/',variables('parserName1'))]", - "parserId1": "[resourceId('Microsoft.OperationalInsights/workspaces/savedSearches', parameters('workspace'), variables('parserName1'))]", - "_parserId1": "[variables('parserId1')]", - "parserTemplateSpecName1": "[concat(parameters('workspace'),'-pr-',uniquestring(variables('_parserContentId1')))]", - "uiConfigId1": "CiscoSEG", - "_uiConfigId1": "[variables('uiConfigId1')]", - "dataConnectorContentId1": "CiscoSEG", - "_dataConnectorContentId1": "[variables('dataConnectorContentId1')]", - "dataConnectorId1": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId1'))]", - "_dataConnectorId1": "[variables('dataConnectorId1')]", - "dataConnectorTemplateSpecName1": "[concat(parameters('workspace'),'-dc-',uniquestring(variables('_dataConnectorContentId1')))]", - "dataConnectorVersion1": "1.0.0", - "workbookVersion1": "1.0.0", - "workbookContentId1": "CiscoSEGWorkbook", - "workbookId1": "[resourceId('Microsoft.Insights/workbooks', variables('workbookContentId1'))]", - "workbookTemplateSpecName1": "[concat(parameters('workspace'),'-wb-',uniquestring(variables('_workbookContentId1')))]", - "_workbookContentId1": "[variables('workbookContentId1')]" + "huntingQueryTemplateSpecName10": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-hq-',uniquestring(variables('_huntingQuerycontentId10'))))]", + "_huntingQuerycontentProductId10": "[concat(take(variables('_solutionId'),50),'-','hq','-', uniqueString(concat(variables('_solutionId'),'-','HuntingQuery','-',variables('_huntingQuerycontentId10'),'-', variables('huntingQueryVersion10'))))]", + "_solutioncontentProductId": "[concat(take(variables('_solutionId'),50),'-','sl','-', uniqueString(concat(variables('_solutionId'),'-','Solution','-',variables('_solutionId'),'-', variables('_solutionVersion'))))]" }, "resources": [ { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName1')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "properties": { - "description": "CiscoSEG Analytics Rule 1 with template", - "displayName": "CiscoSEG Analytics Rule template" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName1'),'/',variables('analyticRuleVersion1'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('dataConnectorTemplateSpecName1')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName1'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGDLPViolation_AnalyticalRules Analytics Rule with template version 2.0.1", + "description": "CiscoSEG data connector with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion1')]", + "contentVersion": "[variables('dataConnectorVersion1')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId1')]", - "apiVersion": "2022-04-01-preview", - "kind": "Scheduled", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentId1'))]", + "apiVersion": "2021-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectors", "location": "[parameters('workspace-location')]", + "kind": "GenericUI", "properties": { - "description": "Detects DLP policy violation.", - "displayName": "Cisco SEG - DLP policy violation", - "enabled": false, - "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Outgoing'\n| where tostring(AdditionalFields) has 'ESADLPVerdict'\n| extend dlp_verdict = extract(@'ESADLPVerdict\":\"(NOT_EVALUATED|NO TRIGGER|VIOLATION|NO VIOLATION)\"', 1, tostring(AdditionalFields))\n| where dlp_verdict =~ 'VIOLATION'\n| extend AccountCustomEntity = SrcUserName\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "dataTypes": [ - "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" - } - ], - "tactics": [ - "Exfiltration" - ], - "entityMappings": [ - { - "fieldMappings": [ + "connectorUiConfig": { + "id": "[variables('_uiConfigId1')]", + "title": "[Deprecated] Cisco Secure Email Gateway via Legacy Agent", + "publisher": "Cisco", + "descriptionMarkdown": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) data connector provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.", + "additionalRequirementBanner": "This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution.", + "graphQueries": [ + { + "metricName": "Total data received", + "legend": "CiscoSEG", + "baseQuery": "CiscoSEGEvent" + } + ], + "sampleQueries": [ + { + "description": "Top 10 Senders", + "query": "CiscoSEGEvent\n | where isnotempty(SrcUserName)\n | summarize count() by SrcUserName\n | top 10 by count_" + } + ], + "dataTypes": [ + { + "name": "CommonSecurityLog (CiscoSEG)", + "lastDataReceivedQuery": "CiscoSEGEvent\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)" + } + ], + "connectivityCriterias": [ + { + "type": "IsConnectedQuery", + "value": [ + "CiscoSEGEvent\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(30d)" + ] + } + ], + "availability": { + "status": 1, + "isPreview": false + }, + "permissions": { + "resourceProvider": [ + { + "provider": "Microsoft.OperationalInsights/workspaces", + "permissionsDisplayText": "read and write permissions are required.", + "providerDisplayName": "Workspace", + "scope": "Workspace", + "requiredPermissions": { + "write": true, + "read": true, + "delete": true + } + }, { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "provider": "Microsoft.OperationalInsights/workspaces/sharedKeys", + "permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).", + "providerDisplayName": "Keys", + "scope": "Workspace", + "requiredPermissions": { + "action": true + } } - ], - "entityType": "Account" - } - ] + ] + }, + "instructionSteps": [ + { + "description": ">**NOTE:** This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution." + }, + { + "description": ">**NOTE:** This data connector has been developed using AsyncOS 14.0 for Cisco Secure Email Gateway" + }, + { + "description": "Install and configure the Linux agent to collect your Common Event Format (CEF) Syslog messages and forward them to Microsoft Sentinel.\n\n> Notice that the data from all regions will be stored in the selected workspace", + "innerSteps": [ + { + "title": "1.1 Select or create a Linux machine", + "description": "Select or create a Linux machine that Microsoft Sentinel will use as the proxy between your security solution and Microsoft Sentinel this machine can be on your on-prem environment, Azure or other clouds." + }, + { + "title": "1.2 Install the CEF collector on the Linux machine", + "description": "Install the Microsoft Monitoring Agent on your Linux machine and configure the machine to listen on the necessary port and forward messages to your Microsoft Sentinel workspace. The CEF collector collects CEF messages on port 514 TCP.\n\n> 1. Make sure that you have Python on your machine using the following command: python -version.\n\n> 2. You must have elevated permissions (sudo) on your machine.", + "instructions": [ + { + "parameters": { + "fillWith": [ + "WorkspaceId", + "PrimaryKey" + ], + "label": "Run the following command to install and apply the CEF collector:", + "value": "sudo wget -O cef_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_installer.py&&sudo python cef_installer.py {0} {1}" + }, + "type": "CopyableLabel" + } + ] + } + ], + "title": "1. Linux Syslog agent configuration" + }, + { + "description": "Follow these steps to configure Cisco Secure Email Gateway to forward logs via syslog:\n\n2.1. Configure [Log Subscription](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1134718)\n\n>**NOTE:** Select **Consolidated Event Logs** in Log Type field.", + "title": "2. Forward Common Event Format (CEF) logs to Syslog agent" + }, + { + "description": "Follow the instructions to validate your connectivity:\n\nOpen Log Analytics to check if the logs are received using the CommonSecurityLog schema.\n\n>It may take about 20 minutes until the connection streams data to your workspace.\n\nIf the logs are not received, run the following connectivity validation script:\n\n> 1. Make sure that you have Python on your machine using the following command: python -version\n\n>2. You must have elevated permissions (sudo) on your machine", + "instructions": [ + { + "parameters": { + "fillWith": [ + "WorkspaceId" + ], + "label": "Run the following command to validate your connectivity:", + "value": "sudo wget -O cef_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_troubleshoot.py&&sudo python cef_troubleshoot.py {0}" + }, + "type": "CopyableLabel" + } + ], + "title": "3. Validate connection" + }, + { + "description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)", + "title": "4. Secure your machine " + } + ] + } } }, { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId1'),'/'))))]", + "apiVersion": "2023-04-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', last(split(variables('_dataConnectorId1'),'/'))))]", "properties": { - "description": "CiscoSEG Analytics Rule 1", - "parentId": "[variables('analyticRuleId1')]", - "contentId": "[variables('_analyticRulecontentId1')]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion1')]", + "parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId1'))]", + "contentId": "[variables('_dataConnectorContentId1')]", + "kind": "DataConnector", + "version": "[variables('dataConnectorVersion1')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -276,204 +380,326 @@ } } ] - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_dataConnectorContentId1')]", + "contentKind": "DataConnector", + "displayName": "[Deprecated] Cisco Secure Email Gateway via Legacy Agent", + "contentProductId": "[variables('_dataConnectorcontentProductId1')]", + "id": "[variables('_dataConnectorcontentProductId1')]", + "version": "[variables('dataConnectorVersion1')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName2')]", + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2023-04-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', last(split(variables('_dataConnectorId1'),'/'))))]", + "dependsOn": [ + "[variables('_dataConnectorId1')]" + ], "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "properties": { - "description": "CiscoSEG Analytics Rule 2 with template", - "displayName": "CiscoSEG Analytics Rule template" + "parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId1'))]", + "contentId": "[variables('_dataConnectorContentId1')]", + "kind": "DataConnector", + "version": "[variables('dataConnectorVersion1')]", + "source": { + "kind": "Solution", + "name": "CiscoSEG", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "Microsoft", + "email": "[variables('_email')]" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + } } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName2'),'/',variables('analyticRuleVersion2'))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentId1'))]", + "apiVersion": "2021-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectors", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName2'))]" - ], + "kind": "GenericUI", "properties": { - "description": "CiscoSEGMaliciousAttachmentNotBlocked_AnalyticalRules Analytics Rule with template version 2.0.1", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion2')]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId2')]", - "apiVersion": "2022-04-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Detects mails with malicious attachments which were not blocked.", - "displayName": "Cisco SEG - Malicious attachment not blocked", - "enabled": false, - "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where SimplifiedDeviceAction =~ 'DELIVERED'\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\n| extend amp_verdict = extract(@'ESAAMPVerdict\":\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\"', 1, tostring(AdditionalFields))\n| where amp_verdict =~ 'MALICIOUS'\n| extend AccountCustomEntity = DstUserName\n", - "queryFrequency": "PT10M", - "queryPeriod": "PT10M", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "dataTypes": [ - "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" - } - ], - "tactics": [ - "InitialAccess" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "columnName": "AccountCustomEntity", - "identifier": "Name" - } - ], - "entityType": "Account" - } - ] + "connectorUiConfig": { + "title": "[Deprecated] Cisco Secure Email Gateway via Legacy Agent", + "publisher": "Cisco", + "descriptionMarkdown": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) data connector provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.", + "graphQueries": [ + { + "metricName": "Total data received", + "legend": "CiscoSEG", + "baseQuery": "CiscoSEGEvent" + } + ], + "dataTypes": [ + { + "name": "CommonSecurityLog (CiscoSEG)", + "lastDataReceivedQuery": "CiscoSEGEvent\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)" + } + ], + "connectivityCriterias": [ + { + "type": "IsConnectedQuery", + "value": [ + "CiscoSEGEvent\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(30d)" + ] + } + ], + "sampleQueries": [ + { + "description": "Top 10 Senders", + "query": "CiscoSEGEvent\n | where isnotempty(SrcUserName)\n | summarize count() by SrcUserName\n | top 10 by count_" + } + ], + "availability": { + "status": 1, + "isPreview": false + }, + "permissions": { + "resourceProvider": [ + { + "provider": "Microsoft.OperationalInsights/workspaces", + "permissionsDisplayText": "read and write permissions are required.", + "providerDisplayName": "Workspace", + "scope": "Workspace", + "requiredPermissions": { + "write": true, + "read": true, + "delete": true + } + }, + { + "provider": "Microsoft.OperationalInsights/workspaces/sharedKeys", + "permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).", + "providerDisplayName": "Keys", + "scope": "Workspace", + "requiredPermissions": { + "action": true + } } + ] + }, + "instructionSteps": [ + { + "description": ">**NOTE:** This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution." }, { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId2'),'/'))))]", - "properties": { - "description": "CiscoSEG Analytics Rule 2", - "parentId": "[variables('analyticRuleId2')]", - "contentId": "[variables('_analyticRulecontentId2')]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion2')]", - "source": { - "kind": "Solution", - "name": "CiscoSEG", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" + "description": ">**NOTE:** This data connector has been developed using AsyncOS 14.0 for Cisco Secure Email Gateway" + }, + { + "description": "Install and configure the Linux agent to collect your Common Event Format (CEF) Syslog messages and forward them to Microsoft Sentinel.\n\n> Notice that the data from all regions will be stored in the selected workspace", + "innerSteps": [ + { + "title": "1.1 Select or create a Linux machine", + "description": "Select or create a Linux machine that Microsoft Sentinel will use as the proxy between your security solution and Microsoft Sentinel this machine can be on your on-prem environment, Azure or other clouds." }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" + { + "title": "1.2 Install the CEF collector on the Linux machine", + "description": "Install the Microsoft Monitoring Agent on your Linux machine and configure the machine to listen on the necessary port and forward messages to your Microsoft Sentinel workspace. The CEF collector collects CEF messages on port 514 TCP.\n\n> 1. Make sure that you have Python on your machine using the following command: python -version.\n\n> 2. You must have elevated permissions (sudo) on your machine.", + "instructions": [ + { + "parameters": { + "fillWith": [ + "WorkspaceId", + "PrimaryKey" + ], + "label": "Run the following command to install and apply the CEF collector:", + "value": "sudo wget -O cef_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_installer.py&&sudo python cef_installer.py {0} {1}" + }, + "type": "CopyableLabel" + } + ] } - } + ], + "title": "1. Linux Syslog agent configuration" + }, + { + "description": "Follow these steps to configure Cisco Secure Email Gateway to forward logs via syslog:\n\n2.1. Configure [Log Subscription](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1134718)\n\n>**NOTE:** Select **Consolidated Event Logs** in Log Type field.", + "title": "2. Forward Common Event Format (CEF) logs to Syslog agent" + }, + { + "description": "Follow the instructions to validate your connectivity:\n\nOpen Log Analytics to check if the logs are received using the CommonSecurityLog schema.\n\n>It may take about 20 minutes until the connection streams data to your workspace.\n\nIf the logs are not received, run the following connectivity validation script:\n\n> 1. Make sure that you have Python on your machine using the following command: python -version\n\n>2. You must have elevated permissions (sudo) on your machine", + "instructions": [ + { + "parameters": { + "fillWith": [ + "WorkspaceId" + ], + "label": "Run the following command to validate your connectivity:", + "value": "sudo wget -O cef_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_troubleshoot.py&&sudo python cef_troubleshoot.py {0}" + }, + "type": "CopyableLabel" + } + ], + "title": "3. Validate connection" + }, + { + "description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)", + "title": "4. Secure your machine " } - ] + ], + "id": "[variables('_uiConfigId1')]", + "additionalRequirementBanner": "This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution." } } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName3')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "properties": { - "description": "CiscoSEG Analytics Rule 3 with template", - "displayName": "CiscoSEG Analytics Rule template" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName3'),'/',variables('analyticRuleVersion3'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('dataConnectorTemplateSpecName2')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName3'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGMultipleLargeEmails_AnalyticalRules Analytics Rule with template version 2.0.1", + "description": "CiscoSEG data connector with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion3')]", + "contentVersion": "[variables('dataConnectorVersion2')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId3')]", - "apiVersion": "2022-04-01-preview", - "kind": "Scheduled", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentId2'))]", + "apiVersion": "2021-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectors", "location": "[parameters('workspace-location')]", + "kind": "GenericUI", "properties": { - "description": "Detects possible data exfiltration.", - "displayName": "Cisco SEG - Multiple large emails sent to external recipient", - "enabled": false, - "query": "let e_theshold = 3;\nlet s_threshold = 10000000;\nCiscoSEGEvent\n| where AdditionalFields[15]['ESAMsgSize'] > s_threshold\n| where NetworkDirection =~ 'Outgoing'\n| extend rec_domain = extract(@'@(.*)', 1, DstUserName)\n| extend s_domain = extract(@'@(.*)', 1, SrcUserName)\n| where s_domain != rec_domain\n| summarize count() by SrcUserName\n| where count_ >= e_theshold\n| extend AccountCustomEntity = SrcUserName\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "dataTypes": [ - "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" - } - ], - "tactics": [ - "Exfiltration" - ], - "entityMappings": [ - { - "fieldMappings": [ + "connectorUiConfig": { + "id": "[variables('_uiConfigId2')]", + "title": "[Recommended] Cisco Secure Email Gateway via AMA", + "publisher": "Cisco", + "descriptionMarkdown": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) data connector provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.", + "additionalRequirementBanner": "This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution.", + "graphQueries": [ + { + "metricName": "Total data received", + "legend": "CiscoSEG", + "baseQuery": "CommonSecurityLog\n |where DeviceVendor =~ 'Cisco'\n |where DeviceProduct =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n |extend sent_by_ama = column_ifexists('CollectorHostName','')\n |where isnotempty(sent_by_ama)" + } + ], + "sampleQueries": [ + { + "description": "Top 10 Senders", + "query": "CiscoSEGEvent\n | where isnotempty(SrcUserName)\n | summarize count() by SrcUserName\n | top 10 by count_" + } + ], + "dataTypes": [ + { + "name": "CommonSecurityLog (CiscoSEG)", + "lastDataReceivedQuery": "CommonSecurityLog\n |where DeviceVendor =~ 'Cisco'\n |where DeviceProduct =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n |extend sent_by_ama = column_ifexists('CollectorHostName','')\n |where isnotempty(sent_by_ama)\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)" + } + ], + "connectivityCriterias": [ + { + "type": "IsConnectedQuery", + "value": [ + "CommonSecurityLog\n |where DeviceVendor =~ 'Cisco'\n |where DeviceProduct =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n |extend sent_by_ama = column_ifexists('CollectorHostName','')\n |where isnotempty(sent_by_ama)\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(30d)" + ] + } + ], + "availability": { + "status": 1, + "isPreview": false + }, + "permissions": { + "resourceProvider": [ + { + "provider": "Microsoft.OperationalInsights/workspaces", + "permissionsDisplayText": "read and write permissions are required.", + "providerDisplayName": "Workspace", + "scope": "Workspace", + "requiredPermissions": { + "write": true, + "read": true, + "delete": true + } + }, { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "provider": "Microsoft.OperationalInsights/workspaces/sharedKeys", + "permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).", + "providerDisplayName": "Keys", + "scope": "Workspace", + "requiredPermissions": { + "action": true + } } ], - "entityType": "Account" - } - ] + "customs": [ + { + "description": "To collect data from non-Azure VMs, they must have Azure Arc installed and enabled. [Learn more](https://docs.microsoft.com/azure/azure-monitor/agents/azure-monitor-agent-install?tabs=ARMAgentPowerShell,PowerShellWindows,PowerShellWindowsArc,CLIWindows,CLIWindowsArc)" + }, + { + "description": "Common Event Format (CEF) via AMA and Syslog via AMA data connectors must be installed [Learn more](https://learn.microsoft.com/azure/sentinel/connect-cef-ama#open-the-connector-page-and-create-the-dcr)" + } + ] + }, + "instructionSteps": [ + { + "description": ">**NOTE:** This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution.", + "instructions": [ + { + "parameters": { + "title": "1. Kindly follow the steps to configure the data connector", + "instructionSteps": [ + { + "title": "Step A. Configure the Common Event Format (CEF) via AMA data connector", + "description": "_Note:- CEF logs are collected only from Linux Agents_\n\n1. Navigate to Microsoft Sentinel workspace ---> configuration ---> Data connector blade .\n\n2. Search for 'Common Event Format (CEF) via AMA' data connector and open it.\n\n3. Check If there is no existing DCR configured to collect required facility of logs, Create a new DCR (Data Collection Rule)\n\n\t_Note:- It is recommended to install minimum 1.27 version of AMA agent [Learn more](https://learn.microsoft.com/azure/azure-monitor/agents/azure-monitor-agent-manage?tabs=azure-portal ) and ensure there is no duplicate DCR as it can cause log duplicacy_\n\n4. Run the command provided in the CEF via AMA data connector page to configure the CEF collector on the machine" + + }, + { + "title": "Step B. Forward Common Event Format (CEF) logs to Syslog agent", + "description": "Follow these steps to configure Cisco Secure Email Gateway to forward logs via syslog:\n\n Configure [Log Subscription](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1134718)\n\n>**NOTE:** Select **Consolidated Event Logs** in Log Type field." + + }, + { + "title": "Step C. Validate connection", + "description": "Follow the instructions to validate your connectivity:\n\nOpen Log Analytics to check if the logs are received using the CommonSecurityLog schema.\n\nIt may take about 20 minutes until the connection streams data to your workspace.\n\nIf the logs are not received, run the following connectivity validation script:\n\n 1. Make sure that you have Python on your machine using the following command: python -version\n\n2. You must have elevated permissions (sudo) on your machine", + "instructions": [ + { + "parameters": { + "label": "Run the following command to validate your connectivity:", + "value": "sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --cef" + }, + "type": "CopyableLabel" + } + ] + } + ] + }, + "type": "InstructionStepsGroup" + } + ] + }, + { + "description": "2Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)", + "title": "2. Secure your machine " + } + ] + } } }, { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId3'),'/'))))]", + "apiVersion": "2023-04-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', last(split(variables('_dataConnectorId2'),'/'))))]", "properties": { - "description": "CiscoSEG Analytics Rule 3", - "parentId": "[variables('analyticRuleId3')]", - "contentId": "[variables('_analyticRulecontentId3')]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion3')]", + "parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId2'))]", + "contentId": "[variables('_dataConnectorContentId2')]", + "kind": "DataConnector", + "version": "[variables('dataConnectorVersion2')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -492,190 +718,204 @@ } } ] - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_dataConnectorContentId2')]", + "contentKind": "DataConnector", + "displayName": "[Recommended] Cisco Secure Email Gateway via AMA", + "contentProductId": "[variables('_dataConnectorcontentProductId2')]", + "id": "[variables('_dataConnectorcontentProductId2')]", + "version": "[variables('dataConnectorVersion2')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName4')]", + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2023-04-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', last(split(variables('_dataConnectorId2'),'/'))))]", + "dependsOn": [ + "[variables('_dataConnectorId2')]" + ], "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "properties": { - "description": "CiscoSEG Analytics Rule 4 with template", - "displayName": "CiscoSEG Analytics Rule template" + "parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId2'))]", + "contentId": "[variables('_dataConnectorContentId2')]", + "kind": "DataConnector", + "version": "[variables('dataConnectorVersion2')]", + "source": { + "kind": "Solution", + "name": "CiscoSEG", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "Microsoft", + "email": "[variables('_email')]" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + } } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName4'),'/',variables('analyticRuleVersion4'))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentId2'))]", + "apiVersion": "2021-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectors", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName4'))]" - ], + "kind": "GenericUI", "properties": { - "description": "CiscoSEGMultipleSuspiciousEmails_AnalyticalRules Analytics Rule with template version 2.0.1", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion4')]", - "parameters": {}, - "variables": {}, - "resources": [ + "connectorUiConfig": { + "title": "[Recommended] Cisco Secure Email Gateway via AMA", + "publisher": "Cisco", + "descriptionMarkdown": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) data connector provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.", + "graphQueries": [ { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId4')]", - "apiVersion": "2022-04-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Detects possibly phishing emails.", - "displayName": "Cisco SEG - Multiple suspiciuos attachments received", - "enabled": false, - "query": "let r_threshold = 5;\nCiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where isnotempty(EventMessage)\n| where strlen(EventMessage) < 20\n| summarize rec=makeset(DstUserName) by EventMessage, bin(TimeGenerated, 10m)\n| where array_length(rec) > r_threshold\n| extend AccountCustomEntity = rec\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "dataTypes": [ - "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" - } - ], - "tactics": [ - "InitialAccess" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "columnName": "AccountCustomEntity", - "identifier": "Name" - } - ], - "entityType": "Account" - } - ] + "metricName": "Total data received", + "legend": "CiscoSEG", + "baseQuery": "CommonSecurityLog\n |where DeviceVendor =~ 'Cisco'\n |where DeviceProduct =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n |extend sent_by_ama = column_ifexists('CollectorHostName','')\n |where isnotempty(sent_by_ama)" + } + ], + "dataTypes": [ + { + "name": "CommonSecurityLog (CiscoSEG)", + "lastDataReceivedQuery": "CommonSecurityLog\n |where DeviceVendor =~ 'Cisco'\n |where DeviceProduct =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n |extend sent_by_ama = column_ifexists('CollectorHostName','')\n |where isnotempty(sent_by_ama)\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)" + } + ], + "connectivityCriterias": [ + { + "type": "IsConnectedQuery", + "value": [ + "CommonSecurityLog\n |where DeviceVendor =~ 'Cisco'\n |where DeviceProduct =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n |extend sent_by_ama = column_ifexists('CollectorHostName','')\n |where isnotempty(sent_by_ama)\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(30d)" + ] + } + ], + "sampleQueries": [ + { + "description": "Top 10 Senders", + "query": "CiscoSEGEvent\n | where isnotempty(SrcUserName)\n | summarize count() by SrcUserName\n | top 10 by count_" + } + ], + "availability": { + "status": 1, + "isPreview": false + }, + "permissions": { + "resourceProvider": [ + { + "provider": "Microsoft.OperationalInsights/workspaces", + "permissionsDisplayText": "read and write permissions are required.", + "providerDisplayName": "Workspace", + "scope": "Workspace", + "requiredPermissions": { + "write": true, + "read": true, + "delete": true + } + }, + { + "provider": "Microsoft.OperationalInsights/workspaces/sharedKeys", + "permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).", + "providerDisplayName": "Keys", + "scope": "Workspace", + "requiredPermissions": { + "action": true + } } - }, + ], + "customs": [ + { + "description": "To collect data from non-Azure VMs, they must have Azure Arc installed and enabled. [Learn more](https://docs.microsoft.com/azure/azure-monitor/agents/azure-monitor-agent-install?tabs=ARMAgentPowerShell,PowerShellWindows,PowerShellWindowsArc,CLIWindows,CLIWindowsArc)" + }, + { + "description": "Common Event Format (CEF) via AMA and Syslog via AMA data connectors must be installed [Learn more](https://learn.microsoft.com/azure/sentinel/connect-cef-ama#open-the-connector-page-and-create-the-dcr)" + } + ] + }, + "instructionSteps": [ { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId4'),'/'))))]", - "properties": { - "description": "CiscoSEG Analytics Rule 4", - "parentId": "[variables('analyticRuleId4')]", - "contentId": "[variables('_analyticRulecontentId4')]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion4')]", - "source": { - "kind": "Solution", - "name": "CiscoSEG", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" + "description": ">**NOTE:** This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution.", + "instructions": [ + { + "parameters": { + "title": "1. Kindly follow the steps to configure the data connector", + "instructionSteps": [ + { + "title": "Step A. Configure the Common Event Format (CEF) via AMA data connector", + "description": "_Note:- CEF logs are collected only from Linux Agents_\n\n1. Navigate to Microsoft Sentinel workspace ---> configuration ---> Data connector blade .\n\n2. Search for 'Common Event Format (CEF) via AMA' data connector and open it.\n\n3. Check If there is no existing DCR configured to collect required facility of logs, Create a new DCR (Data Collection Rule)\n\n\t_Note:- It is recommended to install minimum 1.27 version of AMA agent [Learn more](https://learn.microsoft.com/azure/azure-monitor/agents/azure-monitor-agent-manage?tabs=azure-portal ) and ensure there is no duplicate DCR as it can cause log duplicacy_\n\n4. Run the command provided in the CEF via AMA data connector page to configure the CEF collector on the machine" + + }, + { + "title": "Step B. Forward Common Event Format (CEF) logs to Syslog agent", + "description": "Follow these steps to configure Cisco Secure Email Gateway to forward logs via syslog:\n\n Configure [Log Subscription](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1134718)\n\n>**NOTE:** Select **Consolidated Event Logs** in Log Type field." + + }, + { + "title": "Step C. Validate connection", + "description": "Follow the instructions to validate your connectivity:\n\nOpen Log Analytics to check if the logs are received using the CommonSecurityLog schema.\n\nIt may take about 20 minutes until the connection streams data to your workspace.\n\nIf the logs are not received, run the following connectivity validation script:\n\n 1. Make sure that you have Python on your machine using the following command: python -version\n\n2. You must have elevated permissions (sudo) on your machine", + "instructions": [ + { + "parameters": { + "label": "Run the following command to validate your connectivity:", + "value": "sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --cef" + }, + "type": "CopyableLabel" + } + ] + } + ] + }, + "type": "InstructionStepsGroup" } - } + ] + }, + { + "description": "2Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)", + "title": "2. Secure your machine " } - ] + ], + "id": "[variables('_uiConfigId2')]", + "additionalRequirementBanner": "This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution." } } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName5')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "properties": { - "description": "CiscoSEG Analytics Rule 5 with template", - "displayName": "CiscoSEG Analytics Rule template" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName5'),'/',variables('analyticRuleVersion5'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('parserTemplateSpecName1')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName5'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGPossibleOutbreak_AnalyticalRules Analytics Rule with template version 2.0.1", + "description": "CiscoSEGEvent Data Parser with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion5')]", + "contentVersion": "[variables('parserVersion1')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId5')]", - "apiVersion": "2022-04-01-preview", - "kind": "Scheduled", + "name": "[variables('_parserName1')]", + "apiVersion": "2022-10-01", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", "location": "[parameters('workspace-location')]", "properties": { - "description": "Detects possible outbreak activity.", - "displayName": "Cisco SEG - Possible outbreak", - "enabled": false, - "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAOFVerdict'\n| extend of_verdict = extract(@'ESAOFVerdict\":\"(NOT_EVALUATED|POSITIVE|NEGATIVE)\"', 1, tostring(AdditionalFields))\n| where of_verdict =~ 'POSITIVE'\n| extend AccountCustomEntity = DstUserName\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "dataTypes": [ - "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" - } - ], - "tactics": [ - "InitialAccess" - ], - "entityMappings": [ + "eTag": "*", + "displayName": "Cisco SEG Data Parser", + "category": "Microsoft Sentinel Parser", + "functionAlias": "CiscoSEGEvent", + "query": "CommonSecurityLog\n| where DeviceEventClassID =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n| parse-kv AdditionalExtensions as (startTime:string, endTime:string, ESAAttachmentDetails:string) with (pair_delimiter=';', kv_delimiter='=')\n| parse-kv AdditionalExtensions as (ESAMID:int, ESAICID:int, ESADCID:int, ESAAMPVerdict:string, ESAASVerdict:string, ESAAVVerdict:string, ESACFVerdict:string, ESADLPVerdict:string, ESADMARCVerdict:string, ESAFriendlyFrom:string, ESAGMVerdict:string, ESAMailFlowPolicy:string, ESAMFVerdict:string, ESAOFVerdict:string, ESAHeloDomain:string, ESAReplyTo:string, ESASDRDomainAge:string, ESASPFVerdict:string, sourceHostName:string, sourceAddress:string, ESATLSInConnStatus:string, ESATLSInProtocol:string, ESATLSOutConnStatus:string) with (pair_delimiter=';', kv_delimiter='=')\n| parse AdditionalExtensions with * \"ESAGMVerdict\" ESAGMVerdict\";\" *\n| extend NetworkDirection = case(CommunicationDirection == '0', 'Incoming', 'Outgoing')\n| parse ESAAttachmentDetails with * \"'fileHash': '\" FileHashSha256\"'},\" *\n| project-rename EventStartTime = startTime\n\t\t\t , EventEndTime = endTime\n\t\t\t , EventVendor = DeviceVendor\n , EventProduct = DeviceProduct\n , EventId = DeviceEventClassID\n , EventSeverity = LogSeverity\n , DvcAction = DeviceAction\n , DvcIpAddr = DeviceAddress\n , EventMessage = Message\n , EventProductVersion = DeviceVersion\n , SerialNumber = DeviceExternalID\n , DvcInboundInterface = DeviceInboundInterface\n , DvcOutboundInterface = DeviceOutboundInterface\n , DstUserName = DestinationUserName\n , SrcUserName = SourceUserName\n , MailPolicy = DeviceCustomString1\n , SrcGeoCountry = DeviceCustomString2\n , ThreatCategory = DeviceCustomString3\n , EventOriginalUid = DeviceCustomString4\n , MailLanguage = DeviceCustomString5\n , SdrRepScore = DeviceCustomString6\n , SbrsScore = DeviceCustomFloatingPoint1\n| project-away Activity\n , DeviceCustomString1Label\n , DeviceCustomString2Label\n , DeviceCustomString3Label\n , DeviceCustomString4Label\n , DeviceCustomString5Label\n , DeviceCustomString6Label\n , DeviceCustomFloatingPoint1Label\n , AdditionalExtensions\n", + "functionParameters": "", + "version": 2, + "tags": [ { - "fieldMappings": [ - { - "columnName": "AccountCustomEntity", - "identifier": "Name" - } - ], - "entityType": "Account" + "name": "description", + "value": "" } ] } @@ -683,16 +923,18 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId5'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('Parser-', last(split(variables('_parserId1'),'/'))))]", + "dependsOn": [ + "[variables('_parserId1')]" + ], "properties": { - "description": "CiscoSEG Analytics Rule 5", - "parentId": "[variables('analyticRuleId5')]", - "contentId": "[variables('_analyticRulecontentId5')]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion5')]", + "parentId": "[resourceId('Microsoft.OperationalInsights/workspaces/savedSearches', parameters('workspace'), variables('parserName1'))]", + "contentId": "[variables('_parserContentId1')]", + "kind": "Parser", + "version": "[variables('parserVersion1')]", "source": { - "kind": "Solution", "name": "CiscoSEG", + "kind": "Solution", "sourceId": "[variables('_solutionId')]" }, "author": { @@ -708,204 +950,114 @@ } } ] - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_parserContentId1')]", + "contentKind": "Parser", + "displayName": "Cisco SEG Data Parser", + "contentProductId": "[variables('_parsercontentProductId1')]", + "id": "[variables('_parsercontentProductId1')]", + "version": "[variables('parserVersion1')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName6')]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2022-10-01", + "name": "[variables('_parserName1')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "properties": { - "description": "CiscoSEG Analytics Rule 6 with template", - "displayName": "CiscoSEG Analytics Rule template" + "eTag": "*", + "displayName": "Cisco SEG Data Parser", + "category": "Microsoft Sentinel Parser", + "functionAlias": "CiscoSEGEvent", + "query": "CommonSecurityLog\n| where DeviceEventClassID =~ 'ESA_CONSOLIDATED_LOG_EVENT'\n| parse-kv AdditionalExtensions as (startTime:string, endTime:string, ESAAttachmentDetails:string) with (pair_delimiter=';', kv_delimiter='=')\n| parse-kv AdditionalExtensions as (ESAMID:int, ESAICID:int, ESADCID:int, ESAAMPVerdict:string, ESAASVerdict:string, ESAAVVerdict:string, ESACFVerdict:string, ESADLPVerdict:string, ESADMARCVerdict:string, ESAFriendlyFrom:string, ESAGMVerdict:string, ESAMailFlowPolicy:string, ESAMFVerdict:string, ESAOFVerdict:string, ESAHeloDomain:string, ESAReplyTo:string, ESASDRDomainAge:string, ESASPFVerdict:string, sourceHostName:string, sourceAddress:string, ESATLSInConnStatus:string, ESATLSInProtocol:string, ESATLSOutConnStatus:string) with (pair_delimiter=';', kv_delimiter='=')\n| parse AdditionalExtensions with * \"ESAGMVerdict\" ESAGMVerdict\";\" *\n| extend NetworkDirection = case(CommunicationDirection == '0', 'Incoming', 'Outgoing')\n| parse ESAAttachmentDetails with * \"'fileHash': '\" FileHashSha256\"'},\" *\n| project-rename EventStartTime = startTime\n\t\t\t , EventEndTime = endTime\n\t\t\t , EventVendor = DeviceVendor\n , EventProduct = DeviceProduct\n , EventId = DeviceEventClassID\n , EventSeverity = LogSeverity\n , DvcAction = DeviceAction\n , DvcIpAddr = DeviceAddress\n , EventMessage = Message\n , EventProductVersion = DeviceVersion\n , SerialNumber = DeviceExternalID\n , DvcInboundInterface = DeviceInboundInterface\n , DvcOutboundInterface = DeviceOutboundInterface\n , DstUserName = DestinationUserName\n , SrcUserName = SourceUserName\n , MailPolicy = DeviceCustomString1\n , SrcGeoCountry = DeviceCustomString2\n , ThreatCategory = DeviceCustomString3\n , EventOriginalUid = DeviceCustomString4\n , MailLanguage = DeviceCustomString5\n , SdrRepScore = DeviceCustomString6\n , SbrsScore = DeviceCustomFloatingPoint1\n| project-away Activity\n , DeviceCustomString1Label\n , DeviceCustomString2Label\n , DeviceCustomString3Label\n , DeviceCustomString4Label\n , DeviceCustomString5Label\n , DeviceCustomString6Label\n , DeviceCustomFloatingPoint1Label\n , AdditionalExtensions\n", + "functionParameters": "", + "version": 2, + "tags": [ + { + "name": "description", + "value": "" + } + ] } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName6'),'/',variables('analyticRuleVersion6'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2022-01-01-preview", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('Parser-', last(split(variables('_parserId1'),'/'))))]", "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName6'))]" + "[variables('_parserId1')]" ], "properties": { - "description": "CiscoSEGPotentialLinkToMalwareDownload_AnalyticalRules Analytics Rule with template version 2.0.1", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion6')]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId6')]", - "apiVersion": "2022-04-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Detects mails with suspicious links.", - "displayName": "Cisco SEG - Potential phishing link", - "enabled": false, - "query": "let dl_cat = dynamic(['Illegal Downloads']);\nCiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAURLDetails'\n| extend link_cat = extract(@\"'Category': '(.*?)'\", 1, tostring(AdditionalFields))\n| where link_cat in~ (dl_cat)\n| extend AccountCustomEntity = DstUserName\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "dataTypes": [ - "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" - } - ], - "tactics": [ - "InitialAccess" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "columnName": "AccountCustomEntity", - "identifier": "Name" - } - ], - "entityType": "Account" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId6'),'/'))))]", - "properties": { - "description": "CiscoSEG Analytics Rule 6", - "parentId": "[variables('analyticRuleId6')]", - "contentId": "[variables('_analyticRulecontentId6')]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion6')]", - "source": { - "kind": "Solution", - "name": "CiscoSEG", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" - }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] + "parentId": "[resourceId('Microsoft.OperationalInsights/workspaces/savedSearches', parameters('workspace'), variables('parserName1'))]", + "contentId": "[variables('_parserContentId1')]", + "kind": "Parser", + "version": "[variables('parserVersion1')]", + "source": { + "kind": "Solution", + "name": "CiscoSEG", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "Microsoft", + "email": "[variables('_email')]" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" } } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName7')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "properties": { - "description": "CiscoSEG Analytics Rule 7 with template", - "displayName": "CiscoSEG Analytics Rule template" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName7'),'/',variables('analyticRuleVersion7'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('workbookTemplateSpecName1')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName7'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGSuspiciousLink_AnalyticalRules Analytics Rule with template version 2.0.1", + "description": "CiscoSEGWorkbook Workbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion7')]", + "contentVersion": "[variables('workbookVersion1')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId7')]", - "apiVersion": "2022-04-01-preview", - "kind": "Scheduled", + "type": "Microsoft.Insights/workbooks", + "name": "[variables('workbookContentId1')]", "location": "[parameters('workspace-location')]", + "kind": "shared", + "apiVersion": "2021-08-01", + "metadata": { + "description": "Sets the time name for analysis" + }, "properties": { - "description": "Detects mails with suspicious links.", - "displayName": "Cisco SEG - Suspicious link", - "enabled": false, - "query": "let bl_cat = dynamic(['Adult', 'Hacking', 'Cheating and Plagiarism', 'Child Abuse Content', 'Dating', 'Illegal Activities', 'Pornography']);\nCiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAURLDetails'\n| extend link_cat = extract(@\"'Category': '(.*?)'\", 1, tostring(AdditionalFields))\n| where link_cat in~ (bl_cat)\n| extend AccountCustomEntity = DstUserName\n", - "queryFrequency": "PT15M", - "queryPeriod": "PT15M", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": [ - { - "dataTypes": [ - "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" - } - ], - "tactics": [ - "InitialAccess" - ], - "entityMappings": [ - { - "fieldMappings": [ - { - "columnName": "AccountCustomEntity", - "identifier": "Name" - } - ], - "entityType": "Account" - } - ] + "displayName": "[parameters('workbook1-name')]", + "serializedData": "{\"version\":\"Notebook/1.0\",\"items\":[{\"type\":1,\"content\":{\"json\":\"**NOTE**: This data connector depends on a parser based on Kusto Function **CiscoSEGEvent** to work as expected. [Follow steps to get this Kusto Function](https://aka.ms/sentinel-ciscoseg-parser)\"},\"name\":\"text - 8\"},{\"type\":9,\"content\":{\"version\":\"KqlParameterItem/1.0\",\"parameters\":[{\"id\":\"cd8447d9-b096-4673-92d8-2a1e8291a125\",\"version\":\"KqlParameterItem/1.0\",\"name\":\"TimeRange\",\"type\":4,\"description\":\"Sets the time name for analysis\",\"value\":{\"durationMs\":7776000000},\"typeSettings\":{\"selectableValues\":[{\"durationMs\":900000},{\"durationMs\":3600000},{\"durationMs\":86400000},{\"durationMs\":604800000},{\"durationMs\":2592000000},{\"durationMs\":7776000000}]},\"timeContext\":{\"durationMs\":86400000}}],\"style\":\"pills\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"parameters - 11\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| make-series TotalEvents = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain};\",\"size\":0,\"title\":\"Events Over Time\",\"color\":\"orange\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"timechart\",\"graphSettings\":{\"type\":0}},\"customWidth\":\"50\",\"name\":\"query - 12\",\"styleSettings\":{\"maxWidth\":\"55\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"let tot_m = CiscoSEGEvent\\r\\n| summarize e_count=count()\\r\\n| extend Title='Total Mails';\\r\\nlet rec = CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where SimplifiedDeviceAction =~ 'DELIVERED'\\r\\n| summarize e_count=count()\\r\\n| extend Title='Mails Delivered';\\r\\nlet q_m = CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where SimplifiedDeviceAction =~ 'QUARANTINED'\\r\\n| summarize e_count=count()\\r\\n| extend Title='Quarantined Mails';\\r\\nlet mal_m = CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\\r\\n| extend amp_verdict = extract(@'ESAAMPVerdict\\\":\\\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\\\"', 1, tostring(AdditionalFields))\\r\\n| where amp_verdict =~ 'MALICIOUS'\\r\\n| summarize e_count=count()\\r\\n| extend Title='Malicious Mails';\\r\\nunion isfuzzy=true tot_m, rec, q_m, mal_m\\r\\n| order by e_count\",\"size\":3,\"title\":\"Mail Summary\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"tiles\",\"tileSettings\":{\"titleContent\":{\"columnMatch\":\"Title\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"e_count\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"style\":\"decimal\",\"maximumFractionDigits\":2,\"maximumSignificantDigits\":3}}},\"secondaryContent\":{\"columnMatch\":\"Trend\",\"formatter\":9,\"formatOptions\":{\"palette\":\"purple\"}},\"showBorder\":false}},\"customWidth\":\"20\",\"name\":\"query - 0\",\"styleSettings\":{\"maxWidth\":\"30\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\n| where NetworkDirection =~ 'Incoming'\\n| summarize tot_m = count() by DstUserName\\n| join kind = inner (CiscoSEGEvent\\n | make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by DstUserName)\\n on DstUserName\\n| project-away DstUserName1, TimeGenerated\\n| project User = DstUserName, TotalMailsReceived=tot_m, Trend\\n| order by TotalMailsReceived\\n| take 6\",\"size\":0,\"title\":\"Users' mail volume\",\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"tiles\",\"tileSettings\":{\"titleContent\":{\"columnMatch\":\"User\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"TotalMailsReceived\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}},\"secondaryContent\":{\"columnMatch\":\"Trend\",\"formatter\":10,\"formatOptions\":{\"palette\":\"magenta\"}},\"showBorder\":false}},\"customWidth\":\"30\",\"name\":\"query - 10\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Outgoing'\\r\\n| where isnotempty(SrcUserName)\\r\\n| summarize count() by SrcUserName\\r\\n| top 10 by count_\",\"size\":3,\"title\":\"Top Senders\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"customWidth\":\"33\",\"name\":\"query - 3\",\"styleSettings\":{\"margin\":\"10\",\"padding\":\"10\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where isnotempty(DstUserName)\\r\\n| summarize count() by DstUserName\\r\\n| top 10 by count_\",\"size\":3,\"title\":\"Top Recipients\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\",\"gridSettings\":{\"sortBy\":[{\"itemKey\":\"TotalEvents\",\"sortOrder\":2}]},\"sortBy\":[{\"itemKey\":\"TotalEvents\",\"sortOrder\":2}]},\"customWidth\":\"33\",\"name\":\"query - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where SimplifiedDeviceAction =~ 'DELIVERED'\\r\\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\\r\\n| extend amp_verdict = extract(@'ESAAMPVerdict\\\":\\\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\\\"', 1, tostring(AdditionalFields))\\r\\n| where amp_verdict =~ 'UNSCANNABLE'\\r\\n| extend Filename = replace_string(tostring(extract(@'\\\"ESAAttachmentDetails\\\":\\\"{(.*?):', 1, tostring(AdditionalFields))), \\\"'\\\", \\\"\\\")\\r\\n| order by TimeGenerated\\r\\n| project TimeGenerated, DstUserName, Filename\\r\\n\",\"size\":3,\"title\":\"Unscannable Files\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"table\"},\"customWidth\":\"34\",\"name\":\"query - 1\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where SimplifiedDeviceAction =~ 'DELIVERED'\\r\\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\\r\\n| extend amp_verdict = extract(@'ESAAMPVerdict\\\":\\\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\\\"', 1, tostring(AdditionalFields))\\r\\n| where amp_verdict =~ 'MALICIOUS'\\r\\n| extend Filename = replace_string(tostring(extract(@'\\\"ESAAttachmentDetails\\\":\\\"{(.*?):', 1, tostring(AdditionalFields))), \\\"'\\\", \\\"\\\")\\r\\n| summarize count() by Filename\\r\\n\",\"size\":3,\"title\":\"Top Malicious Attachments\",\"timeContext\":{\"durationMs\":0},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\",\"gridSettings\":{\"rowLimit\":50,\"filter\":true}},\"customWidth\":\"30\",\"name\":\"query - 8\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n | where NetworkDirection =~ 'Outgoing'\\r\\n | where tostring(AdditionalFields) has 'ESADLPVerdict'\\r\\n | extend dlp_verdict = extract(@'ESADLPVerdict\\\":\\\"(NOT_EVALUATED|NO TRIGGER|VIOLATION|NO VIOLATION)\\\"', 1, tostring(AdditionalFields))\\r\\n | where dlp_verdict =~ 'VIOLATION'\\r\\n | extend File = replace_string(tostring(extract(@'\\\"ESAAttachmentDetails\\\":\\\"{(.*?):', 1, tostring(AdditionalFields))), \\\"'\\\", \\\"\\\")\\r\\n | project TimeGenerated, SrcUserName, DstUserName, File\",\"size\":0,\"title\":\"Users with DLP Violation\",\"timeContext\":{\"durationMs\":0},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"gridSettings\":{\"rowLimit\":50}},\"customWidth\":\"40\",\"name\":\"query - 12\",\"styleSettings\":{\"maxWidth\":\"33\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\n | where TimeGenerated > ago(24h)\\n | where NetworkDirection =~ 'Incoming'\\n | extend act_det = extract(@'ESAFinalActionDetails\\\":\\\"(.*?)\\\"', 1, tostring(AdditionalFields))\\n | where act_det has 'To SPAM'\\n | summarize count() by SrcUserName\\n | top 10 by count_\\n\",\"size\":3,\"title\":\"SPAM Sources\",\"timeContext\":{\"durationMs\":0},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"customWidth\":\"30\",\"name\":\"query - 10\"}],\"fromTemplateId\":\"sentinel-CiscoSEGWorkbook\",\"$schema\":\"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"}\n", + "version": "1.0", + "sourceId": "[variables('workspaceResourceId')]", + "category": "sentinel" } }, { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId7'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('Workbook-', last(split(variables('workbookId1'),'/'))))]", "properties": { - "description": "CiscoSEG Analytics Rule 7", - "parentId": "[variables('analyticRuleId7')]", - "contentId": "[variables('_analyticRulecontentId7')]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion7')]", + "description": "@{workbookKey=CiscoSEGWorkbook; logoFileName=cisco-logo-72px.svg; description=Sets the time name for analysis; dataTypesDependencies=System.Object[]; dataConnectorsDependencies=System.Object[]; previewImagesFileNames=System.Object[]; version=1.0.0; title=Cisco Secure Email Gateway; templateRelativePath=CiscoSEG.json; subtitle=; provider=Cisco}.description", + "parentId": "[variables('workbookId1')]", + "contentId": "[variables('_workbookContentId1')]", + "kind": "Workbook", + "version": "[variables('workbookVersion1')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -920,58 +1072,64 @@ "email": "support@microsoft.com", "tier": "Microsoft", "link": "https://support.microsoft.com" + }, + "dependencies": { + "operator": "AND", + "criteria": [ + { + "contentId": "CommonSecurityLog", + "kind": "DataType" + }, + { + "contentId": "CiscoSEG", + "kind": "DataConnector" + } + ] } } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName8')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "properties": { - "description": "CiscoSEG Analytics Rule 8 with template", - "displayName": "CiscoSEG Analytics Rule template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_workbookContentId1')]", + "contentKind": "Workbook", + "displayName": "[parameters('workbook1-name')]", + "contentProductId": "[variables('_workbookcontentProductId1')]", + "id": "[variables('_workbookcontentProductId1')]", + "version": "[variables('workbookVersion1')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName8'),'/',variables('analyticRuleVersion8'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName1')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName8'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGSuspiciousSenderDomain_AnalyticalRules Analytics Rule with template version 2.0.1", + "description": "CiscoSEGDLPViolation_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion8')]", + "contentVersion": "[variables('analyticRuleVersion1')]", "parameters": {}, "variables": {}, "resources": [ { "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId8')]", + "name": "[variables('analyticRulecontentId1')]", "apiVersion": "2022-04-01-preview", "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "description": "Detects suspicious sender domain age.", - "displayName": "Cisco SEG - Suspicious sender domain", + "description": "Detects DLP policy violation.", + "displayName": "Cisco SEG - DLP policy violation", "enabled": false, - "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| extend rec_domain = extract(@'@(.*)', 1, DstUserName)\n| extend s_domain = extract(@'@(.*)', 1, SrcUserName)\n| where s_domain != rec_domain\n| where tostring(AdditionalFields) has 'ESASDRDomainAge'\n| extend domain_age = extract(@'ESASDRDomainAge\":\"(.*days)\"', 1, tostring(AdditionalFields))\n| extend yy = toint(extract(@'(\\d+)\\syears', 1, domain_age))\n| extend mm = toint(extract(@'(\\d+)\\smonths', 1, domain_age))\n| extend dd = toint(extract(@'(\\d+)\\sdays', 1, domain_age))\n| where isempty(yy)\n| where isempty(mm) or mm <= 2\n| extend AccountCustomEntity = SrcUserName\n", + "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Outgoing'\n| where tostring(AdditionalFields) has 'ESADLPVerdict'\n| extend dlp_verdict = extract(@'ESADLPVerdict\":\"(NOT_EVALUATED|NO TRIGGER|VIOLATION|NO VIOLATION)\"', 1, tostring(AdditionalFields))\n| where dlp_verdict =~ 'VIOLATION'\n| extend AccountCustomEntity = SrcUserName\n", "queryFrequency": "PT1H", "queryPeriod": "PT1H", "severity": "Medium", @@ -982,21 +1140,30 @@ "status": "Available", "requiredDataConnectors": [ { + "connectorId": "CiscoSEG", "dataTypes": [ "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" + ] + }, + { + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] } ], "tactics": [ - "InitialAccess" + "Exfiltration" + ], + "techniques": [ + "T1030" ], "entityMappings": [ { "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } ], "entityType": "Account" @@ -1007,13 +1174,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId8'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId1'),'/'))))]", "properties": { - "description": "CiscoSEG Analytics Rule 8", - "parentId": "[variables('analyticRuleId8')]", - "contentId": "[variables('_analyticRulecontentId8')]", + "description": "CiscoSEG Analytics Rule 1", + "parentId": "[variables('analyticRuleId1')]", + "contentId": "[variables('_analyticRulecontentId1')]", "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion8')]", + "version": "[variables('analyticRuleVersion1')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1032,57 +1199,50 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName9')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "properties": { - "description": "CiscoSEG Analytics Rule 9 with template", - "displayName": "CiscoSEG Analytics Rule template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId1')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - DLP policy violation", + "contentProductId": "[variables('_analyticRulecontentProductId1')]", + "id": "[variables('_analyticRulecontentProductId1')]", + "version": "[variables('analyticRuleVersion1')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName9'),'/',variables('analyticRuleVersion9'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName2')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName9'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGUnclassifiedLink_AnalyticalRules Analytics Rule with template version 2.0.1", + "description": "CiscoSEGMaliciousAttachmentNotBlocked_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion9')]", + "contentVersion": "[variables('analyticRuleVersion2')]", "parameters": {}, "variables": {}, "resources": [ { "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId9')]", + "name": "[variables('analyticRulecontentId2')]", "apiVersion": "2022-04-01-preview", "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "description": "Detects mails with suspicious links.", - "displayName": "Cisco SEG - Unexpected link", + "description": "Detects mails with malicious attachments which were not blocked.", + "displayName": "Cisco SEG - Malicious attachment not blocked", "enabled": false, - "query": "let u_cat = dynamic(['Unclassified']);\nCiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAURLDetails'\n| extend link_cat = extract(@\"'Category': '(.*?)'\", 1, tostring(AdditionalFields))\n| where link_cat in~ (u_cat)\n| extend AccountCustomEntity = DstUserName\n", - "queryFrequency": "PT1H", - "queryPeriod": "PT1H", - "severity": "Medium", + "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where SimplifiedDeviceAction =~ 'DELIVERED'\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\n| extend amp_verdict = extract(@'ESAAMPVerdict\":\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\"', 1, tostring(AdditionalFields))\n| where amp_verdict =~ 'MALICIOUS'\n| extend AccountCustomEntity = DstUserName\n", + "queryFrequency": "PT10M", + "queryPeriod": "PT10M", + "severity": "High", "suppressionDuration": "PT1H", "suppressionEnabled": false, "triggerOperator": "GreaterThan", @@ -1090,21 +1250,30 @@ "status": "Available", "requiredDataConnectors": [ { + "connectorId": "CiscoSEG", "dataTypes": [ "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" + ] + }, + { + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] } ], "tactics": [ "InitialAccess" ], + "techniques": [ + "T1566" + ], "entityMappings": [ { "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } ], "entityType": "Account" @@ -1115,13 +1284,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId9'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId2'),'/'))))]", "properties": { - "description": "CiscoSEG Analytics Rule 9", - "parentId": "[variables('analyticRuleId9')]", - "contentId": "[variables('_analyticRulecontentId9')]", + "description": "CiscoSEG Analytics Rule 2", + "parentId": "[variables('analyticRuleId2')]", + "contentId": "[variables('_analyticRulecontentId2')]", "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion9')]", + "version": "[variables('analyticRuleVersion2')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1140,57 +1309,50 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName10')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "properties": { - "description": "CiscoSEG Analytics Rule 10 with template", - "displayName": "CiscoSEG Analytics Rule template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId2')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Malicious attachment not blocked", + "contentProductId": "[variables('_analyticRulecontentProductId2')]", + "id": "[variables('_analyticRulecontentProductId2')]", + "version": "[variables('analyticRuleVersion2')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName10'),'/',variables('analyticRuleVersion10'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName3')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName10'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGUnexpextedAttachment_AnalyticalRules Analytics Rule with template version 2.0.1", + "description": "CiscoSEGMultipleLargeEmails_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion10')]", + "contentVersion": "[variables('analyticRuleVersion3')]", "parameters": {}, "variables": {}, "resources": [ { "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId10')]", + "name": "[variables('analyticRulecontentId3')]", "apiVersion": "2022-04-01-preview", "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "description": "Detects possibly malicious attachments.", - "displayName": "Cisco SEG - Unexpected attachment", + "description": "Detects possible data exfiltration.", + "displayName": "Cisco SEG - Multiple large emails sent to external recipient", "enabled": false, - "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAAttachmentDetails'\n| extend attachment = replace_string(tostring(extract(@'\"ESAAttachmentDetails\":\"{(.*?):', 1, tostring(AdditionalFields))), \"'\", \"\")\n| where attachment endswith '.ps1' or attachment endswith '.lnk' or attachment endswith '.exe'\n| extend AccountCustomEntity = DstUserName\n", + "query": "let e_theshold = 3;\nlet s_threshold = 10000000;\nCiscoSEGEvent\n| where AdditionalFields[15]['ESAMsgSize'] > s_threshold\n| where NetworkDirection =~ 'Outgoing'\n| extend rec_domain = extract(@'@(.*)', 1, DstUserName)\n| extend s_domain = extract(@'@(.*)', 1, SrcUserName)\n| where s_domain != rec_domain\n| summarize count() by SrcUserName\n| where count_ >= e_theshold\n| extend AccountCustomEntity = SrcUserName\n", "queryFrequency": "PT1H", "queryPeriod": "PT1H", - "severity": "High", + "severity": "Medium", "suppressionDuration": "PT1H", "suppressionEnabled": false, "triggerOperator": "GreaterThan", @@ -1198,21 +1360,30 @@ "status": "Available", "requiredDataConnectors": [ { + "connectorId": "CiscoSEG", "dataTypes": [ "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" + ] + }, + { + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] } ], "tactics": [ - "InitialAccess" + "Exfiltration" + ], + "techniques": [ + "T1030" ], "entityMappings": [ { "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } ], "entityType": "Account" @@ -1223,13 +1394,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId10'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId3'),'/'))))]", "properties": { - "description": "CiscoSEG Analytics Rule 10", - "parentId": "[variables('analyticRuleId10')]", - "contentId": "[variables('_analyticRulecontentId10')]", + "description": "CiscoSEG Analytics Rule 3", + "parentId": "[variables('analyticRuleId3')]", + "contentId": "[variables('_analyticRulecontentId3')]", "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion10')]", + "version": "[variables('analyticRuleVersion3')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1248,57 +1419,50 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('analyticRuleTemplateSpecName11')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "properties": { - "description": "CiscoSEG Analytics Rule 11 with template", - "displayName": "CiscoSEG Analytics Rule template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId3')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Multiple large emails sent to external recipient", + "contentProductId": "[variables('_analyticRulecontentProductId3')]", + "id": "[variables('_analyticRulecontentProductId3')]", + "version": "[variables('analyticRuleVersion3')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('analyticRuleTemplateSpecName11'),'/',variables('analyticRuleVersion11'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName4')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName11'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGUnscannableAttachment_AnalyticalRules Analytics Rule with template version 2.0.1", + "description": "CiscoSEGMultipleSuspiciousEmails_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion11')]", + "contentVersion": "[variables('analyticRuleVersion4')]", "parameters": {}, "variables": {}, "resources": [ { "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId11')]", + "name": "[variables('analyticRulecontentId4')]", "apiVersion": "2022-04-01-preview", "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "description": "Detects unscannable attachments in mails.", - "displayName": "Cisco SEG - Unscannable attacment", + "description": "Detects possibly phishing emails.", + "displayName": "Cisco SEG - Multiple suspiciuos attachments received", "enabled": false, - "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\n| extend amp_verdict = extract(@'ESAAMPVerdict\":\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\"', 1, tostring(AdditionalFields))\n| where amp_verdict =~ 'UNSCANNABLE'\n| extend AccountCustomEntity = DstUserName\n", + "query": "let r_threshold = 5;\nCiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where isnotempty(EventMessage)\n| where strlen(EventMessage) < 20\n| summarize rec=makeset(DstUserName) by EventMessage, bin(TimeGenerated, 10m)\n| where array_length(rec) > r_threshold\n| extend AccountCustomEntity = rec\n", "queryFrequency": "PT1H", "queryPeriod": "PT1H", - "severity": "Medium", + "severity": "High", "suppressionDuration": "PT1H", "suppressionEnabled": false, "triggerOperator": "GreaterThan", @@ -1306,21 +1470,30 @@ "status": "Available", "requiredDataConnectors": [ { + "connectorId": "CiscoSEG", "dataTypes": [ "CiscoSEGEvent" - ], - "connectorId": "CiscoSEG" + ] + }, + { + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] } ], "tactics": [ "InitialAccess" ], + "techniques": [ + "T1566" + ], "entityMappings": [ { "fieldMappings": [ { - "columnName": "AccountCustomEntity", - "identifier": "Name" + "identifier": "Name", + "columnName": "AccountCustomEntity" } ], "entityType": "Account" @@ -1331,13 +1504,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId11'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId4'),'/'))))]", "properties": { - "description": "CiscoSEG Analytics Rule 11", - "parentId": "[variables('analyticRuleId11')]", - "contentId": "[variables('_analyticRulecontentId11')]", + "description": "CiscoSEG Analytics Rule 4", + "parentId": "[variables('analyticRuleId4')]", + "contentId": "[variables('_analyticRulecontentId4')]", "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion11')]", + "version": "[variables('analyticRuleVersion4')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1356,66 +1529,84 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName1')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 1 with template", - "displayName": "CiscoSEG Hunting Query template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId4')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Multiple suspiciuos attachments received", + "contentProductId": "[variables('_analyticRulecontentProductId4')]", + "id": "[variables('_analyticRulecontentProductId4')]", + "version": "[variables('analyticRuleVersion4')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName1'),'/',variables('huntingQueryVersion1'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName5')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName1'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGDroppedInMails_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGPossibleOutbreak_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion1')]", + "contentVersion": "[variables('analyticRuleVersion5')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_1", + "type": "Microsoft.SecurityInsights/AlertRuleTemplates", + "name": "[variables('analyticRulecontentId5')]", + "apiVersion": "2022-04-01-preview", + "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "eTag": "*", - "displayName": "Cisco SEG - Dropped incoming mails", - "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where NetworkDirection =~ 'Incoming'\n| where SimplifiedDeviceAction =~ 'DROPPED'\n| summarize count() by DstUserName\n| extend AccountCustomEntity = DstUserName\n", - "version": 2, - "tags": [ + "description": "Detects possible outbreak activity.", + "displayName": "Cisco SEG - Possible outbreak", + "enabled": false, + "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAOFVerdict'\n| extend of_verdict = extract(@'ESAOFVerdict\":\"(NOT_EVALUATED|POSITIVE|NEGATIVE)\"', 1, tostring(AdditionalFields))\n| where of_verdict =~ 'POSITIVE'\n| extend AccountCustomEntity = DstUserName\n", + "queryFrequency": "PT1H", + "queryPeriod": "PT1H", + "severity": "Medium", + "suppressionDuration": "PT1H", + "suppressionEnabled": false, + "triggerOperator": "GreaterThan", + "triggerThreshold": 0, + "status": "Available", + "requiredDataConnectors": [ { - "name": "description", - "value": "Query searches for dropped mails." + "connectorId": "CiscoSEG", + "dataTypes": [ + "CiscoSEGEvent" + ] }, { - "name": "tactics", - "value": "InitialAccess" - }, + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] + } + ], + "tactics": [ + "InitialAccess" + ], + "techniques": [ + "T1566" + ], + "entityMappings": [ { - "name": "techniques", - "value": "T1566" + "fieldMappings": [ + { + "identifier": "Name", + "columnName": "AccountCustomEntity" + } + ], + "entityType": "Account" } ] } @@ -1423,13 +1614,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId1'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId5'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 1", - "parentId": "[variables('huntingQueryId1')]", - "contentId": "[variables('_huntingQuerycontentId1')]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion1')]", + "description": "CiscoSEG Analytics Rule 5", + "parentId": "[variables('analyticRuleId5')]", + "contentId": "[variables('_analyticRulecontentId5')]", + "kind": "AnalyticsRule", + "version": "[variables('analyticRuleVersion5')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1441,73 +1632,91 @@ }, "support": { "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - } - ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName2')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 2 with template", - "displayName": "CiscoSEG Hunting Query template" + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + } + } + } + ] + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId5')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Possible outbreak", + "contentProductId": "[variables('_analyticRulecontentProductId5')]", + "id": "[variables('_analyticRulecontentProductId5')]", + "version": "[variables('analyticRuleVersion5')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName2'),'/',variables('huntingQueryVersion2'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName6')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName2'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGDroppedOutMails_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGPotentialLinkToMalwareDownload_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion2')]", + "contentVersion": "[variables('analyticRuleVersion6')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_2", + "type": "Microsoft.SecurityInsights/AlertRuleTemplates", + "name": "[variables('analyticRulecontentId6')]", + "apiVersion": "2022-04-01-preview", + "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "eTag": "*", - "displayName": "Cisco SEG - Dropped outgoing mails", - "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where NetworkDirection =~ 'Outgoing'\n| where SimplifiedDeviceAction =~ 'DROPPED'\n| summarize count() by SrcUserName\n| extend AccountCustomEntity = SrcUserName\n", - "version": 2, - "tags": [ + "description": "Detects mails with suspicious links.", + "displayName": "Cisco SEG - Potential phishing link", + "enabled": false, + "query": "let dl_cat = dynamic(['Illegal Downloads']);\nCiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAURLDetails'\n| extend link_cat = extract(@\"'Category': '(.*?)'\", 1, tostring(AdditionalFields))\n| where link_cat in~ (dl_cat)\n| extend AccountCustomEntity = DstUserName\n", + "queryFrequency": "PT1H", + "queryPeriod": "PT1H", + "severity": "Medium", + "suppressionDuration": "PT1H", + "suppressionEnabled": false, + "triggerOperator": "GreaterThan", + "triggerThreshold": 0, + "status": "Available", + "requiredDataConnectors": [ { - "name": "description", - "value": "Query searches for dropped outgoing mails." + "connectorId": "CiscoSEG", + "dataTypes": [ + "CiscoSEGEvent" + ] }, { - "name": "tactics", - "value": "Exfiltration" - }, + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] + } + ], + "tactics": [ + "InitialAccess" + ], + "techniques": [ + "T1566" + ], + "entityMappings": [ { - "name": "techniques", - "value": "T1030" + "fieldMappings": [ + { + "identifier": "Name", + "columnName": "AccountCustomEntity" + } + ], + "entityType": "Account" } ] } @@ -1515,13 +1724,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId2'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId6'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 2", - "parentId": "[variables('huntingQueryId2')]", - "contentId": "[variables('_huntingQuerycontentId2')]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion2')]", + "description": "CiscoSEG Analytics Rule 6", + "parentId": "[variables('analyticRuleId6')]", + "contentId": "[variables('_analyticRulecontentId6')]", + "kind": "AnalyticsRule", + "version": "[variables('analyticRuleVersion6')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1540,66 +1749,84 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName3')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 3 with template", - "displayName": "CiscoSEG Hunting Query template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId6')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Potential phishing link", + "contentProductId": "[variables('_analyticRulecontentProductId6')]", + "id": "[variables('_analyticRulecontentProductId6')]", + "version": "[variables('analyticRuleVersion6')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName3'),'/',variables('huntingQueryVersion3'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName7')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName3'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGFailedDKIMFailure_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGSuspiciousLink_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion3')]", + "contentVersion": "[variables('analyticRuleVersion7')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_3", + "type": "Microsoft.SecurityInsights/AlertRuleTemplates", + "name": "[variables('analyticRulecontentId7')]", + "apiVersion": "2022-04-01-preview", + "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "eTag": "*", - "displayName": "Cisco SEG - DKIM failures", - "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESADKIMVerdict'\n| extend dkim_status = extract(@'ESADKIMVerdict\":\"(Pass|Neutral|TempError|PermError|HardFail|None)\"', 1, tostring(AdditionalFields))\n| where dkim_status in~ ('PermError', 'HardFail', 'None')\n| extend AccountCustomEntity = SrcUserName\n", - "version": 2, - "tags": [ + "description": "Detects mails with suspicious links.", + "displayName": "Cisco SEG - Suspicious link", + "enabled": false, + "query": "let bl_cat = dynamic(['Adult', 'Hacking', 'Cheating and Plagiarism', 'Child Abuse Content', 'Dating', 'Illegal Activities', 'Pornography']);\nCiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAURLDetails'\n| extend link_cat = extract(@\"'Category': '(.*?)'\", 1, tostring(AdditionalFields))\n| where link_cat in~ (bl_cat)\n| extend AccountCustomEntity = DstUserName\n", + "queryFrequency": "PT15M", + "queryPeriod": "PT15M", + "severity": "High", + "suppressionDuration": "PT1H", + "suppressionEnabled": false, + "triggerOperator": "GreaterThan", + "triggerThreshold": 0, + "status": "Available", + "requiredDataConnectors": [ { - "name": "description", - "value": "Query searches for mails with DKIM failure status." + "connectorId": "CiscoSEG", + "dataTypes": [ + "CiscoSEGEvent" + ] }, { - "name": "tactics", - "value": "InitialAccess" - }, + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] + } + ], + "tactics": [ + "InitialAccess" + ], + "techniques": [ + "T1566" + ], + "entityMappings": [ { - "name": "techniques", - "value": "T1566" + "fieldMappings": [ + { + "identifier": "Name", + "columnName": "AccountCustomEntity" + } + ], + "entityType": "Account" } ] } @@ -1607,13 +1834,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId3'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId7'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 3", - "parentId": "[variables('huntingQueryId3')]", - "contentId": "[variables('_huntingQuerycontentId3')]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion3')]", + "description": "CiscoSEG Analytics Rule 7", + "parentId": "[variables('analyticRuleId7')]", + "contentId": "[variables('_analyticRulecontentId7')]", + "kind": "AnalyticsRule", + "version": "[variables('analyticRuleVersion7')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1632,66 +1859,84 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName4')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 4 with template", - "displayName": "CiscoSEG Hunting Query template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId7')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Suspicious link", + "contentProductId": "[variables('_analyticRulecontentProductId7')]", + "id": "[variables('_analyticRulecontentProductId7')]", + "version": "[variables('analyticRuleVersion7')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName4'),'/',variables('huntingQueryVersion4'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName8')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName4'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGFailedDMARKFailure_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGSuspiciousSenderDomain_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion4')]", + "contentVersion": "[variables('analyticRuleVersion8')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_4", + "type": "Microsoft.SecurityInsights/AlertRuleTemplates", + "name": "[variables('analyticRulecontentId8')]", + "apiVersion": "2022-04-01-preview", + "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "eTag": "*", - "displayName": "Cisco SEG - DMARK failures", - "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESADMARCVerdict'\n| extend dmark_status = extract(@'ESADMARCVerdict\":\"(PermFailure|TempFailure|Reject|Success)\"', 1, tostring(AdditionalFields))\n| where dmark_status in~ ('PermFailure', 'TempFailure', 'Reject')\n| extend AccountCustomEntity = SrcUserName\n", - "version": 2, - "tags": [ + "description": "Detects suspicious sender domain age.", + "displayName": "Cisco SEG - Suspicious sender domain", + "enabled": false, + "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| extend rec_domain = extract(@'@(.*)', 1, DstUserName)\n| extend s_domain = extract(@'@(.*)', 1, SrcUserName)\n| where s_domain != rec_domain\n| where tostring(AdditionalFields) has 'ESASDRDomainAge'\n| extend domain_age = extract(@'ESASDRDomainAge\":\"(.*days)\"', 1, tostring(AdditionalFields))\n| extend yy = toint(extract(@'(\\d+)\\syears', 1, domain_age))\n| extend mm = toint(extract(@'(\\d+)\\smonths', 1, domain_age))\n| extend dd = toint(extract(@'(\\d+)\\sdays', 1, domain_age))\n| where isempty(yy)\n| where isempty(mm) or mm <= 2\n| extend AccountCustomEntity = SrcUserName\n", + "queryFrequency": "PT1H", + "queryPeriod": "PT1H", + "severity": "Medium", + "suppressionDuration": "PT1H", + "suppressionEnabled": false, + "triggerOperator": "GreaterThan", + "triggerThreshold": 0, + "status": "Available", + "requiredDataConnectors": [ { - "name": "description", - "value": "Query searches for mails with DMARK failure status." + "connectorId": "CiscoSEG", + "dataTypes": [ + "CiscoSEGEvent" + ] }, { - "name": "tactics", - "value": "InitialAccess" - }, + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] + } + ], + "tactics": [ + "InitialAccess" + ], + "techniques": [ + "T1566" + ], + "entityMappings": [ { - "name": "techniques", - "value": "T1566" + "fieldMappings": [ + { + "identifier": "Name", + "columnName": "AccountCustomEntity" + } + ], + "entityType": "Account" } ] } @@ -1699,13 +1944,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId4'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId8'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 4", - "parentId": "[variables('huntingQueryId4')]", - "contentId": "[variables('_huntingQuerycontentId4')]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion4')]", + "description": "CiscoSEG Analytics Rule 8", + "parentId": "[variables('analyticRuleId8')]", + "contentId": "[variables('_analyticRulecontentId8')]", + "kind": "AnalyticsRule", + "version": "[variables('analyticRuleVersion8')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1724,66 +1969,84 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName5')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 5 with template", - "displayName": "CiscoSEG Hunting Query template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId8')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Suspicious sender domain", + "contentProductId": "[variables('_analyticRulecontentProductId8')]", + "id": "[variables('_analyticRulecontentProductId8')]", + "version": "[variables('analyticRuleVersion8')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName5'),'/',variables('huntingQueryVersion5'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName9')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName5'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGFailedSPFFailure_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGUnclassifiedLink_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion5')]", + "contentVersion": "[variables('analyticRuleVersion9')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_5", + "type": "Microsoft.SecurityInsights/AlertRuleTemplates", + "name": "[variables('analyticRulecontentId9')]", + "apiVersion": "2022-04-01-preview", + "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "eTag": "*", - "displayName": "Cisco SEG - SPF failures", - "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESASPFVerdict'\n| extend spf_status = extract(@'ESASPFVerdict\":\"(Pass|Neutral|SoftFail|Fail|TempError|PermError)\"', 1, tostring(AdditionalFields))\n| where spf_status in~ ('Fail', 'TempError', 'PermError')\n| extend AccountCustomEntity = SrcUserName\n", - "version": 2, - "tags": [ + "description": "Detects mails with suspicious links.", + "displayName": "Cisco SEG - Unexpected link", + "enabled": false, + "query": "let u_cat = dynamic(['Unclassified']);\nCiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAURLDetails'\n| extend link_cat = extract(@\"'Category': '(.*?)'\", 1, tostring(AdditionalFields))\n| where link_cat in~ (u_cat)\n| extend AccountCustomEntity = DstUserName\n", + "queryFrequency": "PT1H", + "queryPeriod": "PT1H", + "severity": "Medium", + "suppressionDuration": "PT1H", + "suppressionEnabled": false, + "triggerOperator": "GreaterThan", + "triggerThreshold": 0, + "status": "Available", + "requiredDataConnectors": [ { - "name": "description", - "value": "Query searches for mails with SPF failure status." + "connectorId": "CiscoSEG", + "dataTypes": [ + "CiscoSEGEvent" + ] }, { - "name": "tactics", - "value": "InitialAccess" - }, + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] + } + ], + "tactics": [ + "InitialAccess" + ], + "techniques": [ + "T1566" + ], + "entityMappings": [ { - "name": "techniques", - "value": "T1566" + "fieldMappings": [ + { + "identifier": "Name", + "columnName": "AccountCustomEntity" + } + ], + "entityType": "Account" } ] } @@ -1791,13 +2054,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId5'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId9'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 5", - "parentId": "[variables('huntingQueryId5')]", - "contentId": "[variables('_huntingQuerycontentId5')]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion5')]", + "description": "CiscoSEG Analytics Rule 9", + "parentId": "[variables('analyticRuleId9')]", + "contentId": "[variables('_analyticRulecontentId9')]", + "kind": "AnalyticsRule", + "version": "[variables('analyticRuleVersion9')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1816,66 +2079,84 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName6')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 6 with template", - "displayName": "CiscoSEG Hunting Query template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId9')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Unexpected link", + "contentProductId": "[variables('_analyticRulecontentProductId9')]", + "id": "[variables('_analyticRulecontentProductId9')]", + "version": "[variables('analyticRuleVersion9')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName6'),'/',variables('huntingQueryVersion6'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName10')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName6'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGFailedTLSIn_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGUnexpextedAttachment_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion6')]", + "contentVersion": "[variables('analyticRuleVersion10')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_6", + "type": "Microsoft.SecurityInsights/AlertRuleTemplates", + "name": "[variables('analyticRulecontentId10')]", + "apiVersion": "2022-04-01-preview", + "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "eTag": "*", - "displayName": "Cisco SEG - Failed incoming TLS connections", - "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESATLSInConnStatus'\n| extend tls_status = extract(@'ESATLSInConnStatus\":\"(Success|Failure)\"', 1, tostring(AdditionalFields))\n| where tls_status =~ 'Failure'\n| extend AccountCustomEntity = DstUserName\n", - "version": 2, - "tags": [ + "description": "Detects possibly malicious attachments.", + "displayName": "Cisco SEG - Unexpected attachment", + "enabled": false, + "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAAttachmentDetails'\n| extend attachment = replace_string(tostring(extract(@'\"ESAAttachmentDetails\":\"{(.*?):', 1, tostring(AdditionalFields))), \"'\", \"\")\n| where attachment endswith '.ps1' or attachment endswith '.lnk' or attachment endswith '.exe'\n| extend AccountCustomEntity = DstUserName\n", + "queryFrequency": "PT1H", + "queryPeriod": "PT1H", + "severity": "High", + "suppressionDuration": "PT1H", + "suppressionEnabled": false, + "triggerOperator": "GreaterThan", + "triggerThreshold": 0, + "status": "Available", + "requiredDataConnectors": [ { - "name": "description", - "value": "Query searches failed TLS incoming connections." + "connectorId": "CiscoSEG", + "dataTypes": [ + "CiscoSEGEvent" + ] }, { - "name": "tactics", - "value": "InitialAccess" - }, + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] + } + ], + "tactics": [ + "InitialAccess" + ], + "techniques": [ + "T1566" + ], + "entityMappings": [ { - "name": "techniques", - "value": "T1566" + "fieldMappings": [ + { + "identifier": "Name", + "columnName": "AccountCustomEntity" + } + ], + "entityType": "Account" } ] } @@ -1883,13 +2164,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId6'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId10'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 6", - "parentId": "[variables('huntingQueryId6')]", - "contentId": "[variables('_huntingQuerycontentId6')]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion6')]", + "description": "CiscoSEG Analytics Rule 10", + "parentId": "[variables('analyticRuleId10')]", + "contentId": "[variables('_analyticRulecontentId10')]", + "kind": "AnalyticsRule", + "version": "[variables('analyticRuleVersion10')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -1908,66 +2189,84 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName7')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 7 with template", - "displayName": "CiscoSEG Hunting Query template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId10')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Unexpected attachment", + "contentProductId": "[variables('_analyticRulecontentProductId10')]", + "id": "[variables('_analyticRulecontentProductId10')]", + "version": "[variables('analyticRuleVersion10')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName7'),'/',variables('huntingQueryVersion7'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('analyticRuleTemplateSpecName11')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName7'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGFailedTLSOut_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGUnscannableAttachment_AnalyticalRules Analytics Rule with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion7')]", + "contentVersion": "[variables('analyticRuleVersion11')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_7", + "type": "Microsoft.SecurityInsights/AlertRuleTemplates", + "name": "[variables('analyticRulecontentId11')]", + "apiVersion": "2022-04-01-preview", + "kind": "Scheduled", "location": "[parameters('workspace-location')]", "properties": { - "eTag": "*", - "displayName": "Cisco SEG - Failed outgoing TLS connections", - "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESATLSOutConnStatus'\n| extend tls_status = extract(@'ESATLSOutConnStatus\":\"(Success|Failure)\"', 1, tostring(AdditionalFields))\n| where tls_status =~ 'Failure'\n| extend AccountCustomEntity = SrcUserName\n", - "version": 2, - "tags": [ + "description": "Detects unscannable attachments in mails.", + "displayName": "Cisco SEG - Unscannable attacment", + "enabled": false, + "query": "CiscoSEGEvent\n| where NetworkDirection =~ 'Incoming'\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\n| extend amp_verdict = extract(@'ESAAMPVerdict\":\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\"', 1, tostring(AdditionalFields))\n| where amp_verdict =~ 'UNSCANNABLE'\n| extend AccountCustomEntity = DstUserName\n", + "queryFrequency": "PT1H", + "queryPeriod": "PT1H", + "severity": "Medium", + "suppressionDuration": "PT1H", + "suppressionEnabled": false, + "triggerOperator": "GreaterThan", + "triggerThreshold": 0, + "status": "Available", + "requiredDataConnectors": [ { - "name": "description", - "value": "Query searches failed TLS outgoing connections." + "connectorId": "CiscoSEG", + "dataTypes": [ + "CiscoSEGEvent" + ] }, { - "name": "tactics", - "value": "Impact" - }, + "connectorId": "CiscoSEGAma", + "dataTypes": [ + "CiscoSEGEvent" + ] + } + ], + "tactics": [ + "InitialAccess" + ], + "techniques": [ + "T1566" + ], + "entityMappings": [ { - "name": "techniques", - "value": "T1565" + "fieldMappings": [ + { + "identifier": "Name", + "columnName": "AccountCustomEntity" + } + ], + "entityType": "Account" } ] } @@ -1975,13 +2274,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId7'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId11'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 7", - "parentId": "[variables('huntingQueryId7')]", - "contentId": "[variables('_huntingQuerycontentId7')]", - "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion7')]", + "description": "CiscoSEG Analytics Rule 11", + "parentId": "[variables('analyticRuleId11')]", + "contentId": "[variables('_analyticRulecontentId11')]", + "kind": "AnalyticsRule", + "version": "[variables('analyticRuleVersion11')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -2000,66 +2299,59 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName8')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 8 with template", - "displayName": "CiscoSEG Hunting Query template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_analyticRulecontentId11')]", + "contentKind": "AnalyticsRule", + "displayName": "Cisco SEG - Unscannable attacment", + "contentProductId": "[variables('_analyticRulecontentProductId11')]", + "id": "[variables('_analyticRulecontentProductId11')]", + "version": "[variables('analyticRuleVersion11')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName8'),'/',variables('huntingQueryVersion8'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName1')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName8'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGInsecureProtocol_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGDroppedInMails_HuntingQueries Hunting Query with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion8')]", + "contentVersion": "[variables('huntingQueryVersion1')]", "parameters": {}, "variables": {}, "resources": [ { "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_8", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_1", "location": "[parameters('workspace-location')]", "properties": { "eTag": "*", - "displayName": "Cisco SEG - Insecure protocol", + "displayName": "Cisco SEG - Dropped incoming mails", "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESATLSOutProtocol'\n| extend tls_status = extract(@'ESATLSOutProtocol\":\"(.*?)\"', 1, tostring(AdditionalFields))\n| where tls_status != 'TLSv1.2'\n| extend AccountCustomEntity = SrcUserName\n", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where NetworkDirection =~ 'Incoming'\n| where SimplifiedDeviceAction =~ 'DROPPED'\n| summarize count() by DstUserName\n| extend AccountCustomEntity = DstUserName\n", "version": 2, "tags": [ { "name": "description", - "value": "Query searches for connections with insecure protocol." + "value": "Query searches for dropped mails." }, { "name": "tactics", - "value": "Impact" + "value": "InitialAccess" }, { "name": "techniques", - "value": "T1565" + "value": "T1566" } ] } @@ -2067,13 +2359,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId8'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId1'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 8", - "parentId": "[variables('huntingQueryId8')]", - "contentId": "[variables('_huntingQuerycontentId8')]", + "description": "CiscoSEG Hunting Query 1", + "parentId": "[variables('huntingQueryId1')]", + "contentId": "[variables('_huntingQuerycontentId1')]", "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion8')]", + "version": "[variables('huntingQueryVersion1')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -2092,66 +2384,59 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName9')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 9 with template", - "displayName": "CiscoSEG Hunting Query template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId1')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - Dropped incoming mails", + "contentProductId": "[variables('_huntingQuerycontentProductId1')]", + "id": "[variables('_huntingQuerycontentProductId1')]", + "version": "[variables('huntingQueryVersion1')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName9'),'/',variables('huntingQueryVersion9'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName2')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName9'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGSpamMails_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGDroppedOutMails_HuntingQueries Hunting Query with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion9')]", + "contentVersion": "[variables('huntingQueryVersion2')]", "parameters": {}, "variables": {}, "resources": [ { "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_9", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_2", "location": "[parameters('workspace-location')]", "properties": { "eTag": "*", - "displayName": "Cisco SEG - Sources of spam mails", + "displayName": "Cisco SEG - Dropped outgoing mails", "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where NetworkDirection =~ 'Incoming'\n| where SimplifiedDeviceAction =~ 'QUARANTINED'\n| extend act_det = extract(@'ESAFinalActionDetails\":\"(.*?)\"', 1, tostring(AdditionalFields))\n| where act_det has 'To SPAM'\n| summarize count by SrcIpAddr\n| extend IPCustomEntity = SrcIpAddr\n", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where NetworkDirection =~ 'Outgoing'\n| where SimplifiedDeviceAction =~ 'DROPPED'\n| summarize count() by SrcUserName\n| extend AccountCustomEntity = SrcUserName\n", "version": 2, "tags": [ { "name": "description", - "value": "Query searches for sources of spam mails." + "value": "Query searches for dropped outgoing mails." }, { "name": "tactics", - "value": "InitialAccess" + "value": "Exfiltration" }, { "name": "techniques", - "value": "T1566" + "value": "T1030" } ] } @@ -2159,13 +2444,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId9'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId2'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 9", - "parentId": "[variables('huntingQueryId9')]", - "contentId": "[variables('_huntingQuerycontentId9')]", + "description": "CiscoSEG Hunting Query 2", + "parentId": "[variables('huntingQueryId2')]", + "contentId": "[variables('_huntingQuerycontentId2')]", "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion9')]", + "version": "[variables('huntingQueryVersion2')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -2184,58 +2469,51 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('huntingQueryTemplateSpecName10')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, - "properties": { - "description": "CiscoSEG Hunting Query 10 with template", - "displayName": "CiscoSEG Hunting Query template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId2')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - Dropped outgoing mails", + "contentProductId": "[variables('_huntingQuerycontentProductId2')]", + "id": "[variables('_huntingQuerycontentProductId2')]", + "version": "[variables('huntingQueryVersion2')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('huntingQueryTemplateSpecName10'),'/',variables('huntingQueryVersion10'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName3')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "HuntingQuery" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('huntingQueryTemplateSpecName10'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGUsersReceivedSpam_HuntingQueries Hunting Query with template version 2.0.1", + "description": "CiscoSEGFailedDKIMFailure_HuntingQueries Hunting Query with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('huntingQueryVersion10')]", + "contentVersion": "[variables('huntingQueryVersion3')]", "parameters": {}, "variables": {}, "resources": [ { "type": "Microsoft.OperationalInsights/savedSearches", - "apiVersion": "2020-08-01", - "name": "CiscoSEG_Hunting_Query_10", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_3", "location": "[parameters('workspace-location')]", "properties": { "eTag": "*", - "displayName": "Cisco SEG - Top users receiving spam mails", + "displayName": "Cisco SEG - DKIM failures", "category": "Hunting Queries", - "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where NetworkDirection =~ 'Incoming'\n| where SimplifiedDeviceAction =~ 'QUARANTINED'\n| extend act_det = extract(@'ESAFinalActionDetails\":\"(.*?)\"', 1, tostring(AdditionalFields))\n| where act_det has 'To SPAM'\n| summarize count by DstUserName\n| extend AccountCustomEntity = DstUserName\n", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESADKIMVerdict'\n| extend dkim_status = extract(@'ESADKIMVerdict\":\"(Pass|Neutral|TempError|PermError|HardFail|None)\"', 1, tostring(AdditionalFields))\n| where dkim_status in~ ('PermError', 'HardFail', 'None')\n| extend AccountCustomEntity = SrcUserName\n", "version": 2, "tags": [ { "name": "description", - "value": "Query searches for top users receiving spam mails." + "value": "Query searches for mails with DKIM failure status." }, { "name": "tactics", @@ -2251,13 +2529,13 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId10'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId3'),'/'))))]", "properties": { - "description": "CiscoSEG Hunting Query 10", - "parentId": "[variables('huntingQueryId10')]", - "contentId": "[variables('_huntingQuerycontentId10')]", + "description": "CiscoSEG Hunting Query 3", + "parentId": "[variables('huntingQueryId3')]", + "contentId": "[variables('_huntingQuerycontentId3')]", "kind": "HuntingQuery", - "version": "[variables('huntingQueryVersion10')]", + "version": "[variables('huntingQueryVersion3')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -2276,59 +2554,59 @@ } } ] - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('parserTemplateSpecName1')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Parser" - }, - "properties": { - "description": "CiscoSEGEvent Data Parser with template", - "displayName": "CiscoSEGEvent Data Parser template" + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId3')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - DKIM failures", + "contentProductId": "[variables('_huntingQuerycontentProductId3')]", + "id": "[variables('_huntingQuerycontentProductId3')]", + "version": "[variables('huntingQueryVersion3')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('parserTemplateSpecName1'),'/',variables('parserVersion1'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName4')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Parser" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('parserTemplateSpecName1'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGEvent Data Parser with template version 2.0.1", + "description": "CiscoSEGFailedDMARKFailure_HuntingQueries Hunting Query with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('parserVersion1')]", + "contentVersion": "[variables('huntingQueryVersion4')]", "parameters": {}, "variables": {}, "resources": [ { - "name": "[variables('_parserName1')]", - "apiVersion": "2020-08-01", - "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "type": "Microsoft.OperationalInsights/savedSearches", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_4", "location": "[parameters('workspace-location')]", "properties": { "eTag": "*", - "displayName": "Cisco SEG Data Parser", - "category": "Samples", - "functionAlias": "CiscoSEGEvent", - "query": "\nCommonSecurityLog\r\n| where DeviceEventClassID =~ 'ESA_CONSOLIDATED_LOG_EVENT'\r\n| extend EventStartTime = todatetime(extract(@\"startTime=(\\w{3}\\s\\w{3}\\s\\d{1,2}\\s\\d{2}:\\d{2}:\\d{2}\\s\\d{4})\", 1, AdditionalExtensions))\r\n| extend EventEndTime = todatetime(extract(@\"endTime=(\\w{3}\\s\\w{3}\\s\\d{1,2}\\s\\d{2}:\\d{2}:\\d{2}\\s\\d{4})\", 1, AdditionalExtensions))\r\n| extend NetworkDirection = case(CommunicationDirection == '0', 'Incoming', 'Outgoing')\r\n| extend EventType = Activity\r\n| extend FileName = extract(@\"ESAAttachmentDetails=\\{\\'(.*?)\\'\", 1, AdditionalExtensions)\r\n| extend FileHashSha256 = extract(@\"\\'fileHash\\':\\s?\\'(.*?)\\'\", 1, AdditionalExtensions)\r\n| extend FileSize = toint(extract(@\"\\'fsize\\':\\s?(\\d+)\", 1, AdditionalExtensions))\r\n| extend EventStatus = extract(@\"ESADaneStatus=(success|failure)\", 1, AdditionalExtensions)\r\n| extend DvcHostname = extract(@\"ESADaneHost=(\\S+)\", 1, AdditionalExtensions)\r\n| extend AdditionalFields = extract_all(@\"(?P[a-zA-Z0-9- ]+)=(?P[a-zA-Z0-9-_:/@.#{}'' ]+)\", dynamic([\"key\",\"value\"]), tostring(AdditionalExtensions))\r\n| mv-apply AdditionalFields on (\r\n summarize AdditionalFields = make_list(pack(tostring(AdditionalFields[0]), AdditionalFields[1]))\r\n )\r\n| project-rename EventVendor = DeviceVendor\r\n , EventProduct = DeviceProduct\r\n , EventId = DeviceEventClassID\r\n , EventSeverity = LogSeverity\r\n , DvcAction = DeviceAction\r\n , DvcIpAddr = DeviceAddress\r\n , EventMessage = Message\r\n , EventProductVersion = DeviceVersion\r\n , SerialNumber = DeviceExternalID\r\n , DvcInboundInterface = DeviceInboundInterface\r\n , DvcOutboundInterface = DeviceOutboundInterface\r\n , DstUserName = DestinationUserName\r\n , SrcUserName = SourceUserName\r\n , MailPolicy = DeviceCustomString1\r\n , SrcGeoCountry = DeviceCustomString2\r\n , ThreatCategory = DeviceCustomString3\r\n , EventOriginalUid = DeviceCustomString4\r\n , MailLanguage = DeviceCustomString5\r\n , SdrRepScore = DeviceCustomString6\r\n , SbrsScore = DeviceCustomFloatingPoint1\r\n| project-away Activity\r\n , DeviceCustomString1Label\r\n , DeviceCustomString2Label\r\n , DeviceCustomString3Label\r\n , DeviceCustomString4Label\r\n , DeviceCustomString5Label\r\n , DeviceCustomString6Label\r\n , DeviceCustomFloatingPoint1Label\r\n , AdditionalExtensions\r\n", - "version": 1, + "displayName": "Cisco SEG - DMARK failures", + "category": "Hunting Queries", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESADMARCVerdict'\n| extend dmark_status = extract(@'ESADMARCVerdict\":\"(PermFailure|TempFailure|Reject|Success)\"', 1, tostring(AdditionalFields))\n| where dmark_status in~ ('PermFailure', 'TempFailure', 'Reject')\n| extend AccountCustomEntity = SrcUserName\n", + "version": 2, "tags": [ { "name": "description", - "value": "Cisco SEG Data Parser" + "value": "Query searches for mails with DMARK failure status." + }, + { + "name": "tactics", + "value": "InitialAccess" + }, + { + "name": "techniques", + "value": "T1566" } ] } @@ -2336,18 +2614,16 @@ { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('Parser-', last(split(variables('_parserId1'),'/'))))]", - "dependsOn": [ - "[variables('_parserName1')]" - ], + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId4'),'/'))))]", "properties": { - "parentId": "[resourceId('Microsoft.OperationalInsights/workspaces/savedSearches', parameters('workspace'), variables('parserName1'))]", - "contentId": "[variables('_parserContentId1')]", - "kind": "Parser", - "version": "[variables('parserVersion1')]", + "description": "CiscoSEG Hunting Query 4", + "parentId": "[variables('huntingQueryId4')]", + "contentId": "[variables('_huntingQuerycontentId4')]", + "kind": "HuntingQuery", + "version": "[variables('huntingQueryVersion4')]", "source": { - "name": "CiscoSEG", "kind": "Solution", + "name": "CiscoSEG", "sourceId": "[variables('_solutionId')]" }, "author": { @@ -2363,226 +2639,73 @@ } } ] - } - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/savedSearches", - "apiVersion": "2021-06-01", - "name": "[variables('_parserName1')]", - "location": "[parameters('workspace-location')]", - "properties": { - "eTag": "*", - "displayName": "Cisco SEG Data Parser", - "category": "Samples", - "functionAlias": "CiscoSEGEvent", - "query": "\nCommonSecurityLog\r\n| where DeviceEventClassID =~ 'ESA_CONSOLIDATED_LOG_EVENT'\r\n| extend EventStartTime = todatetime(extract(@\"startTime=(\\w{3}\\s\\w{3}\\s\\d{1,2}\\s\\d{2}:\\d{2}:\\d{2}\\s\\d{4})\", 1, AdditionalExtensions))\r\n| extend EventEndTime = todatetime(extract(@\"endTime=(\\w{3}\\s\\w{3}\\s\\d{1,2}\\s\\d{2}:\\d{2}:\\d{2}\\s\\d{4})\", 1, AdditionalExtensions))\r\n| extend NetworkDirection = case(CommunicationDirection == '0', 'Incoming', 'Outgoing')\r\n| extend EventType = Activity\r\n| extend FileName = extract(@\"ESAAttachmentDetails=\\{\\'(.*?)\\'\", 1, AdditionalExtensions)\r\n| extend FileHashSha256 = extract(@\"\\'fileHash\\':\\s?\\'(.*?)\\'\", 1, AdditionalExtensions)\r\n| extend FileSize = toint(extract(@\"\\'fsize\\':\\s?(\\d+)\", 1, AdditionalExtensions))\r\n| extend EventStatus = extract(@\"ESADaneStatus=(success|failure)\", 1, AdditionalExtensions)\r\n| extend DvcHostname = extract(@\"ESADaneHost=(\\S+)\", 1, AdditionalExtensions)\r\n| extend AdditionalFields = extract_all(@\"(?P[a-zA-Z0-9- ]+)=(?P[a-zA-Z0-9-_:/@.#{}'' ]+)\", dynamic([\"key\",\"value\"]), tostring(AdditionalExtensions))\r\n| mv-apply AdditionalFields on (\r\n summarize AdditionalFields = make_list(pack(tostring(AdditionalFields[0]), AdditionalFields[1]))\r\n )\r\n| project-rename EventVendor = DeviceVendor\r\n , EventProduct = DeviceProduct\r\n , EventId = DeviceEventClassID\r\n , EventSeverity = LogSeverity\r\n , DvcAction = DeviceAction\r\n , DvcIpAddr = DeviceAddress\r\n , EventMessage = Message\r\n , EventProductVersion = DeviceVersion\r\n , SerialNumber = DeviceExternalID\r\n , DvcInboundInterface = DeviceInboundInterface\r\n , DvcOutboundInterface = DeviceOutboundInterface\r\n , DstUserName = DestinationUserName\r\n , SrcUserName = SourceUserName\r\n , MailPolicy = DeviceCustomString1\r\n , SrcGeoCountry = DeviceCustomString2\r\n , ThreatCategory = DeviceCustomString3\r\n , EventOriginalUid = DeviceCustomString4\r\n , MailLanguage = DeviceCustomString5\r\n , SdrRepScore = DeviceCustomString6\r\n , SbrsScore = DeviceCustomFloatingPoint1\r\n| project-away Activity\r\n , DeviceCustomString1Label\r\n , DeviceCustomString2Label\r\n , DeviceCustomString3Label\r\n , DeviceCustomString4Label\r\n , DeviceCustomString5Label\r\n , DeviceCustomString6Label\r\n , DeviceCustomFloatingPoint1Label\r\n , AdditionalExtensions\r\n", - "version": 1 - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "location": "[parameters('workspace-location')]", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('Parser-', last(split(variables('_parserId1'),'/'))))]", - "dependsOn": [ - "[variables('_parserId1')]" - ], - "properties": { - "parentId": "[resourceId('Microsoft.OperationalInsights/workspaces/savedSearches', parameters('workspace'), variables('parserName1'))]", - "contentId": "[variables('_parserContentId1')]", - "kind": "Parser", - "version": "[variables('parserVersion1')]", - "source": { - "kind": "Solution", - "name": "CiscoSEG", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('dataConnectorTemplateSpecName1')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "DataConnector" - }, - "properties": { - "description": "CiscoSEG data connector with template", - "displayName": "CiscoSEG template" + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId4')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - DMARK failures", + "contentProductId": "[variables('_huntingQuerycontentProductId4')]", + "id": "[variables('_huntingQuerycontentProductId4')]", + "version": "[variables('huntingQueryVersion4')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('dataConnectorTemplateSpecName1'),'/',variables('dataConnectorVersion1'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName5')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "DataConnector" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('dataConnectorTemplateSpecName1'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEG data connector with template version 2.0.1", + "description": "CiscoSEGFailedSPFFailure_HuntingQueries Hunting Query with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('dataConnectorVersion1')]", + "contentVersion": "[variables('huntingQueryVersion5')]", "parameters": {}, "variables": {}, "resources": [ { - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentId1'))]", - "apiVersion": "2021-03-01-preview", - "type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectors", + "type": "Microsoft.OperationalInsights/savedSearches", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_5", "location": "[parameters('workspace-location')]", - "kind": "GenericUI", "properties": { - "connectorUiConfig": { - "id": "[variables('_uiConfigId1')]", - "title": "Cisco Secure Email Gateway", - "publisher": "Cisco", - "descriptionMarkdown": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) data connector provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.", - "additionalRequirementBanner": "This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution.", - "graphQueries": [ - { - "metricName": "Total data received", - "legend": "CiscoSEG", - "baseQuery": "CiscoSEGEvent" - } - ], - "sampleQueries": [ - { - "description": "Top 10 Senders", - "query": "CiscoSEGEvent\n | where isnotempty(SrcUserName)\n | summarize count() by SrcUserName\n | top 10 by count_" - } - ], - "dataTypes": [ - { - "name": "CommonSecurityLog (CiscoSEG)", - "lastDataReceivedQuery": "CiscoSEGEvent\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)" - } - ], - "connectivityCriterias": [ - { - "type": "IsConnectedQuery", - "value": [ - "CiscoSEGEvent\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(30d)" - ] - } - ], - "availability": { - "status": 1, - "isPreview": false - }, - "permissions": { - "resourceProvider": [ - { - "provider": "Microsoft.OperationalInsights/workspaces", - "permissionsDisplayText": "read and write permissions are required.", - "providerDisplayName": "Workspace", - "scope": "Workspace", - "requiredPermissions": { - "write": true, - "read": true, - "delete": true - } - }, - { - "provider": "Microsoft.OperationalInsights/workspaces/sharedKeys", - "permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).", - "providerDisplayName": "Keys", - "scope": "Workspace", - "requiredPermissions": { - "action": true - } - } - ] - }, - "instructionSteps": [ - { - "description": ">**NOTE:** This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution." - }, - { - "description": ">**NOTE:** This data connector has been developed using AsyncOS 14.0 for Cisco Secure Email Gateway" - }, - { - "description": "Install and configure the Linux agent to collect your Common Event Format (CEF) Syslog messages and forward them to Microsoft Sentinel.\n\n> Notice that the data from all regions will be stored in the selected workspace", - "innerSteps": [ - { - "title": "1.1 Select or create a Linux machine", - "description": "Select or create a Linux machine that Microsoft Sentinel will use as the proxy between your security solution and Microsoft Sentinel this machine can be on your on-prem environment, Azure or other clouds." - }, - { - "title": "1.2 Install the CEF collector on the Linux machine", - "description": "Install the Microsoft Monitoring Agent on your Linux machine and configure the machine to listen on the necessary port and forward messages to your Microsoft Sentinel workspace. The CEF collector collects CEF messages on port 514 TCP.\n\n> 1. Make sure that you have Python on your machine using the following command: python -version.\n\n> 2. You must have elevated permissions (sudo) on your machine.", - "instructions": [ - { - "parameters": { - "fillWith": [ - "WorkspaceId", - "PrimaryKey" - ], - "label": "Run the following command to install and apply the CEF collector:", - "value": "sudo wget -O cef_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_installer.py&&sudo python cef_installer.py {0} {1}" - }, - "type": "CopyableLabel" - } - ] - } - ], - "title": "1. Linux Syslog agent configuration" - }, - { - "description": "Follow these steps to configure Cisco Secure Email Gateway to forward logs via syslog:\n\n2.1. Configure [Log Subscription](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1134718)\n\n>**NOTE:** Select **Consolidated Event Logs** in Log Type field.", - "title": "2. Forward Common Event Format (CEF) logs to Syslog agent" - }, - { - "description": "Follow the instructions to validate your connectivity:\n\nOpen Log Analytics to check if the logs are received using the CommonSecurityLog schema.\n\n>It may take about 20 minutes until the connection streams data to your workspace.\n\nIf the logs are not received, run the following connectivity validation script:\n\n> 1. Make sure that you have Python on your machine using the following command: python -version\n\n>2. You must have elevated permissions (sudo) on your machine", - "instructions": [ - { - "parameters": { - "fillWith": [ - "WorkspaceId" - ], - "label": "Run the following command to validate your connectivity:", - "value": "sudo wget -O cef_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_troubleshoot.py&&sudo python cef_troubleshoot.py {0}" - }, - "type": "CopyableLabel" - } - ], - "title": "3. Validate connection" - }, - { - "description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)", - "title": "4. Secure your machine " - } - ] - } + "eTag": "*", + "displayName": "Cisco SEG - SPF failures", + "category": "Hunting Queries", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESASPFVerdict'\n| extend spf_status = extract(@'ESASPFVerdict\":\"(Pass|Neutral|SoftFail|Fail|TempError|PermError)\"', 1, tostring(AdditionalFields))\n| where spf_status in~ ('Fail', 'TempError', 'PermError')\n| extend AccountCustomEntity = SrcUserName\n", + "version": 2, + "tags": [ + { + "name": "description", + "value": "Query searches for mails with SPF failure status." + }, + { + "name": "tactics", + "value": "InitialAccess" + }, + { + "name": "techniques", + "value": "T1566" + } + ] } }, { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', last(split(variables('_dataConnectorId1'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId5'),'/'))))]", "properties": { - "parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId1'))]", - "contentId": "[variables('_dataConnectorContentId1')]", - "kind": "DataConnector", - "version": "[variables('dataConnectorVersion1')]", + "description": "CiscoSEG Hunting Query 5", + "parentId": "[variables('huntingQueryId5')]", + "contentId": "[variables('_huntingQuerycontentId5')]", + "kind": "HuntingQuery", + "version": "[variables('huntingQueryVersion5')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -2601,230 +2724,413 @@ } } ] - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId5')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - SPF failures", + "contentProductId": "[variables('_huntingQuerycontentProductId5')]", + "id": "[variables('_huntingQuerycontentProductId5')]", + "version": "[variables('huntingQueryVersion5')]" } }, { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('DataConnector-', last(split(variables('_dataConnectorId1'),'/'))))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName6')]", + "location": "[parameters('workspace-location')]", "dependsOn": [ - "[variables('_dataConnectorId1')]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], - "location": "[parameters('workspace-location')]", "properties": { - "parentId": "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/dataConnectors', variables('_dataConnectorContentId1'))]", - "contentId": "[variables('_dataConnectorContentId1')]", - "kind": "DataConnector", - "version": "[variables('dataConnectorVersion1')]", - "source": { - "kind": "Solution", - "name": "CiscoSEG", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Microsoft", - "email": "[variables('_email')]" + "description": "CiscoSEGFailedTLSIn_HuntingQueries Hunting Query with template version 3.0.0", + "mainTemplate": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "[variables('huntingQueryVersion6')]", + "parameters": {}, + "variables": {}, + "resources": [ + { + "type": "Microsoft.OperationalInsights/savedSearches", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_6", + "location": "[parameters('workspace-location')]", + "properties": { + "eTag": "*", + "displayName": "Cisco SEG - Failed incoming TLS connections", + "category": "Hunting Queries", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESATLSInConnStatus'\n| extend tls_status = extract(@'ESATLSInConnStatus\":\"(Success|Failure)\"', 1, tostring(AdditionalFields))\n| where tls_status =~ 'Failure'\n| extend AccountCustomEntity = DstUserName\n", + "version": 2, + "tags": [ + { + "name": "description", + "value": "Query searches failed TLS incoming connections." + }, + { + "name": "tactics", + "value": "InitialAccess" + }, + { + "name": "techniques", + "value": "T1566" + } + ] + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2022-01-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId6'),'/'))))]", + "properties": { + "description": "CiscoSEG Hunting Query 6", + "parentId": "[variables('huntingQueryId6')]", + "contentId": "[variables('_huntingQuerycontentId6')]", + "kind": "HuntingQuery", + "version": "[variables('huntingQueryVersion6')]", + "source": { + "kind": "Solution", + "name": "CiscoSEG", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "Microsoft", + "email": "[variables('_email')]" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + } + } + } + ] }, - "support": { - "name": "Microsoft Corporation", - "email": "support@microsoft.com", - "tier": "Microsoft", - "link": "https://support.microsoft.com" - } + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId6')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - Failed incoming TLS connections", + "contentProductId": "[variables('_huntingQuerycontentProductId6')]", + "id": "[variables('_huntingQuerycontentProductId6')]", + "version": "[variables('huntingQueryVersion6')]" } }, { - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',variables('_dataConnectorContentId1'))]", - "apiVersion": "2021-03-01-preview", - "type": "Microsoft.OperationalInsights/workspaces/providers/dataConnectors", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName7')]", "location": "[parameters('workspace-location')]", - "kind": "GenericUI", + "dependsOn": [ + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" + ], "properties": { - "connectorUiConfig": { - "title": "Cisco Secure Email Gateway", - "publisher": "Cisco", - "descriptionMarkdown": "The [Cisco Secure Email Gateway (SEG)](https://www.cisco.com/c/en/us/products/security/email-security/index.html) data connector provides the capability to ingest [Cisco SEG Consolidated Event Logs](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1061902) into Microsoft Sentinel.", - "graphQueries": [ - { - "metricName": "Total data received", - "legend": "CiscoSEG", - "baseQuery": "CiscoSEGEvent" - } - ], - "dataTypes": [ - { - "name": "CommonSecurityLog (CiscoSEG)", - "lastDataReceivedQuery": "CiscoSEGEvent\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)" - } - ], - "connectivityCriterias": [ - { - "type": "IsConnectedQuery", - "value": [ - "CiscoSEGEvent\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(30d)" - ] - } - ], - "sampleQueries": [ + "description": "CiscoSEGFailedTLSOut_HuntingQueries Hunting Query with template version 3.0.0", + "mainTemplate": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "[variables('huntingQueryVersion7')]", + "parameters": {}, + "variables": {}, + "resources": [ { - "description": "Top 10 Senders", - "query": "CiscoSEGEvent\n | where isnotempty(SrcUserName)\n | summarize count() by SrcUserName\n | top 10 by count_" - } - ], - "availability": { - "status": 1, - "isPreview": false - }, - "permissions": { - "resourceProvider": [ - { - "provider": "Microsoft.OperationalInsights/workspaces", - "permissionsDisplayText": "read and write permissions are required.", - "providerDisplayName": "Workspace", - "scope": "Workspace", - "requiredPermissions": { - "write": true, - "read": true, - "delete": true - } - }, - { - "provider": "Microsoft.OperationalInsights/workspaces/sharedKeys", - "permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).", - "providerDisplayName": "Keys", - "scope": "Workspace", - "requiredPermissions": { - "action": true - } + "type": "Microsoft.OperationalInsights/savedSearches", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_7", + "location": "[parameters('workspace-location')]", + "properties": { + "eTag": "*", + "displayName": "Cisco SEG - Failed outgoing TLS connections", + "category": "Hunting Queries", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESATLSOutConnStatus'\n| extend tls_status = extract(@'ESATLSOutConnStatus\":\"(Success|Failure)\"', 1, tostring(AdditionalFields))\n| where tls_status =~ 'Failure'\n| extend AccountCustomEntity = SrcUserName\n", + "version": 2, + "tags": [ + { + "name": "description", + "value": "Query searches failed TLS outgoing connections." + }, + { + "name": "tactics", + "value": "Impact" + }, + { + "name": "techniques", + "value": "T1565" + } + ] } - ] - }, - "instructionSteps": [ - { - "description": ">**NOTE:** This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution." - }, - { - "description": ">**NOTE:** This data connector has been developed using AsyncOS 14.0 for Cisco Secure Email Gateway" }, { - "description": "Install and configure the Linux agent to collect your Common Event Format (CEF) Syslog messages and forward them to Microsoft Sentinel.\n\n> Notice that the data from all regions will be stored in the selected workspace", - "innerSteps": [ - { - "title": "1.1 Select or create a Linux machine", - "description": "Select or create a Linux machine that Microsoft Sentinel will use as the proxy between your security solution and Microsoft Sentinel this machine can be on your on-prem environment, Azure or other clouds." + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2022-01-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId7'),'/'))))]", + "properties": { + "description": "CiscoSEG Hunting Query 7", + "parentId": "[variables('huntingQueryId7')]", + "contentId": "[variables('_huntingQuerycontentId7')]", + "kind": "HuntingQuery", + "version": "[variables('huntingQueryVersion7')]", + "source": { + "kind": "Solution", + "name": "CiscoSEG", + "sourceId": "[variables('_solutionId')]" }, - { - "title": "1.2 Install the CEF collector on the Linux machine", - "description": "Install the Microsoft Monitoring Agent on your Linux machine and configure the machine to listen on the necessary port and forward messages to your Microsoft Sentinel workspace. The CEF collector collects CEF messages on port 514 TCP.\n\n> 1. Make sure that you have Python on your machine using the following command: python -version.\n\n> 2. You must have elevated permissions (sudo) on your machine.", - "instructions": [ - { - "parameters": { - "fillWith": [ - "WorkspaceId", - "PrimaryKey" - ], - "label": "Run the following command to install and apply the CEF collector:", - "value": "sudo wget -O cef_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_installer.py&&sudo python cef_installer.py {0} {1}" - }, - "type": "CopyableLabel" - } - ] + "author": { + "name": "Microsoft", + "email": "[variables('_email')]" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" } - ], - "title": "1. Linux Syslog agent configuration" - }, - { - "description": "Follow these steps to configure Cisco Secure Email Gateway to forward logs via syslog:\n\n2.1. Configure [Log Subscription](https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0/b_ESA_Admin_Guide_12_1_chapter_0100111.html#con_1134718)\n\n>**NOTE:** Select **Consolidated Event Logs** in Log Type field.", - "title": "2. Forward Common Event Format (CEF) logs to Syslog agent" - }, + } + } + ] + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId7')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - Failed outgoing TLS connections", + "contentProductId": "[variables('_huntingQuerycontentProductId7')]", + "id": "[variables('_huntingQuerycontentProductId7')]", + "version": "[variables('huntingQueryVersion7')]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName8')]", + "location": "[parameters('workspace-location')]", + "dependsOn": [ + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" + ], + "properties": { + "description": "CiscoSEGInsecureProtocol_HuntingQueries Hunting Query with template version 3.0.0", + "mainTemplate": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "[variables('huntingQueryVersion8')]", + "parameters": {}, + "variables": {}, + "resources": [ { - "description": "Follow the instructions to validate your connectivity:\n\nOpen Log Analytics to check if the logs are received using the CommonSecurityLog schema.\n\n>It may take about 20 minutes until the connection streams data to your workspace.\n\nIf the logs are not received, run the following connectivity validation script:\n\n> 1. Make sure that you have Python on your machine using the following command: python -version\n\n>2. You must have elevated permissions (sudo) on your machine", - "instructions": [ - { - "parameters": { - "fillWith": [ - "WorkspaceId" - ], - "label": "Run the following command to validate your connectivity:", - "value": "sudo wget -O cef_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_troubleshoot.py&&sudo python cef_troubleshoot.py {0}" + "type": "Microsoft.OperationalInsights/savedSearches", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_8", + "location": "[parameters('workspace-location')]", + "properties": { + "eTag": "*", + "displayName": "Cisco SEG - Insecure protocol", + "category": "Hunting Queries", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where tostring(AdditionalFields) has 'ESATLSOutProtocol'\n| extend tls_status = extract(@'ESATLSOutProtocol\":\"(.*?)\"', 1, tostring(AdditionalFields))\n| where tls_status != 'TLSv1.2'\n| extend AccountCustomEntity = SrcUserName\n", + "version": 2, + "tags": [ + { + "name": "description", + "value": "Query searches for connections with insecure protocol." }, - "type": "CopyableLabel" - } - ], - "title": "3. Validate connection" + { + "name": "tactics", + "value": "Impact" + }, + { + "name": "techniques", + "value": "T1565" + } + ] + } }, { - "description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)", - "title": "4. Secure your machine " + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2022-01-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId8'),'/'))))]", + "properties": { + "description": "CiscoSEG Hunting Query 8", + "parentId": "[variables('huntingQueryId8')]", + "contentId": "[variables('_huntingQuerycontentId8')]", + "kind": "HuntingQuery", + "version": "[variables('huntingQueryVersion8')]", + "source": { + "kind": "Solution", + "name": "CiscoSEG", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "Microsoft", + "email": "[variables('_email')]" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + } + } } - ], - "id": "[variables('_uiConfigId1')]", - "additionalRequirementBanner": "This data connector depends on a parser based on a Kusto Function to work as expected [**CiscoSEGEvent**](https://aka.ms/sentinel-CiscoSEG-parser) which is deployed with the Microsoft Sentinel Solution." - } + ] + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId8')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - Insecure protocol", + "contentProductId": "[variables('_huntingQuerycontentProductId8')]", + "id": "[variables('_huntingQuerycontentProductId8')]", + "version": "[variables('huntingQueryVersion8')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2021-05-01", - "name": "[variables('workbookTemplateSpecName1')]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName9')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Workbook" - }, + "dependsOn": [ + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" + ], "properties": { - "description": "CiscoSEG Workbook with template", - "displayName": "CiscoSEG workbook template" + "description": "CiscoSEGSpamMails_HuntingQueries Hunting Query with template version 3.0.0", + "mainTemplate": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "[variables('huntingQueryVersion9')]", + "parameters": {}, + "variables": {}, + "resources": [ + { + "type": "Microsoft.OperationalInsights/savedSearches", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_9", + "location": "[parameters('workspace-location')]", + "properties": { + "eTag": "*", + "displayName": "Cisco SEG - Sources of spam mails", + "category": "Hunting Queries", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where NetworkDirection =~ 'Incoming'\n| where SimplifiedDeviceAction =~ 'QUARANTINED'\n| extend act_det = extract(@'ESAFinalActionDetails\":\"(.*?)\"', 1, tostring(AdditionalFields))\n| where act_det has 'To SPAM'\n| summarize count() by SourceIP\n| extend IPCustomEntity = SourceIP\n", + "version": 2, + "tags": [ + { + "name": "description", + "value": "Query searches for sources of spam mails." + }, + { + "name": "tactics", + "value": "InitialAccess" + }, + { + "name": "techniques", + "value": "T1566" + } + ] + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", + "apiVersion": "2022-01-01-preview", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId9'),'/'))))]", + "properties": { + "description": "CiscoSEG Hunting Query 9", + "parentId": "[variables('huntingQueryId9')]", + "contentId": "[variables('_huntingQuerycontentId9')]", + "kind": "HuntingQuery", + "version": "[variables('huntingQueryVersion9')]", + "source": { + "kind": "Solution", + "name": "CiscoSEG", + "sourceId": "[variables('_solutionId')]" + }, + "author": { + "name": "Microsoft", + "email": "[variables('_email')]" + }, + "support": { + "name": "Microsoft Corporation", + "email": "support@microsoft.com", + "tier": "Microsoft", + "link": "https://support.microsoft.com" + } + } + } + ] + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId9')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - Sources of spam mails", + "contentProductId": "[variables('_huntingQuerycontentProductId9')]", + "id": "[variables('_huntingQuerycontentProductId9')]", + "version": "[variables('huntingQueryVersion9')]" } }, { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2021-05-01", - "name": "[concat(variables('workbookTemplateSpecName1'),'/',variables('workbookVersion1'))]", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", + "name": "[variables('huntingQueryTemplateSpecName10')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Workbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('workbookTemplateSpecName1'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "CiscoSEGWorkbook Workbook with template version 2.0.1", + "description": "CiscoSEGUsersReceivedSpam_HuntingQueries Hunting Query with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('workbookVersion1')]", + "contentVersion": "[variables('huntingQueryVersion10')]", "parameters": {}, "variables": {}, "resources": [ { - "type": "Microsoft.Insights/workbooks", - "name": "[variables('workbookContentId1')]", + "type": "Microsoft.OperationalInsights/savedSearches", + "apiVersion": "2022-10-01", + "name": "CiscoSEG_Hunting_Query_10", "location": "[parameters('workspace-location')]", - "kind": "shared", - "apiVersion": "2021-08-01", - "metadata": { - "description": "Sets the time name for analysis" - }, "properties": { - "displayName": "[parameters('workbook1-name')]", - "serializedData": "{\"version\":\"Notebook/1.0\",\"items\":[{\"type\":1,\"content\":{\"json\":\"**NOTE**: This data connector depends on a parser based on Kusto Function **CiscoSEGEvent** to work as expected. [Follow steps to get this Kusto Function](https://aka.ms/sentinel-ciscoseg-parser)\"},\"name\":\"text - 8\"},{\"type\":9,\"content\":{\"version\":\"KqlParameterItem/1.0\",\"parameters\":[{\"id\":\"cd8447d9-b096-4673-92d8-2a1e8291a125\",\"version\":\"KqlParameterItem/1.0\",\"name\":\"TimeRange\",\"type\":4,\"description\":\"Sets the time name for analysis\",\"value\":{\"durationMs\":7776000000},\"typeSettings\":{\"selectableValues\":[{\"durationMs\":900000},{\"durationMs\":3600000},{\"durationMs\":86400000},{\"durationMs\":604800000},{\"durationMs\":2592000000},{\"durationMs\":7776000000}]},\"timeContext\":{\"durationMs\":86400000}}],\"style\":\"pills\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"parameters - 11\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| make-series TotalEvents = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain};\",\"size\":0,\"title\":\"Events Over Time\",\"color\":\"orange\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"timechart\",\"graphSettings\":{\"type\":0}},\"customWidth\":\"50\",\"name\":\"query - 12\",\"styleSettings\":{\"maxWidth\":\"55\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"let tot_m = CiscoSEGEvent\\r\\n| summarize e_count=count()\\r\\n| extend Title='Total Mails';\\r\\nlet rec = CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where SimplifiedDeviceAction =~ 'DELIVERED'\\r\\n| summarize e_count=count()\\r\\n| extend Title='Mails Delivered';\\r\\nlet q_m = CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where SimplifiedDeviceAction =~ 'QUARANTINED'\\r\\n| summarize e_count=count()\\r\\n| extend Title='Quarantined Mails';\\r\\nlet mal_m = CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\\r\\n| extend amp_verdict = extract(@'ESAAMPVerdict\\\":\\\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\\\"', 1, tostring(AdditionalFields))\\r\\n| where amp_verdict =~ 'MALICIOUS'\\r\\n| summarize e_count=count()\\r\\n| extend Title='Malicious Mails';\\r\\nunion isfuzzy=true tot_m, rec, q_m, mal_m\\r\\n| order by e_count\",\"size\":3,\"title\":\"Mail Summary\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"tiles\",\"tileSettings\":{\"titleContent\":{\"columnMatch\":\"Title\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"e_count\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"style\":\"decimal\",\"maximumFractionDigits\":2,\"maximumSignificantDigits\":3}}},\"secondaryContent\":{\"columnMatch\":\"Trend\",\"formatter\":9,\"formatOptions\":{\"palette\":\"purple\"}},\"showBorder\":false}},\"customWidth\":\"20\",\"name\":\"query - 0\",\"styleSettings\":{\"maxWidth\":\"30\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\n| where NetworkDirection =~ 'Incoming'\\n| summarize tot_m = count() by DstUserName\\n| join kind = inner (CiscoSEGEvent\\n | make-series Trend = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain} by DstUserName)\\n on DstUserName\\n| project-away DstUserName1, TimeGenerated\\n| project User = DstUserName, TotalMailsReceived=tot_m, Trend\\n| order by TotalMailsReceived\\n| take 6\",\"size\":0,\"title\":\"Users' mail volume\",\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"tiles\",\"tileSettings\":{\"titleContent\":{\"columnMatch\":\"User\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"TotalMailsReceived\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}},\"secondaryContent\":{\"columnMatch\":\"Trend\",\"formatter\":10,\"formatOptions\":{\"palette\":\"magenta\"}},\"showBorder\":false}},\"customWidth\":\"30\",\"name\":\"query - 10\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Outgoing'\\r\\n| where isnotempty(SrcUserName)\\r\\n| summarize count() by SrcUserName\\r\\n| top 10 by count_\",\"size\":3,\"title\":\"Top Senders\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"customWidth\":\"33\",\"name\":\"query - 3\",\"styleSettings\":{\"margin\":\"10\",\"padding\":\"10\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where isnotempty(DstUserName)\\r\\n| summarize count() by DstUserName\\r\\n| top 10 by count_\",\"size\":3,\"title\":\"Top Recipients\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\",\"gridSettings\":{\"sortBy\":[{\"itemKey\":\"TotalEvents\",\"sortOrder\":2}]},\"sortBy\":[{\"itemKey\":\"TotalEvents\",\"sortOrder\":2}]},\"customWidth\":\"33\",\"name\":\"query - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where SimplifiedDeviceAction =~ 'DELIVERED'\\r\\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\\r\\n| extend amp_verdict = extract(@'ESAAMPVerdict\\\":\\\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\\\"', 1, tostring(AdditionalFields))\\r\\n| where amp_verdict =~ 'UNSCANNABLE'\\r\\n| extend Filename = replace_string(tostring(extract(@'\\\"ESAAttachmentDetails\\\":\\\"{(.*?):', 1, tostring(AdditionalFields))), \\\"'\\\", \\\"\\\")\\r\\n| order by TimeGenerated\\r\\n| project TimeGenerated, DstUserName, Filename\\r\\n\",\"size\":3,\"title\":\"Unscannable Files\",\"timeContext\":{\"durationMs\":7776000000},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"table\"},\"customWidth\":\"34\",\"name\":\"query - 1\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n| where NetworkDirection =~ 'Incoming'\\r\\n| where SimplifiedDeviceAction =~ 'DELIVERED'\\r\\n| where tostring(AdditionalFields) has 'ESAAMPVerdict'\\r\\n| extend amp_verdict = extract(@'ESAAMPVerdict\\\":\\\"(NOT_EVALUATED|CLEAN|FA_PENDING|UNKNOWN|SKIPPED|UNSCANNABLE|LOW_RISK|MALICIOUS)\\\"', 1, tostring(AdditionalFields))\\r\\n| where amp_verdict =~ 'MALICIOUS'\\r\\n| extend Filename = replace_string(tostring(extract(@'\\\"ESAAttachmentDetails\\\":\\\"{(.*?):', 1, tostring(AdditionalFields))), \\\"'\\\", \\\"\\\")\\r\\n| summarize count() by Filename\\r\\n\",\"size\":3,\"title\":\"Top Malicious Attachments\",\"timeContext\":{\"durationMs\":0},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\",\"gridSettings\":{\"rowLimit\":50,\"filter\":true}},\"customWidth\":\"30\",\"name\":\"query - 8\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\r\\n | where NetworkDirection =~ 'Outgoing'\\r\\n | where tostring(AdditionalFields) has 'ESADLPVerdict'\\r\\n | extend dlp_verdict = extract(@'ESADLPVerdict\\\":\\\"(NOT_EVALUATED|NO TRIGGER|VIOLATION|NO VIOLATION)\\\"', 1, tostring(AdditionalFields))\\r\\n | where dlp_verdict =~ 'VIOLATION'\\r\\n | extend File = replace_string(tostring(extract(@'\\\"ESAAttachmentDetails\\\":\\\"{(.*?):', 1, tostring(AdditionalFields))), \\\"'\\\", \\\"\\\")\\r\\n | project TimeGenerated, SrcUserName, DstUserName, File\",\"size\":0,\"title\":\"Users with DLP Violation\",\"timeContext\":{\"durationMs\":0},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"gridSettings\":{\"rowLimit\":50}},\"customWidth\":\"40\",\"name\":\"query - 12\",\"styleSettings\":{\"maxWidth\":\"33\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"CiscoSEGEvent\\n | where TimeGenerated > ago(24h)\\n | where NetworkDirection =~ 'Incoming'\\n | extend act_det = extract(@'ESAFinalActionDetails\\\":\\\"(.*?)\\\"', 1, tostring(AdditionalFields))\\n | where act_det has 'To SPAM'\\n | summarize count() by SrcUserName\\n | top 10 by count_\\n\",\"size\":3,\"title\":\"SPAM Sources\",\"timeContext\":{\"durationMs\":0},\"timeContextFromParameter\":\"TimeRange\",\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"customWidth\":\"30\",\"name\":\"query - 10\"}],\"fromTemplateId\":\"sentinel-CiscoSEGWorkbook\",\"$schema\":\"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"}\r\n", - "version": "1.0", - "sourceId": "[variables('workspaceResourceId')]", - "category": "sentinel" + "eTag": "*", + "displayName": "Cisco SEG - Top users receiving spam mails", + "category": "Hunting Queries", + "query": "CiscoSEGEvent\n| where TimeGenerated > ago(24h)\n| where NetworkDirection =~ 'Incoming'\n| where SimplifiedDeviceAction =~ 'QUARANTINED'\n| extend act_det = extract(@'ESAFinalActionDetails\":\"(.*?)\"', 1, tostring(AdditionalFields))\n| where act_det has 'To SPAM'\n| summarize count() by DstUserName\n| extend AccountCustomEntity = DstUserName\n", + "version": 2, + "tags": [ + { + "name": "description", + "value": "Query searches for top users receiving spam mails." + }, + { + "name": "tactics", + "value": "InitialAccess" + }, + { + "name": "techniques", + "value": "T1566" + } + ] } }, { "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('Workbook-', last(split(variables('workbookId1'),'/'))))]", + "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('HuntingQuery-', last(split(variables('huntingQueryId10'),'/'))))]", "properties": { - "description": "@{workbookKey=CiscoSEGWorkbook; logoFileName=cisco-logo-72px.svg; description=Sets the time name for analysis; dataTypesDependencies=System.Object[]; dataConnectorsDependencies=System.Object[]; previewImagesFileNames=System.Object[]; version=1.0.0; title=Cisco Secure Email Gateway; templateRelativePath=CiscoSEG.json; subtitle=; provider=Cisco}.description", - "parentId": "[variables('workbookId1')]", - "contentId": "[variables('_workbookContentId1')]", - "kind": "Workbook", - "version": "[variables('workbookVersion1')]", + "description": "CiscoSEG Hunting Query 10", + "parentId": "[variables('huntingQueryId10')]", + "contentId": "[variables('_huntingQuerycontentId10')]", + "kind": "HuntingQuery", + "version": "[variables('huntingQueryVersion10')]", "source": { "kind": "Solution", "name": "CiscoSEG", @@ -2839,34 +3145,39 @@ "email": "support@microsoft.com", "tier": "Microsoft", "link": "https://support.microsoft.com" - }, - "dependencies": { - "operator": "AND", - "criteria": [ - { - "contentId": "CommonSecurityLog", - "kind": "DataType" - }, - { - "contentId": "CiscoSEG", - "kind": "DataConnector" - } - ] } } } ] - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_huntingQuerycontentId10')]", + "contentKind": "HuntingQuery", + "displayName": "Cisco SEG - Top users receiving spam mails", + "contentProductId": "[variables('_huntingQuerycontentProductId10')]", + "id": "[variables('_huntingQuerycontentProductId10')]", + "version": "[variables('huntingQueryVersion10')]" } }, { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentPackages", + "apiVersion": "2023-04-01-preview", "location": "[parameters('workspace-location')]", "properties": { - "version": "2.0.1", + "version": "3.0.0", "kind": "Solution", - "contentSchemaVersion": "2.0.0", + "contentSchemaVersion": "3.0.0", + "displayName": "CiscoSEG", + "publisherDisplayName": "Microsoft Sentinel, Microsoft Corporation", + "descriptionHtml": "

Note: There may be known issues pertaining to this Solution, please refer to them before installing.

\n

The Cisco Secure Email Gateway (SEG) solution provides the capability to ingest Cisco SEG Consolidated Event Logs into Microsoft Sentinel.

\n
    \n
  1. CiscoSEG via AMA - This data connector helps in ingesting CiscoSEG logs into your Log Analytics Workspace using the new Azure Monitor Agent. Learn more about ingesting using the new Azure Monitor Agent here. Microsoft recommends using this Data Connector.

    \n
  2. \n
  3. CiscoSEG via Legacy Agent - This data connector helps in ingesting CiscoSEG logs into your Log Analytics Workspace using the legacy Log Analytics agent.

    \n
  4. \n
\n

NOTE: Microsoft recommends installation of CiscoSEG via AMA Connector. Legacy connector uses the Log Analytics agent which is about to be deprecated by Aug 31, 2024, and thus should only be installed where AMA is not supported. Using MMA and AMA on same machine can cause log duplication and extra ingestion cost more details.

\n

Data Connectors: 2, Parsers: 1, Workbooks: 1, Analytic Rules: 11, Hunting Queries: 10

\n

Learn more about Microsoft Sentinel | Learn more about Solutions

\n", + "contentKind": "Solution", + "contentProductId": "[variables('_solutioncontentProductId')]", + "id": "[variables('_solutioncontentProductId')]", + "icon": "", "contentId": "[variables('_solutionId')]", "parentId": "[variables('_solutionId')]", "source": { @@ -2887,6 +3198,26 @@ "dependencies": { "operator": "AND", "criteria": [ + { + "kind": "DataConnector", + "contentId": "[variables('_dataConnectorContentId1')]", + "version": "[variables('dataConnectorVersion1')]" + }, + { + "kind": "DataConnector", + "contentId": "[variables('_dataConnectorContentId2')]", + "version": "[variables('dataConnectorVersion2')]" + }, + { + "kind": "Parser", + "contentId": "[variables('_parserContentId1')]", + "version": "[variables('parserVersion1')]" + }, + { + "kind": "Workbook", + "contentId": "[variables('_workbookContentId1')]", + "version": "[variables('workbookVersion1')]" + }, { "kind": "AnalyticsRule", "contentId": "[variables('analyticRulecontentId1')]", @@ -2991,21 +3322,6 @@ "kind": "HuntingQuery", "contentId": "[variables('_huntingQuerycontentId10')]", "version": "[variables('huntingQueryVersion10')]" - }, - { - "kind": "Parser", - "contentId": "[variables('_parserContentId1')]", - "version": "[variables('parserVersion1')]" - }, - { - "kind": "DataConnector", - "contentId": "[variables('_dataConnectorContentId1')]", - "version": "[variables('dataConnectorVersion1')]" - }, - { - "kind": "Workbook", - "contentId": "[variables('_workbookContentId1')]", - "version": "[variables('workbookVersion1')]" } ] }, diff --git a/Solutions/CiscoSEG/ReleaseNotes.md b/Solutions/CiscoSEG/ReleaseNotes.md new file mode 100644 index 00000000000..3ab230e52a8 --- /dev/null +++ b/Solutions/CiscoSEG/ReleaseNotes.md @@ -0,0 +1,5 @@ +| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** | +|-------------|--------------------------------|--------------------------------------------------------------------| +| 3.0.0 | 28-09-2023 | Addition of new CiscoSEG AMA **Data Connector** | | + + diff --git a/Tools/Create-Azure-Sentinel-Solution/V2/WorkbookMetadata/WorkbooksMetadata.json b/Tools/Create-Azure-Sentinel-Solution/V2/WorkbookMetadata/WorkbooksMetadata.json index e6cde3022d9..67f32faea0e 100644 --- a/Tools/Create-Azure-Sentinel-Solution/V2/WorkbookMetadata/WorkbooksMetadata.json +++ b/Tools/Create-Azure-Sentinel-Solution/V2/WorkbookMetadata/WorkbooksMetadata.json @@ -3583,7 +3583,8 @@ "CommonSecurityLog" ], "dataConnectorsDependencies": [ - "CiscoSEG" + "CiscoSEG", + "CiscoSEGAma" ], "previewImagesFileNames": [ "CiscoSEGBlack.png",