پایان نامه رشته کامپیوتر با موضوع سیستمهای امنیتی شبكه

پایان نامه رشته کامپیوتر با موضوع سیستمهای امنیتی شبكه|41013007|پایان نامه رشته کامپیوتر با موضوع سیستمهای امنیتی شبكه
با سلام و درود خدمت خدمت شما پژوهشگر عزیز در این مطلب از سایت فایل با عنوان پایان نامه رشته کامپیوتر با موضوع سیستمهای امنیتی شبكه هم اکنون آماده دریافت می باشد برای مشاهده جزئیات فایل به ادامه مطلب مراجعه نمایید .

تحقیق رشته کامپیوتر با موضوع سیستمهای امنیتی شبكه

موسسه آموزش عالی علامه طبرسی

عنوان تحقیق پایانی:

امنیت شبکه

استاد راهنما:

سركار خانم مهندس هاشمی

دانشجو:

میلاد جانه

رشته:

نرم افزار کامپیوتر

1 مقدمه

این متن به بررسی انواع سیستمهای امنیتی و بررسی نقاط ضعف و قوت هر کدام می‌پردازد. در این بخش مقدماتی در مورد امنیت پروتکها و انواع حملات بیان می‌شود و بخشهای بعدی به بررسی دقیق انواع فایروال (فیلتر، NAT و پراکسی) و سیستمهای تهاجم یاب می‌پردازد. سپس سه نمونه از نرم افزارهای مفید امنیتی Snort IPF) و SAINT) معرفی می‌گردد.

1-1 انواع حملات

در این قسمت یک سری از روشهای متدول برای جمله به شبکه‌های کامپیوتری توضیح داده می‌شود و در مورد هر کدام مشخصات و نحوه شناسایی آن حمله بیان شده است. این حملات در چهار دسته عمده تقسیم بندی شده اند:

  • حملات رد سرویس یا DoS
  • حملات استثماری
  • حملاتی که به منظور بدست آوردن اطلاعات صورت می‌گیرند.
  • حملاتی که سرویسدهی روی شبکه را دچار مشکل می‌کنند.

1-1-1 حملات رد سرویس

این نوع حملات با ایجاد یک بار زیاد و غیر عادی روی سرورها باعث از کار افتادن سرویسهای ارائه شده توسط آنها می‌شوند. از آنجا که انجام دادن این نوع حمله ساده است. لذا بیشتر متداول می‌باشد. این قسمت بیشتر این حملات را توضیح می‌دهد:

Ping of Death

این حمله از طریق بسته‌های ICMP صورت می‌گیرد. حجم بسته‌های ICMP به 64KB محدود می‌شود و بسته‌هایی که در سر آیند آنها حجم بسته بیشتر از این مقدار بیان شده (در حالیکه نیست) ممکن است در سمت گیرنده مشکلاتی ایجاد کنند چون بسیاری از سیستم عاملها کنترل دقیقی روی بسته‌های معیوب ندارند. این نوع حمله نبستاً قدیمی است و امروزه تمام سیستم عامل‌ها قادر به تشخیص آن می‌باشند.

Teardrop

این حمله از طریق Fragment‌های IP صورت می‌گیرد. یک Fragment شامل اطلاعاتی است که بیان می‌کند چه قسمتی از بسته داخل آن قرار دارد. بسیاری از سیستمها ممکن است با گرفتن Fragment‌هایی که متعلق به یک بسته بوده و با هم تناقض دارند (یک قسمت از بسته در دو Fragment قرار داشته باشد) دچار مشکل شوند. این نوع حمله نیز قدیمی است.

UDP Flooding

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

SYN Fooding

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

Land Attack

این حمله شبیه SYN Fooding می‌باشد. در این حمله یک بسته SYN برای سرور ارسال می‌شود که آدرس فرستنده و گیرنده آن هر دو آدرس خود سرور است. سرور پس از دریافت این بسته پاسخ آن را برای خودش می‌فرستد که نتیجه ای مشابه SYN Fooding به همراه دارد.

Smurf Attack

این حمله از طریق بسته‌های ICMP صورت می‌گیرد. در این حمله یک بسته ICMP Reqest داخل شبکه فرستاده می‌شود که آدرس reply آن آدرس broadcast شبکه می‌باشد. چنین بسته‌هایی معمولاً ترافیک بالایی داخل شبکه ایجاد می‌کنند.

Fragle Atack

این حمله شبیه Smurf Attack است ولی بجای بسته‌های ICMP از بسته‌های UDP استفاده می‌کند.

E-mail Bombs

این نوع حمله شامل فرستادن نامه‌های بزرگ بطور مداوم برای یک سیستم است. از آنجا که سمت فرستنده و گیرنده دارای بار نسبتاً مساوی هستند از این روش کمتر می‌توان بعنوان یک DoS واقعی استفاده کرد.

Malfrmed Attacks

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

حملات استثماری

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

حدس زدن Password

بسیاری از سرورها برای ارائه سرویس نیاز به احراز هویت کاربران از طریق Password دارند. برنامه‌هایی وجود دارند که یک سری کلمات (اسامی، کلمات dictionary، اعداد، …) را بطور اتوماتیک تست می‌کنند تا به یک Password معتبر دسترسی پیدا کنند.

Trojan Horse

Trojan Horse به برنامه ای گفته می‌شود که اغلب توسط یک مهاجم روی سیستم نصب می‌شود و اطلاعاتی در مورد سیستم به خارج از شبکه می‌فرستد یا راهی برای دسترسی غیر مجاز به سیستم فراهم می‌کند که به آن backdoor می‌گویند. Trojan Horse معمولاً برنامه کوچکی است که به سادگی نصب می‌شود و از دید کاربر نیز پنهان می‌ماند.

Buffer Overrun

اکثر سرورها برای رسیدگی به درخواستهایی که از شبکه دریافت می‌کنند فضایی از حافظه را به عنوان بافر اختصاص می‌دهند. اغلب برنامه‌ها حجم این بافر را به یک مقدار ثابت محدود می‌کنند یا به بسته‌های رسیده اطمینان کرده و اندازه بسته‌ها را از روی اطلاعات سر آیند آنها استخراج می‌کنند. این پدیده معمولاً زمانی اتفاق می‌افتد که طول یک بسته از مقدار در نظر گرفته شده برای بافربیشتر باشد یا اطلاعات غلط در مورد طول خود به برنامه بدهد. برای مثال اگر طول یک بسته 256 بایت باشد ولی در اطلاعات غلط در مورد طول خود معرفی شده باشد 240 بایت بسته داخل بافر قرار می‌گیرد و 16 بایت اضافی در یک مکان دیگر از حافظه نوشته می‌شود و منجر به از بین رفتن اطلاعات آن قسمت حافظه می‌شود. در این حالت با قرار دادن کد ماشین در 16 بایت آخر بسته ممکن است بتوان این کد را روی سرور اجرا کرده کنترل سرور را بدست آورد.

1-1-2 حملاتی که به منظور بدست آوردن اطلاعات صورت می‌گیرند

این نوع حملات هیچگونه صدمه ای به سیستم نمی زنند و تنها برای بدست آوردن اطلاعات جهت حملات بعدی مورد استفاده قرار می‌گیرند. مهمترین اطلاعاتی که یک مهاجم می‌تواند بدست آورد در مورد آدرس سیستمهای داخل شبکه، سیستم عامل روی آنها، پورتهای باز این سیستمها و کاربران روی آنها می‌باشد. برای پیدا کردن آدرسهای داخل شبکه از نرم افزار‌هایی استفاده می‌شود که برای یک دسته از آدرسها پیغام TCMP Request می‌فرستد. با دریافت پاسخ این بسته‌ها سیستمهای موجود در داخل شبکه شناسایی می‌شوند و هر کدام از این آدرسها برای حملات بعدی مورد بررسی قرار می‌گیرند. قبل از حمله باید اطلاعات خاصی در مورد هر سیستم بدست آورد که این اطلاعات می‌تواند شامل سیستم عامل، پورتهای باز و کاربران معتبر روی آن سیستم باشد. برنامه‌هایی تحت عنوان Port Scanner وجود دارند که می‌توانند با فرستادن بسته‌های خاصی به سیستم اطلاعاتی در مورد پورتهای باز، سرویسهای موجود روی سیستم و سیستم عامل آنها بدست بیاورند. Port Scanner‌ها انواع مختلف دارند و بعضا از روشهایی استفاده می‌کنند که به سختی قابل تشخیص می‌باشند. برای تشخیص نام کابران روی سیستم نیز می‌توان از سرویسهایی نظیر Finger استفاده کرد. سرویسFinger در سیستم عاملهای مبتنی بر Unix اطلاعات مفیدی در مورد کاربران ارائه می‌کند ولی از این سرویس برای پیدا کردن نام کاربران معتبر نیز می‌توان استفاده کرد.

1-1-3 حملاتی که سرویس‌دهی روی شبکه را دچار مشکل می‌کنند

این نوع حملات بر روی سرورهای شبکه اعمال می‌شود و آنها را وادار می‌کند اطلاعات اشتباه به سرویسگیرها بدهند. این حملات معمولا راه را برای حملات بعدی باز می‌کند. دو نمونه از این حملات عبارتند از:

DNS Cache Pllution

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

Email جعلی

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

1-2 امنیت پروتکلها

در این قسمت یک سری پروتکلهای متداول که بر پایه IP کار می‌کنند از لحاظ امنیتی مورد بررسی قرار می‌گیرند. از آنجا که هر کدام از این پروتکلها برای ارائه یک سرویس بکار می‌روند، دو اصطلاح پروتکل و سرویس معمولاً بجای یکدیگر بکار می‌روند. میزان آسیب پذیری یک سرویس یا پروتکل با پاسخ داده به سئوالات زیر مشخص می‌شود:

  • سرویس مربوطه چقدر پیچیدگی دارد؟
  • این سرویس چگونه می‌تواند مورد سوء استفاده قرار بگیرد؟
  • چه اطلاعاتی در مورد شبکه توسط سرویس افشا می‌شود؟
  • چه مقدار دیالوگ با سرویسگیر انجام می‌شود؟
  • سرویس تا چه حد قابلیت پیکربندی و برنامه نویسی دارد؟
  • چه سرویسهای دیگری بر پایه این سرویس قرار گرفته اند؟
  • این سرویس چه مکانیزمی برای احراز هویت سرویسگیرها استفاده می‌کند؟

1-2-1 پیچیدگی سرویس

سرویسهای پیچیده خیلی زودتر از سرویسهای ساده مورد تهاجم قرار می‌گیرند. سرویس echo یک سرویس ساده است که تمام کاراکترهای ارسالی از طرف سرویسگیر را دوباره برای وی می‌فرستد. این سرویس بیشتر برای مقاصد تست مورد استفاده قرار می‌گیرد. در مقابل سرویس پست الکترونیکی یک سرویس پیچیده می‌باشد که نامه‌های الکترونیکی را رد و بدل می‌کند. بسیاری از سرویسهای مرتبط با این سرویس مانند IMAP POP نیاز به احراز هویت کاربر قبل از ارائه سرویس به وی دارند، هر چند در مقابل سرویس SMTP نامه‌ها را بدون توجه به فرستنده آنها (هر کاربری که باشد، حتی یک کاربر قلابی) ارسال می‌کند. اگر اطلاعات مربوط به password کاربران افشا گردد، مکانیزم امنیتی و احراز هویت فریب داده شود، یا حتی خود سرویس به گونه ای مورد تهاجم واقع می‌شود که اطلاعات محرمانه شبکه را به بیرون منتشر کند، هر کدام از این شرایط امنیت شبکه در معرض خطر بزرگی قرار گرفته است.

1-2-2 سوء استفاده از سرویس

یک سرویس می‌تواند به خودی خود یک سرویس ساده و بی خطر باشد، ولی می‌تواند در مقاصد مخرب نیز مورد استفاده قرار گیرد. سرویس chargen یک سرویس UNIX برای تولید مداوم کارکترهای ASCII می‌باشد. این سرویس از آنجا که کاراکترهای تصادفی تولید می‌کند برای تست نرم افزار‌های شبکه یک ابزار قدرتمند می‌باشد. این سرویس می‌تواند به سادگی مورد سوء استفاده قرار گیرد. برای مثال فرض کنید که یک بسته SYN با آدرس فرستند تحریف شده برای این سرویس فرستاده شود. در مقابل سرویس سیل عظیمی از کاراکتر را برای کسی که آدرس وی بجای آدرس فرستند در بسته قرار دارد فرستاده خواهد شد. در این حالت ایجاد کننده این بار ترافیکی بدون اینکه هزینه‌های مصرف کرده باشد جریان بسته‌ها را بین دو آدرس دلخواه ایجاد می‌کند.

1-2-3 اطلاعات ارائه شده توسط سرویس

بعضی سرویسها در عمل بسیار ساده اند ولی می‌توانند برای شبکه خطرناک باشند. سرویس finger برای راحتی کاربران UNIX طراحی شده است. این سرویس یک سری اطلاعات در مورد account‌های موجود در سیستم ارائه می‌کند. مهاجمین می‌توانند از این سرویس برای پیدا کردن account‌های فعال سیستم استفاده کنند. پیدا کردن نام یک account معتبر می‌تواند نقطه شروع مناسبی برای حمله به سیستم باشد.

1-2-4 میزان دیالوگ با سرویسگیر

امن کردن یک سرویس با دیالوگ ساده به مراتب راحتتر از امن کردن سرویسی است که نیاز به دیالوگهای پیچیده با سرویسگیر دارد. برای مثال سرویس HTTP (در نسخه‌های اولیه و بدون در نظر گرفتن ASP CGI و موارد مشابه) یک پروتکل ساده است که در آن سرویسگیر تقاضای یک سری منابع را به سرور می‌دهد و سرور نیز بدون توجه به وضعیت ارتباط موجود در صورت امکان منابع در خواست شده را برای سرویسگیر تهیه می‌کند. (این ارتباط بصورت Stateless است). امن کردن یک ارتباط Stateful به مراتب مشکلتر است. مخصوصاً اگر سرویس نیاز به احراز هویت سرویسگیر نیز داشته باشد و درخواستها و پاسخهای بین سرور و سرویسگیر موجب تغییر در وضعیت ارتباط شود.

1-2-5 قابلیت پیکربندی سرویس

هر اندازه سرویس قابل پیکربندی و برنامه ریزی باشد امکان بروز اشتباه در این تنظیمات بیشتر می‌شود و در نتیجه امکان پیدا شدن bug‌های مختلف در آن بسیار زیاد است. از این رو سرورهایی مانند Exchange Server و Internet Information Server (یا هر وب سروری که امکان اجرا کردن برنامه‌هایی را برای تولید صفحات HTML در آن وجود داشته باشد) ممکن است دارای مشکلات امنیتی باشند که همه آنها در حال حاضر شناخته شده نیستند و به مرور زمان پدید می‌آیند.

1-2-6 نوع مکانیزم احراز هویت استفاده شده توسط سرویس

سرویسهایی که نیاز به احراز هویت سرویسگیر دارند از دو طرف در معرض خطرات امنیتی قرار دارند: اول اینکه خود مکانیزم استفاده شده ممکن است ضعیف باشد و این امر باعث سوء استفاده از سرویس می‌شود. دوم اینکه اغلب کاربران از یک password برای سرویسهای مختلف استفاده می‌کنند و در صورت لو رفتن password یک سرویس سایر سرویسها نیز در معرض خطر قرار می‌گیرند. یک نمونه بارز این خطر سرویس POP است. این سرویس اغلب از password‌های خود سیستم برای احراز هویت کاربران استفاده می‌کند و بسیاری از سرورهای POP امکان رد و بدل کردن password‌ها بطور امن را ندارند. در صورت لو رفتن یک password سرویس POP کل سیستم در معرض تهدیدهای امنیتی قرار می‌گیر