Skip to content
Skillpedia
Analysis & spreadsheets35k · #5480

analyzing-pdf-malware-with-pdfid

Helps your agent analyze malicious PDF files without opening them. It finds dangerous code and helps understand how the attack works.

What it does

This tool analyzes suspicious PDF files to find malicious code, like JavaScript or exploits, without needing to open the document. It helps identify how an attack might have started and extract dangerous parts for further analysis.

When to use it

  • ✓When you receive a suspicious PDF attachment via email.
  • ✓If you need to check if a PDF contains malicious code before opening it.
  • ✓To investigate how an attack using a PDF might have occurred.

Example of what to ask your AI

“Analyze this PDF to see if it contains malicious code.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/analyzing-pdf-malware-with-pdfid/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/analyzing-pdf-malware-with-pdfid/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

The tool uses other programs to examine the PDF's internal structure. It looks for danger signs, like hidden scripts or commands that automatically execute actions, without opening the file.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-pdf-malware-with-pdfid

Or download just the file:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/analyzing-pdf-malware-with-pdfid/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Analyzing PDF Malware with PDFiD

When to Use

  • A suspicious PDF attachment has been flagged by email security or reported by a user
  • You need to determine if a PDF contains embedded JavaScript, shellcode, or exploit code
  • Triaging PDF documents before opening them in a sandbox or analysis environment
  • Extracting embedded executables, scripts, or URLs from malicious PDF objects
  • Analyzing PDF exploit kits targeting Adobe Reader or other PDF viewer vulnerabilities

Do not use for analyzing the rendered visual content of a PDF; this is for structural analysis of the PDF file format for malicious objects.

Prerequisites

  • Python 3.8+ with Didier Stevens' PDF tools installed (pip install pdfid pdf-parser)
  • peepdf installed for interactive PDF analysis (pip install peepdf)
  • pdftotext from poppler-utils for extracting text content safely
  • YARA with PDF-specific rules for malware family identification
  • Isolated analysis VM without a PDF reader installed (prevent accidental opening)
  • CyberChef for decoding embedded Base64, hex, or deflate streams

Workflow

Step 1: Initial Triage with PDFiD

Scan the PDF for suspicious keywords and structures:

# Run PDFiD to identify suspicious elements
pdfid suspect.pdf

# Expected output analysis:
# /JS           - JavaScript (HIGH risk)
# /JavaScript   - JavaScript object (HIGH risk)
# /AA           - Auto-Action triggered on open (HIGH risk)
# /OpenAction   - Action on document open (HIGH risk)
# /Launch       - Launch external application (HIGH risk)
# /EmbeddedFile - Embedded file (MEDIUM risk)
# /RichMedia    - Flash content (MEDIUM risk)
# /ObjStm       - Object stream (used for obfuscation)
# /URI          - URL reference (contextual risk)
# /AcroForm     - Interactive form (MEDIUM risk)

# Run with extra detail
pdfid -e suspect.pdf

# Run with disarming (rename suspicious keywords)
pdfid -d suspect.pdf
PDFiD Risk Assessment:
━━━━━━━━━━━━━━━━━━━━━
HIGH RISK indicators (any count > 0):
  /JS, /JavaScript  -> Embedded JavaScript code
  /AA               -> Automatic Action (triggers without user interaction)
  /OpenAction       -> Code runs when document is opened
  /Launch           -> Can launch external executables
  /JBIG2Decode      -> Associated with CVE-2009-0658 exploit

MEDIUM RISK indicators:
  /EmbeddedFile     -> Contains embedded files (could be EXE/DLL)
  /RichMedia        -> Flash/multimedia (Flash exploits)
  /AcroForm         -> Form with possible submit action
  /XFA              -> XML Forms Architecture (complex attack surface)

LOW RISK indicators:
  /ObjStm           -> Object streams (obfuscation technique)
  /URI              -> External URL references
  /Page             -> Number of pages (context only)

Step 2: Parse PDF Structure with pdf-parser

Examine suspicious objects identified by PDFiD:

# List all objects referencing JavaScript
pdf-parser --search "/JavaScript" suspect.pdf
pdf-parser --search "/JS" suspect.pdf

# List all objects with OpenAction
pdf-parser --search "/OpenAction" suspect.pdf

# Extract a specific object by ID (example: object 5)
pdf-parser --object 5 suspect.pdf

# Extract and decompress stream content
pdf-parser --object 5 --filter --raw suspect.pdf

# Search for embedded files
pdf-parser --search "/EmbeddedFile" suspect.pdf

# List all objects with their types
pdf-parser --stats suspect.pdf

Step 3: Extract and Analyze Embedded JavaScript

Pull out JavaScript code from PDF objects:

# Extract JavaScript using pdf-parser
pdf-parser --search "/JS" --raw --filter suspect.pdf > extracted_js.txt

# Alternative: Use peepdf for interactive JavaScript extraction
peepdf -f -i suspect.pdf << 'EOF'
js_analyse
EOF

# peepdf interactive commands for JS analysis:
# js_analyse          - Extract and show all JavaScript code
# js_beautify         - Format extracted JavaScript
# js_eval <object>    - Evaluate JavaScript in sandboxed environment
# object <id>         - Display object content
# rawobject <id>      - Display raw object bytes
# stream <id>         - Display decompressed stream
# offsets             - Show object offsets in file
# Python script for comprehensive PDF JavaScript extraction
import subprocess
import re

# Extract all streams and search for JavaScript
result = subprocess.run(
    ["pdf-parser", "--stats", "suspect.pdf"],
    capture_output=True, text=True
)

# Find object IDs containing JavaScript references
js_objects = []

…
FAQ

Why shouldn't I open the suspicious PDF?

Opening a malicious PDF can execute the dangerous code, infecting your computer or stealing information.

What are 'exploits' in a PDF?

Exploits are pieces of code that take advantage of vulnerabilities in software (like PDF readers) to perform unwanted actions.

What is JavaScript in a PDF?

It's a type of code that can be embedded in PDFs to add interactivity, but it can also be used for malicious purposes.

Details

Original description by the author

Analyzes malicious PDF files using PDFiD, pdf-parser, and peepdf to identify embedded JavaScript, shellcode, exploits, and suspicious objects without opening the document. Determines the attack vector and extracts embedded payloads for further analysis. Activates for requests involving PDF malware analysis, malicious document analysis, PDF exploit investigation, or suspicious attachment triage. '

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularity

GitHub stars
35k
Ranking position
#5480
License
Apache-2.0
Updated
8/31/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills