Compensation Review With QR Code in Attached EML
Detects inbound messages containing compensation-related terms (salary, bonus, merit, etc.) combined with review/change language that include EML attachments containing QR codes or barcodes in scanned documents.
Sublime rule (View on GitHub)
1name: "Compensation Review With QR Code in Attached EML"
2description: "Detects inbound messages containing compensation-related terms (salary, bonus, merit, etc.) combined with review/change language that include EML attachments containing QR codes or barcodes in scanned documents."
3type: "rule"
4severity: "high"
5source: |
6 type.inbound
7
8 // the subject contains pay related items
9 and (
10 strings.icontains(subject.subject, 'salary')
11 or strings.icontains(subject.subject, 'compensation')
12 or regex.icontains(subject.subject, 'comp\b')
13 or regex.icontains(subject.subject, '\bpay(?:roll|\b)')
14 or strings.icontains(subject.subject, 'bonus')
15 or strings.icontains(subject.subject, 'incentive')
16 or strings.icontains(subject.subject, 'merit')
17 or strings.icontains(subject.subject, 'handbook')
18 or strings.icontains(subject.subject, 'benefits')
19 )
20 // subjects include review/updates/changes
21 and (
22 strings.icontains(subject.subject, 'review')
23 or strings.icontains(subject.subject, 'evaluation')
24 or regex.icontains(subject.subject, 'eval\b')
25 or strings.icontains(subject.subject, 'assessment')
26 or strings.icontains(subject.subject, 'appraisal')
27 or strings.icontains(subject.subject, 'feedback')
28 or strings.icontains(subject.subject, 'performance')
29 or strings.icontains(subject.subject, 'adjustment')
30 or strings.icontains(subject.subject, 'increase')
31 or strings.icontains(subject.subject, 'raise')
32 or strings.icontains(subject.subject, 'change')
33 or strings.icontains(subject.subject, 'modification')
34 or strings.icontains(subject.subject, 'distribution')
35 or regex.icontains(subject.subject, 'revis(?:ed|ion)')
36 or regex.icontains(subject.subject, 'amend(?:ed|ment)')
37 or regex.icontains(subject.subject, 'update(?:d| to)')
38 )
39 and any(filter(attachments, .content_type == "message/rfc822"),
40 any(file.parse_eml(.).attachments,
41 any(file.explode(.),
42 (
43 regex.icontains(.scan.ocr.raw, 'scan|camera')
44 and regex.icontains(.scan.ocr.raw, '\bQR\b|Q\.R\.|barcode')
45 )
46 or .scan.qr.type == "url" and .scan.qr.url.domain.valid
47 )
48 )
49 )
50attack_types:
51 - "Credential Phishing"
52tactics_and_techniques:
53 - "QR code"
54 - "Social engineering"
55detection_methods:
56 - "Computer Vision"
57 - "Content analysis"
58 - "Optical Character Recognition"
59 - "QR code analysis"
60id: "98a2f03c-4bec-556d-af84-709d41819877"