Detection rules › Sublime MQL
Sublime MQL rules: qr
| Rule | Severity |
|---|---|
| QR code to auto-download of a suspicious file type (unsolicited) | high |
| QR Code with suspicious indicators | high |
QR code to auto-download of a suspicious file type (unsolicited)
#A QR code in the body of the email downloads a suspicious file type (or embedded file) such as an LNK, JS, or VBA. Recursively explodes auto-downloaded files within archives to detect these file types.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Malware/Ransomware |
| Tactics and techniques | Evasion, LNK, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
//
// This rule makes use of a beta feature and is subject to change without notice
// using the beta feature in custom rules is not suggested until it has been formally released
//
and beta.scan_qr(file.message_screenshot()).found
and any(beta.scan_qr(file.message_screenshot()).items,
any(ml.link_analysis(.url).files_downloaded,
strings.ilike(.file_name, "*.exe")
or .file_extension in (
"dll",
"exe",
"html",
"lnk",
"js",
"vba",
"vbs",
"vbe",
"bat",
"py",
"ics",
"sh",
"ps1"
)
// or call file.explode to get yara/mime types
or any(file.explode(.),
// file ext is not dll but is exe mime/yara
(
.file_extension not in ("dll", "exe")
and (
.flavors.mime in ("application/x-dosexec")
or any(.flavors.yara, . in ('mz_file'))
)
)
// or a macho file
or any(.flavors.yara, . == "macho_file")
)
)
)
// negate highly trusted sender domains unless they fail DMARC authentication
and (
(
sender.email.domain.root_domain in $high_trust_sender_root_domains
and not headers.auth_summary.dmarc.pass
)
or sender.email.domain.root_domain not in $high_trust_sender_root_domains
)
and (
not profile.by_sender().solicited
or (
profile.by_sender().any_messages_malicious_or_spam
and not profile.by_sender().any_messages_benign
)
)
Detection logic
Scope: inbound message.
A QR code in the body of the email downloads a suspicious file type (or embedded file) such as an LNK, JS, or VBA. Recursively explodes auto-downloaded files within archives to detect these file types.
- inbound message
- beta.scan_qr(file.message_screenshot()).found
any of
beta.scan_qr(file.message_screenshot()).itemswhere:any of
ml.link_analysis(.url).files_downloadedwhere any holds:- .file_name matches '*.exe'
- .file_extension in ('dll', 'exe', 'html', 'lnk', 'js', 'vba', 'vbs', 'vbe', 'bat', 'py', 'ics', 'sh', 'ps1')
any of
file.explode(.)where any holds:all of:
- .file_extension not in ('dll', 'exe')
any of:
- .flavors.mime in ('application/x-dosexec')
any of
.flavors.yarawhere:- . in ('mz_file')
any of
.flavors.yarawhere:- . is 'macho_file'
any of:
all of:
- sender.email.domain.root_domain in $high_trust_sender_root_domains
not:
- headers.auth_summary.dmarc.pass
- sender.email.domain.root_domain not in $high_trust_sender_root_domains
any of:
not:
- profile.by_sender().solicited
all of:
- profile.by_sender().any_messages_malicious_or_spam
not:
- profile.by_sender().any_messages_benign
Inspects: headers.auth_summary.dmarc.pass, sender.email.domain.root_domain, type.inbound. Sensors: beta.scan_qr, file.explode, file.message_screenshot, ml.link_analysis, profile.by_sender, strings.ilike. Reference lists: $high_trust_sender_root_domains.
Indicators matched (17)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | *.exe |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | dll |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | exe |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | html |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | lnk |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | js |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | vba |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | vbs |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | vbe |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | bat |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | py |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | ics |
5 more
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | sh |
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension | member | ps1 |
file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[])[].flavors.mime | member | application/x-dosexec |
file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[])[].flavors.yara[] | member | mz_file |
file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[])[].flavors.yara[] | equals | macho_file |
Stages and Predicates
Stage 1: mql_rule
and
any(beta.scan_qr(file.message_screenshot()).items)
any(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items.url).files_downloaded)
or
any(file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items.url).files_downloaded))
or
and
or
any(file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items.url).files_downloaded).flavors.yara)
file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items.url).files_downloaded).flavors.yara eq "mz_file"
file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[])[].flavors.mime eq "application/x-dosexec"
not
file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[])[].file_extension in ["dll", "exe"]
any(file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items.url).files_downloaded).flavors.yara)
file.explode(ml.link_analysis(beta.scan_qr(file.message_screenshot()).items.url).files_downloaded).flavors.yara eq "macho_file"
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_extension in ["bat", "dll", "exe", "html", "ics", "js", "lnk", "ps1", "py", "sh", "vba", "vbe", "vbs"]
ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).files_downloaded[].file_name ends_with ".exe"
or
and
not
headers.auth_summary.dmarc.pass eq "true"
macro "sender.email.domain.root_domain in high_trust_sender_root_domains"
macro "sender.email.domain.root_domain not in high_trust_sender_root_domains"
or
and
not
profile.by_sender func_call "profile.by_sender().any_messages_benign"
profile.by_sender func_call "profile.by_sender().any_messages_malicious_or_spam"
not
profile.by_sender func_call "profile.by_sender().solicited"
beta.scan_qr func_call "beta.scan_qr(file.message_screenshot()).found"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
QR Code with suspicious indicators
#This rule flags messages with QR codes in attachments when there are three or fewer attachments. If no attachments are present, the rule captures a screenshot of the message for analysis. Additional triggers include: sender's name containing the recipient's SLD, recipient's email mentioned in the body, an empty message body, a suspicious subject, or undisclosed recipients.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | QR code, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and (
(
length(attachments) <= 3
or (
any(attachments, length(ml.logo_detect(.).brands) > 0)
and length(attachments) <= 10
)
)
and (
any(attachments,
(
.file_type in $file_types_images
or .file_extension in $file_extensions_macros
or .file_type == "pdf"
)
and (
any(file.explode(.),
(
.scan.qr.type is not null
and regex.contains(.scan.qr.data, '\.')
and not strings.starts_with(.scan.qr.data,
"https://qr.skyqr.co.za/"
)
and not (
strings.icontains(.scan.qr.data, ',')
and .scan.qr.type == 'undefined'
)
// not a json string
and not (
strings.starts_with(.scan.qr.data, '{')
and strings.ends_with(.scan.qr.data, '}')
)
// exclude images taken with mobile cameras and screenshots from android
and not any(.scan.exiftool.fields,
.key == "Model"
or (
.key == "Software"
and strings.starts_with(.value, "Android")
)
)
// exclude images taken with mobile cameras and screenshots from Apple
and not any(.scan.exiftool.fields,
.key == "DeviceManufacturer"
and .value == "Apple Computer Inc."
)
// exclude images from WhatsApp (mobile)
and not regex.match(.file_name,
'WhatsApp Image \d\d\d\d-\d\d-\d\d at.*.jpe?g'
)
and not (
(
.scan.exiftool.image_height > 3000
and .scan.exiftool.image_height is not null
)
or (
.scan.exiftool.image_width > 3000
and .scan.exiftool.image_width is not null
)
)
// exclude contact cards
and not strings.istarts_with(.scan.qr.data, "BEGIN:VCARD")
// negate QR codes to legit Servicio de Administración Tributaria (SAT) Gov links
and not (
.scan.qr.url.domain.root_domain is not null
and .scan.qr.url.domain.root_domain in ('sat.gob.mx')
)
and not (
.scan.qr.data is not null
and strings.icontains(.scan.qr.data, 'sat.gob.mx')
)
)
or (
regex.icontains(.scan.ocr.raw,
'(?:scan|camera|review and sign)'
)
and regex.icontains(.scan.ocr.raw, '(?:\bQR\b|Q\.R\.|barcode)')
)
)
)
)
or (
length(attachments) == 0
//
// This rule makes use of a beta feature and is subject to change without notice
// using the beta feature in custom rules is not suggested until it has been formally released
//
and (
(
beta.parse_exif(file.message_screenshot()).image_height < 2000
and beta.parse_exif(file.message_screenshot()).image_width < 2000
)
// ignore image height/width if there is excessive whitespace padding
or regex.contains(body.html.raw, '\"padding:0px 0px \d{3,4}px 0px')
)
and any(beta.scan_qr(file.message_screenshot()).items,
.type is not null
and regex.contains(.data, '\.')
// exclude contact cards
and not strings.istarts_with(.data, "BEGIN:VCARD")
)
)
)
and (
any(recipients.to,
strings.icontains(sender.display_name, .email.domain.sld)
)
or length(body.current_thread.text) is null
or (
body.current_thread.text == ""
and (
(
(length(headers.references) > 0 or headers.in_reply_to is null)
and not (
(
strings.istarts_with(subject.subject, "RE:")
or strings.istarts_with(subject.subject, "RES:")
or strings.istarts_with(subject.subject, "R:")
or strings.istarts_with(subject.subject, "ODG:")
or strings.istarts_with(subject.subject, "答复:")
or strings.istarts_with(subject.subject, "AW:")
or strings.istarts_with(subject.subject, "TR:")
or strings.istarts_with(subject.subject, "FWD:")
or regex.imatch(subject.subject,
'(\[[^\]]+\]\s?){0,3}(re|fwd?|automat.*)\s?:.*'
)
)
)
)
or length(headers.references) == 0
)
)
or regex.contains(subject.subject,
"(Authenticat(e|or|ion)|2fa|Multi.Factor|(qr|bar).code|action.require|alert|Att(n|ention):)"
)
or (any(recipients.to, strings.icontains(subject.subject, .display_name)))
or (
regex.icontains(subject.subject,
"termination.*notice",
"38417",
":completed",
"[il1]{2}mit.*ma[il1]{2} ?bo?x",
"[il][il][il]egai[ -]",
"[li][li][li]ega[li] attempt",
"[ng]-?[io]n .*block",
"[ng]-?[io]n .*cancel",
"[ng]-?[io]n .*deactiv",
"[ng]-?[io]n .*disabl",
"action.*required",
"abandon.*package",
"about.your.account",
"acc(ou)?n?t (is )?on ho[li]d",
"acc(ou)?n?t.*terminat",
"acc(oun)?t.*[il1]{2}mitation",
"access.*limitation",
"account (will be )?block",
"account.*de-?activat",
"account.*locked",
"account.*re-verification",
"account.*security",
"account.*suspension",
"account.has.been",
"account.has.expired",
"account.will.be.blocked",
"account v[il]o[li]at",
"activity.*acc(oun)?t",
"all.?staff",
"almost.full",
"app[li]e.[il]d",
"authenticate.*account",
"been.*suspend",
"bonus",
"clos.*of.*account.*processed",
"confirm.your.account",
"courier.*able",
"crediential.*notif",
"deactivation.*in.*progress",
"delivery.*attempt.*failed",
"document.received",
"documented.*shared.*with.*you",
"dropbox.*document",
"e-?ma[il1]+ .{010}suspen",
"e-?ma[il1]{1} user",
"e-?ma[il1]{2} acc",
"e-?ma[il1]{2}.*up.?grade",
"e.?ma[il1]{2}.*server",
"e.?ma[il1]{2}.*suspend",
"email.update",
"faxed you",
"fraud(ulent)?.*charge",
"from.helpdesk",
"fu[il1]{2}.*ma[il1]+[ -]?box",
"has.been.*suspended",
"has.been.limited",
"have.locked",
"he[li]p ?desk upgrade",
"heipdesk",
"i[il]iega[il]",
"ii[il]ega[il]",
"incoming e?mail",
"incoming.*fax",
"lock.*security",
"ma[il1]{1}[ -]?box.*quo",
"ma[il1]{2}[ -]?box.*fu[il1]",
"ma[il1]{2}box.*[il1]{2}mit",
"ma[il1]{2}box stor",
"mail on.?hold",
"mail.*box.*migration",
"mail.*de-?activat",
"mail.update.required",
"mails.*pending",
"messages.*pending",
"missed.*shipping.*notification",
"missed.shipment.notification",
"must.update.your.account",
"new [sl][io]g?[nig][ -]?in from",
"new voice ?-?mail",
"notifications.*pending",
"office.*3.*6.*5.*suspend",
"office365",
"on google docs with you",
"online doc",
"password.*compromised",
"payment advice",
"periodic maintenance",
"potential(ly)? unauthorized",
"refund not approved",
"report",
"revised.*policy",
"scam",
"scanned.?invoice",
"secured?.update",
"security breach",
"securlty",
"seguranca",
"signed.*delivery",
"status of your .{314}? ?delivery",
"susp[il1]+c[il1]+ous.*act[il1]+v[il1]+ty",
"suspicious.*sign.*[io]n",
"suspicious.activit",
"temporar(il)?y deactivate",
"temporar[il1]{2}y disab[li]ed",
"temporarily.*lock",
"un-?usua[li].activity",
"unable.*deliver",
"unauthorized.*activit",
"unauthorized.device",
"undelivered message",
"unread.*doc",
"unusual.activity",
"upgrade.*account",
"upgrade.notice",
"urgent message",
"urgent.verification",
"v[il1]o[li1]at[il1]on security",
"va[il1]{1}date.*ma[il1]{2}[ -]?box",
"verification ?-?require",
"verification( )?-?need",
"verify.your?.account",
"web ?-?ma[il1]{2}",
"web[ -]?ma[il1]{2}",
"will.be.suspended",
"your (customer )?account .as",
"your.office.365",
"your.online.access"
)
or any($suspicious_subjects, strings.icontains(subject.subject, .))
or regex.icontains(sender.display_name,
"Accounts.?Payable",
"Admin",
"Administrator",
"Alert",
"Assistant",
"Billing",
"Benefits",
"Bonus",
"CEO",
"CFO",
"CIO",
"CTO",
"Chairman",
"Claim",
"Confirm",
"Critical",
"Customer Service",
"Deal",
"Discount",
"Director",
"Exclusive",
"Executive",
"Fax",
"Free",
"Gift",
"/bHR/b",
"Helpdesk",
"Human Resources",
"Immediate",
"Important",
"Info",
"Information",
"Invoice",
'\bIT\b',
"Legal",
"Lottery",
"Management",
"Manager",
"Member Services",
"Notification",
"Offer",
"Operations",
"Order",
"Partner",
"Payment",
"Payroll",
"President",
"Premium",
"Prize",
"Receipt",
"Refund",
"Registrar",
"Required",
"Reward",
"Sales",
"Secretary",
"Security",
"Service",
"Signature",
"StaffAnnouncement",
"Storage",
"Support",
"Sweepstakes",
"System",
"Tax",
"Tech Support",
"Update",
"Upgrade",
"Urgent",
"Validate",
"Verify",
"VIP",
"Webmaster",
"Winner",
)
)
or (
(
length(recipients.to) == 0
or all(recipients.to, .display_name == "Undisclosed recipients")
)
and length(recipients.cc) == 0
and length(recipients.bcc) == 0
)
or any(beta.scan_qr(file.message_screenshot()).items,
(
.url.domain.tld in $suspicious_tlds
and .url.domain.root_domain != "app.link"
)
// linkanalysis phishing disposition
or ml.link_analysis(.url).credphish.disposition == "phishing"
)
or any(attachments,
(
.file_type in $file_types_images
or .file_extension in $file_extensions_macros
or .file_type == "pdf"
)
and any(file.explode(.),
(
.scan.qr.url.domain.tld in $suspicious_tlds
and .scan.qr.url.domain.root_domain != "app.link"
and .scan.qr.url.domain.root_domain != "qr.link"
and .scan.qr.url.domain.root_domain != "skyqr.co.za"
)
and .scan.qr.url.domain.root_domain not in $org_domains
)
)
or sender.email.domain.tld in $suspicious_tlds
)
)
// sender profile is new or outlier
and (
profile.by_sender_email().any_messages_malicious_or_spam
or (
sender.email.domain.domain in $org_domains
and not coalesce(headers.auth_summary.dmarc.pass, false)
)
or (
profile.by_sender_email().prevalence in ("new", "outlier")
and not profile.by_sender_email().solicited
)
)
and not profile.by_sender_email().any_messages_benign
// negate highly trusted sender domains unless they fail DMARC authentication
and not (
sender.email.domain.root_domain in $high_trust_sender_root_domains
and coalesce(headers.auth_summary.dmarc.pass, false)
)
Detection logic
Scope: inbound message.
This rule flags messages with QR codes in attachments when there are three or fewer attachments. If no attachments are present, the rule captures a screenshot of the message for analysis. Additional triggers include: sender's name containing the recipient's SLD, recipient's email mentioned in the body, an empty message body, a suspicious subject, or undisclosed recipients.
- inbound message
all of:
any of:
- length(attachments) ≤ 3
all of:
any of
attachmentswhere:- length(ml.logo_detect(.).brands) > 0
- length(attachments) ≤ 10
any of:
any of
attachmentswhere all hold:any of:
- .file_type in $file_types_images
- .file_extension in $file_extensions_macros
- .file_type is 'pdf'
any of
file.explode(.)where any holds:all of:
- .scan.qr.type is set
- .scan.qr.data matches '\\.'
not:
- .scan.qr.data starts with 'https://qr.skyqr.co.za/'
not:
all of:
- .scan.qr.data contains ','
- .scan.qr.type is 'undefined'
not:
all of:
- .scan.qr.data starts with '{'
- .scan.qr.data ends with '}'
not:
any of
.scan.exiftool.fieldswhere any holds:- .key is 'Model'
all of:
- .key is 'Software'
- .value starts with 'Android'
not:
any of
.scan.exiftool.fieldswhere all hold:- .key is 'DeviceManufacturer'
- .value is 'Apple Computer Inc.'
not:
- .file_name matches 'WhatsApp Image \\d\\d\\d\\d-\\d\\d-\\d\\d at.*.jpe?g'
none of:
all of:
- .scan.exiftool.image_height > 3000
- .scan.exiftool.image_height is set
all of:
- .scan.exiftool.image_width > 3000
- .scan.exiftool.image_width is set
not:
- .scan.qr.data starts with 'BEGIN:VCARD'
not:
all of:
- .scan.qr.url.domain.root_domain is set
- .scan.qr.url.domain.root_domain in ('sat.gob.mx')
not:
all of:
- .scan.qr.data is set
- .scan.qr.data contains 'sat.gob.mx'
all of:
- .scan.ocr.raw matches '(?:scan|camera|review and sign)'
- .scan.ocr.raw matches '(?:\\bQR\\b|Q\\.R\\.|barcode)'
all of:
- length(attachments) is 0
any of:
all of:
- beta.parse_exif(file.message_screenshot()).image_height < 2000
- beta.parse_exif(file.message_screenshot()).image_width < 2000
- body.html.raw matches '\\"padding:0px 0px \\d{3,4}px 0px'
any of
beta.scan_qr(file.message_screenshot()).itemswhere all hold:- .type is set
- .data matches '\\.'
not:
- .data starts with 'BEGIN:VCARD'
any of:
any of
recipients.towhere:- strings.icontains(sender.display_name)
- length(body.current_thread.text) is missing
all of:
- body.current_thread.text is ''
any of:
all of:
any of:
- length(headers.references) > 0
- headers.in_reply_to is missing
none of:
- subject.subject starts with 'RE:'
- subject.subject starts with 'RES:'
- subject.subject starts with 'R:'
- subject.subject starts with 'ODG:'
- subject.subject starts with '答复:'
- subject.subject starts with 'AW:'
- subject.subject starts with 'TR:'
- subject.subject starts with 'FWD:'
- subject.subject matches '(\\[[^\\]]+\\]\\s?){0,3}(re|fwd?|automat.*)\\s?:.*'
- length(headers.references) is 0
- subject.subject matches '(Authenticat(e|or|ion)|2fa|Multi.Factor|(qr|bar).code|action.require|alert|Att(n|ention):)'
any of
recipients.towhere:- strings.icontains(subject.subject)
any of:
subject.subject matches any of 127 patterns
termination.*notice38417:completed[il1]{2}mit.*ma[il1]{2} ?bo?x[il][il][il]egai[ -][li][li][li]ega[li] attempt[ng]-?[io]n .*block[ng]-?[io]n .*cancel[ng]-?[io]n .*deactiv[ng]-?[io]n .*disablaction.*requiredabandon.*packageabout.your.accountacc(ou)?n?t (is )?on ho[li]dacc(ou)?n?t.*terminatacc(oun)?t.*[il1]{2}mitationaccess.*limitationaccount (will be )?blockaccount.*de-?activataccount.*lockedaccount.*re-verificationaccount.*securityaccount.*suspensionaccount.has.beenaccount.has.expiredaccount.will.be.blockedaccount v[il]o[li]atactivity.*acc(oun)?tall.?staffalmost.fullapp[li]e.[il]dauthenticate.*accountbeen.*suspendbonusclos.*of.*account.*processedconfirm.your.accountcourier.*ablecrediential.*notifdeactivation.*in.*progressdelivery.*attempt.*faileddocument.receiveddocumented.*shared.*with.*youdropbox.*documente-?ma[il1]+ .{010}suspene-?ma[il1]{1} usere-?ma[il1]{2} acce-?ma[il1]{2}.*up.?gradee.?ma[il1]{2}.*servere.?ma[il1]{2}.*suspendemail.updatefaxed youfraud(ulent)?.*chargefrom.helpdeskfu[il1]{2}.*ma[il1]+[ -]?boxhas.been.*suspendedhas.been.limitedhave.lockedhe[li]p ?desk upgradeheipdeski[il]iega[il]ii[il]ega[il]incoming e?mailincoming.*faxlock.*securityma[il1]{1}[ -]?box.*quoma[il1]{2}[ -]?box.*fu[il1]ma[il1]{2}box.*[il1]{2}mitma[il1]{2}box stormail on.?holdmail.*box.*migrationmail.*de-?activatmail.update.requiredmails.*pendingmessages.*pendingmissed.*shipping.*notificationmissed.shipment.notificationmust.update.your.accountnew [sl][io]g?[nig][ -]?in fromnew voice ?-?mailnotifications.*pendingoffice.*3.*6.*5.*suspendoffice365on google docs with youonline docpassword.*compromisedpayment adviceperiodic maintenancepotential(ly)? unauthorizedrefund not approvedreportrevised.*policyscamscanned.?invoicesecured?.updatesecurity breachsecurltysegurancasigned.*deliverystatus of your .{314}? ?deliverysusp[il1]+c[il1]+ous.*act[il1]+v[il1]+tysuspicious.*sign.*[io]nsuspicious.activittemporar(il)?y deactivatetemporar[il1]{2}y disab[li]edtemporarily.*lockun-?usua[li].activityunable.*deliverunauthorized.*activitunauthorized.deviceundelivered messageunread.*docunusual.activityupgrade.*accountupgrade.noticeurgent messageurgent.verificationv[il1]o[li1]at[il1]on securityva[il1]{1}date.*ma[il1]{2}[ -]?boxverification ?-?requireverification( )?-?needverify.your?.accountweb ?-?ma[il1]{2}web[ -]?ma[il1]{2}will.be.suspendedyour (customer )?account .asyour.office.365your.online.access
any of
$suspicious_subjectswhere:- strings.icontains(subject.subject)
sender.display_name matches any of 74 patterns
Accounts.?PayableAdminAdministratorAlertAssistantBillingBenefitsBonusCEOCFOCIOCTOChairmanClaimConfirmCriticalCustomer ServiceDealDiscountDirectorExclusiveExecutiveFaxFreeGift/bHR/bHelpdeskHuman ResourcesImmediateImportantInfoInformationInvoice\bIT\bLegalLotteryManagementManagerMember ServicesNotificationOfferOperationsOrderPartnerPaymentPayrollPresidentPremiumPrizeReceiptRefundRegistrarRequiredRewardSalesSecretarySecurityServiceSignatureStaffAnnouncementStorageSupportSweepstakesSystemTaxTech SupportUpdateUpgradeUrgentValidateVerifyVIPWebmasterWinner
all of:
any of:
- length(recipients.to) is 0
all of
recipients.towhere:- .display_name is 'Undisclosed recipients'
- length(recipients.cc) is 0
- length(recipients.bcc) is 0
any of
beta.scan_qr(file.message_screenshot()).itemswhere any holds:all of:
- .url.domain.tld in $suspicious_tlds
- .url.domain.root_domain is not 'app.link'
- ml.link_analysis(.url).credphish.disposition is 'phishing'
any of
attachmentswhere all hold:any of:
- .file_type in $file_types_images
- .file_extension in $file_extensions_macros
- .file_type is 'pdf'
any of
file.explode(.)where all hold:all of:
- .scan.qr.url.domain.tld in $suspicious_tlds
- .scan.qr.url.domain.root_domain is not 'app.link'
- .scan.qr.url.domain.root_domain is not 'qr.link'
- .scan.qr.url.domain.root_domain is not 'skyqr.co.za'
- .scan.qr.url.domain.root_domain not in $org_domains
- sender.email.domain.tld in $suspicious_tlds
any of:
- profile.by_sender_email().any_messages_malicious_or_spam
all of:
- sender.email.domain.domain in $org_domains
not:
- coalesce(headers.auth_summary.dmarc.pass)
all of:
- profile.by_sender_email().prevalence in ('new', 'outlier')
not:
- profile.by_sender_email().solicited
not:
- profile.by_sender_email().any_messages_benign
not:
all of:
- sender.email.domain.root_domain in $high_trust_sender_root_domains
- coalesce(headers.auth_summary.dmarc.pass)
Inspects: attachments[].file_extension, attachments[].file_type, body.current_thread.text, body.html.raw, headers.auth_summary.dmarc.pass, headers.in_reply_to, headers.references, recipients.bcc, recipients.cc, recipients.to, recipients.to[].display_name, recipients.to[].email.domain.sld, sender.display_name, sender.email.domain.domain, sender.email.domain.root_domain, sender.email.domain.tld, subject.subject, type.inbound. Sensors: beta.parse_exif, beta.scan_qr, file.explode, file.message_screenshot, ml.link_analysis, ml.logo_detect, profile.by_sender_email, regex.contains, regex.icontains, regex.imatch, regex.match, strings.ends_with, strings.icontains, strings.istarts_with, strings.starts_with. Reference lists: $file_extensions_macros, $file_types_images, $high_trust_sender_root_domains, $org_domains, $suspicious_subjects, $suspicious_tlds.
Indicators matched (209)
| Field | Match | Value |
|---|---|---|
attachments[].file_type | equals | pdf |
regex.contains | regex | \. |
regex.icontains | regex | (?:scan|camera|review and sign) |
regex.icontains | regex | (?:\bQR\b|Q\.R\.|barcode) |
regex.contains | regex | \"padding:0px 0px \d{3,4}px 0px |
body.current_thread.text | equals | |
regex.contains | regex | (Authenticat(e|or|ion)|2fa|Multi.Factor|(qr|bar).code|action.require|alert|Att(n|ention):) |
regex.icontains | regex | termination.*notice |
regex.icontains | regex | 38417 |
regex.icontains | regex | :completed |
regex.icontains | regex | [il1]{2}mit.*ma[il1]{2} ?bo?x |
regex.icontains | regex | [il][il][il]egai[ -] |
197 more
regex.icontains | regex | [li][li][li]ega[li] attempt |
regex.icontains | regex | [ng]-?[io]n .*block |
regex.icontains | regex | [ng]-?[io]n .*cancel |
regex.icontains | regex | [ng]-?[io]n .*deactiv |
regex.icontains | regex | [ng]-?[io]n .*disabl |
regex.icontains | regex | action.*required |
regex.icontains | regex | abandon.*package |
regex.icontains | regex | about.your.account |
regex.icontains | regex | acc(ou)?n?t (is )?on ho[li]d |
regex.icontains | regex | acc(ou)?n?t.*terminat |
regex.icontains | regex | acc(oun)?t.*[il1]{2}mitation |
regex.icontains | regex | access.*limitation |
regex.icontains | regex | account (will be )?block |
regex.icontains | regex | account.*de-?activat |
regex.icontains | regex | account.*locked |
regex.icontains | regex | account.*re-verification |
regex.icontains | regex | account.*security |
regex.icontains | regex | account.*suspension |
regex.icontains | regex | account.has.been |
regex.icontains | regex | account.has.expired |
regex.icontains | regex | account.will.be.blocked |
regex.icontains | regex | account v[il]o[li]at |
regex.icontains | regex | activity.*acc(oun)?t |
regex.icontains | regex | all.?staff |
regex.icontains | regex | almost.full |
regex.icontains | regex | app[li]e.[il]d |
regex.icontains | regex | authenticate.*account |
regex.icontains | regex | been.*suspend |
regex.icontains | regex | bonus |
regex.icontains | regex | clos.*of.*account.*processed |
regex.icontains | regex | confirm.your.account |
regex.icontains | regex | courier.*able |
regex.icontains | regex | crediential.*notif |
regex.icontains | regex | deactivation.*in.*progress |
regex.icontains | regex | delivery.*attempt.*failed |
regex.icontains | regex | document.received |
regex.icontains | regex | documented.*shared.*with.*you |
regex.icontains | regex | dropbox.*document |
regex.icontains | regex | e-?ma[il1]+ .{010}suspen |
regex.icontains | regex | e-?ma[il1]{1} user |
regex.icontains | regex | e-?ma[il1]{2} acc |
regex.icontains | regex | e-?ma[il1]{2}.*up.?grade |
regex.icontains | regex | e.?ma[il1]{2}.*server |
regex.icontains | regex | e.?ma[il1]{2}.*suspend |
regex.icontains | regex | email.update |
regex.icontains | regex | faxed you |
regex.icontains | regex | fraud(ulent)?.*charge |
regex.icontains | regex | from.helpdesk |
regex.icontains | regex | fu[il1]{2}.*ma[il1]+[ -]?box |
regex.icontains | regex | has.been.*suspended |
regex.icontains | regex | has.been.limited |
regex.icontains | regex | have.locked |
regex.icontains | regex | he[li]p ?desk upgrade |
regex.icontains | regex | heipdesk |
regex.icontains | regex | i[il]iega[il] |
regex.icontains | regex | ii[il]ega[il] |
regex.icontains | regex | incoming e?mail |
regex.icontains | regex | incoming.*fax |
regex.icontains | regex | lock.*security |
regex.icontains | regex | ma[il1]{1}[ -]?box.*quo |
regex.icontains | regex | ma[il1]{2}[ -]?box.*fu[il1] |
regex.icontains | regex | ma[il1]{2}box.*[il1]{2}mit |
regex.icontains | regex | ma[il1]{2}box stor |
regex.icontains | regex | mail on.?hold |
regex.icontains | regex | mail.*box.*migration |
regex.icontains | regex | mail.*de-?activat |
regex.icontains | regex | mail.update.required |
regex.icontains | regex | mails.*pending |
regex.icontains | regex | messages.*pending |
regex.icontains | regex | missed.*shipping.*notification |
regex.icontains | regex | missed.shipment.notification |
regex.icontains | regex | must.update.your.account |
regex.icontains | regex | new [sl][io]g?[nig][ -]?in from |
regex.icontains | regex | new voice ?-?mail |
regex.icontains | regex | notifications.*pending |
regex.icontains | regex | office.*3.*6.*5.*suspend |
regex.icontains | regex | office365 |
regex.icontains | regex | on google docs with you |
regex.icontains | regex | online doc |
regex.icontains | regex | password.*compromised |
regex.icontains | regex | payment advice |
regex.icontains | regex | periodic maintenance |
regex.icontains | regex | potential(ly)? unauthorized |
regex.icontains | regex | refund not approved |
regex.icontains | regex | report |
regex.icontains | regex | revised.*policy |
regex.icontains | regex | scam |
regex.icontains | regex | scanned.?invoice |
regex.icontains | regex | secured?.update |
regex.icontains | regex | security breach |
regex.icontains | regex | securlty |
regex.icontains | regex | seguranca |
regex.icontains | regex | signed.*delivery |
regex.icontains | regex | status of your .{314}? ?delivery |
regex.icontains | regex | susp[il1]+c[il1]+ous.*act[il1]+v[il1]+ty |
regex.icontains | regex | suspicious.*sign.*[io]n |
regex.icontains | regex | suspicious.activit |
regex.icontains | regex | temporar(il)?y deactivate |
regex.icontains | regex | temporar[il1]{2}y disab[li]ed |
regex.icontains | regex | temporarily.*lock |
regex.icontains | regex | un-?usua[li].activity |
regex.icontains | regex | unable.*deliver |
regex.icontains | regex | unauthorized.*activit |
regex.icontains | regex | unauthorized.device |
regex.icontains | regex | undelivered message |
regex.icontains | regex | unread.*doc |
regex.icontains | regex | unusual.activity |
regex.icontains | regex | upgrade.*account |
regex.icontains | regex | upgrade.notice |
regex.icontains | regex | urgent message |
regex.icontains | regex | urgent.verification |
regex.icontains | regex | v[il1]o[li1]at[il1]on security |
regex.icontains | regex | va[il1]{1}date.*ma[il1]{2}[ -]?box |
regex.icontains | regex | verification ?-?require |
regex.icontains | regex | verification( )?-?need |
regex.icontains | regex | verify.your?.account |
regex.icontains | regex | web ?-?ma[il1]{2} |
regex.icontains | regex | web[ -]?ma[il1]{2} |
regex.icontains | regex | will.be.suspended |
regex.icontains | regex | your (customer )?account .as |
regex.icontains | regex | your.office.365 |
regex.icontains | regex | your.online.access |
regex.icontains | regex | Accounts.?Payable |
regex.icontains | regex | Admin |
regex.icontains | regex | Administrator |
regex.icontains | regex | Alert |
regex.icontains | regex | Assistant |
regex.icontains | regex | Billing |
regex.icontains | regex | Benefits |
regex.icontains | regex | Bonus |
regex.icontains | regex | CEO |
regex.icontains | regex | CFO |
regex.icontains | regex | CIO |
regex.icontains | regex | CTO |
regex.icontains | regex | Chairman |
regex.icontains | regex | Claim |
regex.icontains | regex | Confirm |
regex.icontains | regex | Critical |
regex.icontains | regex | Customer Service |
regex.icontains | regex | Deal |
regex.icontains | regex | Discount |
regex.icontains | regex | Director |
regex.icontains | regex | Exclusive |
regex.icontains | regex | Executive |
regex.icontains | regex | Fax |
regex.icontains | regex | Free |
regex.icontains | regex | Gift |
regex.icontains | regex | /bHR/b |
regex.icontains | regex | Helpdesk |
regex.icontains | regex | Human Resources |
regex.icontains | regex | Immediate |
regex.icontains | regex | Important |
regex.icontains | regex | Info |
regex.icontains | regex | Information |
regex.icontains | regex | Invoice |
regex.icontains | regex | \bIT\b |
regex.icontains | regex | Legal |
regex.icontains | regex | Lottery |
regex.icontains | regex | Management |
regex.icontains | regex | Manager |
regex.icontains | regex | Member Services |
regex.icontains | regex | Notification |
regex.icontains | regex | Offer |
regex.icontains | regex | Operations |
regex.icontains | regex | Order |
regex.icontains | regex | Partner |
regex.icontains | regex | Payment |
regex.icontains | regex | Payroll |
regex.icontains | regex | President |
regex.icontains | regex | Premium |
regex.icontains | regex | Prize |
regex.icontains | regex | Receipt |
regex.icontains | regex | Refund |
regex.icontains | regex | Registrar |
regex.icontains | regex | Required |
regex.icontains | regex | Reward |
regex.icontains | regex | Sales |
regex.icontains | regex | Secretary |
regex.icontains | regex | Security |
regex.icontains | regex | Service |
regex.icontains | regex | Signature |
regex.icontains | regex | StaffAnnouncement |
regex.icontains | regex | Storage |
regex.icontains | regex | Support |
regex.icontains | regex | Sweepstakes |
regex.icontains | regex | System |
regex.icontains | regex | Tax |
regex.icontains | regex | Tech Support |
regex.icontains | regex | Update |
regex.icontains | regex | Upgrade |
regex.icontains | regex | Urgent |
regex.icontains | regex | Validate |
regex.icontains | regex | Verify |
regex.icontains | regex | VIP |
regex.icontains | regex | Webmaster |
regex.icontains | regex | Winner |
recipients.to[].display_name | equals | Undisclosed recipients |
Stages and Predicates
Stage 1: mql_rule
and
or
any(attachments)
and
any(file.explode(attachments))
or
and
not
any(file.explode(attachments).scan.exiftool.fields)
or
and
file.explode(attachments[])[].scan.exiftool.fields[].key eq "Software"
file.explode(attachments[])[].scan.exiftool.fields[].value starts_with "Android"
file.explode(attachments[])[].scan.exiftool.fields[].key eq "Model"
not
any(file.explode(attachments).scan.exiftool.fields)
and
file.explode(attachments[])[].scan.exiftool.fields[].key eq "DeviceManufacturer"
file.explode(attachments[])[].scan.exiftool.fields[].value eq "Apple Computer Inc."
not
or
and
file.explode(attachments[])[].scan.exiftool.image_height gt "3000"
file.explode(attachments[])[].scan.exiftool.image_height is_not_null
and
file.explode(attachments[])[].scan.exiftool.image_width gt "3000"
file.explode(attachments[])[].scan.exiftool.image_width is_not_null
not
and
file.explode(attachments[])[].scan.qr.data contains ","
file.explode(attachments[])[].scan.qr.type eq "undefined"
not
and
file.explode(attachments[])[].scan.qr.data contains "sat.gob.mx"
file.explode(attachments[])[].scan.qr.data is_not_null
not
and
file.explode(attachments[])[].scan.qr.data ends_with "}"
file.explode(attachments[])[].scan.qr.data starts_with "{"
not
and
file.explode(attachments[])[].scan.qr.url.domain.root_domain eq "sat.gob.mx"
file.explode(attachments[])[].scan.qr.url.domain.root_domain is_not_null
not
file.explode(attachments[])[].file_name regex_match "WhatsApp Image \\d\\d\\d\\d-\\d\\d-\\d\\d at.*.jpe?g"
not
file.explode(attachments[])[].scan.qr.data starts_with "BEGIN:VCARD"
not
file.explode(attachments[])[].scan.qr.data starts_with "https://qr.skyqr.co.za/"
file.explode(attachments[])[].scan.qr.data regex_match "\\."
file.explode(attachments[])[].scan.qr.type is_not_null
and
file.explode(attachments[])[].scan.ocr.raw regex_match "(?:\\bQR\\b|Q\\.R\\.|barcode)"
file.explode(attachments[])[].scan.ocr.raw regex_match "(?:scan|camera|review and sign)"
or
attachments.file_type eq "pdf"
macro "attachments[].file_extension in file_extensions_macros"
macro "attachments[].file_type in file_types_images"
and
any(beta.scan_qr(file.message_screenshot()).items)
and
not
beta.scan_qr(file.message_screenshot()).items.data starts_with "BEGIN:VCARD"
beta.scan_qr(file.message_screenshot()).items.data regex_match "\\."
beta.scan_qr(file.message_screenshot()).items.type is_not_null
or
and
beta.parse_exif func_call "beta.parse_exif(file.message_screenshot()).image_height < 2000"
beta.parse_exif func_call "beta.parse_exif(file.message_screenshot()).image_width < 2000"
body.html.raw regex_match "\\\"padding:0px 0px \\d{3,4}px 0px"
attachments length_compare "0"
or
and
or
and
not
or
subject.subject regex_match "(\\[[^\\]]+\\]\\s?){0,3}(re|fwd?|automat.*)\\s?:.*"
subject.subject starts_with "AW:"
subject.subject starts_with "FWD:"
subject.subject starts_with "ODG:"
subject.subject starts_with "R:"
subject.subject starts_with "RE:"
subject.subject starts_with "RES:"
subject.subject starts_with "TR:"
subject.subject starts_with "答复:"
or
headers.in_reply_to is_null
headers.references length_compare "0"
headers.references length_compare "0"
body.current_thread.text eq ""
any(attachments)
and
any(file.explode(attachments))
and
file.explode(attachments[])[].scan.qr.url.domain.root_domain ne "app.link"
file.explode(attachments[])[].scan.qr.url.domain.root_domain ne "qr.link"
file.explode(attachments[])[].scan.qr.url.domain.root_domain ne "skyqr.co.za"
macro "file.explode(attachments[])[].scan.qr.url.domain.root_domain not in org_domains"
macro "file.explode(attachments[])[].scan.qr.url.domain.tld in suspicious_tlds"
or
attachments.file_type eq "pdf"
macro "attachments[].file_extension in file_extensions_macros"
macro "attachments[].file_type in file_types_images"
any(beta.scan_qr(file.message_screenshot()).items)
or
and
beta.scan_qr(file.message_screenshot()).items.url.domain.root_domain ne "app.link"
macro "beta.scan_qr(file.message_screenshot()).items[].url.domain.tld in suspicious_tlds"
ml.link_analysis func_call "ml.link_analysis(beta.scan_qr(file.message_screenshot()).items[].url).credphish.disposition == phishing"
and
or
recipients.to length_compare "0"
macro "all(recipients.to)"
recipients.bcc length_compare "0"
recipients.cc length_compare "0"
any(recipients.to)
strings.icontains func_call "strings.icontains(sender.display_name)"
any($suspicious_subjects)
strings.icontains func_call "strings.icontains(subject.subject)"
any(recipients.to)
strings.icontains func_call "strings.icontains(subject.subject)"
length(body.current_thread.text) is_null
sender.display_name regex_match "/bHR/b"
sender.display_name regex_match "Accounts.?Payable"
sender.display_name regex_match "Admin"
sender.display_name regex_match "Administrator"
sender.display_name regex_match "Alert"
sender.display_name regex_match "Assistant"
sender.display_name regex_match "Benefits"
sender.display_name regex_match "Billing"
sender.display_name regex_match "Bonus"
sender.display_name regex_match "CEO"
sender.display_name regex_match "CFO"
sender.display_name regex_match "CIO"
sender.display_name regex_match "CTO"
sender.display_name regex_match "Chairman"
sender.display_name regex_match "Claim"
sender.display_name regex_match "Confirm"
sender.display_name regex_match "Critical"
sender.display_name regex_match "Customer Service"
sender.display_name regex_match "Deal"
sender.display_name regex_match "Director"
sender.display_name regex_match "Discount"
sender.display_name regex_match "Exclusive"
sender.display_name regex_match "Executive"
sender.display_name regex_match "Fax"
sender.display_name regex_match "Free"
sender.display_name regex_match "Gift"
sender.display_name regex_match "Helpdesk"
sender.display_name regex_match "Human Resources"
sender.display_name regex_match "Immediate"
sender.display_name regex_match "Important"
sender.display_name regex_match "Info"
sender.display_name regex_match "Information"
sender.display_name regex_match "Invoice"
sender.display_name regex_match "Legal"
sender.display_name regex_match "Lottery"
sender.display_name regex_match "Management"
sender.display_name regex_match "Manager"
sender.display_name regex_match "Member Services"
sender.display_name regex_match "Notification"
sender.display_name regex_match "Offer"
sender.display_name regex_match "Operations"
sender.display_name regex_match "Order"
sender.display_name regex_match "Partner"
sender.display_name regex_match "Payment"
sender.display_name regex_match "Payroll"
sender.display_name regex_match "Premium"
sender.display_name regex_match "President"
sender.display_name regex_match "Prize"
sender.display_name regex_match "Receipt"
sender.display_name regex_match "Refund"
sender.display_name regex_match "Registrar"
sender.display_name regex_match "Required"
sender.display_name regex_match "Reward"
sender.display_name regex_match "Sales"
sender.display_name regex_match "Secretary"
sender.display_name regex_match "Security"
sender.display_name regex_match "Service"
sender.display_name regex_match "Signature"
sender.display_name regex_match "StaffAnnouncement"
sender.display_name regex_match "Storage"
sender.display_name regex_match "Support"
sender.display_name regex_match "Sweepstakes"
sender.display_name regex_match "System"
sender.display_name regex_match "Tax"
sender.display_name regex_match "Tech Support"
sender.display_name regex_match "Update"
sender.display_name regex_match "Upgrade"
sender.display_name regex_match "Urgent"
sender.display_name regex_match "VIP"
sender.display_name regex_match "Validate"
sender.display_name regex_match "Verify"
sender.display_name regex_match "Webmaster"
sender.display_name regex_match "Winner"
sender.display_name regex_match "\\bIT\\b"
subject.subject regex_match "(Authenticat(e|or|ion)|2fa|Multi.Factor|(qr|bar).code|action.require|alert|Att(n|ention):)"
subject.subject regex_match "38417"
subject.subject regex_match ":completed"
subject.subject regex_match "[il1]{2}mit.*ma[il1]{2} ?bo?x"
subject.subject regex_match "[il][il][il]egai[ -]"
subject.subject regex_match "[li][li][li]ega[li] attempt"
subject.subject regex_match "[ng]-?[io]n .*block"
subject.subject regex_match "[ng]-?[io]n .*cancel"
subject.subject regex_match "[ng]-?[io]n .*deactiv"
subject.subject regex_match "[ng]-?[io]n .*disabl"
subject.subject regex_match "abandon.*package"
subject.subject regex_match "about.your.account"
subject.subject regex_match "acc(ou)?n?t (is )?on ho[li]d"
subject.subject regex_match "acc(ou)?n?t.*terminat"
subject.subject regex_match "acc(oun)?t.*[il1]{2}mitation"
subject.subject regex_match "access.*limitation"
subject.subject regex_match "account (will be )?block"
subject.subject regex_match "account v[il]o[li]at"
subject.subject regex_match "account.*de-?activat"
subject.subject regex_match "account.*locked"
subject.subject regex_match "account.*re-verification"
subject.subject regex_match "account.*security"
subject.subject regex_match "account.*suspension"
subject.subject regex_match "account.has.been"
subject.subject regex_match "account.has.expired"
subject.subject regex_match "account.will.be.blocked"
subject.subject regex_match "action.*required"
subject.subject regex_match "activity.*acc(oun)?t"
subject.subject regex_match "all.?staff"
subject.subject regex_match "almost.full"
subject.subject regex_match "app[li]e.[il]d"
subject.subject regex_match "authenticate.*account"
subject.subject regex_match "been.*suspend"
subject.subject regex_match "bonus"
subject.subject regex_match "clos.*of.*account.*processed"
subject.subject regex_match "confirm.your.account"
subject.subject regex_match "courier.*able"
subject.subject regex_match "crediential.*notif"
subject.subject regex_match "deactivation.*in.*progress"
subject.subject regex_match "delivery.*attempt.*failed"
subject.subject regex_match "document.received"
subject.subject regex_match "documented.*shared.*with.*you"
subject.subject regex_match "dropbox.*document"
subject.subject regex_match "e-?ma[il1]+ .{010}suspen"
subject.subject regex_match "e-?ma[il1]{1} user"
subject.subject regex_match "e-?ma[il1]{2} acc"
subject.subject regex_match "e-?ma[il1]{2}.*up.?grade"
subject.subject regex_match "e.?ma[il1]{2}.*server"
subject.subject regex_match "e.?ma[il1]{2}.*suspend"
subject.subject regex_match "email.update"
subject.subject regex_match "faxed you"
subject.subject regex_match "fraud(ulent)?.*charge"
subject.subject regex_match "from.helpdesk"
subject.subject regex_match "fu[il1]{2}.*ma[il1]+[ -]?box"
subject.subject regex_match "has.been.*suspended"
subject.subject regex_match "has.been.limited"
subject.subject regex_match "have.locked"
subject.subject regex_match "he[li]p ?desk upgrade"
subject.subject regex_match "heipdesk"
subject.subject regex_match "i[il]iega[il]"
subject.subject regex_match "ii[il]ega[il]"
subject.subject regex_match "incoming e?mail"
subject.subject regex_match "incoming.*fax"
subject.subject regex_match "lock.*security"
subject.subject regex_match "ma[il1]{1}[ -]?box.*quo"
subject.subject regex_match "ma[il1]{2}[ -]?box.*fu[il1]"
subject.subject regex_match "ma[il1]{2}box stor"
subject.subject regex_match "ma[il1]{2}box.*[il1]{2}mit"
subject.subject regex_match "mail on.?hold"
subject.subject regex_match "mail.*box.*migration"
subject.subject regex_match "mail.*de-?activat"
subject.subject regex_match "mail.update.required"
subject.subject regex_match "mails.*pending"
subject.subject regex_match "messages.*pending"
subject.subject regex_match "missed.*shipping.*notification"
subject.subject regex_match "missed.shipment.notification"
subject.subject regex_match "must.update.your.account"
subject.subject regex_match "new [sl][io]g?[nig][ -]?in from"
subject.subject regex_match "new voice ?-?mail"
subject.subject regex_match "notifications.*pending"
subject.subject regex_match "office.*3.*6.*5.*suspend"
subject.subject regex_match "office365"
subject.subject regex_match "on google docs with you"
subject.subject regex_match "online doc"
subject.subject regex_match "password.*compromised"
subject.subject regex_match "payment advice"
subject.subject regex_match "periodic maintenance"
subject.subject regex_match "potential(ly)? unauthorized"
subject.subject regex_match "refund not approved"
subject.subject regex_match "report"
subject.subject regex_match "revised.*policy"
subject.subject regex_match "scam"
subject.subject regex_match "scanned.?invoice"
subject.subject regex_match "secured?.update"
subject.subject regex_match "security breach"
subject.subject regex_match "securlty"
subject.subject regex_match "seguranca"
subject.subject regex_match "signed.*delivery"
subject.subject regex_match "status of your .{314}? ?delivery"
subject.subject regex_match "susp[il1]+c[il1]+ous.*act[il1]+v[il1]+ty"
subject.subject regex_match "suspicious.*sign.*[io]n"
subject.subject regex_match "suspicious.activit"
subject.subject regex_match "temporar(il)?y deactivate"
subject.subject regex_match "temporar[il1]{2}y disab[li]ed"
subject.subject regex_match "temporarily.*lock"
subject.subject regex_match "termination.*notice"
subject.subject regex_match "un-?usua[li].activity"
subject.subject regex_match "unable.*deliver"
subject.subject regex_match "unauthorized.*activit"
subject.subject regex_match "unauthorized.device"
subject.subject regex_match "undelivered message"
subject.subject regex_match "unread.*doc"
subject.subject regex_match "unusual.activity"
subject.subject regex_match "upgrade.*account"
subject.subject regex_match "upgrade.notice"
subject.subject regex_match "urgent message"
subject.subject regex_match "urgent.verification"
subject.subject regex_match "v[il1]o[li1]at[il1]on security"
subject.subject regex_match "va[il1]{1}date.*ma[il1]{2}[ -]?box"
subject.subject regex_match "verification ?-?require"
subject.subject regex_match "verification( )?-?need"
subject.subject regex_match "verify.your?.account"
subject.subject regex_match "web ?-?ma[il1]{2}"
subject.subject regex_match "web[ -]?ma[il1]{2}"
subject.subject regex_match "will.be.suspended"
subject.subject regex_match "your (customer )?account .as"
subject.subject regex_match "your.office.365"
subject.subject regex_match "your.online.access"
macro "sender.email.domain.tld in suspicious_tlds"
or
and
not
coalesce func_call "coalesce(headers.auth_summary.dmarc.pass)"
macro "sender.email.domain.domain in org_domains"
and
not
profile.by_sender_email func_call "profile.by_sender_email().solicited"
profile.by_sender_email func_call "profile.by_sender_email().prevalence in (new, outlier)"
profile.by_sender_email func_call "profile.by_sender_email().any_messages_malicious_or_spam"
or
and
any(attachments)
ml.logo_detect(attachments[]).brands length_compare "0"
attachments length_compare "10"
attachments length_compare "3"
not
and
coalesce func_call "coalesce(headers.auth_summary.dmarc.pass)"
macro "sender.email.domain.root_domain in high_trust_sender_root_domains"
not
profile.by_sender_email func_call "profile.by_sender_email().any_messages_benign"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.html.raw | regex_match |
| field:"body.html.raw" kind:regex_match |
headers.in_reply_to | is_null | field:"headers.in_reply_to" kind:is_null | |
length(body.current_thread.text) | is_null | field:"length(body.current_thread.text)" kind:is_null | |
sender.display_name | regex_match |
| field:"sender.display_name" kind:regex_match |
subject.subject | regex_match |
| field:"subject.subject" kind:regex_match |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |