EXPLORE
← Back to Explore
sublimelowRule

Attachment: Calendar invite from excessive self-reply sender

Detect messages where there are 2 or more previous threads, where all previous messages are self-replies from the same sender, and a calendar invite attachment with a generic online-meeting location. This pattern is observed as excessive unsolicited outreach with disruptive required intervention.

MITRE ATT&CK

initial-access

Detection Query

type.inbound
// previous threads are all self-replies
and (
  (
    length(body.previous_threads) >= 2
    and all(body.previous_threads, .sender.email.email == sender.email.email)
  )
  // negate forwarded messages
  and not (
    (length(headers.references) > 0 or headers.in_reply_to is not null)
    and subject.is_forward
  )
)

// calendar invite present with generic "online location"
and (
  length(attachments) > 0
  and all(attachments,
          (
            .file_type == "ics"
            or .file_extension == "ics"
            or .content_type in ("application/ics", "text/calendar")
          )
          //
          // 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
          //
          and any(beta.file.parse_ics(.).events,
                  strings.icontains(.location, "online meeting")
          )
  )
)

Data Sources

Email MessagesEmail HeadersEmail Attachments

Platforms

email
Raw Content
name: "Attachment: Calendar invite from excessive self-reply sender"
description: "Detect messages where there are 2 or more previous threads, where all previous messages are self-replies from the same sender, and a calendar invite attachment with a generic online-meeting location. This pattern is observed as excessive unsolicited outreach with disruptive required intervention."
type: "rule"
severity: "low"
source: |
  type.inbound
  // previous threads are all self-replies
  and (
    (
      length(body.previous_threads) >= 2
      and all(body.previous_threads, .sender.email.email == sender.email.email)
    )
    // negate forwarded messages
    and not (
      (length(headers.references) > 0 or headers.in_reply_to is not null)
      and subject.is_forward
    )
  )
  
  // calendar invite present with generic "online location"
  and (
    length(attachments) > 0
    and all(attachments,
            (
              .file_type == "ics"
              or .file_extension == "ics"
              or .content_type in ("application/ics", "text/calendar")
            )
            //
            // 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
            //
            and any(beta.file.parse_ics(.).events,
                    strings.icontains(.location, "online meeting")
            )
    )
  )

attack_types:
  - "Spam"
tactics_and_techniques:
  - "Social engineering"
detection_methods:
  - "File analysis"
  - "Header analysis"
  - "Content analysis"
id: "5a9ba97f-715e-5999-84d3-b459c1eb4117"