در این بخش از دوره SEC504 از موسسه SANS به آشنایی با حمله DoS یا Denial of Service و انواع آن خواهیم پرداخت.
حملات انکار سرویس یا DoS
در حملات انکار سرویس، مهاجمین قصد دارند تا به هر ترتیبی، سرویسی که در حال ارائه خدمت میباشد را از کار انداخته و مانع از دسترسی کاربران قانونی به آن سرویس شوند. از دیدگاه نفوذگر، سرویس باید متوقف شود و نحوه آن از اهمیت زیادی برخوردار نمیباشد. بدین معنی که در یک حمله DoS نکات فنی و تکنیکهای تخصصی مهم نبوده و صرفا انکار سرویس اهمیت دارد. البته از این نکته هم نباید گذر کرد که بسیاری از حملات انکار سرویس ممکن است از نظر فنی بسیار ظریف و تخصصی باشند ولی در نهایت از دسترس خارج نمودن سرویس مهم خواهد بود.
در مورد حملات انکار سرویس باید به این نکته توجه داشت که خسارتها و صدمات وارد شده به شرکت یا سازمان هدف میتواند جبران ناپذیر بوده و موجب از دست رفتن اعتبار شرکت یا سازمان گردد.
شمار زیادی از شیوهها برای انکار سرویس وجود دارد و همچنین هر روز آسیبپذیریهای DoS جدیدی کشف میشوند. همچنین در نظر داشته باشید که شما نمیتوانید به طور کامل حمله انکار سرویس را از بین ببرید ولی با تدابیر لازم میتوانید تا جای ممکن اثرات آن را کاهش دهید.
با توجه به وجود آسیبپذیریهای مختلف که منجر به حملات انکار سرویس میشوند، بروزرسانی سیستم و نصب وصلهها، بسیار حائز اهمیت خواهد بود. البته علاوه بر این شما باید اطمینان حاصل نمایید که پهنای باند مناسب را برای اتصال سیستمهای مهم در نظر گرفته اید.
انواع حملات انکار سرویس
به صورت کلی حملات انکار سرویس به دو دسته حملات محلی یا Locally و حملات از راه دور مبتنی بر شبکه تقسیم بندی میشوند.
حملات محلی DoS از یک حساب کاربری روی سیستم قربانی اجرا میشود. در واقع نفوذگر برنامهها و توابعی را اجرا میکند که مانع از دسترسی کاربران به منابع داخلی میشود. دو راه برای انجام حملات محلی DoS وجود دارد که در تصویر بالا قابل مشاهده میباشد.
نفوذگر میتواند به راحتی موجب Crash نمودن یک سرویس توسط متوقف کردن یک Process در حال اجرا شود. هنگامیکه Process مربوط به سرویس اجرا نشود، نمیتوان درخواستهای مشروع کاربر را اداره نمود.
راه دیگری که برای راه اندازی حمله محلی DoS انجام میشود، مصرف منابع سیستم و از کار انداختن آن است. یک نفوذگر میتواند تمامیچرخه CPU، فضای رم، فضایهارد دیسک و یا منابع قانونی دیگر را درگیر نموده و مصرف کند. بدین صورت کاربران قانونی قادر به استفاده از منابع سیستم نخواهند بود. یکی از مثالهایی که در این جا میتوان به آن اشاره نمود استفاده از تکنیک CPU Hog است.
با این تکنیک یک فرآیند با اولویت بالا در یک دستگاه ایجاد میشود که کلیه منابع سیستم را اشغال میکند. یکی از ابزارهایی که برای شبیه سازی این حمله میتوان از آن استفاده نمود ابزار CPU Stres است در آدرس زیر میتوان اطلاعات مفیدی را در مورد آن کسب نمود.
https://blogs.msdn.microsoft.com/vijaysk/2012/10/26/tools-to-simulate-cpu-memory-disk-load/
دسته دوم از حملات DoS، حملات مبتنی بر شبکه هستند. این حملات هم به دو دسته زیر تقسیم میشوند:
malformed packet attack
packet flood
یک حمله بسته ناقص یا malformed packet attack شامل ارسال یک بسته یا جریان کوچک بسته به سیستم هدف است، به نحوی که این نوع بسته توسط توسعه دهندگان دستگاه پیش بینی نشده است.
سیستمعامل، اپلیکیشن یا برنامههای تحت شبکه به گونه ای طراحی نشده اند تا به چنین فرمتهای نامتعارف رسیدگی نموده و آن را Handle نمایند. نمونههایی از این حمله شامل ارسال بستههایی که بیش از حد طولانی هستند مانند Ping of Death یا بستههای نامتعارف مانند حمله Teardrop میباشند.
دومین نوع از حملات مبتنی بر شبکه، سیل بستهها یا Packet Flood میباشد. در واقع این نوع از حملات DoS یکی از شایع ترین حملات انکار سرویس میباشد. این حمله شامل ارسال بستههای بیشتر از حد توان یک سیستم به آن است. با این کار نفوذگر سبب میشود تا تمامی پهنای باند دستگاه مصرف شده و منابع آن درگیر پاسخ شده و از دسترس خارج شوند.
DNS Amplification Attacks
امروزه ما شاهد افزایش قابل توجهی در حملات DNS amplification هستیم. این حمله مشابه حملات Smurf میباشد، اما تفاوتهای مهمی بین این حملات وجود دارد. همانند حملات Smurf، حمله DNS amplification هم از بستههای جعلی علیه یک شخص ثالث برای تقویت ترافیک به سمت هدف استفاده میکند.
اما در حملات Smurf، برای تقویت حمله، بستهها به یک آدرس Broadcast در شبکه ارسال میشوند ولی در حملات DNS amplification ارسال بسته به آدرس Broadcast ارسال نمیشود. این حمله که بیش از یک دهه از شناخته شدن آن می گذرد، شامل ارسال بستههای کوچک و جعلی DNS Query به مجموعهای از سرورهای DNS در اینترنت است. این امر موجب تقویت ترافیک به سمت هدف نهایی میگردد.
نکته: از آنجا که DNS مبتنی بر UDP میباشد، جعل یا Spoofing به این صورت با اهمیت جلوه میکند و نفوذگر میتواند به کار خود ادامه دهد.
لازم به ذکر از تا قبل از سال 2005 این حملات با DNS Queryهایی با حجم 60 بایت انجام میشد ولی با افزایش سایز بستههای DNS به 512 بایت، قدرت حمله Amplification حدود 8.5 برابر شد.
EDNS
سرورهای DNS مدرن، از ویژگی EDNS پشتیبانی مینمایند، ساختار EDNS که با عنوان Extension Mechanisms for DNS نیز شناخته میشود، در RFC 2671 توضیح داده شده است. EDNS به شما اجازه میدهد تا بستههای بزرگتر از سایز معمول که 512 بایت میباشد را در قالب پروتکل UDP ارسال نمایید. البته لازم به ذکر است که برخی از فایروالها ممکن است بستههای UDP که دارای سایز بیش از 512 بایت میباشند را مسدود نماید.
نفوذگران از این ویژگی برای ایجاد سیلهای عظیم (Massive Flood) استفاده میکنند. در این حمله نفوذگر با ارسال یک Query با حجم 60 بایت، برای بازیابی یک رکود که 4000 بایت حجم دارد، میتواند قدرت حمله خود را بیش از 66 برابر نماید. در ادامه اگر چندین حمله از این نوع انجام گیرد، میتوان چند گیگابیت بر ثانیه ترافیک تولید نماید.
برای انجام این حمله نفوذگر باید ابتدا سرورهای DNS ای که میتوانند جست و جوهای بازگشتی (recursive lookups) را از هر شخصی انجام دهد، شناسایی نماید. سپس نفوذگر یک درخواست را به این سرورها ارسال میکند. درخواست ارسالی توسط نفوذگر اشاره به رکورد DNS ای دارد که سرور ارائه دهنده آن در اختیار نفوذگر میباشد. از آن جا که سرورها برای عملیات بازگشتی یا recursion پیکربندی شدهاند، با ارسال درخواست، پاسخ آن به سمت سرور DNS ای که در اختیار نفوذگر میباشد ارسال میشود و مشخصات را از وی درخواست مینماید.
سرور مهاجم یک پاسخ که حاوی رکورد TXT به حجم 4000 بایت میباشد را به سمت سرور اصلی ارسال مینماید. این پاسخ در حافظه سرور DNS باقیمانده (Cache میشود) تا برای Amplification از آن استفاده شود.
هم اکنون که نفوذگر رکورد بزرگی را در حافظه سرور DNS بارگذاری کرده است، در ادامه نفوذگر اقدام به ارسال درخواستهای DNS (با فعال نمودن گزینه EDNS برای پاسخهای بزرگ) با آدرس جعل شده مینماید. آدرس جعل شده در واقع همان سیستمیاست که نفوذگر قصد حمله به آن را دارد.
در ادامه سرورDNS پاسخ را که رکورد TXT با حجم 4000 بایت میباشد، از طریق بستههای UDP به سمت قربانی ارسال میکند. در این صورت قربانی با سیل عظیمیاز بستهها غرق خواهد شد. توجه داشته باشید که این حمله با صدها و یا هزاران سرور DNS انجام میشود. جهت درک بهتر این موضوع به تصاویر زیر توجه نمایید.