تشخیص نفوذ در شبکه‌های کامپیوتری

تغییرات پروژه از تاریخ 1393/02/06 تا تاریخ 1393/03/05
شناسایی حملات در شبکه‌های کامپیوتری از جنبهٔ اطّلاعات مورد استفاده در مرحلهٔ یادگیری، به دو دستهٔ تشخیص نفوذ و تشخیص ناهنجاری تقسیم می شود.

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

# مقدمه :
 
سیستمهای تشخیص نفوذ برای کمک به مدیران امنیتی سیستم در جهت کشف نفوذ و حمله به کار گرفته شده اند. هدف یک سیستم تشخیص نفوذ جلوگیری از حمله نیست و تنها کشف و احتماأل شناسایی حملات و تشخیص اشکالات امنیتی در سیستم یا شبکه ی کامپیوتری واعلام ٓان به مدیر سیستم است. عمومأ سیستمهای تشخیص نفوذ در کنار دیوارههای ٓاتش و به صورت مکمل امنیتی برای انها مورد استفاده قرار میگیرند.
امروزه دو روش اصلی برای تشخیص نفوذ به شبکه ها مورد استفاده قرار میگیرد.

1)مبتنی  بر رفتار غیر عادی


 2)مبتنی بر امضا یا تطبیق الگو



روش اول مبتنی بر تعیین میانگین انواع فعالیتها بر روی شبکه است. مثالً چند بار یک دستور مشخص توسط یک کاربر در یک تماس با یک میزبان(host) اجرا میشود. لذا در صورت بروز یک نفوذ امکان تشخیص ٓان به علت مخالف معمول بودن ٓان وجود دارد. اما بسیاری از حمالت به گونهای هستند که نمیتوان به راحتی وبا کمک این روش انها را تشخیص داد. تکنیکها و معیارهایی که در تشخیص رفتار غیرعادی به کارمیروند، عبارتند از

۱)تشخیص سطح استانه

۲)معیارهای اماری

۳)معیارهای قانونگرا

۴)سایر معیارها

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

انواع معماری سیستمهای تشخیص نفوذ:


(HIDS) سیستم تشخیص نفوذ مبتنی بر میزبان

(NIDS)(HIDS)

 سیستم تشخیص نفوذ مبتنی بر شبکه

(DIDS)(NIDS)

 سیستم تشخیص نفوذ توزیع شده(DIDS)

مجموعه ای از الگوریتم های(راهکارهای) معروف تشخیص نفوذ عبارت است :

۱) Bayesian approaches

2)decision trees

3)rule based models and function studying and lazy functions
روش بایاس

2)درخت تصمیم



# کارهای مرتبط
تشخیص و جلوگیری از نفوذ (Intrusion Detection and Prevention) یکی از مکانیزم‌های اصلی در برآوردن امنیت شبکه‌ها و سیستم‌های کامپیوتری مطرح است. سیستم‌های تشخیص نفوذ را به عنوان سیستم‌‌هایی مجزا در نظر نمی‌گیریم بلکه این سیستم‌ها به عنوان زیرسیستم‌هایی از تجهیزات شبکه، سیستم‌های عامل و حتی سرویس‌ها قابل به‌کارگرفته می‌شوند.الگوریتم هایی که در زمینه تشخیص نفوذ انجام  شده است عبارت است :
# آنالیزکمی:
در این روش قوانین و مشخصات به صورت عددی نمایش داده میشود.تکنیکهای استفاده شده در این روش به صورت یک سری محاسبات در نظر
گرفته میشود که این محاسبات از جمع دو عدد ساده میتواند باشد تا محاسبات پیچیده. نتایج این تکنیک به عنوان پایه ای برای روشهای تشخیص سوءاستفاده و تشخیص ناهنجاری میتواند مورد استفاده قرار گیرد.

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

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

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

# آنالیز آماری :
این روش درسیستم هایی نظیر NIDES ،IDES و Haystack استفاده شده است. 

+ ای دی ای اس و ان ای دی ای اس (IDES/NIDES): 

در این روش برای هر کاربر و هر شئ سیستم، شناسهای ساخته و نگهداری میشود. این شناسه ها به صورت متناوب به روز درآورده میشوند و از اینجا تغییراتی که در هر شناسه رخ داده شده است مشخص میشود.
 
+ های استک (Haystack):                                                                                                                                                                                                            
در این روش از یک مکانیزم تشخیص ناهنجاری دو بخشه استفاده میشود. در قسمت اول مشخص میشود که حوزه عملکرد یک کاربر برای نفوذ چه مقدار میباشد و در قسمت دوم مقدار انحراف عملکرد هر کاربر نسبت به حالت عادی مشخص میشود.

# آنالیزمبتنی بر قواعد:
روش دیگری که برای سیستمهای تشخیص نفوذ در حالت تشخیص ناهنجاری استفاده میشود روش مبتنی بر قواعد میباشد. فرضهای انجام شده در این روش همانند روش آنالیز آماری میباشد. مهمترین تفاوتی که در این روش وجود دارد این است که سیستم از مجموعهای از قوانین برای نگهداری الگوها استفاده میکند. نمونه سیستمهایی که از این روش استفاده میکنند Wisdom & Sense و TIM میباشند.

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

# سیستم امنیت بیولوژیکی :
سیستم امنیت بیولوژیکی  توانایی ارزیابی خود را دارند. این مکانیزمی است که در سیستم امنیتی بیولوژیکی وجود دارد. در یک سیستم بیولوژیکی عمل حفاظت با بررسی عاملهای ریزتر نظیر اسیدهای آمینه،  پروتئینها و ... انجام میشود. مشابه همین عمل را میتوان در رابطه با سیستم های تشخیص نفوذ بکار برد. در این رابطه، system callها را میتوان به عنوان جزئیترین و اولین منبع اطلاعات در نظر گرفت. روش بررسی به این ترتیب است که ترتیب اجرای system callها به صورت آماری برای کاربردهای مختلف نگهداری میشود. اگر برنامه ای بخواهد اجرا شود ترتیب اجرای system callها با اطلاعات ذخیره شده تطابق داده میشود و در صورت بروز تفاوت قابل توجهی یک هشدار داده میشود.

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

# درخت تصمیم:
درختهای تصمیم روشی برای نمایش یک سری از قوانین هستند که منتهی به یک رده یا مقدار میشوند.درختهای تصمیمی که برای پیش بینی متغیرهای دستهای استفاده میشوند، درختهای classification نامیده میشوند زیرا نمونه ها را در دسته ها یا رده ها قرار میدهند. درختهای تصمیمی که برای پیش بینی متغیرهای 
پیوسته استفاده میشوند درختهای regression نامیده میشوند.

+ الگوریتم های یادگیری درخت تصمیم: 
اغلب الگوریتم های یادگیری درخت تصمیم بر پایه یک عمل جستجوی حریصانه بالا به پائین در فضای درختهای موجود عمل میکنند. در درخت تصمیم(ID3) از یک مقدار آماری به نام بهره اطالعات Information Gain استفاده می شود تا اینکه مشخص کنیم که یک ویژگی تا چه مقدار قادر است..



# آزمایش‌ها

# کارهای آینده
`پیاده سازی روش های زیر است. 

NB Tree: 

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


Decision Table:
در شیوه خطی از یک مدل رگرسیون خطی عمومی گوسی استفاده کردم و در شیوه غیر خطی از یک شبکه عصبی عمیق استفاده کردم.
در این مدل ها از داده های KDD 99  برای آموزش و تست استفاده شده است. داده های آموزشی KDD 99 داده نسبتا بزرگی می باشد ومن زمان مورد نیاز برای اموزش را هم گزارش کرده ام. هدف اصلی از این گزارش این است که نشان دهم در ازای نتیجه بهتر که از مدل غیرخطی به دست می آوریم  زمان بسیار بیشتری هم برای آموزش نیاز داریم. این مساله می تواند بسیار مهم باشد چرا که تشخیص نفوذ باید به صورت آن لاین و خیلی سریع (real-time) انجام شود.
#مدل رگرسیون خطی عمومی: 
مدل رگرسون خطی عمومی سعی می کند که خروجی داده را با این فرض که داده از یک توزیع نمایی (در اینجا توزیع نرمال) می آید، تخمین بزند. در این کار از روش تخمین Maximum Likelihood برای تخمین پارامترها استفاده شده است. اگرفرض کنیم که داده ها (مشاهدات) از یک توزیع نمایی با تابع زیر تبعیت می کنند:


![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/1a.png)


در این جا  y1,......,yn مشاهدات یا داده های آموزشی مورد استفاده در مدل هستند. 
زمان مورد نیاز برای اموزش 2 ثانیه و 605 میلی ثانیه می باشد. 


مدل ساخته شده:

![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/7.png)


![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/8.png)


![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/9.png)

#مدل غیرخطی:  شبکه های عصبی عمیق
در شبکه های عصبی برای هر سیگنال ورودی یک پاسخ از طریق عملیات غیرخطی پیچیده میدهد. این عملیات به صورت شماتیک به شکل زیر است:


![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/1.png)

و به تفکیک نورون های لایه اول و دوم رو به شکل زیر داریم:


![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/2.png)

که اگر وزن های لایه های اول و دوم را به صورت برداری در نظر بگیریم داریم:

![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/3.png)

خروجی خطی و غیرخطی هر لایه به صورت زیر میباشد.

![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/4.png)


# نتایج:
تعداد پارامترهای مدل:68623
تعداد نمونه های آموزشی: 46836467
سرعت آموزش: 3370 در هر ثانیه
مدت زمان آموزش: 3 ساعت و 51 دقیقه و 35 ثانیه و 70 میلی ثانیه
#میزان اهمیت هر ویژگی:

![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/5.png)
![تصویر باز شکاری](http://192.241.241.138:8000/static/MonaEsm/6.png)

همین طور که از نتایج مشخص می شود میزان خطا 100 برابر کمتر شده است. 0.0075 در شبکه عصبی در مقایسه با 0.188 در رگرسیون خطی. ناگفته نماند که زمان مورد نیاز برای آموزش شبکه عصبی هم بسیار فراتر است. در شبکه عصبی نیاز به 3 ساعت و نیم زمان برای آموزش داریم در حالیکه آموزش مدل رگرسیون فقط 2 ثانیه بوده است. 

# کارهای آینده
`پیاده سازی روش های زیر است. 
درخت ان بی : (NB Tree )
 پیوندی بین درخت تصمیم و نیتیو بیس  است و از ان درختی ایجاد میکند که برگ هایش نیتیو بیس است .  ان کاملا عقلانی است که درخت ان بی بتواند  بهتر از  نیتیو بیس باشد اما در عوض ممکن است از نظر سرعت  دچار مشکل بشود.

جدول تصمیم:(Decision Table)
 جدول تصمیم گیری می سازد ویژگی های مجموعه با استفاده از سرچ Best -First و cross-validation  میتواند برای ارزیابی استفاده شود.

OneR:
وان ار : (oneR)
 یک الگوریتم ساده ای با استفاده از based model است.  که  یک سطح درخت تصمیم طراحی میکند و یک مجموعه ای از قوانین که ویژگی خاص  خود را نشان میدهد را تست می کند .OneR  یک روش ساده و ارزان است که اغلب با روش های خوب  برای مشخص  کردن ساختار اطلاعات  به کار برده میشود. 


# مراجع

https://github.com/monaesmaeili/mytestrepo + [لینک فاز دوم](https://github.com/monaesmaeili/mytestrepo)
+ [لینک فازسوم](https://github.com/monaesmaeili/Intrusion-Detection-System) در این قسمت  علاوه بر کد تحلیل داده ها در قالب JSON قرار داده شده است.

# مراجع






+ Kabiri, Peyman, and Ali A. Ghorbani. "Research on Intrusion Detection and Response: A Survey." IJ Network Security 1.2 (2005): 84-102.



 + Paul Innella and Oba McMillan, “An Introduction to Intrusion Detection Systems”, .2001 


+ Axelsson, S. (1999). Research in intrusion-detection systems: A survey. Technical report TR 98-17. Göteborg, Sweden:   Department of Computer Engineering, Chalmers University of Technology.

+ Barbara, D., Couto, J., Jajodia, S., & Wu, N. (2001). ADAM: A testbed for exploring the use of data mining in intrusion detection. ACM SIGMOD Record, 30 (4), 15--24. 
  
+ Application of Data Mining to Network Intrusion Detection: Classifier Selection Model/Huy Anh Nguyen and Deokjai Choi

+ https://www.sans.org/reading-room/whitepapers/detection/algorithm-based-approaches-intrusion-detection-response-1413

+ http://www.security.cse.msstate.edu/docs/Publications/wli/DOECSG2004.pdf

+ http://www.dtic.mil/dtic/tr/fulltext/u2/a483571.pdf
+ http://seclab.cs.sunysb.edu/sekar/papers/sunlth.doc
+ http://www.jameskelly.net/mcs/thesis.pdf


# پیوندهای مفید
+ [The NSL-KDD Data Set](http://nsl.cs.unb.ca/NSL-KDD)