Detection rules › Sublime MQL

Attachment: Archive containing disallowed file type

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

Recursively scans archives to detect disallowed file types. File extensions can be detected within password-protected archives. Attackers often embed malicious files within archives to bypass email gateway controls.

Threat classification

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

CategoryValues
Attack typesMalware/Ransomware
Tactics and techniquesEvasion

Event coverage

Rule body MQL

type.inbound
and any(attachments,
        (
          .file_extension in~ $file_extensions_common_archives
          or .file_type == "rar"
        )
        and any(file.explode(.),
                .file_extension in~ (
                  // File types blocked by Gmail by default
                  // https://support.google.com/mail/answer/6590?hl=en#zippy=%2Cmessages-that-have-attachments
                  "ade",
                  "adp",
                  "apk",
                  "appx",
                  "appxbundle",
                  "bat",
                  "cab",
                  "chm",
                  "cmd",
                  "com",
                  "cpl",
                  "dll",
                  "dmg",
                  "ex",
                  "ex_",
                  "exe",
                  "hta",
                  "ins",
                  "isp",
                  "iso",
                  "jar",
                  "js",
                  "jse",
                  "lib",
                  "lnk",
                  "mde",
                  "msc",
                  "msi",
                  "msix",
                  "msixbundle",
                  "msp",
                  "mst",
                  "nsh",
                  "pif",
                  "ps1",
                  "scr",
                  "sct",
                  "shb",
                  "sys",
                  "vb",
                  "vbe",
                  "vbs",
                  "vxd",
                  "wsc",
                  "wsf",
                  "wsh",

                  // File types blocked by Microsoft 365 by default
                  // https://support.microsoft.com/en-us/office/blocked-attachments-in-outlook-434752e1-02d3-4e90-9124-8b81e49a8519
                  "ade",
                  "adp",
                  "app",
                  "application",
                  "appref-ms",
                  "asp",
                  "aspx",
                  "asx",
                  // "bas", excluded at depth > 1 because they can exist natively in word docs within an archive. see below
                  "bat",
                  "bgi",
                  "cab",
                  // "cer",
                  "chm",
                  "cmd",
                  "cnt",
                  "com",
                  "cpl",
                  // "crt",
                  // "csh",
                  // "der",
                  "diagcab",
                  "exe",
                  "fxp",
                  "gadget",
                  // "grp",
                  "hlp",
                  "hpj",
                  "hta",
                  "htc",
                  // "inf",
                  "ins",
                  "iso",
                  "isp",
                  "its",
                  "jar",
                  "jnlp",
                  "js",
                  "jse",
                  "ksh",
                  "lnk",
                  "mad",
                  "maf",
                  "mag",
                  "mam",
                  "maq",
                  "mar",
                  "mas",
                  "mat",
                  "mau",
                  "mav",
                  "maw",
                  "mcf",
                  "mda",
                  // "mdb",
                  "mde",
                  "mdt",
                  "mdw",
                  "mdz",
                  "msc",
                  "msh",
                  "msh1",
                  "msh2",
                  "mshxml",
                  "msh1xml",
                  "msh2xml",
                  "msi",
                  "msp",
                  "mst",
                  "msu",
                  "ops",
                  "osd",
                  "pcd",
                  "pif",
                  "pl",
                  "plg",
                  "prf",
                  "prg",
                  "printerexport",
                  "ps1",
                  "ps1xml",
                  "ps2",
                  "ps2xml",
                  "psc1",
                  "psc2",
                  "psd1",
                  "psdm1",
                  "pst",
                  // "py",
                  // "pyc",
                  "pyo",
                  "pyw",
                  "pyz",
                  "pyzw",
                  "reg",
                  "scf",
                  "scr",
                  "sct",
                  "shb",
                  "shs",
                  "theme",
                  // "tmp",
                  "url",
                  "vb",
                  "vbe",
                  "vbp",
                  "vbs",
                  "vhd",
                  "vhdx",
                  "vsmacros",
                  "vsw",
                  "webpnp",
                  "website",
                  "ws",
                  "wsc",
                  "wsf",
                  "wsh",
                  "xbap",
                  "xll",
                  "xnk"
                )
                or (
                  // BASIC files can naturally occur in word docs,
                  // so only flag if depth is 1 (archive -> bas, not archive -> doc -> bas)
                  .depth == 1
                  and .file_extension =~ "bas"
                )
        )
)
and (
  profile.by_sender().prevalence in ("new", "outlier")
  or profile.by_sender().any_messages_malicious_or_spam
)
and not profile.by_sender().any_messages_benign

Detection logic

Scope: inbound message.

Recursively scans archives to detect disallowed file types. File extensions can be detected within password-protected archives. Attackers often embed malicious files within archives to bypass email gateway controls.

  1. inbound message
  2. any of attachments where all hold:
    • any of:
      • .file_extension in $file_extensions_common_archives
      • .file_type is 'rar'
    • any of file.explode(.) where any holds:
      • .file_extension in ('ade', 'adp', 'apk', 'appx', 'appxbundle', 'bat', 'cab', 'chm', 'cmd', 'com', 'cpl', 'dll', 'dmg', 'ex', 'ex_', 'exe', 'hta', 'ins', 'isp', 'iso', 'jar', 'js', 'jse', 'lib', 'lnk', 'mde', 'msc', 'msi', 'msix', 'msixbundle', 'msp', 'mst', 'nsh', 'pif', 'ps1', 'scr', 'sct', 'shb', 'sys', 'vb', 'vbe', 'vbs', 'vxd', 'wsc', 'wsf', 'wsh', 'ade', 'adp', 'app', 'application', 'appref-ms', 'asp', 'aspx', 'asx', 'bat', 'bgi', 'cab', 'chm', 'cmd', 'cnt', 'com', 'cpl', 'diagcab', 'exe', 'fxp', 'gadget', 'hlp', 'hpj', 'hta', 'htc', 'ins', 'iso', 'isp', 'its', 'jar', 'jnlp', 'js', 'jse', 'ksh', 'lnk', 'mad', 'maf', 'mag', 'mam', 'maq', 'mar', 'mas', 'mat', 'mau', 'mav', 'maw', 'mcf', 'mda', 'mde', 'mdt', 'mdw', 'mdz', 'msc', 'msh', 'msh1', 'msh2', 'mshxml', 'msh1xml', 'msh2xml', 'msi', 'msp', 'mst', 'msu', 'ops', 'osd', 'pcd', 'pif', 'pl', 'plg', 'prf', 'prg', 'printerexport', 'ps1', 'ps1xml', 'ps2', 'ps2xml', 'psc1', 'psc2', 'psd1', 'psdm1', 'pst', 'pyo', 'pyw', 'pyz', 'pyzw', 'reg', 'scf', 'scr', 'sct', 'shb', 'shs', 'theme', 'url', 'vb', 'vbe', 'vbp', 'vbs', 'vhd', 'vhdx', 'vsmacros', 'vsw', 'webpnp', 'website', 'ws', 'wsc', 'wsf', 'wsh', 'xbap', 'xll', 'xnk')
      • all of:
        • .depth is 1
        • .file_extension is 'bas'
  3. any of:
    • profile.by_sender().prevalence in ('new', 'outlier')
    • profile.by_sender().any_messages_malicious_or_spam
  4. not:
    • profile.by_sender().any_messages_benign

Inspects: attachments[].file_extension, attachments[].file_type, type.inbound. Sensors: file.explode, profile.by_sender. Reference lists: $file_extensions_common_archives.

Indicators matched (124)

FieldMatchValue
attachments[].file_typeequalsrar
file.explode(attachments[])[].file_extensionmemberade
file.explode(attachments[])[].file_extensionmemberadp
file.explode(attachments[])[].file_extensionmemberapk
file.explode(attachments[])[].file_extensionmemberappx
file.explode(attachments[])[].file_extensionmemberappxbundle
file.explode(attachments[])[].file_extensionmemberbat
file.explode(attachments[])[].file_extensionmembercab
file.explode(attachments[])[].file_extensionmemberchm
file.explode(attachments[])[].file_extensionmembercmd
file.explode(attachments[])[].file_extensionmembercom
file.explode(attachments[])[].file_extensionmembercpl
112 more
file.explode(attachments[])[].file_extensionmemberdll
file.explode(attachments[])[].file_extensionmemberdmg
file.explode(attachments[])[].file_extensionmemberex
file.explode(attachments[])[].file_extensionmemberex_
file.explode(attachments[])[].file_extensionmemberexe
file.explode(attachments[])[].file_extensionmemberhta
file.explode(attachments[])[].file_extensionmemberins
file.explode(attachments[])[].file_extensionmemberisp
file.explode(attachments[])[].file_extensionmemberiso
file.explode(attachments[])[].file_extensionmemberjar
file.explode(attachments[])[].file_extensionmemberjs
file.explode(attachments[])[].file_extensionmemberjse
file.explode(attachments[])[].file_extensionmemberlib
file.explode(attachments[])[].file_extensionmemberlnk
file.explode(attachments[])[].file_extensionmembermde
file.explode(attachments[])[].file_extensionmembermsc
file.explode(attachments[])[].file_extensionmembermsi
file.explode(attachments[])[].file_extensionmembermsix
file.explode(attachments[])[].file_extensionmembermsixbundle
file.explode(attachments[])[].file_extensionmembermsp
file.explode(attachments[])[].file_extensionmembermst
file.explode(attachments[])[].file_extensionmembernsh
file.explode(attachments[])[].file_extensionmemberpif
file.explode(attachments[])[].file_extensionmemberps1
file.explode(attachments[])[].file_extensionmemberscr
file.explode(attachments[])[].file_extensionmembersct
file.explode(attachments[])[].file_extensionmembershb
file.explode(attachments[])[].file_extensionmembersys
file.explode(attachments[])[].file_extensionmembervb
file.explode(attachments[])[].file_extensionmembervbe
file.explode(attachments[])[].file_extensionmembervbs
file.explode(attachments[])[].file_extensionmembervxd
file.explode(attachments[])[].file_extensionmemberwsc
file.explode(attachments[])[].file_extensionmemberwsf
file.explode(attachments[])[].file_extensionmemberwsh
file.explode(attachments[])[].file_extensionmemberapp
file.explode(attachments[])[].file_extensionmemberapplication
file.explode(attachments[])[].file_extensionmemberappref-ms
file.explode(attachments[])[].file_extensionmemberasp
file.explode(attachments[])[].file_extensionmemberaspx
file.explode(attachments[])[].file_extensionmemberasx
file.explode(attachments[])[].file_extensionmemberbgi
file.explode(attachments[])[].file_extensionmembercnt
file.explode(attachments[])[].file_extensionmemberdiagcab
file.explode(attachments[])[].file_extensionmemberfxp
file.explode(attachments[])[].file_extensionmembergadget
file.explode(attachments[])[].file_extensionmemberhlp
file.explode(attachments[])[].file_extensionmemberhpj
file.explode(attachments[])[].file_extensionmemberhtc
file.explode(attachments[])[].file_extensionmemberits
file.explode(attachments[])[].file_extensionmemberjnlp
file.explode(attachments[])[].file_extensionmemberksh
file.explode(attachments[])[].file_extensionmembermad
file.explode(attachments[])[].file_extensionmembermaf
file.explode(attachments[])[].file_extensionmembermag
file.explode(attachments[])[].file_extensionmembermam
file.explode(attachments[])[].file_extensionmembermaq
file.explode(attachments[])[].file_extensionmembermar
file.explode(attachments[])[].file_extensionmembermas
file.explode(attachments[])[].file_extensionmembermat
file.explode(attachments[])[].file_extensionmembermau
file.explode(attachments[])[].file_extensionmembermav
file.explode(attachments[])[].file_extensionmembermaw
file.explode(attachments[])[].file_extensionmembermcf
file.explode(attachments[])[].file_extensionmembermda
file.explode(attachments[])[].file_extensionmembermdt
file.explode(attachments[])[].file_extensionmembermdw
file.explode(attachments[])[].file_extensionmembermdz
file.explode(attachments[])[].file_extensionmembermsh
file.explode(attachments[])[].file_extensionmembermsh1
file.explode(attachments[])[].file_extensionmembermsh2
file.explode(attachments[])[].file_extensionmembermshxml
file.explode(attachments[])[].file_extensionmembermsh1xml
file.explode(attachments[])[].file_extensionmembermsh2xml
file.explode(attachments[])[].file_extensionmembermsu
file.explode(attachments[])[].file_extensionmemberops
file.explode(attachments[])[].file_extensionmemberosd
file.explode(attachments[])[].file_extensionmemberpcd
file.explode(attachments[])[].file_extensionmemberpl
file.explode(attachments[])[].file_extensionmemberplg
file.explode(attachments[])[].file_extensionmemberprf
file.explode(attachments[])[].file_extensionmemberprg
file.explode(attachments[])[].file_extensionmemberprinterexport
file.explode(attachments[])[].file_extensionmemberps1xml
file.explode(attachments[])[].file_extensionmemberps2
file.explode(attachments[])[].file_extensionmemberps2xml
file.explode(attachments[])[].file_extensionmemberpsc1
file.explode(attachments[])[].file_extensionmemberpsc2
file.explode(attachments[])[].file_extensionmemberpsd1
file.explode(attachments[])[].file_extensionmemberpsdm1
file.explode(attachments[])[].file_extensionmemberpst
file.explode(attachments[])[].file_extensionmemberpyo
file.explode(attachments[])[].file_extensionmemberpyw
file.explode(attachments[])[].file_extensionmemberpyz
file.explode(attachments[])[].file_extensionmemberpyzw
file.explode(attachments[])[].file_extensionmemberreg
file.explode(attachments[])[].file_extensionmemberscf
file.explode(attachments[])[].file_extensionmembershs
file.explode(attachments[])[].file_extensionmembertheme
file.explode(attachments[])[].file_extensionmemberurl
file.explode(attachments[])[].file_extensionmembervbp
file.explode(attachments[])[].file_extensionmembervhd
file.explode(attachments[])[].file_extensionmembervhdx
file.explode(attachments[])[].file_extensionmembervsmacros
file.explode(attachments[])[].file_extensionmembervsw
file.explode(attachments[])[].file_extensionmemberwebpnp
file.explode(attachments[])[].file_extensionmemberwebsite
file.explode(attachments[])[].file_extensionmemberws
file.explode(attachments[])[].file_extensionmemberxbap
file.explode(attachments[])[].file_extensionmemberxll
file.explode(attachments[])[].file_extensionmemberxnk
file.explode(attachments[])[].file_extensionequalsbas