Extortion / Sextortion - PDF attachment leveraging breach data from freemail sender
Detects sextortion attempts leveraging breach data, including names, addresses, phone numbers and frequently using Google Maps/Bing Maps streetview images to bolster confidence and fear.
Sublime rule (View on GitHub)
1name: "Extortion / Sextortion - PDF attachment leveraging breach data from freemail sender"
2description: "Detects sextortion attempts leveraging breach data, including names, addresses, phone numbers and frequently using Google Maps/Bing Maps streetview images to bolster confidence and fear."
3type: "rule"
4severity: "high"
5source: |
6 type.inbound
7
8 // sender is a freemail domain
9 and sender.email.domain.root_domain in $free_email_providers
10
11 // attachment filename is the same as the subject
12 and any(attachments,
13 (
14 strings.ilevenshtein(strings.concat(subject.subject,
15 ".",
16 .file_extension
17 ),
18 .file_name
19 ) <= 1
20 )
21 or strings.contains(.file_name, subject.subject)
22 )
23
24 // body contains a US address, or the body is the subject
25 and (
26 regex.icontains(body.current_thread.text,
27 '\d+\s[\w\s.]+(?:\n)?[\w\s]+\s[A-Z]{2}\s\d{5}(?:-\d{4})?(?:\n)?|\d+\s[\w\s.]+(?:Street|St|Avenue|Ave|Boulevard|Blvd|Road|Rd|Drive|Dr|Lane|Ln|Court|Ct|Way|Place|Pl|Terrace|Ter|Circle|Cir|Parkway|Pkwy|Trail|Trl|Highway|Hwy|Loop)\b\.?',
28 // a Canadian address
29 '\d+\s[\w\s.]+(?:\n)?[\w\s]+\s((?:Ontario|ON)|(?:Quebec|QC)|(?:Nova Scotia|NS)|(?:New Brunswick|NB)|(?:Manitoba|MB)|(?:British Columbia|BC)|(?:Prince Edward Island|PEI?)|(?:Saskatchewan|SK)|(?:Alberta|AB)|(?:Newfoundland and Labrador|NL)|(?:Yukon|YT)|(?:Northwest Territories|NT)|(?:Nunavut|NU))\s*[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][ -]?\d[ABCEGHJ-NPRSTV-Z]\d'
30 )
31 or subject.subject == body.current_thread.text
32 )
33
34 // there's a PDF attachment with an image at a depth of one, measuring 148x148 and containing a QR code that is a BTC address
35 and any(attachments,
36 .file_type == "pdf"
37 and any(file.explode(.),
38 (
39 (.depth == 1 and .flavors.mime == "image/jpeg")
40 and (
41 .scan.exiftool.image_height == 148
42 and .scan.exiftool.image_width == 148
43 and regex.match(.scan.qr.data,
44 '(1[a-km-zA-HJ-NP-Z1-9]{25,34}|3[a-km-zA-HJ-NP-Z1-9]{25,34}|bc1[qp-z0-9]{39,59})'
45 )
46 )
47 )
48 or (
49 any(.scan.strings.strings,
50 regex.icontains(.,
51 'Amount(?:\s*\w+){0,3}\s*:?\s*(?:USD\s*)?(?:\$\s?\d+|\d+\s?\$?)'
52 )
53 )
54 and any(.scan.strings.strings,
55 regex.icontains(.,
56 '(\bBITCOIN\b|\bBTC\b|\bLTC\b|Wallet)'
57 )
58 )
59 )
60 )
61 )
62attack_types:
63 - "BEC/Fraud"
64tactics_and_techniques:
65 - "Free email provider"
66 - "PDF"
67 - "Social engineering"
68 - "QR code"
69detection_methods:
70 - "Content analysis"
71 - "File analysis"
72 - "QR code analysis"
73id: "efb5a213-df55-5ddc-a300-ad3a6da8e74e"