Skip to content
Skillpedia
Misc35k · #5990

investigating-phishing-email-incident

Helps your agent investigate phishing email incidents to determine impact and contain the threat.

What it does

This tool investigates reported phishing emails. It analyzes email details, checks links and attachments for danger, identifies who else received the email, and takes action to stop the attack from spreading.

When to use it

  • ✓A user reports a suspicious email.
  • ✓A dangerous email bypassed initial filters.
  • ✓We need to know how far a phishing attack has spread.

Example of what to ask your AI

“Investigate this phishing email I received.”

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/investigating-phishing-email-incident/SKILL.md

Ready-to-paste message

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

The tool examines the email's headers to check its origin and authenticity. It then tests links and attachments in a safe environment to see if they are malicious. Finally, it searches for other similar emails and takes steps to block the attack.

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 investigating-phishing-email-incident

Or download just the file:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/investigating-phishing-email-incident/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Investigating Phishing Email Incident

When to Use

Use this skill when:

  • A user reports a suspicious email via the phishing report button or helpdesk ticket
  • Email security gateway flags a message that bypassed initial filters
  • Automated detection identifies credential harvesting URLs or malicious attachments
  • A phishing campaign targeting the organization requires scope assessment

Do not use for spam or marketing emails without malicious intent — route those to email administration for filter tuning.

Prerequisites

  • Access to email gateway logs (Proofpoint, Mimecast, or Microsoft Defender for Office 365)
  • Splunk or SIEM with email log ingestion (O365 Message Trace, Exchange tracking logs)
  • Sandbox access (Any.Run, Joe Sandbox, or Hybrid Analysis) for URL/attachment detonation
  • Microsoft Graph API or Exchange Admin Center for email search and purge operations
  • URLScan.io and VirusTotal API keys

Workflow

Step 1: Extract and Analyze Email Headers

Obtain the full email headers (.eml file) from the reported message:

import email
from email import policy

with open("phishing_sample.eml", "rb") as f:
    msg = email.message_from_binary_file(f, policy=policy.default)

# Extract key headers
print(f"From: {msg['From']}")
print(f"Return-Path: {msg['Return-Path']}")
print(f"Reply-To: {msg['Reply-To']}")
print(f"Subject: {msg['Subject']}")
print(f"Message-ID: {msg['Message-ID']}")
print(f"X-Originating-IP: {msg['X-Originating-IP']}")

# Parse Received headers (bottom-up for true origin)
for header in reversed(msg.get_all('Received', [])):
    print(f"Received: {header[:120]}")

# Check authentication results
print(f"Authentication-Results: {msg['Authentication-Results']}")
print(f"DKIM-Signature: {msg.get('DKIM-Signature', 'NONE')[:80]}")

Key checks:

  • SPF: Does Return-Path domain match sending IP? Look for spf=pass or spf=fail
  • DKIM: Is the signature valid? dkim=pass confirms the email was not modified in transit
  • DMARC: Does the From domain align with SPF/DKIM domains? dmarc=fail indicates spoofing

Step 2: Analyze URLs and Attachments

URL Analysis:

import requests

# Submit URL to URLScan.io
url_to_scan = "https://evil-login.example.com/office365"
response = requests.post(
    "https://urlscan.io/api/v1/scan/",
    headers={"API-Key": "YOUR_KEY", "Content-Type": "application/json"},
    json={"url": url_to_scan, "visibility": "unlisted"}
)
scan_id = response.json()["uuid"]
print(f"Scan URL: https://urlscan.io/result/{scan_id}/")

# Check VirusTotal for URL reputation
import vt
client = vt.Client("YOUR_VT_API_KEY")
url_id = vt.url_id(url_to_scan)
url_obj = client.get_object(f"/urls/{url_id}")
print(f"VT Score: {url_obj.last_analysis_stats}")
client.close()

Attachment Analysis:

import hashlib

# Calculate file hashes
with open("attachment.docx", "rb") as f:
    content = f.read()
    md5 = hashlib.md5(content).hexdigest()
    sha256 = hashlib.sha256(content).hexdigest()

print(f"MD5: {md5}")
print(f"SHA256: {sha256}")

# Submit to MalwareBazaar for lookup
response = requests.post(
    "https://mb-api.abuse.ch/api/v1/",
    data={"query": "get_info", "hash": sha256}
)
print(response.json()["query_status"])

Submit to sandbox (Any.Run or Joe Sandbox) for dynamic analysis of macros, PowerShell execution, and C2 callbacks.

Step 3: Determine Campaign Scope

Search for all recipients of the same phishing email in Splunk:

index=email sourcetype="o365:messageTrace"
(SenderAddress="attacker@evil-domain.com" OR Subject="Urgent: Password Reset Required"
 OR MessageId="<phishing-message-id@evil.com>")
earliest=-7d
| stats count by RecipientAddress, DeliveryStatus, MessageTraceId
| sort - count

Alternatively, use Microsoft Graph API:

import requests

headers = {"Authorization": f"Bearer {access_token}"}
params = {
    "$filter": f"subject eq 'Urgent: Password Reset Required' and "
               f"receivedDateTime ge 2024-03-14T00:00:00Z",
    "$select": "sender,toRecipients,subject,receivedDateTime",
    "$top": 100
}
response = requests.get(
    "https://graph.microsoft.com/v1.0/users/admin@company.com/messages",
    headers=headers, params=params
)
messages = response.json()["value"]
print(f"Found {len(messages)} matching messages")

Step 4: Identify Impacted Users (Who Clicked)

Check proxy/web logs for users who visited the phishing URL:


…
FAQ

What are email headers?

These are technical details hidden in an email that show the path it took and who sent it, helping to identify if it's fake.

What does 'detonating' an attachment or URL mean?

It means opening or running the attachment/link in a safe, isolated environment to see if it does anything malicious, without harming your computer.

What are containment actions?

These are steps taken to stop the attack, such as deleting the email from all inboxes, blocking malicious websites, and forcing password resets for affected users.

Details

Original description by the author

Investigates phishing email incidents from initial user report through header analysis, URL/attachment detonation, impacted user identification, and containment actions using SOC tools like Splunk, Microsoft Defender, and sandbox analysis platforms. Use when a reported phishing email requires full incident investigation to determine scope and impact. '

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularity

GitHub stars
35k
Ranking position
#5990
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