احسان امجدی
کارشناس امنیت اطلاعات و ارتباطات

معرفی 10 مرحله انجام حمله Session Hijacking در تست نفوذ

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

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

مرحله اول : مشخص کردن یک session

همانطور که قبلا هم گفته شد، اولین مرحله تعین یک session فعال به عنوان هدف از طریق شنود( Sniffing) و به منظور بدست گرفتن کنترل و تسلط بر آن است. در یک کلام تعین یک session فعال برای hijack کردن آن. پس از مشخص شدن session هدف، باید چک شود که آیا session ID در URL استفاده شده است یا خیر. اگر session ID در URL مورد استفاده قرار گرفته بود، در مرحله بعد باید رمز نگاری session چک شود. اگر هم session ID در URL مورد استفاده قرار نگرفته بود، باید ترافیک بین دو طرف ارتباط را بدقت شنود کرد.

مرحله دوم : شنود ترافیک بین دو طرف ارتباط

شنود ترافیک بین دو طرف ارتباط با استفاده از ابزارهای مختلفی انجام پذیر است. از جمله این نرم افزارها میتوان به Wireshark، CACE pilot، Windump، Capsa network analyzer اشاره کرد. ترافیک Session را رصد کرده و به ارتباط رد و بدل شده چنگ بزنید. حال وقت آن است که رمز بودن session چک شود. اگر session رمز نشده بود، باید session ID را بازیابی نمود.

مرحله سوم : بازیابی session ID

اگر این توانایی را ندارید که Session ID را از یک session رمز نشده بازیابی کنید، میتوانید از ابزارهای خودکار مثل Paros proxy و Burp Suite که برای این کار طراحی شده اند استفاده کنید. استفاده از این ابزار کار بازیابی را ساده تر میکنند. اگر session ID بدست آمد، در مرحله بعد باید دید که آیا رمز شده است یا خیر. Session ID ها معمولا بر اساس الگوریتم های مختلفی تولید میشوند. اگر مهاجم بتواند الگوریتم های استفاده شده در ایجاد session ID را حدس بزند، براحتی توانایی بازیابی یا دوباره ایجاد کرد session ID را خواهد داشت. اگر session ID رمز شده باشد، باید آن را کرک کرد و اگر هم رمزی در کار نباشد، شما باید ایمیل های جعلی را به قربانی و به منظور انجام session fixation ارسال کنید.

مرحله چهارم : کرک کردن رمزنگاری Session ID

session ID را میتوان کرک کرد اگر با URL، HTML، unicode، Base64 یا hex کد شده باشد. کرک کردن session ID های رمز شده، session ID های اصلی قربانی را بدست میدهد. معمولا session ID ها مسئول احراز هویت کاربر هستند. اگر بتوانید Session ID های یک کاربر احراز هویت( Authenticate) شده را بازیابی کنید، خواهید توانست خود را بین سیستم قربانی و سیستم طرف ارتباط آن وارد کنید و میتوانید از این ارتباط غیر مجاز جهت اهداف خرابکارانه خود استفاده لازم را ببرید. چنانچه در رمزگشایی session ID نیز موفق بودید، با کمک ایمیل های جعلی میتوانید session fixation را انجام دهید.

مرحله پنجم : برقراری کانکشن نرمال با یکی از طرفین ارتباط

بعد از انجام session fixation، قادر خواهید بود با یکی از طرفین ارتباط (که با رصد ترافیک شبکه به آن دست یافتید) یک کانکشن عادی برقرار کنید و حتی خواهید توانست با جا زدن خود به عنوان یک کاربر شناخته شده در شبکه، به سیستم های دیگر نیز دسترسی پیدا کنید.

مرحله ششم : جمع آوری session ID های مختلف

هنگامی که با یکی از سیستم های شبکه ارتباط برقرار کردید، میتوانید session ID های مختلف دیگر را نیز بواسطه آن جمع آوری کنید. دو روش مختلف برای بازیابی یا بدست آوردن session ID ها وجود دارد. یا آن ها از کوکی که درون هدرهای پاسخ وجود دارد، بدست می‌آیند و یا مطابق با بیانی خاص بر خلاف بدنه پاسخ هستند. برای جمع آوری session ID از درون کوکی ها، باید مطمئن شد که که چک باکس مربوط به "From message body" انتخاب نشده باشد و برای جمع آوری session Id از بدنه اصلی پیام، باید مطمئن شد که چک باکس " From message body" انتخاب شده باشد.

مرحله هفتم : پیش بینی یک session ID جدید

حالا با تحلیل session ID های جمع آوری کرده خواهید توانست یک session ID جدید را پیش بینی کرده و یا حدس بزنید. اینکار به منظور پیدا کردن session ID فعلی و انجام حمله در پاسخ به آن است.

مرحله هشتم : انتشار session ID جدید

یک replay attack هنگامی رخ میدهد که شما جریانی از پیام ها (session ID ها) را بین دو بخش ارتباط کپی کرده و جریان را بطرف یک یا هر دو سر ارتباط روانه کنید. حال برقراری ارتباط را چک کنید. اگر ارتباط برقرار شده بود، کار بعدی اینست که تمام مشاهدات و کارهای انجام شده در تست نفوذ را مستند سازی نمایید. اگر ارتباط برقرار نشده بود، نهایتا باید با استفاده از روش Brute force، session ID معتبر را پیدا نموده و ارتباط را برقرار کنید.

مرحله نهم : Brute force session ID ها

session ID ها را با استفاده از رنجی از مقادیر محتمل به منظور محدود کردن فرآیند، Brute force کنید. این کار تا زمان پیدا شدن session ID معتبر، ادامه پیدا خواهد کرد. این فرآیند شامل درست کردن هزاران درخواست با استفاده از session ID های رندوم ایجاد شده است. این روش جامع است ولی زمان زیادی را از شما خواهد گرفت.

مرحله دهم : مستند سازی تمام کارهای انجام شده

آخرین مرحله در هر تست نفوذی مستند سازی تمام کارهای انجام شده و نتایج آن به همراه تحلیل های مرتبط با آن است.

نویسنده: احسان امجدی

منبع: انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.


احسان امجدی
احسان امجدی

کارشناس امنیت اطلاعات و ارتباطات

احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...

نظرات