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"
macro "2 of (\n strings.icount(subject.subject, \"script\") > 1,\n strings.count(subject.subject, '%') >= 4,\n strings.count(subject.subject, '\\') >= 3,\n strings.count(subject.subject, \"/\") >= 3,\n strings.icontains(subject.subject, \"xss\"),\n strings.contains(subject.subject, \"CharCode\"),\n strings.contains(subject.subject, 'onload'),\n strings.contains(subject.subject, 'fetch('),\n strings.contains(subject.subject, \"OnFocus=\"),\n strings.contains(subject.subject, 'javascript:fetch'),\n strings.icontains(subject.subject, \"src=\"),\n strings.icontains(subject.subject, \"iframe\"),\n strings.icontains(subject.subject, \"embed\"),\n strings.icontains(subject.subject, \"object\"),\n strings.icontains(subject.subject, \"onerror\"),\n strings.icontains(subject.subject, \"onclick\"),\n strings.icontains(subject.subject, \"onmouseover\"),\n strings.icontains(subject.subject, \"onmouseout\"),\n strings.icontains(subject.subject, \"onkeydown\"),\n strings.icontains(subject.subject, \"onkeypress\"),\n strings.icontains(subject.subject, \"onkeyup\"),\n strings.icontains(subject.subject, \"onchange\"),\n strings.icontains(subject.subject, \"oninput\"),\n strings.icontains(subject.subject, \"onsubmit\"),\n regex.icontains(subject.subject, 'eval\\b'),\n strings.icontains(subject.subject, \"alert\"),\n strings.icontains(subject.subject, \"document.cookie\"),\n strings.icontains(subject.subject, \"document.write\"),\n strings.icontains(subject.subject, \"window.location\"),\n strings.icontains(subject.subject, \"setTimeout\"),\n strings.icontains(subject.subject, \"setInterval\"),\n strings.icontains(subject.subject, \"atob\"),\n strings.icontains(subject.subject, \"innerHTML\"),\n strings.icontains(subject.subject, \"outerHTML\"),\n strings.icontains(subject.subject, \"XMLHttpRequest\"),\n regex.icontains(subject.subject, 'import\\b'),\n strings.icontains(subject.subject, \"execCommand\")\n )"
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" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |