دیروز تو شرکت موقع باز کردن جیمیل به خطای معتبر نبودن certificate بر خوردم، چند نفر دیگه از بچه های شرکت هم همین مشکل رو داشتن. اول فکر کردم یکی تو خود شرکت داره اذیت می کنه و ترافیک رو man in the middle می کنه ولی بعد فهمیدم که اینطور نیست. حتی فکرم سمت مخابرات هم رفت چون شنیده بودم که دستگاهاشو خریدن، اما مشکل از اونجا هم نبود چون همه ISP ها این مشکل رو نداشتن و فقط و فقط یک ISP این مشکل رو داشت اونم داتک بود. یعنی واقعا اصلا فکرشو نمی کردم خود ISP که ظاهرا باید امین کاربراش باشه بخواد این کارو انجام بده و بخواد باهاش یوزر و پسوورد کاربراش رو بدزده! بذارین یه کم بیشتر توضیج بدم. به این کاری که داتک انجام داد می گن: SSL Man-In-The-Middle Attack ( Monkey-In-The_Middle ) .
حمله Man-In-The-Middle چیست؟
به زبون ساده man in the middle یه نوع حمله اس که توی اون نفوذگر بین قربانی ها قرار می گیره و خودش رو جای طرف مقابل جا می زنه و پیغام ها رو بینشون رد و بدل می کنه. البته در عین حال که خودشو جای طرف مقابل جا می زنه باید اون چیزهایی رو هم که دو طرف تقاضا کردن بهشون بده تا بتونه حمله اشو با موفقیت انجام بده!
فرض کنید شما می خواید به دوستتون یه پیغام بفرستین و یکی هم به اسم نفوذگر بین شما وجود داره که شما از وجودش خبر ندارین. برای اینکه محرمانگی حفظ بشه و کسی نتونه این وسط این پیغام رو بخونه از یه جفت کلید عمومی و خصوصی استفاده می کنین. به این صورت که اول از دوستتون کلید عمومیش رو تقاضا می کنین. نفوذگر این تقاضا رو عینا به دوستتون منتقل می کنه. ولی از اون طرف وقتی کلید عمومی دوستتون را ازش گرفت عوضش کلید عمومی خودش رو به شما می ده و از این به بعد شما هر پیغامی رو رمز کنید در واقع با کلید عمومی نفوذگر رمز می شه و بنابراین می تونه تمام پیغام ها رو باز کنه و بخونه و همینطور می تونه اون رو تغییر بده و با کلید عمومی دوستتون رمزش کنه و براش بفرسته.
همونطور که می دونین ssl یکی از پروتکلهای رمزنگاریه که اونم برای به رمز درآوردن اطلاعاتی که از طربق اون ارسال می شن از یه کلید استفاده می کنه. حالا اگه حداقل یکی از این شرایط برقرار نشه مرورگر شما خطای مربوط به نادرست بودن certificate رو به شما می ده.
۱- ssl certificate توسط یه جای معتبر مثل verisign ساین شده باشده.
۲- موقع ساختن هر certificate یه تاریخ انقضا بهش داده می شه که اون تاریخ نباید منقضی شده باشه.
۳- اسم عمومی certificate یا همون CN با نام دامنه باید مطابقت داشته باشه.
بنابراین وقتی که مرورگر خطای مربوط به certificate رو می ده باید یه جورایی این وسط شک کرد که ممکنه یه نفوذگر این وسط وجود داشته باشه. البته همیشه هم اینطور نیست چون خیلی جاها از جمله خود من معمولا certificate رو به صورت self-signed می سازیم و حاضر نیستیم یه پولی واسه ساین کردنش بدیم بنابراین همیشه این خطا به این معنی نیست که واقعا کسی این وسط باشه. ولی خوب وقتی این خطا رو برای جیمیل یا آمازون یا هر سایت بزرگ و معتبر دیگه ای می بینید شک نکنید که یکی این وسط هست! کاری که دیروز داتک انجام داد این بود که به جز پسورد جیمیل و یاهو پسورد حساب بانکی و هر سایت دیگه ای که از ssl استفاده می کرد دزدید و هیچ کسی هم هیچ کاری نکرد! واقعا نمی فهمم اینا به چه حقی به خودشون اجازه می دن اینطوری به حریم خصوصی مردم تجاوز کنن؟!!!
توصیه من به شما اینه که اولا همیشه برای وبگردی از چیز پی ان یا ساکس ------ استفاده کنید که تمام ارتباطاتتون به صورت رمز شده باشه. ثانیا وقتی به خطای certificate برمی خورین حتما به details اون دقت کنین، مثلا از همون بخش details به subject نگاه کنین که واقعا بفهمین مال کیه. هر چند که اونم خیلی قابل اطمینان نیست چون خیلی راحت می شه یه certificate با مشخصات مورد نظر ساخت ولی خوب می تونین تو این موارد details مربوط به certificate چند تا سایت رو نگاه کنین که احیانا یکی نباشد. ثالثا اگه isp تون داتک هست حتما یه شکایت نامه تنظیم کنید و برید ازش شکایت کنید تا دیگه به خودش اجازه نده که از این کارا بکنه!
پی نوشت: برای تست حملات MItM می تونین از sslstrip + arpspoof یا webmitm+ssldump+arpspoof رو شبکه داخلی خودتون استفاده کنین تا ببینین چقدر راحت با این روش می شه یوزر و پسوورد ها رو دزدید!
منبع:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید