از آنجایی که از نظر تکنیکی ایجاد سیستمهای کامپیوتری بدون نقاط ضعف و شکست امنیتی عملا غیر ممکن است. تشخیص نفوذ در سیستمهای کامپیوتری با اهمیت خاصی دنبال می شود. سیستمهای تشخیص نفوذ سختافزار یا نرمافزاری است که کار نظارت بر شبکه کامپیوتری را در مورد فعالیتهای مخرب و یا نقص سیاستهای مدیریتی و امنیتی را انجام میدهد و گزارشهای حاصله را به بخش مدیریت شبکه ارائه میدهد[۱]. سیستمهای تشخیص نفوذ وظیف شناسایی و تشخیص هر گونه استفاده غیر مجاز به سیستم، سوء استفاده و یا آسیب رسانی توسط هر دودسته کاربران داخلی و خارجی را بر عهده دارند. هدف این سیستمها جلوگیری از حمله نیست و تنها کشف و احتمالا شناسایی حملات و تشخیص اشکالات امنیتی در سیستم یا شبکهکامپیوتری و اعلام آن به مدیر سیستم است. عموما سیستمهای تشخیص نفوذ در کنار دیوارهای آتش و بصورت مکمل امنیتی برای آنها مورد استفاده قرار میگیرد. سیستم های تشخیص نفوذ ستنی نمیتوانند خود را با حملات جدید تطبیق دهند از این رو امروزه سیستم های تشخیص نفوذ مبتنی بر داده کاوی مطرح گردیدهاند[۱]. مشخص نمودن الگوهای در حجم زیاد داده، کمک بسیار بزرگی به ما می کند. روشهای داده کاوی با مشخص نمودن یک برچسب دودویی (بسته نرمال، بسته غیرنرمال) و همچنین مشخص نمودن ویژگیها و خصیصه با الگوریتمهای دسته بندی میتوانند داده غیرنرمال تشخیص دهند. از همین رو دقت و درستی سیستم های تشخیص نفوذ افزایش یافته و در نتیجه امنیت شبکه بالا میرود[۱].
در این پایان نامه سعی شده است با بهره گرفتن از روشهای مبتنی بر داده کاوی سیتم های تشخیص نفوذ پیشنهاد کنیم که از این روشها برای شناسایی و کشف حملات استفاده می کنند. در این روش ما تمامی الگوریتمهای موجود را شبیهسازی نموده و در خاتمه بهترین الگوریتم را پیشنهاد مینماییم. نوآوری اصلی در این پایان نامه، استفاده از الگوریتمهای مدل کاهل و مدل قانونمحور در داده کاوی است که تاکنون برای سیستمهای تشخیصنفوذ استفاده نشده است. همچنین استفاده از تمام الگوریتمهای موجود در روشهای دستهبندی است که در نرم افزار WEKA و Rapidminer موجود است[۶۷]. پیشنهاد ۵ نمونه داده که از داده اولیه استخراج شده و برای مدلهای مختلف و الگوریتمها بهترین جواب را میدهد از نوآوری این پایان نامه است. استخراج ۵ نمونه داده وقت بسیار زیادی به خود اختصاص داده وهمه الگوریتمهای مختلف موجود در مدلهای دستهبندی با مجموعه داده های مختلف شبیهسازی و اجرا شدند که در نهایت ۵ نمونه داده اولیه پیشنهاد نمودهایم.
در دنیای امروز، کامپیوتر و شبکه های کامپیوتری متصل به اینترنت نقش عمدهای در ارتباطات و انتقال اطلاعات ایفا می کند. در این بین افراد سودجو با دسترسی به اطلاعات مهم مراکز خاص یا اطلاعات افراد دیگر و با قصد اعمال نفوذ یا اعمال فشار و یا حتی به هم ریختن نظم سیستمها، به سیستم های کامپیوتری حمله می کنند. بنابراین لزوم حفظ امنیت اطلاعاتی و حفظ کارآیی در شبکه های کامپیوتری که با دنیای خارج ارتباط دارند، کاملا محسوس است.
مکانیزمهای امنیتی به ۲ گروه کلی محافظتی و مقابلهای تقسیمبندی میشوند. مکانیزمهای محافظتی سعی میکنند از اطلاعات و سیستم در مقابل حملات محافظت کنند. مکانیزمهای مقابلهای هم برای مقابله با حمله تدارک دیده شدهاند.[۱] سیستمهای تشخیص نفوذ مطابق تعریف مؤسسه ملی استانداردها و تکنولوژیهای آمریکا، فرایندی هستند که کار نظارت بر رویدادهایی که در شبکه و سیستم رخ میدهد و همچنین کار تحلیل رویدادهای مشکوک را برای بهدست آوردن نشانه نفوذ، بر عهده دارند.
هدف از این پایان نامه استفاده از روشهای مبتنی بر داده کاوی برای تشخیص نفوذ است زیرا حملات همواره بروز میشوند و سیستمهای تشخیص نفوذ ستنی نمیتوانند این حملات شناسایی کنند. وقتی نفوذ اتفاق میافتد مهمترین کار شناسایی است. رخداد مربوط به نفوذ در هر زمان مرتبط به الگویی ازاتفاقات است که در گذشته رخ داده است. این داده های تاریخی منبع بسیار مهمی از صفات هستند که نیاز هست تا بطور موثر علامت و نشانه های نفوذ در مجموعه داده ها مشخص شود. داده کاوی با کشف الگوهای مناسب از میان داده های قبلی به روند ساخت این مدل ها کمک شایانی می کند. در این روش مجموعه ای از قانونهای دستهبندی از داده های شبکه بدست میآید. این قانونها توانایی تعیین رفتار عادی از غیر عادی را دارا میباشند. این پایان نامه با بهره گرفتن از مجموعه داده DARPA مورد ارزیابی قرار گرفته است. هدف اصلی این پایان نامه معرفی بهترین الگوریتم با توجه به مجموعه داده ها است. که بتواند بسته های عادی را از غیر عادی تشخیص دهد. .نوآوری اصلی در پایان نامه، استفاده از الگوریتمهای مدل کاهل و مدل قانونمحور است که تاکنون برای سیستمهای تشخیصنفوذ استفاده نشده است. همچنین استفاده از تمام الگوریتمهای مجود در روشهای دستهبندی است که در نرم افزار WEKA و Rapidminer موجود است. و پیشنهاد ۵ نمونه داده که از داده اولیه استخراج شده و برای مدلهای مختلف و الگوریتمها بهترین جواب را میدهد. استخراج ۵ نمونه داده وقت بسیار زیادی به خود اختصاص داده وهمه الگوریتمهای مختلف موجود در مدلهای دستهبندی با مجموعه داده های مختلف شبیهسازی و اجرا شدند که در نهایت ۵ نمونه داده اولیه پیشنهاد نمودهایم.
در این بخش قصد داریم مهمترین الگوریتمها و مدلهای داده کاوی را بررسی کنیم. بسیاری از محصولات تجاری داده کاوی از مجموعه از این الگوریتم ها استفاده می کنند و معمولا هر کدام آنها در یک بخش خاص قدرت دارند و برای استفاده از یکی از آنها باید بررسی های لازم در جهت انتخاب متناسبترین محصول توسط گروه متخصص در نظر گرفته شود.نکته مهم دیگر این است که در بین این الگوریتم ها و مدل ها ، بهترین وجود ندارد و با توجه به داده ها و کارایی مورد نظر باید مدل انتخاب گردد.
هر شبکه عصبی شامل یک لایه ورودی[۲]میباشد که هر گره در این لایه معادل یکی از متغیرهای پیش بینی میباشد. گرههای موجود در لایه میانی به تعدادی گره در لایه نهان[۳]وصل میشوند. هر گره ورودی به همه گرههای لایه نهان وصل می شود.
گرههای موجود در لایه نهان میتوانند به گرههای یک لایه نهان دیگر وصل شوند یا میتوانند به لایه خروجی[۴]وصل شوند.
لایه خروجی شامل یک یا چند متغیر خروجی می باشد
هر یال که بین نود هایX,Y میباشد دارای یک وزن است که با Wx,y نمایش داده می شود. این وزن ها در محاسبات لایه های میانی استفاده میشوند و طرز استفاده آنها به این صورت است که هر نود در لایه های میانی (لایه های غیر از لایه اول) دارای چند ورودی از چند یال مختلف میباشد که همانطور که گفته شد هر کدام یک وزن خاص دارند.
هر نود لایه میانی میزان هر ورودی را در وزن یال مربوطه آن ضرب می کند و حاصل این ضربها را با هم جمع می کند و سپس یک تابع از پیش تعیین شده (تابع فعالسازی) روی این حاصل اعمال می کند و نتیجه را به عنوان خروجی به نودهای لایه بعد میدهد.
وزن یالها پارامترهای ناشناختهای هستند که توسط تابع آموزش [۵]و داده های آموزشی که به سیستم داده می شود تعیین میگردند.
تعداد گرهها و تعداد لایه های نهان و نحوه وصل شدن گرهها به یکدیگر معماری(توپولوژی) شبکه عصبی را مشخص می کند.کاربر یا نرم افزاری که شبکهعصبی را طراحی می کند باید تعداد گرهها ، تعداد لایه های نهان ، تابع فعالسازی و محدودیتهای مربوط به وزن یالها را مشخص کند[۳].
[۱]Neural Networks
[۲]Input Layer
[۳]Hidden Layer
[۴]Output Layer
[۵]Training method
فهرست
عنوان صفحه
فصل اول : مقدمه و کلیات تحقیق. ۱
۱-۱) تعریف سیستم تشخیص نفوذ : ۲
۲-۱) اما چه چیزهایی سیستم تشخیص نفوذ نیست؟ ۲
۳-۱ ) دسته بندی حملات : ۴
۴-۱) انواع دسته بندی سیستم های تشخیص نفوذ : ۴
۱-۴-۱) روش های تشخیص نفوذ. ۶
۱-۱-۴-۱) روش تشخیص امضاء : ۶
۲-۱-۴-۱) روش تشخیص بر اساس ناهنجاری : ۶
۳-۱-۴-۱) روش ترکیبی : ۷
۲-۴-۱) دسته بندی براساس ساختار سیستم حفاظتی. ۸
۱-۲-۴-۱) سیستم تشخیص نفوذ مبتنی بر میزبان : ۸
۲-۲-۴-۱) سیستم تشخیص نفوذ مبتنی بر شبکه : ۹
۳-۲-۴-۱) مدل ترکیبی: ۹
۳-۴-۱) دسته بندی از لحاظ ساختار پردازشی: ۱۰
۴-۴-۱) دسته بندی بر اساس نوع منابع داده: ۱۰
۵-۴-۱) دسته بندی براساس رفتار بعد از حمله: ۱۰
۶-۴-۱) دسته بندی بر اساس جنبه های زمانی. ۱۰
فصل دوم : ادبیات و پیشینه تحقیق. ۱۲
۱-۲) داده کاوی: مقدمه. ۱۳
۲-۲) داده کاوی: مفاهیم کلی ۱۳
۳-۲) روال داده کاوی ۱۶
۱-۳-۲) بیان مسأله و فرمول بندی فرضیه ۱۷
۲-۳-۲) گردآوری داده ۱۷
۳-۳-۲) انجام پیش پردازش ۱۸
۴-۳-۲) تشخیص و حذف داده های زائد ۱۸
۵-۳-۲) برآورد مدل (کاوش داده) ۱۹
۶-۳-۲) تعبیر مدل و استخراج نتایج ۱۹
۴-۲) آشنایی با مجموعه داده KDD : 20
۵-۲) ماشین های بردار پشتیبان. ۲۳
۱-۵-۲) دسته بندی کننده بردار پشتیبانی. ۲۴
۲-۵-۲) SVC با حاشیه انعطاف پذیر. ۳۰
۳-۵-۲) کرنل: ۳۳
۱-۳-۵-۲) انواع کرنل ها : ۳۵
۴-۵-۲) مقایسه ماشین های بردار پشتیبان با شبکه های عصبی. ۳۵
۳-۵-۲) نقاط ضعف ماشین های بردار پشتیبان. ۳۶
فصل سوم : روش تحقیق. ۳۹
۱-۳) بهینه سازی.. ۴۰
۲-۳) مقایسه ریشه یابی با بهینه سازی: ۴۰
۳-۳) انواع بهینه سازی: ۴۱
۴-۳) فراابتکاری.. ۴۲
۵-۳) انواع الگوریتمهای ابتکاری.. ۴۴
۱-۵-۳) الگوریتم ژنتیک.. ۴۶
۱-۱-۵-۳) مراحل انجام الگوریتم ژنتیک.. ۴۷
۲-۱-۵-۳) عملگرهای الگوریتم ژنتیک: ۴۷
۳-۱-۵-۳) شرایط خاتمه برای الگوریتم ژنتیک.. ۵۸
۲-۵-۳) الگوریتم رقابت استعماری (ICA) 58
۷-۲-۵-۳) مراحل الگوریتم رقابت استعماری.. ۶۹
۳-۵-۳) الگوریتم بهینه سازی توده ذرات (PSO ) 71
مراحل الگوریتم PSO.. 72
فصل چهارم : محاسبات و یافته های تحقیق. ۷۳
فصل پنجم: نتیجه گیری و پیشنهادات.. ۸۳
مراجع: ۸۵
فهرست جداول
عنوان صفحه
جدول ۲- ۱ دسته بندی رکورد های انتخابی بر اساس الگوریتم های اعمالی. ۲۲
جدول ۲-۲ بررسی ویژگی های رکوردهای موجود در KDD CUP 99. 88
جدول ۴-۱ نتایج حاصل از ترکیب الگوریتم های فراابتکاری با ماشین های بردار پشتیبان چندکلاسه ۷۶
سیستم تشخیص نفوذ[۱] (IDS) یک سیستم دفاعی است که فعالیت های خصمانه در یک شبکه کامپیوتری را پیدا می کند. به عبارت دیگر مهمترین مسئله در این سیستم ها این است که اغلب فعالیت هایی که ممکن است امنیت سیستم را به خطر بیندازد و یا کارهایی که منجر به شروع یک خرابکاری در سیستم بشود را تشخیص می دهد مانند شناسایی اولیه اطلاعات سیستم ها و یا فاز جمع آوری داده که منجر به آسیب رساندن به سیستم می شود مانند عملیات اسکن پورت های سیستم.
یک ویژگی مهم سیستم های تشخیص نفوذ توانایی آن ها در نمایش فعالیت های غیرنرمال در شبکه می باشد مانند تلاش کاربران برای ورود به محیط های غیر مجاز و اعلام خطر به مدیر سایت.
علاوه بر آن یک سیستم تشخیص نفوذ این توانایی را دارد که بتواند حملاتی که از داخل یک سازمان و یا خارج از سازمان به داخل آن می شود را تشخیص دهد.
برای درک بهتر سیستم های تشخیص نفوذ باید گفت که برخلاف لغات و اصطلاحات بکار رفته در تعاریف بالا هر چیزی را نمی توان در این دسته بندی قرار داد. به صورت منحصر به فرد ابزار های زیر یک سیستم تشخیص نفوذ نمی باشد:
۱-۲-۱ ) ابزارهایی که برای نگهداری گزارش روزانه یک سیستم بکار می رود به عنوان مثال تشخیص انواع آسیب پذیری هایی که منجر به از کار افتادن سیستم می شود. این ابزارها سیستم های مانیتور ترافیک شبکه می باشند.
۲-۲-۱ ) ابزارهایی که برای تشخیص آسیب پذیری های مربوط به باگ و عیب سیستم های عامل و سرویس های شبکه بکار می روند برای مثال Cyber Cop Scanner
۳-۲-۱ ) ابزارهایی که برای تشخیص نرم افزارهای مخرب مانند ویروس ها، اسب های تروجان، کرم ها و بمب های منطقی طراحی شده اند. اگر چه این موارد بسیار شبیه ویژگی های سیستم های تشخیص نفوذ می باشند یا به عبارت دیگر می توانند زمینه را برای یک نفوذ آماده کنند.
نکته : ویروس ها برنامه هایی هستند که مشابه ویروس های زیستی گسترش یافته و پس از وارد شدن به کامپیوتر اقدامات غیر منتظره ای انجام می دهند. برای اینکه یک برنامه به عنوان ویروس شناخته شود فقط کافیست در ساختار خود یک واحد تکثیر کننده داشته باشد تا بتوانند سایر برنامه های دیگررا آلوده کنند اما درواقع ویروس ها در ساختار خود دارای چهار فسمت اصلی می باشند:
واحد پنهان کننده : یک برنامه گمراه کننده که باعث می شود ویروس بتواند خود را در کامپیوتر پنهان کند
واحد تکثیر کننده : یک برنامه تکثیر کننده که بوسیله آن ویروس می تواند خود را تکثیر کرده و برنامه بیشتری را آلوده کند.
واحد فعال کننده : یک کلید فعال کننده که باعث می شود ویروس در زمان خاصی یا بعد از انجام عمل خاصی فعال شود.
واحد اجرایی :قسمت اجرایی ویروس که ممکن است فقط یک نمایش بدون خطر باشد و یا یک برنامه خطرناک که باعث وارد شدن صدمه به سیستم شود.
اسب های تروجان : بزرگترین تفاوت اسب های تروجان (تراوا) و یک ویروس این است که اسب های تراوا خودشان منتشر نمی شوند.
کرم ها : کرم های کامپیوتری برنامه های هستند که بطور مستقل تکثیر و اجرا و در سراسر ارتباطات شبکه منتشر میشوند.
تفاوت اصلی بین ویروس ها و کرم ها در روش تکثیر و پخش آنهاست. یک ویروس وابسته به یک فایل میزبان یا بخش راه انداز است در حالیکه یک کرم میتواند کاملا مستقل اجرا شود و از طریق ارتباطات شبکه منتشر گردد.
۴-۲-۱ ) فایروال ها
۵-۲-۱ ) سیستم های رمزنگاری اینترنتی مانند VPN، SSL، Kerberos و غیره[۲۸]
بطور کلی حملات را می توان به چهار دسته زیر تقسیم بندی کرد:
۱-۳-۱) وارسی[۲] : در این نوع از حملات شخص مهاجم برای جمع آوری اطلاعات و یا یافتن نقاط آسیب پذیر سیستم شروع به جمع آوری اطلاعات از سیستم یا شبکه می کند.
۲-۳-۱) حمله از کار انداختن سرویس[۳] : در این حمله مهاجم آنقدر منابع سیستم را با بهره گرفتن از ابزارهایی که دارد مشغول می کند که سیستم سرویس دهنده بدلیل اتمام منابع قادر به پاسخگویی به سرویس ها نمی باشد.
۳-۳-۱) حمله کاربر به ریشه[۴] : در این حمله مهاجم قصد دارد با دستیابی به نام کاربری یک کاربر مجاز در سیستم، نقاط آسیب پذیر را کشف کند.
۴-۳-۱) حمله کنترل از راه دور[۵] : در این حمله مهاجم از راه دور و از طریق شبکه بسته هایی را به سیستم های مورد نظر ارسال میکند تا بتواند نقاط آسیب پذیر سیستم را کشف کند [۵].
[۱] Intrusion Detection System
[۲] Probing
[۳] Denial of Service
[۴] User to Root
[۵] Remote to Local
روش تشخیص امضاء بر اساس داشتن الگویی از نفوذهای شناخته شده عمل میکند. در این روش، مسأله تشخیص نفوذ به یک مسأله دسته بندی تبدیل میشود و سیستم تشخیص نفوذ قادر است حمله هایی را که پیشتر الگوی آنها را در یک مرحله آموزشی فرا گرفته، تشخیص دهد. مهمترین خصیصه این روش آن است که سیستم امنیتی قادر است حمله های شناخته شده را با دقتی بالا و نرخ هشدار غلط خیلی کمتشخیص دهد. منظور از هشدار غلط هشداری است که هنگام عدم وقوع حمله توسط سیستم تشخیص نفوذ اعمال میگردد. وجود هشدار غلط حتی به میزان کم چنانچه بار ترافیکی عادی شبکه بالا باشد، باعث وقوع هشدارهای متعدد و خسته کننده میگردد. به همین دلیل نرخ تولید هشدار غلط توسط یک سیستم تشخیص نفوذبایستی تا حد امکان پایین باشد. البته ذکر این نکته ضروری است که پایین نگه داشتن نرخ مزبور سببکاهش توانایی سیستم در تشخیص حملات محتمل میگردد. به عبارتی بایستی میان دقت تشخیص بالا و نرخ هشدار غلط پایین نوعی تعادل برقرار نمود.[۶]
نوع دیگر سیستم های تشخیص نفوذ با نام تشخیص ناهنجاری شناخته میشود. در این سیستم ها مدلی برپایه داده های آماری از فعالیت عادی شبکه ساخته میشود. چنانچه در هر لحظه بار ترافیکی شبکه ازمرزی که بین فعالیتهای عادی و غیر عادی توسط سیستم مشخص شده تخطی کند، سیستم هشداریمبنی بر وقوع حمله میدهد. بدیهی است که سیستم هایی که با این روش پیاده سازی میشوند تواناییتشخیص حمله های جدید را دارند. در عین حال معمولا تعیین مرز میان رفتار عادی و غیر عادی درسیستمهای مزبور کار مشکلی است.
پس می توان گفت تکنیک های مبتنی بر ناهنجاری براین فرض بنا شده که بتوان رفتارهای مخربانه را از رفتارهای عادی سیستم تفکیک کرد[۱۵]
با توجه به انواع روش های ذکر شده برای تشخیص نفوذ به شبکه، مشخص است که هر روش نقاط ضعف وقوت مربوط به خودش را دارا میباشد. دقت بالا در تشخیص حملات و نرخ هشدار غلط پایین از جملهویژگیهای اصلی در روش تشخیص امضاء میباشد. در عین حال روش مزبور توانایی تشخیص حمله های جدید را دارا نمی باشد. روش تشخیص ناهنجاری با وجود داشتن توانایی بالا در تشخیص حمله های جدید،دارای نرخ هشدار غلط بالایی است.
در این روش که معمولا روش بهتری محسوب می شود سیستم تشخیص نفوذ مزایای دو حالت قبل را با هم مورد استفاده قرار می دهد. ابتدا سیستم حملات شناخته شده را بر اساس تکنیک های روش مبتنی بر امضاء پیدا می کند و برای سایر حملات جدید که الگویی برای شناسایی آنها در پایگاه اطلاعاتی خود ندارد از روش مبتنی بر ناهنجاری استفاده می کند[[۲۳],[۳۵ .[۳۲],
آقایان Zhang و Zulkernine در [۲۱] یک مدل ترکیبی از سیستم های تشخیص نفوذ ارائه دادند که در واقع با بهره گرفتن از الگوریتم Random Forest ابتدا حملات شناخته شده را از طریق ماژول مبتنی بر امضاء پیدا می کند و سپس حملات خارج از پایگاه اطلاعاتی را با بهره گرفتن از همان الگوریتم و ماژول مبتنی بر ناهنجاری پیدا می کند. برای ارزیابی از مجموعه داده KDDCUP 1999 استفاده کرد که نتایج حاکی از آن است این سیستم ترکیبی ۹۴٫۷ درصد حملات را با تنها حدود ۲ درصد نرخ هشدار غلط توانسته پیدا کند.
[۱] Signature Detection
[۲] Anomaly Detection
[۳] Hybrid