حمله سرقت نشست (Session Hijacking) که با نام حمله سرقت کوکی نیز شناخته میشود، هنگامی اتفاق میافتد که نشست شما در یک وبسایت توسط مهاجم ربوده میشود. اما نشست چیست؟ زمانی که شما درون یک سرویس لاگین میکنید، یک نشست ایجاد میشود، مثلا زمانی که وارد اپلیکیشن بانکی میشوید، نشست شروع و وقتی هم از آن بیرون میآیید، نشست به پایان میرسد.
به گزارش گرداب، این دست از حملات بر دانش و اطلاعات مهاجم راجع به کوکی نشست شما متکی هستند و به همین خاطر نیز سرقت کوکی نامیده میشوند. اگر چه هر نشستی در کامپیوتر را میتوان به سرقت برد، سرقت نشست معمولا در مرورگر و وب اپلیکیشنها اتفاق میافتد. سرقت نشست مستلزم شناسایی شماره شناسه (IDs) ارتباطی نشستهای اخیر کاربر در سرور میباشد و از این طریق هکر میتواند اختیار نشستهای کاربر را در اختیار گیرد.
نحوه عملکرد حمله سرقت نشست
تکنولوژی زیربنایی که چگونگی عملکرد وبسایتها و ارتباط رایانهها با یکدیگر را فراهم میآورد، پروتکل TCP/IP نامیده میشود که کوتاه شدهی عبارت Transmission Control Protocol / Internet Protocol است.
حملات سرقت نشست به سبب محدودیتهای TCP/IP روی میدهند و از آنجا که این محدودیتها گستردگی وسیعی دارند و میشود گفت که جا افتادهاند، بهسادگی قابل اصلاح نیستند. در عوض، لایههای امنیتی اضافه شده بر این تکنولوژی، تهدیدات حملات سرقت نشست را محدود و خنثی میکنند.
از طرفی حملات سرقت نشست دو نوع هستند. حملات سرقت نشست فعال و غیرفعال. در حملات سرقت نشست فعال، هکر ارتباط رایانه شخصی با سرور را متوقف ساخته و آن را درون نشست جایگزین مینماید. از این نقطه به بعد، هکر، قادر به انجام تمام کارهای یک کاربر عادی است. اگر یک حساب ایمیل باشد، میتواند رمز عبور آن را تغییر داده، ایمیلها را حذف کند، ایمیل بنویسد، فایلهای الحاق شده را کپی و دانلود کند یا حسابهایی را که با ایمیل ارتباط داشتهاند، بازیابی نماید.
در حملات سرقت نشست غیرفعال، مهاجم بهطور پنهانی دادهای را که در شبکه جریان دارد تحت نظر میگیرد. مهاجم این نوع حمله را از این رو انتخاب میکند که بتواند پنهان بماند و شکی را برانگیخته نکند. در حالت ایدهآل، مهاجم به دنبال پسورد، نامهای کاربری، جزییات کارت اعتباری و… میگردد.
مراحل حمله سرقت نشست چیست؟
حمله سرقت نشست در چند مرحله صورت میپذیرد که در ادامه توضیح میدهیم.
مرحله یک: بررسی و پیگرد نشست
در این گام هکر یک نشست باز و فعال را شناسایی و شماره توالی بستههای بعدی را پیشبینی میکند.
مرحله دو: غیرهمگام سازی اتصال
هکر به سمت کاربر مجاز سیستم یک بسته TCP reset RST و یا بسته پایان FIN میفرستد تا نشست وی پایان پذیرد.
مرحله سه: تزریق بستههای هکر
هکر برای سرور یک بسته TCP با توالی شمارههای پیشبینی شده میفرستد و سرور آن را به عنوان بسته معتبر بعدی که قرار بود از طرف کاربر قانونی ارسال شود (ولی حالا توسط هکر ارسال شده) قبول میکند.
به این ترتیب هکر خود را به جای کاربر مجاز وارد نشست کرده است.
روشهای انجام حمله سرقت نشست چیست؟
اسکریپتنویسی بین سایتی (XSS)
این روش احتمالا خطرناکترین و رایجترین متد سرقت نشست وب باشد. با اکسپلویت کردن آسیبپذیریهای سرور یا اپلیکیشن، مهاجمان میتوانند اسکریپتهای سمت مشتری (معمولا جاوا اسکریپت) را درون وب پیجها تزریق کنند و مرورگر هم به صورت خودسرانه کدها را به اجرا در میآورد. اگر کوکیهای نشست از قابلیت HTTPOnly بهرهمند نباشند، اسکریپتهای تزریق شده میتوانند به کلید نشست شما دسترسی یافته و اطلاعات لازم برای سرقت نشست را در اختیار هکرها قرار دهند.
برای مثال هکرها ممکن است در ایمیلها یا پیامهای شخصی گروهی، لینکی دستساز را منتشر کنند که به یک سایت شناخته شده و قابل اعتماد منتهی میشود. اما این لینک میتواند شامل پارامترهای HTTP باشد که از یک آسیبپذیری برای تزریق کد اسکریپت استفاده میکند.
حمله طرف نشست (Session Side Jacking)
این نوع از حمله نیازمند مشارکت فعال مهاجم است. با استفاده از تکنیک پکت اسنیفینگ (استراق سمع پکتهای شبکه)، مهاجمین میتوانند ترافیک شبکه کاربر را پایش و بعد از احراز هویت کاربر در سرور، در کار کوکیها تداخل ایجاد کنند. اگر وبسایت تنها از رمزنگاری SSL و TLS صرفا برای صفحات لاگین استفاده کرده باشد و نه تمام نشست، مهاجم میتواند از کلید نشست اسنیف شده برای سرقت نشست استفاده کند. از آنجایی که هکرها در این متد به شبکه قربانی نیاز دارند، رایجترین سناریوها شامل هاتاسپاتهای وایفای میشوند. یعنی هکر یا قادر به پایش ترافیک در یک شبکه عمومی است یا اکسس پوینت مخصوص به خودش را راه میاندازد تا قادر به انجام یک حمله مرد میانی باشد.
سرقت کوکی با بدافزار یا دسترسی مستقیم
یک راه بسیار رایج برای به دست آوردن کوکیهای نشست، نصب بدافزار روی کامپیوتر کاربر است تا به صورت خودکار، نشستها را اسنیف کند. به محض نصب شدن، مثلا بعد از اینکه کاربر به یک وبسایت آلوده رفت یا روی یک لینک آلوده در میان ایمیلهای اسپم کلیک کرد، بدافزار شروع به اسکن ترافیک شبکه کاربر میکند تا قادر به یافتن کوکیهای نشست و ارسالشان برای مهاجم باشد. یک راه دیگر برای به دست آوردن کلید نشست، دسترسی مستقیم به فایل کوکی در فضای ذخیرهسازی موقت مرورگر کاربر است. این حمله هم میتواند توسط بدافزار و هم مهاجمی که دسترسی محلی یا از راه دور به سیستم دارد انجام شود.
حمله جستجوی فراگیر (Brute Force)
در این متد حمله، مهاجم میتواند خیلی آسان کلید نشست در نشست فعال یک کاربر را حدس بزند. بسیاری از این حملات مبنی بر نرمافزارهای سفارشی است که در عرض یک دقیقه صدها ترکیب گوناگون از پسوردها را امتحان کرده و فرآیند هک کردن را تسریع میکنند و تنها از طریق یک نقطۀ ورودی واحد، امکان دسترسی به کل دادههای یک شبکه را فراهم میکنند. در گذشته دور، کلیدهای تابع یک نقطه ضعف رایج بودند، اما اپلیکیشنها و شناسههای نشست مدرن طولانی بوده و به صورت رندوم تولید میشوند. برای اطمینان از مقاومت در برابر حملات بروت فورس، الگوریتم تولید کلید باید مقادیری واقعا غیر قابل پیشبینی تحویل دهد تا حملاتی که با حدس انجام میشوند، غیر قابل انجام باشند.
راههای پیشگیری و مقابله با حملات سرقت نشست
۱. یک راه حل با استفاده از نرمافزار ArpON:ARP handler inspection میباشد. این نرمافزار یک potable handler daemon است که پروتکل ARP را به منظور جلوگیری از حملات MITM به واسطه ARP Spoofing، ایمن میسازد. همچنین حملات مشتق شده از آن مثل حملات Sniffing، hijacking، Injection، Filtering و همچنین حملات پیچیدهتر همچون: DNS Spoofing، WEB spoofing، Session Hijacking و SSL/TLS Hijacking را بلوکه مینماید.
۲. کاهش دسترسیهای ریموت
۳. رمزگذاری ترافیک داده عبوری بین بخشها؛ به ویژه session key و ترافیک تمام sessionها با استفاده از SSL/TLS. این تکنیک به صورت گسترده در سرویسهای بانکی بر پایه وب و دیگر سرویسهای تجاری استفاده شده است. چرا که به صورت کامل از حملات سبک sniffing و سرقت نشست جلوگیری میکند.
۴. استفاده از شمارههای اتفاقی بلند به عنوان session key. این مسئله ریسک آسان حدس زده شدن session key را با روشهای سعی و خطا یا حملات brute force را کاهش میدهد.
۵. تغییر session id پس از login موفق. این روش از session fixation جلوگیری مینماید چرا که مهاجم دیگر session id کاربر را بعد از اینکه login کند نمیداند.
۶. برخی سرویسها اعتبارسنجی هویت کاربر را در چند مرحله انجام میدهند. برای مثال یک وب سرور با هر request که ارسال میکند چک میکند که نشانی IP کاربر با آخرین IP به کار رفته در آن session برابر باشد. این روش از حملات توسط شخصی که یک IP استفاده میکند جلوگیری نمینماید، اما برای شخصی که IP او در طول یک session تغییر میکند، زحمت زیادی به بار خواهد آورد.
۷. برخی سرویسها مقادیر cookie را با هر request تغییر میدهند. این روش به طور چشم گیری مسیرهایی که مهاجم جهت ورود، اداره و تعیین هویت کردن حمله ایجاد میکند را کاهش میدهد، اما منجر به مشکلات تکنیکی خواهد شد. (برای مثال دو request در زمانهای نزدیک به هم و به صورت قانونی به یک حلقه چک خطا بر روی سرور، هدایت میشوند.)
۸. کاربران میبایست پس از پایان استفاده از وبسایت، log out نمایند.
نتیجهگیری
اصولاً حمله سرقت نشست مانند فردی است که مخفیانه از وقایع نشستهای منحصر به فرد شما آگاه است. به این ترتیب آیدی که دستگاه شما را به یک سرور نزدیک مرتبط میکند، دیگر محرمانه و فقط در اختیار خودتان نیست و هکرها این امکان را مییابند که با شکل کامپیوتر و یا تلفن همراه شما ظاهر شده، اطلاعات را سرقت کرده و سپس به اطلاعات دیگر در سرورهای دیگر دست یابند. حملات سرقت نشست خطرناک و فراگیر هستند و برای در امان ماندن از شر این حملات، بهتر است نکات محافظتی لازم را که در این مقاله شرح داده شد، مد نظر قرار دهید.
___________________
منبع:
https://www.faraasat.com/articles/2074/session-hijacking-attack/
https://raykanet.com/%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D8%AD%D9%85%D9%84%D8%A7%D8%AA-%D8%A7%D9%85%D9%86%DB%8C%D8%AA%DB%8C-%D8%AF%D8%B1-%D8%B4%D8%A8%DA%A9%D9%87/
https://iranhost.com/blog/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%88-%D8%B4%D8%B1%D8%AD-cookie-hijacking-%D9%88-%D8%B1%D8%A7%D9%87%D9%87%D8%A7%DB%8C-%D9%85%D9%82%D8%A7%D8%A8%D9%84%D9%87-%D8%A8%D8%A7-%D8%A2%D9%86-2/#gref