Brand impersonation: DocuSign (QR code)

Detects messages using DocuSign image based lures, referencing or including a QR code from an Unsolicited sender. These messages often lead users to phishing sites or initiate unwanted downloads.

Sublime rule (View on GitHub)

 1name: "Brand impersonation: DocuSign (QR code)"
 2description: "Detects messages using DocuSign image based lures, referencing or including a QR code from an Unsolicited sender. These messages often lead users to phishing sites or initiate unwanted downloads."
 3type: "rule"
 4severity: "high"
 5source: |
 6  type.inbound
 7  and any(attachments,
 8          (.file_type in $file_types_images or .file_type == "pdf")
 9          and (
10            any(ml.logo_detect(.).brands,
11                .name == "DocuSign" and .confidence in ("medium", "high")
12            )
13            or any(ml.logo_detect(beta.message_screenshot()).brands,
14                   .name == "DocuSign"
15            )
16          )
17  )
18  and any(attachments,
19          (
20            .file_type in $file_types_images
21            or .file_type == "pdf"
22            or .file_type in $file_extensions_macros
23          )
24          and (
25            any(file.explode(.),
26                regex.icontains(.scan.ocr.raw, 'scan|camera')
27                and regex.icontains(.scan.ocr.raw, '\bQR\b|Q\.R\.|barcode')
28            )
29            or (
30              any(file.explode(.),
31                  .scan.qr.type == "url"
32                  // recipient email address is present in the URL, a common tactic used in credential phishing attacks 
33                  and any(recipients.to,
34                          strings.icontains(..scan.qr.data, .email.email)
35  
36                          // the recipients sld is in the senders display name
37                          or any(recipients.to,
38                                 strings.icontains(sender.display_name,
39                                                   .email.domain.sld
40                                 )
41                          )
42  
43                          // the recipient local is in the body  
44                          or any(recipients.to,
45                                 strings.icontains(body.current_thread.text,
46                                                   .email.local_part
47                                 )
48                          )
49  
50                          // or the body is null 
51                          or body.current_thread.text is null
52                          or body.current_thread.text == ""
53  
54                          // or the subject contains authentication/urgency verbiage
55                          or regex.contains(subject.subject,
56                                            "(Authenticat(e|or|ion)|2fa|Multi.Factor|(qr|bar).code|action.require|alert|Att(n|ention):)"
57                          )
58                  )
59              )
60            )
61          )
62  )
63  
64  and (
65    not any(headers.hops,
66            .authentication_results.compauth.verdict is not null
67            and .authentication_results.compauth.verdict == "pass"
68            and sender.email.domain.root_domain in ("docusign.net", "docusign.com")
69    )
70  )
71  and (
72    not profile.by_sender().solicited
73    or (
74      profile.by_sender().any_messages_malicious_or_spam
75      and not profile.by_sender().any_false_positives
76    )
77  )
78    
79attack_types:
80  - "Credential Phishing"
81tactics_and_techniques:
82  - "Impersonation: Brand"
83  - "PDF"
84  - "QR code"
85  - "Social engineering"
86detection_methods:
87  - "Computer Vision"
88  - "Header analysis"
89  - "QR code analysis"
90  - "Sender analysis"
91id: "0b16c28a-3f7e-5a90-bea5-473198424431"
to-top