اطلاعات اسنپ فود چطور به سرقت رفت؟

کمتر از یک هفته هست که اسنپ فود هک شده و اطلاعات زیر به گفته هکر به سرقت رفته و توی این مدت بارها توی شبکه های اجتماعی مختلف خوندم که چطور این حجم از اطلاعات از روی سرور بارگزاری شده و کسی متوجه نشده! در این مطلب سعی میکنم، به زبانی ساده و عامیانه نظر خودم رو در خصوص یکی از روش های مرسوم انجام این کار رو توضیح بدم، هرچند لزوما ممکنه همه به این روش بارگزاری اطلاعات رو انجام ندن.حالا چرا لحن غیر تخصصی؟ چون برای خیلی از مردم که هیچ ارتباطی با دنیای IT ندارن این سوال پیش اومده.اطلاعات به سرقت به گفته هکر:اطلاعات بیش از ۲۰ میلیون کاربر شامل: نام کاربری، پسورد، ایمیل، نام و نام خانوادگی، شماره موبایل، تاریخ تولد و …اطلاعات بیش از ۵۱ میلیون آدرس کاربر شامل: موقعیت GPS، آدرس کامل، شماره تلفن و …اطلاعات بیش از ۱۸۰ میلیون دستگاه همراه شامل: نوع و مدل دستگاه، پلتفرم، توکن، فروشگاه نصب برنامه و …اطلاعات بیش از ۳۶۰ میلیون سفارش شامل: آی‌پی سفارش دهنده، آدرس دریافتی، تلفن دریافتی، شهر، مدت زمان دریافت، نام و نام خانوادگی، مشخصات فروشگاه یا رستوران، قیمت، محصول و …اطلاعات بیش از ۳۵ هزار پیک شامل: نام، نام خانوادگی، شماره تماس، کد ملی، شهر و …اطلاعات بیش از ۶۰۰ هزار پرداخت سفارش شامل: نام کامل صاحب کارت، نام کامل مشتری، شماره تماس، شماره کارت، نام بانک و …اطلاعات بیش از ۱۶۰ میلیون سفر انجام شده توسط پیک شامل: نام کامل مبدا و مقصد، آدرس مبدا و مقصد، تلفن مبدا و مقصد، موقعیت جغرافیایی مبدا و مقصد، تاریخ و …اطلاعات بیش از ۲۴۰ هزار فروشنده شامل: نام کامل، آدرس، تلفن، ایمیل، موقعیت مکانی GPS، نام مدیریت مجموعه و …اطلاعات بیش از ۸۸۰ میلیون سفارش محصولاین مطلب به هیچ عنوان درباره نحوه نفوذ به اسنپ فود نیست و اصلا حاوی مطالب مربوط به هک و روش های نفود نیست.از اینجا شروع میکنم که تصور کنید هکر به یک روشی (که من نمیدونم و اطلاعاتی هم در این خصوص توسط گروه هکر و یا شرکت اسنپ منتشر نکردن) به سرور اسنپ فود وارد شده و الان به دیتابیس دسترسی داره و میخواد دیتا رو آپلود کنه.حدس من1. اول اینکه احتمال نفوذ به سرور اصلی دیتابیس از نظر من کمتر هست (البته که ممکن هم هست) چون به امنیت بیشتر اون اهمیت میدن و جزء راه های اولیه برای دسترسی به اطلاعات نیست.2. احتمال اینکه نشت اطلاعات از سمت برنامه نویس ها بوده باشه بیشتره (البته که قطعی نیست)، حالا چرا ؟ معمولا DBA دیتابیس رو در حد دارایی آباواجدادی خودش میدونه و دسترسی برنامه ها (USER ها) به اون رو خیلی شدید و جدی کنترل میکنه (امیدواریم). پس میاد و یک کاربر برای اون سرویس برای اتصال به دیتابیس میسازه (راه ورود همین جاست) .اغلب برنامه نویس ها (نه همه و نه همیشه) احتیاط کافی رو به خرج نمیدن و IP دیتابیس و نام کاربری و کلمه عبور اون رو به شکل های مختلف و جاهای مختلف ذخیره میکنن و گاهی حتی توی کد به صورت هاردکد نوشته می نویسن (به دفعات مشاهده شده). حالا آقای و یا خانم هکر کافیه به یکی از کامپیوتر های موجود در شبکه که امنیت کمتری دارن نفوذ کنه و بعد کل سیستم ها رو میگرده و به اون اطلاعات دسترسی پیدا میکنه و وصل میشه به دیتابیس!3. معمولا بعد از یه مدت که از توسعه نرم افزار میگذره، برنامه نویس ها درخواست میکنن که به user سرویس، “دسترسی ساخت فایل روی دیسک به منظور تهیه گزارشات کاربردی مورد نیاز” داده بشه. این همون کاریه که میشه مثلا خروجی یک select رو مستقیم به فایل csv فرستاد (این روش خیلی مرسوم هست)به گفته گروه هکر اطلاعات به دست اومده از اسنپ فود حدود 3 TB هست. به نظر من روز ها و هفته ها هکر ها به سیستم ها و سرور ها متصل بودن و به مرور و کم کم اطلاعات برداشته شده که در ادامه توضیح میدم. اینکه برخی فکر میکنن به یکباره وصل شدن و همون لحظه زدن و بردن غیر منطقیهاول یک نگاهی بندازیم به روش های بکاپ گیری از دیتابیس هابا توجه به نمونه دیتای منتشر شده حدس من اینه که از RDBMS ها استفاده میکنن مثل oracle, sql server,mysql,postgresqlو یا انواع دیگه، در کل خیلی مهم نیست که کدومه!به طور کلی 3 روش برای تهیه بکاپ وجود داره که البته روش اجراش توی هر دیتابیس تفاوت هایی داره.1. بکاپ گیری آنلاین:توی این روش دیتایس در دسترس هست و تراکنش ها در حال اجراست و جداول قفل نشده و تاثیری بر روی عملکرد نرم افزار های متصل به دیتابیس نمیزاره.2. بکاپ گیری افلاین: توی این روش ارتباط برنامه ها با دیتابیس قطع شده و هیچ تراکنشی انجام نمیشه، دیتابیس در دسترس نیست و یک کپی به صورت سریع از دیتا انجام میشه.3. بکاپ گیری افزایشی: توی این روش به بکاپ های قبلی نگاه میشه و فقط داده های جدید بکاپ گرفته میشه و این روش معمولا به صورت آنلاین انجام میشه.توی همه موارد فوق معمولا دسترسی های لازم برای اجرای این نوع بکاپ گیری ها در اختیار ادمین دیتابیس (DBA) هست.حالا بریم سراغ سناریو هاسناریوی اول (احتمال موفقیت نزدیک به صفر)برخی از دوستان گفتن اینه که از دیتابیس dump گرفته شده و بعد آپلود شده. این کار چند ایراد اساسی داره که باعث میشه رد بشه از طرف من.1. با توجه به حجم زیاد دیتابیس احتمال اینکه ابزارهای مانیتورینگ یک نرخ رشد دیتا در حد 3TB رو تشخیص بده زیاده و ریسک رو برای هکر بالا میبره2. انتقال این این حجم از اطلاعات به صورت باینری یا باید با سرعت زیادی انجام بشه که ممکنه ابزارهای مانیتورینگ شبکه این ترافیک رو شناسایی کنن و یا باید با سرعت کم آپلود بشه که احتمال packet lost روی بستر اینترنت رو افزایش میده که ممکنه در نهایت فایل دریافتی توسط هکر دیگه به درد نخوره، باز ریسک هکر رو بالا میبره3. ممکنه به این فکر کنید که هکر ممکنه فایل باینری بکاپ رو چند تکه کنه و بعد آپلود کنه، که باز هم 2 ایراد بالا برای اون مطرح میشهسناریوی دوم (احتمالی)1. هکر یک اسکریپت با شل لینوکس یا پایتون (یا هر زبان دیگه ای که بلده و امکان اجزاش رو داره) مینویسه و بعد از اتصال به دیتابیس اول schema ddl (کد sqlساخت جداول و رابطه ها و …) رو کپی و به سرور خودش اپلود میکنه، تا اینجا احتمالا زیر 5 ثانیه، هکر ساختار دیتابیس رو داره! که خودش دارای ارزش مادی و معنوی هست2. بعدش میره سراغ دیتا، هکر در این لحظه یک دید کلی نسبت به تعداد جداول، تعداد رکورد، حجم هر جدول و …. داره. در ادامه اون اسکریپت در یک حلقه (loop) روی تمامی جداول، تعداد مشخصی از رکورد (مثلا 100.000 رکورد) رو میخونه و هر کدوم رو توی فایلcsv خودش ذخیره میکنه.3. اسکریپت فایل های ساخته شده رو فشرده میکنه و در قالب یک فایل برای هکر ارسال میکنه(احتمالا زیر 10mb ) هر بار فایل اپلود میکنه و این توی ترافیک شبکه اون سرور با اون حجم از درخواست روزانه و ترافیک قابل مشاهده نیست.4. اسکریپت احتمالا یک وقفه چند ثانیه ای (مثلا بین 1 تا 5 ثانیه) بین هر بار اجرا ایجاد میکنه تا رفتار مشکوکی توسط سیستم های مانیتورینگ شناسایی نشه، اینجوری ابزارهای مانیتورینگ دیتابیس تصور میکنن یکی از کوئری های عادی سیستم هست و واکنشی هم نشون نمیدن.حالا دیگه اینجا هکر دست به سینه نشسته و داره به مرور اطلاعات براش میاد و کسی هم شک نمی کنه و در پایان با merge کردن اطلاعات دریافتی کل اطلاعات رو تجمیع میکنه.حالا خوبی روش دوم چیه1. تصور کنیم که هکر ها باهوش رفتار کردن که حساسیت سیستم های مانیتورینگ رو بالا نبرن و مثلا از اول صبح تا آخر شب و هر روز این اسکریپت کار کنه میتونن روزانه تا 100 میلیون رکورد رو آپلود کنن.2. هکر در همون لحظه های اول دسترسی به دیتابیس، اطلاعات کلی دیتابیس (کد sqlساخت جداول و رابطه ها و …) و تعداد کمی از دیتا هر جدول رو داره که ارزش زیادی دارنشروع بازیهکرهای پوکر بازتصور کنید که کافیه فقط اسکریپت 1 بار کار کنه و از هر جدول تعدادی رکورد رو آپلود کنه و بعد از اون نفوذ شناسایی بشه و جلوی اینکار گرفته بشه، ولی تا همین جا هکر گل رو زده و میتونه با انتشار بخشی کمی از اطلاعاتی که داره در قالب نمونه و بیان اینکه کل حجم دیتا مثلا 3TB هست (که شاید نتونسته همه رو ببره) و اینکه اسنپ فود میدونه حجم درست و دارن میگن و نمونه ها هم درسته و البته مطمئن نیست که واقعا همه دیتا بیرون رفته یا نه، ریسک هم نمیتونه بکنه، در واقع در این حالت هکر یک بلوف میزنه که همه دیتا رو دارم و میره برای مذاکره با اسنپ و یک حالت احتمال دیگه هم هست که همه دیتا رفته و طبق توضیحی که دادم شدنی هست.نظر منهکر اومده یک کار غیر اخلاقی انجام داده و دزدی اطلاعات کرده، چرا نباید این اطلاعات رو اگر کامل هستن رو چند بار و به چند نفر نفروشه؟ میدونیم که این اطلاعات حداقل چند مشتری دست به نقد داره. ولی هکر ها به یکباره اخلاق مدار میشن؟ میگن نه نمیفروشیم به دیگران ؟ با اسنپ توافق کردیم و چه رفتار حرفه ای داشتن و به به !؟؟؟؟نکته نهاییالبته این فرضیه ها هم میتونه وجود داشته باشه که این اطلاعات از درون سازمان و توسط تیم های اسنپ که به دیتا دسترسی دارن بیرون رفته باشه که البته من تایید و یا رد نمیکنم. البته که نمونه های مشابه زیادی در گذشته اتفاق افتاده و خواهد افتاد.همونقدر که به امنیت سرورها و شبکه و تجهیزات اهمیت میدید، به منابع انسانی و دسترسی ها و طبقه بندی اطلاعات و غیره هم توجه کنیدپانویس:اگه فکر میکنی این مطلب به درد دیگران هم میخوره و یکم میتونه به سوال هاشون جواب بده لطفا این مطلب لایک یا بازنشر کن. دوستان متخصص میدونم جای خیلی از توضیحات در این مطلب خالی بود. میدونم خیلی موارد رو کلی گفتم و فقط قصدم این بوده یک تحلیل ساده داشته باشم. اگه شما نظر دیگه ای داری یا میخوای این مطلب رو تکمیل کنی خوشحال میشم زیر همین پست نظرت رو بگی.