Constant Contact link infrastructure abuse

Email contains a Constant Contact (mass mailing platform) tracking link but does not originate from Constant Contact sending infrastructure. The rs6.net domain has been abused by threat actors to attempt credential phishing.

Sublime rule (View on GitHub)

  1name: "Constant Contact link infrastructure abuse"
  2description: "Email contains a Constant Contact (mass mailing platform) tracking link but does not originate from Constant Contact sending infrastructure. The rs6.net domain has been abused by threat actors to attempt credential phishing."
  3type: "rule"
  4severity: "high"
  5source: |
  6  type.inbound
  7  and (
  8    (
  9      length(body.links) < 15
 10      and any(body.links,
 11              .href_url.domain.root_domain in (
 12                "rs6.net",
 13                "constantcontactpages.com"
 14              )
 15      )
 16    )
 17    or (
 18      length(attachments) <= 3
 19      and (
 20        any(attachments,
 21            (.file_type in $file_types_images or .file_type == "pdf")
 22            //
 23            // This rule makes use of a beta feature and is subject to change without notice
 24            // using the beta feature in custom rules is not suggested until it has been formally released
 25            //
 26            and any(beta.scan_qr(.).items,
 27                    .type is not null
 28                    and .url.domain.root_domain in (
 29                      "rs6.net",
 30                      "constantcontactpages.com"
 31                    )
 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        or (
 52          length(attachments) == 0
 53          and (
 54            //
 55            // This rule makes use of a beta feature and is subject to change without notice
 56            // using the beta feature in custom rules is not suggested until it has been formally released
 57            //
 58            beta.parse_exif(file.message_screenshot()).image_height < 2000
 59            and beta.parse_exif(file.message_screenshot()).image_width < 2000
 60            and beta.scan_qr(file.message_screenshot()).found
 61            and any(beta.scan_qr(file.message_screenshot()).items,
 62                    .type is not null and .url.domain.root_domain == "rs6.net"
 63            )
 64          )
 65        )
 66      )
 67    )
 68  )
 69  and not (
 70    any(headers.hops,
 71        strings.icontains(.authentication_results.spf_details.designator,
 72                          "constantcontact.com"
 73        )
 74    )
 75    or any(headers.hops,
 76           strings.icontains(.received_spf.designator, "constantcontact.com")
 77    )
 78    or (
 79      (
 80        any(headers.hops,
 81            any(.authentication_results.dkim_details,
 82                .domain == "auth.ccsend.com"
 83            )
 84        )
 85      )
 86      and headers.auth_summary.dmarc.pass
 87    )
 88    or any(headers.references, strings.iends_with(., "ccsend.com"))
 89  )
 90  // negating legit replies
 91  and not (
 92    (
 93      strings.istarts_with(subject.subject, "RE:")
 94      or strings.istarts_with(subject.subject, "FW:")
 95      or strings.istarts_with(subject.subject, "FWD:")
 96      or strings.istarts_with(subject.subject, "Automatic reply:")
 97      or regex.imatch(subject.subject,
 98                      '(\[[^\]]+\]\s?){0,3}(re|fwd?|automat.*)\s?:.*'
 99      )
100    )
101    and (length(headers.references) > 0 or headers.in_reply_to is not null)
102  )
103  // negate highly trusted sender domains unless they fail DMARC authentication
104  and (
105    (
106      sender.email.domain.root_domain in $high_trust_sender_root_domains
107      and not headers.auth_summary.dmarc.pass
108    )
109    or sender.email.domain.root_domain not in $high_trust_sender_root_domains
110  )
111  and profile.by_sender().prevalence in ("new", "outlier", "rare")  
112attack_types:
113  - "Credential Phishing"
114tactics_and_techniques:
115  - "Free email provider"
116  - "Open redirect"
117  - "Social engineering"
118detection_methods:
119  - "Content analysis"
120  - "Header analysis"
121  - "QR code analysis"
122  - "Sender analysis"
123id: "8c5e8e4c-c610-5ece-b82a-214c637cba09"
to-top