EXPLORE
← Back to Explore
sublimemediumRule

Link: Credential phishing link with undisclosed recipients

This rule detects messages with "Undisclosed Recipients" that contain a link to a credential phishing page.

MITRE ATT&CK

defense-evasion

Detection Query

type.inbound
and (
  // No Recipients
  length(recipients.to) == 0
  or all(recipients.to, .display_name == "Undisclosed recipients")
)
and length(recipients.cc) == 0
and length(recipients.bcc) == 0
and (
  any(body.links,
      ml.link_analysis(.).credphish.disposition == "phishing"
      and ml.link_analysis(.).credphish.confidence in ("medium", "high")
  )
  or any(body.current_thread.links,
         regex.icount(.href_url.path, '\.[a-z]{2,}/') >= 2
         and not strings.icontains(.href_url.path, .href_url.domain.root_domain)
  )
)
// negate highly trusted sender domains unless they fail DMARC authentication
and not (
  sender.email.domain.root_domain in $high_trust_sender_root_domains
  and coalesce(headers.auth_summary.dmarc.pass, false)
)
and not profile.by_sender().solicited
and not profile.by_sender().any_messages_benign

Data Sources

Email MessagesEmail HeadersEmail Attachments

Platforms

email
Raw Content
name: "Link: Credential phishing link with undisclosed recipients"
description: |
  This rule detects messages with "Undisclosed Recipients" that contain a link to a credential phishing page. 
type: "rule"
severity: "medium"
source: |
  type.inbound
  and (
    // No Recipients
    length(recipients.to) == 0
    or all(recipients.to, .display_name == "Undisclosed recipients")
  )
  and length(recipients.cc) == 0
  and length(recipients.bcc) == 0
  and (
    any(body.links,
        ml.link_analysis(.).credphish.disposition == "phishing"
        and ml.link_analysis(.).credphish.confidence in ("medium", "high")
    )
    or any(body.current_thread.links,
           regex.icount(.href_url.path, '\.[a-z]{2,}/') >= 2
           and not strings.icontains(.href_url.path, .href_url.domain.root_domain)
    )
  )
  // negate highly trusted sender domains unless they fail DMARC authentication
  and not (
    sender.email.domain.root_domain in $high_trust_sender_root_domains
    and coalesce(headers.auth_summary.dmarc.pass, false)
  )
  and not profile.by_sender().solicited
  and not profile.by_sender().any_messages_benign

attack_types:
  - "Credential Phishing"
tactics_and_techniques:
  - "Evasion"
detection_methods:
  - "Computer Vision"
  - "Header analysis"
  - "URL screenshot"
id: "06fc155e-f779-50a7-ad5f-3c3777fbf8f5"