KuoroshRZ
KuoroshRZ
خواندن ۶ دقیقه·۵ سال پیش

فیشینگ! فقط اطلاع رسانی و عقب نشینی یا حمله و گمراه کردن هکر؟

اکثر ما با حمله فیشینگ آشنا هستیم و همه روزه اخبار و مطالب زیادی در مورد وبسایت های جعلی می بینیم و می شنویم و همچنین مطالب زیادی در مورد روش های مقابله با حملات فیشینگ در اینترنت و رسانه های مجازی و تلویزیون و رادیو و انواع رسانه ها موجود هستند که خب تقریبا اساس تمامی آن ها این است که "مراقب باشید در دام نیفتید! همین و بس" ولی آگاهی اکثر مردم در این زمینه کافی نبوده و اکثرا با انتشار یک سایت فیشینگ جدید به عنوان مثال در زمینه یارانه که اخیرا مواجه شدم، سعی در سرقت اطلاعات مردم می کنند که خب اکثرا موفقیت آمیز هستند.

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

فرض کنید در حال چرخ در اینستاگرام و یا تلگرام هستید که با یک صفحه فیشینگ جدید مواجه می شوید یا به عنوان مثال در مورد قطعی یارانه پیامک برای شما می آید در فلان سایت مشخصات خود را ثبت نموده و با پرداخت ۱۰۰۰ تومان ناقابل از قطع شدن یارانه خود جلوگیری کنید!!!! خب الان چه کار می شود کرد؟

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

چه کار می شود کرد تا دشمن فرضی ما به اهداف خود نرسد. بیایید شرایط را کمی بدترش کنیم. فرض کنید تعدادی اطلاعات توسط قربانی های مختلف در سایت ثبت شده و دشمن فرضی به اطلاعات قربانی ها دسترسی دارد! چه می شود کرد؟ آیا باز اطلاع رسانی و افزایش آگاهی؟ متاسفانه کمی دیر شده (نوش دارو پس از مرگ سهراب!).

قبل از اینکه بخواهم در مورد راه حل مد نظر توضیحی بدهم اول اجازه بدید مفهومی رو در امنیت کامپیوتر معرفی کنم و توضیح مختصری در موردش بدهم.




فریب (Deception)

در کل کلمه فریب یا اصطلاح deception در کامپیوتر به مجموعه ای از اعمال و ابزارها و روش ها گفته می شود تا یک مهاجم را که به داخل یک سازمان فرضی A نفوذ کرده، فریب داده و بتوانیم در موقعیت مناسب شناسایی کنیم. اگر ساده تر بخواهیم بیان کنیم در decetion قصد داریم دشمن فرضی داستان را به سمت تله هایی که می تواند سیستم جعلی و یا داده های جعلی باشد کشانده و با دسترسی آن ها توسط مهاجم بتوانیم وی را شناسایی کنیم. یکی از رایج ترین نوع ابزار ها برای فریب هانی‌پات ها(honeypot) می‌باشند که نفوذگر با مشاهده آن ها که یک سرویس جعلی هستند وسوسه شده و سعی در دسترسی به آن سرویس یا پایگاه‌داده کند و با این دسترسی شناسایی می شود. یکی از نکات بسیار مهم در deception نزدیک تر بودن هر چه بیشتر تله مورد نظر به واقعیت است.



فریب در سه سطح انجام می شود

  • 1) شبکه (ایجاد یک شبکه فیک و جعلی و به دام انداختن نفوذگر داخل شبکه) قرار دادن decoy
  • 2) سیستم انتهایی (ایجاد و راه اندازی سیستم و یا سرویسی جعلی و شناسایی نفوذگر به واسطه دسترسی به سیستم) قرار دادن honeypot
  • 3) داده (ایجاد داده های جعلی در قالب یک پایگاه داده و شناسایی نفوذگر از طریق دسترسی به پایگاه داده) قرار دادن honeytoken

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

1234-5678-1234-5678
2222-2222-2222-2222
2468-1357-2468-1357
5454-5764-7675-6476

طبیعی هست که مهاجم با دیدن این اطلاعات کارتی متوجه می شود جعلی هستند و همانطور که گفتیم اطلاعات جعلی باید در حد امکان به واقعیت نزدیک باشند. حال بیاید مثال دیگری در نظر بگیریم:

0676-1771-3948-8115
2181-4386-0972-7447
2385-7350-8304-8146
3055-2700-2992-8193

اطلاعات کارتی بالا به نظر معتبر می آیند ولی طبق این مطلب شماره کارت ها ساختار مشخصی دارند که مهاجم اگر کمی ماهر باشد می تواند با نوشتن یک script اقدام به صحت سنجی این شماره کارت ها کند و در نهایت متوجه می شود شماره کارت ها معتبر نیستند.

یک قدم نیز پیشتر می رویم و شماره کارت هایی تولید کرده و در پایگاه داده قرار می دهیم که شرایط معتبر بودن شماره کارت ها را داشته باشند. شماره کارت های زیر توسط script مربوط به الگوریتم تولید شده و همگی معتبر هستند

0576-4802-3980-4618
1693-7622-6122-6455
9796-9161-0730-3030
9941-6015-3945-9147
8151-7941-3393-2556

برای اطمینان بیشتر می توانیم ۶ رقم اول را که شناساگر بانک و نوع حساب مورد نظر هست، از بانک های خاصی انتخاب کرده تا کاملا به واقعیت نزدیک باشند به عنوان مثال بانک آینده با ارقام ۶۳۶۲۱۴ شروع می شوند (اگر اشتباه نکنم!)

6362-1480-6756-4464
6362-1454-6662-1457
6362-1453-1086-3610
6362-1490-1206-7454
6362-1457-5121-1741
6362-1459-4464-8510

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

همانطور که مشاهده کردید deception در سطح داده دشوارترین و موثرترین نوع deception می باشد که مهاجم به دلیل شباهت بسیار زیاد به داده های معمولی فریب می خورد.



راه حل پیشنهادی

خب زیاد از ماجرای اصلی دور شدیم این deception چه ارتباطی به فیشینگ و مقابله با آن دارد؟! سناریوی زیر را برای یک درگاه پرداخت جعلی در نظر بگیرید:

یک برنامه می نویسیم که طبق موارد گفته شده شماره کارت های جعلی مربوط به بانک خاص یا چندین بانک را تولید کند که کاملا همانند شماره کارت واقعی هستند و همچنین با استفاده از کلمه عبور دوم و cvv2 و ماه و سال انقضای جعلی و تصادفی اقدام به فرستادن این اطلاعات جعلی به سایت فیشینگ کنیم.نه در حد ۵ تا ۱۰ تا بلکه در حد چندین هزار (به دلیل نبود عبارت امنیتی مناسب این کار امکان پذیر هست).

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


این صرفا یک مثال برای موارد بانکی بود. می توان این مثال را برای موارد دیگر از جمله بیمه و دیگر اطلاعات حیاتی گسترش داد. فقط باید در نظر داشته باشیم که باید ساختار داده های جعلی تولیدی عین ساختار داده های مد نظر مهاجم(در این مثال شماره کارت و ...) باشد وگرنه مفهوم deception عملی نخواهد شد.

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

روش مذکور قبلا پیاده سازی شده و روی دو مورد سایت فیشینگ عملی شده است که یک نمونه از آن ها با فحاشی صاحب سایت فیشینگ پایان پذیرفت و اطلاعات واقعی ثبت شده را نیز از دست داد :)

با تشکر از وقتی که برای مطالعه گذاشتید امیدوارم مفید واقع شده باشد.

فیشینگامنیت اینترنتکلاهبرداریهک
شاید از این پست‌ها خوشتان بیاید