محققای دانشگاه نیویورک و KU Leuven ، دو تا حمله جدید با عنوان TunnelCrack رو توسعه دادن که امکان نشت ترافیک رمزنگاری شده روی اغلب کلاینت های VPN رو فراهم میکنه.
هدف اصلی VPNها، رمزنگاری اتصالات اینترنتی و محافظت از داده ها در برابر رهگیری ، تغییر و مشاهده هستش. شرکتها از این فناوری برای ایمن کردن کار ریموت و ارتباط شعبشون استفاده میکنن و کاربرای معمولی هم ، این فناوری رو برای حفظ حریم خصوصی یا دسترسی به داده ها از یه منطقه خاص جغرافیایی، استفاده میکنن.
تکنیک جدیدی که کشف شده منجر به اختلال در عملکرد عادی VPNها و محافظت از کاربران میشه. این تکنیک رو روی چندین کلاینت VPN و 5 سیستم عامل [ویندوز – لینوکس – اندروید – IOS – macOS ] تست کردن و متوجه شدن که همه اونا حداقل در یه مورد آسیب پذیر هستن.
کل این آسیب پذیری اینجوریه که اگه به یه Wi-Fi hotspot یا ISP مخرب وصل بشید، اونا میتونن دستورالعملهایی رو به رایانه یا موبایل شما ارسال کنن که به برخی ترافیک ،امکان دور زدن VPN tunnel رو بده که منجر به دستکاری یا امکان تجزیه و تحلیل ترافیک میشه. حمله یجوری هم هستش که پروتکل استفاده شده مهم نیست . نکته ی دیگه اینکه هدایت همه ترافیک هم عملی نیستش و مهاجم محدود به لیستی از سایتها و سرورهایی هستش که میخواد از اونا جاسوسی کنه.
حمله از لیست استثناها (exclusions list) که تقریبا در همه کلاینتهای VPN وجود داره، سوء استفاده میکنه. هر استثناء ، بخشی از ترافیک رو، به تونل VPN رمزشده هدایت میکنه. این که چرا بخشی رو از تونل رمزشده ارسال میکنه به دو دلیل هستش :
- یکی اینکه ترافیک بین دستگاههای محلی رو خارج از VPN tunnel نگهداری کنه. مثلا اگه شما از طریق یه شبکه محلی، با رایانه دارید یه تصویری رو روی تلوزیون نمایش میدید، این ارتباط نیازی به رمزنگاری نداره.
- دوم اینکه ترافیکی که قراره بصورت مستقیم به سرور VPN ارسال بشه، برای سرعت و کارایی استفاده از منابع محاسباتی ، رمز نمیشه.
حمله TunnelCrack از دو حمله LocalNet و ServerIP تشکیل شده که از این ویژگی ها سوء استفاده میکنن. این دو تا حمله رو روی چندین کلاینت انجام دادن که محصولات زیر آسیب پذیر بودن.
حمله LocalNet :
این حمله شامل دو آسیب پذیری CVE-2023-36672 و CVE-2023-35838 هستش و از ویژگی اول یعنی محدود کردن ترافیک دستگاههای محلی استفاده میکنه. در این حمله یه روتر مخرب مانند یه Wi-Fi hotspot ،توسط مهاجم ایجاد میشه و قربانی ها ترغیب میشن که به اون وصل بشن. بعد از اینکه قربانی وصل شد، مهاجم یه آدرس public IP و subnet در سیستم قربانی (routing tables) ایجاد میکنه،که همه سایتهای مورد علاقه مهاجم از طریق شبکه محلی برای قربانی قابل دسترس باشه.
از طرفی با توجه به ویژگی شماره یک که در بالا اشاره شد، اغلب VPNها امکان دسترسی مستقیم ،به شبکه محلی رو میدن، در نتیجه مهاجم با قرار دادن اونا در لیست استثنائات، میتونه از این حمله استفاده و ترافیک بدون رمزنگاری رو دستکاری یا آنالیز کنه.
فرض کنید میخواییم ترافیک بین یه قربانی با target.com رو با استفاده از این حمله به خارج از تانل VPN انتقال بدیم و اونو لیک کنیم. مراحل پیاده سازی مطابق شکل زیر هستش.
هنگام تست این سایت از https استفاده نشده و بنابراین اگه خارج از VPN tunnel بهش دسترسی داشته باشیم، میتونیم فیشینگ (کلون سایت) هم انجام بدیم. حمله فیشینگ هم اینجوریه از سایت target.com یه کپی مخرب زدن و در شبکه محلی قرار دادن. قربانی زمانی این صفحه فیشینگ میبینه که ، خارج از VPN tunnel باشه و بنابراین مشخص میکنه که آسیب پذیر هستش.
- مرحله 0 : قربانی فریب داده میشه تا به یه WiFi hotspot مخرب وصل بشه.
- مرحله 1: فرض میکنیم که قربانی به WiFi hotspot وصل شده و از DHCP برای درخواست IP استفاده میکنه.
- مرحله 2: IP که داده میشه، بجای اینکه یه IP خصوصی باشه، یه IP در همون subnet ای هستش که target.com روش هست. اینجا تو شکل مشخصه که IP برای target.com برابر 1.2.3.20 هستش و AP ، آدرس 1.2.3.12 رو میده.
- مرحله 3: کلاینت میاد و یه تانل ایجاد میکنه و جدول مسیریابی کلاینت بروز میشه ،تا همه ترافیک از این تانل عبور داده بشه، غیر از ترافیکی که در یه شبکه هستن.
- مرحله 4: با توجه به اینکه بیشتر ترافیک از این تانل ارسال میشه، قربانی متوجه حمله نمیشه.
- مرحله 5: قربانی میاد و از target.com بازدید میکنه، با توجه به اینکه IP این سایت در شبکه محلی هستش، قربانی بطور مستقیم و بدون تانل بهش وصل میشه. یعنی کلاینت از ARP برای تعیین MAC دستگاه محلی استفاده میکنه که دارای آدرس 1.2.3.20 هستش و ترافیک رو مستقیما به کلون مخرب که در همون شبکه محلی هستش ارسال میکنه.
نتیجه این تست رو در شکل زیر مشاهده میکنید :
حمله ServerIP:
این حمله شامل دو آسیب پذیری CVE-2023-36673 و CVE-2023-36671 هستش و از ویژگی دوم سوء استفاده میکنه. در این حمله هم مهاجم نیاز به راه اندازی WiFi hotspot مخرب یا دسترسی به local area network قربانی داره.
کلاینت های VPN معمولا از طریق یه دامنه مستقیما با سرور VPN قانونی در ارتباط هستن. با دستکاری سرور DNS ای که قربانی به اون متصل میشه، مهاجم یه IP نادرست که تحت کنترلش هست از سرور برمیگردونه. در ادامه مهاجم ترافیک VPN رو به یه سرور VPN واقعی ارسال میکنه و میتونه ترافیک ورودی رمزنشده رو که به IPهای اونا ارسال میشه رو، دستکاری یا تجزیه و تحلیل کنه.
فرض کنید میخواییم ترافیک بین یه قربانی با target.com رو با استفاده از این حمله به خارج از تانل VPN انتقال بدیم و اونو لیک کنیم. مراحل پیاده سازی مطابق شکل زیر هستش.
محققا اومدن این سایت روی سرور DigitalOcean بالا آوردن و تست انجام دادن. سایت در کل کاری که میکرده IP و پورت کلاینت رو نشون میده. اگه این آدرس ماله VPN باشه که حمله موفقیت آمیز نبوده ، در غیر این صورت، حمله موفق بوده. چرا؟ چون IP قربانی رو نشون میده.
- مرحله 0 : قربانی فریب داده میشه تا به یه WiFi hotspot مخرب وصل بشه.
- مرحله 1: در این مرحله قربانی وصل شده و از DNS سرورهایی که توسط DHCP از WiFi hotspot بهش ارائه شده، استفاده میکنه. فرض میکنیم که قربانی از این DNS سرور برای جستجوی IP ، دامنه vpn دات کام ،استفاده میکنه.
- مرحله 2و 3: با توجه به اینکه WiFi hotspot میتونه سرور DNS تحت کنترل مهاجم رو ارائه بده، بنابراین میشه IP اشتباهی رو ارائه داد. در این مرحله مهاجم میتونه بجای آدرس IP سایت دامنه vpn دات کام، آدرس سایت target.com رو برگردونه.
- مرحله 4 و 5: الان قربانی یه آدرس جعلی از سایت vpn داره که اینجا 1.2.3.4 هستش و شروع به اتصال به اون میکنه. برای اینکه قربانی متوجه حمله نشه، مهاجم همه ترافیک VPN دریافتی رو میگیره و به سرور قانونی که اینجا 2.2.2.2 هستش، ارسال میکنه. این کارم میشه با رولهای iptable انجام داد.
- مرحله 6 : بعد از اینکه VPN tunnel در مرحله قبلی ایجاد شد، کلاینت جدول مسریابی خودش رو بروز میکنه و تا همه ترافیک رو از VPN tunnel عبور بده به غیر از ترافیک به سرور VPN خودش رو. به عبارت دیگه همه ترافیک ارسالی به 1.2.3.4 خارج از tunnel ارسال میشه.
- مرحله 7: تمام ترافیک ارسالی به target.com بصورت مستقیم به 2.2.2.2 و خارج از VPN tunnel ارسال میشه.
یه خلاصه بخواییم کنیم، مهاجم میاد DNS رو جعل میکنه و بجای سرور VPN یه آدرس جعلی که تحت کنترلش هستش رو میده که در شکل بالا 1.2.3.4 هست. کلاینت این آدرس جعلی رو تو بخش استثنائات ثبت میکنه که برای ارتباط با اون دیگه رمز اینا نکنه و مستقیم وصل بشه. در نتیجه چون رمز نمیکنه، IP قربانی بصورت واضح در target.com میافته و لیک میشه.
یه نکته اینکه ، اون ترافیک رمز شده VPN رو که در مرحله 5 میگیرن، نمیتونن بخونن و فقط رد و بدل میکنن. البته خوندن محتوای رمز شده ترافیک بستگی به قوی بودن رمزنگاری VPN داره. اما با این حالم باز میشه تبادل داده رو دستکاری کرد و مثلا بدافزار اجرا کرد.
نتیجه این حمله رو در شکل زیر میتونید مشاهده کنید:
دموی حمله:
در زیر یه ویدیو از نحوه عملکرد این حمله رو مشاهده میکنید. (مشاهده در یوتیوب)
اقدامات کاهشی :
اما برای اینکه بتونیم در برابر این حمله ایمن باشیم باید چیکار کنیم.
- راهکارهایی که بعنوان یه کاربر VPN میشه انجام داد:
- سرویس های VPN خودتون رو بروز نگه دارید.
- در کلاینت VPN، استثنائات رو بررسی کنید و اگه مواردی با عنوان route local traffic without VPN یا allow access to local network بود، اونارو غیر فعال کنید تا همه ترافیک از VPN ارسال بشه.
- از یه DNS امن استفاده کنید.
- راهکارهایی که بعنوان ادمین یه شرکت میشه انجام داد:
- همه نسخه های کلاینت هاتون رو بررسی کنید تا ببینید آسیب پذیر هستن یا نه. برای اینکار میتونید از روشی که محققا اینجا معرفی کردن استفاده کنید.
- بروزرسانی کلاینت مورد استفاده. سیسکو بروزرسانی داده اما IOS هنوز نه.
- بررسی پیکربندی استاندارد کلاینت در همه رایانه ها. یکی از موارد مهم در این زمینه، مسدود کردن پیش فرض دسترسی به local network هستش که امکان حملات TunnelCrack رو مسدود میکنه.
- اگه نیاز دارید بخشی از ترافیکتون رو بدون VPN انتقال بدید، مثلا دسترسی به چاپگر، رولهایی رو فایروال محلی تنظیم کنید تا به غیر از لیست مجاز کار دیگه ای انجام نشه.
- از ابزارهای امنیتی DNS استفاده کنید.
منابع: