امنیت و نحوه کار در شبکه TOR و مسیریابی پیازی [بخش دوم]

درمقاله قبلی به عنوان امنیت و نحوه کار در شبکه TOR و مسیریابی پیازی [بخش اول]  با مفاهیم کلی و نحوه کار شبکه های Tor و دلیل نامگذاری مسیریابی پیازی را فهمیدید.

این شبکه TCP-level است و درواقع UDP کارنخواهد کرد و traceroute و … بی فایده خواهند بود. حال سوال پیش می آید اگر UDP کار نمی کند پس DNS چطور عمل می کند؟ بطور کل Exit Node عمل DNS lookup را انجام می دهد. این شبکه را می توان بصورت Mesh از Onion Router ها دانست و هر روتر با استفاده از SSL/TLS با دیگر روترها در ارتباط است. هر OR دو کلید عمومی دارد : identity key   و onion key.

indexدر لیست دایرکتوری ثبت می شود و Onion key برای اتصال end-user به OR ها مورد استفاده قرار می گیرد. دلیل ایجاد دو کلید عمومی محافظت نمودن Identity key در ارتباط های بلند مدت است .

Entry guard چیست؟ بدین معنی که هر کلاینت TOR بصورت تصادفی چند نود را برای نقاط ورودی ارتباط خود انتخاب می کنند و تنها از این نود ها برای Hop اول استفاده می کنند. اگر C تعدا رله باشد که نفوذگر بر آن کنترل دارد و بطور کل فرض می کنیم که N رله داریم، بنابراین احتمال رخ دادن اینکه رله نقاط ورودی یک از رله های نفوذگر باشد  (N-C)/N خواهد بود.

هر نود از TOR چه اطلاعاتی را در اختیار دارد؟

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

tbl1

روند ایجاد جریان ارتباطی Tor را در تصویر زیر می توانید مشاهده کنید که Alice با استفاده از جریان دوگام می خواهد به محتوای یک سایت دسترسی پیدا کند:

image15

 

بعد از اینکه  جریان ارتباطی Tor برقرار شد می توان Cell ها را ارسال کرد. Cell پکت هایی با سایز ثابت 512 بایت (جهت سخت تر نمودن تحلیل ترافیک) و فرمت خاصی است. Cell می تواند Control Cell و یا Relay Cell باشد که ساختار آنها را در تصویر زیر می توانید مشاهده کنید.

image16

Relay Cell در واقع پکت های end-to-end است، برای مثال هنگامی که کاربر نیاز دارد تا داده خود را از طریق Tor ارسال کند Relay Cell ایجاد خواهد شد. Onion proxy پکت را ایجاد می کند و Digest را محاسبه می کند که این فیلد نقش Checksum را خواهد داشت و بعد با AES(k_n) و سپس AES(k_{n-1}), .., AES(k_1)  انکریپت می شود  و ارسال می کند.

حملات Tor و ازبین رفتن گمنامی کاربران

در کنفرانس بین المللی ACSAC  سال 2011 حمله ای بصورت brute-force  برروی TOR ارائه شد که در این حمله بخشی از Node ها بلوکه می شوند که این حمله نیز در واقعیت صورت گرفت، کشور چین در سال 2009  تقریبا 80 درصد از relay ها را بلاک کرد. این حمله براساس super-node انجام می شود. اصطلاح Super-node در شبکه های TOR را به نودهایی می گوییم که دارای چرخه زندگی طولانی تر و مشارکت پهنای باند بیشتر و پایداری بالاتری نسبت به بقیه نودها باشد. هنگامی که برروی super-node ها بجای هر relay متمرکز می شویم می توانیم نتیجه های بهتری و حملات موثرتر داشته باشیم که حمله برروی یک super-node درای تاثیر برابر با حمله بر 4 نود عادی می باشد. همانطور که در قبل هم به بعضی حملات پرداختیم حملات مختلفی برروی این شبکه معرفی شده اند مانند : Cell Flood ، Selective Attack ، loop Attack ، Collusion Attack ، Sybil Attack و  …

یکی از حملات پیشنهادی ایجاد حلقه در جریان ارتباطی و داشتن یک OR(Onion Router) تحت کنترل در شبکه است [2] . هدف اصلی از ایجاد Loop مشغول نمودن دیگر OR ها تا در جریان های ارتباطی انتخاب نشوند  یعنی می توان گفت DOS برروی دیگر OR ها انجام می دهد و هنگامی که آنها Busy باشند OR های تحت کنترل در هنگام ایجاد جریان ارتباطی انتخاب می شود.

image17

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

حمله ای دیگر [3] معرفی گردید که بر دروغ گفتن منابع خود به DB تکیه دارد و احتمال اینکه بعنوان روتر Entry یا Exit انتخاب شود زیاد خواهد بود. این حمله نیز مشکلاتی را گاها خواهد داشت مثلا اگر پهنای باند غیرواقعی باشد جوابگو ترافیک های دریافتی نخواهد بود. حمله دیگری در سطح AS معرفی گردید که اگر Entry و Exit در یک AS باشند بتوان حمله ای باتوجه به این خاصیت انجام داد[4]. البته با بهبود در روند انتخاب مسیر TOR دیگر آنالیز ترافیک در سطح AS بی فایده است زیرا محدودیت هایی در Entry Guard و همچنین انتخاب OR در ساب نت متفاوت بایستی باشد. شاید در آینده جهت بهبود بهتر انتخاب ها براساس کشورها باشد. افرادی از دانشگاهMIT حمله ای را بصورت Browser-Based ارائه کردند [5] . در واقع این حمله Time-Based می باشد و  با توجه به رفتاری که مرورگر در برابر دستکاری نمودن  ترافیک HTTP از خود نشان می دهد حمله صورت می گیرد. در این حمله دو OR نیاز است : Exit و Entry می بایست تحت کنترل نفوذگر باشد. در این حمله وجود هر دو OR در یک جریان ارتباطی نیاز نخواهد بود. روتر Entry برای تجزیه و تحلیل ترافیک و روتر Exit برای تغییر ترافیک HTTP که می تواند بصورت افزودن ویا تغییر کدهای جاوا اسکریپت و HTML جهت برقراری ارتباط با سرور تحت کنترل، باشد. جهت جلوگیری از این حمله در مرورگر خود می بایست اجرای کدهای فعال مانند Flash, Java, ActiveX و جاوا اسکریپت غیرفعال نمود.

Exit node در واقع حمله MITM را برروی ترافیک HTTP کاربر انجام می دهد بنابراین تانلینگ HTTP برروی SSL از این حمله جلوگیری خواهد نمود. هرچند در دنیای واقعی این کار بی فایده است زیرا اغلب کاربرها سرتیفیکیت های self-signed را با وجود اخطارهایی که مرورگر می دهد بعنوان یک سرتیفیکیت معتبر تایید می کنند. یکی از مشکلاتی که در این حمله مطرح خواهد می شود بحث Entry Guard است که برای توضیحات بیشتر به منابع مراجعه نمایید.

در این مقاله قصد آنالیز بدافزار را نداریم ولی جهت آشنایی و ذکر مثال می توان کیلاگر ChewBacca را نام برد که برنامه TOR را بصورت Drop همراه خود داشته است و توسط آن با C&C server خود ارتباط برقرار می کند. حال این گونه عمل نمودن حجم فایل بدافزار را افزایش می دهد که گاها نامعقول خواهد بود. تکنیک دیگری که توسط بدافزارها جهت ارتباط با C&C server مورد استفاده قرار می گیرد استفاده از سایت tor2web است که نحوه استفاده آن خیلی راحت تر نسبت به قبل خواهد بود. هنگامی که می خواهیم توسط خود برنامه TOR به یک سرویس پنهان ارتباط برقرار نماییم از آدرس آن با .onion استفاده می نماییم ولی tor2web امکانی را می دهد که بتوانیم بدون دانلود TOR بتوانیم به سرویس های پنهان نیز دسترسی داشته باشیم بدین صورت که در آدرس بجای.onion می بایست .tor2web.org استفاده نماییم و این سایت را بعنوان یک پروکسی بین خود و سرویس پنهان قرار دهیم. ولی این روش نیز بدی های خود را دارد که براحتی می توان ترافیک آن را فیلتر کرد و یا راه حل دیگر ایجاد نمودن tor2web بصورت اختصاصی است.

مدیریت و کنترل TOR با پایتون

Stem یک کتابخانه پایتون برای کنترل TOR می باشد مانند TorCtl که با استفاده از آن می توان بر فرآیند کار Tor نظارت داشته و ابزارهایی مانند Vidalia را ایجاد نمود. جهت استفاده بهتر از امکانات آن می بایست pycrypto را نصب نماییم با پایتون نسخه 2.6 سازگاری دارد. کتابخانه برای زبان های مختلفی هم وجود دارد بعنوان مثل برای جاوا JtorCtl ، برای زبان PHP نیز PHP TorCtl

image18

TOR توسط فایل torrc کانفیگ می شود هنگامی که این فایل مورد ویرایش قرار گیرد بایستی TOR راه اندازی مجدد شود که می توانیم براحتی با ارسال سیگنال HUP این کار را انجام بدهیم بصورت کد نویسی مانند زیر خواهد شد:

موفق و موید باشید.

——————————————————-

[2] V. Pappas, E. Athanasopoulos, S. Ioannidis, and E. P. Markatos. Compromising anonymity using packet spinning. In Proceedings of the 11th Information Se-curity Conference (ISC 2008), September 2008.

[3] K. Bauer, D. McCoy, D. Grunwald, T. Kohno, and D. Sicker. Low-resource routing attacks against tor. In WPES ’07: Proceedings of the 2007 ACM workshop on Privacy in electronic society, pages 11–20, New York,NY, USA, 2007. ACM.

[4] M. Edman and P. Syverson. As-awareness in tor path selection. In CCS ’09: Proceedings of the 16th ACM conference on Computer and communications security,pages 380–389, New York, NY, USA, 2009. ACM.

[5] T. G. Abbott, K. J. Lai, M. R. Lieberman, and E. C. Price. Browser-based attacks on tor. In PET’07: Pro-ceedings of the 7th international conference on Privacy enhancing technologies, pages 184–199, Berlin, Hei-delberg, 2007. Springer-Verlag.

AHA

قطره ای از دریای بیکران IT

More Posts

One thought on “امنیت و نحوه کار در شبکه TOR و مسیریابی پیازی [بخش دوم]”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *