← Back to Explore
sublimemediumRule
BEC/Fraud: Urgent language and suspicious sending/infrastructure patterns
Identifies inbound messages using urgent language patterns and sender behavioral traits common in social manipulation. Combines multiple indicators including urgent subject lines, characteristic message content, short message length, and suspicious sender attributes.
Detection Query
type.inbound
and 3 of (
// urgent subjects
strings.ilike(subject.subject, '*quick question*'),
strings.ilike(subject.subject, '*urgent*request*'),
strings.ilike(subject.subject, '*are you available*'),
strings.ilike(subject.subject, '*need assistance*'),
strings.ilike(subject.subject, '*help*needed*'),
regex.icontains(subject.subject, 'favor\b'),
strings.ilike(subject.subject, '*checking in*'),
strings.ilike(subject.subject, '*awaiting*response*'),
strings.ilike(subject.subject, '*catch*up*'),
// BEC body patterns
strings.ilike(body.current_thread.text, '*sorry to bother*'),
strings.ilike(body.current_thread.text, '*are you busy*'),
strings.ilike(body.current_thread.text, '*can you help*'),
strings.ilike(body.current_thread.text, '*do you have a moment*'),
strings.ilike(body.current_thread.text, '*please respond*asap*'),
strings.ilike(subject.subject, '*quick question*'),
// brand name
regex.icontains(body.current_thread.text, 'a\s?m\s?a\s?z\s?o\s?n'), // Catches "Amaz on", "Amazon", etc.
regex.icontains(body.current_thread.text, 'p\s?a\s?y\s?p\s?a\s?l'),
regex.icontains(body.current_thread.text, 'a\s?p\s?p\s?l\s?e'),
// short body
length(body.current_thread.text) < 200,
strings.count(body.current_thread.text, ' ') < 30
)
and 3 of (
// suspicious sender
sender.email.domain.root_domain in $free_email_providers,
network.whois(sender.email.domain).days_old < 30,
// suspicious recipient pattern
any(recipients.to, strings.ilike(.display_name, 'undisclosed?recipients')),
length(recipients.to) == 1, // Single recipient
// header checks
strings.starts_with(headers.mailer, 'Open-Xchange Mailer'),
strings.ilike(headers.x_originating_ip.ip, '*.*.*.0'), // Common in some BEC campaigns
// deifferent reply-to address
(
length(headers.reply_to) > 0
and sender.email.email not in map(headers.reply_to, .email.email)
),
// sender display name is part of the subject
strings.icontains(subject.subject, sender.display_name),
)
and profile.by_sender_email().prevalence not in ("common")
Data Sources
Email MessagesEmail HeadersEmail Attachments
Platforms
email
Raw Content
name: "BEC/Fraud: Urgent language and suspicious sending/infrastructure patterns"
description: "Identifies inbound messages using urgent language patterns and sender behavioral traits common in social manipulation. Combines multiple indicators including urgent subject lines, characteristic message content, short message length, and suspicious sender attributes."
type: "rule"
severity: "medium"
source: |
type.inbound
and 3 of (
// urgent subjects
strings.ilike(subject.subject, '*quick question*'),
strings.ilike(subject.subject, '*urgent*request*'),
strings.ilike(subject.subject, '*are you available*'),
strings.ilike(subject.subject, '*need assistance*'),
strings.ilike(subject.subject, '*help*needed*'),
regex.icontains(subject.subject, 'favor\b'),
strings.ilike(subject.subject, '*checking in*'),
strings.ilike(subject.subject, '*awaiting*response*'),
strings.ilike(subject.subject, '*catch*up*'),
// BEC body patterns
strings.ilike(body.current_thread.text, '*sorry to bother*'),
strings.ilike(body.current_thread.text, '*are you busy*'),
strings.ilike(body.current_thread.text, '*can you help*'),
strings.ilike(body.current_thread.text, '*do you have a moment*'),
strings.ilike(body.current_thread.text, '*please respond*asap*'),
strings.ilike(subject.subject, '*quick question*'),
// brand name
regex.icontains(body.current_thread.text, 'a\s?m\s?a\s?z\s?o\s?n'), // Catches "Amaz on", "Amazon", etc.
regex.icontains(body.current_thread.text, 'p\s?a\s?y\s?p\s?a\s?l'),
regex.icontains(body.current_thread.text, 'a\s?p\s?p\s?l\s?e'),
// short body
length(body.current_thread.text) < 200,
strings.count(body.current_thread.text, ' ') < 30
)
and 3 of (
// suspicious sender
sender.email.domain.root_domain in $free_email_providers,
network.whois(sender.email.domain).days_old < 30,
// suspicious recipient pattern
any(recipients.to, strings.ilike(.display_name, 'undisclosed?recipients')),
length(recipients.to) == 1, // Single recipient
// header checks
strings.starts_with(headers.mailer, 'Open-Xchange Mailer'),
strings.ilike(headers.x_originating_ip.ip, '*.*.*.0'), // Common in some BEC campaigns
// deifferent reply-to address
(
length(headers.reply_to) > 0
and sender.email.email not in map(headers.reply_to, .email.email)
),
// sender display name is part of the subject
strings.icontains(subject.subject, sender.display_name),
)
and profile.by_sender_email().prevalence not in ("common")
attack_types:
- "BEC/Fraud"
- "Callback Phishing"
- "Spam"
tactics_and_techniques:
- "Impersonation: Brand"
- "Social engineering"
- "Free email provider"
detection_methods:
- "Content analysis"
- "Header analysis"
- "Sender analysis"
- "Whois"
id: "ba8a79e0-cce3-57e8-bbc7-3b3d9f848761"