Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Veritas analytics rules #9047

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
b0e94de
Create README.txt
swapnildombaleveritas Sep 12, 2023
36f70e2
Added NetBackup AnalyticsRules
swapnildombaleveritas Sep 12, 2023
1be883a
Delete Solutions/Veritas/README.txt
swapnildombaleveritas Sep 12, 2023
f0bfc43
Delete Solutions/Veritas directory
swapnildombaleveritas Sep 12, 2023
df034db
Create README.txt
swapnildombaleveritas Sep 12, 2023
b8529ee
Add files via upload
swapnildombaleveritas Sep 12, 2023
2ee8c19
Delete Solutions/Veritas NetBackup/README.txt
swapnildombaleveritas Sep 12, 2023
036c30e
Add files via upload
swapnildombaleveritas Sep 12, 2023
4a1e330
Delete Solutions/Veritas NetBackup/NetBackup_many_Anomalies.json
swapnildombaleveritas Sep 12, 2023
8572eb0
Delete Solutions/Veritas NetBackup/NetBackup_many_login_fail.json
swapnildombaleveritas Sep 12, 2023
23faa3f
Add files via upload
swapnildombaleveritas Sep 12, 2023
e875f0a
Create Analytic Rules
swapnildombaleveritas Sep 20, 2023
969a2c0
Delete Solutions/Veritas NetBackup/Analytic Rules
swapnildombaleveritas Sep 20, 2023
b872515
Create README.md
swapnildombaleveritas Sep 20, 2023
8377a76
Add files via upload
swapnildombaleveritas Sep 20, 2023
ad6562b
Delete Solutions/Veritas NetBackup/Analytic Rules/README.md
swapnildombaleveritas Sep 20, 2023
7fcb37b
Delete Solutions/Veritas NetBackup/MS-Sentinel-Integration.docx
swapnildombaleveritas Sep 20, 2023
f0fdb57
Delete Solutions/Veritas NetBackup/NetBackup_many_Anomalies.yaml
swapnildombaleveritas Sep 20, 2023
2736cdc
Delete Solutions/Veritas NetBackup/NetBackup_many_login_fail.yaml
swapnildombaleveritas Sep 20, 2023
097122c
Create Sample.txt
swapnildombaleveritas Sep 20, 2023
e2c028f
Add files via upload
swapnildombaleveritas Sep 20, 2023
62eafb0
Add files via upload
swapnildombaleveritas Sep 20, 2023
f9e88ac
Delete Solutions/Veritas NetBackup/Data/Sample.txt
swapnildombaleveritas Sep 20, 2023
07c3898
Delete Solutions/Veritas NetBackup/README.md
swapnildombaleveritas Sep 25, 2023
6f2204a
Add files via upload
swapnildombaleveritas Sep 25, 2023
efaeb98
Delete Solutions/Veritas NetBackup/Data/Action_Orchestration.png
swapnildombaleveritas Sep 25, 2023
10755a9
Delete Solutions/Veritas NetBackup/Data/Analytics_Query_1.png
swapnildombaleveritas Sep 25, 2023
315ba04
Delete Solutions/Veritas NetBackup/Data/Anamoly_Detection_Query.png
swapnildombaleveritas Sep 25, 2023
6ae6941
Delete Solutions/Veritas NetBackup/Data/Configuring_LogForwarding_End…
swapnildombaleveritas Sep 25, 2023
c50ae35
Delete Solutions/Veritas NetBackup/Data/Create_Action_Playbook.png
swapnildombaleveritas Sep 25, 2023
77a5105
Delete Solutions/Veritas NetBackup/Data/Credetials_Setup.png
swapnildombaleveritas Sep 25, 2023
4b3d441
Delete Solutions/Veritas NetBackup/Data/Log_Analysis_Agent_Config.png
swapnildombaleveritas Sep 25, 2023
65b11be
Delete Solutions/Veritas NetBackup/Data/MS-Sentinel_Communication_Wor…
swapnildombaleveritas Sep 25, 2023
44c5e7d
Delete Solutions/Veritas NetBackup/Data/MS_Sentinel_Events_Selector.png
swapnildombaleveritas Sep 25, 2023
a19bc94
Delete Solutions/Veritas NetBackup/Data/Malware_Anomoly_Detection_Ale…
swapnildombaleveritas Sep 25, 2023
711474f
Delete Solutions/Veritas NetBackup/Data/NetBackup_Action_Pause_Backup…
swapnildombaleveritas Sep 25, 2023
93f46e4
Delete Solutions/Veritas NetBackup/Data/Veritas_NetBackup_Config_1.png
swapnildombaleveritas Sep 25, 2023
60d980d
Create sample.txt
swapnildombaleveritas Sep 25, 2023
32aba31
Add files via upload
swapnildombaleveritas Sep 25, 2023
2667503
Add files via upload
swapnildombaleveritas Sep 25, 2023
8b4fc43
Delete Solutions/Veritas NetBackup/Data/sample.txt
swapnildombaleveritas Sep 25, 2023
487a91e
Create sample.txt
swapnildombaleveritas Sep 25, 2023
218dca0
Add files via upload
swapnildombaleveritas Sep 25, 2023
9f94fda
Delete Solutions/Veritas NetBackup/Package/sample.txt
swapnildombaleveritas Sep 25, 2023
8024098
Sentinel Content Deployment Script
azure-sentinel[bot] Sep 27, 2023
600abb5
Workflow file for Sentinel-Deploy
azure-sentinel[bot] Sep 27, 2023
203611b
Remove sentinel-deploy-da4498f8-f1b8-4406-8af2-4a691ab19ecb.yml
azure-sentinel[bot] Sep 27, 2023
b3dd389
Remove azure-sentinel-deploy-da4498f8-f1b8-4406-8af2-4a691ab19ecb.ps1
azure-sentinel[bot] Sep 27, 2023
c997529
Sentinel Content Deployment Script
azure-sentinel[bot] Sep 27, 2023
84bf7cf
Workflow file for Sentinel-Deploy
azure-sentinel[bot] Sep 27, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Deploy Content to sentinel1 [60019580-bd93-4e54-ad5e-d462db768ce0]
# Note: This workflow will deploy everything in the root directory.
# To deploy content only from a specific path (for example SentinelContent):
# 1. Add the target path to the "paths" property like such
# paths:
# - 'SentinelContent/**'
# - '!.github/workflows/**'
# - '.github/workflows/sentinel-deploy-60019580-bd93-4e54-ad5e-d462db768ce0.yml'
# 2. Append the path to the directory environment variable below
# directory: '${{ github.workspace }}/SentinelContent'

on:
push:
branches: [ veritas_analytics_rules ]
paths:
- '**'
- '!.github/workflows/**' # this filter prevents other workflow changes from triggering this workflow
- '.github/workflows/sentinel-deploy-60019580-bd93-4e54-ad5e-d462db768ce0.yml'

jobs:
deploy-content:
runs-on: windows-latest
env:
resourceGroupName: 'quantile'
workspaceName: 'sentinel1'
workspaceId: 'b1b1e270-be02-40ca-a1f7-3aadc46662b1'
directory: '${{ github.workspace }}'
cloudEnv: 'AzureCloud'
creds: ${{ secrets.AZURE_SENTINEL_CREDENTIALS_60019580bd934e54ad5ed462db768ce0 }}
contentTypes: 'AnalyticsRule'
branch: 'veritas_analytics_rules'
sourceControlId: '60019580-bd93-4e54-ad5e-d462db768ce0'
rootDirectory: '${{ github.workspace }}'
githubAuthToken: ${{ secrets.GITHUB_TOKEN }}
smartDeployment: 'true'

steps:
- name: Login to Azure (Attempt 1)
continue-on-error: true
id: login1
uses: azure/login@v1
if: ${{ env.cloudEnv == 'AzureCloud' }}
with:
creds: ${{ secrets.AZURE_SENTINEL_CREDENTIALS_60019580bd934e54ad5ed462db768ce0 }}
enable-AzPSSession: true

- name: Wait 30 seconds if login attempt 1 failed
if: ${{ env.cloudEnv == 'AzureCloud' && steps.login1.outcome=='failure' }}
run: powershell Start-Sleep -s 30

- name: Login to Azure (Attempt 2)
continue-on-error: true
id: login2
uses: azure/login@v1
if: ${{ env.cloudEnv == 'AzureCloud' && steps.login1.outcome=='failure' }}
with:
creds: ${{ secrets.AZURE_SENTINEL_CREDENTIALS_60019580bd934e54ad5ed462db768ce0 }}
enable-AzPSSession: true

- name: Wait 30 seconds if login attempt 2 failed
if: ${{ env.cloudEnv == 'AzureCloud' && steps.login2.outcome=='failure' }}
run: powershell Start-Sleep -s 30

- name: Login to Azure (Attempt 3)
continue-on-error: false
id: login3
uses: azure/login@v1
if: ${{ env.cloudEnv == 'AzureCloud' && steps.login2.outcome=='failure' }}
with:
creds: ${{ secrets.AZURE_SENTINEL_CREDENTIALS_60019580bd934e54ad5ed462db768ce0 }}
enable-AzPSSession: true

- name: Checkout
uses: actions/checkout@v3

- name: Deploy Content to Azure Sentinel
uses: azure/powershell@v1
with:
azPSVersion: 'latest'
inlineScript: |
${{ github.workspace }}//.github/workflows/azure-sentinel-deploy-60019580-bd93-4e54-ad5e-d462db768ce0.ps1
Copy link
Contributor

@v-prasadboke v-prasadboke Oct 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tactics, relevant techniques and entity mappings is missing from this analytic rule.
Also add required data connector field and can be kept as null. A validation check is failing for requiredDataConnectors.
requiredDataConnectors: []

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
id: 2e0efcd4-56d2-41df-9098-d6898a58c62b
name: NetBackup too many anomalies generated
version: 1.0.0
kind: Scheduled
description: Trigger Incident if we get too many anomalies in last 5 mins
severity: Medium
queryFrequency: 5m
queryPeriod: 5m
triggerOperator: gt
triggerThreshold: 0
query: |-
NetBackupAlerts_CL
| where Category contains "ANOMALY" | summarize Total=count()
| where Total > 20
suppressionEnabled: false
incidentConfiguration:
createIncident: true
groupingConfiguration:
enabled: false
reopenClosedIncident: false
lookbackDuration: 5h
matchingMethod: AllEntities
groupByEntities: []
groupByAlertDetails: []
groupByCustomDetails: []
suppressionDuration: 5h
eventGroupingSettings:
aggregationKind: SingleAlert

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
id: d39f0c47-2e85-49b9-a686-388c2eb7062c
name: NetBackup Too many failed login attempt
version: 1.0.0
kind: Scheduled
description: This rule will generate an incident if for a given host there are more than 5 failed login attemts in a last 1 hour timespan
severity: Medium
queryFrequency: 5m
queryPeriod: 1h
triggerOperator: gt
triggerThreshold: 0
tactics:
- CredentialAccess
- Discovery
relevantTechniques:
- T1110
- T1212
query: |-
let time_span = ago(60m);
NetBackupAlerts_CL
| where operation_s contains "LOGIN" and Message contains "authentication failed"
| extend userName = split(userName_s, "@")[0] | extend host =
split(userName_s, "@")[1]
| where TimeGenerated >= time_span
| summarize count() by tostring(host)
entityMappings:
- entityType: Host
fieldMappings:
- identifier: HostName
columnName: host
suppressionEnabled: false
incidentConfiguration:
createIncident: true
groupingConfiguration:
enabled: false
reopenClosedIncident: false
lookbackDuration: 5h
matchingMethod: AllEntities
groupByEntities: []
groupByAlertDetails: []
groupByCustomDetails: []
suppressionDuration: 5h
eventGroupingSettings:
aggregationKind: SingleAlert

15 changes: 15 additions & 0 deletions Solutions/Veritas NetBackup/Data/Solution_NetBackup.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"Name": "Veritas NetBackup",
"Author": "Microsoft - support@microsoft.com",
"Logo": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/Azure_Sentinel.svg\" width=\"75px\" height=\"75px\">",
"Description": "The [Veritas](https://www.veritas.com/) solution for Microsoft Sentinel allows you to analyze NetBackup audit events. It includes analytics rules to automatically generate Incidents when an abnormal activity is detected.",
"Analytic Rules": [
"Analytic Rules/NetBackup_many_Anomalies.yaml",
"Analytic Rules/NetBackup_many_login_fail.yaml"
],
"Metadata": "SolutionMetadata.json",
"BasePath": "C:\\GitHub\\Azure-Sentinel\\Solutions\\Veritas NetBackup",
"Version": "3.0.0",
"TemplateSpec": true,
"Is1PConnector": false
}
Binary file added Solutions/Veritas NetBackup/Package/3.0.0.zip
Binary file not shown.
117 changes: 117 additions & 0 deletions Solutions/Veritas NetBackup/Package/createUiDefinition.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"config": {
"isWizard": false,
"basics": {
"description": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/Azure_Sentinel.svg\" width=\"75px\" height=\"75px\">\n\n**Note:** _There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing._\n\nThe [Veritas](https://www.veritas.com/) solution for Microsoft Sentinel allows you to analyze NetBackup audit events. It includes analytics rules to automatically generate Incidents when an abnormal activity is detected.\n\n**Analytic Rules:** 2\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)",
"subscription": {
"resourceProviders": [
"Microsoft.OperationsManagement/solutions",
"Microsoft.OperationalInsights/workspaces/providers/alertRules",
"Microsoft.Insights/workbooks",
"Microsoft.Logic/workflows"
]
},
"location": {
"metadata": {
"hidden": "Hiding location, we get it from the log analytics workspace"
},
"visible": false
},
"resourceGroup": {
"allowExisting": true
}
}
},
"basics": [
{
"name": "getLAWorkspace",
"type": "Microsoft.Solutions.ArmApiControl",
"toolTip": "This filters by workspaces that exist in the Resource Group selected",
"condition": "[greater(length(resourceGroup().name),0)]",
"request": {
"method": "GET",
"path": "[concat(subscription().id,'/providers/Microsoft.OperationalInsights/workspaces?api-version=2020-08-01')]"
}
},
{
"name": "workspace",
"type": "Microsoft.Common.DropDown",
"label": "Workspace",
"placeholder": "Select a workspace",
"toolTip": "This dropdown will list only workspace that exists in the Resource Group selected",
"constraints": {
"allowedValues": "[map(filter(basics('getLAWorkspace').value, (filter) => contains(toLower(filter.id), toLower(resourceGroup().name))), (item) => parse(concat('{\"label\":\"', item.name, '\",\"value\":\"', item.name, '\"}')))]",
"required": true
},
"visible": true
}
],
"steps": [
{
"name": "analytics",
"label": "Analytics",
"subLabel": {
"preValidation": "Configure the analytics",
"postValidation": "Done"
},
"bladeTitle": "Analytics",
"elements": [
{
"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."
}
},
{
"name": "analytics-link",
"type": "Microsoft.Common.TextBlock",
"options": {
"link": {
"label": "Learn more",
"uri": "https://docs.microsoft.com/azure/sentinel/tutorial-detect-threats-custom?WT.mc_id=Portal-Microsoft_Azure_CreateUIDef"
}
}
},
{
"name": "analytic1",
"type": "Microsoft.Common.Section",
"label": "NetBackup too many anomalies generated",
"elements": [
{
"name": "analytic1-text",
"type": "Microsoft.Common.TextBlock",
"options": {
"text": "Trigger Incident if we get too many anomalies in last 5 mins"
}
}
]
},
{
"name": "analytic2",
"type": "Microsoft.Common.Section",
"label": "NetBackup Too many failed login attempt",
"elements": [
{
"name": "analytic2-text",
"type": "Microsoft.Common.TextBlock",
"options": {
"text": "This rule will generate an incident if for a given host there are more than 5 failed login attemts in a last 1 hour timespan"
}
}
]
}
]
}
],
"outputs": {
"workspace-location": "[first(map(filter(basics('getLAWorkspace').value, (filter) => and(contains(toLower(filter.id), toLower(resourceGroup().name)),equals(filter.name,basics('workspace')))), (item) => item.location))]",
"location": "[location()]",
"workspace": "[basics('workspace')]"
}
}
}
Loading
Loading