network-email-security
Email security review: dissect phishing samples (headers, URLs, attachments), assess a domain's spoofability via SPF/DKIM/DMARC alignment, recognize BEC patterns, and audit tenant anti-phishing contro
SKILL.mdskills/network/network-email-security/SKILL.md
GitHubEmail security & phishing analysis
When it applies
Two authorized jobs (tradecraft-scope-roe): (a) defensive — dissect a reported phishing
email or BEC attempt, extract IOCs, and recommend tenant controls (defense-* context); (b)
offensive — assess whether an in-scope domain can be spoofed (SPF/DKIM/DMARC posture) as
findings for a report. Sending simulated phishing is a separate, pentest-only track — load
social-eng-methodology first and never run it against a bug-bounty target. Never re-deliver
malicious samples to real users, and never mass-test third-party domains.
Why it works
Spoofing succeeds when a domain's authentication records are missing, weak (~all, p=none), or
misaligned — the receiving server then has no cryptographic reason to reject a forged From. And
even with perfect auth, the display name and Reply-To are unauthenticated, which is what BEC
abuses. Reading full original headers exposes the truth the mail client hides.
Method
- Full original headers ("show original" / view source). Read the
Receivedchain bottom-up — only the hops added by your infrastructure are trustworthy; early hops are sender-supplied. CheckFromvsReturn-PathvsReply-Toconsistency and theAuthentication-Resultsheader added by the receiving server. - Auth records of the sender domain:
dig TXT example.com # SPF — note -all (hard fail) vs ~all (soft) vs missing; # >10 DNS lookups voids the record entirely dig TXT _dmarc.example.com # DMARC — p=none only monitors; also check sp= (subdomains) # and rua (reporting); note relaxed vs strict alignment dig TXT <selector>._domainkey.example.com # DKIM — selectors come from the DKIM-Signature header - Content & URLs. Defang and detonate links in a sandbox (urlscan.io), not in a browser. Compare link text vs href; check lookalike/punycode domains against the real brand.
- Attachments. Static analysis / sandbox only — never open on a live host; route through
defense-malware-triage. - BEC pattern check. Display-name impersonation of an exec, urgency + payment/wire/gift-card
framing,
Reply-Toredirected to a free-mail or lookalike domain, thread hijacking. - Tenant control review (defensive engagements): anti-phishing policy, external-sender
tagging, MFA coverage, and OAuth app consent grants — consent phishing rides legitimate
identity providers, so audit authorized third-party apps (ties into
web-account-takeover). - Weaponize the IOCs — sender addresses, reply-to, URLs/domains, attachment hashes feed
defense-detection-engineering/defense-threat-huntingso the finding becomes a detection.
Gotchas
p=noneis not protection — it only reports; likewise~alllets spoofed mail through as "soft fail". Only-all+p=reject(orquarantine) actually blocks.- Subdomains are separate — without
sp=in the DMARC record,mail.example.commay be spoofable whenexample.comisn't. - Display-name spoofing passes every check — auth validates the domain, not the human name.
The real signal is the
Fromaddress domain andReply-To. - Missing DKIM selector — you can't query DKIM without the selector; pull it from the
DKIM-Signatureheader'ss=tag, or try common ones (google,selector1,default). - Forwarded mailing lists break SPF legitimately — don't flag a false positive; alignment and DKIM survival matter more there.
- Never click or detonate outside a sandbox, and never send test phishing to third parties without explicit written authorization.
Verify success
A written verdict per domain (SPF policy, DKIM validity, DMARC enforcement + alignment, spoofable yes/no with the exact gap), plus — for sample analysis — a complete IOC list and concrete tenant recommendations, each traceable to a header line or DNS record.
References
RFC 7208 (SPF) / 6376 (DKIM) / 7489 (DMARC); urlscan.io; M365/Google anti-phishing policy docs.
Portions adapted from reverse-skill by zhaoxuya520, MIT License.