Attachment: PDF with version-only producer and default, anonymized or missing metadata
Detects PDF attachments whose EXIF producer field contains only a version string (no software or product name) combined with default, anonymized or missing metadata—untitled document, anonymous creator/author, and unspecified subject—and embedded OCR text prompting the recipient to open the document. This combination of an unnamed generation tool, placeholder/missing metadata, and an open-document lure prompt is characteristic of automated PDF-generation kits used in credential phishing and BEC lures.
Sublime rule (View on GitHub)
1name: "Attachment: PDF with version-only producer and default, anonymized or missing metadata"
2description: "Detects PDF attachments whose EXIF producer field contains only a version string (no software or product name) combined with default, anonymized or missing metadata—untitled document, anonymous creator/author, and unspecified subject—and embedded OCR text prompting the recipient to open the document. This combination of an unnamed generation tool, placeholder/missing metadata, and an open-document lure prompt is characteristic of automated PDF-generation kits used in credential phishing and BEC lures."
3type: "rule"
4severity: "medium"
5source: |
6 type.inbound
7 and any(attachments,
8 .file_type == "pdf"
9 //
10 // This rule makes use of a beta feature and is subject to change without notice
11 // using the beta feature in custom rules is not suggested until it has been formally released
12 //
13 and any([beta.parse_exif(.)],
14 regex.imatch(.producer, '[\d.\s()]*\d[\d.\s()]*')
15 // placeholder or blank document info... exiftool returns "" for absent keys,
16 // so a stripped info dict satisfies every arm
17 and 2 of (
18 .title in~ ("untitled", ""),
19 .creator in~ ("anonymous", ""),
20 .author in~ ("anonymous", ""),
21 (
22 any(.fields, .key == "Subject" and .value =~ "unspecified")
23 or not any(.fields, .key == "Subject" and .value != "")
24 )
25 )
26 )
27 and regex.icontains(beta.ocr(.).text,
28 '\bopen(?:s|ed|ing)?\b[\s\S]{0,30}document'
29 )
30 )
31attack_types:
32 - "BEC/Fraud"
33 - "Credential Phishing"
34tactics_and_techniques:
35 - "Image as content"
36 - "Social engineering"
37 - "Evasion"
38detection_methods:
39 - "Exif analysis"
40 - "Optical Character Recognition"
41 - "Content analysis"
42id: "40f73aea-39cf-5a36-a9bc-267bdf0f7cfc"