MITM یا Man-in-the-Middle یکی از قدیمی‌ترین و در عین حال پیچیده‌ترین حملات سایبری است که در آن مهاجم خود را در مسیر ارتباط میان دو طرف قرار می‌دهد و ترافیک را شنود، تغییر یا مسدود می‌کند. وجه تمایز MITM با سایر حملات این است که مهاجم نیازی به نفوذ به سرور یا کلاینت ندارد؛ او فقط از یک نقطه‌ی میانی استفاده می‌کند تا ارتباط را از دید دو طرف، سالم جلوه دهد. MITM (Man-in-the-Middle) در شبکه‌های عمومی Wi-Fi، در مسیرهای DNS، در HTTPS ضعیف و در پروتکل‌های قدیمی، همچنان یک تهدید جدی است. در این راهنما مکانیزم دقیق این حمله، انواع، روش‌های شناسایی و لایه‌های دفاعی به‌صورت مهندسی‌شده بررسی می‌شود.

چند سال پیش در یک کافه، ترافیک یک شبکه‌ی Wi-Fi عمومی را با اجازه‌ی صاحب کافه بررسی می‌کردیم. در کمتر از چند دقیقه، تعداد زیادی از کاربران به سایت‌هایی متصل شده بودند که گواهی SSL آن‌ها معتبر نبود، اما مرورگر هشدار را نادیده گرفته بود. این تجربه، اهمیت درک MITM را از یک مفهوم انتزاعی به یک واقعیت روزمره تبدیل کرد.

MITM چیست و در کدام لایه رخ می‌دهد

MITM یا Man-in-the-Middle نوعی حمله است که در آن مهاجم، بدون آنکه دو طرف ارتباط متوجه شوند، خود را در مسیر جریان داده قرار می‌دهد. در این حالت، مهاجم می‌تواند ترافیک را شنود کند، تغییر دهد، جعل کند یا مسدود کند. نکته‌ی کلیدی این است که MITM در لایه‌های مختلف شبکه قابل اجراست:

  • لایه‌ی فیزیکی: با اتصال به یک شبکه‌ی Wi-Fi عمومی و اجرای ARP Spoofing.
  • لایه‌ی شبکه: با دستکاری مسیرهای BGP یا DNS Spoofing.
  • لایه‌ی انتقال: با SSL Stripping یا نصب گواهی جعلی.
  • لایه‌ی برنامه: با پروکسی معکوس مخرب یا افشای Endpoint.

MITM اغلب با حملات دیگر ترکیب می‌شود. برای مثال، مهاجم ابتدا با فیشینگ کاربر را به یک سایت جعلی هدایت می‌کند و سپس با SSL Stripping، ارتباط را از HTTPS به HTTP تنزل می‌دهد. این ترکیب، سطح تهدید را چند برابر می‌کند.

برای درک عمیق‌تر جایگاه MITM در منظومه‌ی حملات سایبری، پست حملات سایبری چیست و چه انواعی دارد نقطه‌ی شروع مناسبی است.

مکانیزم دقیق حمله

برای درک مکانیزم MITM، باید ابتدا نحوه‌ی برقراری ارتباط در شبکه را در نظر بگیریم. در یک شبکه‌ی اترنت معمولی، دستگاه‌ها با استفاده از ARP (Address Resolution Protocol) آدرس IP را به آدرس MAC نگاشت می‌کنند. اگر مهاجم بتواند این نگاشت را دستکاری کند، می‌تواند خود را به‌عنوان دروازه (Gateway) معرفی کند.

1. ARP Spoofing

مهاجم با ارسال پاسخ‌های ARP جعلی، جدول ARP قربانی را تغییر می‌دهد و ترافیک قربانی را به سمت خود هدایت می‌کند. سپس ترافیک را به دروازه‌ی اصلی Forward می‌کند تا ارتباط مختل نشود.

# نمونه‌ی مفهومی (برای آموزش)
arpspoof -i eth0 -t 192.168.1.10 192.168.1.1
arpspoof -i eth0 -t 192.168.1.1 192.168.1.10

2. DNS Spoofing

در این حالت، مهاجم پاسخ‌های DNS را جعل می‌کند و کاربر را به یک سرور جعلی هدایت می‌کند. این حمله در شبکه‌های عمومی، به‌ویژه در ترکیب با DNS Cache Poisoning، بسیار مؤثر است.

3. SSL Stripping

مهاجم ارتباط HTTPS کاربر را به HTTP تنزل می‌دهد و سپس با سرور اصلی، خودش یک ارتباط HTTPS برقرار می‌کند. کاربر در مرورگر خود فقط HTTP می‌بیند و متوجه تنزل نمی‌شود، به‌خصوص اگر سایت مورد نظر HSTS را فعال نکرده باشد.

4. Evil Twin

مهاجم یک Access Point جعلی با نام مشابه یک شبکه‌ی معتبر ایجاد می‌کند. کاربران به‌صورت خودکار به آن متصل می‌شوند و تمام ترافیک از مسیر مهاجم عبور می‌کند.

برای مطالعه‌ی جزئیات بیشتر درباره‌ی نحوه‌ی برقراری و امنیت DNS، پست DNS چیست و چگونه کار می‌کند و DNS امن چیست منابع مفیدی هستند.

انواع حمله MITM

MITM در عمل، اشکال گوناگونی پیدا می‌کند. مهم‌ترین آن‌ها:

نوع بستر هدف اصلی
ARP Spoofing شبکه محلی شنود ترافیک داخلی
DNS Spoofing شبکه محلی یا ISP هدایت به سایت جعلی
SSL Stripping شبکه عمومی تنزل HTTPS به HTTP
Evil Twin Wi-Fi عمومی کنترل کامل ترافیک کاربر
Session Hijacking برنامه وب دزدیدن نشست کاربر
Email Hijacking پروتکل SMTP جعل ارتباط ایمیلی
BGP Hijacking لایه‌ی ISP هدایت ترافیک سطح اینترنت

هرکدام از این اشکال، در لایه‌ی متفاوتی رخ می‌دهد و به دفاع متناسب نیاز دارد. برای مثال، ARP Spoofing در سطح شبکه با Dynamic ARP Inspection قابل مقابله است، در حالی که SSL Stripping در سطح برنامه با HSTS و Certificate Pinning.

چرا HTTPS تنها راه‌حل نیست

HTTPS (Hypertext Transfer Protocol Secure) لایه‌ی رمزنگاری بین مرورگر و سرور را فراهم می‌کند، اما MITM را کاملاً از بین نمی‌برد. سه سناریو را در نظر بگیرید:

  • SSL Stripping: اگر سایت HSTS را فعال نکرده باشد، مهاجم می‌تواند کاربر را به نسخه‌ی HTTP هدایت کند و ارتباط را روی HTTPS خودش با سرور برقرار کند.
  • گواهی جعلی: اگر مهاجم بتواند یک گواهی معتبر از یک CA (Certificate Authority) نفوذشده بگیرد، می‌تواند خود را به‌عنوان سرور اصلی معرفی کند.
  • نصب گواهی مخرب روی دستگاه: اگر مهاجم به دستگاه قربانی دسترسی داشته باشد (مثلاً با بدافزار)، می‌تواند یک CA مخرب نصب کند و تمام ترافیک را رمزگشایی کند.

برای مطالعه‌ی جزئیات بیشتر درباره‌ی SSL و HTTPS، پست‌های SSL چیست و چرا سایت به آن نیاز ضروری دارد و HTTPS چیست و چه تفاوتی با HTTP دارد مراجع کامل‌تری هستند.

HTTPS یک لایه‌ی حیاتی است، اما لایه‌ی نهایی نیست. MITM در سطح گواهی، DNS، ARP و حتی در سطح Endpointها ادامه می‌یابد.

روش‌های شناسایی MITM

شناسایی MITM در عمل چالش‌برانگیز است، چون حمله به‌صورت شفاف طراحی می‌شود. اما چند نشانه وجود دارد:

  1. هشدار گواهی SSL: اگر مرورگر هشدار گواهی نامعتبر نشان دهد، احتمال MITM وجود دارد.
  2. تنزل خودکار HTTPS به HTTP: اگر آدرس سایت به‌جای https:// با http:// باز شود، نشانه‌ی SSL Stripping است.
  3. تغییر در جدول ARP: با دستور arp -a می‌توان نگاشت‌های مشکوک را دید.
  4. کندی یا قطع مکرر ارتباط: برخی حملات MITM، تأخیر قابل‌توجهی ایجاد می‌کنند.
  5. ورود به حساب‌های کاربری از مکان‌های ناشناس: اگر کاربری که در یک مکان است، از مکان دیگری وارد شود، احتمال دزدیده شدن نشست وجود دارد.
  6. استفاده از ابزارهای مانیتورینگ: Wireshark، Zeek و سایر ابزارهای تحلیل ترافیک می‌توانند الگوهای مشکوک را آشکار کنند.

در سطح سازمانی، ابزارهای IDS/IPS می‌توانند برای شناسایی الگوهای ARP Spoofing و DNS Spoofing پیکربندی شوند. لاگ‌های سرور و مرورگر نیز باید برای الگوهای غیرمعمول پایش شوند. برای مطالعه‌ی روش‌های بررسی لاگ، پست چگونه لاگ حملات سایت را بررسی کنیم مفید است.

لایه‌های دفاعی در برابر MITM

دفاع مؤثر در برابر MITM نیازمند ترکیب چند لایه است:

1. HTTPS با HSTS

HTTPS لایه‌ی پایه است، اما باید با HSTS (HTTP Strict Transport Security) تقویت شود. HSTS به مرورگر می‌گوید که تنها از HTTPS برای دامنه استفاده کند و مانع SSL Stripping می‌شود.

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

2. Certificate Pinning

در اپلیکیشن‌های موبایل و سرویس‌های حساس، Certificate Pinning اجازه می‌دهد که تنها گواهی‌های مشخصی پذیرفته شوند. این کار، حتی در صورت نفوذ به یک CA، از MITM جلوگیری می‌کند.

3. DNSSEC و DNS over HTTPS

DNSSEC امضای دیجیتال را به رکوردهای DNS اضافه می‌کند و از DNS Spoofing جلوگیری می‌کند. DNS over HTTPS (DoH) و DNS over TLS (DoT) نیز ترافیک DNS را رمزنگاری می‌کنند.

4. VPN

VPN (Virtual Private Network) ترافیک کاربر را رمزنگاری می‌کند و از دید شبکه‌ی میانی پنهان می‌سازد. اما VPN به‌تنهایی MITM را از بین نمی‌برد؛ اگر VPN خودش آلوده باشد، تبدیل به نقطه‌ی MITM می‌شود. برای مطالعه‌ی جزئیات بیشتر، پست‌های VPN چطور حریم خصوصی آنلاین را تضمین می‌کند و انتخاب VPN مناسب برای تیم‌های توسعه مفید هستند.

5. Multi-Factor Authentication

MFA حتی در صورت دزدیده شدن نشست، لایه‌ی دوم دفاعی را فراهم می‌کند. مهاجم MITM برای ورود به حساب، علاوه بر نشست، به عامل دوم نیز نیاز دارد. برای مطالعه‌ی بیشتر، پست MFA چیست و چرا ضروری است مفید است.

6. Endpoint Security

نصب گواهی مخرب روی دستگاه کاربر، یکی از راه‌های MITM است. Endpoint Security و مانیتورینگ گواهی‌های نصب‌شده، این لایه را پوشش می‌دهد.

7. Public Key Pinning در سرور

در سمت سرور، استفاده از HPKP (HTTP Public Key Pinning) و CAA (Certification Authority Authorization) می‌تواند از صدور گواهی جعلی توسط CAهای غیرمجاز جلوگیری کند. هرچند HPKP در حال حاضر deprecated شده، CAA همچنان توصیه می‌شود.

پرسش‌های پرتکرار در مورد MITM

آیا HTTPS جلوی MITM را می‌گیرد؟

بخشی از آن را، اما نه کامل. HTTPS با گواهی معتبر و HSTS، جلوی اکثر سناریوها را می‌گیرد، اما MITM در سطح گواهی، DNS و Endpoint همچنان ممکن است.

آیا VPN جلوی MITM را می‌گیرد؟

VPN ترافیک را رمزنگاری می‌کند و از دید شبکه‌ی میانی پنهان می‌سازد. اما اگر VPN خودش آلوده باشد، تبدیل به نقطه‌ی MITM می‌شود.

چطور بفهمم قربانی MITM شده‌ام؟

هشدار گواهی SSL، تنزل HTTPS به HTTP، تغییرات مشکوک در جدول ARP، و ورودهای ناشناس به حساب کاربری از نشانه‌های مهم هستند.

آیا استفاده از Wi-Fi عمومی خطرناک است؟

بله، اگر بدون VPN و بدون بررسی گواهی استفاده شود. Wi-Fi عمومی یکی از رایج‌ترین بسترهای MITM است.

آیا MITM فقط در شبکه‌های محلی رخ می‌دهد؟

خیر. BGP Hijacking و DNS Cache Poisoning در سطح اینترنت رخ می‌دهند و می‌توانند ترافیک را در مسیرهای بزرگ‌تر منحرف کنند.

آیا MFA جلوی MITM را می‌گیرد؟

MFA لایه‌ی دفاعی مهمی است، اما اگر مهاجم نشست را بدزدد و MFA در سطح نشست اعمال شود، همچنان خطر وجود دارد. MFA باید در سطح عملیات حساس نیز اعمال شود.

آیا SSL Stripping هنوز کار می‌کند؟

در سایت‌هایی که HSTS را فعال نکرده‌اند، بله. HSTS به‌طور گسترده این حمله را محدود کرده است.

ملاحظات معماری پیشرفته

در معماری‌های توزیع‌شده و پروژه‌های بزرگ، دفاع MITM پیچیدگی‌های خاص خود را پیدا می‌کند:

1. mTLS (Mutual TLS): در ارتباطات سرویس به سرویس، mTLS هر دو طرف را احراز هویت می‌کند و از MITM در سطح داخلی جلوگیری می‌کند. این الگو در سرویس‌مش‌ها و معماری‌های میکروسرویس ضروری است.

2. Service Mesh و Sidecar Proxy: در معماری‌های Service Mesh مانند Istio، هر سرویس یک Sidecar Proxy دارد که ترافیک را رمزنگاری و احراز هویت می‌کند. این الگو، دفاع را از سطح برنامه به سطح زیرساخت منتقل می‌کند.

3. Certificate Transparency: CT لاگ‌های عمومی برای همه‌ی گواهی‌های صادرشده است. با پایش CT، می‌توان صدور گواهی جعلی برای دامنه‌ی خود را شناسایی کرد.

4. Zero Trust Architecture: در معماری Zero Trust، هیچ ترافیکی به‌صورت پیش‌فرض معتبر نیست. هر درخواست باید احراز هویت و مجوزدهی شود. این الگو، دامنه‌ی نفوذ MITM را محدود می‌کند.

5. End-to-End Encryption: در پیام‌رسان‌ها و سرویس‌های حساس، E2EE ترافیک را در سطح کلاینت رمزنگاری می‌کند و حتی سرور میانی نمی‌تواند آن را بخواند.

MITM یک حمله‌ی لایه‌ای است و دفاع در برابر آن نیز باید لایه‌ای باشد. هیچ ابزار واحدی، این مسئله را حل نمی‌کند.

در انتها، باید پذیرفت که MITM از بین نمی‌رود؛ شکل و بستر آن تغییر می‌کند. با گسترش IoT، شبکه‌های 5G و سرویس‌های ابری، سطح حمله بزرگ‌تر می‌شود و دفاع باید متناسب با آن تکامل یابد. برای مطالعه‌ی روندهای آینده، پست‌های آینده حملات سایبری و ترندهای امنیت وب مفید هستند.

اگر این تجربه را در یک پروژه‌ی واقعی داشته‌اید، برای ما جالب است بدانیم کدام لایه از دفاع بیشترین اثر را در کاهش ریسک داشت: HTTPS با HSTS، VPN، یا mTLS. تجربه‌ی خودتان را در دیدگاه‌ها بنویسید؛ به‌خصوص اگر راه‌حل متفاوتی برای شناسایی MITM پیدا کرده‌اید که می‌تواند برای خواننده‌ی بعدی مفید باشد.

💡 نکته‌ی پایانی: MITM از اعتماد کورکورانه به شبکه رشد می‌کند. هرچه اعتماد کمتر و بررسی بیشتر باشد، سطح حمله باریک‌تر می‌شود.