سرقت Session Cookie چیست؟ هکرها چگونه بدون رمز عبور وارد حساب میشوند؟
سرقت Session Cookie چیست و چگونه هکرها بدون داشتن رمز عبور وارد حساب میشوند؟ با Session Hijacking، روشهای سرقت Cookie و راههای جلوگیری از آن آشنا شوید.
اگر یک هکر رمز عبور شما را نداشته باشد، آیا باز هم میتواند وارد حساب کاربریتان شود؟
در بعضی شرایط، بله.
یکی از روشهایی که مهاجمان برای دسترسی غیرمجاز به حسابهای آنلاین استفاده میکنند، سرقت Session Cookie و سپس Session Hijacking یا ربودن نشست کاربر است.
در این حمله، مهاجم لزوماً به دنبال رمز عبور نیست؛ بلکه تلاش میکند اطلاعاتی را سرقت کند که مرورگر از آن برای اثبات این موضوع استفاده میکند که شما قبلاً وارد حساب شدهاید.
اگر یک Session معتبر به دست مهاجم بیفتد، در برخی سرویسها ممکن است بتواند بدون وارد کردن دوباره رمز عبور و حتی بدون نمایش مجدد مرحله MFA، خود را بهعنوان کاربر احراز هویتشده جا بزند. OWASP نیز سرقت یا افشای شناسه نشست را یکی از مسیرهای اصلی Session Hijacking میداند.
Session Cookie چیست؟
برای درک این حمله، ابتدا باید بدانیم هنگام ورود به یک سایت چه اتفاقی میافتد.
فرض کنید وارد حساب کاربری خود در یک سرویس آنلاین میشوید.
ابتدا نام کاربری و رمز عبور را وارد میکنید و در صورت فعال بودن MFA، مرحله دوم احراز هویت را نیز انجام میدهید.
پس از تأیید هویت، سایت باید بتواند در درخواستهای بعدی تشخیص دهد که شما همان کاربری هستید که چند لحظه قبل وارد حساب شده است.
قرار نیست در هر صفحه دوباره رمز عبور خود را وارد کنید.
اینجاست که Session ایجاد میشود.
سرویس یک شناسه یا توکن مربوط به نشست ایجاد میکند و مرورگر آن را در قالب مکانیزمهایی مانند Cookie نگهداری میکند. مرورگر نیز در درخواستهای بعدی، اطلاعات مربوط به نشست را برای سرویس ارسال میکند تا کاربر همچنان واردشده باقی بماند.
بنابراین میتوان Session Cookie را به زبان ساده مانند «مدرک موقتی ورود» در نظر گرفت.
البته Session Cookie خودِ رمز عبور نیست؛ اما اگر یک سرویس از آن برای شناسایی نشست احراز هویتشده استفاده کند، افشای آن میتواند به مهاجم امکان جعل همان نشست را بدهد.
هکر چگونه بدون داشتن رمز عبور وارد حساب میشود؟
سناریو را ساده کنیم.
فرض کنید شما وارد یک حساب کاربری شدهاید و MFA نیز با موفقیت انجام شده است.
سرویس پس از احراز هویت، یک Session معتبر برای مرورگر شما ایجاد میکند.
اگر مهاجم بتواند این Session را به دست آورد، ممکن است دیگر نیازی به دانستن رمز عبور شما نداشته باشد.
در واقع مهاجم بهجای اینکه بگوید:
«من رمز عبور این کاربر را دارم.»
میتواند از Session معتبر استفاده کند تا سرویس تصور کند:
«این همان کاربری است که قبلاً احراز هویت شده است.»
این همان ایده اصلی Session Hijacking است؛ مهاجم یک نشست معتبر را تصاحب میکند و از هویت کاربر سوءاستفاده میکند.
یک مثال ساده
تصور کنید وارد یک ساختمان اداری شدهاید.
نگهبان کارت شناسایی شما را بررسی میکند و یک کارت موقت ورود در اختیارتان قرار میدهد.
از آن لحظه، برای ورود به اتاقهای مجاز لازم نیست هر بار دوباره کارت شناسایی اصلی خود را نشان دهید؛ همان کارت موقت نشان میدهد که شما قبلاً احراز هویت شدهاید.
حالا اگر فرد دیگری همان کارت موقت را به دست بیاورد، ممکن است بتواند از آن برای ورود استفاده کند.
Session Cookie در این مثال شبیه همان کارت موقت است.
به همین دلیل است که سرقت Session میتواند حتی در شرایطی که مهاجم رمز عبور را نمیداند، خطرناک باشد.
Session Cookie چگونه سرقت میشود؟
یک روش واحد برای سرقت Session وجود ندارد و مهاجمان میتوانند از مسیرهای مختلفی استفاده کنند.
۱. فیشینگ و حملات AiTM
یکی از روشهای مهم، Adversary-in-the-Middle یا AiTM است.
در این حمله، مهاجم بین کاربر و سرویس واقعی قرار میگیرد و صفحه ورود یا فرایند احراز هویت را به شکلی واسطهای مدیریت میکند.
کاربر ممکن است رمز عبور خود را وارد کند و حتی MFA را نیز با موفقیت انجام دهد؛ اما مهاجم در جریان این فرایند میتواند اطلاعات مربوط به نشست احراز هویتشده را هدف قرار دهد.
به همین دلیل، برخی حملات فیشینگ مدرن دیگر صرفاً برای سرقت Password طراحی نشدهاند و مستقیماً Session را هدف میگیرند.
MITRE ATT&CK نیز Steal Web Session Cookie را بهعنوان تکنیک T1539 ثبت کرده و به استفاده از ابزارهایی مانند Evilginx برای جمعآوری Cookieهای نشست در حملات فیشینگ اشاره میکند.
۲. بدافزارهای سرقت اطلاعات
برخی Infostealerها بهطور مشخص به دنبال اطلاعات ذخیرهشده در مرورگر هستند.
بسته به نوع بدافزار و محیط قربانی، این اطلاعات میتواند شامل Cookieها، اطلاعات ورود، دادههای تکمیل خودکار و سایر اطلاعات حساس باشد.
در چنین شرایطی، مهاجم ممکن است بدون اینکه رمز عبور فعلی کاربر را بداند، به دادهای دست پیدا کند که برای تصاحب یک نشست فعال ارزش دارد.
۳. آسیبپذیریها و حملات سمت مرورگر
حملاتی مانند برخی سناریوهای XSS یا اجرای JavaScript مخرب نیز میتوانند در شرایط خاص، امنیت Session را تحت تأثیر قرار دهند.
OWASP از حملات سمت کلاینت، کدهای مخرب و Man-in-the-Middle در میان مسیرهای احتمالی به خطر افتادن Session نام میبرد.
۴. ارتباطات ناامن
در گذشته، انتقال Session Cookie روی ارتباطات رمزنگارینشده یکی از مسیرهای شناختهشده برای سرقت نشست بود.
امروزه استفاده از HTTPS بخش مهمی از این دفاع است؛ همچنین Cookieهای حساس باید با ویژگیهایی مانند Secure محافظت شوند تا فقط از طریق ارتباطات HTTPS ارسال شوند.
آیا فعال بودن MFA جلوی سرقت Session Cookie را میگیرد؟
نه همیشه.
این یکی از مهمترین نکات این مقاله است.
MFA برای جلوگیری از ورود مهاجم با استفاده از یک رمز عبور سرقتشده بسیار مؤثر است. اما اگر مهاجم بتواند پس از احراز هویت موفق کاربر، نشست معتبر او را سرقت کند، مسئله دیگر صرفاً «دانستن رمز عبور» نیست.
به زبان ساده:
Password → احراز هویت → MFA → Session ایجاد میشود
اگر مهاجم در مرحله بعد بتواند Session معتبر را سرقت کند، ممکن است بتواند از همان نشست استفاده کند.
به همین دلیل، MFA بسیار مهم است اما بهتنهایی تمام تهدیدهای مرتبط با Session را از بین نمیبرد.
این موضوع یکی از دلایلی است که استفاده از روشهای Phishing-Resistant Authentication اهمیت پیدا میکند.
Session Hijacking چه تفاوتی با هک رمز عبور دارد؟
این دو حمله را نباید یکی دانست.
| هک رمز عبور | سرقت Session |
|---|---|
| هدف اصلی Password است | هدف اصلی Session Token/Cookie است |
| مهاجم تلاش میکند رمز را به دست آورد | مهاجم تلاش میکند نشست معتبر را تصاحب کند |
| معمولاً بعد از ورود نیاز به احراز هویت وجود دارد | ممکن است Session از قبل احراز هویت شده باشد |
| تغییر رمز میتواند دفاع مهمی باشد | تغییر رمز بهتنهایی ممکن است کافی نباشد |
| MFA میتواند جلوی بسیاری از حملات را بگیرد | نشست سرقتشده ممکن است نیاز به Revoke داشته باشد |
بنابراین اگر احتمال سرقت Session وجود داشته باشد، صرفاً تغییر رمز عبور را نباید پایان کار دانست.
اگر Session Cookie من دزدیده شود، هکر به چه چیزهایی دسترسی دارد؟
میزان دسترسی کاملاً به سرویس، نوع Session، سطح دسترسی حساب و کنترلهای امنیتی آن بستگی دارد.
اما در صورت موفقیت حمله، مهاجم ممکن است بتواند به بخشهایی از همان حساب دسترسی پیدا کند که برای نشست قربانی مجاز هستند.
برای مثال، در یک حساب شخصی ممکن است اطلاعاتی مانند:
- ایمیلها
- اطلاعات حساب
- فایلها
- تنظیمات سرویس
- دادههای شخصی
در معرض خطر قرار بگیرند.
در حسابهای سازمانی، خطر میتواند بیشتر باشد؛ زیرا یک حساب ممکن است به سرویسهای دیگری نیز دسترسی داشته باشد.
بنابراین Session Hijacking میتواند از یک «ورود غیرمجاز ساده» فراتر برود و به سرقت داده، سوءاستفاده از حساب یا حرکت مهاجم به بخشهای دیگر محیط منجر شود.
از کجا بفهمیم Session ما دزدیده شده است؟
تشخیص سرقت Session همیشه ساده نیست.
یکی از مشکلات این حمله این است که مهاجم ممکن است بدون تغییر رمز عبور، از یک نشست معتبر استفاده کند.
بنابراین باید به نشانههایی مانند موارد زیر توجه کرد:
ورود از دستگاه یا موقعیت غیرعادی
اگر سرویس اعلام کند که حساب شما از دستگاه یا موقعیتی غیرمنتظره استفاده شده، موضوع را بررسی کنید.
البته IP بهتنهایی معیار قطعی نیست؛ VPN، شبکههای موبایل، پراکسی و تغییرات معمول اتصال اینترنت میتوانند باعث تغییر IP شوند.
فعالیتهایی که شما انجام ندادهاید
ارسال ایمیل، تغییر تنظیمات، ایجاد Session جدید، دسترسی به فایلها یا فعالیتهای دیگری که متعلق به شما نیستند، میتوانند نشانه خطر باشند.
دریافت هشدارهای امنیتی غیرمنتظره
اگر سرویس درباره ورود جدید، تغییر تنظیمات امنیتی یا فعالیت مشکوک هشدار داد، آن را نادیده نگیرید.
خروج ناگهانی از حساب
خروج غیرمنتظره از برخی حسابها میتواند دلایل مختلفی داشته باشد و بهتنهایی نشانه هک نیست؛ اما اگر همزمان با سایر علائم اتفاق بیفتد، ارزش بررسی دارد.
چگونه از سرقت Session Cookie جلوگیری کنیم؟
هیچ راهکاری ریسک را به صفر نمیرساند، اما چند اقدام میتواند احتمال موفقیت این حملات را بهشدت کاهش دهد.
۱. روی لینکهای ورود مشکوک کلیک نکنید
یکی از مهمترین دفاعها همچنان جلوگیری از ورود به صفحات فیشینگ است.
اگر ایمیلی از شما خواست وارد حساب Microsoft، Google، بانک یا سرویس دیگری شوید، بهتر است بهجای کلیک روی لینک، آدرس سرویس را خودتان وارد کنید یا از Bookmark معتبر استفاده کنید.
ظاهر یک صفحه بهتنهایی معیار قابل اعتمادی برای تشخیص واقعی بودن آن نیست.
۲. از MFA مقاوم در برابر فیشینگ استفاده کنید
همه روشهای MFA از نظر مقاومت در برابر فیشینگ یکسان نیستند.
در صورت پشتیبانی سرویس، روشهایی مانند FIDO2 و WebAuthn میتوانند سطح محافظت بالاتری در برابر برخی حملات فیشینگ ارائه کنند.
۳. مرورگر و سیستمعامل را بهروز نگه دارید
بهروزرسانی مرورگر و سیستمعامل باعث کاهش ریسک سوءاستفاده از آسیبپذیریهای شناختهشده میشود.
۴. افزونههای ناشناس مرورگر را نصب نکنید
افزونههای مرورگر میتوانند سطح دسترسی قابل توجهی داشته باشند.
افزونههای غیرضروری یا ناشناس را حذف کنید و فقط از منابع معتبر استفاده کنید.
۵. نرمافزارهای مشکوک نصب نکنید
یکی از مسیرهای مهم سرقت Cookie میتواند بدافزارهای سرقت اطلاعات باشد.
نصب نرمافزارهای کرکشده، فایلهای ناشناس و ابزارهایی که از منابع نامعتبر دریافت شدهاند، ریسک آلودگی سیستم را افزایش میدهد.
۶. نشستهای فعال حساب را بررسی کنید
بسیاری از سرویسها امکان مشاهده دستگاهها یا Sessionهای فعال را در اختیار کاربر قرار میدهند.
اگر دستگاه یا نشست ناشناسی مشاهده کردید، آن را بررسی و در صورت لزوم Sign out یا Revoke کنید.
۷. در صورت شک، فقط Password را تغییر ندهید
اگر احتمال میدهید Session شما سرقت شده است:
- رمز عبور را تغییر دهید.
- تمام Sessionهای فعال را خارج کنید.
- Tokenها یا نشستهای فعال را در صورت امکان Revoke کنید.
- MFA را بررسی و در صورت نیاز دوباره تنظیم کنید.
- فعالیتهای اخیر حساب را بررسی کنید.
- دستگاه را برای بدافزار بررسی کنید.
OWASP نیز بر ابطال نشستها و مدیریت صحیح چرخه عمر Session برای کاهش ریسک Session Hijacking تأکید دارد.
آیا Logout کردن جلوی Session Hijacking را میگیرد؟
اگر Session هنوز فعال باشد، Logout میتواند آن را باطل کند؛ اما نباید تصور کرد Logout همیشه تمام آثار حمله را پاک میکند.
اگر مهاجم قبلاً Session معتبر را سرقت کرده باشد، مهم است که سرویس واقعاً آن Session را در سمت سرور باطل کند.
به همین دلیل، در صورت شک به compromise بهتر است علاوه بر Logout، گزینههایی مانند Sign out of all sessions یا Revoke active sessions را نیز اجرا کنید.
Session Cookie با Cookieهای معمولی چه تفاوتی دارد؟
هر Cookie لزوماً برای احراز هویت استفاده نمیشود.
وبسایتها از Cookieها برای کاربردهای مختلفی مانند تنظیمات، ترجیحات کاربر، تحلیل و مدیریت Session استفاده میکنند.
اما Authentication/Session Cookie اهمیت امنیتی بسیار بیشتری دارد؛ زیرا میتواند با وضعیت احراز هویت کاربر ارتباط داشته باشد.
به همین دلیل ویژگیهای امنیتی Cookie اهمیت زیادی دارند.
HttpOnly
اگر یک Cookie با ویژگی HttpOnly تنظیم شده باشد، JavaScript سمت صفحه نمیتواند مستقیماً به آن دسترسی داشته باشد. این ویژگی میتواند در برابر برخی سناریوهای سرقت Cookie از طریق JavaScript کمککننده باشد.
Secure
ویژگی Secure باعث میشود Cookie فقط از طریق ارتباط HTTPS ارسال شود. OWASP استفاده از Secure را برای Session Cookieها توصیه میکند.
SameSite
ویژگی SameSite میتواند نحوه ارسال Cookie در درخواستهای Cross-Site را محدود کند و یکی از کنترلهای مهم برای کاهش برخی حملات مبتنی بر Cookie است.
البته هیچکدام از این ویژگیها بهتنهایی تمام سناریوهای سرقت Session را حل نمیکنند.
آیا با تغییر رمز عبور، Session دزدیدهشده باطل میشود؟
همیشه نه.
این موضوع به نحوه پیادهسازی سرویس بستگی دارد.
اگر سرویس هنگام تغییر رمز عبور، Sessionها و Tokenهای قبلی را نیز باطل کند، مهاجم ممکن است دسترسی خود را از دست بدهد.
اما اگر Session قبلی همچنان معتبر باقی بماند، تغییر Password بهتنهایی ممکن است مهاجم را از حساب بیرون نکند.
به همین دلیل، هنگام مشکوک شدن به سرقت Session باید به دنبال گزینههایی مانند:
Sign out everywhere
Revoke sessions
Revoke tokens
یا
Sign out of all devices
باشید.
چرا سرقت Session Cookie به یک تهدید جدی تبدیل شده است؟
مدل قدیمی حملات حسابهای کاربری بیشتر حول یک سؤال میچرخید:
«رمز عبور کاربر چیست؟»
اما حملات مدرنتر میتوانند سؤال دیگری داشته باشند:
«چطور میتوانم نشست احراز هویتشده کاربر را به دست بیاورم؟»
این تغییر اهمیت زیادی دارد.
مهاجم ممکن است بهجای تلاش برای شکستن رمز عبور یا MFA، کاربر را فریب دهد تا خودش وارد حساب شود و سپس Session ایجادشده را هدف قرار دهد.
به همین دلیل، حملاتی مانند AiTM نشان میدهند که احراز هویت موفق پایان زنجیره دفاع نیست و محافظت از Session پس از ورود نیز اهمیت دارد.
MITRE ATT&CK نیز سرقت Web Session Cookie را بهعنوان یک تکنیک مشخص برای دستیابی به دسترسی از طریق Cookie معتبر ثبت کرده است.
جمعبندی
Session Cookie در اصل بخشی از سازوکار نگهداشتن وضعیت ورود کاربر است؛ اما اگر یک مهاجم بتواند Session معتبر را سرقت کند، ممکن است بتواند بدون دانستن رمز عبور از همان نشست برای دسترسی غیرمجاز استفاده کند.
این حمله با سرقت رمز عبور تفاوت دارد و به همین دلیل، تغییر Password همیشه بهتنهایی کافی نیست.
برای کاربران، مهمترین اقدامات عبارتاند از:
- ورود نکردن از طریق لینکهای مشکوک
- استفاده از MFA مقاوم در برابر فیشینگ
- بهروزرسانی مرورگر و سیستمعامل
- نصب نکردن نرمافزار و افزونههای ناشناس
- بررسی دورهای Sessionهای فعال
- خروج از نشستهای ناشناس
- و در صورت احتمال سرقت Session، Revoke کردن نشستها و Tokenهای فعال
مهمترین نکته این است:
هکر همیشه به رمز عبور شما نیاز ندارد؛ گاهی کافی است چیزی را بدزدد که سرویس از آن بهعنوان مدرک ورود شما استفاده میکند.
منابع فنی پیشنهادی:
OWASP – Session Management Cheat Sheet
MITRE ATT&CK – Steal Web Session Cookie (T1539)