setakit.com
setakit.com

حمله SYN flood

حمله ی SYN flood چیست؟

حمله ی SYN flood (حمله ی نیمه ی باز) نوعی حمله DDoS است که هدف آن، از دسترس خارج ساختن سرور برای ترافیک قانونی، با مصرف تمامی منابع در دسترس سرور می باشد. یک مهاجم با ارسال درخواست های مکرر (SYN) قادر است تمامی پورت های روی سرور را مورد هدف قرار دهد و باعث شود دستگاه مورد نظر قادر به پاسخگویی به ترافیک قانونی نباشد و یا بسیار کند پاسخ دهد.

نحوه عملکرد SYN flood چگونه است؟

حملات SYN flood با به خطر انداختن مراحل TCP connection کار می کند. در شرایط عادی، TCP connection، به منظور ایجاد یک اتصال، سه مرحله ی مشخص را نشان می دهد.

  • ابتدا کاربر به منظور ایجاد connection، یک SYN packet به سرور ارسال می کند.
  • سپس سرور جهت تایید ارتباط، با یک SYN/ACK packet به پکت اولیه پاسخ می دهد.
  • در آخر، کاربر  یک پکت ACK را باز می گرداند تا دریافت پکت از سرور را تایید کند. پس از اتمام مراحل ارسال و دریافت پکت، TCP connection باز است و قادر به ارسال و دریافت داده ها می باشد.

به منظور ایجاد حمله ی DoS، پس از این که پکت اولیه SYN دریافت شد، سرور با یک یا چند پکت SYN/ACK پاسخ می دهد و سپس مهاجم منتظر مرحله آخر در  handshake می ماند. نحوه عملکرد آن به شرح ذیل است:

  • مهاجم، حجم زیادی از پکت های SYN را به سرور مورد نظر ارسال می کند و غالبا با آدرس های آی پی جعلی این کار انجام می شود.
  • سپس سرور، به تمامی درخواست های کانکشن پاسخ داده و یک پورت باز را برای دریافت پاسخ رها می کند.
  • در حالی که سرور منتظر آخرین ACK packet می باشد، که هرگز نخواهد رسید، مهاجم به ارسال پکت های SYN بیشتری ادامه می دهد. رسیدن هر یک از پکت های جدید SYN منجر می شود سرور به صورت موقتی در اتصال باز پورت بری یک مدت زمان مشخص باقی بماند و پس از استفاده از تمامی پورت های موجود، سرور دیگر قادر به عملکرد عادی نمی باشد.

در شبکه، زمانی که سرور یک کانکشن را به صورت باز رها می کند اما دستگاهی که در سمت دیگر قرار دارد، کانکشن باز ندارد، به صورت نیمه باز در نظر گرفته می شود. در این نوع حملات DDoS، سرور هدف، به طور مداوم اتصالات را باز می گذارد و سپس منتظر به اتمام رسیدن زمان هر یک از کانکشن ها قبل از در دسترس بودن مجدد پورت ها می ماند. در نتیجه به این نوع حمله، “حمله نیمه باز” نیز گفته می شود.

انواع مختلف حمله SYN flood

  • Direct attack: 

یک SYN flood که آدرس آی پی آن جعلی نباشد، حمله مستقیم یا direct نامیده می شود. در این حمله، مهاجم به هبچ وجه آدرس آی پی خود را مخفی نمی کند. در نتیجه، مهاجم از یک دستگاه واحد به همراه آدرس آی پی واقعی اقدام به حمله می کند. بنابراین در این حالت، مهاجم به شدت در معرض شناخت حمله و راه های مقابله قرار می گیرد. به منظور ایجاد حمله نیمه باز در دستگاه مورد نظر، هکر از پاسخ دستگاه به SYN-ACK packet جلوگیری می کند. غالبا این امر با استفاده از قوانین فایروال که پکت های خروجی غیر از پکت های SYN را متوقف نموده  و یا با فیلتر کردن پکت های ورودی SYN-ACK قبل از رسیدن به دستگاه مهاجم، به دست می آید. این روش در عمل به ندرت مورد استفاده قرار می گیرد و یا هرگز از آن استفاده نمی شود، زیرا راه های کاهش این حملات بسیار ساده است. به عبارت دیگر می توان با مسدود کردن آدرس آی پی هر  سیستم مخرب، با آن مقابله کرد. در صورتی که مهاجم از بات نت استفاده کند، مخفی کردن آی پی دستگاه آلوده، اهمتی نخواهد داشت.

  • Spoofed attack: 

یک کاربر مخرب همچنین می تواند آدرس های آی پی هر پکت SYN را که ارسال می کند، جعل کند. در این حالت کشف حمله و همچنین راه های مقابله با آن بسیار دشوار می گردد. با این که پکت ها جعل می شوند، اما باز هم می توان آن ها را تا مبدا شان ردیابی نمود. انجام این کار و ردیابی آن ها بسیار دشوار است اما غیر ممکن نیست، به خصوص اگر خدمات دهنده ی اینترنت (IPS) مایل به همکاری و کمک باشد.

  • Distributed attack (DDoS):

در صورتی که حمله با استفاده از بات نت ایجاد شده باشد، احتمال ردیابی مبدا آن، بسیار کم می شود. حتی ممکن است مهاجم آدرس آی پی دستگاهی که از آن پکت ها را توزیع می کند را نیز جعل کند. چنانچه مهاجم از بات نت استفاده کند، مخفی کردن آی پی دستگاه آلوده، اهمیتی نخواهد داشت.

 

مهاجم می تواند با استفاده از حمله ی SYN flood سعی در ایجاد حمله DoS در دستگاه یا خدمات مورد نظر با ترافیکی بسیار کمتر از حمله ی دیداس داشته باشد. به جای حملات حجمی، که هدف آن ها اشباع زیرساخت های شبکه است، حملات SYN می بایست بزرگ تر از تعداد موجود در سیستم عامل هدف باشند. اگر مهاجم بتواند اندازه ی backlog را تعیین کند و اینکه چه مدت هر کانکشن قبل از اتمام زمان، باز می ماند قادر خواهد بود پارامترهای دقیق مورد نیاز برای غیرفعال کردن سیستم را هدف قرار دهد. در نتیجه حجم کلی ترافیک را به کمترین میزان رسانده تا بتواند حمله ی DoS را انجام دهد.

راه های مقابله با حمله SYN flood چیست؟

مدت زیادی است که آسیب پذیری SYN flood وجود دارد و روش های مختلفی برای کاهش آن وجود دارد. برخی از روش های مقابله با آن عبارتند از:

  • Increasing Backlog queue

هر سیستم عاملی که بر روی دستگاهی وجود دارد، دارای تعداد مشخصی کانکشن نیمه باز می باشد. یک پاسخ به حجم بالای پکت های SYN منجر به افزایش تعداد کانکشن های نیمه باز می شود. به منظور افزایش موفقیت آمیز حداکثر تعداد backlog، سیستم می بایست مجهز به منابع ذخیره ی مازاد، جهت پرداختن به درخواست های جدید گردد. چنانچه، سیستم حافظه ی کافی جهت مدیریت backlog queue افزایش یافته نداشته باشد، تاثیر منفی بر روی عملکرد سیستم  خواهد داشت، اما باز هم از denial of service یا DoS بهتر است.

  • Recycling the Oldest Half-Open TCP connection

استراتژی دیگری که مورد استفاده قرار می گیرد، شامل overwrite کردن قدیمی ترین کانکشن نیمه باز است زمانی که backlog به صورت کامل پر می شود. این استراتژی مستلزم این است که کانکشن های قانونی در زمان کمتری در مقایسه با پر شدن backlog توسط پکت های  مخرب SYN ایجاد شوند. این دفاع زمانی که حجم حمله افزایش یابد یا اگر اندازه ی backlog بسیار کوچک باشد، از کار می افتد.

  • SYN cookies

این استراتژی شامل ایجاد یک cookie توسط سرور می باشد. به منظور جلوگیری از خطر قطع کانکشن در هنگام پر شدن backlog، سرور به تمامی درخواست های کانکشن با استفاده از یک پکت SYN-ACK پاسخ می دهد. اما سپس درخواست SYN را از backlog حذف نموده، در ضمن درخواست را از حافظه نیز حذف می کند و پورت را به صورت باز رها نموده و آماده ی ایجاد یک کانکشن جدید می گردد. چنانچه کانکشن، یک درخواست قانونی باشد و پکت نهایی ACK از دستگاه کاربر به سرور ارسال شود، در آن صورت سرور اقدام به بازسازی ورودی SYN backlog queue البته با برخی محدودیت ها خواهد نمود. اگرچه تلاش برای کاهش حملات منجر به از دست رفتن برخی از داده های مربوط به TCP connection می گردد، اما باز هم بهتر از اجازه دادن به DoS به کاربران قانونی در نتیجه حمله است.

 

 

سایر مطالب مرتبط

حملات دیداس ستاک فناوری ویرا    حملات اصلی به شبکه های کامپیوتری ستاک فناوری ویرا

        حمله DDoS                      حملات اصلی به شبکه