| name | email-forensics |
| description | Phishing & email forensics analysis. Parses .eml (Python stdlib) and .msg (Outlook, via extract-msg) files. Extracts SPF/DKIM/DMARC verdicts from Authentication-Results headers, parses the Received routing chain (who sent to whom, hops, timestamps), and extracts URLs/IPs/email addresses from the body for IOC chaining to intel-skill. Trigger when user asks to analyze a phishing email, check email authentication, trace email routing, extract IOCs from an .eml/.msg file, or investigate a suspicious email. |
| metadata | {"clawdbot":{"emoji":"๐ง","commands":["headers","auth","route","urls","full"],"arg_template":"scripts/eml_analyst.py {command} {args}","timeout":30,"requires":{"bins":["python"],"python_libs":["html2text"]},"install":[{"id":"pip-email-core","kind":"pip","packages":["html2text"],"label":"Install html2text for HTML body parsing (core)"},{"id":"pip-email-msg","kind":"pip","optional":true,"packages":["extract-msg","dkimpy"],"label":"Optional: .msg (Outlook) support + DKIM verification"}],"commands_schema":{"headers":{"properties":{"path":{"type":"string","description":"Path to .eml or .msg file"}},"required":["path"]},"auth":{"properties":{"path":{"type":"string","description":"Path to .eml or .msg file"}},"required":["path"]},"route":{"properties":{"path":{"type":"string","description":"Path to .eml or .msg file"}},"required":["path"]},"urls":{"properties":{"path":{"type":"string","description":"Path to .eml or .msg file"}},"required":["path"]},"full":{"properties":{"path":{"type":"string","description":"Path to .eml or .msg file"},"chain":{"type":"boolean","default":false,"description":"Format output as chainable IOC JSON for intel-skill enrichment"}},"required":["path"]}}}} |
Email Forensics โ Phishing & EML analysis
ื ืืชืื ืคืืจื ืื ืฉื ืงืืฆื ืืืืืื (.eml / .msg) ืืืืืื ืคืืฉืื ื ืืืืืืฅ IOCs.
ืืคืจืง ืืช ืชืฉืชืืช ืืชืืงืฃ: ืืืืืช SPF/DKIM/DMARC, ื ืชืื ื ืืชืื, ืืืชืืืืช ืืืื ืืืช ืืืืฃ.
ืืืืืืช
- SPF/DKIM/DMARC โ ืงืืจื ืืช
Authentication-Results header (ืืฉืจืช ืืืงืื ืืืจ ืืืืช)
- Received chain โ ืืคืจืง ืืช ื ืชืื ืื ืืชืื: ืืโืื, ืืื hops, timestamps
- Key headers โ From, Reply-To, Return-Path, X-Originating-IP, X-Mailer, X-Spam-Status
- Body IOCs โ URLs, IPs, ืืืชืืืืช ืืืืืื ืืืืืฃ (text + HTML)
- ืฉืจืฉืืจ ื-intel-skill โ ืคืื JSON ืขื domains/IPs/URLs ืืืขืฉืจืช OSINT
Quick start
python {baseDir}/scripts/eml_analyst.py headers --path ~/Downloads/suspicious.eml
python {baseDir}/scripts/eml_analyst.py auth --path ~/Downloads/suspicious.eml
python {baseDir}/scripts/eml_analyst.py route --path ~/Downloads/suspicious.eml
python {baseDir}/scripts/eml_analyst.py urls --path ~/Downloads/suspicious.eml
python {baseDir}/scripts/eml_analyst.py full --path ~/Downloads/suspicious.eml --chain
python {baseDir}/scripts/eml_analyst.py full --path ~/Outlook/suspicious.msg --chain
ืคืงืืืืช ื ืชืืืืช
| ืคืงืืื | ืชืืืืจ | ืคืื |
|---|
headers | ืื ื-headers ืืคืืจื ืืืื | ืืงืกื ืืคืืจืื |
auth | SPF/DKIM/DMARC verdicts | ืืงืกื ืขื โ
/โ/โ ๏ธ |
route | ื ืชืื ื ืืชืื (Received chain) | ืจืฉืืืช hops |
urls | URLs/IPs/emails ืืืืืฃ | ืจืฉืืื ืืงืืืืจืช |
full | ื ืืชืื ืืื | ืืงืกื + JSON (ืขื --chain) |
ืฉืจืฉืืจ ื-intel-skill
ืืคืื ืฉื full --chain ืืกืชืืื ื-JSON ืืคืจืืืืงืื ืืืฉืืชืฃ:
{
"iocs": {"domains": ["..."], "ips": ["..."], "urls": ["..."], "hashes": []},
"source": "email-forensics",
"chain_to": "intel-skill",
"stats": {"raw_domains": 20, "raw_ips": 8, "filtered_domains": 5, "filtered_ips": 3, "selected_total": 8},
ืืขืืจ ืืช ื-domains/IPs/URLs ื-intel-skill sweep ืื intel-skill cluster ืืืขืฉืจืช OSINT.
Triage โ ืกืื ืื ืืืจืืื ืืกืื ืืคื ื ืืขืฉืจื
ืฉืืืช ืกืื ืื ืืืืืืืืช (skills/_shared/ioc_triage.py) ืคืืขืืช ืืคื ื ืื ืืืช ื-JSON:
- Private IPs โ RFC1918 + loopback + link-local โ ืืืกืจืื (ืืืจ ืงืืื ื-
_body_extractor)
- Benign domains โ ืฉืืจืฉื ืืืืืื ืื ืืืืืืืืื (Microsoft, Google, AWS, Apple, Cloudflare, GitHub, Telegram ืืขืื ~25) โ ืืืกืจืื
- Top-K Selection โ ืืงืกืืืื 15 IOCs ืืืขืฉืจื (ืืืื ืืคื ืชืืจ ืืืจื)
ืืืจื: ืื ืืขืช ืงืจืืกืช intel-skill ื-Rate Limit (VT: 4 req/min) ื-Context Bloat ื-LLM.
ืชืืืช
- Core (.eml): Python stdlib
email + html2text (ืืืชืงื)
- Optional (.msg):
extract-msg โ ืืืชืงื ืืืคืฆืืื ืืืช, ืงืื ืืืืจืืจ ืืื ืื ืืกืจ
- Optional (DKIM verify):
dkimpy โ ืืืืืืช ืขืฆืืื (ืืจืืจืช ืืืื: ืงืืจื ื-Authentication-Results)