در ادامه مباحث مربوط به انواع حملاتی که ممکن است شبکه شما را دچار اختلال کند و دستهبندی خاص آنها، امروز نوع حملات مرتبط با موضوع session hijacking و بصورت ریزتر Application-level Session Hijacking و حملات زیر شاخه آن را مورد بررسی قرار میدهیم.
در session hijacking attack، یک توکن معتبر از طریق پیش بینی و یا سرقت آن مورد تهدید قرار میگیرد که این کار به منظور بدست آوردن حق دسترسی غیر مجاز به وب سرور است. همانطور که میدانید، حمله Session Hijacking به دو طریق صورت میپذیرد؛ network-level و Application-level. با استفاده از Network-level hijacking اطلاعات مفیدی بدست میآید که از آن میتوان برای انجام یک حمله Application-level hijacking استفاده لازم را برد.
بنابراین Network-level و Application-level hijacking در اکثر حالات با یکدیگر اتفاق میافتند. Application-level hijacking شامل در اختیار گرفتن کنترل یک session موجود یا ایجاد یک session جدید بر اساس اطلاعات سرقت شده توسط Network-level hijacking است. Application-level hijacking در خلال یک HTTP session رخ میدهد. HTTP session ها براحتی با لو رفتن session ID های مربوطه ( شناسه های منحصربفردشان) قابل سرقت هستند. Application-level session hijacking از راه های مختلفی میتواند یک session token را بخطر اندازد که در زیر به مهترین آن ها اشاره میکنیم:
باید گفت که زمانی که ترافیک HTTP بصورت رمز نشده ارسال میشوند، انجام این روش بسیار ساده است. ترافیک HTTP ممکن است دربردارنده session ID ها باشد. مهاجمان با استفاده از شنود ارتباط، ترافیک HTTP را ضبط کرده و سپس آن را برای بدست اوردن session ID ها آنالیز میکنند. اگر ترافیک رمز نشده باشد، پیش بینی session ID ها بسیار ساده خواهد بود. گفتنی است که session رمز نشده ممکن است در دل خود اطلاعات مربوط به شناسه کاربری و پسورد را نیز داشته باشد.شکل زیر توضیحات ارائه شده را با رسم دیاگرام توضیح میدهد:
در ابتدا مهاجم ترافیک HTTP بین قربانی و وب سرور را شنود، دیتای کپچر شده را آنالیز و نهایتا session ID را پیش بینی میکند. سپس مهاجم خودش را در نقش قربانی جعل کرده و session ID را قبل از آن که قربانی بتواند کاری انجام دهد، به وب سرور ارسال میکند. بنابراین مهاجم براحتی کنترل session موجود را بدست میگیرد.
پیش بینی session token یا همان session ID شیوه ای از ربودن یا جعل هویت یک کاربر وب سایت است. این روش به session hijacking نیز معروف است. پایه و اساس این روش بر حدس زدن و یا ایجاد یک ارزش منحصربفرد مثل session ID ای که در احراز هویت یک کاربر یا یک session خاص کاربرد دارد، بنیان نهاده شده است. با استفاده از تکنیک session hijacking، یک مهاجم میتواند با دردست داشتن حق دسترسی یک کاربر بخطر افتاده درخواست های ping برای وب سایت مورد نظر ارسال کند.هنگامی که کاربر درخواست برقراری ارتباط را برای وب سایت ارسال کرد، وب سایت در ابتدا سعی میکند احراز هویت را انجام دهد و هویت کاربر را بررسی کند.
تا زمانی که کاربر نتواند هویت خود را برای وب سایت اثبات نماید، وب سایت اطلاعات درخواست شده را به کاربر تحویل نمیدهد. وب سایت ها معمولا کاربران را بر اساس ترکیبی از شناسه کاربری و پسورد احراز هویت میکنند. پس از آن که هویت کاربر برای وب سایت محرز شد، وب سایت یک session ID منحصربفرد را برای کاربر ایجاد میکند. این session ID نشان میدهد که session ایجاد شده برای کاربر، احراز هویت شده است. به منظور تداوم هویت تائید شده کاربر برای وب سایت، session ID به ارتباط بعدی بین آندو نیز الصاق میشود. اگر مهاجم بتواند session ID را با حدس زدن و پیش بینی بدست آورد، توانسته است session ایجاد شده را بخطر بیاندازد.
اکثر وب سرورها از الگوریتم های معمول یا از پیش تغریف شده برای ایجاد session ID هایشان استفاده میکنند. این الگوریتم ها ممکن است session ID ها را براساس افزایش غیرخودکار اعداد و یا استفاده از روشهایی پیچیده تر مثل دخیل نمودن فاکتورهای زمان و دیگر متغیرها، ایجاد نمایند. هنگامی که session ID محاسبه شد، در URL، در یک فرم مخفی یا در یک کوکی ذخیره خواهد شد. در چنین مواردی، چنانچه مهاجم بتواند الگوریتم مورد استفاده را بدست آورد، براحتی مدیریت session ID را بر عهده خواهد گرفت. راه های ممکن که مهاجم بتواند حمله را ترتیب دهد ازطرق زیر امکان پذیر است:
مهاجم session ID های متعدد را رصد کرده و سپس آن ها را به قصد پیدا کردن یک الگو، آنالیز میکند:
در 25 سپتامبر 2010 و در ساعت 16:25:55، مهاجم موفق به پیش بینی session ID میشود:
این حمله نوعی از حمله است که در آن مهاجمان در یک ارتباط موجود بین دو سیستم اختلال ایجاد کرده تا زنجیره پیغام های رد وبدل شده را قطع کرده و اطلاعات دلخواه خودشان را در آن تزریق کنند. در این حالت قربانی بر این گمان است که مستقیما با طرف مورد مظرش تبادل اطلاعات دارد اما واقعیت ان است که تمام اطلاعات رد و بدل شده توسط مهاجم کنترل میشود. عملکردهای مختلف این حمله شامل جاسوسی در یک ارتباط، اخلال در یک ارتباط، قطع پیغام ها و ویرایش دیتاها میباشد.در اینجا برای نمونه یک تراکنش HTTP را در نظر میگیریم. در این حالت بین کلاینت و سرور ارتباط TCP برقرار است. کاری که مهاجم انجام میدهد شکافتن این ارتباط TCP موجه به دو ارتباط مجزا با تکنیک های مختلف بین کلاینت و سرور است. این دو ارتباط مجزا ارتباط کلاینت با مهاجم و ارتباط مهاجم با سرور است.
پس از قطع موفقیت آمیز ارتباط TCP، مهاجم قادر به خواندن، ویرایش و تزریق اطلاعات غلط به ارتباط قطع شده است. بخاطر ذات پروتکل HTTP و همچنین مکانیزم تبادل دیتا که همگی بر اساس ASCII هستند، حمله Man-in-the-middle بسیار موثر و کاراست. در این روش امکان مشاهده اطلاعات ترانسفر شده از طریق پروتکل HTTP وجود دارد.
این حمله شبیه حمله Man-in-the-middle است. تفاوت بین این دو تکنیک آن است که حمله Man-in-the-Browser از تروجان برای مداخله و دستکاری صحبت های رد و بدل شده بین مرورگر و مکانیزم امنیتی یا دیتابیس آن است. این حمله از تروجانی که بر روی سیستم نصب شده است برای مداخله در مرورگر و مکانیزم امنیتی آن استفاده میکند. این تکنیک قابلیت ویرایش و شنود تراکنش ها را دارد. مهمترین هدف این حمله سرقت مالی توسط دستکاری تراکنش های در بانکداری اینترنتی است. در این روش مهاجمان میتوانند اطلاعات حساس یا پول را بدون بجا گذاشتن کوچکترین اثر و یا آلارمی سرقت کنند. و تمام این ها در حالتی اتفاق میافتد که تمام تراکنش ها در بستر SSL صورت میپذیرد. تمام مکانیزم های امنیتی ظاهرا نرمال هستند. بنابراین برای پیشگیری از قربانی شدن در این حمله باید هنگام استفاده از تراکنش های اینترنتی بانک خود حساس و باهوش عمل کرد.
در این نوع حمله مهاجم سعی میکند تا از آسیب پذیری های موجود در اپلیکیشن کلاینت نهایت استفاده را برده و از طریق اجبار آن به برقراری ارتباط با سرور آلوده یا اجبار به پردازش اطلاعات آلوده به هدف خود برسد.در حالت اول یعنی هنگامی که کاربر با سرور تعامل و ارتباط برقرار میکند، شانس زیادی در اجرای این حمله وجود دارد. اگر کلاینت با سرور ارتباطی نداشته باشد، آنگاه اطلاعات آلوده نیز نمیتوانند از طرف سرور به کلاینت فرستاده شوند. بنابراین اپلیکیشن از حمله و آلودگی در امان میماند. نمونه نرم افزاری که در برابر حمله Client-side آسیب پذیر است، نرم افزارهای مربوط به ارسال پیام (چت) هستند. هنگامی که این اپلیکیشن ها ران میشوند کلاینت ها معمولا بر اساس ساختاربندی ای که شده به یک سرورِ ریموت وصل میشوند. حملات client-side از سه راه اجرایی میشوند:
این حملات نوعی آسیب پذیری در سیستم امنیتی کامپیوتر است. این آسیب پذیری معمولا در نرم افزارهای تحت وب یافت میشوند و از آن ها برای دور زدن کنترل دسترسی ها استفاده میشود. مهاجم Client-side Script را به صفحات وب تزریق کرده و آن ها برای حملات cross-side script به سوی قربانیان هدف ارسال میکند.در واقع این نوع حمله همان حمله Client-inside است که در آن مهاجم با ایجاد کد یا برنامه های آلوده، Session ID را بخطر میاندازد.
نویسنده: احسان امجدی
منبع: انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.
کارشناس امنیت اطلاعات و ارتباطات
احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود