پاسخ به:آموزش های تخصصی شبکه و امنیت و ضد امنیت
پنج شنبه 26 مرداد 1391 1:53 AM
شروع بحث Vulnerability و exploit کردن
- Vulnerability چيست؟
Vulnerability يا بهصورت مختصر vul را در فارسي حفره يا سوراخ امنيتي ميگيم. اين عبارت رو بايد يه کم توضيح بدم. فرض کنيد که يه نرمافزار داريم که يه پورتي رو باز ميکنه. وقتي اين نرمافزار قرار هست که منتشر بشه، شرکت سازنده يه سري تست رو نرمافزار انجام ميده که مشکلي نداشته باشه. بعد که اطمينان نسبي خاصل شد، نرمافزار ارائه ميشود و سرورها و کلاينتها از اون نرمافزار و از اون ورژن خاص شروع به استفاده ميکنن. بعد از اينکه نرمافزار منتشر شد، گروههاي مختلفي که در سراسر جهان هستند و کارشان تست امنيتي اين نرمافزارهاست شروع به فعاليت ميکنند. اين گروهها هر چند وقت يک بار موفق به يافتن نقاط ضعفي در اين برنامهها ميشوند و اونو گزارش ميکنن. سايتهايي هستند که کارشون بهطور عمده گزارش جديدترين vul هاي کشف شده است. مثلا ممکنه در سايتهايي مثل securitytracker.com يا securityfocus.com و ... به عبارتي مثل : A vulnerability was reported in ... برخورد کرده باشيد. اين بيان ميکنه که يه vul جديد کشف شده است. دقت کنيد که اين vul از وقتي نرمافزار طراحي شده با اون بوده ولي کسي از اون خبر نداشته تا وقتي که اين گزارش منتشر بشه! پس اين گروهها کارشون کشف باگ هستش نه اختراع باگ!
همچين نرمافزاريي رو vulnerable ميگن. يعني قابل نفوذ.
اين vul ها انواع مختلفي دارند و ميشه اونا رو catagorize (طبقهبندي) کرد. اين بحث رو بعدا بهطور کامل مطرح ميکنم. عجالتا بهتره کمي هم راجع به exploit صحبت کنم:
- exploit چيست؟
فرض کنيد که يکي مياد و يه باگ رو کشف ميکنه. اين کشف vul معمولا فقط در حد يک گزارش ميمونه تا اينکه يکي همت کنه و روشي براي exploit کردن اون vul درست کنه. پس vul جنبه تئوري قضيه است و exploit قسمت عملي اون. exploit ميتونه يه کد (معمولا به زبانهاي سي و پرل ) يا يه دستورالعمل يا يه url و ... باشه. وقتي شما مطمئن ميشين که فلان سرور از فلان ورژن فلان نرمافزار استفاده ميکنه که اون نرمافزار فلان vul رو داره، يا بايد exploit بسازيد و يا اينکه يه exploit واسه اون از اينترنت پيدا کنيد.
نتيجه اينه که ممکنه يه vul کشف شده باشه ولي exploit واسه اون نباشه. حتي من ديدم که سايتهاي مطرحي مثل Cert ميان و قلم فرسايي ميکنن که فلان vul قابل exploit کردن نيست ولي بعد exploit نوشته ميشه و اينا ضايع ميشن!! البته بگذريم که نمونههايي از vul ها رو داريم که هرگز براش exploit نوشته نشده باشه.
- vul ها رو چگونه نامگذاري ميکنند؟
اولين نکتهاي که بايد بگم، اينه که براي هر Vulnerability يک شماره يا يک نام نسبت ميدن. اين شماره يا نام در واقع يک استانداردي است که به هکرها و متخصصين امنيت شبکه اجازه ميده که حرف همديگرو بفهمن! مثلا ممکنه جايي ببينيد که راجع به NT IIS Unicode Vulnerability صحبت ميکنند يا راجع به CVE شماره CVE-2000-0884 يا BID شماره 1806 بحث ميکنند. دقت کنيد که همه اينها معادل هم هستند. پس براي يک vul خاص ممکن است شمارهها يا عبارتهاي معادلي باشد.
۱- CVE اولين جايي است که بايد ببينيد:
فرض کنيد که شما متوجه شدهايد که سروري داراي يک vul به شماره CVE-2000-0508 داشته باشد (اينکه چطوري ميشه فهميد يه سرور چه vul هايي داره بعدا بحث خواهم کرد). براي CVE از يکي از آدرسهاي زير استفاده کنيد: http://cve.mitre.org/cgi-bin/cvename.cgi?name=xxxxxxxxxxhttp://cgi.nessus.org/cve.php3?cve=xxxxxxxxxکه به جاي xxxxxxxxx بايد شماره CVE رو بنويسيد مثلا CVE-2000-0508 يا مثلا CAN-2002-0651 و...
وقتي به اين آدرسها رجوع کنيد ميبينيد که يه سري نامها و شماره معادل براي اين CVE ذکر شده است. به عبارت ديگه واسه اينکه در مورد يک vul مطالبي بياموزيد، اولين کاري که ميکنيد رجوع به يکي از دو سايت بالاست. بعد از رجوع به آنها ميتونيد لينکهايي را استخراج کنيد که به شما اجازه ميدن، راجع به اون vul مطالبي رو بياموزيد.
فرض کنيد که يک vul رو که CVE اونو ميدونيد در يکي از اين سايتها داريد ميخونيد، ملاحظه خواهيد کرد که براي اين CVE بعد از يک توضيح مختصر يک سري اسم و شماره ذکر شده است. اين اسامي ممکن است، BID يا XF يا ... باشد. در واقع براي اينکه در مورد اين vul خاص نکاتي را ياد بگيريد، علاوه بر توضيحات مختصز بالاي صفحه بايد تک تک اين مطالبي که بهشون ارجاع داده شدين، مثل BID مربوطه، XF مربوطه و ... را بخونين. حالا اگه اونحا نوشته باشه: BID: 1806از کجا بايد اونو خوند؟ (يعني لينک مستقيمش چي هست؟) همين پايين مهمترهاشو ميگم (دقت کنيد که همه اون اسمها معادل هم هستند فقط سايتهاي مختلف اسمهاي مختلفي را واسه يه vul انتخاب ميکنند و ما ميخواهيم تمام مطالب مرتبط با يه vul خاص رو از سايتهاي مختلف پيدا کنيم )
۲- BID يا BugTraq ID يا همون نفس من بيده! :
فرض کنيد که صفحه مربوط به CVE خاص رو خوندم و اونجا به عبارت BID: 1806 برخوردم. حالا اونو از کجا بخونم؟ از اينجا : http://www.securityfocus.com/bid/xxxxکه به جاي xxxx بايد يک عدد بنويسيد (همان عدد مربوز به BID ) مثلا به جاي xxxx بنويسيد: 1806
اگه بخوام بهترين محل يادگيري راجع به vul ها رو ذکر کنم، جايي بهتر از www.securityfocus.com واسه اين کار وجود نداره. دقت کنيد وقتي که صفحه مربوط به يک BID خاص رو در اين سايت ميبينيد، يک سري لينک به اسمهاي info و discussion و exploit و solution را هم بخونين که جنبههاي مختلف اون vul خاص است. مخصوصا قسمت exploit که جايي است که جوجههکرها ميتونن با اون حسابي حال کنن! به عبارت ديگه جاييه که واسه اون vul خاص exploit داونلود کنيد. خيلي از ابزارهاي هک که تبليغ ميشن، در واقع با تغييرات کمي از همين exploit ها بدست ميآن!!
۳- XF :
XF استاندارد سايت iss.net براي vul هاست. XF به صورت يک نام (نه عدد) نامگذاري ميشوند و اونو بايد در صفحه زبر بخونين:http://www.iss.net/security_center/search.phpکه وقتي در اين صفحه search کنيد، يک سري صفحات static بدست مياد که بايد بخونين.
۴- CA يا CERT:
سايت cert.org براي vul ها از اسم CA استفاده ميکند، مثل CA-2002-19 براي CA ها صفحه زير رو ببينيد:http://www.cert.org/advisories/xxxxxxxxx.htmlبهجاي xxxxxxxxx مثلا مينويسيم: CA-2002-19
ضمنا دقت کنيد که وقتي مطالب مربوط به يک vul رو از سايت cert ميخونيد، ملاحظه ميکنيد که لينکهايي به صورت VU#xxxxx در آن هست که به جاي xxxx يک عدد نوشته شده مثلا 369347 که اين VU# رو ميتونيد از اينجا بخونيد: http://www.kb.cert.org/vuls/id/xxxxxx۵- و …
- Vulnerability Scanner چيست؟
Vulnerability Scanner ابزاري است که به کمک اون ميشه کامپيوترهاي شبکه رو از نظر وجود سوراخهاي امنيتي تست کرد. vul scanner ها اين کار را به صورت اتوماتيک يا نيمهاتوماتيک انجام ميده.
vul scanner ها رو ميشود به دو دسته Network based و Host based تقسيم کرد. اولي را بهصورت remote و دومي رو بهصورت local استفاده ميکنند. به عبارت ديگر در مورد Network based اونو موقعي استفاده ميکنيم که دسترسي فيزيکي به سيستم نداريم (مثلا موقعي که فقط از طريق اينترنت و از طريق ip سيستم رو چک ميکنيم) اما در مورد Host based ابزار رو رو کامپيوتري که ميخوايم تست کنيم، نصب کرده و کار اسکن رو انجام ميديم. بحث ما فعلا در مورد Network based scanner هاست.
نکته مهم راجع به اسکنرها اين است که حتي اگر يه اسکنر نتونه واسه يه کامپيوتر vul پيدا کنه، دليل بر امن بودن اون کامپيوتر نيست. دليلش هم کاملا واضحه چون هر vul scanner ي از يک database استفاده ميکنه که الزاما همه vul ها رو پوشش نميده. حتي بهترين اسکنرها مثل Nessus هم هيچوقت جاي يه هکر واقعي رو نميگيره. از قديم گفتن کامپيوتر رو هکر هک ميکنه نه يه کامپيوتر ديگه!
يه نکته ديگه که بايد حتما بگم اينه که خيلي از vul scanner ها اين امکان رو دارند که بشه datebase اونا رو از طريق اينترنت update کرد تا vul هاي جديد رو هم شامل بشوند.
- vul scanner هاي تجاري (پولي)
اين نرمافزارها رو بايد خريداري کنيد (يا اينکه crack اش رو پيدا کنيد). پولي بودن يک نرمافزار به معني اين نيست که الزاما اين vul scanner عملکرد بهتري نسبت به انواع مجاني داشته باشه. ضمنا اکثر محصولات تجاري اجازه استفاده trial رو براي يک ماه به شما ميدن.
۱- ISS :
از سايت iss.net است. يکي از بهترين اسکنرهاست. براي ويندوز و يونيکس (لينوکس) قابل استفاده است.
۲- CyberCop :
يکي از مشهورترين اسکنرهاست. براي ويندوز و لينوکس
۳- NetRecon :
از شرکت Symantec است (Axent). براي سيتمعامل ويندوز
۴- NetSonar :
از cisco
۵- Retina :
از مشهورترين اسکنرهاي تجاري است. از سايت eeye.com - براي ويندوز
۶- N-STEALTH :
خودش و سايتش يه کم تابلو خالي ميبندن ولي در کل اسکنر خوبيه.
۷- و…
- vul scanner هاي مجاني
۱- Nessus :
بهترين اسکنر تمام اعصار! چي بگم که واقعا تک تکه. براي سيستمعاملهاي يونيکس (لينوکس) استفاده ميشه. براي ويندوز فقط کلاينتش هست (بعدا توضيح ميدم که يعني چي)
۲- SAINT و SARA :
هر دو نسل جديد SATAN هستند و هر دو براي يونيکس (لينوکس) هستند ولي هيچيک در برابر Nessus عددي نيستند!
۳- LanGuard :
براي ويندوز - در ايران خيلي مشهور شده ولي در کل اسکنر خوبي نيست
۴- VLAD :
از تيم Razor - براي يونيکس(لينوکس)
۵- و…
- False Positive چيست؟
False Positive يعني مواردي که اسکنر تشخيص ميده که يک vul در سيستم هست در حاليکه چنين نيست. اين مورد خيلي وقتها پيش مياد و هيچ هم عجيب نيست. پس وقتي Vul Scanner يه Vul رو تشخيص ميده، زياد هم حال نکنين!
- نکته
+ CGI Scanner ابزاري است که به نوعي بهعنوان مکمل vul scanner ها استفاده ميشه که بعدا توضيح ميدم.
+ Retina را براي ويندوز و Nessus رو براي لينوکس حتما داونلود و تست کنيد. من درس بعدي احتمالا Nessus رو توضيح ميدم ولي اسکنرها اکثرا مثل همند.
** دارالولایه **