اگر در حال خرید کردن از طریق وبسایتها هستید، رمزنگاری چیز خوبی است، اما وقتی می خواهید یک شبکه را اداره کنید، این یک مشکل واقعی است. در این مقاله به بررسی نحوه رمزگشایی ترافیک HTTPs با استفاده از ابزار Wireshark میپردازیم.
اگر تا به حال از Wireshark برای نظارت بر ترافیک وب استفاده کرده اید، احتمالاً با مشکل انتقال داده به صورت رمزگذاری شده روبرو شده اید. در حقیقت، بیشتر سایت ها برای ایمن نگه داشتن کاربران خود از رمزگذاری SSL یا Transport Layer Security (TLS) استفاده می کنند.
یکی از راههای که برای رمزگشایی TLS پیشنهاد میشود استفاده از pre-master secret key میباشد.
یک pre-master secret key توسط کلاینت ایجاد میگردد تا سرور از طریق آن master key را جهت رمزنگاری ترافیک نشست منتقل کند. این استاندارد فعلی در رمزنگاری است و معمولاً از طریق Diffie-Hellman اجرا میشود.
مرورگر شما می توان pre-master secret key را که Wireshark برای رمزگشایی جلسات SSL و TLS از آن استفاده می کند ،در یک فایل ذخیره کند.
در اینجا مراحل رمزگشایی SSL و TLS با یک pre-master secret key آورده شده است:
پس از اتمام کار، شما قادر خواهید بود بدون اینکه نیاز به دسترسی به سرور هدف داشته باشید نشستای SSL و TLS را در Wireshark رمزگشایی کنید.
در سیستمعاملهای ویندوز ، شما باید با استفاده از ابزار تنظیمات سیستم پیشرفته(Advanced system settings)، یک متغیر محیط را تنظیم کنید. این متغیر ، به نام SSLKEYLOGFILE ، حاوی مسیری است که pre-master secret key ذخیره می شوند.
روی My Computer راست کلیک کنید و گزینه Properties را از منو انتخاب کنید، با این کار پنجره System به نمایش در خواهد آمد.
سپس، بر روی Advanced system settings در منوی سمت چپ پنجره کلیک کنید تا پنجره System Properties باز گردد.
در زبانه Advanced بر روی دکمه Environment Variables کلیک کنید.
بر روی دکمه New در User variables کلیک کنید. در صورتی که بخواهید لاگ کلید SSL برای همه کاربران نمایش داده شود، شما میتوانید در System variables این متغییر را بسازید. البته توصیه نمیکنم.
در زمینه Variable name نام زیر بنویسید:
SSLKEYLOGFILE
در زمینه Variable value، مسیر ذخیره فایل لاگ را مشخص کنید. همچنین میتوانید با استفاده از دکمه Browse file... فایل مدنظر خود را انتخاب کنید.
نکته : در صورتی که بخواهید این متغییر را بر روی کل سیستم تعریف کنید، شما نیاز دارید که مسیر ذخیره فایل را به صورت wildcard تعیین کنید و یا در مکانی ذخیره کنید که تمامی کاربران به آن دسترسی داشته باشند. برای نمونه %USERPROFILE%\App Data\ssl-keys.log یا C:\ssl-keys.log.
پس از اتمام کار بر روی دکمه Ok کلیک کنید.
قبل از اجرای wireshark و انجام پیکربندی آن شما باید یکبار مرورگر را باز کنید.
این نکته خیلی مهم است که به منظور جمعآوری لاگ حتما یک سایتی که SSL آن فعال است را از طریق مرورر باز کنید. من اینجا از وب سرور خودم برای این کار استفاده کردهام ولی محدودیتی برای انتخاب سایت وجود ندارد و سایتی که میخواهید را میتوانید باز کنید.
یکی از بزرگترین مزایای استفاده از یک pre-master shared key این است که شما نیازی به دسترسی به سرور برای رمزگشایی SSL ندارید.
در صورتی که مرورگر به درستی در فایل ایجادی pre-master keys لاگ میکند، حال زمانی است که میتوانید wireshark را برای رمزگشایی پیکربندی کنید.
ابزار wireshark را باز کنید و از منو Edit، سپس Preferences را کلیک کنید. در پنجره Preferences در لیست سمت چپ، منوی Protocols را انتخاب کنید و به دنبال منوی TLS باشید(در نسخههای قدیمیتر SSL بوده است).
در لیست گزینههای پروتکل TLS، مسیر فایل ایجاد شده را در بخش(Pre)-Master-Secret log filename وارد کنید. سپس بر روی دکمه Ok کلیک کنید.
مرحله آخر ضبط یک نشست آزمایشی و اطمینان از رمزگشایی Wireshark TLS با موفقیت است.
در این مرحله، هر ترافیکی رمز شده(encrypted transmissions) که از pre-master secret یا private key استفاده کرده باشد، با این روش تمام دادههای perfect forward enctyption (PFE) که از طریق Diffie-Hellman و یا comparable key تبادل میشوند، رمزگشایی میشود.
پس از انتخاب یک frame داده رمزگذاری شده ، به packet byte view و به طور خاص زبانه های زیر packet byte view نگاه کنید. شما باید بتوانید Decrypted SSL را مشاهده کنید.
همانطور که متوجه شدید همچنان نشست قابل خواندن نیست و هیچ کد html وجود ندارد. دلیل این امر وجود فشرده سازی پیش فرض Gzip در وب سرورهایی مانند Apache Server است
زمانی که شما بر روی زبانه Uncompressed entity body کلیک میکنید، شما میتوانید سورس کد سایت را مشاهده کنید.