Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Lookalike domain, Social engineering |
Event coverage
Rule body MQL
type.inbound
and (
regex.icontains(sender.display_name, '\bDHL\b')
or (
strings.ilike(sender.email.domain.domain, '*DHL*')
and length(sender.email.domain.domain) < 15
)
or strings.ilike(subject.subject, '*DHL notification*')
or regex.icontains(subject.subject, 'dhl? express')
or regex.contains(subject.subject, '\bD.{0,2}H.{0,2}L.{0,2}\b')
or (
any(ml.nlu_classifier(body.current_thread.text).topics,
.name == "Shipping and Package" and .confidence == "high"
)
and strings.contains(body.current_thread.text, 'DHL ')
)
)
and (
any(ml.nlu_classifier(body.current_thread.text).entities, .name == "urgency")
or any(ml.nlu_classifier(body.current_thread.text).entities,
.name == "org"
and (
.text =~ "DHL"
or .text =~ "DHL Express"
or strings.istarts_with(.text, "DHL International")
)
)
or any(ml.logo_detect(file.message_screenshot()).brands,
.name == "DHL" and .confidence in ("medium", "high")
)
or regex.icontains(body.current_thread.text, '\bDHL\b')
// it contains a QR code
or (
//
// 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
//
beta.scan_qr(file.message_screenshot()).found
and any(beta.scan_qr(file.message_screenshot()).items, .type == "url")
)
//
// 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
//
or strings.ilike(beta.ocr(file.message_screenshot()).text,
"*package*",
"*parcel*",
"*shipping*",
"*delivery*",
"*track*"
)
or strings.ilike(body.current_thread.text,
"*package*",
"*parcel*",
"*shipping*",
"*delivery*",
"*track*"
)
)
and (
(
(length(headers.references) > 0 or headers.in_reply_to is null)
and not (
(
strings.istarts_with(subject.subject, "RE:")
or strings.istarts_with(subject.subject, "RES:")
or strings.istarts_with(subject.subject, "R:")
or strings.istarts_with(subject.subject, "ODG:")
or strings.istarts_with(subject.subject, "答复:")
or strings.istarts_with(subject.subject, "AW:")
or strings.istarts_with(subject.subject, "TR:")
or strings.istarts_with(subject.subject, "FWD:")
or regex.imatch(subject.subject, '(\[[^\]]+\]\s?){0,3}(re|fwd?)\s?:')
)
)
)
or length(headers.references) == 0
)
and sender.email.domain.root_domain not in~ (
'dhl.com',
'dhl-news.com',
'bdhllp.com',
'dhlecommerce.co.uk',
'dhlparcel.co.uk',
'dhlecs.com',
'dhl.co.uk',
'dhl.co.tz',
'dpdhl.com',
'dhl.de',
'dhl.fr',
'dhl.pl',
'dhlexpress.fr', // legit dhl site
'dhlending.com',
'inmotion.dhl',
'dhlparcel.nl',
'dhltariff.co.uk',
'dhlindia-kyc.com',
'dpogroup.com',
'4flow-service.com', // shipping service
'leaders-in-logistics.com', // legit sight for leadership webinar events
'deutschepost.de', // German postal service
'dhlecommerce.nl',
'dhl.nl',
'adhlawfirm.com', // similar name but unrelated
'attendhlth.com', // dhl in domain but unrelated
'tdhlaw.com', // dhl in domain but unrelated
'hapibenefits.com', // DHL rewards program
'dhlgpi.com', // DHL Australia
'dhlfreight-news.com'
)
and not (
sender.email.domain.tld in ('dhl')
and coalesce(headers.auth_summary.dmarc.pass, false)
)
and (
profile.by_sender().prevalence in ("new", "outlier")
or (
profile.by_sender().any_messages_malicious_or_spam
and not profile.by_sender().any_messages_benign
)
)
// negate highly trusted sender domains unless they fail DMARC authentication
and (
(
sender.email.domain.root_domain in $high_trust_sender_root_domains
and not headers.auth_summary.dmarc.pass
)
or sender.email.domain.root_domain not in $high_trust_sender_root_domains
)
Detection logic
Scope: inbound message.
Impersonation of the shipping provider DHL.
- inbound message
any of:
- sender.display_name matches '\\bDHL\\b'
all of:
- sender.email.domain.domain matches '*DHL*'
- length(sender.email.domain.domain) < 15
- subject.subject matches '*DHL notification*'
- subject.subject matches 'dhl? express'
- subject.subject matches '\\bD.{0,2}H.{0,2}L.{0,2}\\b'
all of:
any of
ml.nlu_classifier(body.current_thread.text).topicswhere all hold:- .name is 'Shipping and Package'
- .confidence is 'high'
- body.current_thread.text contains 'DHL '
any of:
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name is 'urgency'
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere all hold:- .name is 'org'
any of:
- .text is 'DHL'
- .text is 'DHL Express'
- .text starts with 'DHL International'
any of
ml.logo_detect(file.message_screenshot()).brandswhere all hold:- .name is 'DHL'
- .confidence in ('medium', 'high')
- body.current_thread.text matches '\\bDHL\\b'
all of:
- beta.scan_qr(file.message_screenshot()).found
any of
beta.scan_qr(file.message_screenshot()).itemswhere:- .type is 'url'
beta.ocr(file.message_screenshot()).text matches any of 5 patterns
*package**parcel**shipping**delivery**track*
body.current_thread.text matches any of 5 patterns
*package**parcel**shipping**delivery**track*
any of:
all of:
any of:
- length(headers.references) > 0
- headers.in_reply_to is missing
none of:
- subject.subject starts with 'RE:'
- subject.subject starts with 'RES:'
- subject.subject starts with 'R:'
- subject.subject starts with 'ODG:'
- subject.subject starts with '答复:'
- subject.subject starts with 'AW:'
- subject.subject starts with 'TR:'
- subject.subject starts with 'FWD:'
- subject.subject matches '(\\[[^\\]]+\\]\\s?){0,3}(re|fwd?)\\s?:'
- length(headers.references) is 0
- sender.email.domain.root_domain not in ('dhl.com', 'dhl-news.com', 'bdhllp.com', 'dhlecommerce.co.uk', 'dhlparcel.co.uk', 'dhlecs.com', 'dhl.co.uk', 'dhl.co.tz', 'dpdhl.com', 'dhl.de', 'dhl.fr', 'dhl.pl', 'dhlexpress.fr', 'dhlending.com', 'inmotion.dhl', 'dhlparcel.nl', 'dhltariff.co.uk', 'dhlindia-kyc.com', 'dpogroup.com', '4flow-service.com', 'leaders-in-logistics.com', 'deutschepost.de', 'dhlecommerce.nl', 'dhl.nl', 'adhlawfirm.com', 'attendhlth.com', 'tdhlaw.com', 'hapibenefits.com', 'dhlgpi.com', 'dhlfreight-news.com')
not:
all of:
- sender.email.domain.tld in ('dhl')
- coalesce(headers.auth_summary.dmarc.pass)
any of:
- profile.by_sender().prevalence in ('new', 'outlier')
all of:
- profile.by_sender().any_messages_malicious_or_spam
not:
- profile.by_sender().any_messages_benign
any of:
all of:
- sender.email.domain.root_domain in $high_trust_sender_root_domains
not:
- headers.auth_summary.dmarc.pass
- sender.email.domain.root_domain not in $high_trust_sender_root_domains
Inspects: body.current_thread.text, headers.auth_summary.dmarc.pass, headers.in_reply_to, headers.references, sender.display_name, sender.email.domain.domain, sender.email.domain.root_domain, sender.email.domain.tld, subject.subject, type.inbound. Sensors: beta.ocr, beta.scan_qr, file.message_screenshot, ml.logo_detect, ml.nlu_classifier, profile.by_sender, regex.contains, regex.icontains, regex.imatch, strings.contains, strings.ilike, strings.istarts_with. Reference lists: $high_trust_sender_root_domains.
Indicators matched (62)
| Field | Match | Value |
|---|---|---|
regex.icontains | regex | \bDHL\b |
strings.ilike | substring | *DHL* |
strings.ilike | substring | *DHL notification* |
regex.icontains | regex | dhl? express |
regex.contains | regex | \bD.{0,2}H.{0,2}L.{0,2}\b |
ml.nlu_classifier(body.current_thread.text).topics[].name | equals | Shipping and Package |
ml.nlu_classifier(body.current_thread.text).topics[].confidence | equals | high |
strings.contains | substring | DHL |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | urgency |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | org |
ml.nlu_classifier(body.current_thread.text).entities[].text | equals | DHL |
ml.nlu_classifier(body.current_thread.text).entities[].text | equals | DHL Express |
50 more
strings.istarts_with | prefix | DHL International |
ml.logo_detect(file.message_screenshot()).brands[].name | equals | DHL |
ml.logo_detect(file.message_screenshot()).brands[].confidence | member | medium |
ml.logo_detect(file.message_screenshot()).brands[].confidence | member | high |
beta.scan_qr(file.message_screenshot()).items[].type | equals | url |
strings.ilike | substring | *package* |
strings.ilike | substring | *parcel* |
strings.ilike | substring | *shipping* |
strings.ilike | substring | *delivery* |
strings.ilike | substring | *track* |
strings.istarts_with | prefix | RE: |
strings.istarts_with | prefix | RES: |
strings.istarts_with | prefix | R: |
strings.istarts_with | prefix | ODG: |
strings.istarts_with | prefix | 答复: |
strings.istarts_with | prefix | AW: |
strings.istarts_with | prefix | TR: |
strings.istarts_with | prefix | FWD: |
regex.imatch | regex | (\[[^\]]+\]\s?){0,3}(re|fwd?)\s?: |
sender.email.domain.root_domain | member | dhl.com |
sender.email.domain.root_domain | member | dhl-news.com |
sender.email.domain.root_domain | member | bdhllp.com |
sender.email.domain.root_domain | member | dhlecommerce.co.uk |
sender.email.domain.root_domain | member | dhlparcel.co.uk |
sender.email.domain.root_domain | member | dhlecs.com |
sender.email.domain.root_domain | member | dhl.co.uk |
sender.email.domain.root_domain | member | dhl.co.tz |
sender.email.domain.root_domain | member | dpdhl.com |
sender.email.domain.root_domain | member | dhl.de |
sender.email.domain.root_domain | member | dhl.fr |
sender.email.domain.root_domain | member | dhl.pl |
sender.email.domain.root_domain | member | dhlexpress.fr |
sender.email.domain.root_domain | member | dhlending.com |
sender.email.domain.root_domain | member | inmotion.dhl |
sender.email.domain.root_domain | member | dhlparcel.nl |
sender.email.domain.root_domain | member | dhltariff.co.uk |
sender.email.domain.root_domain | member | dhlindia-kyc.com |
sender.email.domain.root_domain | member | dpogroup.com |
sender.email.domain.root_domain | member | 4flow-service.com |
sender.email.domain.root_domain | member | leaders-in-logistics.com |
sender.email.domain.root_domain | member | deutschepost.de |
sender.email.domain.root_domain | member | dhlecommerce.nl |
sender.email.domain.root_domain | member | dhl.nl |
sender.email.domain.root_domain | member | adhlawfirm.com |
sender.email.domain.root_domain | member | attendhlth.com |
sender.email.domain.root_domain | member | tdhlaw.com |
sender.email.domain.root_domain | member | hapibenefits.com |
sender.email.domain.root_domain | member | dhlgpi.com |
sender.email.domain.root_domain | member | dhlfreight-news.com |
sender.email.domain.tld | member | dhl |