احتمالا در مورد حمله “فردی در میانه” یا MiTM شنیدید (۱). در این حمله، فردی خودش رو در مسیر رد و بدل اطلاعات قربانی قرار میده و میتونه به اطلاعات مهم دست پیدا کنه. این حمله روشهای مختلفی برای پیشگیری داره که اولین و راحت ترینش استفاده از رمزگذاریه. یعنی هرجا که میشه، باید نسخه https سایتها رو باز کرد که برای اینکار هم افزونه HTTPS everywhere گزینه خیلی خوبیه.
روشهای دیگه هم وجود داره. برای مثال فیشینگ. نمونه مشابهی از سایت بانک قربانی ساخته میشه و سعی میکنن با فریب دادنش، ترغیبش کنن که اطلاعات کاربریش رو وارد کنه، از جمله یوزرنیم و پسورد. برای جلوگیری از فیشینگ هم راههای زیادی وجود داره، از افزایش آگاهی و استفاده از HTTPS و چک کردن URL تا فعال کردن ورود دو مرحلهای و یا استفاده از پسوردهای یکبار مصرف و یا پسورد سختافزاری.
آدم بدهای داستان هیچوقت بیکار نمیشینن و دنبال استفاده از روشهای جایگزین میرن تا بدونن به مقصودشون برسن. برای فرار از روشهای پیشگیری MiTM و فیشینگ و به دست آوردن اطلاعات، یک قدم پیشتر گذاشتن و از بدافزارهای درون سیستم قربانی استفاده میکنند. فرض کنید وارد سایت بانکمون میشیم. آدرس هم درسته و بعد از وارد کردن نام کاربری و پسورد، یک صفحه باز میشه با همون آدرس بانک که از ما اطلاعات دیگه مثل شماره تلفن و کد ملی آدرس و غیره رو میپرسه. ما هم شک نمیکنیم. خب بانکه دیگه و این اطلاعات رو احتمالا لازم داره. اما این اتفاقات میتونه به راحتی ناشی از یک بدافزار باشه که کنترل مرورگر ما رو به دست گرفته و صفحههای تقلبی با آدرسهای واقعی نشونمون میده. در واقع ما قربانیِ حمله فردی در میانه شدیم. آمار نشون میده که حمله فردی در مرورگر تبدیل به خطرناکترین حمله این روزها علیه سیستمهای بانکی شده.
فردی در مرورگر
یکی از خطرناکترین و دقیقترین حملههاست که کشفش بسیار سخته. استفاده از مرورگر قربانی برای دزدین اطلاعات، این حمله رو در رده آسونترین روشها برای جمعآوری اطلاعات بسیار زیاد قرار داده. این حمله با یک آلودگی به بدافزار شروع میشه. بدافزار در سیستم آلوده، خودش رو به مرورگر تزریق میکنه و منتظر زمانی میشینه که قربانی وارد یک سایت مهم بشه. اونجاست که بدافزار کنترل مرورگر رو بهدست میگیره و اطلاعاتی که لازم داره رو جمع آوری میکنه. مهم نیست که قربانی چقدر دقت بکنه به آدرسی که وارد کرده، در این مرحله خود مرورگره که قابل اعتماد نیست و داره اطلاعات غلط نشونمون میده.
روش این حمله رو اولین بار آگوستو پائس د باروس در یک ارائه درباره روند تغییرات درهایپشتی در سال ۲۰۰۵ نشون داد و فیلیپ گورینگ، سال ۲۰۰۷ از اصطلاح “مردی در مرورگر” که من اینجا به فردی در مرورگر تغییرش دادم، استفاده کرد.
بدافزارهای MiTB از امکاناتی مثل Helper Objects مرورگر (در اینترنت اکسپلورر)، افزونهها، پلاگینها، کدهای جاوا اسکریپت (مثل user scripts) و امثال اونها سواستفاده میکنند. در ادامه میتونید لیستی از بدافزارهایی که از حمله فردی در مرورگر استفاده میکنند و مرورگرها و سیستمعاملهای هدفشون رو ببینید.
چگونه آلوده میشویم
مثل همه بدافزارهای دیگه، با رفتن به یک سایت آلوده، نصب یک نرمافزار آلوده، باز کردن یک اتچمنت آلوده و امثال اون، این گونه بدافزارها وارد سیستم قربانی میشن. وقتی سیستم آلوده شد، بدافزار وارد مرحله کمون میشه. یعنی منتظر زمانی میمونه که قربانی وارد سایت مهمی بشه تا وارد عمل بشه. این سایت مهم میتونه ایمیل، اکانتهای شبکههای اجتماعی، سایت بانک، سایت کیف پول بیتکوین و امثال اون باشه. معمولا برای نمونههای بالا بدافزارهای مخصوص به خودشون وجود داره. مثلا بدافزارهای معروفی مثل زئوس و اسپایآی، سایتهای بانکی رو هدف میگیرن و Gameover تمرکزش رو روی کیف پولهای بیتکوین گذاشته.
بدافزار Carberp با هدف قراردادن بانکهای معروف آمریکا و کانادا مثل WellsFargo، Citi، JP Morgan و غیره، در بازار سیاه قیمتی حدود ۴۰ هزار دلار داشت که از سال ۲۰۱۳ کدش با قیمت ۵ هزار دلار در دسترس قرار گرفت. این بدافزار با استفاده از ضعفهای امنیتی سیستمعامل ویندوز، کامپیوتر قربانی رو آلوده میکنه و میتونه مدتها بدون تشخیص داده شدن به وسیله آنتی ویروس به عملکرد خودش ادامه بده.
آمارها نشون میده که بخش زیادی از کاربرها (حدود ۷۳ درصد) قابلیت تشخیص بین پیامهای خطای POP UP واقعی و تقلبی رو ندارند و نمیتونن متوجه آلوده بودن احتمالی یک فایل بشن.
وقتی که بدافزار کنترل مرورگر رو به دست گرفت، اتفاقات مختلفی ممکنه بیافته. ممکنه که توی فرمها، ورودیهای تقلبی تزریق بشه و فیلدهای مختلف برای جمعآوری اطلاعات قرار بده و یا فقط مثل یک keylogger ساده عمل کنه و اطلاعات وارد شده رو ضبط کنه. بدافزار کارهای پیچیدهتری هم میتونه انجام بده. میتونه عددهای موجودی حسابتون رو دستکاری بکنه تا متوجه نشید که پول از حسابتون کم شده و یا اطلاعات انتقال پول از حسابتون به حساب دزدها رو مخفی کنه تا نبینیدشون.
بدافزار میتونه اطلاعات ارسالی فرم انتقال پول رو پیش از ارسال به سرور تغیر بده. مثلا من میخوام یک میلیون تومن رو به حساب طلبکارم واریز کنم اما زمانی که دکمه ارسال اطلاعات رو میزنم، مرورگر اطلاعات رو تغییر میده و بانک ۱۰ میلیون تومن رو به حساب آقا یا خانم دزد واریز میکنه. پیام نهایی هم که از سمت بانک میاد، دوباره تغییر داده میشه و توی صفحه مینویسه که خیالت راحت باشه که فقط یک میلیون تومن رو به حساب طلبکار ریختی.
خصوصیات این حمله باعث میشه دزدها مجبور نباشند تا اطلاعات دقیقی از قربانی داشته باشند و یا حتما دسترسی به شبکهاش داشته باشند و توی منطقه جغرافیایی خاصی باشن. این امر سبب شده که فردی در مرورگر در سالهای اخیر بین متقلبین و دزدها، طرفداران زیادی پیدا بکنه.
حتی ورود دو مرحلهای و سه مرحلهای هم نمیتونه جلوی خیلی از این حملات رو بگیره. بعضی از بدافزارهای پیشرفته، قربانی رو فریب داده و اون رو به نصب نسخه موبایل هم ترغیب میکنن. نسخه موبایل این بدافزارها با کنترل sms های وارده، جلوی اطلاع رسانی تغییرات حساب از طریق بانک رو میگیرن.
پیشگیری و تشخیص
با توجه به اینکه شروع این حمله با آلوده شدن به بدافزاره، روشهای پیشگیری از بدافزار اینجا هم صادقه. روشهای مثل بهروز نگهداشتن سیستمعامل، مرورگر. نصب و بهروز نگهداشتن ضدبدافزار.
درصورتیکه مشاهده کردید اطلاعات اضافی داره در فرمی ازتون خواسته میشه که معمولا درخواست نمیشده و یا پشت سر هم ازتون پسورد پرسیده میشه باید شک کنید که احتمالا جایی مشکل خاصی وجود داره.
استفاده از افزونههایی مثل HTTPS Everywhere باعث میشه که هرجایی که امکانش باشه از رمزگذاری استفاده کنید، هرچند باید به خاطر داشته باشیم که این مساله بعد از آلوده شدن به بدافزار کمک چندانی به ما نمیکنه.
معمولا پیشنهاد میشه برای کارهای خیلی مهم از یک سیستم جدا استفاده کنیم. با توجه به میزان آلودگی در سیستمعامل ویندوز، میتونیم از یک Live CD لینوکس استفاده کنیم برای انجام کارهای بانکی و کارهای دیگهای که امنیت بالاتری لازم دارند. به خاطر داشته باشیم که در سیستم جدید، که میتونه روی یک ماشین مجازی هم نصب شده باشه، نباید به هیچ عنوان کارهای روزمره رو انجام بدیم، کارهایی مثل مرور سایتهای متفرقه، رفتن به شبکههای اجتماعی و غیره. مهاجرت به لینوکس و مک باری کارهای مهم، امنیت کامل رو به همراه نداره اما به میزان قابل توجهی، ریسک رو کم میکنه.
در صورتیکه ترجیحتون استفاده از ویندوزه، برای کارهای مهم از نرمافزارهای پورتابل استفاده کنید. پیدا کردن محل قرارگیری مرورگر پورتابل و آلوده کردنش، کار بدافزار رو سختتر میکنه. در صورت استفاده از فایرفاکس پورتابل، میتونید با رفتن به بخش تنظیمات شبکه، گزینه not use a proxy رو انتخاب کنید و پراکسی بدافزارهای احتمالی روی ویندوز رو دور بزنید.
اگر متوجه مساله مشکوکی در حسابهای کاربری و بانکیتون شدید، با استفاده از تلفن با پشتیبانی اون شرکت تماس گرفته و مشکل رو مطرح کنید و یا یک کامپیوتر دیگه وارد حسابتون بشید و آحرین تغییرات رو چک کنید. در صورت آلوده شدن به بدافزار، کار زیادی ازتون بر نمیاد و در اولین فرصت باید با کارشناسان امنیتی تماس بگیرید برای پاک سازی سیستم و همچنین به بانکتون (و ادمین سایت و غیره) اطلاع بدید تا جلوی آسیب بیشتر گرفته بشه.
با توجه به محدودیت کاربر در تشخیص آلودگی، نقش سریس دهنده پر رنگتر میشه. برای مثال بانکها باید با روشهای تحلیل عملکرد کاربر و یا تحلیل انتقال پولها، پترنهای مشکوک رو تشخیص بدهند. آمارها نشون میده که در سال ۲۰۰۹، میزان موفقیت آنتیویروسها در برابر بدافزار زئوس فقط ۲۳ درصد بوده و سالهای بعد نیز موفقیت چشمگیری مشاهده نشده.
استفاده از روشهای تعیین هویت خارج از سیستم، مثل استفاده از sms و تماس تلفنی و یا اپلیکیشنهای مخصوص که اطلاعات رو به صورت تصویرهای رمزگذاری شده منتقل میکنند. هرچند بدافزارها در پی غلبه بر این راههای پیشگیری هم رفتهاند. نکته بد این روشها خسته کننده بودنشون برای کاربره.
جدول زیر شون دهنده کارهاییه که میتونیم انجام بدیم و میزان اثری که برای پیشگیری از حمله فردی در مرورگر میتونن داشته باشن.
پانوشت:
۱- معمولا با “مردی در میانه” میشناسنش اما من “فرد” رو ترجیح میدم
سلام.
خیلی مفید و جامع بود.
متشکرم.
اولین بار بود که در موردش میشنیدم. واقعا مفید بود. و البته خوش به حال لینوکسیها! 🙂
ممنون بابت مقالهی عالیتون
بار اول بود میشنیدم. البته من در این زمینه تخصصی ندارم اما موضوع امنیت برام جالبه و علاقه دارم. من شخصا از لینوکس استفاده میکنم (آرچ) اما بعضی از ملاحظات امنیتی من از دید دوستام وسواس هست! بنابراین یه فشار اجتماعی رو حداقل خود من در محیط اطرافم حس میکنم که یک چنین ملحظات هنوز جا نیافتاده. این رو واسه این گفتم که حتی تصور اینکه برای کارهای بانکی سیستمعامل امن و جدا رو استفاده کنم کمی سخت هست. دوست دارم نظرتون رو راجع به این سه راهکار هم بدونم:
۱. استفاده از حسابهای بانکی متعدد آفلاین و آنلاین و سعی در مینمیال نگهداشتن موجودی حساب آنلاین
۲. استفاده از Password Mangerها که قابلیت پر کردن فرمها رو دارن (دیگه مشکل کیلاگر و اینجکشن نیست) هرچند شخصا تجربهی خوبی ازین بابت با سایت بانکهای ایران نداشتم چون فرمها به خوبی توسط نرمافزار شناسائی نمیشه
۳. علاوه بر HTTPSEVeryWhere افزونه NoScript هم خیلی عالی هست (هرچند شخصا عادت کردم اجازهی فعالسازی رو زیاد میدم) نمیدونم تا چه حد موثر باشه بخصوص وقتی عادت کردم که اجازه رو نسبتا راحت به سایتهای مختلف میدم.
راهحل جهارم رو تا بحال استفاده نکردم ولی این به نظرم اومد:
۴. استفاده از یک مرورگر جداگونه (ترجیحا با موتور متفاوت) جهت انجام امور بانکی با حداکثر ملاحظات امنیتی
ممنون. لطف دارید.
در مورد راه کارها به ترتیب نظرم رو میگم:
۱. با اینکار میزان آسیب رو کنترل میکنیم و معمولا پیشنهاد میشه اما مثل همه روشهای دیگه باید مردم باهاش راحت باشن.
۲. پسورد منیجرها چند خوبی همزمان دارند. هم امکان ساخت پسوردهای متعدد و سخت رو میدن و محدودیت حافظه انسانی رو ندارن و هم کمی از بابت فیشینگ خیالمون رو راحت میکنه اما در مورد حمله فردی در مرورگر کمکی نمیکنه
۳. افزونه no scripts رو زمانی استفاده میکردم و اما وابستگی سایتها به اسکریپتها اونقدر زیاد شده که این افزونه روی تجربه کاربری اثر منفی میذاره و همونطور که گفتی نهایتا منجر میشه به اینکه آدم به همه سایتها دسترسی اجرا بده. در واقع نهایتا بود و نبودش فرقی نداره. البته در مورد شرایط حساس و یا به کسایی که مرورگر مخصوص کار بانکی دارند، قویا توصیهاش میکنم. برای استفاده روزانه، ghostry انتخاب بدی نیست.
۴. مرورگر جداگانه برای کارهای مختلف، مخصوصا اگر مرورگرهای دوم و سوم و … پورتابل باشن، خیلی مفیده و باعث میشه درصد زیادی از ریسک اشتباه و آسیب، کم بشه