Detection rules › Sublime MQL
Attachment: HTML smuggling with fromCharCode and other signals
Recursively scans files and archives to detect HTML smuggling techniques.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Evasion, HTML smuggling, Scripting |
Event coverage
| Message attribute |
|---|
| attachments (collection) |
| type |
Rule body MQL
type.inbound
and any(attachments,
(
.file_extension in~ ("html", "htm", "shtml", "dhtml")
or .file_extension in~ $file_extensions_common_archives
or .file_type == "html"
)
and any(file.explode(.),
length(.scan.javascript.identifiers) < 100
and "location" in .scan.javascript.identifiers
and "charCodeAt" in .scan.javascript.identifiers
and "fromCharCode" in .scan.javascript.identifiers
and "indexOf" in .scan.javascript.identifiers
and "try" in .scan.javascript.keywords
and "catch" in .scan.javascript.keywords
)
)
Detection logic
Scope: inbound message.
Recursively scans files and archives to detect HTML smuggling techniques.
- inbound message
any of
attachmentswhere all hold:any of:
- .file_extension in ('html', 'htm', 'shtml', 'dhtml')
- .file_extension in $file_extensions_common_archives
- .file_type is 'html'
any of
file.explode(.)where all hold:- length(.scan.javascript.identifiers) < 100
- .scan.javascript.identifiers contains 'location'
- .scan.javascript.identifiers contains 'charCodeAt'
- .scan.javascript.identifiers contains 'fromCharCode'
- .scan.javascript.identifiers contains 'indexOf'
- .scan.javascript.keywords contains 'try'
- .scan.javascript.keywords contains 'catch'
Inspects: attachments[].file_extension, attachments[].file_type, type.inbound. Sensors: file.explode. Reference lists: $file_extensions_common_archives.
Indicators matched (11)
| Field | Match | Value |
|---|---|---|
attachments[].file_extension | member | html |
attachments[].file_extension | member | htm |
attachments[].file_extension | member | shtml |
attachments[].file_extension | member | dhtml |
attachments[].file_type | equals | html |
file.explode(attachments[])[].scan.javascript.identifiers | contains | location |
file.explode(attachments[])[].scan.javascript.identifiers | contains | charCodeAt |
file.explode(attachments[])[].scan.javascript.identifiers | contains | fromCharCode |
file.explode(attachments[])[].scan.javascript.identifiers | contains | indexOf |
file.explode(attachments[])[].scan.javascript.keywords | contains | try |
file.explode(attachments[])[].scan.javascript.keywords | contains | catch |