Enterprise Protection (spycloud) — Vendor Schema
Source: schemas/vendors/spycloud/spycloud-enterprise-protection.yaml
Identity
Field
Value
vendor
spycloud
product
Enterprise Protection
data_source
spycloudenterpriseprotectionfeed_generic_alert_raw
category
Cloud
Raw Schema
Fields available in the raw ingest dataset.
Field
Type
Array
Status
JSON Subfields
document_id
string
declared
source_id
float
declared
log_id
string
declared
origin_id
string
declared
severity
float
declared
breach_category
string
declared
breach_title
string
declared
spycloud_publish_date
int
declared
email
string
declared
email_domain
string
declared
email_username
string
declared
username
string
declared
domain
string
declared
password_type
string
declared
infected_machine_id
string
declared
infected_path
string
declared
infected_time
datetime
declared
user_hostname
string
declared
user_os
string
declared
user_sys_domain
string
declared
user_sys_registered_owner
string
declared
ip_addresses
json
✓
declared
av_softwares
json
✓
declared
user_browser
string
declared
country_code
string
declared
target_domain
string
declared
target_subdomain
string
declared
target_url
string
declared
Modeling Rule — SOC SpyCloud Enterprise Protection Modeling Rule
Field
Value
modeling_rule_id
SOC_SpyCloudEP_ModelingRule
modeling_rule_name
SOC SpyCloud Enterprise Protection Modeling Rule
directory_name
SOCSpyCloudEPModelingRules
fromversion
6.10.0
Field Mappings
What each XDM field is, where it sources from, what issue field it surfaces on, and why the mapping is shaped the way it is.
XDM Path
Expression
Sources
Issue Field
Description
xdm.event.id
to_string(document_id)
document_id
originalalertid
xdm.event.type
breach_category
breach_category
xdm.alert.original_alert_id
to_string(document_id)
document_id
xdm.alert.name
breach_title
breach_title
originalalertname
xdm.alert.severity
to_string(severity)
severity
severity
xdm.alert.category
breach_category
breach_category
Correlation Rules
SOC SpyCloud - Infostealer Credential Exposure
Field
Value
global_rule_id
SOC SpyCloud - Infostealer Credential Exposure
subtype
passthrough
fromversion
6.10.0
Creates an XSIAM alert for each SpyCloud Enterprise Protection infostealer record (spycloudenterpriseprotectionfeed_generic_alert_raw, breach_category = infostealer): a corporate credential harvested from an infected device. Canonicalizes the exposed email as the identity pivot, maps the infected host, its IP and the stealer path to the endpoint/network pivots, and injects DS:SpyCloud/Enterprise Protection so Foundation routes the alert. Credential material and personal data in the feed are never read.
Tags: SOCFramework, Passthrough, Cloud, Identity, SpyCloud
Schema Constants
Field
Value
rule_id
0
alert_category
User Defined
alert_domain
DOMAIN_SECURITY
action
ALERTS
execution_mode
SCHEDULED
mapping_strategy
CUSTOM
user_defined_category
sc_category
user_defined_severity
severity
is_enabled
✓
drilldown_query_timeframe
ALERT
severity
User Defined
Suppression
Field
Value
enabled
✓
duration
24 hours
fields
originalalertid
document_id is SpyCloud's per-record unique id. A record can be
republished; 24h suppression keeps one issue per record per day.
Alert Fields
Issue-field assignments emitted by the correlation rule. The Description column captures intent — when present, this is what downstream playbooks rely on the field meaning.
Issue Field
Source
Bucket
Description
vendor
vendor
computed
product
product
computed
originalalertid
originalalertid
computed
originalalertname
originalalertname
computed
originalalertsource
originalalertsource
computed
externallink
externallink
computed
alert_description
alert_description
computed
severity
severity
computed
mitretacticid
mitretacticid
computed
mitretacticname
mitretacticname
computed
mitretechniqueid
mitretechniqueid
computed
mitretechniquename
mitretechniquename
computed
agent_hostname
agent_hostname
computed
agent_id
agent_id
computed
agent_device_domain
agent_device_domain
computed
actor_effective_username
actor_effective_username
computed
actor_process_image_path
actor_process_image_path
computed
action_local_ip
action_local_ip
computed
dns_query_name
dns_query_name
computed
user_principal
user_principal
computed
userid
user_principal
computed
username
actor_effective_username
computed
hostname
agent_hostname
computed
agentid
agent_id
computed
domain
agent_device_domain
computed
localip
action_local_ip
computed
initiatorpath
actor_process_image_path
computed
socfwidentityuserdisplayname
idr_display_name
cie
spycloud_breach_category
spycloud_breach_category
computed
spycloud_breach_title
spycloud_breach_title
computed
spycloud_severity
spycloud_severity
computed
spycloud_document_id
spycloud_document_id
computed
spycloud_source_id
spycloud_source_id
computed
spycloud_publish_date
spycloud_publish_date
computed
spycloud_target_domain
spycloud_target_domain
computed
spycloud_target_url
spycloud_target_url
computed
spycloud_infected_host
spycloud_infected_host
computed
spycloud_infected_machine
spycloud_infected_machine
computed
spycloud_infected_path
spycloud_infected_path
computed
spycloud_infected_time
spycloud_infected_time
computed
spycloud_user_os
spycloud_user_os
computed
spycloud_av_software
spycloud_av_software
computed
spycloud_password_type
spycloud_password_type
computed
spycloud_country
spycloud_country
computed
tags
alert_tags
computed
alert_name
alert_name
computed
Pre-Alter XQL
// Vendor / product ( required f or SOCProductCategoryMap routing )
| alter v end or_name = "SpyCloud" , product_name = "Enterprise Protection"
// Scope : infostealer rec or ds only (see header )
| filter breach_c at egory = "infostealer"
| alter sc_c at egory = "Credential Exposure"
// SpyCloud severity (2 / 5 / 20 / 25 ) → XSIAM ladder
| alter sc_sev = to_float ( severity )
| alter severity = if (
sc_sev >= 25 , "Critical" ,
sc_sev >= 20 , "High" ,
sc_sev >= 5 , "Medium" ,
"Low"
)
// Infected device IP (first of the array ), timestamps
| alter
sc_ip_first = arrayindex ( ip_addresses - > [], 0 ),
sc_infected_time = infected_time ,
sc_av = arraystring ( av_softwares - > [], ", " )
// Array elements keep their JSON quotes ; regextract pulls the bare IPv4 .
// NOTE : XQL regex escapes are sing le - backslash ; "\\d" never m at ches.
| alter sc_ipv4 = arrayindex ( regextract ( sc_ip_first , "([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})" ), 0 )
// ---- Identity : the exposed c or porate email , email-first.
| alter exposed_email = lowercase ( coalesce ( email , if ( username contains "@" , username , null )))
| alter user_principal = exposed_email
| alter user_name = coalesce ( exposed_email , username )
| alter d is play_name = user_sys_registered_owner
| alter ac to r_effective_username = coalesce ( exposed_email , lowercase ( username ))
// Title : [ Cloud ] { email } - Credential Exposure : { breach }
| alter alert_name = concat (
"[Cloud] " ,
coalesce ( exposed_email , username , "Unknown" ),
" - Credential Exposure: " ,
coalesce ( breach_title , "Infostealer" )
)
| alter alert_description = concat (
"SpyCloud infostealer record: a credential for " ,
coalesce ( exposed_email , username , "an unknown account" ),
" was harvested from an infected device." ,
" | Target: " , coalesce ( target_domain , "Unknown" ),
" | Host: " , coalesce ( user_hostname , infected_machine_id , "Unknown" ),
" | OS: " , coalesce ( user_os , "-" ),
" | Stealer path: " , coalesce ( infected_path , "-" ),
" | Infected: " , coalesce ( to_string ( sc_infected_time ), "-" ),
" | AV: " , coalesce ( sc_av , "-" ),
" | Password type: " , coalesce ( password_type , "-" ),
" | Severity: " , coalesce ( severity , "Unknown" )
)
// ============================================================
// CANONICAL CORE NORMALIZATION
// ============================================================
| alter
v end or = vendor_name ,
product = product_name ,
originalalertid = document_id ,
originalalertname = coalesce ( breach_title , "Infostealer credential exposure" ),
originalalertsource = "SpyCloud - Enterprise Protection" ,
externallink = null ,
severity = severity ,
mitretacticid = "TA0006" ,
mitretacticname = "Credential Access" ,
mitretechniqueid = "T1555" ,
mitretechniquename = "Credentials from Password Stores" ,
agent_hostname = user_hostname ,
agent_id = infected_machine_id ,
agent_device_domain = user_sys_domain ,
actor_process_image_name = null ,
actor_process_image_path = infected_path ,
actor_process_image_sha256 = null ,
actor_process_command_line = null ,
actor_process_os_pid = null ,
causality_actor_process_image_name = null ,
causality_actor_process_image_path = null ,
causality_actor_process_image_sha256 = null ,
action_file_name = null ,
action_file_path = null ,
action_file_sha256 = null ,
action_local_ip = sc_ipv4 ,
action_remote_ip = null ,
dns_query_name = target_domain
// SpyCloud extensions (no credential m at erial , no PII )
| alter
spycloud_breach_c at egory = breach_category ,
spycloud_breach_title = breach_title ,
spycloud_severity = severity ,
spycloud_document_id = document_id ,
spycloud_source_id = to_string ( source_id ),
spycloud_publish_date = spycloud_publish_date ,
spycloud_target_domain = target_domain ,
spycloud_target_url = target_url ,
spycloud_infected_host = user_hostname ,
spycloud_infected_machine = infected_machine_id ,
spycloud_infected_path = infected_path ,
spycloud_infected_time = sc_infected_time ,
spycloud_user_os = user_os ,
spycloud_av_software = sc_av ,
spycloud_password_type = password_type ,
spycloud_country = country_code
// Tag injection — DS : SpyCloud / Enterprise Protection → ds_spycloud_enterpr is e_protection
| alter alert_tags = arraycreate ( "DS:SpyCloud/Enterprise Protection" , "DOM:Security" )