در ترنجی خواندیم که تلگرام طلایی را لغو نصب کنید و دلیل امنیت مبهم از نظر کارشناسان است. حالا با بررسی کد جاوا کلاینت تلگرام طلایی می خواهیم دقیقا بگوییم این “امنیت مبهم” به چه دلیل است. در ادامه با ما همراه باشید.
این پست حاوی نکات فنی و تحلیل کد تلگرام طلایی است. لطفا پیش از مطالعه این متن، این پست را مطالعه فرمایید.
ما دو نسخه ۵.۳.۵ و ۵.۴.۲ (آخرین نسخه تا ۵ تیر ۹۷) را مورد بررسی قرار دادیم:
1. org.ir.talaeii.fl-5.3.5.apk Checksum:490a561a40d7b474c19c8143731bb4cb Download
2. org.ir.talaeii.fl-5.4.2.apk Checksum:d56d974f6938d156fd764942ea30723c Download
این دو نسخه با ابزار jadx و با سوئیچ deobf دیکامپایل شدند. نسخه ۵.۳.۵ به راحتی به کد نامبهم تبدیل شد درحالیکه میزان مبهمسازی در نسخه ۵.۴.۲ به مراتب بیشتر بود و کدهای تولید شده تا حدی ناخوانا بودند. به همین دلیل تصاویری که از کد وجود دارد مربوط به کدهای دیکامپایل شده نسخه ۵.۳.۵ هستند ولی مشابه همین کدها در نسخه ۵.۴.۲ وجود دارند. کدهای دیکامپایل شده هر دو نسخه را میتوانید از این لینک مشاهده و دانلود کنید.
با بررسیهای ما مشخص شد که تلگرام طلایی از روشهای متعددی برای دریافت اطلاعات شخصی کاربر و انجام عملیات غیرمجاز (واضحا بدون اطلاع او) استفاده میکند. در این گزارش ما به چند روش اشاره خواهیم کرد. لازم به ذکر است که هر چه ما بیشتر جستجو میکردیم روشهای مختلف بیشتری برای اعمال نفوذ غیرقانونی و ابزارهای سرقت اطلاعات بر میخوردیم. نمونههای زیر تنها روشهایی است که موفق به کشف آنها شدیم و ممکن است روشهای مختلف دیگری نیز وجود داشته باشد.
به نظر میرسد تلگرام طلایی مبتنی بر کد هاترگام (hotgram) است. زیرا که حتی نام برخی کلاسها و توابع hotgram بود. برخی از سرورهایی که تلگرام طلایی با آنها در ارتباط بود نیز عبارت hotgram درون نام دامنه آنها وجود داشت. عبارت sls که نماد شرکت سازنده هاتگرام به نام راهکارهای سرزمین هوشمند (sls.ir) است نیز به وفور در کد یافت میشود.
اکثر کدهای حاوی قابلیتهای غیرقانونی تلگرام طلایی در پکیج customization قرار دارند به همین دلیل ما روی این پکیج تمرکز کردیم. البته تعدادی کد مخرب به برخی توابع اصلی تلگرام نیز اضافه شده است که آنها را نیز بررسی خواهیم کرد.
تلگرام طلایی از یک کتابخانه push notification به نام OneSignal استفاده میکند و دستورات خود را از طریق آن دریافت میکند. کلاس handleRequest و تابع handlePush مسئول تشخیص و اجرای دستورات سرور هستند:
* هر کدام از caseها یک نوع دستور خاص است که از سرور دریافت میشود (لینک گیتهاب)
این کلاس وظیفه ارسال و دریافت اطلاعات از سرورهایی غیر از سرورهای اصلی تلگرام (در اینجا از عبارت سرورهای تلگرام طلایی استفاده میکنیم) را بر عهده دارد. این کانال ارتباطی بر اساس تکنولوژی Rest کار میکند و هم دستوراتی از جنس GET دارد و هم از جنس POST که به ترتیب برای دریافت اطلاعات و ارسال اطلاعات استفاده میشوند.
قابلیت push notification یک کانال یک طرفه از سمت سرور به سمت کلاینت است و سرور میتواند پیغام خاصی را به سمت کلاینتها یا یک کلاینت خاص ارسال کند اما جوابی دریافت نمیکند. در تلگرام طلایی کلاس HotgramNotification وظیفه مدیریت نوتیفیکشنها را برعهده دارد و سازنده برنامه میتواند با ارسال نوتیفیکشن گروهی یا حتی هدفدار برای یک کاربر خاص عملیات خاصی را روی کلاینت آغاز کند. تلگرام طلایی از طریق push notification دستورات خاصی دریافت میکند و کلاس HandleRequest و کلاسهای زیر مجموعه آن وظیفه تشخیص و اجرای این وظایف را برعهده دارد.
این کلاس و کلاسهای مشتق شده از آن در پکیج org.telegram.customization.internet قرار گرفتهاند. کلاسهای زیرمجموعهی HandleRequest هرکدام وظیفه مدیریت نوع خاصی از پیامها را بر عهده دارند. در نسخه ۵.۳.۵ تعداد این کلاسها ۵۳ عدد بود ولی در نسخه جدیدتر ۴۹ کلاس وجود داشت. ولی طبق بررسیهای ما همه وظایف مخاطره آمیز تلگرام طلایی که ما پیدا کردیم هنوز هم در نسخه آخر این برنامه وجود دارد. کد این کلاس که مبهم سازی شده را نیز در این لینکمیتوانید ببینید. چند قابلیتهای جاسوسی جدید در نسخه ۵.۴.۲ به تلگرام طلایی اضافه شده است که نشان از تمایل برای توسعه و بهبود مداوم قابلیتهای مخرب این ابزار در ماههای اخیر دارد.
در تصویر زیر برخی از توابع این کلاس را مشاهده میکنید. وجود چنین توابعی با نامهای sendContacts، sendLocation، sendTM، sendSuperGroup و . . . باعث شد توجه ما شدیدا به این کلاس معطوف شود.
در بررسیهای ما سه نوع قابلیت غیرمتعارف و غیرقانونی در تلگرام طلایی پیدا شد. دسته اول فعالیتهایی است که با دریافت نوتیفیکشنها فعال میشوند، دسته دوم به صورت سرویس در کلاینت تلگرام طلایی در حال اجرا اند و به صورت دورهای گزارشهایی برای سرور تلگرام طلایی میفرستند، و در نهایت قابلیتهایی که با یک رخداد خاص مثلا دریافت پیام خاصی فعال میشوند. همه این قابلیتها در هر دو نسخه که ما بررسی کردیم وجود داشتند. به نسخه جدیدتر تعدادی قابلیت جدید اضافه شده بود.
همانطور که قبلا اشاره کردیم، کلاس HotgramNotification وظیفه مدیریت نوتیفیکشنهای دریافتی از پلتفرم OneSignal را بر عهده دارد. این کار توسط تابع HandlePush انجام میشود. ورودی اصلی این تابع یک رشته است که در آن دادههای ورودی قالب json دارند. این ورودی و مقدار متغیر pushType، مشخص میکنند که چه عملیاتی باید در کلاینت شروع شود. در ادامه به برخی از فعالیتهای نامتعارف و غیرقانونی تلگرام طلایی که با نوتیفیکیشن فعال میشود را بررسی میکنیم.
۱. با گرفتن نوتیفیکیشن نوع ۲، تلگرام طلایی میتواند بدون اطلاع کاربر، او را در یک کانال خاص عضو کند. این کار با استفاده از تابع addToChannel که در کلاس SlsMessageHolder قرار دارد انجام میشود. (لینک گیتهاب)
۲. با دریافت نوتیفیکیشن از نوع ۹ تلگرام طلایی با اطلاعات دریافتی در نوتیفیکیشن میتواند بدون اطلاع کاربر یک رکورد به دفترچه تلفن کاربر اضافه کند. و این کار با استفاده از تابع addContact که در کلاس Utilities قرار دارد انجام میشود. این تابع در نسخه 5.4.2 در کلاس C3792d قرار دارد (لینک گیتهاب)
۳. نوتیفیکیشن نوع ۱۰ رفتاری شبیه به نوع ۹ دارد با این تفاوت که اطلاعات دریافتی مشخص میکند چه رکوردی از دفترچه تلفن باید حذف شود. که میتوانید تابع deleteContact را در کلاسUtilities یا کلاس متناظرش در نسخه مبهم سازی شده ببینید. (لینک گیتهاب)
۴. نوتیفیکیشن نوع ۱۵ به سازندگان تلگرام طلایی این امکان را میدهد تا یک کاربر را بدون اطلاع و تمایل او از کانال مورد نظرشان خارج کنند و همینطور سابقه کانال را هم پاک کنند. (لینک گیتهاب)
مواردی که تا اینجا بررسی کردیم در هر ۲ نسخه وجود داشتند ولی مواردی بعدی فقط در نسخه جدیدتر ۵.۴.۲ وجود دارند.
۵. با دریافت نوتیفیکیشن از نوع ۱۸ تلگرام طلایی بررسی میکند اگر کاربر مدیر کانال باشد او را از کانال اخراج میکند. با فرستادن این نوتیفیکیشن برای همه کاربران تلگرام طلایی و مشخص کردن یک کانال خاص میتوان کاری کرد که همه ادمینهای یک کانال خاص از کانال خارج شوند و کانال بدون صاحب بماند. (لینک گیتهاب)
۶. فعالیت جالب بعدی که با دریافت نوتیفیکیشن نوع ۱۹ فعال میشود، امکان باز کردن یک آدرس اینترنتی خاص از طرف کاربر است. وظیفه اجرای این درخواست با کتابخانه Volley است. User-Agent کلاینت به صورت تصادفی انتخاب میشود. این کار میتواند برای افزایش آمار بازدید یک سایت یا حتی اجرای حمله DDoS استفاده داشته باشد. در تصویر تابعی که User-Agent را انتخاب میکند و درخواست HTTP را اجرا میکند میبینید. (لینک گیتهاب)
۷. مورد بعدی و آخر که در این بخش بررسی میکنیم پیامهای نوع ۲۰ هستند. این نوع پیام میتوانند از طرف کاربر یک کانال خاص را Report کند. با این عملکرد میتوان به صورت گسترده، یک کانال دلخواه را Report Spam کرد. (لینک گیتهاب)
بخش دیگری از دادههایی که به سرورهای تلگرام طلایی ارسال میشود از طرف سرویسهایی است که در زمان اجرای تلگرام طلایی فعال میشوند. این سرویسها خود با استفاده از نوتیفیکیشنهایی که در بخش قبل بررسی کردیم فعال میشوند تا بتوان از راه دور آنها را فعال کرد. نوتیفیکیشنهای نوع ۱۲، ۱۶، و ۱۷ میتوانند سرویسهای متفاوتی را فعال کنند که از این میان نوع ۱۲ به صورت خاص چندین سرویس را با هم فعال میکند. (لینک گیتهاب)
در این بخش به بررسی بعضی از این سرویسها که به نظر میآید ناقض حریم شخصی کاربران هستند میپردازیم. کد این سرویسها در پکیج org.telegram.customization.service قرار دارد.
سرویس BgtsService: این سرویس لیست تمام کانالهایی که کاربر عضو آنهاست را جمعآوری میکند و توسط کلاس HandleRequest که قبلا مطرح شد برای سرورهای تلگرام طلایی میفرستد. یکی از دادههای جالبی که جمعآوری میشود مشخص میکند کاربر، ادمین کدام کانالها است. (لینک گیتهاب)
سرویس CtsService: این سرویس وظیفه جمع آوری اطلاعات Contactهای کاربر را بر عهده دارد. در این اطلاعات نام و شماره تماس تمام مخاطبین جمعآوری میشود و برای سرورهای تلگرام طلایی ارسال میشود. البته با توجه به اینکه تلگرام طلایی سرویسی با عنوان “نمایش کسانی که شماره شما را دارند” ارائه میدهد میتوان توجیه کرد که این اطلاعات برای پیاده سازی آن سرویس مورد استفاده قرار میگیرد. (لینک گیتهاب)
سرویس LocationService: این سرویس همانطور که از نامش پیدا است به صورت دورهای مشخصات مکانی کاربر (طول و عرض جغرافیایی)را به سرورهای تلگرام طلایی میفرستد. (لینک گیتهاب)
این سرویس هم مانند بقیه سرویسهای این دسته با استفاده از کلاس HandleRequest دادهها را برای سرور تلگرام طلایی میفرستد.
سرویس SgsService: این سرویس ۲ نوع داده را برای سرور تلگرام طلایی میفرستد. اول لیست id همه گروههایی که کاربر عضو آن است و دیگری اطلاعات سوپرگروههایی که کاربر در آنها عضو است. به نظر میرسد گروههای پرتعداد برای سازندگان اهمیت بیشتری نسبت به گروههای عادی داشته است. (لینک گیتهاب)
سرویس BgsService: این سرویس هم مانند سرویسهای SgsService و BgtsService عمل میکند ولی اطلاعات مربوط به باتهایی که کاربر با آنها کار میکند را میفرستد. (لینک گیتهاب)
سرویسهایی که تا اینجا بررسی کردیم در هر ۲ نسخه مدنظر ما وجود دارند ولی سرویس بعدی که با هم میبینیم فقط در نسخه جدیدتر ردپای آن را مشاهده کردیم.
سرویس UStateService: این سرویس با توجه به نامش وظیفه بروزرسانی state کاربر در سرورهای تلگرام طلایی را برعهده دارد. این سرویس وظیفه ارسال ابردادههای پیامهای کاربر را به سرورهای تلگرام طلایی برعهده دارد. کلاس UserState با توجه به مبهم بودن کد شامل متغیرهای بی معنی مانند gp، gr، mr، ms ،s ، و e است. با توجه به کد تابع getUserStateWithStartAndEndTime که وظیفه پر کردن این مقادیر را بر عهده دارد متوجه شدیم این متغیرها در یک بازه زمانی مشخص، تعداد پیامهای دریافتی و ارسالی، تعداد پیامهای مربوط به گروهها، و زمان شروع و پایان بازهای که پیامها در آن شمارش شدهاند را مشخص میکنند و این اطلاعات را برای سرورهای تلگرام طلایی میفرستد. (لینک گیتهاب)
همانطور که گفتیم، وقتی سرویسها فعال شوند به طور مداوم اطلاعات را برای سرورهای تلگرام طلایی میفرستند. این کار در دو زمان انجام میشود
ضمنا کلاس HandleRequest که وظیفه ارسال پیامها را برعهده دارد بعد از اینکه دادههای هر سرویس را برای سرور فرستاد، زمان آخرین ارسال موفق را ذخیره میکند تا بعدا مورد استفاده سرویس قرار بگیرد.
این دسته از قابلیتهای سرقت اطلاعات در تلگرام طلایی از نظر امکان تشخیص از سخت ترینهای انواع سرقت اطلاعات هستند. به همین دلیل ما تنها توانستیم یک مورد از این نوع پیدا کنیم، که البته یکی از مهمترین موارد نقض حریم خصوصی کاربران است. در تصاویر زیر قسمتی از کد کلاس MessageStorage در تلگرام طلایی و مقایسه آن با کد تلگرام طلایی را مشاهده میکنید. تفاوت اصلی در این قسمت مربوط به کدی است که تلگرام طلایی اظافه کرده است. تابعی که این کد به آن اضافه شده است وظیفه مدیریت پیامهای دریافتی را برعهده دارد، پس به ازای هر پیام دریافتی این کد روی آن اعمال میشود. (لینک ۱ و لینک ۲)
این کد در صورتی که dialog_id با کد 777000 پیامی دریافت شود، متن این پیام از طریق کلاس SendTM برای سرورهای تلگرام طلایی ارسال میشود. کد 777000 مربوط به بخش service notification تلگرام است. تلگرام کدهای login را از این طریق ارسال میکند.
بنابراین یک کپی از همه کدهای login همه کاربران به سرورهای تلگرام طلایی فرستاده میشوند بدون هیچ شرطی. این قابلیت این امکان را به دستاندرکاران تلگرام طلایی میدهد تا با داشتن شماره تلفن یکی از کاربرانشان بتوانند به اکانت تلگرام رسمی کاربر وارد شوند و به تمام پیامهای او دسترسی داشته باشند.
لیست سرورهایی که تلگرام طلایی با آنها در ارتباط هستند در این لینک گیتهاب قابل مشاهده هستند
نکته مهمی که باید مورد توجه قرار گیرد این است که تمامی این فعالیتها در تلگرام طلایی بدون اطلاع و رضایت کاربر انجام میپذیرند. در حقیقت از منابع شبکه، و اکانت تلگرام کاربر برای رسیدن مقاصد دلخواهشان استفاده میکنند.
توسعهدهندگان این ابزار علاقه خاصی به استفاده از اسمهای Alireza, LEE, Aminproxy و Sadegh در لاگها داشتند. بعید نیست که اینها اسم (جعلی) خود توسعهدهندگان باشد.
فکر می کنم حالا کاملا روشن است که چرا باید تلگرام طلایی و هر کاینت غیر رسمی ایرانی تلگرام را لغو نصب کنید!
همچنین تمام نرم افزارهای زیر به همین موارد مشکوک هستند:
اوپنگرام (OpenGram) چیست؟ چرا تلگرام بدون فیلتر اندروید را عرضه می کند؟
تلگرام ایکس (Telegram X) تقلبی به عنوان نسخه بدون فیلتر تلگرام در حال انتشار است!
جت گرام (JetGram) جدیدترین پوسته تلگرام طلایی!
آزادگرام (Azadgram) را نصب نکنید
???
اگر تلگرام طلایی سروراش به هیچ نهاد دولتی وصل نیست
پس کی کنترلش میکنه که فیلترشکن نمیکنن
یک فیلترشکن خوب میخوام واسه فردا بتونم بیام ترنجی کامنت بزارم
میدونم فردا صبح فیلترت میکنن خخخ
گیر دادی به این تلگرام آخرش خودتو هم میبرن
تشکر.
تقریبا ما هم خودمون به این موارد رسیده بودیم. حتی ما توی پیدا کردن مالک این اپلیکیشن، پا رو هم فراتر گذاشتیم و به سرنخ های خوبی هم رسیدیم.
به هر حال این دوستان هم زحمت کشیدن و تخصصی تر بررسی کردن. خسته نباشید میگم خدمتشون.
دیگه خلاصه همه کار میکنه این جاسوس افزار.
فقط دیگه مونده سایز کفش! کاربر رو ارسال کنه…
بعد وقتی میگیم تو این مملکت پنیر مجانی فقط تو تله موش پیدا میشه ناراحت جماعت میشن.
اقای عطا.یی میخواید دوباره سایت رو شیتلر کنند؟!
احسنت مستر عطایی دفعه پیش فیلتر شد سر همین کارای شخص شماها
بجاش چی نصب کنیم؟
مسنجری هست که بدون فیلترشکن و پروکسی بشه وارد شد؟
VPN پولی بگیریم؟
وی پی ان بخری ، بهترین راهه.
دمت گرم که لااقل شماها به این چیزا فکر میکنید و هشدار میدید
اصلا ماهیت این نرم افزار از همونجایی که هیچ نهاد یا ارگانی جلوی فعالیتش رو نمیگیره مشخصه، با توجه به اینکه تلگرام با تدابیر سرسختانه ای فیلتر شده اینکه یک شرکت فیلتر تلگرام رو دور بزنه و کسی کاری باهاش نداشته باشه مشخصه که پشتش به جایی گرمه و یا اینکه اطلاعات کاربران رو میدزده
توی این شرایط که حتی فیلترشکن ها هم فیلتر میشن این مورد که فیلتر تلگرام رو دور میزنه و کسی کاری باهاش نداره مشخص میکنه که قضیه از چه قراره
درود و سلام بر سینا خان عزیز
یه چنتا سؤال داشتم ، ممنون میشم اگه جواب بدید !!!!
امروز ، یه پیامی برام اومد ، حاوی این مضنون ؛ شهروند گرامی ، کد رایگان 113 رو بخاطر بسپارید . وزارت اطلاعات
میخواستم بدونم جریانش چیه اصلا ؟؟؟؟
برای شما هم اومده ؟؟؟؟
منظورش چیه دقیقاً ؟؟؟؟
قبلن برام نمیومد ، فقط دیروز برام اومده !!!!
سلام وقت بخیر
پیامک بوده؟
نمی دونم، احتمالا یه چیز عمومی هست
آره از طریق پیامک به شمارم ارسال شده !!!! یعنی برای همه ارسال میکنن ؟؟؟؟ منظورشون از این کار چی میتونه باشه ؟؟؟؟ یعنی میخوان بگن ما شمارو از راه دور کنترل میکنیم و میدونیم که داری از تلگرام استفاده میکنی ، به همین خاطر با روی خوش از تلگرام خارج شو !!!! ?
یا مثلاً مردم عادی و کوچه بازاری ناخودآگاه از اسم وزارت اطّلاعات بترسن و برای جان خودشون هم که شده به صورت اجبار خارج بشن ؟؟؟؟
نه یک چیز عمومی هست دیگه، محض یادآوری
و اینکه ، امنیت واتس اپ بیشتره یا تلگرام ؟؟؟؟
یعنی امکانش هست من استوری و پروفایل و استاتوس هایی که تو واتس اپ میذارم ، کسی کنترلش کنه ؟؟؟؟
اگه امکانش وجود داره ، راه حلی وجود داره که از حریم خصوصیم محافظت کنم ؟؟؟؟
بابت زحماتی که میکشید ، کمال تشکر و قدردانی را دارم.
فقط اگه امکانش هست ، جواب سؤالاتمو جز به جز ازتون میخوام.
منتطر پاسختونم.
یا علی.
به صورت کلی واتس اپ ایمن تر می تونه باشه در حالت عادی
در هر صورت از تایید دو مرحله ای استفاده کنید در تمام سرویس هایی که این امکان رو دارن
منظورتون همون Two – Step Verification هست ؟؟؟؟ اتّفاقن فعّال کردم !!!! یعنی دیگه هیچ مشکلی پیش نمیاد ؟؟؟؟ منظورم نفوذ و هک رمز دوّمه ؟؟؟؟
بله دقیقا
اگر رمز دوم قابل حدس نداشته باشید، خیر
سلام من دیشب با نسخه تلگرام ویندوز کار میکردم یه نیم ساعت برنامه رو بستم و دوباره باز کردم دیدم لاگ اوت شدم!درصورتی که لاگ اوت نکرده بودم بعد که برنامه رو باز کردم دیدم از یه ناشناس که شمارشم نیفتاده بود یه ایموجی فرستاده بود البته ایموجی برای من مربع اومده بود.یعنی منو هک کردن؟؟دیروز غروب یه چنددقه تلگرام طلایی روی تبلت نصب و بعدش پاک کرده بودم!!
سلام وقت بخیر
سشن (seassion) هاتون رو چک کنید
سلام همون دیشب چک کردم همش مال خودم بود !!بعدش سریع رمز دومرحله ای گذاشتم!!حالا بنظرشما هک بود؟
فکر نمی کنم، خیر
تو این وضعیت دیگه ما بی خیال امنیت شدیم ???
سلام.
جناب عطایی امکان بررسی امنیت پیامرسانهای ایرانی هم هست؟ نظیر بیسفون و آی گپ که مدعی امنیت ، پروتکل اختصاصی و رمزنگاری هستند؟
سلام وقت بخیر
باید با دوستانم صحبت کنم