Spam: Website errors solicitation

This rule detects messages claiming to have identified errors on a website. The messages typically offer to send pricing or information upon request.

Sublime rule (View on GitHub)

 1name: "Spam: Website errors solicitation"
 2description: "This rule detects messages claiming to have identified errors on a website. The messages typically offer to send pricing or information upon request."
 3type: "rule"
 4severity: "low"
 5source: |
 6  type.inbound
 7  and (
 8    sender.email.email not in $recipient_emails
 9    or not profile.by_sender().solicited
10  )
11  and 1 of (
12    // Single thread message groups
13    (
14      length(attachments) == 0
15      and length(body.links) == 0
16      and length(body.previous_threads) == 0
17      and 20 < length(body.current_thread.text) < 500
18      and regex.icontains(body.current_thread.text, "screenshot|error list|plan")
19      and regex.icontains(body.current_thread.text, ".*(hi|hello|hey)")
20      and regex.icontains(body.current_thread.text, ".*(error|report|issues)")
21      and regex.icontains(body.current_thread.text, ".*(site|website)")
22      and regex.icontains(subject.subject,
23                          ".*(proposal|cost|report|error|audit|screenshot)"
24      )
25    ),
26    // Single thread message groups but with 1 unsubscribe link or link is recipient
27    (
28      length(attachments) == 0
29      and length(body.links) == 1
30      and (
31        regex.icontains(body.html.raw, "mailto:*[++unsubscribe@]")
32        or any(body.links, .href_url.domain.root_domain in~ $org_domains)
33      )
34      and length(body.previous_threads) == 0
35      and 20 < length(body.current_thread.text) < 500
36      and regex.icontains(body.current_thread.text, "screenshot|error list|plan")
37      and regex.icontains(body.current_thread.text, ".*(hi|hello|hey)")
38      and regex.icontains(body.current_thread.text, ".*(error|report|issues)")
39      and regex.icontains(body.current_thread.text, ".*(site|website)")
40      and regex.icontains(subject.subject,
41                          ".*(proposal|cost|report|error|audit|screenshot)"
42      )
43    ),
44    // Multiple thread message groups
45    (
46      length(attachments) == 0
47      and length(body.links) == 0
48      and length(body.previous_threads) < 5
49      and regex.icontains(subject.subject, ".*(proposal|cost|report|error|audit)")
50      and any(body.previous_threads,
51              length(.text) < 400
52              and regex.icontains(.text, '.*(hey|hi|hello)')
53              and regex.icontains(.text, '.*(\berror(?:\s+list)?\b|screenshot|report|plan)')
54              and strings.count(.text, "?") >= 3
55              and ml.nlu_classifier(.text).language == "english"
56      )
57    )
58  )  
59
60tags:
61  - "Attack surface reduction"
62attack_types:
63  - "Spam"
64detection_methods:
65  - "Content analysis"
66  - "Sender analysis"
67  - "Natural Language Understanding"
68id: "122ea794-f619-5f29-acb2-83261d8f81fc"

Related rules

to-top