Detection rules › Sublime MQL

Attachment: Fake Slack installer

Severity
high
Type
rule
Source
github.com/sublime-security/sublime-rules

HTML attachment contains a Slack logo, request language, and a link to an executable. Observed in the wild.

Threat classification

Sublime's own taxonomy (not MITRE ATT&CK).

CategoryValues
Attack typesMalware/Ransomware
Tactics and techniquesEvasion, HTML smuggling, Impersonation: Brand, Scripting, Social engineering

Event coverage

Rule body MQL

type.inbound
and (
  any(attachments,
      (
        .file_extension in~ ("html", "htm", "shtml", "dhtml")
        or .file_type == "html"
        or .content_type == "text/html"
      )
      and any(ml.logo_detect(file.html_screenshot(.)).brands,
              .name == "Slack" and .confidence in ("medium", "high")
      )
      and any(ml.nlu_classifier(file.parse_html(.).display_text).entities,
              .name == "request" and .text =~ "download"
      )
      and any(file.explode(.),
              any(.scan.url.urls,
                  strings.iends_with(.path, ".exe")
                  and .domain.root_domain not in $org_domains
              )
      )
  )
)

Detection logic

Scope: inbound message.

HTML attachment contains a Slack logo, request language, and a link to an executable. Observed in the wild.

  1. inbound message
  2. any of attachments where all hold:
    • any of:
      • .file_extension in ('html', 'htm', 'shtml', 'dhtml')
      • .file_type is 'html'
      • .content_type is 'text/html'
    • any of ml.logo_detect(file.html_screenshot(.)).brands where all hold:
      • .name is 'Slack'
      • .confidence in ('medium', 'high')
    • any of ml.nlu_classifier(file.parse_html(.).display_text).entities where all hold:
      • .name is 'request'
      • .text is 'download'
    • any of file.explode(.) where:
      • any of .scan.url.urls where all hold:
        • .path ends with '.exe'
        • .domain.root_domain not in $org_domains

Inspects: attachments[].content_type, attachments[].file_extension, attachments[].file_type, type.inbound. Sensors: file.explode, file.html_screenshot, file.parse_html, ml.logo_detect, ml.nlu_classifier, strings.iends_with. Reference lists: $org_domains.

Indicators matched (12)

FieldMatchValue
attachments[].file_extensionmemberhtml
attachments[].file_extensionmemberhtm
attachments[].file_extensionmembershtml
attachments[].file_extensionmemberdhtml
attachments[].file_typeequalshtml
attachments[].content_typeequalstext/html
ml.logo_detect(file.html_screenshot(attachments[])).brands[].nameequalsSlack
ml.logo_detect(file.html_screenshot(attachments[])).brands[].confidencemembermedium
ml.logo_detect(file.html_screenshot(attachments[])).brands[].confidencememberhigh
ml.nlu_classifier(file.parse_html(attachments[]).display_text).entities[].nameequalsrequest
ml.nlu_classifier(file.parse_html(attachments[]).display_text).entities[].textequalsdownload
strings.iends_withsuffix.exe