Detection rules › Sublime MQL
Link: Microsoft Dynamics 365 form phishing
Email body is suspicious, and links to a Microsoft Dynamics form. Known phishing tactic.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Evasion |
Event coverage
Rule body MQL
type.inbound
and any(body.links,
.href_url.domain.domain in (
"ncv.microsoft.com",
"customervoice.microsoft.com",
"nam.dcv.ms"
)
and ml.link_analysis(.).effective_url.domain.domain == "customervoice.microsoft.com"
// confirm it is a form
and (
any(ml.link_analysis(.).final_dom.links,
.href_url.domain.domain == "cdn.forms.office.net"
)
or strings.icontains(ml.link_analysis(.).final_dom.raw,
"cdn.forms.office.net"
)
or .href_url.path == "/Pages/ResponsePage.aspx"
)
// analyze for credential phishing signals
and (
//
// 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
//
any(ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).intents,
.name == "cred_theft" and .confidence != "low"
)
or any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "cred_theft" and .confidence != "low"
)
)
)
and (
not profile.by_sender().solicited
or (
profile.by_sender().any_messages_malicious_or_spam
and not profile.by_sender().any_messages_benign
)
)
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.
Email body is suspicious, and links to a Microsoft Dynamics form. Known phishing tactic.
- inbound message
any of
body.linkswhere all hold:- .href_url.domain.domain in ('ncv.microsoft.com', 'customervoice.microsoft.com', 'nam.dcv.ms')
- ml.link_analysis(.).effective_url.domain.domain is 'customervoice.microsoft.com'
any of:
any of
ml.link_analysis(.).final_dom.linkswhere:- .href_url.domain.domain is 'cdn.forms.office.net'
- ml.link_analysis(.).final_dom.raw contains 'cdn.forms.office.net'
- .href_url.path is '/Pages/ResponsePage.aspx'
any of:
any of
ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is not 'low'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is not 'low'
any of:
not:
- profile.by_sender().solicited
all of:
- profile.by_sender().any_messages_malicious_or_spam
not:
- profile.by_sender().any_messages_benign
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, body.links, body.links[].href_url.domain.domain, body.links[].href_url.path, headers.auth_summary.dmarc.pass, sender.email.domain.root_domain, type.inbound. Sensors: beta.ocr, ml.link_analysis, ml.nlu_classifier, profile.by_sender, strings.icontains. Reference lists: $high_trust_sender_root_domains.
Indicators matched (8)
| Field | Match | Value |
|---|---|---|
body.links[].href_url.domain.domain | member | ncv.microsoft.com |
body.links[].href_url.domain.domain | member | customervoice.microsoft.com |
body.links[].href_url.domain.domain | member | nam.dcv.ms |
ml.link_analysis(body.links[]).final_dom.links[].href_url.domain.domain | equals | cdn.forms.office.net |
strings.icontains | substring | cdn.forms.office.net |
body.links[].href_url.path | equals | /Pages/ResponsePage.aspx |
ml.nlu_classifier(beta.ocr(ml.link_analysis(body.links[]).screenshot).text).intents[].name | equals | cred_theft |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | cred_theft |