Detection rules › Sublime MQL

Attachment: Suspicious employee policy update document lure

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

Inbound message containing subject line and attachments related to handbook, compensation, or policy updates. Attachments are limited to Microsoft Word documents and match similar update-related terminology. This pattern has been observed used to delivery credential phishing via QR codes.

Threat classification

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

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesPDF, Social engineering, Evasion

Event coverage

Rule body MQL

type.inbound
// NOTE: This rule is designed for these values to match/sync subject.base and file names
and (
  // the subject contains pay related items
  (
    strings.icontains(subject.base, 'salary')
    or regex.icontains(subject.base, '\bpay(?:out|roll|\b)')
    or strings.icontains(subject.base, 'remuneration')
    or strings.icontains(subject.base, 'bonus')
    or strings.icontains(subject.base, 'incentive')
    or strings.icontains(subject.base, 'merit\b')
    or strings.icontains(subject.base, 'handbook')
    or strings.icontains(subject.base, 'benefits')
    or strings.icontains(subject.base, 'earnings')
    or strings.icontains(subject.base, 'contract')
    or regex.icontains(subject.base, 'empl[o0]yment')
  )
  and (
    strings.icontains(subject.base, 'review')
    or strings.icontains(subject.base, 'breakdown')
    or strings.icontains(subject.base, 'Access Your')
    or strings.icontains(subject.base, 'evaluation')
    or regex.icontains(subject.base, 'eval\b')
    or strings.icontains(subject.base, 'assessment')
    or strings.icontains(subject.base, 'appraisal')
    or strings.icontains(subject.base, 'feedback')
    or strings.icontains(subject.base, 'performance')
    or strings.icontains(subject.base, 'adjustment')
    or strings.icontains(subject.base, 'qualification')
    or strings.icontains(subject.base, 'increase')
    or strings.icontains(subject.base, 'raise')
    or strings.icontains(subject.base, 'change')
    or strings.icontains(subject.base, 'modification')
    or strings.icontains(subject.base, 'distribution')
    or strings.icontains(subject.base, 'details')
    or regex.icontains(subject.base, 'revis(?:ed|ion)')
    or regex.icontains(subject.base, 'amend(?:ed|ment)')
    or regex.icontains(subject.base, 'update(?:d| to)')
    or strings.icontains(subject.base, 'plan')
    or strings.icontains(subject.base, 'notification')
  )
)
and 0 < length(attachments) <= 3
and any(attachments,
        .file_extension in ("doc", "docx", "docm", "pdf", "pptx")
        and (
          strings.icontains(.file_name, 'salary')
          or strings.icontains(.file_name, 'compensation')
          or regex.icontains(.file_name, '\bpay(?:roll|\b)')
          or strings.icontains(.file_name, 'bonus')
          or strings.icontains(.file_name, 'incentive')
          or strings.icontains(.file_name, 'merit\b')
          or strings.icontains(.file_name, 'handbook')
          or strings.icontains(.file_name, 'benefits')
          or regex.icontains(.file_name, 'empl[o0]yment')
        )
        and (
          strings.icontains(.file_name, 'review')
          or strings.icontains(.file_name, 'evaluation')
          or regex.icontains(.file_name, 'eval\b')
          or strings.icontains(.file_name, 'assessment')
          or strings.icontains(.file_name, 'appraisal')
          or strings.icontains(.file_name, 'feedback')
          or strings.icontains(.file_name, 'performance')
          or strings.icontains(.file_name, 'adjustment')
          or strings.icontains(.file_name, 'increase')
          or strings.icontains(.file_name, 'increment')
          or strings.icontains(.file_name, 'raise')
          or strings.icontains(.file_name, 'change')
          or strings.icontains(.file_name, 'modification')
          or strings.icontains(.file_name, 'distribution')
          or strings.icontains(.file_name, 'statement')
          or regex.icontains(.file_name, 'revis(?:ed|ion)')
          or regex.icontains(.file_name, 'amend(?:ed|ment)')
          or regex.icontains(.file_name, 'adjust(?:ed|ment)')
          or regex.icontains(.file_name, 'update(?:d| to)')
          or regex.icontains(.file_name,
                             '(January|February|March|April|May|June|July|August|September|October|November|December)\s20[2,3]{1}\d{1}'
          )
          or strings.icontains(.file_name, 'contract')
          or (
            // file name contains recipient's email
            any(recipients.to,
                strings.icontains(..file_name, .email.email)
                and .email.domain.valid
            )
          )
        )
)
and not (
  sender.email.domain.root_domain in $high_trust_sender_root_domains
  and coalesce(headers.auth_summary.dmarc.pass, false)
)

Detection logic

Scope: inbound message.

Inbound message containing subject line and attachments related to handbook, compensation, or policy updates. Attachments are limited to Microsoft Word documents and match similar update-related terminology. This pattern has been observed used to delivery credential phishing via QR codes.

  1. inbound message
  2. all of:
    • any of:
      • subject.base contains 'salary'
      • subject.base matches '\\bpay(?:out|roll|\\b)'
      • subject.base contains 'remuneration'
      • subject.base contains 'bonus'
      • subject.base contains 'incentive'
      • subject.base contains 'merit\\b'
      • subject.base contains 'handbook'
      • subject.base contains 'benefits'
      • subject.base contains 'earnings'
      • subject.base contains 'contract'
      • subject.base matches 'empl[o0]yment'
    • any of:
      • subject.base contains 'review'
      • subject.base contains 'breakdown'
      • subject.base contains 'Access Your'
      • subject.base contains 'evaluation'
      • subject.base matches 'eval\\b'
      • subject.base contains 'assessment'
      • subject.base contains 'appraisal'
      • subject.base contains 'feedback'
      • subject.base contains 'performance'
      • subject.base contains 'adjustment'
      • subject.base contains 'qualification'
      • subject.base contains 'increase'
      • subject.base contains 'raise'
      • subject.base contains 'change'
      • subject.base contains 'modification'
      • subject.base contains 'distribution'
      • subject.base contains 'details'
      • subject.base matches 'revis(?:ed|ion)'
      • subject.base matches 'amend(?:ed|ment)'
      • subject.base matches 'update(?:d| to)'
      • subject.base contains 'plan'
      • subject.base contains 'notification'
  3. all of:
    • length(attachments) > 0
    • length(attachments) ≤ 3
  4. any of attachments where all hold:
    • .file_extension in ('doc', 'docx', 'docm', 'pdf', 'pptx')
    • any of:
      • .file_name contains 'salary'
      • .file_name contains 'compensation'
      • .file_name matches '\\bpay(?:roll|\\b)'
      • .file_name contains 'bonus'
      • .file_name contains 'incentive'
      • .file_name contains 'merit\\b'
      • .file_name contains 'handbook'
      • .file_name contains 'benefits'
      • .file_name matches 'empl[o0]yment'
    • any of:
      • .file_name contains 'review'
      • .file_name contains 'evaluation'
      • .file_name matches 'eval\\b'
      • .file_name contains 'assessment'
      • .file_name contains 'appraisal'
      • .file_name contains 'feedback'
      • .file_name contains 'performance'
      • .file_name contains 'adjustment'
      • .file_name contains 'increase'
      • .file_name contains 'increment'
      • .file_name contains 'raise'
      • .file_name contains 'change'
      • .file_name contains 'modification'
      • .file_name contains 'distribution'
      • .file_name contains 'statement'
      • .file_name matches 'revis(?:ed|ion)'
      • .file_name matches 'amend(?:ed|ment)'
      • .file_name matches 'adjust(?:ed|ment)'
      • .file_name matches 'update(?:d| to)'
      • .file_name matches '(January|February|March|April|May|June|July|August|September|October|November|December)\\s20[2,3]{1}\\d{1}'
      • .file_name contains 'contract'
      • any of recipients.to where all hold:
        • strings.icontains(.file_name)
        • .email.domain.valid
  5. not:
    • all of:
      • sender.email.domain.root_domain in $high_trust_sender_root_domains
      • coalesce(headers.auth_summary.dmarc.pass)

Inspects: attachments[].file_extension, attachments[].file_name, headers.auth_summary.dmarc.pass, recipients.to, recipients.to[].email.domain.valid, recipients.to[].email.email, sender.email.domain.root_domain, subject.base, type.inbound. Sensors: regex.icontains, strings.icontains. Reference lists: $high_trust_sender_root_domains.

Indicators matched (44)

FieldMatchValue
strings.icontainssubstringsalary
regex.icontainsregex\bpay(?:out|roll|\b)
strings.icontainssubstringremuneration
strings.icontainssubstringbonus
strings.icontainssubstringincentive
strings.icontainssubstringmerit\b
strings.icontainssubstringhandbook
strings.icontainssubstringbenefits
strings.icontainssubstringearnings
strings.icontainssubstringcontract
regex.icontainsregexempl[o0]yment
strings.icontainssubstringreview
32 more
strings.icontainssubstringbreakdown
strings.icontainssubstringAccess Your
strings.icontainssubstringevaluation
regex.icontainsregexeval\b
strings.icontainssubstringassessment
strings.icontainssubstringappraisal
strings.icontainssubstringfeedback
strings.icontainssubstringperformance
strings.icontainssubstringadjustment
strings.icontainssubstringqualification
strings.icontainssubstringincrease
strings.icontainssubstringraise
strings.icontainssubstringchange
strings.icontainssubstringmodification
strings.icontainssubstringdistribution
strings.icontainssubstringdetails
regex.icontainsregexrevis(?:ed|ion)
regex.icontainsregexamend(?:ed|ment)
regex.icontainsregexupdate(?:d| to)
strings.icontainssubstringplan
strings.icontainssubstringnotification
attachments[].file_extensionmemberdoc
attachments[].file_extensionmemberdocx
attachments[].file_extensionmemberdocm
attachments[].file_extensionmemberpdf
attachments[].file_extensionmemberpptx
strings.icontainssubstringcompensation
regex.icontainsregex\bpay(?:roll|\b)
strings.icontainssubstringincrement
strings.icontainssubstringstatement
regex.icontainsregexadjust(?:ed|ment)
regex.icontainsregex(January|February|March|April|May|June|July|August|September|October|November|December)\s20[2,3]{1}\d{1}