Detection rules › Sublime MQL
Brand Impersonation: Procore
Detects messages containing Procore branding language that do not originate from legitimate Procore domains. This has been observed in phishing campaigns.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering |
Event coverage
Rule body MQL
type.inbound
and (
strings.ilike(body.current_thread.text, "*powered by procore*")
or 2 of (
strings.icontains(body.current_thread.text, 'Procore'),
strings.icontains(body.current_thread.text, '6309 Carpinteria Ave'),
strings.icontains(body.current_thread.text, 'Carpinteria, CA 93013')
)
or (
strings.iends_with(sender.display_name, 'via Procore')
and any(body.current_thread.links,
.href_url.domain.root_domain in $free_subdomain_hosts
)
)
)
and not (
sender.email.domain.root_domain in ("procore.com", "procoretech.com")
and coalesce(headers.auth_summary.dmarc.pass, false)
)
// negating legit replies/forwards
and not (
(
strings.istarts_with(subject.subject, "RE:")
or strings.istarts_with(subject.subject, "FW:")
or strings.istarts_with(subject.subject, "FWD:")
or regex.imatch(subject.subject,
'(\[[^\]]+\]\s?){0,3}(re|fwd?|automat.*)\s?:.*'
)
or strings.istarts_with(subject.subject, "Réponse automatique")
)
and (length(headers.references) > 0 and headers.in_reply_to is not null)
)
// negate bounce backs
and not (
strings.like(sender.email.local_part,
"*postmaster*",
"*mailer-daemon*",
"*administrator*"
)
and any(attachments,
.content_type in (
"message/rfc822",
"message/delivery-status",
"text/calendar"
)
)
)
Detection logic
Scope: inbound message.
Detects messages containing Procore branding language that do not originate from legitimate Procore domains. This has been observed in phishing campaigns.
- inbound message
any of:
- body.current_thread.text matches '*powered by procore*'
at least 2 of:
- body.current_thread.text contains 'Procore'
- body.current_thread.text contains '6309 Carpinteria Ave'
- body.current_thread.text contains 'Carpinteria, CA 93013'
all of:
- sender.display_name ends with 'via Procore'
any of
body.current_thread.linkswhere:- .href_url.domain.root_domain in $free_subdomain_hosts
not:
all of:
- sender.email.domain.root_domain in ('procore.com', 'procoretech.com')
- coalesce(headers.auth_summary.dmarc.pass)
not:
all of:
any of:
- subject.subject starts with 'RE:'
- subject.subject starts with 'FW:'
- subject.subject starts with 'FWD:'
- subject.subject matches '(\\[[^\\]]+\\]\\s?){0,3}(re|fwd?|automat.*)\\s?:.*'
- subject.subject starts with 'Réponse automatique'
all of:
- length(headers.references) > 0
- headers.in_reply_to is set
not:
all of:
sender.email.local_part matches any of 3 patterns
*postmaster**mailer-daemon**administrator*
any of
attachmentswhere:- .content_type in ('message/rfc822', 'message/delivery-status', 'text/calendar')
Inspects: attachments[].content_type, body.current_thread.links, body.current_thread.links[].href_url.domain.root_domain, body.current_thread.text, headers.auth_summary.dmarc.pass, headers.in_reply_to, headers.references, sender.display_name, sender.email.domain.root_domain, sender.email.local_part, subject.subject, type.inbound. Sensors: regex.imatch, strings.icontains, strings.iends_with, strings.ilike, strings.istarts_with, strings.like. Reference lists: $free_subdomain_hosts.
Indicators matched (18)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | *powered by procore* |
strings.icontains | substring | Procore |
strings.icontains | substring | 6309 Carpinteria Ave |
strings.icontains | substring | Carpinteria, CA 93013 |
strings.iends_with | suffix | via Procore |
sender.email.domain.root_domain | member | procore.com |
sender.email.domain.root_domain | member | procoretech.com |
strings.istarts_with | prefix | RE: |
strings.istarts_with | prefix | FW: |
strings.istarts_with | prefix | FWD: |
regex.imatch | regex | (\[[^\]]+\]\s?){0,3}(re|fwd?|automat.*)\s?:.* |
strings.istarts_with | prefix | Réponse automatique |
6 more
strings.like | substring | *postmaster* |
strings.like | substring | *mailer-daemon* |
strings.like | substring | *administrator* |
attachments[].content_type | member | message/rfc822 |
attachments[].content_type | member | message/delivery-status |
attachments[].content_type | member | text/calendar |