فیشینگ در کریپتو: راهنمای فنی تشخیص و پیشگیری از حملات
در بازارهای مالی سنتی، اگر تراکنشی جعلی از حساب شما برداشت شود، بانک میتواند تراکنش را برگرداند یا بیمه سپرده وارد عمل شود. در دنیای کریپتو این مکانیزم وجود ندارد. هر امضایی که روی یک تراکنش یا پیام قرار میگیرد، غیرقابل بازگشت است و همین ویژگی — که ستون فقرات اعتماد به بلاکچین است — کریپتو را به هدف شماره یک حملات فیشینگ تبدیل کرده است. مهاجم فقط به یک امضای اشتباه نیاز دارد، نه دسترسی به رمز عبور بانکی یا کد تأیید پیامکی.
در این مقاله، بهجای مرور سطحی «مراقب لینک مشکوک باشید»، مکانیزم فنی حملات فیشینگ رایج در کریپتو را باز میکنیم: از فریب بصری آدرسها گرفته تا تأییدیههای قرارداد هوشمند و روشهای عملی برای شناسایی آنها پیش از امضا.
چرا کریپتو مقصد اصلی فیشینگ است؟
سه ویژگی بلاکچین باعث میشود فیشینگ در این حوزه بهصرفهتر از هر جای دیگر باشد:
- برگشتناپذیری تراکنشها: بعد از تأیید یک بلاک، هیچ نهاد مرکزی نمیتواند تراکنش را باطل کند.
- شفافیت عمومی کیف پولها: هر آدرسی که با NFT گرانقیمت یا موجودی بالا تعامل کند، در معرض دید عموم است و میتواند هدفگذاری شود (این کار را ابزارهایی مثل Etherscan Whale Alert یا اسکریپتهای on-chain برای مهاجمان ساده میکنند).
- پیچیدگی فنی امضای تراکنشها: بسیاری از کاربران معنای دقیق فیلدهایی مثل
approve،permitیاsetApprovalForAllرا نمیدانند و همین شکاف دانشی، سطح حمله (attack surface) را گسترش میدهد.
نتیجه عملی این سه عامل، رشد اکوسیستمی از ابزارهای «Drainer-as-a-Service» است — کیتهای آمادهای که به مهاجمان کممهارت اجازه میدهند در عرض چند ساعت یک سایت فیشینگ کامل با قابلیت خالیکردن کیف پول راهاندازی کنند.
آناتومی حملات: از ایمیل جعلی تا Wallet Drainer
حملات فیشینگ کریپتویی را میتوان در چند دسته فنی طبقهبندی کرد:
1. Typosquatting و Homoglyph Attack
مهاجم دامنهای با تفاوت یک کاراکتر ثبت میکند (مثلاً traderyar.com در برابر tradeyar.com) یا از کاراکترهای یونیکد مشابه حروف لاتین استفاده میکند (حمله Homoglyph). این دامنهها معمولاً با پیشوند Punycode ثبت میشوند (xn--) که در نوار آدرس مرورگرهای قدیمیتر بهشکل حروف عادی نمایش داده میشود.
2. Fake Airdrop / Approval Drainer
کاربر ایمیل یا توییتی دریافت میکند مبنی بر اینکه واجد شرایط توکن رایگان است. لینک به سایتی میرود که بهجای انتقال توکن، تابع approve یا permit را برای قرارداد مهاجم فرا میخواند و اجازهٔ برداشت نامحدود توکن را میگیرد.
3. Address Poisoning
مهاجم تراکنشی با مقدار ناچیز (حتی صفر) به کیف پول قربانی ارسال میکند، از آدرسی که چند کاراکتر ابتدایی و انتهاییاش شبیه یکی از آدرسهای اخیر تراکنشهای قربانی است. هدف این است که وقتی کاربر بعداً از تاریخچه تراکنش کپی-پیست میکند، آدرس اشتباه را انتخاب کند.
4. Fake Customer Support
در تلگرام، دیسکورد یا حتی زیر توییتهای پروژههای معتبر، حسابهایی خود را پشتیبانی جا میزنند و کاربر را به «اتصال کیف پول برای رفع مشکل» ترغیب میکنند — در حالیکه هیچ پشتیبانی واقعی هرگز درخواست اتصال کیف پول یا Seed Phrase نمیکند.
5. Malicious Browser Extensions
افزونههای جعلی که خود را نسخهٔ بهبودیافتهٔ MetaMask یا ابزارهای تحلیل نمودار جا میزنند، کلیدهای خصوصی ذخیرهشده در حافظهٔ مرورگر یا کلیپبورد را میخوانند.
Address Poisoning: ریاضیات پشت یک فریب ظریف
این حمله بر پایهٔ یک محاسبهٔ ساده احتمالاتی کار میکند که دانستنش به شما کمک میکند خطر واقعی آن را بسنجید.
یک آدرس اتریوم از 40 کاراکتر هگزادسیمال (16 حالت ممکن برای هر کاراکتر) تشکیل شده است. برای تولید آدرسی که فقط 4 کاراکتر ابتداییاش با آدرس هدف یکسان باشد، بهطور میانگین باید 16^4 = 65,536 آدرس تصادفی تولید و بررسی شود. ابزارهای Vanity Address Generator مثل profanity2 با استفاده از GPU میتوانند روی سختافزار متوسط چیزی در حدود 1 میلیون آدرس در ثانیه تولید کنند؛ یعنی تطبیق 4 کاراکتر کمتر از یک ثانیه زمان میبرد.
مهاجمان حرفهای فراتر میروند و هم 4 کاراکتر ابتدایی و هم 4 کاراکتر انتهایی را تطبیق میدهند (الگویی که در اکثر کیفپولها هنگام نمایش کوتاهشدهٔ آدرس دیده میشود، مثل 0x8a3F...9dE2). فضای این تطبیق برابر است با 16^8 = 4,294,967,296. با فرض سرعت تولید 1 میلیون آدرس در ثانیه، این یعنی حدود 4,295 ثانیه، یا تقریباً 72 دقیقه پردازش GPU — کاملاً در دسترس یک مهاجم با بودجهٔ محدود. این عدد نشان میدهد چرا هرگز نباید صرفاً بر پایهٔ شباهت ظاهری ابتدا و انتهای آدرس، یک آدرس را از تاریخچهٔ تراکنش کپی کرد؛ همیشه باید کل رشته را تطبیق داد یا از دفترچهٔ آدرس (Address Book) کیف پول استفاده کرد.
تأییدیههای قرارداد هوشمند: نقطهٔ کور اکثر کاربران
بخش عمدهای از سرقتهای بزرگ کریپتویی نه از طریق سرقت کلید خصوصی، بلکه از طریق تأییدیههای امضاشدهٔ خود قربانی رخ میدهد. دو تابع کلیدی در استاندارد ERC-20 و ERC-721 مسئول این آسیبپذیریاند:
approve(spender, amount): به آدرسspenderاجازه میدهد تا سقفamountاز توکن شما را جابهجا کند. بسیاری از دپها بهجای مقدار مشخص، از مقدار2^256 - 1(تقریباً بینهایت) استفاده میکنند تا کاربر مجبور به تأیید مجدد نشود — همین «راحتی» دقیقاً همان چیزی است که drainer ها از آن سوءاستفاده میکنند.setApprovalForAll(operator, true): برای NFT ها، این تابع به یک آدرس اجازه میدهد تمام NFT های یک مجموعه را در کیف پول شما جابهجا کند، نه فقط یکی.
وقتی سایت فیشینگ شما را به امضای یکی از این دو تابع ترغیب میکند، هیچ دارایی بلافاصله جابهجا نمیشود — و همین موضوع، این حمله را خطرناکتر میکند، چون کاربر حس نمیکند اتفاقی افتاده است. مهاجم میتواند هفتهها یا ماهها بعد، در زمان دلخواه خودش، دارایی را برداشت کند.
نشانهٔ فنی هشداردهنده: اگر پنجرهٔ امضای کیف پول شما عبارت Approve یا Set Approval For All را نمایش میدهد اما در همان لحظه انتظار دریافت یک NFT یا توکن رایگان دارید، این یک تناقض منطقی است — دریافت دارایی هرگز نیازمند اعطای اجازهٔ برداشت نیست.
چکلیست فنی برای تشخیص یک لینک یا سایت فیشینگ
پیش از اتصال کیف پول به هر سایتی، این موارد را بهترتیب بررسی کنید:
- سن دامنه: از ابزارهایی مثل WHOIS سن دامنه را چک کنید؛ اکثر سایتهای فیشینگ کمتر از چند هفته عمر دارند.
- گواهی SSL و ناشر آن: قفل سبز بهتنهایی چیزی ثابت نمیکند، اما نبود HTTPS یا گواهی خودامضا (self-signed) هشدار جدی است.
- بررسی Punycode: اگر آدرس نوار مرورگر با
xn--شروع میشود یا کاراکترهای غیرمعمول دارد، بلافاصله خارج شوید. - تطبیق دقیق آدرس قرارداد: قبل از تعامل با هر دپ، آدرس قرارداد اصلی را از منبع رسمی پروژه (نه از نتیجهٔ گوگل) با آنچه در کیف پول نمایش داده میشود مقایسه کنید.
- بررسی وضعیت Verified در بلاکاکسپلورر: در Etherscan یا BscScan، تب Contract باید نشاندهندهٔ Verified بودن سورسکد باشد؛ قرارداد تأییدنشده بهمعنای کد پنهان است.
- رفتار غیرمنتظرهٔ پاپآپ کیف پول: اگر برای «Claim» یک ایردراپ رایگان، پنجرهٔ کیف پول درخواست
ApproveیاPermitمیدهد نهTransfer، این ناسازگاری منطقی، نشانهٔ قطعی drainer است.
برای یادگیری عمیقتر دربارهٔ نحوهٔ خواندن پیامهای امضای کیف پول و تشخیص فیلدهای مشکوک، آموزشهای تخصصی آکادمی تریدیار منبع خوبی برای شروع است.
ابزارها و روشهای شبیهسازی تراکنش پیش از امضا
بهترین دفاع، دیدن نتیجهٔ تراکنش پیش از امضای واقعی آن است. چند رویکرد عملی:
- شبیهسازهای تراکنش (Transaction Simulation): افزونههایی مانند Pocket Universe یا Wallet Guard، پیش از امضا، اثر واقعی تراکنش را روی موجودی شما پیشبینی و در قالب زبان ساده نمایش میدهند (مثلاً «این تراکنش اجازهٔ برداشت تمام NFT های مجموعهٔ X را به آدرس Y میدهد»).
- داشبورد مدیریت تأییدیهها: با ابزارهایی مثل Revoke.cash میتوانید فهرست کامل approval های فعال کیف پول خود را ببینید و مواردی با سقف نامحدود یا مربوط به دپهای غیرفعال را لغو (Revoke) کنید. توصیه میشود این بررسی را بهصورت دورهای، حداقل ماهی یکبار، برای هر کیف پول فعال انجام دهید.
- کیف پول سختافزاری با نمایش کامل داده: کیف پولهای سختافزاری که پیام امضا را بهصورت خام (raw calldata) روی صفحهٔ خودشان نمایش میدهند (نه فقط هش آن)، لایهٔ دفاعی مهمی هستند، چون مهاجم نمیتواند صفحهٔ نمایش کامپیوتر را جعل کند اما صفحهٔ دستگاه سختافزاری مستقل باقی میماند.
- کیف پولهای جداگانه بر اساس ریسک: یک کیف پول «تعامل» با موجودی کم برای تست دپهای جدید و یک کیف پول «نگهداری» که هرگز به سایت ناشناخته وصل نمیشود.
سطح صرافی و نهادی: چگونه سیستمها الگوی فیشینگ را شناسایی میکنند
فراتر از اقدامات فردی، صرافیها و پلتفرمهای تحلیلی از چند روش سیستماتیک برای شناسایی الگوهای مرتبط با فیشینگ استفاده میکنند:
- تحلیل خوشهای آدرس (Address Clustering): اگر دهها آدرس قربانی متفاوت، ظرف چند دقیقه، دارایی خود را به یک آدرس واحد منتقل کنند، این الگو با احتمال بالا نشانهٔ یک drainer فعال است.
- پایش ناهنجاری در حجم Approval: افزایش ناگهانی تعداد تراکنشهای
approveبا سقف نامحدود به یک قرارداد تازهاستقراریافته (Deploy شده در همان روز)، سیگنال قوی ریسک محسوب میشود. - فهرستهای سیاه بهروزرسانیشونده: بسیاری از کیف پولهای مرورگری (مثل MetaMask با موتور Blockaid) پیش از اتصال، دامنه را در برابر فهرستی از دامنههای گزارششدهٔ فیشینگ بررسی میکنند.
اگر به دنبال دنبالکردن سیگنالهای on-chain مرتبط با حرکات مشکوک آدرسها یا ورود/خروج نهنگها هستید، بخش سیگنالهای تریدیار دادههای ساختیافتهای در این زمینه ارائه میدهد که میتواند مکمل بررسیهای دستی شما باشد.
نتیجهگیری
فیشینگ در کریپتو دیگر به یک ایمیل بیکیفیت با غلط املایی محدود نیست؛ به یک صنعت فنی با کیتهای آمادهٔ Drainer-as-a-Service، محاسبات دقیق برای جعل آدرس، و بهرهبرداری هوشمندانه از پیچیدگی توابع قرارداد هوشمند تبدیل شده است. دفاع واقعی نه در حفظ چند قانون کلی، بلکه در فهم مکانیزم فنی هر لایه از حمله نهفته است: چرا تطبیق ظاهری آدرس کافی نیست، چرا approve خطرناکتر از transfer است، و چرا شبیهسازی تراکنش پیش از امضا باید به یک عادت ثابت تبدیل شود.
سرمایهگذاری در یادگیری این مفاهیم، بهمراتب کمهزینهتر از جبران یک approval امضاشده برای مهاجم است. برای عمیقتر شدن در تحلیلهای امنیتی و بازار، سری آموزشهای بلاگ تریدیار را دنبال کنید.