نگاره‌هایی پیرامون امنیت، شبکه و رمزنگاری

09 آوریل 2020

به نظر من همانطور که آیزاک آسیموف گفته:‌ «من به شواهد باور دارم. من به مشاهده، اندازه‌گیری، و استدلال که توسط شاهدان مستقل تایید شده باور دارم.» حدس‌ها و فرضیات بدون پشتوانه‌ی مستدل قابل اعتنا نیستند. حدس و گمان بدون شواهد، بیشتر باعث گمراهی و قضاوت نابجا می‌شود. هدف ما از نوشتن این گزارش ارائه شواهدی است تا نقاط تاریک در مورد یک واقعه فنی امنیتی در حوزه تکنولوژی را روشن کنیم تا ادعاهای بی‌دلیل در مورد این رخداد قابل تشخیص باشند.

روز ۳۰ام مارس سال ۲۰۲۰ گزارشی در مورد افشای اطلاعات ۴۲ میلیون رکورد از یکی از سامانه‌های حفاظت نشده ایرانی منتشر شد. از همان ساعت‌های ابتدایی انتشار این خبر نظرات مختلفی در مورد مبدا نشت این اطلاعات و خطراتی که متوجه کاربران ایرانی تلگرام خواهد بود ارائه شد. اما عدم امکان دسترسی به این اطلاعات کار بررسی بیشتر برای کارشناسان امنیتی را در این زمینه دشوار کرده بود. البته در همین زمان بعضی کارشناسان امنیتی با دسترسی به این داده‌ها امکان بررسی افشا شدن اطلاعاتشان را به کاربران دادند اما تحلیل بیشتری تا امروز روی این داده‌ها منتشر نشده است.

نتایج

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

منشا این داده‌ها کجاست؟ آیا مربوط به پوسته‌های تلگرام مانند تلگرام طلایی است؟

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

این داده‌ها چگونه و با چه‌هدفی جمع‌آوری شده است؟

با توجه به موارد ذکر شده در این گزارش، قوی‌ترین فرضیه در مورد چگونگی جمع‌آوری این داده‌ها، ساخت contact ساختگی با نام مستعار و کلیه شماره تلفن‌های موبایل و تعامل با APIهای تلگرام است. هدف جمع‌آوری این داده‌ها عبارت‌اند از:

  • نگاشت telegram_id به شماره تلفن
  • نگاشت username به شماره تلفن

افشای این داده‌ها چطور کاربران را به‌خطر می‌اندازد؟

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

  • کلیه اعضای یک گروه
  • مدیران کانال‌ها در صورتی که تماس با ما داشته باشن
  • هر کسی که به یک کاربر پیام داده است
  • اعضای کانال برای مدیران کانال‌ها
  • هر کس که id تلگرامش را بدانیم

من باید چه کار کنم تا امن بمانم؟

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

آیا فیلتر کردن تلگرام باعث افزایش امنیت کاربرهای ایران شد؟

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


شواهد

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

اصالت داده

نسخه‌های متعددی از این داده در فضای مجازی منتشر شده است. برای مثال ما به یک نسخه ۲۵ مگابایتی، و چندین نسخه ۴ گیگابایتی برخوردیم. با توجه به اینکه دیده شده برخی افراد نیز به دنبال خرید این داده‌ها هستند و سودجویان در کمین کلاهبرداری، ‌ sha256 از چکسام فایل اصلی را منتشر کردیم، در این حالت اگر md5checksum(telegramfile) را از مدعی تصاحب فایل بخواهید می‌توانید مقدار زیر را محاسبه کنید:

sha256(md5checksum(telegramfile))

که مقدار باید برابر با مقدار زیر باشد:

280dc4c2a72fc4a998f42d672eb935825ce6ed071265628ce095aeee60c94ca4

طبیعتا مقدار md5checksum(telegramfile) در گزارش قید نشده تا امکانی برای اصالت سنجی ادعاها باشد.

ضمنا متخصصین امنیتی دیگر که به داده‌ها دسترسی دارند با بررسی این مقدار می‌توانند تطابق داده‌های ما را با داده‌هایی که در اختیار دارند بررسی کنند.

حقایق

با بررسی این داده‌ها، سعی کردیم نکات مختلفی درباره‌ی ماهیت داده‌ها و مشخصه‌های آن پیدا کنیم که در ادامه آن‌ها را ارائه کردیم.

حجم داده‌های افشا شده چقدر است؟ کل داده‌هایی که در دسترسی ما قرار داشت شامل 42,823,956 رکورد می‌شود که با ادعای گزارش‌های اولیه مطابقت می‌کرد. این تعداد رکورد شامل 35,859,697 شماره تلفن مختلف هستند که نشان دهنده تکرار شدن برخی شماره تلفن‌ها در این لیست است.
بررسی ما روی رکوردهای تکراری نشان می‌دهد تفاوت میان این رکوردها در مقدار access_hash (در مورد این مشخصه در ادامه کاملا توضیح داده شده است) آن‌هاست. این به این معنی است که این داده‌ها توسط سیم‌کارت‌های مختلفی جمع‌آوری شده‌اند. در داده‌های نشت شده در بدترین حالت یک شماره تلفن 2585 تکرار شده است و این به این معنی است که در فرآیند جمع‌آوری این داده‌ها از اقلا 2585 کاربر مختلف (سیم کارت استفاده شده برای ساخت حساب تلگرام برای خزش) استفاده شده است.
یکی دیگر از نکاتی که در مورد شماره‌های تکراری وجود دارد تغییر زمان last seen و تصویر نمایه این شماره‌ها در دیتاست است. دیدن این رفتار در داده‌ها به نظر من ناشی از آپدیت دوره‌ای داده‌ها در طول زمان است.

این داده‌ها مربوط به چه زمانی هستند؟ در نمونه داده‌هایی که در اختیار ما قرار گرفته بود تنها مشخصه‌ای که مربوط به زمان می‌شد status.was_online و status.expires بود که به نظر ما آخرین زمان آنلاین بودن کاربر را نشان می‌داد. با این فرض و اینکه مقدار عددی این مشخصه احتمالا نشان دهنده زمان در قالب *UNIX epoch خواهد بود، مقدار حداکثر این فیلد را به دست آوردیم:

MAX(status.was_online) = 1568761603 -> 2019-09-17T23:06:43+00:00 
MAX(status.expires) = 1568762833 -> 2019-09-17T23:27:13+00:00

این مقدار معادل با سه شنبه ۱۷ سپتامبر ۲۰۱۹ میلادی است. به نظر می‌رسد داده‌های افشا شده در جدیدترین حالت مربوط به این حوالی است. البته ما احتمال می‌دهیم این داده‌ها به صورت دوره‌ای به روز رسانی می‌شدند پس لزوما همه این اطلاعات افشا شده مربوط به این زمان نیستند. پر واضح است که این مقدار فقط برای کاربرانی که مقدار last seen آن‌ها به صورت عمومی قابل مشاهده است مکشوف است و در رکوردهای زیادی این مقدار خالی است.
با مقایسه این تاریخ‌ها با زمان از کار افتادن پوسته‌های معروف تلگرام مثل تلگرام طلایی (۱ تیر ۹۸) می‌توان نتیجه گرفت این اطلاعات از منبع دیگری جمع‌آوری شده‌اند.

کاربران ایرانی تلگرام چقدر و چطور آنلاین هستند؟ داده‌های مربوط به آخرین زمان آنلاین کاربران از نظر آماری جذابیت بیشتری برای ما داشت و به همین خاطر سعی کردیم دنبال جزئیات بیشتری در مورد این مشخصه باشیم. اولین مورد مربوط به مقادیر last seen کاربران می‌شد. در شکل زیر نمودار فراوانی مقادیر این مشخصه را مشاهده می‌کنید.

userStatusOffline -> 28,511,135 
userStatusOnline -> 386,802 
userStatusRecently -> 9,590,035 
userStatusLastWeek -> 862,257 
userStatusLastMonth -> 1,171,393

با بررسی این مقادیر مشخص می‌شود تعداد کاربران فعال ایرانی که در کمتر از یک ماه اخیر به تلگرام سر زده‌اند در این مجموعه داده 39,350,229 مورد است.

علاوه بر این نمودار میله‌ای از این مشخصه در طول زمان تهیه کردیم، بر خلاف انتظار در این نمودار به صورت متناوب قله دارد، این رفتار می‌تواند به سه صورت توجیه شود در اولین تلاش به نظر می‌رسد این رفتار متفاوت به خاطر آپدیت کردن دوره‌ای اطلاعات کاربران است یعنی در زمان‌هایی که با پیک مواجه شدیم داده‌های بخشی از کاربران آپدیت شده‌اند و تا پیک بعدی این داده‌ها آپدیت نشده‌اند. اما با مطابقت تاریخ‌های قله‌ها با مناسبت‌های تقویم ایران می‌توان تحلیل متفاوتی ارائه داد. اولین پیک که مربوط به آپریل ۲۰۱۹ است دقیقا مطابق با نوروز سال ۹۸ است. بنظر این امر نشان‌دهنده تاثیر تعطیلات نوروز و تبریک کاربران در این زمان از طریق تلگرام است. قله‌های بعدی این نمودار مربوط به انتهای خرداد، اوایل مرداد و اوایل شهریور ماه است مطابقت این تاریخ‌ها با مناسبت‌های مختلف ما را به نتیجه خاصی نرساند و در عوض یکسان بودن دوره‌های پیک، نظریه آپدیت دوره‌ای اطلاعات را تقویت کرد.
سناریو دیگری که برای توجیه قله‌های موجود در نمودار به نظر ما رسید با توجه به تکرار شماره تلفن‌ها با access_hashهای متفاوت بوده است. در این صورت این ممکن است قله‌ها به خاطر banشدن یا از دست رفتن اکانت‌های خزنده ایجاد شده باشند، به این معنی که استفاده از سیم‌کارت‌های موقت (احتمالا خارجی) باعث مشکوک شدن تلگرام و حذف اکانت‌ها شده است و مقدار last seen کاربران با از دست رفتن اکانت خزنده دیگر آپدیت نشده است. البته این داده‌ها با اکانت‌های دیگری مجددا آپدیت شده اند.

آیا اسامی استفاده شده در این داده‌ها صحیح هستند؟ یکی از موارد مشکوکی که از ابتدا در مورد این داده‌ها بیان می‌شد، عدم مطابقت اسامی رکوردها با usernameهای متناظرشان بود. این امر فرضیه ساختگی بودن این اسامی را تقویت می‌کرد. علاوه بر این با مرور روی این داده‌ها اسامی پرکاربرد ایرانی مانند «امیر»، «علی»، «محمد» و … که ریشه عربی دارند اصلا در داده‌ها مشاهد نمی‌شد. به این ترتیب فرض ساختگی بودن نام و نام خانوادگی استفاده شده در داده‌ها تقویت شد و ما تصمیم گرفتیم شواهد بیشتری در تایید این فرض پیدا کنیم.
قدم اول در بررسی اسامی، پیدا کردن فراوانی هر نام در داده‌های فاش شده بود. در جدول زیر فراوانی ۲۰ نام پر استفاده در این داده‌ها را مشاهده می‌کنید:

https://gist.github.com/alireza-ebrahimi/00ae7a294844f6a71b3a5daeb4d63e94

به استثنای ۵ نام اول لیست که در حدود ۱۲۰هزار بار تکرار شده‌اند، بقیه اسامی (داده‌های مربوط به ۱۰۰۰ نام پرتکرار بررسی شده است) در حدود ۶۰ هزار بار تکرار شده اند. الگویی که در صورت واقعی بودن نام‌ها اصلا مورد انتظار نبود. این الگو شبیه رفتار برنامه‌هایی است که با توزیع یکنواخت از یک لیست نام انتخاب می‌کنند. اما در این میان ۵ نام پراستفاده نشانه‌ای بر رد این فرضیه بود. از طرفی دو برابر بودن فراوانی این نام‌ها این شک را در ما ایجاد کرد که احتمالا در لیست اسامی اولیه این نام‌ها ۲ بار تکرار شده‌اند. با این فرضیات سعی کردیم این لیست اسامی را در اینترنت پیدا کنیم. با جستجوی عبارت «لیست اسامی ایرانی» در گوگل و بررسی نتایج پیدا شده به این لیست در سایت عصرایران برخوردم. نکته جالب در مورد این اسامی این است که این لیست دقیقا مطابق لیست اسامی استفاده شده در دیتاست افشا شده است و البته ۵ نامی که در داده‌ها تقریبا ۲ برابر دیگر اسامی استفاده شده‌اند در این لیست ۲ بار تکرار شده‌اند. با توجه به شواهد و قرائن ما مطمئنیم که اسامی استفاده شده در داده‌ها به صورت تصادفی از لیست اسامی مذکور ساخته شده‌اند.
بررسی آماری نام‌های خانوادگی این دیتاست خیلی زودتر به نتیجه رسید. در جدول زیر ۲۰ نام‌خانوادگی پراستفاده در این داده‌ها را مشاهده می‌کنید:

https://gist.github.com/alireza-ebrahimi/68ff06f3fa1f757a38218d9d7bf04947

مجددا همان ۵ نام که البته به همراه پسوند «ی» استفاده شده‌اند. بررسی بیشتر نشان‌داد تمامی نام‌خانوادگی‌هایی که در این داده‌ها استفاده شده‌اند معادل لیست نام‌های استفاده شده به همراه پسوند «ی» هستند. بنابراین علاوه بر نام‌ها، نام‌های خانوادگی نیز به صورت تصادفی از یک لیست از پیش تعیین شده انتخاب شده‌اند و در کل نام و نام خانوادگی که در رکوردها استفاده شده است معتبر نیستند. دلیل استفاده از نام‌های ساختگی در این داده‌ها از نظر من استفاده از این نام‌ها برای ایجاد contactهای ساختگی برای گول زدن تلگرام بوده است. به همین دلیل سعی شده از نام‌هایی با ظاهر معتبر استفاده شود.

آیا اطلاعات خصوصی کاربران مثل چت‌ها و کانال‌ها افشا شده است؟ در داده‌هایی که به دست ما رسیده است تنها اطلاعات مربوط به contactهای کاربران موجود است. این اطلاعات شامل فیلدهای زیر است:

  • نام کاربری: برای آن دسته از کاربرانی که نام کاربری (همان نامی که با @ شروع می‌شود) برای خود انتخاب کرده‌اند، این مقادیر افشا شده است.
  • کد کاربری: یک کد داخلی است که برای مشخص شدن هر کاربر در تلگرام استفاده می‌شود، این کد برخلاف نام کاربری که به انتخاب کاربر مشخص می‌شود، از زمان تشکیل حساب مشخص می‌شود و قابل عوض کردن نیست مگر با پاک کردن اکانت تلگرام.
  • اطلاعات آخرین بازدید: همانطور که پیشتر هم اشاره کردیم، اطلاعات مربوط به آخرین بازدید کاربران نشت شده است.
  • تصاویر نمایه: اصل تصاویر نمایه کاربران در این داده‌ها نشت پیدا نکرده است اما اطلاعاتی که با استفاده از آن‌ها می‌توان با درخواست به API تلگرام به این فایل‌ها دست پیدا کرد در این داده‌ها موجود است. این تصاویر شامل ۲ تصویر است که یکی مربوط به اندازه کوچک تصویر نمایه است و دیگری همان تصویر با رزولوشن بالاتر است.
  • چکیده دسترسی: یکی از مقادیری که در نمونه داده‌های نشت شده مورد توجه قرار گرفت مشخصه access_hash بود. با بررسی مستندات مربوط به telegram API می‌توان متوجه شد هر کاربر برای ارتباط با موجودیت‌های تلگرام (گروه، کانال، کاربر، و …) علاوه بر کدکاربری به یک چکیده دسترسی هم نیاز دارد. نکته در مورد این چکیده این است که مقدار چکیده برای هر دو جفت کاربر متفاوت است. یعنی یک مهاجم با استفاده از access_hashهای نشت شده در این دیتاست به بقیه اطلاعات کاربر دست پیدا کند. این چکیده برای تعامل با کاربر مورد استفاده قرار می‌گیرد. به عنوان مثال شما به تنهایی با داشتن کدکاربری نمی‌توانید برای یک کاربر پیام بفرستید و نیاز به access_hash برای این کار دارید. اما در صورتی که نام کاربری یک کاربر در دسترس باشد، به راحتی هر کاربر می‌تواند به access_hash آن کاربر دسترسی پیدا کند و با او تعامل کند. در ادامه در مورد این مشخصه در telegram API بیشتر توضیح می‌دهیم.
  • شماره تلفن: مهم‌ترین بخش از رکوردهای نشت شده مربوط به شماره تلفن همراه هر کاربر است. با استفاده از این مشخصه و موارد بالا، در صورتی که یک مهاجم به این داده‌ها دسترسی پیدا کند می‌تواند از طریق چت کردن با یک کاربر (که اطلاعاتش نشت شده) به شماره تلفن او دسترسی پیدا کند. در واقع در صورتی که یک مهاجم بتواند صفحه پروفایل یک کاربر ببیند (از طریق نام کاربری، عضویت در گروه مشترک و …) می‌تواند به کدکاربری او دسترسی پیدا کند و نهایتا به شماره تلفن او برسد.

علاوه بر این‌ها اطلاعات دیگری مانند چت‌ها، مخاطبین، فایل‌ها و بقیه موارد مشابه از کاربران در این مجموعه داده وجود ندارد.
در این بخش قصد داریم تا بیشتر در مورد مفهوم access_hash در telegram API توضیح دهیم. همانطور که پیشتر توضیح دادیم برای بسیاری از API callها در تلگرام علاوه بر userid به یک access_hash نیز نیاز است. این مقادیر در نوع داده‌ای InputPeerUser جا می‌گیرند که در توابع زیادی مورد استفاده هستند. معرفی چنین مشخصه‌ای برای جلوگیری از امکان brute force روی useridهای تلگرام برای بدست آوردن اطلاعات پروفایل آن‌هاست است. در برخی از توابع که نیاز به دانستن access_hash نیست، نوع داده‌ای PeerUser مورد استفاده قرار می‌گیرد که صرفا شامل userid است. داشتن Peer برای شناسایی یک کاربر کفایت می‌کند اما برای ایجاد درخواست با آن‌ها کافی نیست. برای اینکار نیاز به access_hash داریم تا به InputPeerUser برسیم. به صورت کلی مشخصه access_hash از طریق ایجاد کنش با کاربر قابل دسترسی است. این کنش‌ها شامل داشتن شماره تلفن کاربر، وجود کاربر در دیالوگ‌های تلگرام، فوروارد پیام از کاربر یا دیدن لیست کاربران گروه است**.

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

برای مقایسه این آمار با داده‌های واقعی به گزارش رگولاتوری که در دی‌ماه ۹۸ منتشر شده است استناد کردیم. بر اساس این گزارش تعداد مشترکین همراه اول، ایرانسل، و رایتل به ترتیب حدودا ۶۲ میلیون، ۵۰ میلیون و ۴ میلیون گزارش شده است که به ترتیب معادل ۵۳ درصد، 43 درصد، و 3 درصد کل شماره‌های همراه کشور هستند. شباهت این آمار با داده‌های نشت پیدا کرده سند دیگری بر کامل بودن این داده‌ها و همچنین درست بودن شماره تلفن‌های این مجموعه داده است.
علاوه بر این در جدول زیر لیست تعداد رکوردهای هر پیش‌شماره ارائه شده است که می‌تواند برای محققین این حوزه جالب توجه باشد***.

https://gist.github.com/alireza-ebrahimi/d43897089460b3ab811c083189adf021

چه خطراتی متوجه کاربران است؟

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

  • نگاشت id و شماره تلفن
  • نگاشت username و شماره تلفن

id و username دارایی‌های محرمانه‌ای نیستند و به راحتی قابل کشف‌اند. به عنوان مثال در کلاینت تحت وب تلگرام با بررسی بسیاری از API callها می‌توان id کاربر را به راحتی کشف کرد. در تصویر زیر داده‌هایی که در زمان ارسال پیام در یک گروه به همه کاربران گروه broadcast می‌شود را مشاهده می‌کنید که شامل userid کاربر نیز هست.

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

این اطلاعات چگونه جمع‌آوری شده‌اند؟

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

  1. تمامی نام و نام‌خانوادگی کاربران غلط می‌باشد
  2. تاریخ داده‌ها جدید‌تر از زمان از کار افتادن پوسته‌های معروف تلگرام مثل تلگرام طلایی است
  3. توزیع اسامی نشان می‌دهد تمامی Contactها ساختگی است
  4. پیشتر تلگرام نسبت به این حمله آسیب‌پذیر بوده و این عملیات انجام شده است

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

همان‌طور که در شکل مشخص است، یک سازوکار کنترل شده به‌صورت خودکار مراحل زیر را انجام می‌دهد:

  1. ثبت نام کردن یک حساب تلگرام با شماره تلفن
  2. اضافه کردن شماره‌های تصادفی و غیرتکراری به حساب
  3. تعامل با APIتلگرام برای sync شدن
  4. استخراج داده‌های و ذخیره در Elasticsearch

البته در مرحله بعدی این مجموعه می‌توانسته با پاک کردن مخاطب‌ها و Sync شدن دوباره با تلگرام، اسامی درست را دریافت کند. شاید این اسامی دریافت شده است و در دیتابیسی دیگر ذخیره شده باشد، شاید هم انجام این کار که منجر به ارسال تعداد بسیار زیادی درخواست برای اسامی که درصد بسیار بالایی خطا در آنها وجود دارد (معمولا افراد بسیار کمی نام و نام خانوادگی را درست وارد می‌کنند) موضوعیتی نداشته است. چرا که هدف اصلی این پروژه ایجد نگاشت میاد میان telegram_id و username با شماره تلفن بوده است، همچنین میوه این پروژه پیدا کردن شماره تلفن . هویت یک شخص در بستر تلگرام است

سهلنگاری

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

سوالات متداول

در اینجا سعی کردن سوالاتی که در این رشتو برای شما پیش آمده رو تا جایی که میشه جواب بدم:

  1. بیشترین سوال مربوط به این نصب بودن بدافزار روی گوشی و یا استفاده خود و یا اطرافیان از پوسته‌های تلگرام بود که جواب این سوال با توجه به تحلیل این پست کاملا منفی است. کاربران هیچ نقشی در این قسمت نداشتند.
  2. آیا افرادی که در تنظیمان خود در قسمت حریم شخصی، گزینه «پیدا شدن با شماره فقط برای مخاطب» را فعال کرده‌اند، جز این داده‌ها هستند؟ جواب این سوال به‌صورت فنی خیر است. یعنی تلگرام نباید شماره تلفن شما را افشا کند. از طرفی خود من علارغم فعال کردن این گزینه در گذشته، شماره‌ام در این پایگاه‌داده افشا شده وجود دارد.
  3. آیا تعویض username من را امن می‌کند؟ همان‌طور که در بالا توضیح داده شده است، خیر.
  4. آیا گذاشتم رمزعبول دومرحله به کاربر کمکی می‌کند؟ آیا کاربرانی که رمز دو مرحله‌ای داشته‌اند در امان بودند؟ این حمله فقط مربوط به افشای شماره تلفن همراه است، بدیهی است که در صورت نداشتن رمز عبور دومرحله‌ای، ممکن است اتفاقی که برای من افتاد، برای شما هم بیفتد با این تفاوت که نفوذ کامل به حساب شما صورت پذیرد.
  5. آیا با پاک کردن حساب، باز هم خطر اینکه مجددا این داده‌ها کرال شود وجود دارد؟ با توجه به رفتار کنونی تلگرام بله، مگر اینکه به طور جدی راه حلی برای این موضوع پیدا کند. البته طبق تحلیل جدیدی که بر روی سیم‌کارت جدید انجام داده‌ایم، تلگرام محدودیت‌های جدی برای این کار دارد که مشخص است کافی نیست.

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

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