Detection rules › Sublime MQL

Service abuse: QuickBooks notification from new domain

Severity
medium
Type
rule
Source
github.com/sublime-security/sublime-rules

This Attack Surface Reduction (ASR) rule matches on QuickBooks notifications with recently registered reply-to domains.

Threat classification

Sublime's own taxonomy (not MITRE ATT&CK).

CategoryValues
Attack typesCallback Phishing, Credential Phishing, BEC/Fraud
Tactics and techniquesEvasion, Social engineering

Event coverage

Rule body MQL

type.inbound

// Legitimate Intuit sending infratructure
and sender.email.email == "quickbooks@notification.intuit.com"
and headers.auth_summary.spf.pass
and headers.auth_summary.dmarc.pass
and strings.ends_with(headers.auth_summary.spf.details.designator,
                      '.intuit.com'
)

// remove payment confirmation messages
and not strings.starts_with(subject.subject, 'Payment confirmation:')

// the message needs to have a reply-to address
and length(headers.reply_to) > 0

// 
// 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 email address has never been sent an email by the org
and not beta.profile.by_reply_to().solicited

// do not match if the reply_to address has been observed as a reply_to address
// of a message that has been classified as benign
and not beta.profile.by_reply_to().any_messages_benign

// new reply-to
and any(headers.reply_to, network.whois(.email.domain).days_old < 30)

Detection logic

Scope: inbound message.

This Attack Surface Reduction (ASR) rule matches on QuickBooks notifications with recently registered reply-to domains.

  1. inbound message
  2. sender.email.email is 'quickbooks@notification.intuit.com'
  3. headers.auth_summary.spf.pass
  4. headers.auth_summary.dmarc.pass
  5. headers.auth_summary.spf.details.designator ends with '.intuit.com'
  6. not:
    • subject.subject starts with 'Payment confirmation:'
  7. length(headers.reply_to) > 0
  8. not:
    • beta.profile.by_reply_to().solicited
  9. not:
    • beta.profile.by_reply_to().any_messages_benign
  10. any of headers.reply_to where:
    • network.whois(.email.domain).days_old < 30

Inspects: headers.auth_summary.dmarc.pass, headers.auth_summary.spf.details.designator, headers.auth_summary.spf.pass, headers.reply_to, headers.reply_to[].email.domain, sender.email.email, subject.subject, type.inbound. Sensors: beta.profile.by_reply_to, network.whois, strings.ends_with, strings.starts_with.

Indicators matched (3)

FieldMatchValue
sender.email.emailequalsquickbooks@notification.intuit.com
strings.ends_withsuffix.intuit.com
strings.starts_withprefixPayment confirmation: