آموزشامنیت در اینترنت

درس ۱۲ از ۲۴، شبکه و اینترنت، حدود ۲۶ دقیقه خواندن

لینک‌هایی که درست به نظر می‌رسن ولی تقلبین

جواب کوتاه

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

دو نشانی، یه شکل

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

چطوری ممکنه؟ نشانی که درست بود. جوابش اینه که نشانی برای چشم شما درست بود، نه برای کامپیوتر. این دو تا نشانی رو ببینید:

هر دو «apple.com» خونده می‌شن. ولی دومی یه سایت دیگه‌ست، و اسم واقعیش اون چیزیه که زیرش نوشته شده. سال ۲۰۱۷ یه پژوهشگر امنیت به اسم Xudong Zheng دقیقا همین دامنه رو ثبت کرد تا نشون بده مرورگرهای اون روز، کروم و فایرفاکس و اپرا، فرقش رو نشون نمی‌دن.

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

دوقلوهای همسان

کامپیوتر حرف نمی‌فهمه، عدد می‌فهمه. پس برای هر حرف و نشانه‌ای که توی دنیا نوشته می‌شه، یه شماره گذاشتن. اسم این جدول بزرگ یونیکد (Unicode)‌ئه. حرف‌های انگلیسی توش هستن، حرف‌های فارسی و عربی هستن، چینی، روسی، یونانی، ایموجی، همه. هر کدوم شماره‌ی خودش رو داره، که معمولا به شکل U+0061 نوشته می‌شه.

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

مثل دوقلوهای همسان. صورتشون یکیه، ولی کارت شناسایی هر کدوم یه شماره‌ی جدا داره. شما با دیدن صورت فرقشون رو نمی‌فهمید، ولی مامور ثبت احوال با دیدن کارت، همون لحظه می‌فهمه. چشم ما شکل رو می‌بینه، کامپیوتر کارت رو.

این دوقلوها کم نیستن. فقط بین انگلیسی و روسی، حرف‌های a، c، e، o، p، x، y و چند تای دیگه دوقلو دارن. الفبای یونانی هم چند تا داره، مثلا «ο» یونانی عین «o» انگلیسیه. کنسرسیوم یونیکد، یعنی همون گروهی که این جدول رو نگه می‌داره، یه فهرست رسمی از حروف هم‌شکل منتشر کرده که اسمش confusables‌ئه، یعنی «اونایی که با هم اشتباه گرفته می‌شن». مرورگرها از همین فهرست استفاده می‌کنن.

گاهی هم دوقلو از یه الفبای دیگه نیست؛ همون حرف انگلیسیه با یه علامت ریز. مثلا «é» که بالاش یه خط کوچیک داره، یا حرفی که یه نقطه‌ی ریز زیرش داره. روی صفحه‌ی گوشی، با فونت کوچیک، این علامت‌ها اصلا دیده نمی‌شن.

نشانی با حروف غیرانگلیسی

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

برای همین یه استاندارد ساختن به اسم IDN، کوتاه‌شده‌ی Internationalized Domain Name، یعنی «نام دامنه‌ی بین‌المللی». با IDN می‌شه دامنه رو با هر الفبایی ثبت کرد: فارسی، عربی، چینی، روسی، یونانی و بقیه. حتی کل پسوند هم می‌تونه غیرانگلیسی باشه؛ مثلا ایران از سال ۲۰۱۳ یه پسوند فارسی داره، .ایران، کنار همون .ir همیشگی.

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

ترجمه‌ی پشت صحنه

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

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

پس هر دامنه‌ای که حتی یه حرف غیرانگلیسی داره، یه اسم دوم هم داره که با xn-- شروع می‌شه. و نکته‌ی اصلی این درس همینه: اسم واقعی، همون اسم xn-- دار‌ئه. DNS همونو می‌شناسه، گواهی امنیت سایت برای همون صادر می‌شه، و سرور با همون پیدا می‌شه. اون چیزی که توی نوار نشانی می‌بینید، فقط شکل خوندنی اونه.

برای همین «apple.com» با «a» و «p» و «e» روسی، برای کامپیوتر هیچ ربطی به apple.com اصلی نداره؛ یه اسم کاملا جداست، با صاحب جدا، سرور جدا و گواهی جدا. فقط چشم ما این دو تا رو یکی می‌بینه.

یه نکته‌ی فنی کوچیک هم هست: هر تیکه‌ی نشانی، یعنی بین دو تا نقطه، حداکثر ۶۳ بایت می‌تونه باشه، و این ۶۳ تا رو شکل xn-- دارش حساب می‌کنن. برای همین اسم‌های غیرانگلیسی نمی‌تونن خیلی بلند باشن.

حمله چطوری ساخته می‌شه

کلاهبردار برای این حمله نه لازمه سایت اصلی رو هک کنه، نه به گوشی شما دست بزنه. همه‌ی کار چهار قدمه، و هر چهار تاش قانونی و ارزونه:

  1. یه دامنه ثبت می‌کنه که یکی دو تا حرفش دوقلوی حرف‌های سایت اصلیه. ثبت دامنه برای هر کسی آزاده و چند دقیقه طول می‌کشه.
  2. برای این دامنه گواهی امنیت (SSL) می‌گیره، که امروز رایگانه. حالا کنار نشانی قفل هم نشون داده می‌شه.
  3. ظاهر سایت اصلی رو کپی می‌کنه: لوگو، رنگ، صفحه‌ی ورود. کپی کردن ظاهر یه سایت چند دقیقه کاره.
  4. لینک رو برای آدم‌ها می‌فرسته: توی پیامک، ایمیل، پیام‌رسان، یا حتی یه تبلیغ.

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

شکل‌های مختلفش

این حمله چند تا شکل داره. زیر هر نمونه، حرف‌هایی که عوض شدن خط خوردن:

  • قاطیpaypal.comیه حرف روسی وسط حروف انگلیسی
  • تمام از یه الفبای دیگهapple.comهمه‌ی حروف اسم روسی
  • با نشانهgooglé.comیه حرف لاتین با یه علامت ریز روش
  • غلط‌املایی (بی IDN)rnicrosoft.comr و n کنار هم، به جای m

قاطی (mixed-script). بیشتر حروف انگلیسیه، ولی یکی دو تاش روسی یا یونانیه. مثلا سال ۲۰۰۵ چند پژوهشگر امنیت یه نسخه از paypal.com با «a» روسی ساختن و نشون دادن که بیشتر مرورگرهای اون روز فرقش رو نمی‌فهمن. این ساده‌ترین شکله، و امروز مرورگرها بیشترش رو می‌گیرن.

تمام از یه الفبای دیگه (whole-script). همه‌ی حروف اسم از یه الفبای دیگه‌ست، مثلا همه روسی، ولی چون همه‌شون دوقلوی انگلیسی دارن، کل اسم انگلیسی دیده می‌شه. همون نمونه‌ی apple.com سال ۲۰۱۷ از همین نوع بود، و چون قاطی نبود، از قانون‌های مرورگرهای اون روز رد شد.

با نشانه. حروف همه لاتینه، ولی یکیش یه علامت ریز داره. مثلا سال ۲۰۱۷ یه دامنه شبیه adobe.com ثبت شد که زیر «b» یه نقطه‌ی ریز داشت، و ازش برای پخش یه برنامه‌ی مخرب استفاده کردن.

غلط‌املایی، که به انگلیسی بهش می‌گن Typosquatting. این یکی اصلا IDN نیست و همه‌ی حروفش انگلیسیه، ولی از همون خطای چشم استفاده می‌کنه: «rn» کنار هم که از دور «m» دیده می‌شه، عدد «۱» انگلیسی به جای «l»، صفر به جای «o»، یا یه حرف اضافه، مثل goggle. این‌جا کامپیوتر هیچ کمکی نمی‌تونه بکنه، چون همه‌ی حروف مجازن. درس غلط‌املایی در دامنه کامل‌تر درباره‌ش حرف می‌زنه.

و یه شکل دیگه که هیچ حرف عوضی نداره، ولی باز هم چشم رو گول می‌زنه: اسم سایت اصلی رو اول یه نشانی طولانی می‌ذارن، مثل paypal.com.example.ir. پایین‌تر، توی بخش «اسم واقعی سایت»، می‌بینیم چرا این اصلا سایت paypal نیست.

لینک از کجا میاد

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

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

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

دوقلوهای فارسی

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

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

اینجا یه خبر خوب هست. ایرنیک، یعنی جایی که دامنه‌های .ir و .ایران رو ثبت می‌کنه، از سال ۲۰۰۵ یه جدول برای دامنه‌های فارسی داره. طبق این جدول، «ك» و «ي» عربی خودکار به «ک» و «ی» فارسی تبدیل می‌شن، عددهای عربی و انگلیسی به عدد فارسی تبدیل می‌شن، و نیم‌فاصله هم حساب نمی‌شه. یعنی کسی نمی‌تونه با عوض کردن «ی» یه دامنه‌ی فارسی دوم بسازه که عین مال شما باشه. ایرنیک تا پنج شکل شبیه یه اسم رو هم برای همون صاحب دامنه کنار می‌ذاره، تا کس دیگه‌ای نتونه ثبتشون کنه.

ولی این قانون فقط برای دامنه‌های ایرانیه. توی پسوندهای دیگه، مثل .com، این قانون‌ها نیست و هر پسوندی قانون خودش رو داره.

مرورگر چی کار می‌کنه

بعد از این همه سال، مرورگرها بی‌دفاع نیستن. هر بار که یه نشانی IDN باز می‌شه، مرورگر تصمیم می‌گیره که حروف خوندنیش رو نشون بده یا شکل xn-- دارش رو. مثل یه غربال که هر نشانی باید از توش رد بشه:

مثلا کروم از نسخه‌ی ۵۱ یه فهرست بلند از این بررسی‌ها داره، و اج هم از سال ۲۰۲۰ همون روش رو استفاده می‌کنه. به زبون ساده، چند تا از مهم‌ترین‌هاش اینان:

  • حروف لاتین، روسی و یونانی نباید توی یه تیکه از اسم قاطی بشن. اگه بشن، شکل xn-- نشون داده می‌شه.
  • اگه همه‌ی حروف روسی باشه ولی همه‌شون دوقلوی انگلیسی داشته باشن، و پسوند هم روسی نباشه، مثل همون apple.com سال ۲۰۱۷، باز xn-- نشون داده می‌شه.
  • مرورگر یه «اسکلت» (skeleton) از نشانی می‌سازه، یعنی هر حرف رو با دوقلوی ساده‌ش عوض می‌کنه، و اسکلت رو با فهرست سایت‌های پربازدید مقایسه می‌کنه. اگه شبیه یکیشون بود، باز xn--.
  • برای بعضی نشانی‌های خیلی شبیه به یه سایت معروف، یه صفحه‌ی هشدار کامل نشون داده می‌شه که می‌پرسه «منظورتون این سایت بود؟».

پس اگه یه روز توی نوار نشانی یه چیزی مثل xn--80ak6aa92e.com دیدید، این یعنی مرورگر به اسم شک کرده و داره اسم واقعی رو نشونتون می‌ده. اون لحظه هیچ اطلاعاتی وارد نکنید.

ولی این غربال صددرصدی نیست. هر چند وقت یه بار پژوهشگرها یه دوقلوی تازه پیدا می‌کنن که از قانون‌ها رد می‌شه، و مرورگر قانون تازه اضافه می‌کنه. غلط‌املایی‌ها هم که اصلا از غربال IDN رد نمی‌شن، چون IDN نیستن. سال ۲۰۱۹ یه گروه پژوهشی حدود ۴٫۴ میلیون دامنه‌ی IDN رو بررسی کرد و ۸٬۲۸۴ تا دامنه‌ی هم‌شکل با سایت‌های معروف پیدا کرد. یعنی این دامنه‌ها واقعا ثبت می‌شن، و شما نباید فقط به غربال تکیه کنید. برای همین مرورگرتون رو همیشه به‌روز نگه دارید؛ هر به‌روزرسانی قانون‌های تازه‌ی همین غربال رو هم با خودش میاره.

قفل چی رو می‌گه

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

قفل یعنی بین گوشی شما و اون سایت، راه رمزگذاری شده و کسی وسط راه نمی‌تونه حرف‌هاتون رو بخونه. یعنی سایت یه گواهی SSL معتبر داره، برای همون اسمی که باز شده. ولی برای اسم xn-- دار جعلی هم گواهی معتبر صادر می‌شه، چون اون اسم واقعا مال کلاهبرداره. قفل نمی‌گه این سایت مال کدوم شرکته، فقط می‌گه شما دارید امن با «همین سایت» حرف می‌زنید، هر کی که هست.

مثل این می‌مونه که یه نامه‌ی پلمب‌شده بدید دست یه پیک. پلمب نشون می‌ده وسط راه کسی بازش نکرده. ولی اگه از اول نامه رو به آدرس اشتباه فرستاده باشید، پلمب کمکی نمی‌کنه.

اسم واقعی سایت

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

توی این نمونه، «paypal.com» اول نشانیه، ولی فقط یه زیردامنه‌ست، یعنی یه پیشوند که صاحب example.ir هر چی دلش بخواد می‌تونه جلوی اسمش بذاره. سایتی که باز می‌شه، example.ir‌ئه. نشانی رو از سمت راست به چپ بخونید، از اولین «/» به عقب: پسوند، بعد اسم. همین دو تیکه اسم واقعیه.

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

درس خوندن نشانی سایت همه‌ی تیکه‌های نشانی رو یکی‌یکی توضیح می‌ده.

چطوری بفهمیم

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

  1. نوار نشانی رو بزنید. توی خیلی از مرورگرها وقتی روی نوار نشانی می‌زنید، نشانی کامل نشون داده می‌شه. اگه xn-- دیدید، دست نگه دارید.
  2. لینک رو کپی کنید و یه جای دیگه بچسبونید. مثلا توی یه یادداشت یا پیام به خودتون. خیلی از برنامه‌ها لینک کپی‌شده رو به شکل xn-- می‌چسبونن.
  3. انگشتتون رو روی لینک نگه دارید، یا موس رو روش ببرید. قبل از باز کردن، نشانی واقعی نشون داده می‌شه. ولی یادتون باشه که اینجا هم ممکنه شکل خوندنی رو ببینید، نه xn-- رو.
  4. به جای چشم، به عادت تکیه کنید. یعنی همون سه راه امن بخش بعد. این‌ها مطمئن‌ترین راهن، چون اصلا لازم نیست نشانی رو بخونید.

اگه یه مبدل Punycode آنلاین دیدید، بدونید کارش همین ترجمه‌ست: یه نشانی رو می‌گیره و شکل xn-- دارش رو می‌ده. اگه نتیجه با ورودی فرق داشت، یعنی نشانی حرف غیرانگلیسی داره. ولی لازم نیست سراغش برید؛ عادت‌های بخش بعد ساده‌ترن.

سه راه امن

بهترین دفاع اینه که برای سایت‌های مهم، مثل بانک، ایمیل، پیام‌رسان و فروشگاهی که کارت بانکیتون رو توش می‌زنید، اصلا از لینک وارد نشید. سه راه هست که هیچ‌کدوم به چشم شما تکیه نمی‌کنه:

  1. نشانک (Bookmark). یه بار، با دقت، سایت درست رو باز کنید و ذخیره‌ش کنید. از اون به بعد هر بار از همون نشانک برید. نشانک اسم واقعی رو نگه می‌داره، نه شکلش رو، پس همیشه درست می‌ره.
  2. تایپ دستی. اگه پیامک گفت «حسابتون مسدود شده»، روی لینک نزنید. خودتون مرورگر رو باز کنید و نشانی بانک رو تایپ کنید، یا برنامه‌ی خود بانک رو باز کنید. اگه واقعا مشکلی باشه، اونجا هم می‌بینیدش. با کیبورد معمولی نمی‌شه حرف روسی تایپ کرد، پس تایپ دستی شما رو به همون اسم درست می‌بره.
  3. مدیر رمز (Password Manager). برنامه‌ای که رمزهاتون رو نگه می‌داره و خودش پر می‌کنه، اسم سایت رو با کارت می‌شناسه، نه با شکل. روی سایت جعلی، هر چقدر هم شبیه باشه، رمز رو پیشنهاد نمی‌ده. پس اگه یه روز مدیر رمزتون روی سایتی که همیشه پر می‌کرد، ساکت موند، اول شک کنید، بعد هر کار دیگه. اون لحظه رمز رو دستی تایپ نکنید.

و یه لایه‌ی دیگه هم بذارید: ورود دومرحله‌ای (Two-Factor Authentication). اگه یه روز با همه‌ی دقتتون باز هم رمز رو توی سایت جعلی زدید، مرحله‌ی دوم جلوی خیلی از ورودها رو می‌گیره. فقط یادتون باشه کدی که برای مرحله‌ی دوم براتون پیامک می‌شه رو هم هیچ‌وقت توی سایتی که از لینک باز کردید نزنید.

تنظیم فایرفاکس

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

  1. توی نوار نشانی بنویسید about:config و برید.
  2. اگه هشداری اومد، قبولش کنید.
  3. توی جستجو بنویسید network.IDN_show_punycode.
  4. روی دکمه‌ی کنارش بزنید تا true بشه.

فقط بدونید از اون به بعد نشانی سایت‌هایی که واقعا اسم فارسی دارن هم به شکل xn-- دیده می‌شه. کروم و اج این تنظیم رو به این سادگی ندارن، ولی همون غربالی که گفتیم خودکار کار می‌کنه.

روی گوشی

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

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

برای صاحب سایت

اگه خودتون سایت دارید، مخصوصا سایتی که مردم توش رمز یا کارت می‌زنن، این حمله ممکنه با اسم شما ساخته بشه. چند کار هست که می‌تونید بکنید:

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

اگه کلیک کردیم

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

  1. صفحه رو ببندید و دیگه چیزی توش نزنید.
  2. از راه درست، یعنی نشانک یا تایپ دستی، برید توی سایت اصلی و رمز رو عوض کنید. اگه همین رمز رو جای دیگه هم استفاده کردید، اونجاها رو هم عوض کنید.
  3. اگه اطلاعات کارت بانکی زدید، همین الان به بانکتون زنگ بزنید یا از برنامه‌ی بانک کارت رو مسدود کنید.
  4. ورود دومرحله‌ای رو اگه ندارید، روشن کنید.
  5. اگه فایلی گرفتید و باز کردید، دستگاه رو با یه برنامه‌ی ضدویروس بررسی کنید.
  6. چند روز حساب‌هاتون رو زیر نظر داشته باشید: ورود تازه، پیام تازه، برداشت عجیب.

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

کمی تاریخ

  1. ۲۰۰۲ دو پژوهشگر از دانشگاه تکنیون، Gabrilovich و Gontmakher، یه مقاله به اسم «The Homograph Attack» نوشتن. برای نشون دادن مشکل، یه نسخه از microsoft.com با حروف روسی رو قانونی ثبت کرده بودن.
  2. ۲۰۰۳ استاندارد IDN منتشر شد، با اسم IDNA، کوتاه‌شده‌ی Internationalizing Domain Names in Applications، یعنی «بین‌المللی کردن نام دامنه‌ها در برنامه‌ها»، و روش ترجمه‌ی Punycode کنارش. پیشوند xn-- از همین‌جا اومد.
  3. ۲۰۰۵ ایرنیک جدول دامنه‌های فارسی رو منتشر کرد. همون سال توی یه کنفرانس امنیت، نسخه‌ی جعلی paypal.com با «a» روسی نشون داده شد، و مرورگرها مجبور شدن جدی بگیرنش.
  4. ۲۰۱۰ نسخه‌ی دوم استاندارد، که بهش می‌گن IDNA2008، قانون‌ها رو سفت‌تر کرد.
  5. ۲۰۱۳ پسوند فارسی .ایران راه افتاد.
  6. ۲۰۱۷ نمونه‌ی تمام‌روسی apple.com از Xudong Zheng. کروم توی نسخه‌ی ۵۸ درستش کرد. همون سال دامنه‌ی شبیه adobe.com با یه نقطه‌ی ریز برای پخش برنامه‌ی مخرب استفاده شد.
  7. ۲۰۱۹ یه پژوهش حدود ۴٫۴ میلیون دامنه‌ی IDN رو بررسی کرد و ۸٬۲۸۴ تا دامنه‌ی هم‌شکل پیدا کرد.
  8. ۲۰۲۰ اج هم همون غربال کروم رو گرفت.

تمرین

  1. برای بانک، ایمیل و فروشگاهی که بیشتر ازش خرید می‌کنید، همین امروز نشانک بسازید، و از این به بعد فقط از همون نشانک‌ها برید.
  2. آخرین پیامک‌های تبلیغاتی یا هشداری‌تون رو باز کنید و برای هر لینک، اسم واقعی سایت رو پیدا کنید: تیکه‌ی آخر قبل از اولین «/».
  3. اگه مدیر رمز ندارید، یه نگاه به درس مدیر رمز بندازید؛ و اگه دارید، ببینید روی سایت‌هایی که همیشه می‌رید خودش پر می‌کنه یا نه.

اشتباه‌های رایج

  • «نشانی رو حرف به حرف خوندم، درست بود.» چشم دوقلوها رو از هم جدا نمی‌کنه؛ اسم واقعی همون شکل xn-- دار‌ئه.
  • «قفل داشت، پس امن بود.» قفل فقط می‌گه راه امنه؛ سایت جعلی هم قفل داره.
  • «مرورگرم جدیده، پس خیالم راحته.» مرورگر بیشترشون رو می‌گیره، نه همه رو؛ غلط‌املایی‌ها رو هم اصلا نمی‌گیره.
  • «دامنه‌ی فارسی خطرناکه.» نه؛ IDN خودش خوبه و برای همه‌ی زبون‌ها ساخته شده. خطر از دوقلوهاست، نه از الفبا.
  • «مدیر رمز خراب شده، دستی می‌زنم.» اگه روی سایتی که همیشه پر می‌کرد پر نکرد، اول اسم سایت رو بررسی کنید.
  • «اسم سایت اول نشانی بود.» اسم واقعی تیکه‌ی آخر قبل از اولین «/»‌ئه، نه اولش.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • هر حرف یه شماره‌ی پنهان داره؛ حرف انگلیسی و حرف روسی می‌تونن یه شکل باشن و دو شماره.
  • دامنه با حروف غیرانگلیسی (IDN) پشت صحنه به شکل xn-- ترجمه می‌شه؛ این همون اسم واقعیه.
  • قفل کنار نشانی فقط می‌گه راه امنه، نمی‌گه سایت مال کیه.
  • مرورگرهای امروزی بیشتر نشانی‌های مشکوک رو به شکل xn-- نشون می‌دن، ولی همه‌ش رو نه.
  • سایت‌های مهم رو از نشانک یا با تایپ خودتون باز کنید؛ اگه مدیر رمز پر نکرد، شک کنید.

خودتون رو بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو می‌بینید: چند تا درست، چند تا نادرست.

خودتون رو بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها عوض می‌شه.
  • تا آخر نمی‌گیم کدوم جواب درست بوده؛ می‌تونید برگردید و جوابتون رو عوض کنید.
  • آخرش کارنامه می‌گیرید: چند تا درست، چند تا نادرست.
  • اگه وسطش بستید، دوباره که باز کنید از همون‌جا ادامه می‌دید.

فصل‌های این درس