Query Details
id: f6a7b8c9-d0e1-4f2a-3b4c-5d6e7f8a9b0c
name: "Netskope - High-Confidence Threat Allowed Through"
version: 1.0.0
kind: Scheduled
description: |
Detects Netskope allowed traffic to destinations with high or critical threat severity
or known malware detections. This indicates Netskope identified a threat but the traffic
was still permitted, potentially due to policy gaps or bypass configurations.
MITRE ATT&CK: T1071 (Application Layer Protocol), T1204 (User Execution)
severity: High
requiredDataConnectors:
- connectorId: NetskopeWebTransactions
dataTypes:
- NetskopeWebTx_CL
queryFrequency: PT15M
queryPeriod: P1D
triggerOperator: gt
triggerThreshold: 0
tactics:
- CommandAndControl
- Execution
relevantTechniques:
- T1071
- T1204
query: |
let _NetskopeEmpty = datatable(TimeGenerated:datetime, action_s:string, category_s:string, severity_s:string, malware_name_s:string, malware_type_s:string, threat_name_s:string, user_s:string, domain_s:string, dstip_s:string, srcip_s:string, bytes_uploaded_d:real, bytes_downloaded_d:real, app_s:string, url_s:string, dlp_rule_s:string, dlp_profile_s:string, activity_s:string, file_type_s:string, object_s:string)[];
union isfuzzy=true _NetskopeEmpty, NetskopeWebTx_CL
| where TimeGenerated > ago(1d)
| where action_s !in ("block", "Block", "blocked", "Blocked")
| where severity_s in ("high", "critical")
or isnotempty(malware_name_s)
or isnotempty(threat_name_s)
| where isnotempty(user_s)
| summarize
RequestCount = count(),
UniqueUsers = dcount(user_s),
UserList = make_set(user_s, 20),
Domains = make_set(domain_s, 10),
ThreatNames = make_set(threat_name_s, 10),
MalwareNames = make_set(malware_name_s, 10),
Categories = make_set(category_s, 5),
Severities = make_set(severity_s, 5),
TotalBytesRecv = sum(todouble(bytes_downloaded_d)),
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated)
by domain_s, severity_s
| extend TotalMBRecv = round(toreal(TotalBytesRecv) / 1048576, 2)
| order by RequestCount desc
entityMappings:
- entityType: DNS
fieldMappings:
- identifier: DomainName
columnName: domain_s
customDetails:
RequestCount: RequestCount
UniqueUsers: UniqueUsers
Severity: severity_s
alertDetailsOverride:
alertDisplayNameFormat: "Netskope Threat Allowed - {{domain_s}} (Severity: {{severity_s}})"
alertDescriptionFormat: "{{RequestCount}} Netskope requests allowed to threat destination {{domain_s}} (severity: {{severity_s}}) affecting {{UniqueUsers}} users."
incidentConfiguration:
createIncident: true
groupingConfiguration:
enabled: true
reopenClosedIncident: false
lookbackDuration: PT6H
matchingMethod: Selected
groupByEntities:
- DNS
groupByAlertDetails: []
groupByCustomDetails: []
This query is designed to detect and alert when Netskope, a cloud security platform, allows traffic to destinations that have been identified as high-risk or associated with known malware. Here's a simplified breakdown of what the query does:
Purpose: It identifies instances where Netskope has detected a threat but still allowed the traffic, which might indicate policy gaps or bypass configurations.
Data Source: The query uses data from the NetskopeWebTransactions connector, specifically the NetskopeWebTx_CL data type.
Time Frame: It looks at data from the past day (24 hours).
Conditions:
Analysis:
Output:
Incident Management:
Overall, this query helps security teams monitor and respond to potential threats that have been allowed through Netskope, ensuring they can address any policy issues or misconfigurations.

David Alonso
Released: April 16, 2026
Tables
Keywords
Operators