Service abuse: Monday.com infrastructure with phishing intent

Detects unauthorized use of Monday.com tracking links in messages, attachments, or QR codes from unusual senders who lack proper authentication. Excludes legitimate replies and messages from trusted domains with valid DMARC.

Sublime rule (View on GitHub)

  1name: "Service abuse: Monday.com infrastructure with phishing intent"
  2description: "Detects unauthorized use of Monday.com tracking links in messages, attachments, or QR codes from unusual senders who lack proper authentication. Excludes legitimate replies and messages from trusted domains with valid DMARC."
  3type: "rule"
  4severity: "high"
  5source: |
  6  type.inbound
  7  and (
  8    (
  9      length(body.links) < 15
 10      and any(body.links,
 11              .href_url.scheme != "mailto"
 12              and (
 13                'monday_tracker' in .href_url.rewrite.encoders
 14                // link is raw url
 15                or .href_url.domain.domain == "trackingservice.monday.com"
 16              )
 17      )
 18    )
 19    or (
 20      length(attachments) <= 3
 21      and (
 22        any(attachments,
 23            (.file_type in $file_types_images or .file_type == "pdf")
 24            //
 25            // This rule makes use of a beta feature and is subject to change without notice
 26            // using the beta feature in custom rules is not suggested until it has been formally released
 27            //
 28            and any(beta.scan_qr(.).items,
 29                    .type is not null
 30                    and 'monday_tracker' in .url.rewrite.encoders
 31                    and .url.scheme != "mailto"
 32            )
 33            //
 34            // This rule makes use of a beta feature and is subject to change without notice
 35            // using the beta feature in custom rules is not suggested until it has been formally released
 36            //
 37            // exclude images taken with mobile cameras and screenshots from android
 38            and not any(beta.parse_exif(.).fields,
 39                        .key == "Model"
 40                        or (
 41                          .key == "Software"
 42                          and strings.starts_with(.value, "Android")
 43                        )
 44            )
 45            // exclude images taken with mobile cameras and screenshots from Apple
 46            and not any(beta.parse_exif(.).fields,
 47                        .key == "DeviceManufacturer"
 48                        and .value == "Apple Computer Inc."
 49            )
 50        )
 51      )
 52    )
 53    or (
 54      length(attachments) == 0
 55      and (
 56        //
 57        // This rule makes use of a beta feature and is subject to change without notice
 58        // using the beta feature in custom rules is not suggested until it has been formally released
 59        //
 60        beta.parse_exif(file.message_screenshot()).image_height < 2000
 61        and beta.parse_exif(file.message_screenshot()).image_width < 2000
 62        and beta.scan_qr(file.message_screenshot()).found
 63        and any(beta.scan_qr(file.message_screenshot()).items,
 64                .type is not null
 65                and 'monday_tracker' in .url.rewrite.encoders
 66                and .url.scheme != "mailto"
 67        )
 68      )
 69    )
 70    or (
 71      length(attachments) <= 3
 72      and (
 73        any(attachments,
 74            (
 75              .file_type in ("pdf")
 76              or .file_extension in ("pdf", "eml")
 77              or .file_extension in $file_extensions_macros
 78              or .content_type in ("message/rfc822")
 79            )
 80            and any(file.explode(.),
 81                    any(.scan.url.urls, 'monday_tracker' in .rewrite.encoders)
 82            )
 83        )
 84      )
 85    )
 86  )
 87  // negate messages that traverse monday.com infra
 88  and not (
 89    any(headers.domains, strings.ends_with(.domain, "mail.monday.com"))
 90    or (
 91      strings.iends_with(headers.message_id, '@monday-mail.com>')
 92      and any(headers.hops,
 93              any(.fields,
 94                  .name =~ "Content-Type"
 95                  and strings.iends_with(.value, 'mondaymailcom_"')
 96              )
 97      )
 98      and any(headers.hops, any(.fields, .name =~ "x-monday-crm"))
 99    )
100  )
101  and not (
102    headers.auth_summary.dmarc.details.from.root_domain == "monday.com"
103    and headers.auth_summary.spf.pass
104    and coalesce(headers.auth_summary.dmarc.pass, false)
105  )
106  and any(ml.nlu_classifier(body.current_thread.text).intents,
107          .name != "benign" and .confidence in ("medium", "high")
108  )
109  // negating legit replies
110  and not (
111    (subject.is_reply or subject.is_forward)
112    and (length(headers.references) > 0 and headers.in_reply_to is not null)
113  )
114  // negate graymail and newsletters
115  and not (
116    any(ml.nlu_classifier(body.current_thread.text).topics,
117        .name in~ (
118          "Advertising and Promotions",
119          "B2B Cold Outreach",
120          "Newsletters and Digests",
121          "Events and Webinars"
122        )
123        and .confidence != "low"
124    )
125  )
126  and (
127    // negate highly trusted sender domains unless they fail DMARC authentication
128    not (
129      sender.email.domain.root_domain in $high_trust_sender_root_domains
130      and coalesce(headers.auth_summary.dmarc.pass, false)
131    )
132    // salesforce has been abused to send phishing campaigns leveraging monday.com infrastructure abuse
133    or sender.email.domain.root_domain in ("salesforce.com")
134  )  
135attack_types:
136  - "Credential Phishing"
137tactics_and_techniques:
138  - "Evasion"
139  - "Social engineering"
140  - "QR code"
141detection_methods:
142  - "Content analysis"
143  - "File analysis"
144  - "Header analysis"
145  - "QR code analysis"
146  - "Sender analysis"
147  - "URL analysis"
148id: "a346e3b1-603e-5ef0-8547-d40ba4282352"
to-top