امنیت

بررسی و مقابله با حمله منع سرویس (DDoS)

پیش از این در مورد ابزارهای حمله منع سرویس نوشته بودم. حمله‌های منع سرویس ساده و توزیع شده، از اون نمونه حمله‌هاست که اکثر مدیران سایت تجربه‌اش کردند. روز گذشته، وبلاگ من هم تحت حمله DDoS بود که تا زمان مقابله با بخش اصلی حمله و برگشت وبلاگ به سرویس، بیش از دو میلیون درخواست به سرور ارسال شده بود. در ادامه از این تجربه و روشی که برای مقابله استفاده کردم می‌نویسم.

عدم پذیرش سرویس

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

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

برای اینکه بفهمم مشکل از کجاست و بفهمم چطور می‌تونم جلوش رو بگیرم، سراغ لاگ سرویس آپاچی رفتم.

با دستور بالا به صورت زنده ترافیکی که روی سایت بود رو مشاهده کردم. آدرس لاگی که می‌بینید، پیش‌فرض وبمینه و شما باید در شرایط مشابه، از آدرسی استفاده کنید که در وب‌سرورتون تنظیم شده.

ترافیک سرور

مشاهده ترافیک سایت نشون داد که حدسم در حمله منع سرویس توزیع شده در لایه ۷ درست بود. حمله کننده به جای اینکه خودش به صورت مستقیم سایت من رو هدف بگیره، با سواستفاده از یکی از امکانات وردپرس، از هزاران سایت دیگه استفاده کرده بود. pingback که به صورت پیش‌فرض در وردپرس فعاله، به سایت‌های وردپرسی امکان می‌ده که از لینک‌های به مطالبشون مطلع بشن و با چک کردن و تاییدش، اون رو نمایش بدن. در این حمله، با سواستفاده از امکان pingback در وردپرس، سایت‌های دیگه رو فریب می‌دادند که از سایت من بازدید کنند.

جلوگیری از حمله عدم پذیرش سرویس

برای اینکه بتونم دقیق‌تر منشا حمله رو تشخیص بدم و جلوش رو بگیرم، ابتدا از دستور زیر، همه ترافیک از نوع pingback رو از لاگ اصلی جدا کرده و توی یک فایل دیگه به اسم wp_attack ریختم.

در قدم اول و برای مقابله کوتاه مدت در برابر حمله، از دستور زیر ip هایی که بیشترین بازدید رو داشتند، پیدا کردم.

همونطور که می‌بینید ۲۰ ردیف اول از ip هایی که بیشترین بازدید رو داشتند جدا کردم. بازدیدها حدود یک هزار تا ۳ هزارتا متغیره.

لیست IP

با دستوری مشابه دستور زیر و از طریق IPtables، این IP ها رو به فایروال اضافه کردم تا همه اتصال‌ها از سمتشون برگشت بخوره.

با مقابله با این IP ها، فشار روی سرور خیلی کم شد و تونستم قبل از شروع موج جدید با IP های متفاوت، با تغییر تنظیمات آپاچی، کلیه ترافیکی که از Pingback سایت‌های وردپرسی استفاده شده بود رو قطع کنم.

با استفاده از ماژول rewrite در آپاچی، User Agent ترافیک ورودی رو چک کرده و در صورتی که واژه‌های WordPress و Pingback from رو داشت، ممنوعش کردم. (اگر سایتم از SSL/TLS استفاده نمی‌کرد و https نداشت، می‌تونستم از فایروال برای برگشت دادن اتصال‌های مشکوک استفاده کنم.)

نکته اینه که این کار در عملکرد پلاگین Jetpack اختلال ایجاد می‌کنه.

برای تست، خودم سعی کردم یک ترافیک مشابه برای سایتم بفرستم که می‌بینید با خطای ۴۰۳ مواجه شدم.

reject

آمار حمله عدم پذیرش سرویس

بعد از مقابله با حمله، برام جالب بود که آمار این حمله رو داشته باشم.

تعداد کانکشن‌های این حمله عدم پذیرش سرویس تا قبل از مقابله باهاش، به ۲,۲۱۰,۷۲۶ رسیده بود. بیشترین شدت حمله هم به ۲۵۸ کانکشن در ثانیه رسیده بود.

اوج حمله

از تصویر بالا می‌بینید که حمله‌کننده‌ها دیروز هم تلاش کرده بودند برای از دسترس خارج کردن بلاگ من اما موفق نشده بودند.

در این حمله بیش از سی و سه هزار IP شرکت داشتند. توزیع تعداد اتصال برای هر IP نشون می‌ده که اکثر شرکت‌کننده‌ها در این حمله، کمتر از ۱۰ اتصال داشتند. یک اوج دومی هم در تعداد اتصال حدود ۵۰ تا دیده می‌شه.

چارت

مورد دیگه‌ای که برام جالب بود چک کنم، نسخه وردپرس سایت‌های حمله‌کننده بود. در مجموع ۴۶۷ نسخه مختلف وردپرس در حمله شرکت داشتند. در تصویر می‌بینید که حمله‌کننده‌ها الزاما سایت‌هایی با وردپرس قدیمی و به‌روزنشده نیست. آخرین نسخه کنونی وردپرس ۴.۹.۱ است که دومین رتبه رو در شرکت‌کننده‌های در حمله داشته.

نسخه وردپرس

توی لیست بلند بالای نسخه‌های وردپرس، سایت‌های زیادی وجود داشتند که از سال ۲۰۱۳ و ۲۰۱۴ به‌روز نشدند و هنوز از نسخه ۳ استفاده می‌کنند.

وردپرس از نسخه ۳.۹ برای مقابله با سو استفاده از pingback اطلاعاتی رو به User Agent اضافه کرده و IP حمله‌کننده‌های اصلی رو هم به مقصد ترافیک (در این حمله، سایت من) اعلام می‌کنه. با دستور زیر، اون بخش از اطلاعات ترافیک که مربوط به IP اصلی بود رو جدا کردم.

هرچند که تعداد IP های شروع کننده حمله ۳۳۷۷ تا بود اما بخش اصلی حمله از سوی مجموعه‌ای IP در روسیه بود.

اصلی IP

واسطه حمله نباشیم

برای جلوگیری از سواستفاده از سایتمون برای حمله به سایت دیگران، می‌تونیم این امکان PingBack رو غیرفعال کنیم. روش‌های مختلفی براش وجود داره، از جمله اضافه کردن یک تابع به فایل function.php اما راحت‌ترین کاری که می‌تونم پیشنهاد بدم، نصب پلاگین‌های امنیتی وردپرسه. این جوری با یک تیر چند نشون رو می‌زنید و نکته‌های امنیتی دیگه وردپرس هم اصلاح می‌کنید.

یکی از این پلاگین‌ها، iThemes Security است که پشتیانی خوبی داره و با نسخه‌های جدید وردپرس هم هم‌خوانی داره. پس از نصب و فعال‌سازی، از بخش WordPress Tweaks می‌تونید از گزینه‌های مربوط به XML-RPC برای غیرفعال کردن Pingback استفاده کنید.

itheme

همچنین اگر دسترسی تغییر تنظیمات فایروال سرور رو دارید، می‌تونید از لیست‌های به‌روز شده IP های با عملکرد مخرب برای قطع دسترسیشون استفاده کنید و دستور حمله رو دریافت نکنید. به زودی در این مورد می‌نویسم.

Standard
امنیت

۱۰ ابزار که در حمله عدم پذیرش سرویس استفاده می شوند

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

ddos-attack

حمله عدم پذیرش سرویس DoS

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

عموما دو گونه حمله DoS داریم، یکی که به از کار افتادن سرور منتج می شه و دیگری که سرویس رو مشغول می کنه.

حمله عدم پذیرش سرویس توزیع شده DDoS

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

سه شیوه “حمله عدم پذیرش سرویس توزیع شده” وجود داره:

  • حمله به لایه نرم افزاری: در این شیوه با هدف قرار دادن ضعف های نرم افزارهای نصب شده، سرور رو از کار می اندازن
  • حمله از طریق پروتوکول: این روش در سطح پروتوکول انجام می شه و زیر شاخه هایی مثل Synflood، Ping of Death و غیره داره.
  • حمله حجمی: این شیوه با سر ریز کردن پکت های تقلبی انجام می شه و شامل ICMP flood، UDP flood و انواع دیگه می شه.

ابزار حمله

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

۱- LOIC (Low Orbit Ion Canon)

یکی از شناخته شده ترین ابزارهای رایگان حمله عدم پذیرش سرویس که گروه انانیموس نیز سال گذشته ازش برای حمله به یک سری از شرکت ها استفاده کرد. البته این گروه نه تنها از LOIC برای حمله استفاده کرد که از کاربران اینترنت نیز خواست که داوطلبانه در این حملات شرکت کنند.

LOIC

LOIC

با این ابزار یک کاربر به راحتی می تونه حمله DoS علیه سرورهای کوچک انجام بده. استفاده از اون بسیار ساده است و حتی تازه کارها هم می تونن باهاش کار کنند. LOIC با ارسال درخواست های UDP، TCP و HTTP به قربانی، حمله رو انجام می ده. هکر کافیه آدرس آی‌پی سرور وارد کنه.

در تصویری که از محیط ابزار گذاشته شده می بینید که کافیه url و یا IP سرور رو وارد کنید و سپس با انتخاب پارامترهای حمله، اقدام به DoS کنید. اگر در مورد پارامترها هم چیزی نمی دونید کافیه از گزینه پیش فرض استفاده کنید. با فشردن دکمه IMMA CHARGIN MAH LAZER و پس از چند ثانیه، سایت از دسترس خارج می شه.

LOIC یک حالت داره برای کنترل ابزارهای دیگه که به هکر امکان انجام یک حمله DDoS رو می ده.

اگر می خواین از این ابزار برای حمله به یک سرور استفاده بکنید باید بدونید که IP شما رو به قربانی نشون می ده. استفاده از پراکسی هم کمکی بهتون نمی کنه چونکه با این کار به سرور پراکسی حمله می کنید و نه سرور که هدفتونه.

LOIC رو می تونید از این لینک دانلود کنید.

۲- XOIC

ابزار دیگه ایه برای حمله DoS که هکر باید IP و Port سرور هدف و Protocol رو انتخاب کنه. توسعه دهنده های XOIC ادعا می کنند که محصولشون قویتر از LOIC است. XOIC نیز یک رابط کاربری ساده داره که کار رو برای تازه کارها راحت می کنه.

XOIC

XOIC

این ابزار سه حالت حمله داره. اولی که حالت تست شناخته می شه و ابتداییه. حالت دوم هم یک حمله DoS عادیه. در حالت سوم، حمله DoS با پیام TCP/HTTP/UDP/ICMP انجام می شه.

XOIC یک ابزار کارا علیه وب سایت های کوچیکه. هیچ وقت اون رو روی سایت خودتون چک نکنید چونکه باعث از کار افتادن سرورتون می شه.

XOIC رو می تونید از این لینک دانلود کنید.

۳- HULK (HTTP Unbearable Load King)

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

HULK

HULK

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

در تستی که توسعه دهنده های اون روی سرور  IIS 7 با ۴ GB رم انجام دادند، موفق شدند در کمتر از یک دقیقه سرور را از دسترس خارج کنند.

HULK رو می تونید از این لینک دانلود کنید.

۴- DDOSIM—Layer 7 DDOS Simulator

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

DDOSIM با زبان C++ نوشته شده و در محیط لینوکس قابل اجراست. توانایی های اصلی این ابزار رو می شه این ها دونست:

شبیه سازی زامبی های متعدد در حمله
آدرس IP های تصادفی
حمله بر اساس اتصال TCP
حمله در لایه نرم افزاری
حمله تحت پروتوکول HTTP با درخواست های معتبر
حمله تحت پروتوکول HTTP با درخواست های نا معتبر
حمله عدم پذیرش سرویس SMTP
سر ریز اتصال TCP روی پورت های تصادفی

DDOSIM رو می تونید از این لینک دانلود کنید.

۵- R-U-Dead-Yet

این ابزار که با نام RUDY هم شناخته می شه، حمله رو از طریق ارسال درخواست های HTPP با متغیر از نوع POST به فرم های موجود در صفحه انجام می ده. RUDY با تشخیص فرم های موجود در url وارد شده، به هکر اجازه می ده فرم و فیلدی که در حمله استفاده می شه رو انتخاب کنه.

R-U-Dead-Yet رو می تونید از این لینک دانلود کنید.

۶- Tor’s Hammer

این ابزار که با پایتون نوشته شده امکان استفاده از شبکه تور رو به هکر می ده و در نتیجه حمله کننده ناشناس باقی می مونه. چکش تور می تونه طی چند ثانیه سرورهای آپاچی و IIS رو از کار بندازه.

Tor’s Hammer رو می تونید از این لینک دانلود کنید.

۷- PyLoris

PyLoris رو یک ابزار تست DoS برای سرورها می دونن. این ابزار می تونه از پراکسی SOCKS و اتصال SSL برای انجام حمله DoS استفاده کنه. PyLoris می تونه پروتوکول های زیادی رو هدف قرار بده از جمله HTTP، FTP، SMTP، IMAP و Telnet. آخرین نسخه اش با یک رابط کاربری ساده و راحت منتشر شده. این ابزار خلاف همتاهای سنتی خودش، می تونه مستقیما به سرویس حمله کنه.

PyLoris رو می تونید از این لینک دانلود کنید.

۸- OWASP DOS HTTP POST

یک ابزار خوب که با اون می تونید سرورتون رو تست کنید و ببینید می تونه در مقابل حملات مشابه مقاومت کنه یا نه. البته می تونه علیه هدف های واقعی نیز استفاده بشه.

OWASP DOS HTTP POST رو می تونید از این لینک دانلود کنید.

۹- DAVOSET

ابزار کاربردی دیگه ای برای حمله DoS. در آخرین نسخه نیز امکان استفاده از cookie به اون اضافه شده.

DAVOSET رو می تونید از این لینک دانلود کنید.

۹- GoldenEye HTTP Denial Of Service Tool

یک ابزار ساده و البته کار آمد که برای تست DoS و با زبان برنامه نویسی پایتون نوشته شده. هرچند برخی ازش برای هک سرورها استفاده می کنند.

GoldenEye HTTP Denial Of Service Tool رو می تونید از این لینک دانلود کنید.

دفاع در برابر حمله DoS

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

ساده ترین راه استفاده از فایروال است. حمله های عادی معمولا از طریق تعداد محدودی IP انجام می شه که با مشاهده ترافیک مشکوک می شه با استفاده از فایروال دسترسی اون IP ها رو بست.

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

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

مسیرهای تمیز یا Clean pipes روش دیگری است برای برخورد با حمله “عدم پذیرش سرویس”. در این روش با عبور ترافیک از مراکز تمیز کننده، روش های مختلفی برای فیلتر کردن ترافیک استفاده می شه. از سرویس دهنده های این مراکز می شه به  Tata Communications، Verisign و AT&T اشاره کرد.

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

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

پی نوشت: مسئولیت شیوه استفاده از این ابزار با شخص استفاده کننده است. این پست برای آَشنایی با شیوه های حمله و یافتن راهی برای مقابله است. لطفا به سایت هایی که کاری علیه تون نکردن، آسیب نرسونید.

منبع

Standard