حملهی Session Hijacking :
در دنیای دیجیتال امروز، بسیاری از فعالیتهای روزمره ما از جمله خرید، بانکداری آنلاین و ارتباطات اجتماعی، به اینترنت وابسته است. این وابستگی به شبکههای آنلاین، نیاز به درک و پیادهسازی اقدامات امنیتی موثر را را بیش از پیش ضروری میسازد. یکی از تهدیدات قابل توجه در این حوزه، حملهای به نام Session Hijacking است که میتواند به راحتی امنیت اطلاعات کاربران را به خطر اندازد. Session Hijacking به فرآیندی اطلاق میشود که در آن مهاجم به یک نشست اینترنتی (Session) که بین کاربر و سرور برقرار شده است، دسترسی پیدا کرده و کنترل آن را به دست میگیرد. این نشستها از طریق یک توکن اختصاصی به نام Session Token شناسایی میشوند که برای حفظ امنیت و تداوم ارتباط میان کاربر و وبسایت یا سرویس آنلاین مورد استفاده قرار میگیرد. در این نوع حمله، مهاجم سعی میکند با دزدیدن یا دستکاری این توکن، به طور غیرمجاز وارد حسابهای کاربری شود. وقتی مهاجم به این توکن دسترسی پیدا کند، قادر خواهد بود به عنوان کاربر واقعی وارد سیستم شده و به اطلاعات حساس کاربر دسترسی پیدا کند. با توجه به این که بخش وسیعی از زندگی دیجیتال ما به سرویسهای آنلاین وابسته است، وقوع چنین حملاتی میتواند پیامدهای جدی از جمله کلاهبرداری، سرقت هویت و افشای اطلاعات خصوصی به همراه داشته باشد. بنابراین، آگاهی از روشهای حمله Session Hijacking و اتخاذ تدابیر امنیتی مناسب گامی اساسی در حفظ امنیت اطلاعات است.
Session چیست؟
هر بار که کاربری از طریق پروتکل HTTP به یک وبسایت یا اپلیکیشن دسترسی پیدا میکند، سرویس میزبان ابتدا با استفاده از مکانیزمهایی مانند نام کاربری و گذرواژه اقدام به احراز هویت وی مینماید و پس از آن ارتباط بین کاربر و سرور برقرار میشود. با این حال، پروتکل HTTP به صورت ذاتی بدون وضعیت (stateless) است؛ به این معنا که هر درخواست به صورت مستقل از درخواستهای دیگر پردازش میشود. در نتیجه، اگر فقط به HTTP تکیه کنیم، کاربر مجبور خواهد بود برای هر کلیک یا هر صفحهای که مشاهده میکند، دوباره احراز هویت انجام دهد. برای رفع این محدودیت، از Session یا نشست استفاده میشود. به محض ورود موفق کاربر، سرور میزبان یک نشست ایجاد میکند که به عنوان مرجعی برای احراز هویت اولیه عمل کرده و امکان تداوم ارتباط کاربر با سامانه را بدون نیاز به احراز هویت مجدد فراهم میسازد. این نشست تا زمانی که کاربر از سامانه خارج نشده یا مدت زمان مشخصی غیرفعال نبوده باشد، معتبر باقی میماند. در بسیاری از سامانهها، در صورت عدم فعالیت کاربر طی مدت زمانی معین، نشست به طور خودکار پایان مییابد. در اغلب موارد، سامانهها برای مدیریت نشستها از یک شناسه نشست (Session ID) استفاده میکنند. این شناسه معمولاً رشتهای متشکل از حروف و اعداد است که به طور موقت در کوکیهای نشست(session cookies)، در آدرس اینترنتی (URL)، یا در فیلدهای پنهان صفحات وب ذخیره میشود. در برخی موارد، این شناسهها رمزنگاری میشوند؛ هرچند در تمام سامانهها این موضوع رعایت نمیشود. در برخی پیادهسازیها نیز، Session ID بر مبنای اطلاعات قابل پیشبینی مانند آدرس IP کاربر تولید میگردد که این امر میتواند خطرات امنیتی به همراه داشته باشد.
نحوه عملکرد Session Hijacking:
همانند بسیاری از تهدیدهای سایبری، بهترین زمان برای مقابله با Session Hijacking قبل از آغاز حمله است. این موضوع نیازمند درک چگونگی وقوع این نوع حملههاست تا بتوان نشانههای آن را در مراحل ابتدایی شناسایی و از وقوع آن پیشگیری کرد. به طور معمول، فرآیند یک حملهی Session Hijacking شامل مراحل زیر است:
- احراز هویت اولیه: کاربر اصلی با وارد کردن اطلاعات ورود (مانند نام کاربری و گذرواژه)، وارد یک وبسایت یا اپلیکیشن میشود. سرور این اطلاعات را بررسی و در صورت صحت، یک نشست جدید برای کاربر ایجاد میکند.
- تولید Session ID: همان طور که گفته شد، پس از احراز هویت موفق، سرور یک شناسه نشست (Session ID) منحصر به فرد تولید میکند. سرور این شناسه را به مرورگر کاربر ارسال میکند و معمولاً این مقدار در قالب کوکی ذخیره میشود.
- فعالیت عادی کاربر: کاربر احراز هویتشده، تعاملات مختلفی با سایت یا اپلیکیشن انجام میدهد. هر درخواستی که به سرور ارسال میشود، حاوی Session ID بوده و به سرور امکان میدهد این درخواست را به نشست کاربر مربوط کند و وضعیت احراز هویت او را حفظ نماید.
- دخالت مهاجم: در این مرحله، مهاجم با استفاده از روشهای پیشرفته تلاش میکند Session ID را پیشبینی یا رهگیری کند. این کار میتواند از طریق بهرهبرداری از آسیبپذیریهای شبکه، استفاده از بدافزار یا سوءاستفاده از ضعف در مدیریت نشست توسط سایت انجام گیرد.
- دستیابی به Session ID: مهاجم با موفقیت، Session ID معتبر را از طریق یکی از روشهای گفته شده به دست میآورد. این دستیابی ممکن است به صورت لحظهای (در زمان واقعی) یا از طریق الگوهای قابل پیشبینی در تولید Session ID انجام شود.
- جعل هویت: مهاجم با استفاده از Session ID سرقتشده، درخواستهایی به سرور ارسال میکند. از دید سرور، این درخواستها از سوی کاربر اصلی هستند، زیرا Session ID معتبر است.
- دسترسی غیرمجاز: سرور درخواستهای مهاجم را مشابه درخواستهای کاربر اصلی پردازش میکند. در نتیجه، مهاجم همان سطح دسترسی و امتیازاتی را خواهد داشت که کاربر واقعی دارد و میتواند به اطلاعات حساس دسترسی یابد.
- فعالیتهای مخرب: با در اختیار داشتن کنترل کامل نشست کاربر، مهاجم قادر خواهد بود اقداماتی مانند مشاهده یا تغییر اطلاعات شخصی، انجام تراکنشهای مالی یا استفاده از حساب قربانی برای اجرای حملات دیگر انجام دهد.
- پایان نشست: نشست مربوطه ممکن است در یکی از این شرایط پایان یابد: زمانی که کاربر اصلی از حساب خود خارج شود (که ممکن است مهاجم را نیز از سیستم خارج کند)، وقتی نشست به دلیل عدم فعالیت منقضی شود، یا در شرایطی که مهاجم فعالیت خود را متوقف کند تا شناسایی نشود.

انواع حملات Session Hijacking
در ادامه به رایجترین روشهایی که مهاجمان برای ربودن نشستها استفاده میکنند اشاره شده است:
- Session fixation: در این حمله، مهاجم یک session ID ایجاد میکند و کاربر را فریب میدهد تا نشست را با همین شناسه آغاز کند. معمولاً با ارسال لینکی جعلی (مثلاً یک فرم ورود به ظاهر واقعی) از طریق ایمیل یا پیام، کاربر را ترغیب به ورود به سایت میکند. پس از ورود کاربر، نشست فعال شده دارای همان شناسهای است که مهاجم از قبل تعیین کرده بود؛ به این ترتیب، مهاجم میتواند بدون نیاز به احراز هویت مجدد، مستقیماً به حساب کاربر دسترسی پیدا کرده و از آن سوءاستفاده کند.
- Session side jacking یا session sniffing: در این روش، مهاجم نیاز دارد به ترافیک شبکه کاربر دسترسی داشته باشد. این دسترسی معمولاً از طریق اتصال کاربر به شبکههای Wi-Fi ناامن یا اجرای حملات man-in-the-middle به دست میآید. مهاجم با استفاده از ابزارهایی برای شنود بستههای داده (packet sniffing)، ترافیک شبکه را بررسی کرده و در صورت یافتن session cookie، از آن برای در اختیار گرفتن نشست استفاده میکند.
- Man-in-the-browser attack: این حمله شباهت زیادی به man-in-the-middle دارد، اما با این تفاوت که ابتدا سیستم قربانی باید به یک تروجان آلوده شود. پس از نصب بدافزار، این برنامه مخرب منتظر میماند تا کاربر وارد سایتی مشخص شود. در این لحظه، بدافزار میتواند به صورت نامحسوس اطلاعات تراکنش را تغییر داده یا حتی تراکنشهای جدیدی ایجاد کند بدون آن که کاربر متوجه شود. از آنجا که درخواستها مستقیماً از سیستم قربانی ارسال میشوند، تشخیص جعلی بودن آنها برای سرور بسیار دشوار است.
- Predictable session token ID: برخی سرورها از الگوهای ساده یا الگوریتمهایی قابل پیشبینی برای تولید session ID استفاده میکنند. هرچه این شناسهها قابل حدس زدنتر باشند، امنیت آنها پایینتر است. مهاجمان با جمعآوری چند نمونه از این شناسهها و تحلیل الگوی تولید آنها، میتوانند session IDهای معتبر تولید کرده و نشستهای فعال را ربوده یا جعل کنند. این روش شباهت زیادی به حملات brute force دارد.
پیامدهای حملات Session Hijacking :
Session Hijacking میتواند پیامدهای جدی برای افراد و سازمانها به دنبال داشته باشد. در ادامه، پنج پیامد ناشی از وقوع این حملات ذکر شده است:
- افشای اطلاعات: مهاجم میتواند به اطلاعات حساس شخصی یا سازمانی دسترسی پیدا کند، که ممکن است به سرقت هویت، کلاهبرداری مالی یا جاسوسی سازمانی منجر شود.
- زیان مالی: فرد مهاجم ممکن است با استفاده از اطلاعات حساب قربانی، تراکنشهای مالی غیرمجاز انجام دهد، پول جابهجا کند یا خریدهایی به نام او انجام دهد.
- لطمه به اعتبار: سازمانهایی که مورد هدف این نوع حمله قرار میگیرند ممکن است با آسیب جدی به اعتبار خود مواجه شوند که در نهایت باعث بیاعتمادی مشتریان و کاهش درآمد میشود.
- دسترسی غیرمجاز به سیستمها: در مواردی که از احراز هویت یکپارچه (SSO) استفاده میشود، تسلط بر یک نشست میتواند به مهاجم اجازه دهد تا به چندین سیستم مختلف دسترسی پیدا کند و خسارت بیشتری وارد کند.
- نقض مقررات: بسته به نوع صنعت و اطلاعاتی که فاش شده، این نوع حمله ممکن است منجر به نقض مقررات مربوط به حفاظت از دادهها شود که میتواند پیامدهای قانونی، جریمههای سنگین یا تحریمهایی نیز به همراه داشته باشد.
نمونههای واقعی از حملات Session Hijacking:
- نفوذ به پلتفرم همکاری سازمانی: در یک حمله هدفمند سایبری، مهاجمان با بهرهبرداری از توکنهای نشست به دست آمده از حسابهای توسعهدهندگان، موفق به نفوذ به زیرساختهای یک پلتفرم محبوب شدند. این دسترسی غیرمجاز با استفاده از دادههایی که از مخازن GitHub به سرقت رفته بود، انجام گرفت و مهاجمان را قادر ساخت به کد منبع، ابزارهای داخلی و نسخههای آزمایشی محصولات دسترسی پیدا کنند. این رخنه نه تنها فرآیند توسعه و بهروزرسانی نرمافزار را مختل کرد، بلکه خطر افشای بخشی از Intellectual Property سازمان را نیز در پی داشت.
- نفوذ به سیستم پشتیبانی یک ارائه دهنده خدمات احراز هویت ابری: یکی از شرکتهای معتبر ارائه دهنده خدمات احراز هویت ابری دچار حملهای شد که در آن مهاجمان با بهرهگیری از session tokenهای سرقتشده، موفق به تسلط بر نشستهای فعال مشتریان شدند. این دسترسی باعث شد مهاجمان بتوانند وارد محیطهای سازمانی مشتریان از جمله سیستمهای مالی و پلتفرمهای SaaS شوند و به اطلاعات حساس از جمله کلیدهای رمزنگاری و دادههای کاربران دست یابند.
- اختلال در جلسات ویدئویی: در دوران شیوع کرونا، ضعف در مدیریت نشستهای کاربران در یک نرمافزار محبوب ویدئوکنفرانس منجر به رخنههای مکرر شد. مهاجمان با ورود غیرمجاز به جلسات، اقدام به پخش محتوای نامناسب و آزاردهنده کردند؛ حملاتی که بعدها با عنوان Zoom-bombing شناخته شد. این اتفاقات شرکت توسعهدهنده را مجبور به اعمال سیاستهایی مانند الزام به رمز عبور و فعالسازی waiting rooms کرد.
- آسیبپذیری در GitLab به دلیل ضعف در کنترل توکن نشست: در سال ۲۰۱۷، یک آسیبپذیری امنیتی در پلتفرم GitLab کشف شد که به دلیل نحوه مدیریت نشستها، تهدیدات جدی را به همراه داشت. این پلتفرم به اشتباه توکنهای نشست کاربران را در آدرسهای URL نشان میداد و از توکنهای دائمی که تاریخ انقضا نداشتند استفاده میکرد. ترکیب این دو ضعف امنیتی، یعنی نمایش غیرمجاز توکنها و نداشتن تاریخ انقضا، به مهاجمان این امکان را میداد که با استفاده از حملات مختلف، مانند brute force، به توکنهای نشست دست پیدا کنند و از آنها برای دسترسی به حسابهای کاربران بهرهبرداری کنند.
روشهای شناسایی و پیشگیری از حملات Session Hijacking:
حملاتSession Hijacking یکی از تهدیدات پیچیده و مخربی است که میتواند به طور جدی به امنیت اطلاعات و حریم خصوصی کاربران آسیب وارد کند. برای مقابله مؤثر با این تهدید، تیمهای امنیتی باید توجه ویژهای به شناسایی انحرافات نشستها داشته باشند. به عنوان نمونه، طول نشستها ممکن است به طور غیرمعمولی تغییر کند. همچنین نشستها ممکن است خارج از ساعات کاری یا زمانی که کارمندان غیرفعال هستند، همچنان باز بمانند. برای شناسایی این الگوهای غیرطبیعی، لازم است که رفتارهای رایج کاربران را از طریق گزارشهای ثبت شده ارزیابی کرده و از آنها به عنوان نقاط مرجع برای شناسایی هرگونه تغییر در استفاده از منابع، مدت زمان اتصال و فعالیتهای شبکه استفاده کرد. این رویکرد کمک میکند تا هرگونه ناهنجاری به سرعت شناسایی و اقدامات حفاظتی لازم انجام شود.
استفاده از Fingerprinting برای شناسایی نشستها نیز میتواند به طور مؤثری در کشف حملات احتمالی کمک کند. این روش با ثبت و مقایسه ویژگیهای دستگاه، سیستمعامل و مرورگر در ابتدای نشست و در طول آن، به شناسایی هرگونه تغییر یا عدم تطابق در اطلاعات کمک میکند. تغییرات غیرمنتظره در این دادهها معمولاً نشانهای از دسترسیهای غیرمجاز یا فعالیتهای مخرب است که نیاز به بررسی بیشتر دارد. همچنین پیشنهاد میشود از ابزارهای شناسایی تهدیدات برای اتوماسیون هشدارهای مرتبط با حملات Hijacking استفاده شود. به طور مثال، این ابزارها باید تلاشهای ناموفق برای ورود به سیستم را به تیمهای امنیتی هشدار دهند. همچنین، استفاده مجدد از یک شناسه نشست یا افزایش ناگهانی در سطح فعالیت کاربران باید موجب ایجاد هشدارهایی برای انجام بررسیهای لازم گردد.
برای افزایش امنیت سیستمهای خود و جلوگیری از وقوع حملات Session Hijacking، رعایت نکات زیر ضروری است:
- عدم استفاده از وایفای عمومی: از انجام تراکنشهای حساس مانند بانکداری آنلاین، خرید اینترنتی یا ورود به حسابهای ایمیل و شبکههای اجتماعی خود از طریق وایفای عمومی خودداری کنید. ممکن است یک مهاجم سایبری نزدیک به شما باشد که از تکنیکهای sniffing برای جمعآوری کوکیهای نشست و دیگر اطلاعات حساس استفاده کند.
- هوشیاری در برابر حملات فیشینگ و کلاهبرداریهای آنلاین: از کلیک کردن روی لینکهای مشکوک در ایمیلها خودداری کنید، مگر اینکه مطمئن شوید که منبع آن ایمیل معتبر است. مهاجمان ممکن است ایمیلهایی حاوی لینکهای مخرب ارسال کنند که میتوانند بدافزارهایی را بر روی دستگاه شما نصب کرده یا شما را به صفحاتی هدایت کنند که با استفاده از شناسههای نشست هک شده، به سایتهای غیرمجاز وارد شوید.
- توجه به امنیت سایتها: سایتهای معتبر نظیر بانکها، خدمات ایمیل، فروشگاههای آنلاین و شبکههای اجتماعی معمولاً تدابیر امنیتی مناسبی برای جلوگیری از حملات Session Hijacking دارند. به سایتهایی که URL آنها با HTTPS شروع میشود توجه کنید. حرف “S” نمایانگر secure به معنای “امن” است. همچنین، از بازدید از سایتهای مشکوک و فروشگاههای آنلاینی که امنیت ضعیفی دارند خودداری کنید؛ زیرا ممکن است به راحتی در معرض حملات متعدد قرار گیرید.
- استفاده از نرمافزارهای آنتیویروس معتبر: نصب یک نرمافزار آنتیویروس معتبر که قادر به شناسایی و مسدود کردن بدافزارها باشد، اهمیت زیادی دارد. این نرمافزارها میتوانند از شما در برابر انواع حملات سایبری، از جمله حملات Session Hijacking، محافظت کنند. همچنین، از به روز نگه داشتن سیستمهای خود اطمینان حاصل کنید و به طور خودکار به روزرسانیهای امنیتی را برای تمام دستگاهها فعال کنید.
- آموزش کارکنان برای پیشگیری از حملات فیشینگ و حفظ امنیت نشستها: بسیاری از حملات Session Fixation با کلیک بر روی لینکهای مخرب آغاز میشوند. بنابراین، آموزش کارکنان برای شناسایی این نوع از ایمیلها و وبسایتهای مشکوک، برای حفظ آگاهی و آمادگی آنها در برابر تهدیدات امنیتی بسیار ضروری است.
- کدنویسی امن و مدیریت صحیح نشستها برای محافظت از برنامههای وب: برای حفظ امنیت سیستمها و جلوگیری از حملات مرتبط با نشستها، استفاده از شیوههای کدنویسی امن امری ضروری است. این امر شامل بررسی دقیق فرمها و کدهای وبسایتها به منظور شناسایی و رفع آسیبپذیریها و ضعفهای امنیتی است. همچنین لازم است اطمینان حاصل شود که تمامی برنامهها و خدمات وب، مکانیزمهای مدیریت نشست را به درستی و مطابق با اصول امنیتی پیادهسازی کردهاند. این موضوع نقش کلیدی در جلوگیری از سوءاستفادههای احتمالی و حفظ امنیت کاربران دارد.