امنیت

فرار از زندان، فصل ششم، مهندسی اجتماعی

شما هم ۵ سال درگیر سریال فرار از زندان بودید؟ یک بی گناه باید با کمک برادر باهوش و خلافکارهای زندان، با کل پلیس‌های فاسد و سالم و خلاف‌کارهای دیگه در بیافته برای آزادی؟ شاید راه ساده‌تری هم باشه: مهندسی اجتماعی

prison-break-streaming1

نیل مور، زندانی انگلیسی، با استفاده از یک گوشی تلفن که قاچاقی به دستش رسیده بود، ایمیل تقلبی به زندان فرستاد و خودش رو به عنوان کارمند دادگاه جا زد و به زندان اعلام کرد که به خاطر بخشش باید آزاد بشه.

مسئولان زندان ۳ روز بعد و زمانی که وکیل مور برای دیدار با اون به زندان مراجعه کرد، فهمیدند که چه اتفاقی افتاده. او ۳ روز بعد خودش رو تسلیم پلیس کرد. نیل مور به خاطر کلاهبرداری ۱.۸ میلیون پوندی با استفاده از تکنیک‌های مهندس اجتماعی، محکوم شده بود.

مور ابتدا یک دامنه که بسیار شبیه دامنه مورد استفاده دادگاه منطقه بود رو ثبت کرد. سپس به مسئولین زندان با این دامنه ایمیل زده و دستور آزادی خودش رو فرستاد.

m4_small1

دادگاه بعدا متوجه شد که یک دامنه تقلبی با اسم و آدرس دادگاه ثبت شده است. مدعی‌العموم در مورد این جریان گفته: “ذهن نیل مور سرشار از هوش جنایی است. این پرونده یکی از ابتکارها، خلاقیت‌ها و گمراهی‌های بزهکارانه فوق‌العاده است.”

Standard
امنیت

ضعف امنیتی نرم‌افزار پیام‌رسان تلگرام

نرم‌افزار تلگرام در یکی از پر سر و صداترین کارهای اخیر، مدعی شد امنیت این اپلیکیشن پیام‌رسان به حدی بالاست که اگر کسی آدرس ایمیل رمزگذاری شده در این اپلیکیشن رو کشف کنه، برنده ۲۰۰ هزار دلار می‌شه. این ادعا ضمن اینکه چالش جالبی برای کارشناسای امنیتی بود، کاربرها رو به خطا می‌انداخت چرا که رمز کردن یک متن درون اپلیکیشن یه چیزه و پیاده‌سازی رمزگذاری در چت، یه چیز دیگه.

در ادامه بررسی کارشناسان امنیتی زیپریوم رو میارم.

بعد از اعلام این مناقصه، تصمیم گرفتم بررسی دقیق‌تری روی اپلیکیشن داشته باشم. خواستم ببینم آیا متن پیام‌های رمزگذاری شده، قابل خوندن است یا نه. این تست روی اندروید نسخه ۴.۴.۲ انجام شده است.

تلگرام ادعا می‌کنه اپلیکیشنی با تمرکز روی امنیته و کاربرانش می‌تونن چت‌های رمزگذاری شده شخصی و کاری داشته‌باشند. کارشناسان زیپریوم ثابت کردند که این ادعا غلط بوده و ۵۰ میلیون کاربر تلگرام در خطر هستند.

مسابقه رمزگذاری قبلی تلگرام، شکستن پروتکل رو فقط در زمان رمزگذاری و ارسال، به رسمیت می‌شناخت. به دو دلیل این مورد ایده خوبی نیست:

۱. در دنیای واقعی، هکرها کاری به قوانین ندارند.

۲. فرض گرفته بود که هکرها در میانه راه سعی در شکستن رمزگذاری خواهند داشت در حالیکه می‌شه در سایر پروتکل‌ها ضعف‌هایی یافت که سود بیشتری داشته باشه (برای مثال ضعف امنیتی GoToFail برای دور زدن رمزگذاری SSL در iOS)

در مسابقه رمزگذاری جدید، تلگرام اعلام کرده: “… این بار شرکت‌کننده‌ها نه تنها می‌توانند ترافیک را بررسی کنند، بلکه می‌توانند خود را جای سرور تلگرام جا بزنند و از حمله‌های فعال استفاده کنند، که توانایی‌های آنها را افزایش می‌دهد.”

بنابراین من سعی نمی‌کنم رمزگذاری رو بشکنم بلکه سعی می‌کنم اون رو با یک حمله فعال در گوشی، دور بزنم. بهترین راه برای انجام این حمله، داشتن درک درستی از آناتومی حمله‌های سایبری و معماری ابزارهای همراهه. زمان زیادی طول نکشید تا تلگرام رو نصب کردم، متن پیام‌های عادی و رمزگذاری شده‌ای که ارسال کردم رو پیدا کردم و همچنین پایگاه داده اونها رو.

طبق گفته سایت تلگرام: “چت امن، یک پیام رمز شده نفر به نفر است که فقط شرکت‌کننده‌ها در این چت، کلید رمزگشایی را دارند. بنابراین هیچ شخص سومی، بدون دسترسی به یکی از دستگاه‌ها، به متن بدون رمز پیام‌ها دسترسی ندارد.” این گفته دو سوال به وجود میاره: اگر کاربر به دستگاه دسترسی نداشته باشه و یا یک هکر دستگاه رو هک کرده باشه، بازیابی متن پیام‌های رمزگذاری شده توسط تلگرام چقدر سخته؟ آیا متن پیام‌ها رو دستگاه رمزگذاری می‌شه و چگونه؟

راحت‌تره که یک ضعف امنیتی در دستگاه پیدا کنیم و با روش‌هایی مثل URL، PDF و یا MiTM و امثال اون، دستگاه رو هک کنیم. بعد دسترسی رو با استفاده از Kernel Exploit بالا ببریم و کنترل دستگاه رو به دست بگیریم.

اگر در بحث امنیت دستگاه‌های موبایل تازه‌کارید، مثال‌های زیر بهتون نشون می‌ده که یه نفر چطور می‌تونه از راه دور به یک دستگاه حمله کنه. این حمله‌ها برای سازمان‌های دولتی مانند NSA که منابع، پول و زمان کافی رو دراختیار دارند، بسیار راحته.

۱. ضعف امنیتی سمت کاربر: سواستفاده از کروم (https://docs.google.com/a/zimperium.com/document/d/1tHElG04AJR5OR2Ex-m_Jsmc8S5fAbRB3s4RmTG_PFnw/edit)

۲. سواستفاده از کرنل (https://www.towelroot.com/)

در ابتدا با استفاده از اپلیکیشن اندروید تلگرام، یک پیام رمزگذاری شده ایجاد کردم تا ببینم آیا جایی به صورت رمز نشده ذخیره می‌شه یا نه. فرض کردم که پیام‌ها در حافظه و یا حداقل در پایگاه داده داخلی، رمز شده‌اند. این فرض برای یک اپلیکیشن با نگرش امنیتی، چیز زیادی نیست.

secure-chat-1

اگر به عنوان حمله‌کننده از تصویر عکس بگیرید، به هر دو نفر در چت، اعلام می‌شه. بنابراین می‌شه فهمید که امنیت و حفظ حریم خصوصی برای تلگرام خیلی مهمه. با اینحال، فرض اینکه حمله کننده به جای کنترل کل دستگاه، از تصویر عکس می‌گیره، کمی خوش خیالانه است.

secure-chat-2

به تلگرام شانس دادم و اشتباهات رایج در اپلیکیشن‌هایی که اولویت امنیتی ندارند رو چک نکردم. یک حمله با استفاده از ضعف امنیتی سمت کاربر و یا یک اپلیکیشن و استفاده از Kernel Exploit رو شبیه‌سازی کردم (از CVE-2014-3153 استفاده کردم). راه‌های تمیزتری برای گرفتن پاسخ بود اما ترجیح دادم یک اثبات ایده (PoC) ارائه بدم. تلگرام امکان چت امن داره با یک قفل بالای تصویر که احساس امنیت می‌ده. از حافظه پروسس نسخه‌برداشتم و دنبال کلمه‌ای گشتم که در چت استفاده کرده بودم.

process

همونطور که می‌بینید کلمه‌های Woof، Text، Shlookido، Cookiedo، Tambal و NotSoEncryptedInMemory به صورت رمز نشده در حافظه دیده می‌شوند. هر حمله کننده‌ای که به دستگاه نفوذ کنه، بدون هیچ مشکلی، به متن پیام‌ها دسترسی خواهد داشت. پس چت امن تلگرام، به صورت متن واضح قابل خوندنه. این مساله باعث شد که به فکر بیافتم آیا راه ساده‌تری برای دسترسی به متن پیام‌ها وجود داره؟ وجود داشت.

برای تکمیل تحقیق، با استفاده از دسترسی روت که با کمک Kernel Exploit به دست آورده بودم، فایل‌های فلودر /data/data/org.telegram.messenger/ رو چک کرده و فایل Cache4.db رو در فولدر اپلیکیشن تلگرام پیدا کردم.

sqlite

فرض کردم که پیشوند enc در نام جدول‌های enc_chats و enc_tasks_v2 خلاصه encrypted (رمز شده) باشه پس فایل رو کش رفتم و بررسی کردم. فایل شامل کلیه چت‌های امن به صورت متن واضح بود.

unencrypt

یکی از امکانات جالب تلگرام، توانایی حذف متن پیام‌هاست. تلاش کردم که پیام‌های حذف شده توسط کاربر رو بازیابی کنم. برای اینکار حافظه و فایل cache4.db رو بررسی کردم.

از بخش تنظیمات، انتخاب کردم که پیام‌ها بعد از ۵ ثانیه حذف بشن. انتظار داشتم این اتفاق بیافته اما پیام‌ها حذف نشدن. به نظر می‌رسه که یک باگ باشه و نه مشکلی امنیتی. با استفاده از گزینه Delete پیام رو حذف کردم.

با بررسی فایل cache4.db اثری از پیام‌های حذف شده ندیدم. معمولا پیام‌های حذف شده، جذابیت بیشتری برای حمله‌کننده دارند. سپس حافظه رو بررسی کردم و متاسفانه پیام‌ها پس از حذف همچنان در حافظه قابل مشاهده بودند.

خط زمانی:
این مساله در تاریخ ۲۷ دی‌ماه ۱۳۹۳ کشف و روز بعد به تیم امنیتی تلگرام اطلاع‌رسانی شد.
طی ماه بعد و در ۳ تماس بعدی، پاسخی از تیم امنیتی تلگرام دریافت نشد.
در تاریخ ۳ اسفند ۱۳۹۳ این ضعف امنیتی، اعلام عمومی شد.

نتیجه:
تلگرام با هدف امکان حفظ حریم خصوصی و بدون هزینه برای کاربران فعالیت می‌کنه. توجه این اپلیکیشن به امنیت اطلاعات در حال انتقال و چشم‌پوشی از امنیت اطلاعات نگهداری شده در دستگاه، موجب به وجود آمدن این مشکل بوده است. نکته قابل تاسف نیز عدم پاسخگویی تیم امنیتی تلگرام به تماس‌های اعلام این ضعف بوده است.
در حقیقت، امنیت مورد ادعای تلگرام چیز بیشتری از اپلیکیشن‌ها و صفحه‌هایی که از SSL استفاده می‌کنند نیست. اگر از تلگرام برای افزایش امنیت و حفظ حریم خصوصی استفاده می‌کنید باید بدونید که در حال حاضر، هکرهای کار بلد می‌تونن پیام‌های شما رو بخونن و یا اگر توسط FBI دستگیر بشید، متن پیام‌های حذف شده شما قابل بازیابیه. پیشنهاد می‌کنم که از اپلیکیشن‌های امنیتی برای جلوگیری از حمله به دستگاه خود استفاده کنید.
برای امنیت بیشتر، تلگرام می‌بایست متن پیام‌ها در حافظه و فایل cache4.db را نیز رمزگذاری کند.

منبع:
http://blog.zimperium.com/telegram-hack/

Standard
امنیت

حمله فردی در مرورگر

احتمالا در مورد حمله “فردی در میانه” یا MiTM شنیدید (۱). در این حمله، فردی خودش رو در مسیر رد و بدل اطلاعات قربانی قرار می‌ده و می‌تونه به اطلاعات مهم دست پیدا کنه. این حمله روش‌های مختلفی برای پیشگیری داره که اولین و راحت ترینش استفاده از رمزگذاریه. یعنی هرجا که می‌شه، باید نسخه https سایت‌ها رو باز کرد که برای اینکار هم افزونه HTTPS everywhere گزینه خیلی خوبیه.

mitm-flow_0

روش‌های دیگه هم وجود داره. برای مثال فیشینگ. نمونه مشابهی از سایت بانک قربانی ساخته می‌شه و سعی می‌کنن با فریب دادنش، ترغیبش کنن که اطلاعات کاربریش رو وارد کنه، از جمله یوزرنیم و پسورد. برای جلوگیری از فیشینگ هم راه‌های زیادی وجود داره، از افزایش آگاهی و استفاده از HTTPS و چک کردن URL تا فعال کردن ورود دو مرحله‌ای و یا استفاده از پسوردهای یکبار مصرف و یا پسورد سخت‌افزاری.

آدم بدهای داستان هیچ‌وقت بیکار نمی‌شینن و دنبال استفاده از روش‌های جایگزین می‌رن تا بدونن به مقصودشون برسن. برای فرار از روش‌های پیشگیری MiTM و فیشینگ و به دست آوردن اطلاعات، یک قدم پیشتر گذاشتن و از بدافزارهای درون سیستم قربانی استفاده می‌کنند. فرض کنید وارد سایت بانکمون می‌شیم. آدرس هم درسته و بعد از وارد کردن نام کاربری و پسورد، یک صفحه باز می‌شه با همون آدرس بانک که از ما اطلاعات دیگه مثل شماره تلفن و کد ملی  آدرس و غیره رو می‌پرسه. ما هم شک نمی‌کنیم. خب بانکه دیگه و این اطلاعات رو احتمالا لازم داره. اما این اتفاقات می‌تونه به راحتی ناشی از یک بدافزار باشه که کنترل مرورگر ما رو به دست گرفته و صفحه‌های تقلبی با آدرس‌های واقعی نشونمون می‌ده. در واقع ما قربانیِ حمله فردی در میانه شدیم. آمار نشون می‌ده که حمله فردی در مرورگر تبدیل به خطرناک‌ترین حمله این روزها علیه سیستم‌های بانکی شده.

Man-in-the-browser_header

فردی در مرورگر

یکی از خطرناک‌ترین و دقیقترین حمله‌هاست که کشفش بسیار سخته. استفاده از مرورگر قربانی برای دزدین اطلاعات، این حمله رو در رده آسون‌ترین روش‌ها برای جمع‌آوری اطلاعات بسیار زیاد قرار داده. این حمله با یک آلودگی به بدافزار شروع می‌شه. بدافزار در سیستم آلوده، خودش رو به مرورگر تزریق می‌کنه و منتظر زمانی می‌شینه که قربانی وارد یک سایت مهم بشه. اونجاست که بدافزار کنترل مرورگر رو به‌دست می‌گیره و اطلاعاتی که لازم داره رو جمع آوری می‌کنه. مهم نیست که قربانی چقدر دقت بکنه به آدرسی که وارد کرده، در این مرحله خود مرورگره که قابل اعتماد نیست و داره اطلاعات غلط نشونمون می‌ده.

روش این حمله رو اولین بار آگوستو پائس د باروس در یک ارائه درباره روند تغییرات درهای‌پشتی در سال ۲۰۰۵ نشون داد و فیلیپ گورینگ، سال ۲۰۰۷ از اصطلاح “مردی در مرورگر” که من اینجا به فردی در مرورگر تغییرش دادم، استفاده کرد.

بدافزارهای MiTB از امکاناتی مثل Helper Objects مرورگر (در اینترنت اکسپلورر)، افزونه‌ها، پلاگین‌ها، کدهای جاوا اسکریپت (مثل user scripts) و امثال اونها سواستفاده می‌کنند. در ادامه می‌تونید لیستی از بدافزارهایی که از حمله فردی در مرورگر استفاده می‌کنند و مرورگرها و سیستم‌عامل‌های هدفشون رو ببینید.

list

چگونه آلوده می‌شویم

مثل همه بدافزارهای دیگه، با رفتن به یک سایت آلوده، نصب یک نرم‌افزار آلوده، باز کردن یک اتچمنت آلوده و امثال اون، این گونه بدافزارها وارد سیستم قربانی می‌شن. وقتی سیستم آلوده شد، بدافزار وارد مرحله کمون می‌شه. یعنی منتظر زمانی می‌مونه که قربانی وارد سایت مهمی بشه تا وارد عمل بشه. این سایت مهم می‌تونه ایمیل، اکانت‌های شبکه‌های اجتماعی، سایت بانک، سایت کیف پول بیت‌کوین و امثال اون باشه. معمولا برای نمونه‌های بالا بدافزارهای مخصوص به خودشون وجود داره. مثلا بدافزارهای معروفی مثل زئوس و اسپای‌آی، سایت‌های بانکی رو هدف می‌گیرن و Gameover تمرکزش رو روی کیف پول‌های بیت‌کوین گذاشته.

بدافزار Carberp با هدف قراردادن بانک‌های معروف آمریکا و کانادا مثل WellsFargo، Citi، JP Morgan و غیره، در بازار سیاه قیمتی حدود ۴۰ هزار دلار داشت که از سال ۲۰۱۳ کدش با قیمت ۵ هزار دلار در دسترس قرار گرفت. این بدافزار با استفاده از ضعف‌های امنیتی سیستم‌عامل ویندوز، کامپیوتر قربانی رو آلوده می‌کنه و می‌تونه مدت‌ها بدون تشخیص داده شدن به وسیله آنتی ویروس به عملکرد خودش ادامه بده.

آمارها نشون می‌ده که بخش زیادی از کاربرها (حدود ۷۳ درصد) قابلیت تشخیص بین پیام‌های خطای POP UP واقعی و تقلبی رو ندارند و نمی‌تونن متوجه آلوده بودن احتمالی یک فایل بشن.

وقتی که بدافزار کنترل مرورگر رو به دست گرفت، اتفاقات مختلفی ممکنه بیافته. ممکنه که توی فرم‌ها، ورودی‌های تقلبی تزریق بشه و فیلدهای مختلف برای جمع‌آوری اطلاعات قرار بده و یا فقط مثل یک keylogger ساده عمل کنه و اطلاعات وارد شده رو ضبط کنه. بدافزار کارهای پیچیده‌تری هم می‌تونه انجام بده. می‌تونه عددهای موجودی حسابتون رو دستکاری بکنه تا متوجه نشید که پول از حسابتون کم شده و یا اطلاعات انتقال پول از حسابتون به حساب دزدها رو مخفی کنه تا نبینیدشون.

بدافزار می‌تونه اطلاعات ارسالی فرم انتقال پول رو پیش از ارسال به سرور تغیر بده. مثلا من می‌خوام یک میلیون تومن رو به حساب طلبکارم واریز کنم اما زمانی که دکمه ارسال اطلاعات رو می‌زنم، مرورگر اطلاعات رو تغییر می‌ده و بانک ۱۰ میلیون تومن رو به حساب آقا یا خانم دزد واریز می‌کنه. پیام نهایی هم که از سمت بانک میاد، دوباره تغییر داده می‌شه و توی صفحه می‌نویسه که خیالت راحت باشه که فقط یک میلیون تومن رو به حساب طلبکار ریختی.

man-in-the-browser

خصوصیات این حمله باعث می‌شه دزدها مجبور نباشند تا اطلاعات دقیقی از قربانی داشته باشند و یا حتما دسترسی به شبکه‌اش داشته باشند و توی منطقه جغرافیایی خاصی باشن. این امر سبب شده که فردی در مرورگر در سال‌های اخیر بین متقلبین و دزدها، طرفداران زیادی پیدا بکنه.

حتی ورود دو مرحله‌ای و سه مرحله‌ای هم نمی‌تونه جلوی خیلی از این حملات رو بگیره. بعضی از بدافزارهای پیشرفته، قربانی رو فریب داده و اون رو به نصب نسخه موبایل هم ترغیب می‌کنن. نسخه موبایل این بدافزارها با کنترل sms های وارده، جلوی اطلاع رسانی تغییرات حساب از طریق بانک رو می‌گیرن.

پیشگیری و تشخیص

با توجه به اینکه شروع این حمله با آلوده شدن به بدافزاره، روش‌های پیشگیری از بدافزار اینجا هم صادقه. روش‌های مثل به‌روز نگه‌داشتن سیستم‌عامل، مرورگر. نصب و به‌روز نگهداشتن ضدبدافزار.

درصورتیکه مشاهده کردید اطلاعات اضافی داره در فرمی ازتون خواسته می‌شه که معمولا درخواست نمی‌شده و یا پشت سر هم ازتون پسورد پرسیده می‌شه باید شک کنید که احتمالا جایی مشکل خاصی وجود داره.

استفاده از افزونه‌هایی مثل HTTPS Everywhere باعث می‌شه که هرجایی که امکانش باشه از رمزگذاری استفاده کنید، هرچند باید به خاطر داشته باشیم که این مساله بعد از آلوده شدن به بدافزار کمک چندانی به ما نمی‌کنه.

معمولا پیشنهاد می‌شه برای کارهای خیلی مهم از یک سیستم جدا استفاده کنیم. با توجه به میزان آلودگی در سیستم‌عامل ویندوز، می‌تونیم از یک Live CD لینوکس استفاده کنیم برای انجام کارهای بانکی و کارهای دیگه‌ای که امنیت بالاتری لازم دارند. به خاطر داشته باشیم که در سیستم جدید، که می‌تونه روی یک ماشین مجازی هم نصب شده باشه، نباید به هیچ عنوان کارهای روزمره رو انجام بدیم، کارهایی مثل مرور سایت‌های متفرقه، رفتن به شبکه‌های اجتماعی و غیره. مهاجرت به لینوکس و مک باری کارهای مهم، امنیت کامل رو به همراه نداره اما به میزان قابل توجهی، ریسک رو کم می‌کنه.

در صورتیکه ترجیحتون استفاده از ویندوزه، برای کارهای مهم از نرم‌افزارهای پورتابل استفاده کنید. پیدا کردن محل قرارگیری مرورگر پورتابل و آلوده کردنش، کار بدافزار رو سخت‌تر می‌کنه. در صورت استفاده از فایرفاکس پورتابل، می‌تونید با رفتن به بخش تنظیمات شبکه، گزینه not use a proxy رو انتخاب کنید و پراکسی بدافزارهای احتمالی روی ویندوز رو دور بزنید.

اگر متوجه مساله مشکوکی در حساب‌های کاربری و بانکیتون شدید، با استفاده از تلفن با پشتیبانی اون شرکت تماس گرفته و مشکل رو مطرح کنید و یا یک کامپیوتر دیگه وارد حسابتون بشید و آحرین تغییرات رو چک کنید. در صورت آلوده شدن به بدافزار، کار زیادی ازتون بر نمیاد و در اولین فرصت باید با کارشناسان امنیتی تماس بگیرید برای پاک سازی  سیستم و همچنین به بانکتون (و ادمین سایت و غیره) اطلاع بدید تا جلوی آسیب بیشتر گرفته بشه.

با توجه به محدودیت کاربر در تشخیص آلودگی، نقش سریس دهنده پر رنگتر می‌شه. برای مثال بانک‌ها باید با روش‌های تحلیل عملکرد کاربر و یا تحلیل انتقال پول‌ها، پترن‌های مشکوک رو تشخیص بدهند. آمارها نشون می‌ده که در سال ۲۰۰۹، میزان موفقیت آنتی‌ویروس‌ها در برابر بدافزار زئوس فقط ۲۳ درصد بوده و سال‌های بعد نیز موفقیت چشمگیری مشاهده نشده.

استفاده از روش‌های تعیین هویت خارج از سیستم، مثل استفاده از sms و تماس تلفنی و یا اپلیکیشن‌های مخصوص که اطلاعات رو به صورت تصویرهای رمزگذاری شده منتقل می‌کنند. هرچند بدافزارها در پی غلبه بر این راه‌های پیشگیری هم رفته‌اند. نکته بد این روش‌ها خسته کننده بودنشون برای کاربره.

جدول زیر شون دهنده کارهاییه که می‌تونیم انجام بدیم و میزان اثری که برای پیشگیری از حمله فردی در مرورگر می‌تونن داشته باشن.

list2

پانوشت:

۱- معمولا با “مردی در میانه” می‌شناسنش اما من “فرد” رو ترجیح می‌دم

Standard