Email Header Analysis — Phishing من جوّه
SPF/DKIM/DMARC، المرفقات، استخراج IOCs، وحوادث BEC
ليه تحليل الإيميل أساسي لكل محقق
حوالي 90% من اختراقات الشركات بتبدأ بإيميل. صدّقني..
كمحلل SOC أو IR، هتفتح phishing من user reports 5 لـ 20 مرة في اليوم. ده مش حاجة هتأجلها. مش هتبقى محلل وأنت ما تعرفش تقرا headers. مش هتبقى IR وأنت ما تعرفش تفرّق بين BEC وphishing عادي. ولا تتمنى.
بنية الـ Email — ما يهمّ فعلاً
SPF / DKIM / DMARC — الحراس الثلاثة
- SPF (Sender Policy Framework) — DNS TXT يحدد أي IPs مسموح لها إرسال إيميل لهذا النطاق. يفحص Return-Path.
- DKIM (DomainKeys Identified Mail) — توقيع cryptographic على parts من الإيميل. مفتاح public في DNS.
- DMARC — سياسة تحدد ماذا يحدث لو فشل SPF و DKIM (none/quarantine/reject)، و تطلب alignment بين From: و الـ authenticated domain.
# سجلات DNS مثال
# SPF
target.gov. TXT "v=spf1 include:_spf.google.com ip4:1.2.3.4 -all"
# DKIM (selector "google")
google._domainkey.target.gov. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb..."
# DMARC
_dmarc.target.gov. TXT "v=DMARC1; p=reject; rua=mailto:dmarc@target.gov; pct=100; aspf=s; adkim=s"spf=pass smtp.mailfrom=...
dkim=pass header.d=...
dmarc=pass action=none header.from=...
ثلاثة pass = الإيميل authentic. أي fail = افحص بعمق.
حيل الـ phishing اللي لازم تعرفها
- Display name spoofing — "CEO Name" <random@gmail.com>. الـ From الظاهر صحيح، الفعلي مزيّف. SPF/DMARC لا يفحصان display name.
- Lookalike domains (typosquatting) — microsoft-support.com, paypa1.com, target-gov.com. حروف Cyrillic مشابهة لـ Latin (homoglyph).
- Punycode — xn--target-2sa.com يظهر كـ tárget.com.
- Compromised legitimate domain — مهاجم اخترق mail server شركة أخرى و يرسل من نطاقها (DMARC pass!).
- Reply-to manipulation — From شرعي، Reply-To مختلف. الرد يذهب للمهاجم.
- HTML smuggling — مرفق HTML يحوي JavaScript يبني payload في الـ browser محلياً. لا download مرئي.
- Link rewriting bypass — استخدام redirector شرعي (Google, t.co, bit.ly، أو حتى موقع Microsoft نفسه عبر safelinks).
- QR codes (quishing) — صورة QR تتجاوز URL scanners. المستخدم يمسحها بهاتف خارج الحماية.
منهجية تحليل — خطوة بخطوة
- اطلب الإيميل بـ headers كاملة (.eml أو .msg). لا تكتفِ بـ screenshot.
- افحص Authentication-Results أولاً. SPF/DKIM/DMARC؟
- اقرأ Received chain من الأسفل للأعلى. ما أول mail server؟ هل من نطاق المرسِل المُدّعى؟
- قارن From, Reply-To, Return-Path. هل تتطابق؟
- افتح في sandbox فقط. لا تشغّل المرفق على workstation.
- استخرج IOCs: sender IP, sender domain, URLs (defang!), attachment hashes.
- افحص URLs على VirusTotal / urlscan.io. لكن لا تفتح الـ URL مباشرة على شبكة الشركة.
- افحص hashes على VT. ابحث في threat intel الداخلي عن مرات سابقة.
- وثّق و حدّد scope. كم مستخدم استلم؟ كم نقر؟ هل أحد دخل credentials؟
- Containment: حذف من mailboxes (Microsoft 365: Search-Mailbox أو ContentSearch + PurgeAction)، block sender domain، أضف URL لـ blocklist.
أدوات التحليل
# تحليل headers سريع
# https://mha.azurewebsites.net (Microsoft Header Analyzer)
# https://mailheader.org/
# على CLI
cat phish.eml | grep -E "^(From|To|Subject|Reply-To|Return-Path|Received|Authentication-Results):"
# استخراج URLs
cat phish.eml | grep -oE 'https?://[^[:space:]"<>]+' | sort -u
# استخراج المرفقات
ripmime -i phish.eml -d ./attachments
# أو
munpack phish.eml
# hash المرفق
sha256sum ./attachments/*
# اطّلع على مرفق Office دون فتحه
oletools/olevba.py malicious.docm # macros
oletools/oleobj.py malicious.docm # embedded objects
oletools/oleid.py malicious.docm
# إيميل بـ HTML smuggling
grep -E 'window.atob|FileSaver|saveAs' attached.html
# URLs و screenshots بأمان
urlscan.io # screenshot + DOM + IOCs
any.run # interactive sandbox للـ malware
# Blue team — Microsoft Defender for Office 365
# Threat Explorer → URL/file/sender filters
# Submissions: report ↔ admin reviewBusiness Email Compromise (BEC) — لا تشبه phishing
BEC لا يحوي malware عادةً. مهاجم يخترق أو ينتحل حساباً تنفيذياً ثم يطلب تحويل أموال، تغيير معلومات بنكية لمورّد، أو تسريب W-2 forms. الضرر السنوي عالمياً > $50 مليار حسب FBI IC3.
- إيميل من CEO/CFO يطلب تحويلاً عاجلاً، خارج القناة المعتادة.
- طلب سرّية مفرط ("don't tell anyone, this is confidential").
- ضغط زمني ("must be done before market close").
- تغيير معلومات بنكية لمورد قائم — حتى لو الإيميل يبدو من المورد.
- Reply-To يختلف عن From.
- قواعد inbox تُنشأ تلقائياً (mail forwarding rules) — عادة بعد credential phishing.
إجراءات: callback verification برقم معروف مسبقاً (لا الرقم في الإيميل). فعّل MFA على كل executive accounts. راقب Inbox Rules غير المعتادة (Microsoft 365 audit log).
Federal context — IC3 و reporting
- IC3 (Internet Crime Complaint Center) — ic3.gov. كل BEC و wire fraud يُبلَّغ هنا. الـ FBI يستطيع طلب recall للتحويل البنكي إذا أُبلِغ خلال 72 ساعة (Financial Fraud Kill Chain).
- CISA — للحوادث في البنية التحتية الحرجة (CIRCIA reporting).
- US-CERT — للمؤسسات الفيدرالية.
- NCFTA — National Cyber-Forensics & Training Alliance — شراكة public/private.
الحماية — الطبقات اللي لازم تتبني
- Email gateway (Proofpoint, Mimecast, Microsoft Defender for Office 365) — sandboxing، URL rewriting، attachment detonation.
- DMARC على p=reject لكل النطاقات — حتى parked ones.
- External email banner — "هذا الإيميل من خارج المؤسسة" — يقلل clicks بنسبة كبيرة.
- MFA على كل user — phishing الذي يسرق password وحده يفشل.
- Conditional Access — login من device غير معتاد يطلب re-MFA.
- User reporting button ("Report Phishing") مدمج في Outlook/Gmail.
- Tabletop training — ليس phishing simulation فقط؛ تدريب CFO على verification protocols.
- Detection على inbox rules الجديدة (forward-to-external، delete-on-receive).
غلطات الـ junior — اللي بتحرق التحقيق
- بياخد screenshot من الإيميل بدل الـ .eml. الـ headers ضاعت. الـ analysis ما بقاش analysis.
- بيدوس على الـ link "علشان يشوف يروح فين". من جوّه شبكة الشركة. الـ malware delivery حصل والـ analyst نفسه بقى patient zero.
- بيشارك الـ URL في Slack من غير defang. الـ link preview بيتحمّل تلقائي. كل الفريق اتعرّض.
- بيقفل الـ ticket "false positive" بدون ما يفحص الـ Authentication-Results. الـ user كان بلّغ عن BEC حقيقي. اتسرّقت 200 ألف بعد 3 أيام.
- بيعمل purge من mailboxes بدون ما يحتفظ بنسخة forensic. الـ IR بعدين ما لقاش الـ evidence.
الخلاصة: الـ phishing analysis مش "بصة سريعة". هي forensics مصغّرة. خد الـ .eml، اشتغل في sandbox، وثّق كل خطوة.
الخلاصة الناشفة
الـ user اللي بلّغ عن phishing = ميزة. اللي ما بلّغش = خطر.
الـ analyst اللي بيقفل من غير ما يفحص = البيت التاني للـ attacker.
اكتبها على ظهر إيدك: Always read the headers. Always. مفيش shortcut.