……………………………………………………………………………………………. 10
فصل دوم : مبانی نظری ………………………………………………………………………………….. 12
2-1- تعریف واژگان و اصطلاحات تخصصی ………………………………………………….. 12
2-2- تعریف حمله DOS ……………………………………………………………………………….. 13
2-3- بیان مسئله ……………………………………………………………………………………………. 20
فصل سوم : تحقیقات انجام شده …………………………………………………………………….. 23
3-1- بررسی مسئله ………………………………………………………………………………………… 23
3-2- نمونه هایی واقعی از بروز حملات DOS وDDOS ……………………………. 36
فصل چهارم : روش تحقیق ……………………………………………………………………………… 37
4-1- پاسخ به سوالات ماهیتی تحقیق ………………………………………………………….. 37
فصل پنجم : بررسی و تحلیل یافته های تحقیق ……………………………………………. 41
5-1- معرفی سازمان مورد بررسی …………………………………………………………………. 41
5-2- مورد کاوی …………………………………………………………………………………………….. 42
فصل ششم : نتیجه گیری و پیشنهادها ………………………………………………………….. 43
منابع و ماخذ ……………………………………………………………………………………………………. 45
فصل اول
آیا تاکنون پیش آمده است که بخواهید یک تماس تلفنی برقرار نمایید ولی به دلیل مشغول بودن تمام مسیرهای ارتباطی نتوانید این کار را انجام دهید؟ دلیل این مشکل آن است که سیستم تلفن طوری طراحی شده است که میتواند تعداد محدودی تماس را در یک زمان واحد برقرار کند. این حد بر اساس تخمین تعداد تماسهای همزمان و حجم ترافیکی که سیستم دریافت میکند تعیین میشود[8].
حال تصور کنید که یک فرد مهاجم بخواهد به سیستم تلفن حمله کرده و آن را برای مشترکان تلفن غیر قابل استفاده نماید. یکی از روشهای حمله آن است که تماس های مکرر و پشت سر هم برقرار کرده و تمامی خطوط تلفن را اشغال کند. این نوع از حمله را به حمله انکار سرویس یا DOS مشهور است[8].
در حقیقت فرد مهاجم کاری کرده است که سیستم تلفن مجبور شود تماسهای تلفنی مشترکان را رد و انکار نماید. البته واقعیت این است که احتمال اینکه یک فرد به تنهایی بتواند تمامی مسیرهای تلفن را مشغول کند، بسیار کم است. برای انجام این کار باید تعداد بسیار زیادس تماس از تعداد بسیار زیادی تلفن برقرار گردد. به این نوع حمله انکار سرویس توزیع شده یا DDOS می گویند[8].
سیستمهای کامپیوتری نیز ممکن است دچار چنین حملاتی گردند. برای مثال ارسال حجم زیادی پست الکترونیکی برای یک نفر می تواند حافظه کامپیوتری را که پست الکترونیکی در آن قرار دارد را پر کند. این بدان معناست که افرادی که از آن کامپیوتر استفاده میکنند، قادر نخواهند بود هیچ ایمیل جدیدی دریافت کنند مگر اینکه شرایط به نوعی تغییر نماید.
در علل و عوامل حملات تحت وب، غالبا با نگاه شبكه ای و مفاهیم جاری در آن بدنبال تاثیرات و آسیب ها و راههای پیشگیری و مقابله با آن پرداخته می شود. حمله DOS نیز از این قاعده مستثنی نبوده و در بیشتر مراجع و مقالات و كتابها این نگاه غالب بوده و تمامی توجه خود را به شبكه و سرور و سرویس و پیكربندی های آنها معطوف می نماید. در صورتیكه این حمله علاوه بر این كه ماهیت شبكه ای دارد، دارای ابعاد و اثرات نرم افزاری نیز می باشد كه بعضی از آنها نهفته و ناشناس می باشند. این تحقیق می خواهد با مفاهیم نرم افزاری به حمله DOS نگاه كند و آن را از منظر نرم افزار تحلیل و واكاوی نماید.
جهت ترسیم مسیر حركتی و جلوگیری از آشفتگی محتوایی و ساختاری به طرح های سوالات زیر كه ماهیت این تحقیق را نشان می دهند، می پردازم تا در فصل پایانی این تحقیق به آنها براساس مطالعات و بررسی های صورت گرفته، پاسخ دهم.
1. میزان آسیب پذیری نرم افزاری وب سایتها و برنامه های کاربردی تحت وب، در مواجه با حملات DOS به چه میزان است؟
2. حملات DOS از کدام بسترها و منافذ نرم افزاری رخ میدهند؟
3. چگونه میتوانیم، از بروز حملات DOS فقط از طریق مفاهیم نرم افزاری پیشگیری نمائیم؟
4. بااستفاده از مفاهیم نرم افزاری، چگونه میتوان از وقوع حملات DOS آگاهی یافت؟
5. پس از رخ دادن حملات DOS، چگونه میتوان، وب سایت را بحالت قبل برگرداند؟
6. پس از رخ دادن حملات DOS، چگونه میتوان مکانها و داده های آسیب دیده را شناسایی کرد؟
فصل دوم
حملات DOS یا از کار اندازی سرویس، نوعی از حمله است که هدف آن، از کار انداختن سیستم هدف یا استفاده از هدر دادن منابع آن است، بطوریکه سیستم سرویس دهنده دیگر قادر به پاسخ گویی به کاربران قانونی خود نباشد.
DoS برخلاف سایر تهدیدهای امنیتی مثل “دزدی اطلاعات” كه در آن هدف به دست آوردن اطلاعات محرمانه است و یا”نفوذ” که هدف از آن دسترسی به یک ماشین خاص است و یا”تغییر دادن اطلاعات” نمی باشد، بلکه هدف آن تنها جلوگیری از سرویس دهی عادی به کاربران
مجاز سرور به وسیله هدر دادن منابع می باشد[1].
در این فصل به تعریف این حمله و دسته بندی های آن پرداخته وسپس به انواع آن را معرفی می نمائیم.
2-1- تعریف واژگان و اصطلاحات تخصصی
تهدید: نیروی بالقوه ای که باعث ایجاد حادثه ای ناخواسته گردیده و ممکن است آثارش به امنیت سیستم یا سازمان آسیب برساند[5].
آسیب پذیری: هرگونه ضعف امنیتی قابل سوء استفاده در یک سیستم گفته می شود[5].
حمله: اقدامی که با نیت اختلال در امنیت سیستم های اطلاعاتی انجام می شود [5].
انواع حملات از نظر میزان تاثیر به دو دسته تقسیم می گردند:
1. حملات غیرفعال
هدف تنها دسترسی به منبع اطلاعاتی می باشد و اقدامی برای تغییر محتوا صورت نمی گیرد. این نوع حمله تنها می تواند به یکی از اشکال شنود ساده یا آنالیز ترافیک شبکه باشد. برخی از آنها عبارتند از شنود یا استراق سمع ، بوکشیدن ، انتشار پیام، آنالیز ترافیک شبکه، نظارت بر ارتباطات شبکه و غیره[5].
2. حملات فعال
علاوه بر دسترسی به منبع اطلاعاتی، بصورت غیر مجاز اقدام به تغییر محتوای آن نیز می نماید. از آن جایی که در این نوع حملات اطلاعات تغییر میکنند، شناسایی رخداد حملات، فرآیندی امکان پذیر می باشد. برخی از آنها عبارتند از تغییر پیام ، ارسال دوباره پیام ، جعل هویت، پاسخ های جعلی، ایجاد اختلال در ارتباطات، رمزگشایی اطلاعات رمز شده ی ضعیف، حذف یا بی اثرنمودن سرویس های امنیتی، عدم پذیرش سرویس و غیره[5].
روشهای مختلف بروز حملات کامپیوتر و شبکه را می توان در چهار دسته کلی تقسیم بندی نمود[5]
1. حملات جمع آوری اطلاعات
2. حملات اطلاعات معیوب
3. حملات استثماری
4. حملات انکار سرویس
2-2- تعریف حمله DOS
این نوع حمله باعث ایجاد اختلال یا مشکل در دسترسی مجاز کاربران به منابع و یا سرویس های موجود می شود. هدف اصلی از این نوع حمله ایجاد وقفه یا قطع ارتباط در ارائه خدمات از سوی سرویس دهنده به سرویس گیرنده است. در واقع مهاجم با حمله DOS با ایجاد یک بار زیاد و غیرعادی روی سرویس دهنده و در خواست های متعدد، رایانه را بطور کامل مشغول می کند و باعث از کارافتادن سرویس های ارائه شده به آنها می شود و به این ترتیب سیستم نمی تواند به هیچ مورد دیگری پاسخ دهد[6].
اگر امنیت را در سه زمینه قابلیت اعتماد ، یکپارچگی و دسترس پذیری تعریف نمائیم، حمله DOS گزینه سوم را مورد هدف قرار می دهد[1].
حمله DOS باعث کارکرد نامناسب یک سیستم اطلاعاتی می شود و کاربران را از دسترسی به خدماتی که سرور مورد نظر ارائه می دهد، محروم می سازد. این حملات از شایع ترین انواع حملات هستند. حمله DOS از برخی ضعف های موجود در پروتکل ها و برنامه های کاربردی سوء استفاده می کند[1].
دسته بندی انواع حملات [1]DOS
همانطور که در شکل 1 مشاهده می نمائید، حملات DOS به پنج سطح اصلی تقسیم می شوند:
شکل 1 – انواع دسته بندی حملات DOS
حمله های سطح Network – Device از ضعف های موجود در ساخت سخت افزار مورد استفاده در شبکه سوء استفاده می کنند. برای مثال بعضی از روترها مشکل سرریز شدن بافر دارند که می تواند توسط حمله کننده برای از کار انداختن روتر استفاده شود.
حمله های سطح سیستم عامل از بعضی جنبه های موجود در پیاده سازی پروتکل و همچنین خود سیستم عامل ماشین مورد نظر بهر جویی می کنند. برای مثال حمله ping of death در این دسته جای می گیرد.
حمله های سطح Application از حفره های موجود در برنامه کاربردی سوء استفاده می کنند. برای مثال این نوع حمله می تواند از کاستی های موجود در ساختار داده ای الگوریتم های استفاده شده در برخی برنامه های متداول بهره گیرد. مثلا با دادن ورودی های خاص، الگوریتم را وادار به اجرا شدن در حالت پیش بینی نشده ای کند و باعث عملکرد نادرست آن شود. این امر باعث می شود که ماشین قسمت عمده ی CPU را به اجرای محاسبات لازم اختصاص دهد و بنابراین به بخش زیادی از ترافیک ورودی رسیدگی نشود. حملات Buffer over Flow از این نوع می باشند.
حمله های سطح Data Flood با فرستادن سیل آسای بسته هایی با آدرس جعلی و با نرخ بالا، به هدفش که گرفتن منابع سیستم و پهنای باند است، می رسد. این کار، سیستم را مشغول رسیدگی با این بسته های جعلی کرده و از بررسی داده های مفید و اصلی باز می دارد.
حمله های سطح Protocol Features از طراحی غیر ایمن بعضی پروتکل های استاندارد بهره میگیرند. برای مثال حمله SYN Flood از فرآیند دست تکانی سه مرحله ای در پروتکل TCP و این حقیقت که در پروسه ی مسیریابی، صحیح بودن آدرس IP مبدأ چک نمی شود، سوء استفاده می کند.
انواع حملات [5]DOS
Ping of Death
در این حمله از پروتکل ICMP استفاده می شود و در سطح سیستم عامل قرار می گیرد. حمله کننده یک بسته Ping(echo request) با اندازه بزرگتر از معمول، یعنی بیشتر از 65536 بایت به سیستم هدف ارسال می کند. اگر سیستم عامل طرف مقابل از نسخه های قدیمی ویندوز مثلاً NT باشد، این کار باعث قفل کردن و یا crash کردن سیستم می گردد.
Smurf
در این حمله از Spoofing(جعل آدرس مبدأ) استفاده می شود. حمله کننده با قرار دادن آدرس IP سیستم هدف در بسته ICMP از نوع Ping(echo request) آن را درسطح شبکه بصورت همه پخشی ارسال می کند. کامپیوترهای موجود در شبکه با دیدن این بسته، همگی به سیستم هدف(که در واقع هیچ درخواستی اراسل نکرده است) پاسخ های echo reply می فرستندو این کار هم باعث ایجاد ترافیک اضافی در سطح شبکه شده وهم سیستم قربانی را با سیلی از بسته های ناخواسته که می توانند مانع از رسیدگی به سایر بسته ها شوند، مواجه می کند.
Spoofing ICMP Redirect message
بسته های ICMP redirect نوع دیگری از پیام های کنترلی هستند که از یک مسیریاب پیش فرض سیستم قربانی فرستاده می شود تا به او اطلاع دهد که مسیریاب بهتر دیگری برای مسیریابی بسته های او وجود دارد.
Teardrop
در این حمله از ضعف موجود در پروتکل IP در بازسازی بسته های قطعه قطعه شده سوء استفاده می شود. حمله کننده با فرستادن قطعه هایی که همپوشانی دارند و یا قسمت payload آنها بزرگتر از معمول است، باعث قفل کردن سیستم هدف می شود. مثلاً قطعه ها طوری فرستاده می شوند که مقدار محاسبه شده در مقصد برای انتهای قطعه(end) از مقدار ابتدای آن(offset) کمتر باشد.
Tiny Fragment
این حمله از قطعه های(fragment) بیش از اندازه کوچک استفاده می کند، طوری که مقداری از اطلاعات سرآیند بسته در قطعه بعدی قرار می گیرد. فیلد پرچم هایTCP(flags) اجباراً در قطعه دوم قرار گرفته و فیلترها در مقصد قادر به تست کردن آنها نخواهند بود. بنابراین در قطعه های بعدی از آن پرچم ها صرف نظر می شود. برای جلوگیری از این حمله می توان در روتر قوانینی مبنی بر حداقل نمودن اندازه اولیه قطعه دریافتی وضع کرد طوری که حتماً اطلاعات ضروری سرآیند را شامل شود.
SSPing
این حمله هم از قطعه بندی سوء استفاده میکند. با این تفاوت که این حمله بسته های ICMP که بیش از حد معمول قطعه بندی شده اند را به سمت هدف ارسال میکند. دلیل استفاده از بسته های ICMP متداول بودن آنها است. با این کار شناخته شدن بست های مربوط به حمله سخت تر صورت میگیرد.
با رسیدن این نوع بسته ها، کامپیوتر مقصد برای باز سازی این بسته های بیش از اندازه قطعه قطعه شده، نیاز دارد که یک سری اطلاعات اضافی را درپشته ی خود نگهداری کند. وقتی تعداد زیادی از این بسته ها دریافت شد، سیستم با کمبود حافظه برای نگهداری اطلاعات لازم برای بازسازی بسته ها مواجه می شود و در نتیجه دیگر نمی تواند به درخواست ها پاسخ دهد.
Unnamed
این حمله هم از قطعه بندی بسته ها سوء استفاده میکند. در این حمله مقدار offset طوری تنظیم می گردد که هنگام بازسازی بسته این طور به نظر برسد که به یک یا چند قطعه دیگر برای کامل شدن بسته نیاز است. این عمل باعث می شود که دریافت کننده مقداری از فضای پشته را به نگهداری این قطعه ها اختصاص داده و منتظر قطعاتی بماند که به ظاهر هنوز به مقصد نرسیده اند.
درحالی که قطعه دیگری مربوط به این بسته نخواهد رسید و فقط باعث می شود که منابع سیستم به هدر برود. وقتی تعداد بسته های با این ویژگی بالا برود، پروسه ی مربوط به بازسازی بسته، تمام حافظه ی خود را مصرف کرده و از سرویس دهی باز خواهد ماند.
Jolt2
در این حمله هم از ضعف های موجود در بازسازی بسته های قطعه قطعه شده استفاده می شود. در ویندوزهای نسخه 9x، NT و2000 آسیب پذیری در برابر این حمله وجود دارد. در این حمله یک جریان طولانی و وسیع از بسته های قطعه قطعه شده ی IP به سمت ماشین هدف در شبکه هدایت می شود.
Land exploit
حمله کننده در این حمله مقدار آدرس IP مبدأ و مقصد بسته را مساوی قرار می دهد. یعنی در واقع آدرس مبدأ را جعل می کند. همچنین شماره پورت مبدأ و مقصد بسته یا همان قربانی با مشکل مواجه می شود. چرا که می خواهد جواب این بسته SYN را به خودش و به همان پورتی که بسته را دریافت کرده، بفرستد. بسیاری از سیستم عامل ها به خاطر اینکه چگونگی کنترل کردن این مورد را پیش بینی نکرده اند، در مواجه شدن با این مشکل قفل شده و crash می کنند.
RPC Locator
این نوع حمله از طریق telnet به پورت 135 باعث می شود 100 درصد CPU اشغال شود. بسته به این که برنامه ی دیگری هم بر روی ماشین در حال اجرا باشد یا نه، این حمله باعث قفل کردن و یا کارکرد بسیار کند ماشین می شود. درنهایت برای بازگشت به حالت عادی، سیستم مجبور به راه اندازی مجدد خواهد شد. از آنجاییکه آسیب رسانی RPCمتوجه ویندوز NTمی باشد، اگر در شبکه از سرور NT استفاده شده باشد، راه اندازی مجدد سیستم باعث به هدف رسیدن حمله که همانا عدم سرویس دهی می باشد، می گردد.