حمله DDoS و راه های مقابله با آن

در اوایل سال ۲۰۰۰ میلادی یک دانشآموز دبیرستانی از کانادا ، به نام مایکل کالس (معروف به Mafia Boy) به وب سایت YAHOO حمله کرد. این پسر کم سن و سال توانست با طراحی حمله DDoS ، یکی از بزرگترین وبسایتهای آن زمان را از دسترس خارج کند.
فعالیتهای Mafia Boy در هفتههای بعدی هم ادامه پیدا کرد. او حتی توانست فعالیت سایتهای معروف دیگری مثل eBay، آمازون و CNN را مختل کند. مایکل اولین کسی نبود که از DDoS استفاده کرد، اما استفاده از این حمله در سطح عمومی و هدف قرار دادن سایتهای بزرگ، DDoS را به یک نگرانی جدی برای همه بیزینسها تبدیل کرد.
پس از گذشت ۲۰ سال، این نوع حمله نه تنها از دور خارج نشده، بلکه پیشرفته تر هم شده است و میتواند خرابیهای بزرگتری به بار بیاورد !
در این مقاله ، حمله DDoS را کامل توضیح خواهیم داد ، انواع این نوع حملات و چند نوع از نرمافزارهای اجرای حمله دیداس را معرفی خواهیم کرد و در نهایت خواهیم نوشت که چطور از حمله DDoS جلوگیری کنید.
حمله DDoS چیست ؟
حمله DDoS (یا dos) مخفف Distributed Denial Of Service Attack است و به زبان ساده سرازیر کردن تعداد زیادی تقاضا (Request) به یک سرور (کامپیوتر قربانی یا هدف) و استفاده بیش از حد از منابع (پردازنده، پایگاه داده، پهنای باند، حافظه و…) می باشد به طوری که سرویس دهی عادی آن سرور به کاربرانش دچار اختلال شده و از دسترس خارج میشود.
برای درک بهتر ، یک اتوبان را تصور کنید که ماشینها با خیال راحت در آن در حال رفتوآمد هستند. حالا اگر از یک سمت این اتوبان ورودی ایجاد شود و تعداد زیادی ماشین در حال ورود به آن باشند، چه اتفاقی میافتد؟
رفت و آمد در اتوبان مختل شده ، ماشینها مجبورند مدام ترمز کنند و عملاً به مقصد نمیرسند ؛ یا اینکه خیلی دیر میرسند! این دقیقاً همان اتفاقی است که درخواستهای زیاد در حملۀ DDoS، بر سر یک سایت یا اپلیکیشن میآورند. درخواستهای پیشبینی نشده ترافیک غیرعادی ایجاد میکنند و نمیگذارند که درخواستهای کاربران پاسخ داده شوند.
توجه کنید که هر سایتی میتواند دچار این حملهها شود ، از یک سایت معمولی بگیرید، تا اپلیکیشنهای فروشگاهی یا سایتهای دولتی! فقط کافی است که بدخواه داشته باشید!
یک حمله دیگر مشابه هم داریم که نام آن DoS است .
اما تفاوت DDoS و DoS چیست ؟
هم DoS و هم DDoS، هر دو حملاتی هستند که در سرویسدهی اختلال ایجاد میکنند و هدف آنها از دسترس خارج کردن سرویس است.
در حملۀ DoS، سرور با حجم زیادی از بستههای UDP و TCP که از یک کامپیتور ارسال میشوند، سر ریز و دچار مشکل میشود؛ ولی در DDoS چندین دستگاه با هم همکاری میکنند و یک قربانی را هدف قرار میدهند و آن را با بستههایی از چندین مکان و IP مختلف، بمباران میکنند .
نتیجه حمله DDoS چیست ؟
همانطور که گفتیم بر اثر حمله DDoS ، سایت شما حتما از دسترس خارج میشود و یا خیلی خیلی کند میشود. حالا این اتفاق را در حالتی تصور کنید که کمپین بزرگ تبلیغاتی برگزار کردهاید و هزاران کاربر آنلاین، منتظر خرید از سایت یا استفاده از این کمپین هستند .
در این شرایط اگر حمله DDoS صورت گیرد ، جدا از اینکه برندتان آسیب میبیند ، تجربه کاری بدی برای مشتریان رقم میخورد که ممکن است هیچ وقت یادشان نرود.
به این موارد، ضرر مالی هنگفتی را هم که ممکن است متقبل شوید را اضافه کنید .
چگونگی رخداد حمله DDoS
طراحی و شروع یک حمله DDoS بسیار ساده است. تنها دو دستگاه مختلف نیاز است که هکر برای یک حملۀ ساده آماده شود . دو دستگاه که داری یک همکاری بینظیر و هماهنگ هستند تا به یک سرور یا سایت مقصد، ترافیک فیک بفرستند.
مثلاً شما میتوانید با استفاده از گوشی موبایل و لپ تاپتان یک شبکه DDoS را درست کنید و حمله را آغاز نمایید . البته بدیهی است که با این دو دستگاه سایت مورد نظر Down نمیشود و تنها میتوانید در آن اختلال ایجاد کنید.
در حملات بزرگتر، شبکه های بزرگی از کامپیوترها و دستگاههای متصل به اینترنت -که گاهی تعدادشان به میلیونها دستگاه هم میرسد- توسط بدافزار (Malware) تسخیر شده و در خدمت هکرها قرار میگیرند. به این شبکه دستگاهها Botnet (مخفف Robot Network) یا شبکه زامبی گفته میشود.
در Botnet هر دستگاهی توسط یک ربات کنترل میشود. این رباتها حتی گاهی وظیفه دارند که دیگر دستگاهها را گیر بیاندازند و برای حمله آماده کنند.
وقتی سرور یا کامپیوتر قربانی، هدف حملۀ botnet قرار میگیرد ، هر ربات تعداد زیادی درخواست را برای IP آن ارسال میکند، به این شکل به اصطلاح، سرور هدف سرریز شده و سایت یا برنامه Down میشود.
نکته مهم: در حملۀ DDoS ، به دلیل اینکه هر ربات به شکل معمولی و قانونی در حال استفاده از اینترنت است، جدا کردن ترافیک واقعی سایت از ترافیک فیکی که طی حمله ایجاد شده، کار بسیار دشواری است! در حقیقت خیلی سخت میشود متوجه شد که این درخواست از طرف یک کاربر واقعی است یا نه !
ولی جالب است بدانید که حمله DDoS انواع مختلفی هم دارد و هرکدام میتواند به بخشهای مختلفی از شبکه و سرویس دهی آسیب بزند. در اینجا شما را با انواع این حملات آشنا میکنم .
انواع حملات DDoS و آسیبها
در ابتدا شما را از نحوه ایجاد اتصال شبکه آشنا میکنیم .
هر اتصال شبکه در اینترنت، از لایههای مختلفی تشکیل شده است . به طور مثال در فرآیند ساختن یک خانه ، مراحلی مانند گودبرداری، فونداسیون، اسکلتبندی، دیوارکشی، و … را داریم، که هر کدام با دیگری متفاوت است. در فرآیند ساختن اتصال شبکه هم، چنین چیزی اتفاق میافتد.
ما در راه اندازی شبکه های کامپیوتری هم به همین شکل لایه های مختلفی داریم و حملات DDoS در لایه های مختلف شبکه اتفاق میافتد.
۱- حمله DDoS در لایه کاربرد یا Application
در این نوع حمله، از ضعفهای موجود در لایه هفتم شبکه (Application) برای پیدا کردن راه حمله استفاده میشود . مثلاً وردپرس و جوملا، ۲ تا از اپلیکیشنهایی هستند که در برابر این حملات آسیبپذیرتر هستند .
هدف این نوع حملات استفاده حداکثری از منابع هدف میباشد . معمولاً نقطه هدف هم جایی در سرور است که صفحات وب قرار دارند و با ارسال تعداد زیادی درخواست HTTP فرآیند پاسخدهی مختل خواهد شد .
با اجرای یک درخواست HTTP ساده در سمت کلاینت، ساده و بدون هزینه است ؛ اما پاسخ به آن در سمت سرور هدف ، میتواند پرهزینه و پیچیده باشد ؛ چراکه سرور میبایست چندین فایل را بارگذاری کرده و گزارشات پایگاه داده را برای ایجاد یک صفحه وب آمده و اجرا کند .
مقابله با حملات لایه ۷ دشوار است چون همانطور که بالاتر هم گفتیم، تشخیص اینکه ترافیک مخرب است یا عادی کار بسیار سختی است.
HTTP Flood یا سیل HTTP ، یکی از رایجترین حملات لایه 7هفتم است. این حمله مثل این است که شما و چند تا از دوستانان بهصورت همزمان وارد یک سایت شوید و بیوقفه آن را Refresh کنید. چه اتفاقی میافتد؟
تعداد زیادی HTTP Request به سرور ارسال شده، سرور بسیار مشغول میشود و DDoS اتفاق میافتد. البته مسلما مهاجمان سایبری این کار را با دوستانشان و با دستانشان انجام نمیدهند و ابزارهای خاصی دارند!
ناگفته نماند که HTTP Flood هم میتواند خیلی ساده طراحی شود و هم خیلی پیچیده! در نسخه ساده، ممکن است به یک URL با همان محدوده آدرس IP حمله شود. در نسخه های پیچیده تر ممکن است از تعداد زیادی آدرس IP برای حمله استفاده شود و URL های تصادفی را با استفاده از ارجاعهای تصادفی و نمایندگان کاربر (User Agents) هدف قرار دهد.
۲- حمله DDoS در لایه پروتکل (Protocol Attacks)
حملات در لایه پروتکل ، از نقاط ضعف موجود در لایه سوم و چهارم OSI (حمل و نقل و شبکه) استفاده میکنند تا هدف را از دسترس خارج کنند و هدف
حملههای پروتکل - خسته و فرسوده کردن سرور و از طریق مصرف بیش از حد منابع آن میباشد . طی این نوع از حملات، فایروالها یا لود بالانسرها به شدت درگیر شده و سرویسدهی مختل میشود .
برای مثال این نوع حملات میتوان به SYN flood اشاره کرد که یکی از نمونههای رایج حمله به لایه سوم و چهارم است.
تصور کنید یک انبار پر از کالا را با یک مسئول انبار داریم . روال کار در این انبار به این شکل است که مسئول انبار ، درخواست مشتری را دریافت میکند و آن را بررسی می نماید . سپس به انبار میرود و بسته را برمیدارد و قبل از تحویل بسته، منتظر تایید میماند.
حالا حالتی را تصور کنید که مسول انبار کلی درخواست دریافت کرده و هیچکدام هنوز تائیدیهای دریافت نکردهاند. این روند تا جایی ادامه پیدا میکند که مسئول دیگر نمیتواند بستههای بیشتری را حمل کند و عملاً از حرکت میافتد.
در حمله SYN Flood هم چنین اتفاقی می افتد و کلاینت (یا مرورگر) اول برای سرور یک درخواست SYN ساده میفرستد و منتظر میماند تا با پروتکل TCP اتصالی برقرار شود. اتصال که برقرار شد، تبادل اطلاعات آغاز میشود و سرور منتظر دریافت پیام از کاربر میماند. کاربر پیامی نمیفرستد و فقط درخواست ایجاد اتصال است که سرور در از مرورگرهای مختلف دریافت میکند. با توجه به اینکه سرور در باز کردن کانال اتصالی یا session محدودیت دارد، عملکردش کاملاً مختل شده و از دسترس خارج میشود. اینطوری همه درخواستها بیپاسخ میمانند.
۳- حمله DDoS حجمی (Volumetric Attacks)
اساس این نوع حمله، بر شلوغکاری زیاد و بریز بپاش است . بهطوریکه میزبان از عهده این همه درخواست برنیاید و مهمانی بهم بریزد .
در حملات حجمی ، هدف استفاده حداکثری از پهنای باند است. به این شکل که حجم خیلی زیادی داده با استفاده از یک تقویتکننده که ترافیک عظیمی ایجاد میکند به سوی هدف روانه میشود و شروع به استفاده از پهنای باند آن میکند.
در حملههای حجمی، حملهکننده چیزی را درخواست میکند که نیاز به تشریح یا افزایش حجم پاسخ داشته باشد.
حمله DNS Amplification یک نمونه از حملات Volumetric است.
تصور کنید که شما و ۱۰ تا از دوستانتان به یک رستوران زنگ میزنید و میگویید از هر غذا یکی میخواهم و دوباره تماس میگیرید و سفارش میدهید و شماره تلفنی هم که برای تماس به رستوران میدهید، شماره تلفن خود رستوران است.
به اتفاقی که افتاده دقت کنید؛ شما با یک تلاش کوچک، کاری کردهاید که قربانی مجبور باشد پاسخ خیلی بزرگی برایتان آماده کند و تا این کارها را انجام دهد، از دسترس خارج میشود!
به وسیلۀ ارسال درخواست با یک آدرس IP تقلبی (آدرس آیپی واقعی هدف)، به یک سرور DNS باز، آدرس IP مقصد از سرور پاسخ دریافت میکند. در ضمن مهاجم درخواست را طوری طراحی کرده که سرور DNS با حجم بالایی از دادهها مجبور به پاسخگویی باشد. در نتیجه، هدف یک نسخه تقویتشده از درخواست اولیه مهاجم را دریافت میکند.
برای اجرای تمامی این حملات که تا اینجا درموردشان صحبت کردیم، نیازمند یک سری ابزار و نرمافزار و بدافزار هستند .
نرم افزار های لازم برای ایجاد که حمله DDoS
۱- LOIC
این نرمافزار با ارسال درخواستهای HTTP، TCP و UDP در شبکه botnet کار سرور را دچار مشکل میکند.
۲- Slowloris
این نرمافزار ترافیکهای به ظاهر مجاز HTTP را به سرور میفرستد و باعث ایجاد تاخیر در پاسخگویی به کاربران میشود. البته معمولاً ترافیک این حمله قابل شناسایی و بلاک شدن است.
۳- Tor's Hammer
با این نرمافزار میتوان وب سرور آپاچی و IIS را هدف حمله قرار داد. خوبی Tor’s Hammer این است که از طریق شبکه Tor حمله را انجام میدهد؛ برای همین هم هویت حملهکننده غیرقابل شناسایی باقی میماند.
راه های جلوگیری از انواع حملههای دی داس :
وقتی که حملۀ دیداس شروع میشود، شما اصلاً فرصت فکر کردن برای اینکه الان باید چه کار کنید را ندارید . پس از قبل باید به فکر جلوگیری باشید و برنامهای را برای این زمانها آماده کنید.
نکته اول : ترافیک خود را شناسایی کنید .
شما باید با استفاده از ابزارهای مانیتورینگ، ترافیک سایتتان را مدام رصد کنید و با درک الگوها و خصوصیات آن، فعالیتهای غیرطبیعی را زود متوجه شوید.
نکته دوم : رعایت اصول اولیه امنیتی :
یک سری اصول اولیه امنیتی برای تمام سایتها وجود دارد که با رعایت آنها میتوانید امنیت خود را افزایش دهید . مثلاً انتخاب پسوردهای پیچیده، تعویض ماهانه یا ۲ ماه یک بار پسوردها، جلوگیری از یادداشت پسوردها در پیامرسانها یا اپهای متفرقه، فعال کردن احراز هویت ۲ مرحلهای و … کارهای پیش پا افتادهای هستند که اکیداً توصیه میکنیم آنها را جدی بگیرید.
نکته سوم : بروزرسانی زیر ساختهای امنیتی
گاهی استفاده از سیستمهای از رده خارج و نرمافزارهای منسوخ شده ، خود باعث ایجاد اتصالات آسیبپذیری میشود که محل نفوذ هکرها هستند. پس بهتر است که همیشه از بروز بودن دیتاسنتر و سیستمهای خود مطمئن باشید ، فایروالها، برنامههای امنیتی و برنامههای وب را بهروز کنید و اگر نیاز بود، از شرکت هاستینگتان بخواهید که اگر لایه امنیتی خاصی دارد، آن را برای شما فعال کند.
نکته چهارم : بررسی کافی بودن ظرفیت
همانطور که درباره حملات Volumetric بالاتر نوشتیم در مواقعی که هدف این حملات قرار میگیرید، یکی از سادهترین راهکارها، افزایش بیش از حدی پهنای باند (یعنی تا جایی که سرور ظرفیت آن را داشته باشد) ، تا زمان خروج از بحران است.
توجه کنید که این کار ممکن است حمله دیداس را کاملاً متوقف نکند؛ اما خب تا زمانی که منابع بهصورت کامل درگیر شوند، میتوانید زمان بخرید و خود را برای دفاعیات بعدی آماده کنید.
نکته پنجم : استفاده از زیرساختهای ابری
ارتقاء زیر ساخت به زیرساختهای ابری خیلی سریع و راحت انجام پذیر است و چون بهجای اتکا به یک سرور خاص از سرورهای خوشهای استفاده میکند، ترافیک روی سرورهای مختلف پراکنده میشود.
فایده این تکنولوژی این است که اگر هدف حملۀ DDoS واقع شوید، ترافیک روی سرورهای مختلف توزیع شده، به یک سرور فشار وارد نمیشود و سایتتان به این راحتی از دسترس خارج نخواهد شد. اینطوری تیر حمله کنند به سنگ میخورد!
نکته ششم : استفاده از CDN
CDN یا شبکه تحویل محتوا، شبکهای از سرورها است که در نقاط مختلفِ جهان یا ایران مستقر شدهاند، یک کپی از محتوای سایت را ذخیره میکنند و آن را از نزدیکترین نقطه، تحویل کاربران میدهند. جهت اطلاعات بیشتر مقالهآشنایی با CDN کلودفلر و مزیتهای آن را بخوانید .
لطفا به تعریف بالا دقت کنید. زمانی که حمله دیداس اتفاق میافتد و شما از CDN استفاده کردهاید، اگر سروری از دسترس خارج شود، دیگر سرورهای شبکه که هنوز فعال هستند میتوانند وظیفه آن سرور را بر عهده بگیرند و درخواست کاربران را پاسخ دهند. به همین راحتی!
نکته بسیار مهم :
سعی کنید همیشه آمادگی خود را در برابر انواع حملات سایبری حفظ نمایید و اگر اتفاقی افتاد، تیمهای آمادهای، با مسئولیتهای مشخص، برای حل مشکل و دفع حمله و پاسخگویی به مدیران و مشتریان داشته باشید. شما باید مشتریان سایت یا برنامهتان را در جریان اتفاقات بگذارید و به آنها اطمینان دهید که تیم فنی در حال رفع این مشکل است.