فیلترینگ پروتکل HTTP/HTTPS :
پروتکل HTTP در لایه 7 ( OSI ) قرار داره و ارتباط کلاینت با سرور یا وب سرور رو برقرار میکنه , HTTP به طور پیشفرض از پورت 80 استفاده میکنه
نکته این هستش که محتوای پکت HTTP به صورت plain text ارسال و دریافت میشه یعنی.....
1/23
#اینترنت
#فیلترنت
پکت HTTP به صورت پیشفرض رمزنگاری نمیشه و اگر مهاجم بین کلاینت و سرور قرار بگیره راحت میتونه درخواست هارو شنود کنه ( sniff ) و یا حتی تغییرش بده (MITM)
پروتکل HTTP از پروتکل TCP که در لایه پایین تر یعنی 4 (OSI) قرار داره استفاده میکنه
2/23
نحوه برقراری ارتباط HTTP :
#فیلترنت
ابتدا tcp handshake با سرور برقرار میشه و بعد درخواست http ارسال و پاسخ هم از سمت سرور یا وب سرور دریافت میشه و در آخر هم connection بسته میشه
3/23
#فیلترنت
از ابزار curl برای تست ارتباط و ابزار wireshark برای آنالیز پکت ها استفاده میکنیم
قصد برقراری ارتباط با سایت فیلترشده داریم و میبینیم که ip فیلترچی به ما برگردونده شده و کلاینت چندبار SYN برای مقصد ارسال کرده تا tcp handshake رو انجام بده اما فیلترچی پاسخ نمیده
4/23
#فیلترنت
به دلیل دستکاری dns query اگر قصد برقراری ارتباط از طریق دامنه رو داشته باشیم ابتدا dns query انجام میشه و به دلیل دخالت های فیلترچی ip خودش به ما برگردونده میشه
پس ابتدا ip دامنه فیلترشده رو بدست میاریم
( توییت های قبلی فیلترینگ پروتکل DNS رو بررسی کردیم )
5/23
#فیلترنت
سوال اینه پکت های HTTP چطوری دستکاری و سانسور میشن ؟!
همونطور که خدمتتون گفتم پکت های HTTP رمزنگاری نمیشن و plain text ارسال و دریافت میشن و سانسور چی راحت میتونه محتوای پکت http که شامل Header ها میشه رو بررسی کنه و دستکاری رو انجام بده
6/23
#فیلترنت
اینجا به ip اصلی سایت فیلترشده درخواست ارسال میکنیم v- برای دریافت اطلاعات بیشتر و resolve-- برای قراردادن ip و دامنه در dns خود curl
اینبار بازهم connection توسط سرور ریست شده !
7/23
#فیلترنت
تست میکنیم تا ببینیم که خود سرور connection رو ریست میکنه یا نه ! البته جواب مشخصه و معلومه کار کیه اما برای اینکه به عرزشی ها اثبات کنیم فیتلرچی و جمهوری اسلامی چقدر پلیدن قرار میدیم
حالا نگاه کنیم که فیلترچی کدوم قسمت Header پکت http رو بررسی و فیلتر میکنه :
8/23
#فیلترنت
محتوای پکت http رو مشاهده میکنیم
فیلترچی بخش Host که عضو Header http هستش رو بررسی میکنه
اگر دامنه جز لیست فیلتر باشه ارتباط برقرار نمیشه
اگر دامنه جز لیست فیلتر نیست و خطری برای جمهوری اسلامی نداره فیلترچی اجازه میده! درخواست به سرور هدایت بشه
9/23
#فیلترنت
از دامنه فیلترشده با ip سرور شخصی استفاده میکنیم
ابزار wireshark نشون میده که tcp handshake برقرار شده و درخواست ارسال شده اما سرور connection رو ریست کرده
سمت سرور میبینیم که tcp handshake برقرار شده اما درخواست http از کلاینت دریافت نشده !
10/23
#فیلترنت
این نشون میده فیلترچی زمانی که header host رو بررسی میکنه و متوجه دامنه فیلترشده میشه response رو خودش دراپ میکنه !!
تست بعدی از ip سرور شخصی و دامنه عادی استفاده میکنیم تا ماجرا روشن تر بشه و مطمعن تر بشیم
11/23
#فیلترنت
با ip سرور شخصی و دامنه عادی امتحان میکنیم
میبینیم ارتباط برقرار شده و پاسخ هم دریافت شده
چون دامنه یا Host مورد نظر وجود نداره محتوای خاصی رو نشون نمیده اما ارتباط برقرار شده
طبق همین میتونیم اطمینان حاصل کنیم که connection قبلی توسط فیلترچی ریست شده !
12/23
#فیلترنت
البته گاهی رفتار ها متفاوته
مثلا اینجا ip توییتر و دامنه تلگرام رو استفاده میکنیم
گاهی connection ریست میشه و گاهی هم صفحه فیلترچی برگردونده میشه البته این مورد فقط برای دامنه تلگرام مشاهده شده
تلگرام علاوه بر دامنه ip سرورهاش هم بلاک شدن
13/23
#فیلترنت
فیلترینگ HTTPS
دیدیم که پروتکل HTTP امن نیست و قابل دستکاریه اما پروتکل HTTPS که رمزنگاری میشه چطور ؟
اول بهتره نگاهی به HTTPS بندازیم :
پروتکل HTTPS همون پروتکل HTTP هستش اما محتوای پکت یعنی header و... توسط SSL/TLS رمزنگاری میشه و بعد ارسال و دریافت میشه
14/23
#فیلترنت
پروتکل SSL/TLS برای امن کردن ارتباط بین کلاینت و سرور استفاده میشن و محتوای پکت HTTPS توسط SSL/TLS به صورت متقارن یا نامتقارن ( Asymmetric Symmetric) میتونن رمزنگاری بشن
15/23
#فیلترنت
پروتکل SSL/TLS علاوه بر رمزنگاری پکت ها
یه گواهی نامه یا Certificate رو از سرور مورد نظر درخواست میکنه و بعد بررسی و احرازهویت میکنه تا مطمعن بشه مقصد همون سایت مورد نظر هست یا خیر
16/23
#فیلترنت
پروتکل HTTPS مثل HTTP ابتدا tcp handshake رو انجام میده و بعد یه TLS/SSL handshake رو هم برقرار میکنه که بعد از tls handshake دیتا با رمزنگاری و امنیت ارسال و دریافت میشه
17/23
#فیلترنت
درسته پکت HTTPS توسط ssl/tls رمزنگاری میشن و قابل مشاهده نیست اما بازهم مواردی وجود داره که فیلترچی بر اساس اون ها تصمیم به سانسور میکنه:
گاهی تمام ارتباطات TLS رو مسدود میکنه ( موردی که همچنان هم وجود داره )
مسدود سازی به صورت random
بررسی SNI و سانسور ارتباط
18/23
#فیلترنت
بررسی server name indication (SNI)
مشخص میکنه که کلاینت قصد داره به کدوم Host متصل بشه
بخش sni تو ClientHello یعنی tls hanshake قرار داره , بعد از tcp handshake فیلترچی SNI رو بررسی میکنه اگر جز لیست فیلترشده ها باشه ارتباط مسدود میشه
19/23
#فیلترنت
اینجادرخواست HTTPS ارسال میکنیم و از ip گوگل و دامنه توییتر استفاده میکنیم
بعد از Client Hello میبینیم که connection ریست یا دراپ شده که از سمت خود فیلترچی انجام شده
درواقع SNI بررسی و بعد درخواست سانسور و مسدود شده
20/23
#فیلترنت
اینجادرخواست HTTPS ارسال میکنیم و اینبار از ip گوگل و دامنه عادی استفاده میکنیم
میبینیم ارتباط کاملا برقرار میشه
یه سری خطا به دلیل اینکه certificate با ip و دامنه همخونی نداره رخ داده اما در آخر ارتباط برقرار شده
21/23
#فیلترنت
قطع ارتباط TLS به طور کامل :
این اتفاق این چند ماه شدیدا در جریان بود و انجام میشد
نحوه سانسور به این شکل بود که فیلترچی TLS Handshake رو دستکاری میکرد و نکته اینجا بود که حتی برای سایت های داخلی هم ارتباط TLS handshake دستکاری میشد دلیلش رو هم....
22/23
#فیلترنت
توییت قبل بررسی و مشاهده کردیم که اینترنت ملی ( میلی ) هم حتی زیر نظر فیلترچیه و سانسور هم به صورت داخلی هم بین المللی انجام میشه
این موضوع رو بعدا به طور دقیق بررسی میکنیم
23/23
#فیلترنت
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.