Session Hijacking چیست؟
Session Hijacking چیست؟
حمله Hijacking یک شیوه از حمله در شبکه است که فرد مهاجم یا هکر بین سیستم یا کاربر و شبکه قرار می گیرد و ارتباط را کنترل می کند. Hijacking در لغت به معنای ربودن هواپیما است و به طور کلی ربودن هرگونه اطلاعات مانند اطلاعات شخصی، رمزهای عبور، ایمیل ها، اطلاعات مالی، اقتصادی و … اطلاق می شود.
Session Hijacking حمله ای است که در آن جلسه و یا Session کاربر توسط مهاجم تسخیر می شود. در واقع مهاجم با استفاده از این روش نشست یا session قربانی را سرقت می کند تا وارد سرور شده و به اطلاعات آن دسترسی پیدا کند . Session هنگامی که وارد یک سرویس می شوید، به عنوان مثال برنامه بانکی، شروع می شود و هنگامی که از سیستم خارج می شوید به پایان می رسد. این حمله به دانش مهاجم در مورد کوکی جلسه شما متکی است، بنابراین به آن ربودن کوکی cookie hijacking یا cookie side-jacking نیز گفته می شود. اگرچه هر جلسه ای می تواند ربوده شود، اما Session Hijacking بیشتر به جلسات مرورگر و برنامه های وب اعمال می شود.
انواع حمله:
در بیشتر موارد وقتی وارد یک برنامه وب می شوید، سرور یک کوکی جلسه موقت را در مرورگر شما تنظیم می کند تا بخاطر بسپارد که شما در حال حاضر وارد سیستم شده و احراز هویت شده اید. HTTP یک پروتکل بدون حالت است و کوکی های جلسه متصل به هر عنوان HTTP محبوب ترین روش برای شناسایی سرور یا جلسه فعلی شما برای سرور است.
این حمله به دو صورت passive و active صورت می گیرد که تفاوت این دو حمله در درگیری مهاجم در سرقت session است. در حمله active مهاجم به دنبال session فعال می گردد و با استفاده از ابزارهای مخصوص sequence number را در TCP session پیش بینی می کند تا session بعدی را به دست بیاورد. در حمله passive مانند استراق سمع است که با استفاده از اطلاعات به دست آمده مانند password مهاجم می تواند یک session جداگانه را ایجاد کند.
اصول اولیه Session Hijacking:
برای انجام Session Hijacking، یک مهاجم باید شناسه جلسه قربانی (کلید جلسه) را بداند. این را می توان با سرقت کوکی جلسه و یا ترغیب کاربر برای کلیک بر روی یک پیوند مخرب که برای بدست آوردن شناسه جلسه آماده شده، بدست آورد. در هر دو حالت پس از احراز هویت کاربر بر روی سرور، مهاجم می تواند جلسه را با استفاده از شناسه جلسه یکسان برای جلسه مرورگر خود کار ربودن جلسه کاربر را انجام دهد. سپس سرور فریب خورده و ارتباط مهاجم را به عنوان جلسه معتبر کاربر اصلی تلقی می کند.
توجه: هنگام صحبت درباره حملاتی که کوکی های جلسه را هدف قرار می دهند، مفهوم مربوط به Session Hijacking در لایه جلسه TCP نیست. به این دلیل که کوکی ها از ویژگی های HTTP هستند که این یک پروتکل در سطح برنامه است، در حالی که TCP در سطح شبکه کار می کند. کوکی جلسه شناسه ای است که پس از تأیید موفقیت آمیز توسط برنامه وب بازگردانده می شود و جلسه آغاز شده توسط کاربر برنامه هیچ ارتباطی با اتصال TCP بین سرور و دستگاه کاربر ندارد.
دسترسی های مهاجمین پس از Session Hijacking در جلسه موفقیت آمیز:
در صورت موفقیت، مهاجم می تواند هر اقدامی را انجام دهد که کاربر اصلی مجاز به انجام آن در طول جلسه فعال است. بسته به برنامه هدفمند این ممکن است به معنای انتقال پول از حساب بانکی کاربر، نمایش به عنوان کاربر برای خرید اقلام در فروشگاه های وب، دسترسی به اطلاعات شخصی دقیق برای سرقت هویت، سرقت اطلاعات شخصی مشتریان از سیستم های شرکت و موارد دیگر باشد.
یک خطر خاص برای سازمان های بزرگتر این است که از کوکی ها می توان برای شناسایی کاربران معتبر در سیستم های ورود به سیستم (SSO) نیز استفاده کرد. این بدان معناست که یک Session Hijacking موفقیت آمیز جلسه می تواند SSO مهاجم را به چندین برنامه وب، از سیستم های مالی و سوابق مشتری گرفته تا سیستم های اطلاعات حاوی مالکیت معنوی ارزشمند دسترسی دهد. برای کاربران فردی، هنگام استفاده از سرویس های خارجی برای ورود به برنامه ها، خطرات مشابهی نیز وجود دارد، اما به دلیل استفاده از مکانیزم های احراز هویت اضافی مانند رمز یکبار مصرف پس از ورود به سیستم به عنوان مثال در انتقال وجه به طور کلی ربودن کوکی جلسه برای سو استفاده از حساب کافی نخواهد بود.
معرفی روش های اصلی Session Hijacking و نحوه کار انها:
مهاجمان بسته به موقعیت گزینه های مختلفی برای Session Hijacking دارند. اولین دسته گسترده حملاتی هستند که بر رهگیری کوکی ها متمرکز هستند:
Cross-site scripting (XSS):
این احتمالاً خطرناک ترین و گسترده ترین روش برای Session Hijacking در جلسات وب است. با سواستفاده از نقاط ضعف سرور یا برنامه، مهاجمان می توانند اسکریپت های سمت مشتری (به طور معمول JavaScript) را به صفحات وب تزریق کنند، و باعث می شود مرورگر شما هنگام بارگذاری یک صفحه کد دلخواه را اجرا کند. اگر سرور ویژگی HttpOnly را در کوکی های جلسه تنظیم نکند، اسکریپت های تزریقی می توانند به کلید جلسه شما دسترسی پیدا کنند و اطلاعات لازم را برای حمله به مهاجمین ارائه دهند.
مثال: مهاجمان ممکن است از طریق ایمیل یا پیام های IM یک لینک خاص ساخته شده به یک وب سایت شناخته شده و قابل اعتماد را انتشار دهند اما این لینک پارامترهای جستجوی HTTP هستند که از یک آسیب پذیری شناخته شده برای تزریق کد اسکریپت بهره برداری می کند. حمله XSS که برای ربودن جلسه استفاده می شود، این کد ممکن است کلید جلسه را به وب سایت خود مهاجم ارسال کند. به عنوان مثال:
این کوکی جلسه فعلی را با استفاده از document.cookie خوانده و با تنظیم URL موقعیت مکانی در مرورگر با استفاده از location.href آن را به وب سایت مهاجم ارسال می کند. در زندگی واقعی ، چنین پیوندهایی ممکن است از کدگذاری نیز برای ناشناس کردن کد و خدمات کوتاه کردن URL استفاده کنند تا از پیوندهای طولانی مشکوک جلوگیری کنند. در این حالت، یک حمله موفقیت آمیز به برنامه و وب سرور بستگی دارد که ورودی غیراصولی از درخواست HTTP را می پذیرد و اجرا می کند.
Session side jacking:
این نوع حمله به مشارکت فعال مهاجم نیاز دارد و اولین چیزی است که وقتی افراد به “هک شدن” فکر می کنند، به ذهن خطور می کند. با استفاده از شنود ترافیک، مهاجمان می توانند ترافیک شبکه کاربر را کنترل کرده و کوکی های جلسه را پس از احراز هویت کاربر در سرور، رهگیری کنند. اگر وب سایت فقط از رمزگذاری SSL/TLS برای صفحات ورود به سیستم و نه برای کل جلسه استفاده می کند، مهاجم می تواند با استفاده از شنود کلید جلسه، جلسه را ربوده و شخص را جعل کند تا کاربر در برنامه وب مورد نظر اقدام کند. از آنجا که مهاجم نیاز به دسترسی به شبکه قربانی دارد، سناریوهای حمله معمول شامل نقاط غیر امن Wi-Fi است، جایی که مهاجم می تواند ترافیک را در یک شبکه عمومی کنترل کند یا نقطه دسترسی خود را تنظیم کند و حملات مرد میانی MITM را انجام دهد.
روش های دیگر برای سرقت کوکی جلسه:
Session fixation:
برای کشف کوکی قربانی، مهاجم ممکن است به سادگی یک کلید جلسه شناخته شده را تهیه کند و کاربر را برای دسترسی به یک سرور آسیب پذیر فریب دهد. روش های مختلفی برای انجام این کار وجود دارد به عنوان مثال با استفاده از پارامترهای جستجوی HTTP در یک لینک ساخته شده از طریق ایمیل یا ارائه شده در یک وب سایت مخرب، به عنوان مثال:
<a href=”http://www.TrustedSite.com/login.php?sessionid=iknowyourkey”>Click here to log in now</a>
وقتی قربانی پیوند را کلیک می کند، به یک فرم ورود معتبر منتقل می شود اما کلید جلسه ای که استفاده خواهد شد توسط مهاجم ارائه می شود. پس از احراز هویت، مهاجم می تواند از کلید جلسه شناخته شده برای ربودن جلسه استفاده کند. یکی دیگر از روش ها session fixation است: فریب کاربر برای تکمیل فرم ورود به سیستم مخصوص ساخته شده است که شامل یک قسمت پنهان با شناسه جلسه ثابت است. تکنیک های پیشرفته تر شامل تغییر یا درج مقدار کوکی جلسه با استفاده از حمله برنامه نویسی بین سایت یا دستکاری مستقیم مقادیر هدر HTTP (که به دسترسی به ترافیک شبکه کاربر نیاز دارد) برای درج یک کلید جلسه شناخته شده با استفاده از پارامتر Set-Cookie است.
ترفند:
یک ترفند قدیمی که دیگر در مرورگرهای مدرن کار نخواهد کرد (از Chrome 65 و Firefox 68) تزریق برچسب HTML <meta http-Equ = “Set-Cookie”> برای تعیین مقدار کوکی از طریق برچسب متادیتا بود. این قابلیت از مشخصات رسمی HTML نیز حذف شده است.
سرقت کوکی ها توسط بدافزار یا دسترسی مستقیم: یک روش بسیار معمول برای بدست آوردن کوکی های جلسه، نصب بدافزار بر روی دستگاه کاربر است تا کار شنود خودکار جلسه را انجام دهد. پس از نصب به عنوان مثال بعد از بازدید کاربر از وب سایت مخرب یا کلیک روی پیوند در نامه ایمیل هرزنامه، بدافزار ترافیک شبکه کاربر را برای کوکی های جلسه اسکن کرده و برای مهاجم ارسال می کند. راه دیگر برای به دست آوردن کلید جلسه دسترسی مستقیم به فایل کوکی در ذخیره سازی محلی موقتی مرورگر مشتری است (که اغلب آن را جعبه کوکی می نامند). باز هم این کار را می توان توسط بدافزار انجام داده توسط مهاجمی که دسترسی محلی یا از راه دور به سیستم دارد نیز انجام می شود.
Brute force:
سرانجام مهاجم می تواند به سادگی سعی کند کلید جلسه جلسه فعال کاربر را حدس بزند، که تنها درصورتی که برنامه از شناسه های جلسه کوتاه یا قابل پیش بینی استفاده کند این کار عملی است. در گذشته های دور، کلیدهای ترتیبی یک نقطه ضعف معمول بودند، اما با برنامه های مدرن و نسخه های پروتکل شناسه های جلسه طولانی هستند و به طور تصادفی تولید می شوند. برای اطمینان از مقاومت در برابر حملات نیروی بی رحمانه، الگوریتم تولید کلید باید مقادیر واقعاً غیرقابل پیش بینی با آنتروپی کافی ارائه دهد تا حملات حدس زدن غیر عملی شود.
راه های مقابله با حملات Session Hijacking چیست؟
Hijacking به نوعی از حمله در شبکه اتلاق میشود که مهاجم کنترل و ارتباط بین سیستم قربانی و شبکه را در دست می گیرد و باعث سرقت هر نوع اطلاعات اعم از کلمه عبور ، اطلاعات ایمیل، اطلاعات حساب بانکی و غیره می شود. حملات Session Hijacking به منظور اکسپلویت کردن نشستهای کاربران که وظیفه مدیریت نشستها برعهده دارند انجام میشود. حملات Session Hijacking یا همان سرقت نشستها وقنی اتفاق میافتد که پس از اینکه کاربر با موفقیت توسط سرور تایید شد، یک هکر کنترل نشستهای آن کاربر را در اختیار میگیرد. راه های مقابله عبارتند از:
- استفاده از رمزنگاری
- استفاده از یک پروتکل ایمن
- محدود کردن اتصالات ورودی
- کاهش دسترسیهای ریموت
- تشخیص هویت و شناسایی قوی
- آموزش کارمندان
- استفاده از نام کاربری و رمز عبورهای متفاوت برای حسابهای متفاوت
- استفاده از سوییچها بجای استفاده از هاب در شبکه
چگونه می توانید از Session Hijacking جلوگیری کنید؟
تهدید Session Hijacking به دلیل محدودیت های پروتکل HTTP وجود دارد. کوکی های جلسه راهی برای غلبه بر این محدودیت ها و اجازه دادن به برنامه های وب برای شناسایی سیستم های رایانه ای منفرد و ذخیره وضعیت جلسه فعلی مانند خرید در یک فروشگاه آنلاین است. برای کاربران رعایت برخی از اصول ایمنی آنلاین می تواند به کاهش خطر کمک کند، اما از آنجا که سرقت جلسه با بهره گیری از مکانیسم های اساسی مورد استفاده اکثر قریب به اتفاق برنامه های وب کار می کند، هیچ روش محافظت تضمینی واحدی وجود ندارد با این حال، با سخت کردن جنبه های مختلف مدیریت ارتباطات و جلسه، توسعه دهندگان و مدیران می توانند خطر به دست آوردن رمز جلسه معتبر توسط مهاجمان را به حداقل برسانند.
معرفی جنبه های مختلف مدیریت:
- برای اطمینان از رمزگذاری SSL/TLS در کل ترافیک جلسه از HTTPS استفاده کنید. با این کار مهاجم نمی تواند شناسه جلسه را رهگیری کند، حتی اگر بر ترافیک قربانی را شنود کند. برای اطمینان از رمزگذاری همه اتصالات، ترجیحاً از HSTS (HTTP Strict Transport Security) استفاده کنید.
- با جلوگیری از دسترسی به کوکی ها از اسکریپت های سمت مشتری ، ویژگی HttpOnly را با استفاده از هدر Set-Cookie HTTP تنظیم کنید. این از XSS و سایر حملاتی که به تزریق JavaScript در مرورگر متکی هستند جلوگیری می کند. برای امنیت بیشتر تعیین دستورالعمل های Secure و SameSite نیز توصیه می شود.
- چارچوب های وب مکانیسم های تولید و مدیریت شناسه جلسه بسیار ایمن و آزمایش شده ای را ارائه می دهند. به جای ساخت الگوریتم مدیریت جلسه خود از آنها استفاده کنید.
- بعد از احراز هویت اولیه کلید جلسه را دوباره ایجاد کنید. این باعث می شود که کلید جلسه بلافاصله بعد از احراز هویت تغییر کند که این باعث خنثی شدن حملات ثابت شدن جلسه می شود – حتی اگر مهاجم شناسه جلسه اولیه را بداند قبل از استفاده بی فایده می شود.
- تأیید هویت کاربر اضافی را فراتر از کلید جلسه انجام دهید. این به این معنی است که نه تنها از کوکی ها بلکه از چک های دیگر مانند آدرس IP معمول کاربر یا الگوهای استفاده از برنامه نیز استفاده می شود. نکته منفی این روش این است که هرگونه هشدار نادرست می تواند برای کاربران قانونی ناخوشایند یا آزار دهنده باشد. یک محافظ اضافی معمول ، مهلت عدم فعالیت کاربر برای بستن جلسه کاربر پس از تنظیم زمان بیکار بودن جلسه است.
در دوره آموزش CEH مثال عملی از Session Hijacking را می توانید ببینید. امیدوارم سلامت و سر سبز باشید.
لطفا نظرات خود در رابطه با مقاله Session Hijacking چیست؟ را با ما به اشتراک بگذارید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.