فیلترینگ پروتکل 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 رو ریست میکنه یا نه ! البته جواب مشخصه و معلومه کار کیه اما برای اینکه به عرزشی ها اثبات کنیم فیتلرچی و جمهوری اسلامی چقدر پلیدن قرار میدیم
حالا نگاه کنیم که فیلترچی کدوم قسمت Header پکت http رو بررسی و فیلتر میکنه :
محتوای پکت http رو مشاهده میکنیم
فیلترچی بخش Host که عضو Header http هستش رو بررسی میکنه
اگر دامنه جز لیست فیلتر باشه ارتباط برقرار نمیشه
اگر دامنه جز لیست فیلتر نیست و خطری برای جمهوری اسلامی نداره فیلترچی اجازه میده! درخواست به سرور هدایت بشه
9/23 #فیلترنت
از دامنه فیلترشده با ip سرور شخصی استفاده میکنیم
ابزار wireshark نشون میده که tcp handshake برقرار شده و درخواست ارسال شده اما سرور connection رو ریست کرده
سمت سرور میبینیم که tcp handshake برقرار شده اما درخواست http از کلاینت دریافت نشده !
البته گاهی رفتار ها متفاوته
مثلا اینجا ip توییتر و دامنه تلگرام رو استفاده میکنیم
گاهی connection ریست میشه و گاهی هم صفحه فیلترچی برگردونده میشه البته این مورد فقط برای دامنه تلگرام مشاهده شده
فیلترینگ HTTPS
دیدیم که پروتکل HTTP امن نیست و قابل دستکاریه اما پروتکل HTTPS که رمزنگاری میشه چطور ؟
اول بهتره نگاهی به HTTPS بندازیم :
پروتکل HTTPS همون پروتکل HTTP هستش اما محتوای پکت یعنی header و... توسط SSL/TLS رمزنگاری میشه و بعد ارسال و دریافت میشه
14/23 #فیلترنت
پروتکل SSL/TLS برای امن کردن ارتباط بین کلاینت و سرور استفاده میشن و محتوای پکت HTTPS توسط SSL/TLS به صورت متقارن یا نامتقارن ( Asymmetric Symmetric) میتونن رمزنگاری بشن
پروتکل SSL/TLS علاوه بر رمزنگاری پکت ها
یه گواهی نامه یا Certificate رو از سرور مورد نظر درخواست میکنه و بعد بررسی و احرازهویت میکنه تا مطمعن بشه مقصد همون سایت مورد نظر هست یا خیر
پروتکل HTTPS مثل HTTP ابتدا tcp handshake رو انجام میده و بعد یه TLS/SSL handshake رو هم برقرار میکنه که بعد از tls handshake دیتا با رمزنگاری و امنیت ارسال و دریافت میشه
اینجادرخواست HTTPS ارسال میکنیم و از ip گوگل و دامنه توییتر استفاده میکنیم
بعد از Client Hello میبینیم که connection ریست یا دراپ شده که از سمت خود فیلترچی انجام شده
درواقع SNI بررسی و بعد درخواست سانسور و مسدود شده
20/23 #فیلترنت
اینجادرخواست HTTPS ارسال میکنیم و اینبار از ip گوگل و دامنه عادی استفاده میکنیم
میبینیم ارتباط کاملا برقرار میشه
یه سری خطا به دلیل اینکه certificate با ip و دامنه همخونی نداره رخ داده اما در آخر ارتباط برقرار شده
21/23 #فیلترنت
قطع ارتباط TLS به طور کامل :
این اتفاق این چند ماه شدیدا در جریان بود و انجام میشد
نحوه سانسور به این شکل بود که فیلترچی TLS Handshake رو دستکاری میکرد و نکته اینجا بود که حتی برای سایت های داخلی هم ارتباط TLS handshake دستکاری میشد دلیلش رو هم....
22/23 #فیلترنت
توییت قبل بررسی و مشاهده کردیم که اینترنت ملی ( میلی ) هم حتی زیر نظر فیلترچیه و سانسور هم به صورت داخلی هم بین المللی انجام میشه
از ابزار ping برای بررسی وضعیت دسترسی به سرور استفاده میکنیم این ابزار به طور پیشفرض از پروتکل ICMP برای برقراری و بررسی ارتباط استفاده میکنه , همچنین با پروتکل دیگه ای مثل tcp هم میشه درخواست ارسال کرد که جلوتر علت استفاده از tcp رو بیشتر متوجه میشیم
2/19 #اينترنت #فیلترنت
قبلش نکته ای که باید یادمون بمونه اینه که بیشتر دامنه ها توسط فیلترچی خبیث جمهوری اسلامی فیلتر شدن
موقع تست از دامنه فیلترشده استفاده نکنیم که ip فیلترچی برگردونده و درخواست ها براش ارسال میشه که بی جوابم هست
3/19 #اينترنت #فیلترنت
رادار گیم شروع اینترنت طبقاتی هستش که به تازگی توسط وزیر ارتباطات جمهوری اسلامی هم معرفی شده سورس کد برنامه که تقریبا دزدیه ,, توی تست های اولیه هم به عنوان بد افزار شناسایی شده
به بقیه هم اطلاع رسانی کنید و جلوی استفاده از این برنامه رو بگیرید
اینجا میخوایم نگاهی به سیستم فیلترینگ روی پروتکل DNS بندازیم
آدرس 3 تااز dns server های معروف که جلوتر قراره از این dns server ها برای تست استفاده کنیم رو قرار میدم :
1.1.1.1 cloudflare
8.8.8.8 google
9.9.9.9 quad9
نکته اینجاست که فیلترچی کاری نداره که آیپی مورد نظرdns server هسا یا نه اگر query name شما جز لیست باشه آیپی فیلترچی برگردونده میشه یعنی همون 35-34-10-10
آیپی مورد نظر هم که به عنوان dns server تعریف شده اصلا dns server نیست و صرفا یک سرور خارج کشوره