Query Details
id: e7f8a9b0-c1d2-4e3f-4a5b-6c7d8e9f0a2c
name: "Netskope - Credential Phishing Submission Detection"
version: 1.0.0
kind: Scheduled
description: |
Detects users who uploaded or submitted data (POST activity) to domains categorized as
Phishing or Suspicious by Netskope. Unlike simple browse-to-phishing detections, this
rule specifically targets data submission, indicating the user may have entered credentials.
Uses the custom NetskopeWebTx_CL table via Blob Storage ingestion.
MITRE ATT&CK: T1566 (Phishing), T1056 (Input Capture)
severity: High
requiredDataConnectors:
- connectorId: NetskopeWebTransactions
dataTypes:
- NetskopeWebTx_CL
queryFrequency: PT15M
queryPeriod: P1D
triggerOperator: gt
triggerThreshold: 0
tactics:
- InitialAccess
- CredentialAccess
relevantTechniques:
- T1566
- T1056
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, dst_country_s:string, src_country_s:string, ccl_s:string, access_method_s:string, traffic_type_s:string)[];
let PhishingCategories = dynamic([
"Phishing", "Phishing and Other Frauds", "Suspicious",
"Newly Observed Domain", "Newly Registered Domain"]);
union isfuzzy=true _NetskopeEmpty, NetskopeWebTx_CL
| where TimeGenerated > ago(1d)
| where isnotempty(user_s) and isnotempty(domain_s)
| where category_s in (PhishingCategories)
or severity_s in ("high", "critical")
| where activity_s has_any ("Upload", "Post", "Submit", "Login", "FormSubmit")
or todouble(bytes_uploaded_d) > 100
| summarize
SubmissionCount = count(),
TotalBytesPosted = sum(todouble(bytes_uploaded_d)),
UniqueURLs = dcount(url_s),
URLSamples = make_set(url_s, 10),
Categories = make_set(category_s, 5),
Activities = make_set(activity_s, 5),
SourceIPs = make_set(srcip_s, 5),
DstCountries = make_set(dst_country_s, 5),
Actions = make_set(action_s, 5),
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated)
by user_s, domain_s
| order by SubmissionCount desc
entityMappings:
- entityType: Account
fieldMappings:
- identifier: FullName
columnName: user_s
- entityType: DNS
fieldMappings:
- identifier: DomainName
columnName: domain_s
customDetails:
SubmissionCount: SubmissionCount
Categories: Categories
alertDetailsOverride:
alertDisplayNameFormat: "Netskope Credential Phishing - {{user_s}} → {{domain_s}}"
alertDescriptionFormat: "User {{user_s}} submitted data {{SubmissionCount}} times to phishing domain {{domain_s}} ({{Categories}})."
incidentConfiguration:
createIncident: true
groupingConfiguration:
enabled: true
reopenClosedIncident: false
lookbackDuration: PT6H
matchingMethod: Selected
groupByEntities:
- Account
groupByAlertDetails: []
groupByCustomDetails: []
This query is designed to detect potential credential phishing activities by monitoring user data submissions to suspicious or phishing domains. Here's a simplified breakdown:
Purpose: The query identifies users who have uploaded or submitted data (like form submissions or logins) to domains flagged as "Phishing" or "Suspicious" by Netskope. This is more specific than just visiting a phishing site; it focuses on actual data submission, which might indicate credential entry.
Data Source: It uses data from the NetskopeWebTx_CL table, which is ingested via Blob Storage.
Detection Criteria:
Output:
Alerting:
Severity and Techniques:
In essence, this query helps identify potential credential theft by monitoring data submissions to risky domains, allowing for timely alerts and incident management.

David Alonso
Released: May 14, 2026
Tables
Keywords
Operators