Brand impersonation: Paperless Post

Detects messages containing multiple images hosted on ppassets.com (Paperless Post's asset domain) but with fewer than 3 legitimate Paperless Post links, while excluding authentic forwards/replies and messages from verified Paperless Post domains with valid DMARC authentication.

Sublime rule (View on GitHub)

 1name: "Brand impersonation: Paperless Post"
 2description: "Detects messages containing multiple images hosted on ppassets.com (Paperless Post's asset domain) but with fewer than 3 legitimate Paperless Post links, while excluding authentic forwards/replies and messages from verified Paperless Post domains with valid DMARC authentication."
 3type: "rule"
 4severity: "high"
 5source: |
 6  type.inbound
 7  and strings.contains(body.html.raw, 'ppassets.com')
 8  and length(filter(html.xpath(body.html, '//img/@src').nodes,
 9                    // calling parse_url allows url decoding to help us
10                    strings.parse_url(.raw).domain.root_domain == 'ppassets.com'
11             )
12  ) >= 2
13  and (
14    length(filter(body.links,
15                  .href_url.domain.domain == "links.paperlesspost.com"
16                  or (
17                    .href_url.domain.root_domain == "paperlesspost.com"
18                    and strings.istarts_with(.href_url.path, '/go/')
19                  )
20           )
21    ) < 2
22    or any(body.links,
23           regex.icontains(.display_text, '(?:view the card|view and reply)')
24           and .href_url.domain.root_domain != "paperlesspost.com"
25    )
26  )
27  and not (
28    (subject.is_forward or subject.is_reply)
29    and (
30      (length(headers.references) != 0 or headers.in_reply_to is not null)
31      or length(body.previous_threads) > 0
32    )
33  )
34  and not (
35    sender.email.domain.root_domain == "paperlesspost.com"
36    and headers.auth_summary.dmarc.pass
37  )  
38
39attack_types:
40  - "Credential Phishing"
41  - "Malware/Ransomware"
42tactics_and_techniques:
43  - "Impersonation: Brand"
44detection_methods:
45  - "Content analysis"
46  - "Header analysis"
47  - "HTML analysis"
48  - "Sender analysis"
49  - "URL analysis"
50id: "e9ec5e09-e50f-5d02-ad14-35a1a1442960"
to-top