Detection rules › Sublime MQL
Sublime MQL rules: wordpress
| Rule | Severity |
|---|---|
| Link: WordPress login page with Blogspot Binance scam | medium |
| Suspected WordPress abuse with cross-site scripting (XSS) indicators | high |
Link: WordPress login page with Blogspot Binance scam
#Detects messages containing WordPress login links (/wp-login.php) combined with Blogspot domains and Binance cryptocurrency scam language patterns in the body text.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, BEC/Fraud |
| Tactics and techniques | Social engineering, Free subdomain host, Impersonation: Brand |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and any(body.links, .display_url.path == '/wp-login.php')
and regex.icontains(body.current_thread.text,
'[a-z]{5,10}\.blogspot\.[a-z.]{2,6}\s*-\s*\d[\d\s]*\s*(USD|EURO?)\s*BINANCE'
)
Detection logic
Scope: inbound message.
Detects messages containing WordPress login links (/wp-login.php) combined with Blogspot domains and Binance cryptocurrency scam language patterns in the body text.
- inbound message
any of
body.linkswhere:- .display_url.path is '/wp-login.php'
- body.current_thread.text matches '[a-z]{5,10}\\.blogspot\\.[a-z.]{2,6}\\s*-\\s*\\d[\\d\\s]*\\s*(USD|EURO?)\\s*BINANCE'
Inspects: body.current_thread.text, body.links, body.links[].display_url.path, type.inbound. Sensors: regex.icontains.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
body.links[].display_url.path | equals | /wp-login.php |
regex.icontains | regex | [a-z]{5,10}\.blogspot\.[a-z.]{2,6}\s*-\s*\d[\d\s]*\s*(USD|EURO?)\s*BINANCE |
Stages and Predicates
Stage 1: mql_rule
and
any(body.links)
body.links.display_url.path eq "/wp-login.php"
body.current_thread.text regex_match "[a-z]{5,10}\\.blogspot\\.[a-z.]{2,6}\\s*-\\s*\\d[\\d\\s]*\\s*(USD|EURO?)\\s*BINANCE"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match value:"[a-z]{5,10}.blogspot.[a-z.]{2,6}\s*-\s*\d[\d\s]*\s*(USD|EURO?)\s*BINANCE" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Suspected WordPress abuse with cross-site scripting (XSS) indicators
#Detects inbound messages from likely compromised WordPress sites that exhibit indicators of cross-site scripting (XSS) attempts. The rule identifies potential script injection patterns within message bodies and/or subjects containing multiple suspicious JavaScript-related keywords or indicators.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Malware/Ransomware, Credential Phishing |
| Tactics and techniques | Scripting, Impersonation: Brand, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.local_part == "wordpress"
and (
regex.icontains(body.current_thread.text,
'document\.createElement.{0,9}script'
)
or 2 of (
strings.icount(subject.subject, "script") > 1,
strings.count(subject.subject, '%') >= 4,
strings.count(subject.subject, '\') >= 3,
strings.count(subject.subject, "/") >= 3,
strings.icontains(subject.subject, "xss"),
strings.contains(subject.subject, "CharCode"),
strings.contains(subject.subject, 'onload'),
strings.contains(subject.subject, 'fetch('),
strings.contains(subject.subject, "OnFocus="),
strings.contains(subject.subject, 'javascript:fetch'),
strings.icontains(subject.subject, "src="),
strings.icontains(subject.subject, "iframe"),
strings.icontains(subject.subject, "embed"),
strings.icontains(subject.subject, "object"),
strings.icontains(subject.subject, "onerror"),
strings.icontains(subject.subject, "onclick"),
strings.icontains(subject.subject, "onmouseover"),
strings.icontains(subject.subject, "onmouseout"),
strings.icontains(subject.subject, "onkeydown"),
strings.icontains(subject.subject, "onkeypress"),
strings.icontains(subject.subject, "onkeyup"),
strings.icontains(subject.subject, "onchange"),
strings.icontains(subject.subject, "oninput"),
strings.icontains(subject.subject, "onsubmit"),
regex.icontains(subject.subject, 'eval\b'),
strings.icontains(subject.subject, "alert"),
strings.icontains(subject.subject, "document.cookie"),
strings.icontains(subject.subject, "document.write"),
strings.icontains(subject.subject, "window.location"),
strings.icontains(subject.subject, "setTimeout"),
strings.icontains(subject.subject, "setInterval"),
strings.icontains(subject.subject, "atob"),
strings.icontains(subject.subject, "innerHTML"),
strings.icontains(subject.subject, "outerHTML"),
strings.icontains(subject.subject, "XMLHttpRequest"),
regex.icontains(subject.subject, 'import\b'),
strings.icontains(subject.subject, "execCommand")
)
)
Detection logic
Scope: inbound message.
Detects inbound messages from likely compromised WordPress sites that exhibit indicators of cross-site scripting (XSS) attempts. The rule identifies potential script injection patterns within message bodies and/or subjects containing multiple suspicious JavaScript-related keywords or indicators.
- inbound message
- sender.email.local_part is 'wordpress'
any of:
- body.current_thread.text matches 'document\\.createElement.{0,9}script'
at least 2 of:
- strings.icount(subject.subject, 'script') > 1
- strings.count(subject.subject, '%') ≥ 4
- strings.count(subject.subject, '\\') ≥ 3
- strings.count(subject.subject, '/') ≥ 3
- subject.subject contains 'xss'
- subject.subject contains 'CharCode'
- subject.subject contains 'onload'
- subject.subject contains 'fetch('
- subject.subject contains 'OnFocus='
- subject.subject contains 'javascript:fetch'
- subject.subject contains 'src='
- subject.subject contains 'iframe'
- subject.subject contains 'embed'
- subject.subject contains 'object'
- subject.subject contains 'onerror'
- subject.subject contains 'onclick'
- subject.subject contains 'onmouseover'
- subject.subject contains 'onmouseout'
- subject.subject contains 'onkeydown'
- subject.subject contains 'onkeypress'
- subject.subject contains 'onkeyup'
- subject.subject contains 'onchange'
- subject.subject contains 'oninput'
- subject.subject contains 'onsubmit'
- subject.subject matches 'eval\\b'
- subject.subject contains 'alert'
- subject.subject contains 'document.cookie'
- subject.subject contains 'document.write'
- subject.subject contains 'window.location'
- subject.subject contains 'setTimeout'
- subject.subject contains 'setInterval'
- subject.subject contains 'atob'
- subject.subject contains 'innerHTML'
- subject.subject contains 'outerHTML'
- subject.subject contains 'XMLHttpRequest'
- subject.subject matches 'import\\b'
- subject.subject contains 'execCommand'
Inspects: body.current_thread.text, sender.email.local_part, subject.subject, type.inbound. Sensors: regex.icontains, strings.contains, strings.count, strings.icontains, strings.icount.
Indicators matched (35)
| Field | Match | Value |
|---|---|---|
sender.email.local_part | equals | wordpress |
regex.icontains | regex | document\.createElement.{0,9}script |
strings.icontains | substring | xss |
strings.contains | substring | CharCode |
strings.contains | substring | onload |
strings.contains | substring | fetch( |
strings.contains | substring | OnFocus= |
strings.contains | substring | javascript:fetch |
strings.icontains | substring | src= |
strings.icontains | substring | iframe |
strings.icontains | substring | embed |
strings.icontains | substring | object |
23 more
strings.icontains | substring | onerror |
strings.icontains | substring | onclick |
strings.icontains | substring | onmouseover |
strings.icontains | substring | onmouseout |
strings.icontains | substring | onkeydown |
strings.icontains | substring | onkeypress |
strings.icontains | substring | onkeyup |
strings.icontains | substring | onchange |
strings.icontains | substring | oninput |
strings.icontains | substring | onsubmit |
regex.icontains | regex | eval\b |
strings.icontains | substring | alert |
strings.icontains | substring | document.cookie |
strings.icontains | substring | document.write |
strings.icontains | substring | window.location |
strings.icontains | substring | setTimeout |
strings.icontains | substring | setInterval |
strings.icontains | substring | atob |
strings.icontains | substring | innerHTML |
strings.icontains | substring | outerHTML |
strings.icontains | substring | XMLHttpRequest |
regex.icontains | regex | import\b |
strings.icontains | substring | execCommand |
Stages and Predicates
Stage 1: mql_rule
and
or
body.current_thread.text regex_match "document\\.createElement.{0,9}script"
strings.count func_call "strings.count(subject.subject, \"%\") >= 4"
strings.count func_call "strings.count(subject.subject, \"/\") >= 3"
strings.count func_call "strings.count(subject.subject, \"\\\") >= 3"
strings.icount func_call "strings.icount(subject.subject, \"script\") > 1"
subject.subject contains "CharCode"
subject.subject contains "OnFocus="
subject.subject contains "XMLHttpRequest"
subject.subject contains "alert"
subject.subject contains "atob"
subject.subject contains "document.cookie"
subject.subject contains "document.write"
subject.subject contains "embed"
subject.subject contains "execCommand"
subject.subject contains "fetch("
subject.subject contains "iframe"
subject.subject contains "innerHTML"
subject.subject contains "javascript:fetch"
subject.subject contains "object"
subject.subject contains "onchange"
subject.subject contains "onclick"
subject.subject contains "onerror"
subject.subject contains "oninput"
subject.subject contains "onkeydown"
subject.subject contains "onkeypress"
subject.subject contains "onkeyup"
subject.subject contains "onload"
subject.subject contains "onmouseout"
subject.subject contains "onmouseover"
subject.subject contains "onsubmit"
subject.subject contains "outerHTML"
subject.subject contains "setInterval"
subject.subject contains "setTimeout"
subject.subject contains "src="
subject.subject contains "window.location"
subject.subject contains "xss"
subject.subject regex_match "eval\\b"
subject.subject regex_match "import\\b"
sender.email.local_part eq "wordpress"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match value:"document.createElement.{0,9}script" |
sender.email.local_part | eq |
| field:"sender.email.local_part" kind:eq value:"wordpress" |
subject.subject | contains |
| field:"subject.subject" kind:contains |
subject.subject | regex_match |
| field:"subject.subject" kind:regex_match |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |