IRCAR201003054
در طي سالهاي اخير بسياري از شركت ها براي راحتي بيشتر مشتريان و كارمندان خود، برخي امكانات اضافي را به برنامه هاي كاربردي موجود اضافه كرده و يا برنامه هاي كاربردي جديدي را پياده سازي كرده اند. براي مثال مي توان به دسترسي آنلاين به خدمات بانكي و يا گسترش شيوه هاي ارتباط الكترونيك براي كارمنداني كه در خانه كار مي كنند، اشاره كرد. از طرف ديگر بسياري از شركت ها به ضرورت حضور در اينترنت براي جذب مشتريان بالقوه و حفظ مشتريان فعلي پي برده اند. در هر دو مورد، زماني كه بحث حضور در اينترنت پيش مي آيد، عنصر امنيت به خصوص امنيت سرورها اهميت ويژه اي پيدا مي كند. سرورهاي وب ، در كنار سرويس هاي مفيد خود، مجموعه جديدي از آسيب پذيري ها را نيز پديد آورده اند كه لازم است دست اندركاران سيستم هاي رايانه اي، به خصوص سيستم هاي مبتني بر وب، آنها را جدي تلقي كنند. البته آسيب پذيري ها به سرورها محدود نمي شوند و ممكن است به صورت عمدي يا غير عمدي در طراحي و پياده سازي برنامه هاي كاربردي، حتي برنامه هايي كه مدتهاست در حال كار هستند، ايجاد شده باشند. به همين جهت شناسايي آسيب پذيري ها و ميزان نفوذ و تأثير آنها بر روي سيستم از اهميت ويژه اي برخوردار است. لذا بسياري از شركت ها براي نيل به هدف فوق از تست نفوذ استفاده مي كنند.
در مقاله تست نفوذ در مورد مفاهيم و استاندارد هاي مرتبط با تست نفوذ صحبت كرديم. در اين قسمت درباره چگونگي اجراي تست نفوذ صحبت خواهيم كرد.
پيش نياز اجراي تست نفوذ
هر شركت يا سازمان، پيش از اجراي تست نفوذ، به يك سياست امنيتي كامپيوتر نياز دارد. سياست امنيتي، يك آئين نامه رسمي از قوانيني است كه بايد توسط افرادي كه دسترسي به دارايي هاي اطلاعاتي و فناوري يك شركت يا سازمان دارند، رعايت شوند. تدوين سياست امنيتي بايد با توجه به ارزش دارايي ها و منابع اطلاعاتي شركت انجام شده و سپس رويه هاي امنيتي مناسب با آنها ايجاد شوند. فاكتور اصلي در تعيين رويه ها و كنش هاي امنيتي مناسب در سياست امنيتي كامپيوتر، هزينه اي است كه شركت در صورت از دست دادن داده ها متحمل مي شود. براي مثال، در صورتي كه شركتي با اطلاعات دولتي و يا مالي سر و كار داشته باشد، روند غير فعال كردن يك حساب كاربري (User ID) در آن، متفاوت از يك دانشكده خواهد بود. به علاوه اگر شركتي داراي اطلاعات خصوصي، اسرار تجاري و يا ليست مشترياني است كه رقبا نبايد از آن اطلاع حاصل كنند، لازم است ارزش امنيتي بالاتري را براي اطلاعات مذكور قائل شده و گام هاي امنيتي مناسب براي حفاظت از آنها برداشته شود.
يك سياست امنيتي كامپيوتر بايد موارد زير را پوشش دهد:
- اتصالات از/به اينترنت
- اتصالات از طريق خط تلفن (dial-up)
- امنيت دسترسي فيزيكي
- مديريت كلمه عبور
- مسئوليت ها و حقوق كاربران
- مسئوليت ها و حقوق مديران
- محافظت از اطلاعات حساس
- روال هاي پاسخگويي به فوريت ها
- مستند سازي
- پشتيبان گيري از اطلاعات
- گزارش ها و ثبت وقايع (logs)
- رسيدگي به رخدادها
- چگونگي گزارش يك مشكل يا رخداد امنيتي
- تخلفاتي كه بايد گزارش شوند
- اجراي سياست
- مسئول نهايي
برنامه ريزي تست نفوذ
قبل از اجراي تست نفوذ لازم است براي آن برنامه ريزي شده و ميزان آزادي عمل تست و قلمروي آن دقيقاً معين شود. همچنين در اين مرحله در مورد اجراي تست به شيوه جعبه سفيد و يا جعبه سياه تصميم گيري صورت مي گيرد، اعضاي تيم مشخص مي گردند، معيارهاي موفقيت تست تعريف مي شوند و مجوز مديريت دريافت مي گردد. در اين مرحله با توجه به حوزه تست نفوذ، پارامترهاي ضروري براي تشخيص آسيب پذيري ها تعيين مي گردد. مواردي كه در زمينه برنامه ريزي تست نفوذ بايد مورد توجه قرار گيرند عبارتند از:
- مدت زمان انجام تست چقدر است؟
- چه كساني از انجام تست اطلاع دارند؟
- چه كسي تأييد كننده دسترسي غير مجاز است؟
- چه منابع و سيستم هايي و چگونه تست شوند ؟
- تنظيمات فايروال
- اطلاعات كامل
- بدون اطلاعات
- سيستم هاي ميزبان
- وب سرورها
- انتخاب كلمات عبور
- چگونگي به اشتراك گذاري
- سرورهاي FTP
- سيستم تشخيص نفوذ
- سرورهاي DNS
- مودم ها Dial in
- دسترسي هاي بي سيم
- Public Branch Exchange(PBX)
- غير فعال سازي UserID و يا روند خارج شدن يك كارمند از سيستم
- دسترسي هاي فيزيكي
- مهندسي اجتماعي
- كامپيوترهاي روميزي
- انتخاب كلمات عبور
- تنظيمات مودم ها براي پاسخگويي اتوماتيك و يا دسترسي به نرم افزارهاي خارجي
- تنظيمات فايروال
- چگونگي ارائه نتايج
- بعد از چه مدت زماني، تست ديگري براي اطمينان از نتايج تغييرات انجام مي شود؟
جمع آوري اطلاعات (شناسايي)
پس از تعيين قلمروي تست نفوذ، نوبت به جمع آوري اطلاعات درباره شركت هدف تست مي رسد. تست نفوذ معمولاً با سه مرحله پيش تست آغاز مي شود. footprinting، scanning و enumerating. اين سه مرحله پيش تست بسيار مهم هستند زيرا تفاوت بين يك تست موفق كه تصويري كامل از شبكه هدف را فراهم مي سازد و يك تست ناموفق كه اين كار را انجام نمي دهد، از اين سه مرحله ناشي مي شود. اين سه با يكديگر به عنوان گام شناسايي يا reconnaissance شناخته مي شوند. در اين گام سعي مي شود تا حد امكان اطلاعات در مورد شبكه هدف جمع آوري گردد و شامل هفت زير مرحله مي شود:
- جمع آوري اطلاعات اوليه
- مشخص كردن دامنه آدرس هاي IP شبكه
- شناسايي رايانه هاي فعال
- كشف پورت هاي باز و نقاط دسترسي
- شناسايي سيستم عامل
- شناسايي سرويس هاي ارائه شده در هر پورت
- نگاشت شبكه
در زير در مورد هر كدام از گام هاي پيش تست بيشتر توضيح مي دهيم:
Footprinting
در اين مرحله دو گام اول مرحله شناسايي يعني جمع آوري اطلاعات اوليه و مشخص كردن دامنه آدرس هاي IP شبكه هدف صورت انفعالي انجام مي پذيرد. اين مرحله بسيار مهم است زيرا هكرها مي توانند اطلاعات به دست آمده در اين مرحله را بدون آگاهي سازمان هدف جمع آوري كنند. در اين زمينه تعدادي منابع و ابزار رايگان و تجاري وجود دارند كه مي توانند در به دست آوردن اطلاعات اوليه كمك خوبي باشند. دسترسي به بعضي از اين منابع مانند خبرنامه هاي شركت بسيار آسان است. تست كنندگان با استفاده از اين منبع به اطلاعات مفيدي دست پيدا مي كنند كه كارمندان حتي بدون آنكه متوجه باشند آنها را بروز مي دهند. ديگر روش ها براي جمع آوري اطلاعات استفاده از Whois، Nslookup، Smart Whois و SamSpade است. براي مثال Whois با استفاده از سرويس هاي دايركتوري، اطلاعاتي را در مورد دامنه ها و ثبت كنندگان آنها در اختيار مي گذارد و Nslookup يك پرس و جوي تعاملي را با سرورهاي نام دامنه انجام مي دهد.
Scanning
چهار مرحله بعدي گام شناسايي (شناسايي رايانه هاي فعال، كشف پورت هاي باز و نقاط دسترسي، شناسايي سيستم عامل و شناسايي سرويس هاي ارائه شده در هر پورت) به عنوان بخشي از مرحله پويش يا Scanning در نظر گرفته مي شوند. در اين مرحله هدف جمع آوري اطلاعات در مورد پورت هاي باز، پويش برنامه هاي كاربردي، ping كردن دستگاه ها، مشخص كردن حدود شبكه و پويش پورت هاي هر دستگاه به تنهايي است. اين مرحله نسبت به footprinting پوياتر بوده و اطلاعات جزئي تري از هدف جمع آوري مي شود. مانند مرحله قبل برخي ابزارها در اين مرحله ياري رسانند مانند NMap، ping، Telnet ،Traceroute، SuperScan، Netcat، NeoTrace و Visual Route. براي مثال با استفاده از Ping مي توان يك تقاضاي ICMP ECHO را به يك ميزبان شبكه مشخص ارسال كرد. در دستور ping مي توان يك پورت را نيز تعيين كرد كه دريافت پاسخ، نشان دهنده باز بودن پورت مذكور براي ارتباط TCP/IP است. همچنين با استفاده از Telnet مي توان يك ارتباط تعاملي را با يك ميزبان مشخص برقرار كرده و يك پورت را در اين دستور وارد كرد. دريافت پاسخ نشان دهنده باز بودن پورت مذكور براي ارتباط TCP/IP است. Traceroute ابزار ديگري است كه مسيرهاي ارتباطي اينترنت را بين دو سيستمي كه ارتباط TCP/IP دارند، مشخص مي سازد.
Enumerating
آخرين مرحله گام شناسايي نگاشت شبكه است كه با استفاده از اطلاعات Scanning انجام شده و مرحله Enumerating را تشكيل مي دهد. در اين مرحله هدف طراحي يك تصوير نسبتاً كامل از شبكه هدف است. در اين مرحله اطلاعات نام كاربران و گروه ها، منابع شبكه به اشتراك گذاشته شده و برنامه هاي كاربردي جمع آوري مي گردد. مخصوصاً اطلاعات مربوط به سيستم عامل مورد استفاده (همراه با نسخه آن) و برنامه هاي كاربردي نصب شده و نسخه آنها اطلاعات باارزشي در اين زمينه محسوب مي شوند. با دانستن نوع سيستم عامل و برنامه هاي كاربردي مي توان از آسيب پذيري هاي شناخته شده موجود در آنها جهت پياده سازي نفوذ استفاده كرد. در اين مرحله مي توان از تكنيك هاي زير استفاده كرد:
- به دست آوردن اطلاعات Active Directory و شناسايي كاربران آسيب پذير
- شناسايي NetBIOS با استفاده از Nbscan
- استفاده از SNMPutil براي SNMP
- به كارگيري پرس و جوهاي DNS
- ايجاد ارتباطات و نشست هايnull
هر كدام از ابزارها و تكنيك هاي فوق مي توانند در مورد ارتباطات شبكه و يا سيستم ميزبان نيز اطلاعات بيشتري را در اختيار بگذارند. در اين مرحله از تست كه اولين مرحله است، توصيه به جمع آوري هر چه بيشتر اطلاعات مي شود. اطلاعات مذكور از طرفي انتخاب تست هاي قابل انجام را راحت تر مي كنند و از طرف ديگر تست را بيشتر به شبيه سازي يك نفوذ واقعي هدايت مي كنند. هكرهاي واقعي قبل از انجام حمله تا جايي كه مي توانند به مطالعه و تحقيق در مورد سيستم مورد حمله مي پردازند و لذا يك انجام دهنده تست نفوذ نيز بايستي با اطلاعاتي مشابه يك هكر واقعي به انجام تست بپردازد. هر چقدر اطلاعات كمتري توسط ابزارهاي فوق به دست آيد، نشان دهنده امنيت بالاتر سيستم است.
به كارگيري آسيب پذيري ها با هدف نفوذ
در مرحله سوم تست نفوذ، براي شناسايي مشكلات مربوط به تنظيمات سيستم، از ابزارهاي پويش كردن آسيب پذيري ها و Password Crackers استفاده مي شود. برخي از ابزارهاي قابل استفاده در اين زمينه عبارتند از:
- Nessus – ابزاري براي تشخيص آسيب پذيري ها در سيستم هاي Unix
- SARA – دومين نسل از ابزار پويش آسيب پذيري SATAN
- Whisker – ابزار پويش آسيب پذيري در CGI
- Hping2 – يك ابزار شبكه است كه مي تواند بسته هاي دلخواه ICMP، UDP و TCP را ارسال كند و براي آزمودن قوانين فايروال و بررسي قطعات (fragments) بسته ها استفاده مي شود.
- Firewalk - يك ابزار شبيه دنبال كننده هاي مسير است كه اجازه دسترسي به Access Control List يك فايروال را مي دهد و همچنين امكان در آوردن نقشه شبكه را نيز فراهم مي كند.
- NAT(NetBIOS Auditing tool) – يك ابزار براي مشخص كردن آسيب پذيري ها در تنظيمات NetBIOS يك سيستم NT است.
- Toneloc – ابزاري براي بررسي مودم سيستم هاي روميزي است كه براي جواب دهي اتوماتيك و يا اجراي نرم افزار از راه دور به كار مي روند.
برخي ابزارهاي تجاري نيز در اين زمينه وجود دارند كه عبارتند از:
- Internet Security Server (ISS) – اين محصول بسيار پر كاربرد است و بسياري از شركت هاي انجام دهنده تست نفوذ از آن براي شناسايي آسيب پذيري ها استفاده مي كنند.
- CyberCop – اين ابزار نيز براي پويش آسيب پذيري ها به كار مي رود.
- Phonesweep - ابزاري براي بررسي مودم سيستم هاي روميزي است كه براي جواب دهي اتوماتيك و يا اجراي نرم افزار از راه دور به كار مي روند.
به غير از موارد ذكر شده در بالا ابزارهايي نيز براي تشخيص نفوذ و مديريت داده هاي توليد شده در روند تشخيص نفوذ وجود دارند. البته مبحث تشخيص نفوذ با اينكه مرتبط با تست نفوذ است ولي نيازمند بررسي جداگانه و مفصلي است و لذا از آوردن ابزارهاي مرتبط با آن خودداري كرده ايم.
بعد از انتخاب ابزارهاي ارزيابي آسيب پذيري، بايد از آنها بر روي سيستم ها و شبكه استفاده كرد. اطلاعاتي كه از ابزارهاي فوق به دست مي آيد، به روشني آسيب پذيري هاي اصلي را مشخص مي كنند. در اين مرحله لازم است با توجه به نوع نفوذ، كاري انجام داد تا وجود آسيب پذيري را به اثبات رساند. براي مثال بايد فايلي را در منطقه كنترل شده قرار داد و يا كلمه عبور مربوط به نام كاربري مهمان را تغيير داد. همچنين در موارد دسترسي هاي فيزيكي بايد بخشي از پرونده اي را برداشت و يا در شبيه سازي حملات مهندسي اجتماعي مي توان به شماره تلفن منزل مدير سيستم دسترسي پيدا كرد.
در اين مرحله برخي از حملات مانند حملات تزريق SQL، XSS، سرريز بافر و تروجان ها نيز بر روي شبكه شبيه سازي مي شوند كه در مقاله جداگانه اي چگونگي انجام آنها را به تفصيل توضيح خواهيم داد.
پاكسازي
در اين مرحله تمام فايل هايي كه در حين تست نفوذ انجام شده اند پاك شده و تمام تنظيمات و يا پارامترهايي كه تغيير يافته اند به حالت اوليه باز مي گردند. همچنين تمام ردپاها پاك شده و تمام سيستم هايي كه به آنها نفوذ شده است به حالت پيش از تست نفوذ بر مي گردند.
ارائه نتايج تست
نتايج تست بايد حاوي راه حل هايي براي كاهش و يا حذف آسيب پذيري ها باشد. تفاوت اصلي مميزي امنيتي و تست نفوذ در نكته مذكور است. بايد يك برنامه زماني براي رفع آسيب پذيري هاي كشف شده نيز ارائه گردد و بعد از آن دوباره سيستم را براي اطمينان از رفع آسيب پذيري هاي مذكور بررسي كرد.
راه حل هاي ارائه شده بستگي به نوع آسيب پذيري ها دارد و در آنها بايد هزينه هايي كه بر شركت در صورت سوءاستفاده از آسيب پذيري تحميل مي شود و همچنين هزينه راه حل آورده شود. براي مثال ممكن است در يك راه حل خواسته شود سيستم هاي جديدي كه براي وب سرور مورد استفاده قرار مي گيرند قبل از نصب تست شوند و در يك راه حل ديگر خواسته شود تا ايميل هاي ارسالي درون سيستم، ابتدا به يك ميل سرور مركزي ارجاع و سپس براي گيرنده ارسال شوند.
در پايان بايد گفت نتايج تست نفوذ بايد به دقت محافظت شده و محرمانه تلقي گردند، زيرا در صورت دسترسي افراد ناباب، امكان سوءاستفاده از آن بسيار زياد است.
- 18