عنوان اصلی: “دزدی کریسمس | تحلیل هک کیف پول افزونه تراست والت”
منبع: اسلو میست تکنولوژی
پیشزمینه
امروز صبح زود به وقت پکن، @zachxbt پیامی در کانال منتشر کرد مبنی بر اینکه: “برخی کاربران تراست والت گزارش دادهاند که در چند ساعت گذشته داراییهای آدرس کیف پولشان به سرقت رفته است.” متعاقباً، حساب رسمی ایکس تراست والت نیز بیانیه رسمیای منتشر کرد که تأیید میکند نسخه ۲.۶۸ افزونه مرورگر تراست والت دارای ریسک امنیتی است و از همه کاربران نسخه ۲.۶۸ خواست بلافاصله آن نسخه را غیرفعال کرده و به نسخه ۲.۶۹ ارتقا دهند.
تاکتیکهای فنی
با دریافت این اطلاعات، تیم امنیتی اسلو میست به سرعت نمونههای مرتبط را تحلیل کرد. ابتدا کد اصلی نسخههای منتشرشده قبلی ۲.۶۷ و ۲.۶۸ را مقایسه میکنیم:
با مقایسه تفاوت کد دو نسخه، کد مخرب اضافهشده توسط هکر به شرح زیر شناسایی شد:
کد مخرب از همه کیفپولهای موجود در افزونه عبور میکند، برای هر کیف پول کاربر یک درخواست “بازیابی عبارت بازیابی” ارسال میکند تا عبارت بازیابی رمزگذاریشده را به دست آورد، و در نهایت آن را با استفاده از رمز عبور یا passkeyPassword واردشده توسط کاربر هنگام باز کردن قفل کیف پول، رمزگشایی میکند. اگر رمزگشایی موفقیتآمیز باشد، عبارت بازیابی کاربر به دامنه مهاجم `api.metrics-trustwallet[.]com` ارسال میشود.
ما همچنین اطلاعات دامنه مهاجم را تحلیل کردیم؛ مهاجم از دامنه زیر استفاده کرده بود: metrics-trustwallet.com.
با پرسوجو مشخص شد این دامنه مخرب در تاریخ ۲۰۲۵-۱۲-۰۸ ساعت ۰۲:۲۸:۱۸ ثبت شده و ثبتکننده دامنه: NICENIC INTERNATIONA بوده است.
در تاریخ ۲۰۲۵-۱۲-۲۱، اولین رکوردهای درخواست هدفگیریشده به سمت api.metrics-trustwallet[.]com ظاهر شدند:
این جدول زمانی با تاریخ کاشت در پشتی (۱۲.۲۲) در کد بسیار همخوانی دارد.
ما به ردیابی و تحلیل کد ادامه دادیم تا کل فرآیند حمله را بازسازی کنیم:
تحلیل پویا نشان میدهد که پس از باز کردن قفل کیف پول، اطلاعات عبارت بازیابی مهاجم را میتوان درون خطای موجود در R1 مشاهده کرد.
منبع این دادههای خطا از طریق فراخوانی تابع GET_SEED_PHRASE به دست میآید. در حال حاضر، تراست والت از دو روش بازکردن قفل پشتیبانی میکند: رمز عبور و passkeyPassword. مهاجم رمز عبور یا passkeyPassword را هنگام بازکردن قفل به دست میآورد، سپس GET_SEED_PHRASE را فراخوانی میکند تا عبارت بازیابی (کلیدهای خصوصی به روشی مشابه پردازش میشوند) کیف پول را بازیابی کند و عبارت بازیابی را درون ‘errorMessage’ قرار میدهد.
در زیر کدی است که از emit برای فراخوانی GetSeedPhrase استفاده میکند، دادههای عبارت بازیابی را بازیابی کرده و آن را در خطا قرار میدهد.
تحلیل ترافیک انجامشده با BurpSuite نشان میدهد که پس از بهدست آوردن عبارت بازیابی، آن در فیلد errorMessage بدنه درخواست کپسوله شده و به سرور مخرب (https[://]api[.]metrics-trustwallet[.]com) ارسال میشود که با تحلیل قبلی مطابقت دارد.
از طریق فرآیند فوق، سرقت عبارتهای بازیابی/کلیدهای خصوصی تکمیل میشود. علاوه بر این، به احتمال زیاد مهاجم با کد منبع افزونه آشناست و از پلتفرم تحلیل محصول متنباز تماممرحلهای PostHogJS برای جمعآوری اطلاعات کیف پول کاربران سوءاستفاده کرده است.
تحلیل داراییهای سرقتشده
(https://t.me/investigations/296)
بر اساس آدرسهای هکر افشاشده توسط ZachXBT، آمارهای ما نشان میدهد که تا زمان نگارش این متن، کل داراییهای سرقتشده در زنجیره بیتکوین حدود ۳۳ بیتکوین (به ارزش تقریبی ۳ میلیون دلار آمریکا)، داراییهای سرقتشده در زنجیره سولانا حدود ۴۳۱ دلار آمریکا و داراییهای سرقتشده در شبکه اصلی اتریوم و زنجیرههای لایه ۲ مختلف حدود ۳ میلیون دلار آمریکا ارزش دارند. پس از سرقت داراییها، هکر بخشی از آنها را با استفاده از صرافیهای متمرکز و پلهای متقاطع زنجیرهای مختلف منتقل و مبادله کرده است.
خلاصه
این حادثه در پشتی ناشی از تغییرات مخرب کد منبع درون کدبیس داخلی افزونه تراست والت (منطق سرویس تحلیل) بوده است، نه معرفی بستههای عمومی سوم شخص دستکاریشده (مانند بستههای npm مخرب). مهاجم مستقیماً کد خود برنامه را دستکاری کرده و از کتابخانه قانونی PostHog برای هدایت دادههای تحلیلی به یک سرور مخرب سوءاستفاده کرده است. بنابراین، ما دلیلی داریم که باور کنیم این یک حمله APT پیچیده است و مهاجم ممکن است قبل از ۸ دسامبر، بر مجوزهای دستگاه توسعهدهنده مرتبط با تراست والت یا مجوزهای استقرار انتشار کنترل یافته باشد.
توصیهها:
۱. اگر کیف پول افزونه تراست والت را نصب کردهاید، باید بهعنوان پیشنیاز بررسی و عملیات، بلافاصله از اینترنت قطع شوید.
۲. بلافاصله کلیدهای خصوصی/عبارت بازیابی خود را صادر کرده و کیف پول افزونه تراست والت را حذف کنید.
۳. پس از پشتیبانگیری از کلیدهای خصوصی/عبارت بازیابی خود، در اسرع وقت داراییهای خود را به یک کیف پول دیگر منتقل کنید.
