Detection rules › Sublime MQL
Open redirect: Club-OS
Message contains use of the Club-OS open redirect. This has been exploited in the wild.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Open redirect |
Event coverage
| Message attribute |
|---|
| body |
| body.links (collection) |
| headers.auth_summary |
| sender.email |
| type |
Rule body MQL
type.inbound
and any(body.links,
.href_url.domain.root_domain == "club-os.com"
and strings.icontains(.href_url.path, 'click')
and strings.icontains(.href_url.query_params, 'target=')
// negate hash lookup targets (not actor controlled)
and not (
regex.icontains(.href_url.query_params, 'target=[a-f0-9]{40}(?:$|&)')
and strings.icontains(.href_url.query_params, '&hashLookup=true')
)
// negate urls that go back to club-os
and not regex.icontains(.href_url.query_params,
'target=[^\&]*club-os.com/'
)
)
// negate highly trusted sender domains unless they fail DMARC authentication
and (
(
sender.email.domain.root_domain in $high_trust_sender_root_domains
and not headers.auth_summary.dmarc.pass
)
or sender.email.domain.root_domain not in $high_trust_sender_root_domains
)
Detection logic
Scope: inbound message.
Message contains use of the Club-OS open redirect. This has been exploited in the wild.
- inbound message
any of
body.linkswhere all hold:- .href_url.domain.root_domain is 'club-os.com'
- .href_url.path contains 'click'
- .href_url.query_params contains 'target='
not:
all of:
- .href_url.query_params matches 'target=[a-f0-9]{40}(?:$|&)'
- .href_url.query_params contains '&hashLookup=true'
not:
- .href_url.query_params matches 'target=[^\\&]*club-os.com/'
any of:
all of:
- sender.email.domain.root_domain in $high_trust_sender_root_domains
not:
- headers.auth_summary.dmarc.pass
- sender.email.domain.root_domain not in $high_trust_sender_root_domains
Inspects: body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.path, body.links[].href_url.query_params, headers.auth_summary.dmarc.pass, sender.email.domain.root_domain, type.inbound. Sensors: regex.icontains, strings.icontains. Reference lists: $high_trust_sender_root_domains.
Indicators matched (6)
| Field | Match | Value |
|---|---|---|
body.links[].href_url.domain.root_domain | equals | club-os.com |
strings.icontains | substring | click |
strings.icontains | substring | target= |
regex.icontains | regex | target=[a-f0-9]{40}(?:$|&) |
strings.icontains | substring | &hashLookup=true |
regex.icontains | regex | target=[^\&]*club-os.com/ |