حملات سیلاب (SYN Flood): ساده اما ویرانگر

حمله سیلاب (SYN Flood) به نوعی حملات می گویند، که در اثر حملات غیرمجاز سرور را مشغول نگه می دارد و سرور قادر نخواهد بود به حملات مجاز پاسخ دهد. در این مقاله به طور کامل برایتان توضیح خواهیم داد:
با توجه به تعداد 65535 پورت TCP که برای هر آی پی تعریف شده، میتوان به راحتی درک کرد که چرا تعداد اکسپلویتهای امنیتی در اینترنت تا این حد زیاد است. با اینکه حملات SYN به شدت جدید هستند، مقابله با آنها نیز هم بسیار دشوار است.
وقتی یک کسبوکار، وبسایتی را راهاندازی کرده، آن را در اینترنت قرار داده و درهایش را روی تمامی بازدیدکنندگان باز میکند، سطح خاصی از خطر را پذیرفته است. اما چیزی که بعضی مشاغل آن را درک نمیکنند این است که بعضی از خطرات حتی برای شرکتهای بسیار بزرگ و موسسات دولتی هم ویرانگر هستند. از میانه تا انتهای دهه 90 میلادی حملهای ابداع شد که مشکلات زیادی را ایجاد کرد و امروزه همچنان به مشکل آفرینی ادامه میدهد.
این حمله، حمله سیلاب (SYN Flood) نام دارد. با توجه به تعداد 65535 پورتی که برای هر IP تعریف شده و تمام این پورتها میتوانند باعث آسیب پذیر شدن نرمافزارهایی شوند که از آنها استفاده میکنند، میتوان به راحتی درک کرد که چرا این همه اکسپلویت امنیتی در اینترنت وجود دارد. حملات سیلاب SYN متکی بر این واقعیت هستند که سرورهای وب به تقاضاهای ظاهرا مجازی که درخواست مشاهده صفحات وب را دارند پاسخ میدهند؛ صرف نظر از اینکه تعداد این تقاضاها چقدر است.
اما اگر مهاجمی تعداد زیادی درخواست ارسال کند و سرور را مشغول نگه دارد، سرور قادر به پاسخگویی به تقاضاهای مجاز نیست، بنابراین فاجعهای رخ داده و سرور از کار میافتد. شیوه عملکرد حملات سیلاب SYN هم در اصل به همین صورت است. در ادامه نگاهی خواهیم داشت به بعضی از متداولترین انواع حملات SYN و آنچه مدیران سیستم و شبکه میتوانند برای مقابله با این خطرات انجام دهند.
اصول کلی پروتکل TCP: حمله سیلاب (SYN Flood) چطور کار میکند؟
با توجه به عدم وجود تکنیکی برای کاهش خطر حملات SYN Flood، وقتی این حملات برای اولین بار معرفی شدند وحشت زیادی را برای کسبوکارهای آنلاین ایجاد کردند.
حملات سیلاب SYN که در دسته حملات محروم سازی از سرویس قرار دارند، از این جهت برای مدیران شبکه و سیستمها رعبآورترند که ترافیک مربوط به این حملات معمولا به عنوان ترافیک مجاز و بدون مشکل جلوه داده میشود.
برای درک بهتر این نوع حمله بهتر است به پروتکلی که مسئولیت بخش قابل توجهی از ترافیک اینترنت را برعهده دارد، یعنی پروتکل کنترل انتقال یا به اختصار TCP نگاهی بیندازیم.
هدف از چنین حملاتی این است که تمامی منابع موجود سرور، با متقاعد کردن سرور به اینکه در حال پاسخدهی به کاربران مجاز است، مورد مصرف قرار بگیرند. در نتیجه سرور از ارائه سرویس به کاربران مجاز ناتوان خواهد بود.
ارتباطات TCP که از آنها برای ارسال ایمیل، مشاهده وبسایتها، ارسال توییت و میلیونها کار دیگر استفاده میشود، با فرایندی به نام three-way handshake یا دست تکان دادن سه طرفه، انجام میگیرد. پیش شرطهای لازم برای عمل handshake ساده است و به محض اینکه هر دو طرف متصل شدند، این پروتکل پیچیده، قابلیتهایی مثل محدود کردن نرخ دادههایی که یک سرور به یک گیرنده ارسال میکند – بر اساس میزان پهنای باندی که گیرنده مشخص کرده – را فراهم میکند.
پس از اینکه بستهای به نام SYN (که مخفف synchronize یا هماهنگسازی است) از طرف بازدیدکننده یا کلاینت ارسال شد، سرور با بسته SYN-ACK synchronize-acknowledge یا تایید دریافت بسته هماهنگسازی) به آن پاسخ میدهد که پس از آن بازدیدکننده دریافت این بسته را تایید میکند و در پاسخ یک بسته ACK (یا تایید) را ارسال میکند. در این مرحله ارتباط بین کلاینت و سرور برقرار شده و امکان انتقال آزادانه ترافیک فراهم میشود.
در حمله SYN Flood سعی میشود به نوعی در این فرایند اختلال بوجود بیاید و این کار با عدم ارسال ACK به سرور پس از دریافت SYN-ACK انجام میشود. در این حالت یا این بسته کاملاً حذف میشود یا ممکن است پاسخی که از طرف کلاینت ارسال میشود، شامل اطلاعاتی گمراه کننده مثل یک IP جعلی باشد و بنابراین سرور را مشغول به تلاش برای ارتباط با یک ماشین دیگر کند. این مکانیزم ساده است اما برای هر میزبانی که پروتکل TCP را میپذیرد میتواند مرگبار باشد.
Slowloris
یکی از انواع این حملات که چند سال پیش سرخط خبرها را از آن خود کرد، Slowloris نام دارد. در وبسایت Slowloris این مکانیزم به عنوان روشی “با پهنای باند کم اما در عین حال حریصانه و بسیار پرخطر” معرفی شده است. همچنین توضیح داده شده که چطور یک ماشین واحد میتواند وب سرور ماشین دیگری را با حداقل پهنای باند از کار انداخته و عوارضی جانبی روی سرویسها و پورتهای دیگر هم ایجاد کند.
البته باید توجه داشت که چنین حملهای در اصل در گروه حملههای محروم سازی از سرویس معمولی قرار نمیگیرد. به این خاطر که هر چند یک کانکشن TCP کامل ایجاد میشود، اما فقط یک درخواست HTTP ناتمام برای دریافت یک صفحه وب به سرور ارسال میشود. یکی از اثرات این روش حمله این است که در مقایسه با سایر حملات، وب سرور میتواند نسبتا سریعتر به وضعیت نرمال برگردد.
این ویژگی میتواند به مهاجم امکان دهد تا این حملات کوتاه مدت را در فاصله زمانی که سرور در حال تقابل با سیلاب SYN است اجرا کند تا زمانی که سرور به حالت معمولی بازگشت وجود چنین حملهای در کنار حمله سیلاب (SYN Flood) مشخص نشود.
تاکتیکهای واکنشی علیه حملات سیلاب
با توجه به تعداد بسیار زیاد سایتهای مهمی که هدف این حملات قرار گرفتهاند، مشخص است که نیاز به تکنیکهای فوری برای کاهش خطر وجود دارد. مشکل این است که غیرقابل نفوذ کردن یک سرور به صورت کامل در برابر چنین حملاتی غیرممکن است. برای مثال، روش قطع کردن اتصالات که برای مقابله با این حملات طراحی شده است، منجر به مصرف منابع سرور شده و میتواند دردسرهای دیگری ایجاد کند.
توسعه دهندگان Linux و FreeBSD با ایجاد تغییراتی در کرنل سیستمعامل به این حملات عکسالعمل نشان دادند؛ این تغییرات، کوکیهای SYN نام دارند که برای مدتها در کرنلهای قدیمی وجود داشت اما جای تعجب است که در حالت پیش فرض این ویژگی فعال نبود. کوکیهای SYN با مکانیزمی تحت عنوان شماره ترتیب TCP کار میکنند.
در این سیستم روشی وجود دارد که وقتی ارتباطی برقرار شد، ترتیب مورد نظر را مشخص میکند و همزمان با دور ریختن بستههای SYN که در صف قرار دارند، از وقوع حملات سیلابی پیشگیری میکند. به این ترتیب سرور در صورت لزوم میتواند کانکشنهای بیشتری را مدیریت کند و در نتیجه صف درخواستها هیچ وقت سرریز نمیشود – حداقل در حالت تئوری.
بعضی از افراد از کوکیهای SYN به دلیل تغییراتی که در کانکشنهای TCP ایجاد کردهاند، انتقاد کردند. در نتیجه راهکاری تحت عنوان تراکنشهای کوکی TCP (TCPCP) معرفی شد تا بر این نقطه ضعف غلبه کند.
نیاز به احتیاط و محافظت در برابر حملات
با توجه به تعداد رو به رشد مسیرهای حمله که همواره کشف و از آنها سوءاستفاده میشود، بسیار مهم است که دائما مراقب و هوشیار باشیم. حملات جدید افرادی با نیت خوب یا شوم ما را ملزم به تلاش برای پیدا کردن روشهای جدید محافظت از سیستمها میکنند.
قطعا یکی از درسهای مهمی که این حملات به ظاهر ساده به متخصصین سایبری میدهند این است که همواره در حال تلاش برای تکامل نرمافزارهای فایروال و پروتکلهای اینترنت باشند. امیدواریم که این تلاشها در نهایت به نفع تمامی کاربران اینترنت باشند.