- 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 از يکي از آدرسهاي زير استفاده کنيد:
که به جاي 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 برخوردم. حالا اونو از کجا بخونم؟ از اينجا :
که به جاي xxxx بايد يک عدد بنويسيد (همان عدد مربوز به BID ) مثلا به جاي xxxx بنويسيد: 1806
اگه بخوام بهترين محل يادگيري راجع به vul ها رو ذکر کنم، جايي بهتر از
www.securityfocus.com واسه اين کار وجود نداره. دقت کنيد وقتي که صفحه مربوط به يک BID خاص رو در اين سايت ميبينيد، يک سري لينک به اسمهاي info و discussion و exploit و solution را هم بخونين که جنبههاي مختلف اون vul خاص است. مخصوصا قسمت exploit که جايي است که جوجههکرها ميتونن با اون حسابي حال کنن! به عبارت ديگه جاييه که واسه اون vul خاص exploit داونلود کنيد. خيلي از ابزارهاي هک که تبليغ ميشن، در واقع با تغييرات کمي از همين exploit ها بدست ميآن!!
۳- XF :
XF استاندارد سايت iss.net براي vul هاست. XF به صورت يک نام (نه عدد) نامگذاري ميشوند و اونو بايد در صفحه زبر بخونين:
که وقتي در اين صفحه search کنيد، يک سري صفحات static بدست مياد که بايد بخونين.
۴- CA يا CERT:
سايت cert.org براي vul ها از اسم CA استفاده ميکند، مثل CA-2002-19 براي CA ها صفحه زير رو ببينيد:
بهجاي xxxxxxxxx مثلا مينويسيم: CA-2002-19
ضمنا دقت کنيد که وقتي مطالب مربوط به يک vul رو از سايت cert ميخونيد، ملاحظه ميکنيد که لينکهايي به صورت VU#xxxxx در آن هست که به جاي xxxx يک عدد نوشته شده مثلا 369347 که اين VU# رو ميتونيد از اينجا بخونيد:
۵- و …
+ نويسنده: آراز صمدی
+ تاريخ ارائه: 1382/02/03
+ نقل قول از من