هک تلگرام پارت 3

Mestercomuter Mestercomuter Mestercomuter · 1 اسفند · خواندن 5 دقیقه

چند وقت پیش داشتم رفتار لینک‌های t.me/proxy رو روی نسخه‌های Android و iOS تلگرام از زاویه شبکه بررسی می‌کردم. هدفم این بود ببینم دقیقاً قبل و بعد از فعال شدن پروکسی چه اتفاقی روی لایه TCP میفته.
نتیجه یه نکته جالب داشت:
وقتی روی لینک پروکسی کلیک میشه، قبل از اینکه پروکسی فعال بشه، تلگرام یه اتصال مستقیم به سرور مقصد برقرار می‌کنه.
و این اتصال با IP واقعی کاربر انجام میشه.
یعنی حتی اگر کاربر در نهایت روی «Connect» نزنه، همون لحظه‌ای که صفحه Add Proxy باز میشه، یه TCP handshake از سمت دستگاه به سرور زده شده.

البته یک ویدیو هم منتشر کردم ازش 

که تو تلگرام اینجا کلیک کنید میتونید ببینید . 

تو شرایط فعلی و وضعیت اینترنت چون پیوی منو پر کردید یکی از بچه های تیم تو روبیکا ویدیو رو گذاشته ببینید اینجا هست  تصویر کاور بلاگمونم تو سرور خارجی بوده پریده تا نتا وصل بشه کپ نکنید چرا این شکلیه جادوگری نکردم بلاگیس رو 🤣

تو لینک دین منم هست که ترجیح می دم اونو ندم برگدیم به بحث


دقیقاً پشت صحنه چه اتفاقی میفته؟

بیایم از دید فنی نگاه کنیم.
وقتی لینک باز میشه، تلگرام باید تصمیم بگیره که:
آیا سرور در دسترسه؟
آیا پورت بازه؟
آیا ارتباط TCP برقرار میشه؟
برای همین یه Reachability Check انجام میده.
اما چون هنوز پروکسی فعال نشده، مسیر خروجی شبکه همون مسیر پیش‌فرض سیستمه.
یعنی:
DNS resolve میشه (اگر hostname باشه)
یه SYN به سمت سرور ارسال میشه
handshake کامل یا نیمه‌کامل انجام میشه
همین.
هیچ تونل‌سازی‌ای وجود نداره چون هنوز پروکسی فعال نشده.
این از نظر منطقی قابل درکه.
ولی از نظر Threat Modeling یه نکته مهم داره:
IP کاربر قبل از اینکه خودش تصمیم بگیره پروکسی رو فعال کنه، به سرور مقصد رسیده.

بیا ادامه مطلب 

افشای IP در لینک‌های t.me/proxy تلگرام

افشای IP از طریق لینک‌های t.me/proxy در تلگرام — یه رفتار طراحی که می‌تونه تبدیل به بردار شناسایی بشه


در حالت عادی شاید مهم به نظر نرسه.
ولی اگر سناریو رو کمی تغییر بدیم، موضوع جدی میشه.
فرض کن:
مهاجم یه سرور در اختیار داره
یه لینک پروکسی می‌سازه
لینک رو پشت یه نام کاربری معتبر یا یه URL فریبنده پنهان می‌کنه
کاربر فقط کلیک می‌کنه
همین.
در همون لحظه:
IP واقعی ثبت میشه
ASN و ISP قابل استخراج میشه
موقعیت جغرافیایی تقریبی به دست میاد
میشه کاربر رو با دیتابیس‌های دیگه correlate کرد
کاربر شاید اصلاً متوجه نشه که یه اتصال مستقیم زده شده.

اینجوری میشه که آدرس آی‌پی شما تو تلگرام با پروکسی لو می‌ره جالبیش اینجاست که این ایده اینجوری تو ذهنم اومد چجوری روی سیستم من پروکسی ping 300 داره با aspi A مثلا و روی گوشی با aspi B و سیم‌کارت پینگ دیگه ای میده داره پینگ رو بر چه اساسی میده ؟ 

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


بازتولید عملی (همون چیزی که خودم تست کردم)

  • یه VPS یا هر سروری با Public IP
  • دسترسی به لاگ اتصال‌ها
  • تلگرام Android یا iOS
  • VPN خاموش (برای دیدن IP واقعی)

    مرحله ۱ — آماده‌سازی سرور

    روی سرور یه پورت باز کن. مثلاً 8443.

    لازم نیست MTProto واقعی اجرا کنی.

    ما فقط می‌خوایم ببینیم اتصال زده میشه یا نه.

مثلاً:

tcpdump -nni any port 8443

یک روش دیگه هم هست 

nc -lvnp 8443

من خودم اینو رفتم برای دیدن source ip 


مرحله ۲ — ساخت لینک تست

https://t.me/proxy?server=IP_SERVER&port=8443&secret=abcdef1234567890abcdef1234567890

IP_SERVER رو با IP سرورت عوض کن.

secret فقط باید فرمت hex داشته باشه.


مرحله ۳ — اجرای تست

VPN گوشی خاموش باشه

لینک رو باز کن

تلگرام صفحه Add Proxy رو نشون میده

حتی Connect هم نزن

در همین لحظه اتصال تست زده میشه.


مرحله ۴ — مشاهده در tcpdump

خروجی چیزی شبیه این میشه:

IP 1.2.3.4.52341 > YOUR_SERVER.8443: Flags [S]

اون IP همون IP واقعیه.

اگر handshake کامل بشه، SYN/ACK هم می‌بینی.

اگر سرور پاسخ نده، فقط SYN دیده میشه.

در هر صورت، IP ثبت شده.

اگر بخوای دقیق‌تر زمان‌بندی رو ببینی:

tcpdump -nni any host IP_USER

بعد لینک رو باز کن.

می‌بینی دقیقاً همزمان با باز شدن صفحه پروکسی، SYN ارسال میشه.
این یه اتصال TCP ساده‌ست.
هیچ دیتای حساس کاربر رد و بدل نمیشه.
صرفاً یه تست دسترس‌پذیریه.
و مهم‌تر از همه: tcpdump روی سرور خودته. کلاینت هیچ راهی برای تشخیص اینکه تو داری ترافیک ورودی رو مانیتور می‌کنی نداره.


آیا این باگ امنیتیه؟

اینجا باید دقیق حرف زد.

این یه Remote Code Execution نیست.

یه Memory Corruption هم نیست.

حتی یه Authentication Bypass هم نیست.

این یه IP Disclosure Behavior ناشی از طراحی کلاینته.

تلگرام قبل از فعال‌سازی پروکسی، سرور رو تست می‌کنه.

این رفتار منطقیه.

اما از دید امنیتی، یه Trade-off بین UX و Privacy ایجاد می‌کنه.

سطح ریسک چقدره؟

برای کاربر معمولی: ریسک پایین تا متوسط.

برای کسی که روی ناشناس‌بودن حساب کرده:

  • فعالان
  • روزنامه‌نگارها
  • پژوهشگرهای امنیت
  • کاربران در محیط‌های پرریسک
  • هکر هامون
  • ناشناس 

ریسکمی‌تونه بالا باشه.
چون یه کلیک ساده می‌تونه IP رو افشا کنه.

در کل به صورت خلاصه 

با کلیک روی t.me/proxy

قبل از فعال شدن پروکسی

یه اتصال مستقیم TCP به سرور مقصد برقرار میشه

IP واقعی کاربر ثبت میشه

حتی اگر کاربر Connect نزنه

این یه باگ کلاسیک نیست، ولی یه رفتار قابل سوءاستفاده‌ست.

تنها راه جلوگیری استفاده همزمان پروکسی و vpn  

MR.COM