Session Hijacking چیست و چگونه از آن در امان بمانیم؟

تاریخ انتشار: ۲۰ مرداد ۱۴۰۴
زمان تقریبی مطالعه: ۱۵ دقیقه
https://www.pgtm.ir/m3bw/
Session Hijacking چیست و چگونه از آن در امان بمانیم؟
با حمله خطرناک Session Hijacking یا نشست ربایی آشنا شوید. این راهنمای کامل به زبان ساده توضیح می‌دهد که سرقت نشست چیست، چگونه کار می‌کند و مهم‌تر از همه، چگونه به عنوان کاربر و مدیر سایت از آن جلوگیری کنید.
وقتی در یک هتل اتاق می‌گیرید، یک کارت کلید دریافت می‌کنید که به شما اجازه می‌دهد تا زمان خروج، آزادانه در طبقات تردد کنید، بدون اینکه نیاز باشد هر بار کارت شناسایی خود را به پذیرش نشان دهید. در دنیای وب نیز، وقتی شما وارد یک حساب کاربری می‌شوید (مثلاً ایمیل یا شبکه اجتماعی)، سرور یک "کارت کلید دیجیتال" موقت به نام Session (نشست) به مرورگر شما می‌دهد. اما اگر کسی این کارت کلید را بدزدد چه اتفاقی می‌افتد؟
این دقیقاً همان کاری است که حمله Session Hijacking (نشست‌ربایی) انجام می‌دهد. این یک حمله سایبری خطرناک است که در آن، هکر به جای دزدیدن نام کاربری و رمز عبور شما، مستقیماً همان "کارت کلید دیجیتال" یا Session ID شما را می‌دزدد و با استفاده از آن، خود را به جای شما جا زده و به حساب کاربری‌تان دسترسی پیدا می‌کند. این مقاله راهنمای شما برای شناخت این تهدید و یادگیری روش‌های مقابله با آن است.

Session Hijacking یا نشست ربایی به زبان ساده چیست؟

برای درک عمیق‌تر این مفهوم، ابتدا باید بدانیم که پروتکل وب (HTTP) به خودی خود "فراموشکار" (Stateless) است. یعنی اگر شما در یک صفحه لاگین کنید و به صفحه دیگری بروید، سرور به طور پیش‌فرض شما را به یاد نمی‌آورد. اینجا دقیقا جایی است که Session وارد عمل می‌شود. پس از اینکه شما با نام کاربری و رمز عبور هویت خود را ثابت کردید، سرور یک شناسه منحصربه‌فرد و تصادفی به نام Session ID ایجاد کرده و آن را در یک فایل کوچک به نام کوکی (Cookie) در مرورگر شما ذخیره می‌کند. این کوکی مانند یک کارت کلید موقت عمل می‌کند. از این به بعد، مرورگر شما با هر درخواستی که به سرور ارسال می‌کند، این کارت کلید را نیز ضمیمه می‌کند تا سرور شما را به یاد بیاورد و دیگر نیازی به ورود مجدد نباشد. حمله Session Hijacking فرآیند دزدیدن یا کپی کردن همین کارت کلید (Session ID) است.
برای اینکه این فرآیند را بهتر به خاطر بسپارید، بیایید آن را با استعاره کارت کلید هتل که در مقدمه به آن اشاره کردیم، به صورت مرحله به مرحله مرور کنیم:
  • ورود با نام کاربری و رمز عبور: این مرحله، مانند فرآیند Check-in در پذیرش هتل است. شما هویت خود را با مدارک شناسایی (رمز عبور) ثابت می‌کنید.
  • دریافت Session ID (کوکی): پس از تأیید هویت، پذیرش (سرور) به شما یک کارت کلید (یک کد منحصربه‌فرد به نام Session ID) می‌دهد. از این به بعد، شما برای ورود به اتاق یا استفاده از امکانات هتل، فقط همین کارت را نشان می‌دهید.
  • حمله Session Hijacking: در این مرحله، یک هکر به طریقی کارت کلید شما (Session ID) را می‌دزدد. حالا او بدون نیاز به اینکه بداند شما چه کسی هستید یا رمز عبورتان چیست، می‌تواند با همان کارت دزدیده شده وارد اتاق شما (حساب کاربری شما) شود و به تمام اطلاعات شما دسترسی پیدا کند.
دلیل استفاده وب‌سایت‌ها از Session این است که درخواست مداوم نام کاربری و رمز عبور برای هر کلیک کاربر، عملاً غیرممکن و بسیار آزاردهنده است. Session یک توکن اعتماد موقت است که تجربه کاربری را روان می‌کند، اما همین ویژگی آن را به یک هدف جذاب برای هکرها تبدیل کرده است.

روش‌های رایج سرقت نشست

هدف از این بخش، آموزش حمله نیست، بلکه شناخت روش‌های هکرها برای تقویت سیستم دفاعی خودمان است. دانستن اینکه دزد از کدام پنجره وارد می‌شود، به ما کمک می‌کند تا همان پنجره را محکم‌تر کنیم.

شنود در شبکه‌های ناامن (Session Side-Jacking)

این یکی از ساده‌ترین و رایج‌ترین روش‌هاست، به خصوص در شبکه‌های Wi-Fi عمومی. تصور کنید در یک کافه نشسته‌اید و به شبکه Wi-Fi رایگان آن متصل شده‌اید. اگر به سایتی سر بزنید که از پروتکل امن HTTPS استفاده نمی‌کند (آدرس آن با http:// شروع می‌شود)، Session ID شما مانند یک کارت پستال بدون پاکت یا یک "رمز عبور موقت" که با صدای بلند در اتاق فریاد زده می‌شود، در شبکه منتقل می‌شود. هکری که در همان شبکه حضور دارد، می‌تواند با ابزارهای ساده شنود شبکه، این اطلاعات را به راحتی مشاهده و سرقت کند.

حملات Cross-Site Scripting (XSS)

این روش کمی پیچیده‌تر و بسیار خطرناک‌تر است. در این حالت، هکر یک قطعه کد مخرب (معمولاً جاوا اسکریپت) را در یک وب‌سایت معتبر اما آسیب‌پذیر تزریق می‌کند. این کد می‌تواند در بخش نظرات یک وبلاگ، یک پست در یک فروم، یا هر جای دیگری که محتوای تولید شده توسط کاربر را نمایش می‌دهد، پنهان شده باشد. وقتی شما به عنوان یک کاربر عادی آن صفحه را باز می‌کنید، آن کد مخرب روی مرورگر شما اجرا شده و می‌تواند کوکی نشست شما را کپی کرده و به سرور هکر ارسال کند. در این روش، شما در حال بازدید از یک سایت معتبر هستید و ممکن است هرگز متوجه دزدیده شدن اطلاعات خود نشوید.

بدافزارها و تروجان‌ها (Malware & Trojans)

اگر کامپیوتر یا موبایل شما به یک بدافزار (Malware) آلوده شده باشد، آن بدافزار می‌تواند به فایل‌های ذخیره شده توسط مرورگر شما در هارد دیسک دسترسی پیدا کند. برخی بدافزارها به طور خاص برای اسکن کردن و پیدا کردن پوشه‌های ذخیره‌سازی کوکی‌ها طراحی شده‌اند. پس از پیدا کردن این فایل‌ها، بدافزار آن‌ها را برای هکر ارسال می‌کند و به این ترتیب، هکر به تمام کارت‌های کلید دیجیتال شما برای سایت‌های مختلف دسترسی پیدا می‌کند.
روش‌های رایج Session Hijacking

چگونه به عنوان یک کاربر از خودمان در برابر Session Hijacking محافظت کنیم؟

خوشبختانه، با رعایت چند نکته ساده اما حیاتی، می‌توانید تا حد زیادی از این نوع حملات در امان بمانید.
  • همیشه به دنبال قفل سبز (HTTPS) باشید: این مهم‌ترین سپر دفاعی شماست. قبل از وارد کردن هرگونه اطلاعات حساس، مطمئن شوید که آدرس سایت با https شروع می‌شود و آیکون قفل در کنار آن وجود دارد. HTTPS تمام ارتباط شما، از جمله Session ID را رمزنگاری می‌کند.
  • از شبکه‌های Wi-Fi عمومی با احتیاط استفاده کنید: هرگز برای ورود به حساب‌های مهم و حساس خود (مانند اینترنت بانک، ایمیل اصلی یا پنل مدیریت سایت) از Wi-Fi عمومی و بدون رمز عبور استفاده نکنید. اگر مجبور به این کار هستید، حتماً از یک VPN معتبر استفاده کنید.
  • پس از اتمام کار، از حساب خود خارج شوید (Log Out): وقتی کارتان با یک وب‌سایت تمام می‌شود، به خصوص در کامپیوترهای اشتراکی، حتماً روی دکمه خروج کلیک کنید. این کار باعث می‌شود Session ID شما باطل شده و دیگر ارزشی برای هکر نداشته باشد.
  • مرورگر را برای پاک کردن خودکار کوکی‌ها تنظیم کنید: این یک عادت امنیتی عالی است. اکثر مرورگرهای مدرن (مانند کروم و فایرفاکس) این قابلیت را دارند که تنظیم شوند تا پس از هر بار بسته شدن، تمام کوکی‌ها و داده‌های نشست را به صورت خودکار پاک کنند. این کار تضمین می‌کند که هیچ کارت کلید فعالی در مرورگر شما باقی نماند.
  • روی لینک‌های مشکوک کلیک نکنید: بسیاری از حملات XSS از طریق لینک‌های فیشینگ در ایمیل‌ها یا پیام‌های شبکه‌های اجتماعی آغاز می‌شوند. همیشه قبل از کلیک، آدرس لینک را به دقت بررسی کنید.
  • نرم‌افزارها و مرورگر خود را به‌روز نگه دارید: شرکت‌های سازنده نرم‌افزار دائماً در حال رفع حفره‌های امنیتی هستند. با به‌روز نگه داشتن مرورگر و آنتی‌ویروس خود، راه را برای نفوذ بدافزارها می‌بندید.

وظیفه مدیران سایت چیست؟

اگرچه کاربران باید نکات امنیتی را رعایت کنند، اما مسئولیت اصلی برای جلوگیری از Session Hijacking بر عهده صاحب وب‌سایت و تیم فنی آن است. یک وب‌سایت حرفه‌ای باید به طور پیش‌فرض امن طراحی شود تا حتی کاربران عادی نیز در آن محافظت شوند.
  • استفاده سراسری از HTTPS (گواهی SSL): این اولین، ساده‌ترین و ضروری‌ترین قدم است. فقط امن کردن صفحه ورود کافی نیست. تمام صفحات سایت شما باید از طریق HTTPS بارگذاری شوند تا اطمینان حاصل شود که Session ID کاربر در هیچ نقطه‌ای از گشت‌وگذار او در سایت، به صورت رمزنگاری نشده منتقل نمی‌شود.
  • استفاده از کوکی‌های امن (Secure & HttpOnly Cookies): توسعه‌دهندگان می‌توانند هنگام ساخت کوکی، دو پرچم امنیتی بسیار مهم را برای آن فعال کنند. پرچم Secure به مرورگر دستور می‌دهد که این کوکی را فقط و فقط از طریق یک اتصال امن HTTPS منتقل کند. پرچم HttpOnly نیز از دسترسی اسکریپت‌های سمت کاربر (مانند کدهای جاوا اسکریپت مخرب در حملات XSS) به کوکی جلوگیری می‌کند. فعال کردن این دو پرچم، به تنهایی بخش بزرگی از حملات را خنثی می‌کند.
  • بازسازی مداوم Session ID: یک تکنیک امنیتی پیشرفته این است که پس از هر بار لاگین موفق کاربر، یک Session ID کاملاً جدید برای او ایجاد شود. این کار از حمله‌ای به نام "Session Fixation" (تثبیت نشست) جلوگیری می‌کند. در این حمله، هکر قبل از اینکه کاربر لاگین کند، یک Session ID مشخص را به مرورگر او تزریق می‌کند و منتظر می‌ماند تا کاربر با همان شناسه از پیش تعیین شده وارد حساب خود شود.
جلوگیری از Session Hijacking

جمع‌بندی

حمله Session Hijacking یک تهدید واقعی و جدی است که به هکرها اجازه می‌دهد رمز عبور را دور زده و مستقیماً به حساب کاربری افراد نفوذ کنند. اما این حمله شکست‌ناپذیر نیست. امنیت یک مسئولیت مشترک است؛ کاربران باید با رعایت نکات امنیتی (مانند استفاده از شبکه‌های امن و توجه به HTTPS) از خود محافظت کنند و صاحبان وب‌سایت‌ها نیز موظفند با پیاده‌سازی زیرساخت‌های فنی امن (مانند SSL و کوکی‌های امن)، از اطلاعات کاربران خود دفاع نمایند.