Phishing & Email Investigation

// SOC Analyst Reference  ·  Updated August 2026  ·  CMTA Cyber

Overview

Phishing remains the leading initial access vector for attackers - responsible for the majority of data breaches, ransomware infections, and business email compromise incidents. The ability to quickly and accurately investigate suspicious emails is one of the most critical skills a SOC analyst can have.

This guide walks through the full email investigation process - from reading raw email headers to analyzing malicious URLs and attachments - giving analysts a structured methodology to triage, investigate, and respond to phishing reports effectively.

// Key Principle
Never click links or open attachments in a suspicious email on your primary workstation. Always analyze in an isolated environment or use online sandboxes and analysis tools.

Phishing Investigation - Quick Reference

StepActionTool
1Obtain raw email with full headersEmail client / EML export
2Analyze email headers - trace delivery pathMXToolbox, Google Header Analyzer
3Check SPF, DKIM, DMARC authentication resultsHeaders, MXToolbox
4Identify and analyze URLsVirusTotal, URLScan.io, URLVoid
5Analyze attachments in sandboxAny.run, VirusTotal, Hybrid Analysis
6Check sender reputation and domain ageWhois, MXToolbox, Shodan
7Determine scope - how many recipientsSIEM / Email gateway
8Contain - block sender, pull emails, reset credentials if clickedEmail gateway, AD/IdP
9Document findings and escalate if neededTicketing system

Email Header Analysis

Email headers contain the full delivery trail of a message - every server that handled the email leaves a trace. Reading headers is the foundation of any phishing investigation and reveals the true origin of a message regardless of what the visible From field says.

How to Get Full Email Headers

Email ClientHow to Access Headers
GmailOpen email → Three dots menu → Show original
Outlook (Desktop)File → Properties → Internet headers
Outlook (Web)Three dots → View → View message source
Apple MailView → Message → All Headers
ThunderbirdView → Message Source (Ctrl+U)
Microsoft 365 AdminExchange Admin Center → Mail flow → Message trace

Key Email Header Fields

Header FieldDescriptionWhat to Look For
FromDisplay name and email address shown to recipientSpoofed domains, lookalike addresses, display name tricks
Reply-ToWhere replies are sent - can differ from FromDifferent domain than From = suspicious
Return-PathBounce address - often reveals true senderMismatch with From domain = likely spoofed
ReceivedServer delivery chain - read bottom to topUnexpected foreign IPs, unusual mail servers
X-Originating-IPIP address of the original sending clientVPN/TOR/datacenter IPs, geographic anomalies
Message-IDUnique identifier for the emailMalformed IDs can indicate spam tools
X-MailerEmail client used to sendMass mailer tools, unusual sending software
DateTimestamp when email was sentFuture dates, timezone anomalies
Authentication-ResultsSPF, DKIM, DMARC pass/fail resultsAny fail result is a major red flag

Reading the Received Chain

The Received headers show every mail server that handled the message. Read them from bottom to top - the bottom entry is where the email originated, the top entry is where it was delivered.

# Example Received chain - read BOTTOM to TOP
# Bottom = origin, Top = destination

Received: from mail.yourcompany.com (10.0.0.5)   ← 3. Delivered to your server
  by mx.yourcompany.com; Wed, 26 Aug 2026 14:32:01 +0000

Received: from smtp-relay.sendgrid.net (167.89.x.x)  ← 2. Passed through relay
  by mail.yourcompany.com; Wed, 26 Aug 2026 14:31:58 +0000

Received: from attacker-server.ru (185.220.x.x)   ← 1. TRUE ORIGIN
  by smtp-relay.sendgrid.net; Wed, 26 Aug 2026 14:31:55 +0000

# Key fields to extract from each Received header:
# - Hostname claimed by sending server
# - Actual IP address in parentheses
# - Timestamp
# Cross-reference claimed hostname vs actual IP using reverse DNS

SPF / DKIM / DMARC

Email authentication protocols are the primary technical defense against sender spoofing. Understanding pass/fail results is essential for accurate phishing triage.

SPF - Sender Policy Framework

SPF specifies which mail servers are authorized to send email on behalf of a domain. A receiving server checks whether the sending IP is listed in the sender domain's SPF DNS record.

SPF ResultMeaningThreat Level
passSending IP is authorized by the domain's SPF recordLow
failSending IP is explicitly not authorized - likely spoofedHigh
softfailIP not authorized but domain hasn't set hard fail policyMedium
neutralDomain made no assertion about the IPLow-Medium
noneNo SPF record exists for the domainMedium
permerrorSPF record has a permanent errorMedium

DKIM - DomainKeys Identified Mail

DKIM adds a cryptographic signature to outgoing emails. The receiving server verifies the signature using the public key published in the sender's DNS records. A valid DKIM signature proves the email content was not modified in transit and originated from the claimed domain.

DKIM ResultMeaningThreat Level
passSignature valid - email not tampered with, domain verifiedLow
failSignature invalid - email may have been modified or forgedHigh
noneNo DKIM signature presentMedium
temperrorTemporary DNS lookup failure - retryLow

DMARC - Domain-based Message Authentication

DMARC builds on SPF and DKIM by allowing domain owners to specify what should happen to emails that fail authentication - none (monitor), quarantine (spam), or reject (block).

# Example DMARC DNS record
_dmarc.example.com TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com; pct=100"

# Key tags:
# p=none       → Monitor only, no enforcement (weak)
# p=quarantine → Failed emails go to spam
# p=reject     → Failed emails are rejected outright (strongest)
# rua          → Aggregate report email address
# ruf          → Forensic report email address
# pct          → Percentage of mail subjected to policy
// Important Note
A DKIM pass does NOT mean the email is safe. Attackers can register lookalike domains (e.g. paypa1.com) and have perfectly valid SPF, DKIM, and DMARC for that domain. Always check the actual domain, not just the authentication result.

Phishing Indicators Checklist

Use this checklist when triaging a reported suspicious email. The more indicators present, the higher the confidence it is malicious.

Sender Indicators

Content Indicators

Technical Indicators

IndicatorDescriptionSeverity
HTML only emailNo plain text version - common in bulk phishing toolsLow
Tracking pixels1x1 images used to confirm email openedLow
Base64 encoded contentObfuscated email body to bypass filtersMedium
Redirect chainsMultiple URL redirects to hide final destinationHigh
Credential harvesting pageURL loads a login page mimicking legitimate serviceCritical
Malicious macroOffice document with VBA macro requesting enable contentCritical
Living-off-the-land attachment.lnk, .hta, .iso files executing system commandsCritical

URL Analysis

Malicious URLs are present in the vast majority of phishing emails. Safe analysis requires using tools that visit the URL in an isolated environment - never click directly from your workstation.

URL Analysis Tools

ToolPurposeURL
URLScan.ioScreenshots page, extracts IPs, domains, resources loadedurlscan.io
VirusTotalMulti-engine URL scanning, domain reputationvirustotal.com
URLVoidBlacklist check across multiple threat intelligence sourcesurlvoid.com
BrowserlingVisit URL in isolated cloud browserbrowserling.com
Any.runInteractive sandbox - click through the full phishing flowany.run
Google Safe BrowsingCheck if URL is in Google's malware/phishing databasetransparencyreport.google.com
Whois / RDAPDomain registration date and registrant infowho.is / rdap.org

URL Defanging

When sharing or documenting malicious URLs in reports, always defang them to prevent accidental clicks and ensure the URL isn't rendered as a hyperlink.

# Defanging conventions
# Replace . with [.]
# Replace http with hxxp
# Replace :// with ://

# Original (dangerous)
http://malicious-domain.com/steal-creds

# Defanged (safe to share)
hxxp://malicious-domain[.]com/steal-creds

# Python defang
url = "http://malicious.com/phish"
defanged = url.replace("http", "hxxp").replace(".", "[.]")
print(defanged)  # hxxp://malicious[.]com/phish

Lookalike Domain Detection

# Common lookalike techniques to check
paypal.com      → paypa1.com      (character substitution - l→1)
microsoft.com   → mlcrosoft.com   (character swap)
amazon.com      → amazon-support.com  (subdomain trick)
apple.com       → apple.com.verify-account.net  (domain after legitimate name)
google.com      → goog1e.com      (homoglyph - l→1)
bankofamerica.com → bankofamerica.secure-login.com

# Tools for detecting lookalikes
dnstwist - generates and checks permutations of a domain
URLCrazy - similar domain generation
# Check registration date - recent = suspicious

Attachment Analysis

Malicious attachments are the second most common phishing delivery method after links. Never open attachments from suspicious emails directly - always analyze in an isolated sandbox environment.

Suspicious Attachment Types

File TypeRiskCommon Malware Technique
.docm / .xlsmCriticalVBA macros executing PowerShell or downloading payloads
.lnkCriticalWindows shortcuts executing hidden commands
.iso / .imgCriticalDisk images bypassing email attachment filters
.htaCriticalHTML application executing scripts with elevated trust
.pdfHighEmbedded links, JavaScript, or exploit code
.zip / .rar (password protected)HighBypasses email AV scanning - password in email body
.js / .vbsCriticalScript files executing malicious code directly
.exe / .msiCriticalDirect malware delivery - usually blocked by email gateways

Safe Attachment Analysis Tools

ToolPurposeCost
Any.runInteractive sandbox - watch malware execute in real timeFree/Paid
VirusTotalMulti-engine static analysis, community reportsFree
Hybrid AnalysisFull behavioral sandbox analysis with network captureFree
Joe SandboxDeep behavioral analysis with MITRE ATT&CK mappingFree/Paid
Cuckoo SandboxOpen source self-hosted malware sandboxFree
oletoolsAnalyze Office documents for macros without openingFree
pdfid / pdf-parserAnalyze PDF structure without executingFree
ExifToolExtract metadata from files - reveals authorship infoFree
# Analyze Office document for macros without opening
pip install oletools
olevba suspicious.docm        # Extract and display VBA macro code
oleid suspicious.docm         # Quick indicator check

# Analyze PDF without opening
pdfid suspicious.pdf          # Check for JavaScript, actions, embedded files
pdf-parser suspicious.pdf     # Deep structure analysis

# Get file metadata
exiftool suspicious.pdf       # Author, creation date, software used
exiftool suspicious.docx      # May reveal attacker's username or company

# Hash the file for IOC sharing
sha256sum suspicious.docm
md5sum suspicious.docm

# Check hash on VirusTotal
# https://www.virustotal.com/gui/file/[SHA256HASH]

Business Email Compromise (BEC)

BEC is a sophisticated form of phishing where attackers impersonate executives, vendors, or trusted partners to trick employees into transferring funds, sharing sensitive data, or changing payment details. BEC attacks cause billions in losses annually and often have no malicious links or attachments - making them harder to detect with technical controls alone.

Common BEC Scenarios

BEC TypeDescriptionRed Flags
CEO FraudAttacker impersonates CEO requesting urgent wire transfer or gift cardsUrgency, secrecy request, unusual payment method
Vendor ImpersonationAttacker poses as known vendor requesting bank account changeNew bank details, different email domain, urgency
Attorney ImpersonationAttacker poses as lawyer demanding confidential wire transferLegal urgency, secrecy, time pressure
Employee Payroll DiversionAttacker poses as employee requesting direct deposit account changeUnusual request channel, timing before payday
Account CompromiseAttacker uses legitimate compromised email account to send BECSPF/DKIM pass but unusual request, sent from mobile

BEC Detection Indicators

// BEC Response
If a wire transfer was made to a fraudulent account, contact your bank's fraud department immediately. The FBI IC3 also has a Recovery Asset Team (RAT) - report at ic3.gov within 72 hours for the best chance of recovery.

Investigation Tools

ToolPurposeCost
MXToolboxEmail header analysis, blacklist check, SPF/DKIM/DMARC lookupFree
Google Admin ToolboxEmail header analyzer with visual delivery chainFree
PhishToolPurpose-built phishing investigation platformFree/Paid
VirusTotalURL, file, and IP/domain reputation scanningFree
URLScan.ioSafe URL browsing with screenshot and resource analysisFree
Any.runInteractive malware sandbox for attachments and URLsFree/Paid
Hybrid AnalysisFree behavioral sandbox for file analysisFree
dnstwistDetect lookalike/typosquatted domainsFree
oletoolsOffice document macro analysis without executionFree
SpamAssassinOpen source spam and phishing scoring engineFree
EmailRep.ioEmail address reputation checkFree
IPQSIP, URL, email, and phone reputation scoringFree/Paid

Investigation Workflow

PHISHING INVESTIGATION WORKFLOW

1. RECEIVE & TRIAGE (< 5 minutes)
   ├── Obtain raw email with full headers (EML format preferred)
   ├── Note: did user click link or open attachment?
   ├── Note: how many recipients received this email?
   └── Assign severity: Low / Medium / High / Critical

2. HEADER ANALYSIS (5-10 minutes)
   ├── Extract: From, Reply-To, Return-Path, X-Originating-IP
   ├── Trace Received chain - identify true origin IP
   ├── Check SPF / DKIM / DMARC results
   ├── Look up sending IP reputation (VirusTotal, AbuseIPDB)
   └── Check sender domain registration date (Whois)

3. CONTENT ANALYSIS (5-10 minutes)
   ├── Identify all URLs - defang before documenting
   ├── Identify all attachments - note file types and hashes
   ├── Check for urgency, generic greeting, grammar issues
   └── Assess BEC indicators if no links/attachments

4. URL ANALYSIS (5-15 minutes)
   ├── Submit all URLs to URLScan.io
   ├── Check each URL on VirusTotal
   ├── Verify destination - credential harvesting page?
   └── Check for redirect chains

5. ATTACHMENT ANALYSIS (10-20 minutes)
   ├── Hash file (SHA256) and check VirusTotal
   ├── Submit to Any.run or Hybrid Analysis sandbox
   ├── For Office docs: run olevba to extract macros
   └── Document all IOCs: IPs, domains, hashes, URLs

6. SCOPE ASSESSMENT
   ├── Query email gateway - how many mailboxes received this?
   ├── Query SIEM - did any user click the link?
   ├── Query SIEM - did any user open the attachment?
   └── Identify all potentially affected users

7. CONTAINMENT
   ├── Block sender domain/IP in email gateway
   ├── Pull/quarantine emails from all mailboxes
   ├── If link was clicked: isolate endpoint, reset credentials
   ├── If attachment opened: isolate endpoint, full IR process
   └── Notify affected users

8. DOCUMENTATION & ESCALATION
   ├── Document all findings and IOCs
   ├── Escalate based on severity and user interaction
   └── Submit IOCs to threat intel platform (MISP/OpenCTI)

Reporting & Escalation

Escalation Criteria

ScenarioSeverityAction
Phishing email received, no interactionLowBlock IOCs, pull email, document, close
User clicked link, no credentials enteredMediumIsolate if possible, check for drive-by download, monitor
User entered credentials on phishing pageHighImmediate credential reset, MFA review, full investigation
User opened malicious attachmentHighIsolate endpoint, full IR process, check for lateral movement
BEC - wire transfer or data sentCriticalContact bank immediately, executive notification, legal/compliance
Widespread campaign - multiple users affectedCriticalFull incident response, executive notification, possible breach notification

Phishing Report Template

PHISHING INVESTIGATION REPORT
Ticket: [ID]
Date: [Date]
Analyst: [Name]
Severity: Low / Medium / High / Critical

SUMMARY
Brief description of the phishing attempt and outcome.

EMAIL DETAILS
  From:          attacker@evil.com
  Display Name:  PayPal Security
  Reply-To:      different@other.com
  Subject:       Urgent: Your account has been suspended
  Date Received: 2026-08-26 14:32:01 UTC
  Recipients:    [N] users

AUTHENTICATION RESULTS
  SPF:   FAIL
  DKIM:  NONE
  DMARC: FAIL

SENDER ANALYSIS
  Sending IP:    185.220.x.x (TOR exit node)
  Domain Age:    3 days (registered 2026-08-23)
  Blacklisted:   Yes (VirusTotal 12/89)

INDICATORS OF COMPROMISE
  URLs:
    hxxp://paypa1[.]com/verify (VirusTotal: 45/89 malicious)
  Attachments:
    invoice.docm (SHA256: abc123...) - VBA macro detected
  IPs:
    185.220.x.x
  Domains:
    paypa1[.]com

USER INTERACTION
  [N] users clicked the link
  [N] users entered credentials
  [N] users opened attachment

CONTAINMENT ACTIONS TAKEN
  ✓ Sender domain blocked in email gateway
  ✓ Emails pulled from [N] mailboxes
  ✓ Credentials reset for affected users
  ✓ IOCs submitted to threat intel platform

RECOMMENDATIONS
  - Enable MFA for all users
  - Conduct phishing awareness training
  - Review email gateway filtering rules