Detection rules › Sublime MQL
HR impersonation via e-sign agreement comment
This rule inspects messages originating from legitimate e-signature platform infrastructure, with engaging language in the body that matches HR Impersonation criteria.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Credential Phishing |
| Tactics and techniques | Evasion, Impersonation: Brand, Out of band pivot, Social engineering |
Event coverage
Rule body MQL
type.inbound
and length(attachments) == 0
// Legitimate Docusign sending infratructure
and (
sender.email.domain.root_domain in (
'docusign.net',
'docusign.com',
'hellosign.com'
)
// docusing.com as a reply-to is used in updates to documents, such as views, signs, etc
and not any(headers.reply_to, .email.domain.domain == 'docusign.com')
// check for SPF or DMARC passed
and (headers.auth_summary.spf.pass or headers.auth_summary.dmarc.pass)
)
// HR Impersonation in body
and regex.icontains(body.current_thread.text,
(
'(\bh\W?r\W?\b|human\s?resources|hr depart(ment)?|employee relations)'
)
)
// Request and Urgency
and (
any(ml.nlu_classifier(body.current_thread.text).entities, .name == "request")
and (
any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "cred_theft" and .confidence == "high"
)
or any(ml.nlu_classifier(body.current_thread.text).entities,
.name in ("urgency", "financial")
)
)
)
and (
any(ml.nlu_classifier(body.current_thread.text).intents, .name != "benign")
or length(ml.nlu_classifier(body.current_thread.text).intents) == 0 // not benign but not malicious either
)
//
// This rule makes use of a beta feature and is subject to change without notice
// using the beta feature in custom rules is not suggested until it has been formally released
//
// reply-to address has never sent an email to the org
and beta.profile.by_reply_to().prevalence == "new"
// reply-to email address has never been sent an email by the org
and not beta.profile.by_reply_to().solicited
// Negate legitimate HR docusigns originating from within the org
and not (all(headers.reply_to, .email.domain.root_domain in $org_domains))
// Negate replies
and (length(headers.references) == 0 or headers.in_reply_to is null)
Detection logic
Scope: inbound message.
This rule inspects messages originating from legitimate e-signature platform infrastructure, with engaging language in the body that matches HR Impersonation criteria.
- inbound message
- length(attachments) is 0
all of:
- sender.email.domain.root_domain in ('docusign.net', 'docusign.com', 'hellosign.com')
not:
any of
headers.reply_towhere:- .email.domain.domain is 'docusign.com'
any of:
- headers.auth_summary.spf.pass
- headers.auth_summary.dmarc.pass
- body.current_thread.text matches '(\\bh\\W?r\\W?\\b|human\\s?resources|hr depart(ment)?|employee relations)'
all of:
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name is 'request'
any of:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is 'high'
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name in ('urgency', 'financial')
any of:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere:- .name is not 'benign'
- length(ml.nlu_classifier(body.current_thread.text).intents) is 0
- beta.profile.by_reply_to().prevalence is 'new'
not:
- beta.profile.by_reply_to().solicited
not:
all of
headers.reply_towhere:- .email.domain.root_domain in $org_domains
any of:
- length(headers.references) is 0
- headers.in_reply_to is missing
Inspects: body.current_thread.text, headers.auth_summary.dmarc.pass, headers.auth_summary.spf.pass, headers.in_reply_to, headers.references, headers.reply_to, headers.reply_to[].email.domain.domain, headers.reply_to[].email.domain.root_domain, sender.email.domain.root_domain, type.inbound. Sensors: beta.profile.by_reply_to, ml.nlu_classifier, regex.icontains. Reference lists: $org_domains.
Indicators matched (10)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | member | docusign.net |
sender.email.domain.root_domain | member | docusign.com |
sender.email.domain.root_domain | member | hellosign.com |
headers.reply_to[].email.domain.domain | equals | docusign.com |
regex.icontains | regex | (\bh\W?r\W?\b|human\s?resources|hr depart(ment)?|employee relations) |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | request |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | cred_theft |
ml.nlu_classifier(body.current_thread.text).intents[].confidence | equals | high |
ml.nlu_classifier(body.current_thread.text).entities[].name | member | urgency |
ml.nlu_classifier(body.current_thread.text).entities[].name | member | financial |