|
2 | 2 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", |
3 | 3 | "contentVersion": "1.0.0.0", |
4 | 4 | "metadata": { |
5 | | - "title": "URL Enrichment - Virus Total domain report - Incident Triggered", |
| 5 | + "title": "URL Enrichment - Virus Total Domain Report - Incident Triggered", |
6 | 6 | "description": "This playbook will take each URL entity and query VirusTotal for Domain Report (https://developers.virustotal.com/v3.0/reference#domain-info). It will write the results to Log Analytics and add a comment to the incident.", |
7 | | - "prerequisites": [ "Register to Virus Total community for an API key." ], |
8 | | - "postDeployment": [ "After deployment, attach this playbook to an **automation rule** so it runs when the incident is created." ], |
9 | | - "lastUpdateTime": "2022-07-20T00:00:00.000Z", |
| 7 | + "prerequisites": [ "VirusTotal API key, Register to VirusTotal community. [Register here](https://www.virustotal.com/gui/join-us)" ], |
| 8 | + "postDeployment": [ |
| 9 | + "1. Authorize/Configure all the connections.", |
| 10 | + "2. Assign Microsoft Sentinel Responder Role to playbook.", |
| 11 | + "3. After deployment, attach this playbook to an **automation rule** and map URL entity so it runs when the incident is created.", |
| 12 | + "[click here for detail instructions](https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/VirusTotal/Playbooks/Get-VirusTotalDomainReport/readme.md)" |
| 13 | + ], |
| 14 | + "lastUpdateTime": "2025-05-28T00:00:00.000Z", |
10 | 15 | "entities": [ "URL" ], |
11 | 16 | "tags": [ "Enrichment" ], |
12 | 17 | "support": { |
13 | 18 | "tier": "Community" |
14 | 19 | }, |
15 | 20 | "author": { |
16 | 21 | "name": "Nicholas DiCola" |
17 | | - }, |
18 | | - "releaseNotes": [ |
19 | | - { |
20 | | - "version": "1.0.0", |
21 | | - "title": "URL Enrichment - Virus Total domain report", |
22 | | - "notes": [ |
23 | | - "Initial version" |
24 | | - ] |
25 | | - } |
26 | | - ] |
| 22 | + } |
27 | 23 | }, |
28 | 24 | "parameters": { |
29 | 25 | "PlaybookName": { |
|
32 | 28 | } |
33 | 29 | }, |
34 | 30 | "variables": { |
35 | | - "AzureLogAnalyticsDataCollectorConnectionName": "[concat('azureloganalyticsdatacollector-', parameters('PlaybookName'))]", |
36 | | - "AzureSentinelConnectionName": "[concat('azuresentinel-', parameters('PlaybookName'))]", |
37 | | - "VirusTotalConnectionName": "[concat('virustotal-',parameters('PlaybookName'))]" |
| 31 | + "AzureLogAnalyticsDataCollectorConnectionName": "[concat('AzureLogAnalyticsDataCollector-', parameters('PlaybookName'))]", |
| 32 | + "AzureSentinelConnectionName": "[concat('MicrosoftSentinel-', parameters('PlaybookName'))]", |
| 33 | + "VirusTotalConnectionName": "[concat('VirusTotal-',parameters('PlaybookName'))]" |
38 | 34 | }, |
39 | 35 | "resources": [ |
40 | 36 | { |
|
44 | 40 | "location": "[resourceGroup().location]", |
45 | 41 | "properties": { |
46 | 42 | "displayName": "[variables('AzureLogAnalyticsDataCollectorConnectionName')]", |
47 | | - "customParameterValues": {}, |
48 | 43 | "api": { |
49 | 44 | "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azureloganalyticsdatacollector')]" |
50 | 45 | } |
|
69 | 64 | "kind": "V1", |
70 | 65 | "properties": { |
71 | 66 | "displayName": "[parameters('PlaybookName')]", |
72 | | - "customParameterValues": {}, |
73 | 67 | "parameterValueType": "Alternative", |
74 | 68 | "api": { |
75 | 69 | "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuresentinel')]" |
|
121 | 115 | "inputs": { |
122 | 116 | "body": { |
123 | 117 | "incidentArmId": "@triggerBody()?['object']?['id']", |
124 | | - "message": "<p>Virus Total File Report found for @{items('For_each')?['Url']}<br>\nReputation is: @{body('Get_Domain_report')?['data']?['attributes']?['reputation']}which indicates likely harmless<br>\nQuery: VTURLReport_CL | where id_s == \"@{items('For_each')?['Url']}\"</p>" |
| 118 | + "message": "<p>Virus Total File Report found for @{items('For_each')?['Url']}<br>\nReputation is: @{body('Get_Domain_report')?['data']?['attributes']?['reputation']} which indicates likely harmless domain.<br>\nQuery: VTURLReport_CL | where id_s == \"@{items('For_each')?['Url']}\"</p>" |
125 | 119 | }, |
126 | 120 | "host": { |
127 | 121 | "connection": { |
|
163 | 157 | "inputs": { |
164 | 158 | "body": { |
165 | 159 | "incidentArmId": "@triggerBody()?['object']?['id']", |
166 | | - "message": "<p>Virus Total File Report found for @{items('For_each')?['Url']}<br>\nReputation is: @{body('Get_Domain_report')?['data']?['attributes']?['reputation']}which indicates likely malicous<br>\nQuery: VTURLReport_CL | where id_s == \"@{items('For_each')?['Url']}\"</p>" |
| 160 | + "message": "<p>Virus Total File Report found for @{items('For_each')?['Url']}<br>\nReputation is: @{body('Get_Domain_report')?['data']?['attributes']?['reputation']} which indicates likely malicious domain.<br>\nQuery: VTURLReport_CL | where id_s == \"@{items('For_each')?['Url']}\"</p>" |
167 | 161 | }, |
168 | 162 | "host": { |
169 | 163 | "connection": { |
|
225 | 219 | } |
226 | 220 | }, |
227 | 221 | "method": "get", |
228 | | - "path": "/api/v3/domains/@{encodeURIComponent(split(items('For_each')?['Url'], '/')[2])}" |
| 222 | + "path": "/api/v3/domains/@{encodeURIComponent(if(greater(length(split(items('For_each')?['Url'], '/')), 2), split(items('For_each')?['Url'], '/')[2], items('For_each')?['Url']))}" |
229 | 223 | }, |
230 | 224 | "runAfter": {}, |
231 | 225 | "type": "ApiConnection" |
|
270 | 264 | "value": { |
271 | 265 | "azureloganalyticsdatacollector": { |
272 | 266 | "connectionId": "[resourceId('Microsoft.Web/connections', variables('AzureLogAnalyticsDataCollectorConnectionName'))]", |
273 | | - "connectionName": "[variables('AzureSentinelConnectionName')]", |
| 267 | + "connectionName": "[variables('AzureLogAnalyticsDataCollectorConnectionName')]", |
274 | 268 | "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azureloganalyticsdatacollector')]" |
275 | 269 | }, |
276 | 270 | "azuresentinel": { |
|
0 commit comments